aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2017-01-24 12:57:18 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-01-24 12:57:18 -0500
commit62ed8ceda1699acae01b666497f004bfd3d67a6f (patch)
treefe38c83c49dfd568b540666948ef78cb9d082c38 /tools/perf
parent1c3415a06b1016a596bfe59e0cfee56c773aa958 (diff)
parent7a308bb3016f57e5be11a677d15b821536419d36 (diff)
Merge tag 'v4.10-rc5' into for-linus
Sync up with mainline to apply fixup to a commit that came through power supply tree.
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/Build1
-rw-r--r--tools/perf/Documentation/intel-pt.txt19
-rw-r--r--tools/perf/Documentation/jitdump-specification.txt170
-rw-r--r--tools/perf/Documentation/perf-c2c.txt290
-rw-r--r--tools/perf/Documentation/perf-config.txt47
-rw-r--r--tools/perf/Documentation/perf-kmem.txt7
-rw-r--r--tools/perf/Documentation/perf-list.txt12
-rw-r--r--tools/perf/Documentation/perf-probe.txt14
-rw-r--r--tools/perf/Documentation/perf-record.txt86
-rw-r--r--tools/perf/Documentation/perf-report.txt10
-rw-r--r--tools/perf/Documentation/perf-sched.txt82
-rw-r--r--tools/perf/Documentation/perf-script.txt16
-rw-r--r--tools/perf/Documentation/perf-top.txt1
-rw-r--r--tools/perf/Documentation/perf-trace.txt5
-rw-r--r--tools/perf/Documentation/perf.data-file-format.txt6
-rw-r--r--tools/perf/Documentation/perfconfig.example9
-rw-r--r--tools/perf/Documentation/tips.txt4
-rw-r--r--tools/perf/MANIFEST7
-rw-r--r--tools/perf/Makefile.config105
-rw-r--r--tools/perf/Makefile.perf262
-rw-r--r--tools/perf/arch/arm/annotate/instructions.c59
-rw-r--r--tools/perf/arch/arm/include/dwarf-regs-table.h9
-rw-r--r--tools/perf/arch/arm/util/Build2
-rw-r--r--tools/perf/arch/arm/util/auxtrace.c54
-rw-r--r--tools/perf/arch/arm/util/cs-etm.c615
-rw-r--r--tools/perf/arch/arm/util/cs-etm.h26
-rw-r--r--tools/perf/arch/arm/util/pmu.c36
-rw-r--r--tools/perf/arch/arm64/annotate/instructions.c62
-rw-r--r--tools/perf/arch/arm64/include/dwarf-regs-table.h13
-rw-r--r--tools/perf/arch/arm64/util/Build4
-rw-r--r--tools/perf/arch/powerpc/Build1
-rw-r--r--tools/perf/arch/powerpc/annotate/instructions.c58
-rw-r--r--tools/perf/arch/powerpc/include/arch-tests.h13
-rw-r--r--tools/perf/arch/powerpc/include/dwarf-regs-table.h27
-rw-r--r--tools/perf/arch/powerpc/include/perf_regs.h2
-rw-r--r--tools/perf/arch/powerpc/tests/Build4
-rw-r--r--tools/perf/arch/powerpc/tests/arch-tests.c15
-rw-r--r--tools/perf/arch/powerpc/tests/dwarf-unwind.c62
-rw-r--r--tools/perf/arch/powerpc/tests/regs_load.S94
-rw-r--r--tools/perf/arch/powerpc/util/header.c11
-rw-r--r--tools/perf/arch/powerpc/util/sym-handling.c5
-rw-r--r--tools/perf/arch/s390/include/dwarf-regs-table.h8
-rw-r--r--tools/perf/arch/sh/include/dwarf-regs-table.h25
-rw-r--r--tools/perf/arch/sparc/include/dwarf-regs-table.h18
-rw-r--r--tools/perf/arch/x86/annotate/instructions.c78
-rw-r--r--tools/perf/arch/x86/entry/syscalls/syscall_64.tbl7
-rw-r--r--tools/perf/arch/x86/include/dwarf-regs-table.h14
-rw-r--r--tools/perf/arch/x86/tests/arch-tests.c10
-rw-r--r--tools/perf/arch/x86/util/header.c24
-rw-r--r--tools/perf/arch/x86/util/intel-pt.c57
-rw-r--r--tools/perf/arch/xtensa/include/dwarf-regs-table.h8
-rw-r--r--tools/perf/bench/futex-hash.c10
-rw-r--r--tools/perf/bench/futex-lock-pi.c9
-rw-r--r--tools/perf/bench/futex-requeue.c7
-rw-r--r--tools/perf/bench/futex-wake-parallel.c9
-rw-r--r--tools/perf/bench/futex-wake.c8
-rw-r--r--tools/perf/bench/futex.h4
-rw-r--r--tools/perf/bench/mem-functions.c80
-rw-r--r--tools/perf/bench/numa.c53
-rw-r--r--tools/perf/bench/sched-messaging.c5
-rw-r--r--tools/perf/bench/sched-pipe.c9
-rw-r--r--tools/perf/builtin-annotate.c111
-rw-r--r--tools/perf/builtin-c2c.c2779
-rw-r--r--tools/perf/builtin-config.c137
-rw-r--r--tools/perf/builtin-diff.c4
-rw-r--r--tools/perf/builtin-inject.c2
-rw-r--r--tools/perf/builtin-kmem.c47
-rw-r--r--tools/perf/builtin-kvm.c11
-rw-r--r--tools/perf/builtin-list.c20
-rw-r--r--tools/perf/builtin-mem.c4
-rw-r--r--tools/perf/builtin-probe.c35
-rw-r--r--tools/perf/builtin-record.c68
-rw-r--r--tools/perf/builtin-report.c42
-rw-r--r--tools/perf/builtin-sched.c1353
-rw-r--r--tools/perf/builtin-script.c60
-rw-r--r--tools/perf/builtin-stat.c34
-rw-r--r--tools/perf/builtin-timechart.c13
-rw-r--r--tools/perf/builtin-top.c54
-rw-r--r--tools/perf/builtin-trace.c79
-rw-r--r--tools/perf/builtin.h1
-rwxr-xr-xtools/perf/check-headers.sh59
-rw-r--r--tools/perf/jvmti/Build8
-rw-r--r--tools/perf/jvmti/Makefile89
-rw-r--r--tools/perf/jvmti/jvmti_agent.c38
-rw-r--r--tools/perf/jvmti/libjvmti.c39
-rw-r--r--tools/perf/perf-sys.h1
-rw-r--r--tools/perf/perf.c1
-rw-r--r--tools/perf/perf.h8
-rw-r--r--tools/perf/pmu-events/Build13
-rw-r--r--tools/perf/pmu-events/README147
-rw-r--r--tools/perf/pmu-events/arch/powerpc/mapfile.csv21
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/cache.json176
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/floating-point.json14
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/frontend.json470
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/marked.json794
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/memory.json212
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/other.json4064
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/pipeline.json350
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/pmc.json140
-rw-r--r--tools/perf/pmu-events/arch/powerpc/power8/translation.json176
-rw-r--r--tools/perf/pmu-events/arch/x86/bonnell/cache.json746
-rw-r--r--tools/perf/pmu-events/arch/x86/bonnell/floating-point.json261
-rw-r--r--tools/perf/pmu-events/arch/x86/bonnell/frontend.json83
-rw-r--r--tools/perf/pmu-events/arch/x86/bonnell/memory.json154
-rw-r--r--tools/perf/pmu-events/arch/x86/bonnell/other.json450
-rw-r--r--tools/perf/pmu-events/arch/x86/bonnell/pipeline.json364
-rw-r--r--tools/perf/pmu-events/arch/x86/bonnell/virtual-memory.json124
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwell/cache.json3198
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwell/floating-point.json171
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwell/frontend.json286
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwell/memory.json2845
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwell/other.json44
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwell/pipeline.json1417
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwell/virtual-memory.json388
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/cache.json774
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/floating-point.json171
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/frontend.json286
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/memory.json433
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/other.json44
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/pipeline.json1417
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/virtual-memory.json388
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/cache.json942
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/floating-point.json171
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/frontend.json286
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/memory.json649
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/other.json44
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/pipeline.json1417
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/virtual-memory.json388
-rw-r--r--tools/perf/pmu-events/arch/x86/goldmont/cache.json1127
-rw-r--r--tools/perf/pmu-events/arch/x86/goldmont/frontend.json52
-rw-r--r--tools/perf/pmu-events/arch/x86/goldmont/memory.json34
-rw-r--r--tools/perf/pmu-events/arch/x86/goldmont/other.json52
-rw-r--r--tools/perf/pmu-events/arch/x86/goldmont/pipeline.json433
-rw-r--r--tools/perf/pmu-events/arch/x86/goldmont/virtual-memory.json75
-rw-r--r--tools/perf/pmu-events/arch/x86/haswell/cache.json1041
-rw-r--r--tools/perf/pmu-events/arch/x86/haswell/floating-point.json83
-rw-r--r--tools/perf/pmu-events/arch/x86/haswell/frontend.json294
-rw-r--r--tools/perf/pmu-events/arch/x86/haswell/memory.json655
-rw-r--r--tools/perf/pmu-events/arch/x86/haswell/other.json43
-rw-r--r--tools/perf/pmu-events/arch/x86/haswell/pipeline.json1329
-rw-r--r--tools/perf/pmu-events/arch/x86/haswell/virtual-memory.json484
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/cache.json1077
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/floating-point.json83
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/frontend.json294
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/memory.json739
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/other.json43
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/pipeline.json1329
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/virtual-memory.json484
-rw-r--r--tools/perf/pmu-events/arch/x86/ivybridge/cache.json1123
-rw-r--r--tools/perf/pmu-events/arch/x86/ivybridge/floating-point.json151
-rw-r--r--tools/perf/pmu-events/arch/x86/ivybridge/frontend.json305
-rw-r--r--tools/perf/pmu-events/arch/x86/ivybridge/memory.json236
-rw-r--r--tools/perf/pmu-events/arch/x86/ivybridge/other.json44
-rw-r--r--tools/perf/pmu-events/arch/x86/ivybridge/pipeline.json1307
-rw-r--r--tools/perf/pmu-events/arch/x86/ivybridge/virtual-memory.json180
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/cache.json1272
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/floating-point.json151
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/frontend.json305
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/memory.json503
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/other.json44
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/pipeline.json1307
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/virtual-memory.json198
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/cache.json1290
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/floating-point.json138
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/frontend.json305
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/memory.json422
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/other.json58
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/pipeline.json1220
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/virtual-memory.json149
-rw-r--r--tools/perf/pmu-events/arch/x86/knightslanding/cache.json2305
-rw-r--r--tools/perf/pmu-events/arch/x86/knightslanding/frontend.json34
-rw-r--r--tools/perf/pmu-events/arch/x86/knightslanding/memory.json1110
-rw-r--r--tools/perf/pmu-events/arch/x86/knightslanding/pipeline.json435
-rw-r--r--tools/perf/pmu-events/arch/x86/knightslanding/virtual-memory.json65
-rw-r--r--tools/perf/pmu-events/arch/x86/mapfile.csv35
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemep/cache.json3229
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemep/floating-point.json229
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemep/frontend.json26
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemep/memory.json739
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemep/other.json210
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemep/pipeline.json881
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemep/virtual-memory.json109
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemex/cache.json3184
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemex/floating-point.json229
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemex/frontend.json26
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemex/memory.json739
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemex/other.json210
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemex/pipeline.json881
-rw-r--r--tools/perf/pmu-events/arch/x86/nehalemex/virtual-memory.json109
-rw-r--r--tools/perf/pmu-events/arch/x86/sandybridge/cache.json1879
-rw-r--r--tools/perf/pmu-events/arch/x86/sandybridge/floating-point.json138
-rw-r--r--tools/perf/pmu-events/arch/x86/sandybridge/frontend.json305
-rw-r--r--tools/perf/pmu-events/arch/x86/sandybridge/memory.json445
-rw-r--r--tools/perf/pmu-events/arch/x86/sandybridge/other.json58
-rw-r--r--tools/perf/pmu-events/arch/x86/sandybridge/pipeline.json1220
-rw-r--r--tools/perf/pmu-events/arch/x86/sandybridge/virtual-memory.json149
-rw-r--r--tools/perf/pmu-events/arch/x86/silvermont/cache.json811
-rw-r--r--tools/perf/pmu-events/arch/x86/silvermont/frontend.json47
-rw-r--r--tools/perf/pmu-events/arch/x86/silvermont/memory.json11
-rw-r--r--tools/perf/pmu-events/arch/x86/silvermont/pipeline.json359
-rw-r--r--tools/perf/pmu-events/arch/x86/silvermont/virtual-memory.json69
-rw-r--r--tools/perf/pmu-events/arch/x86/skylake/cache.json4299
-rw-r--r--tools/perf/pmu-events/arch/x86/skylake/floating-point.json68
-rw-r--r--tools/perf/pmu-events/arch/x86/skylake/frontend.json472
-rw-r--r--tools/perf/pmu-events/arch/x86/skylake/memory.json2309
-rw-r--r--tools/perf/pmu-events/arch/x86/skylake/other.json12
-rw-r--r--tools/perf/pmu-events/arch/x86/skylake/pipeline.json939
-rw-r--r--tools/perf/pmu-events/arch/x86/skylake/virtual-memory.json272
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-dp/cache.json2817
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-dp/floating-point.json229
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-dp/frontend.json26
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-dp/memory.json758
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-dp/other.json287
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-dp/pipeline.json899
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-dp/virtual-memory.json173
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-sp/cache.json3233
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-sp/floating-point.json229
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-sp/frontend.json26
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-sp/memory.json739
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-sp/other.json287
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-sp/pipeline.json899
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereep-sp/virtual-memory.json149
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereex/cache.json3225
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereex/floating-point.json229
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereex/frontend.json26
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereex/memory.json747
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereex/other.json287
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereex/pipeline.json905
-rw-r--r--tools/perf/pmu-events/arch/x86/westmereex/virtual-memory.json173
-rw-r--r--tools/perf/pmu-events/jevents.c814
-rw-r--r--tools/perf/pmu-events/jevents.h18
-rw-r--r--tools/perf/pmu-events/jsmn.c313
-rw-r--r--tools/perf/pmu-events/jsmn.h67
-rw-r--r--tools/perf/pmu-events/json.c162
-rw-r--r--tools/perf/pmu-events/json.h38
-rw-r--r--tools/perf/pmu-events/pmu-events.h37
-rw-r--r--tools/perf/tests/Build4
-rw-r--r--tools/perf/tests/backward-ring-buffer.c2
-rw-r--r--tools/perf/tests/bpf.c8
-rw-r--r--tools/perf/tests/builtin-test.c109
-rw-r--r--tools/perf/tests/clang.c46
-rw-r--r--tools/perf/tests/code-reading.c4
-rw-r--r--tools/perf/tests/dwarf-unwind.c2
-rw-r--r--tools/perf/tests/llvm.c8
-rw-r--r--tools/perf/tests/llvm.h7
-rw-r--r--tools/perf/tests/make8
-rw-r--r--tools/perf/tests/perf-hooks.c48
-rw-r--r--tools/perf/tests/tests.h5
-rw-r--r--tools/perf/tests/thread-map.c44
-rw-r--r--tools/perf/tests/vmlinux-kallsyms.c61
-rw-r--r--tools/perf/trace/beauty/mmap.c74
-rw-r--r--tools/perf/ui/browsers/annotate.c33
-rw-r--r--tools/perf/ui/browsers/hists.c133
-rw-r--r--tools/perf/ui/browsers/hists.h1
-rw-r--r--tools/perf/ui/browsers/map.c4
-rw-r--r--tools/perf/ui/gtk/annotate.c2
-rw-r--r--tools/perf/ui/gtk/hists.c2
-rw-r--r--tools/perf/ui/helpline.c10
-rw-r--r--tools/perf/ui/helpline.h1
-rw-r--r--tools/perf/ui/hist.c21
-rw-r--r--tools/perf/ui/stdio/hist.c117
-rw-r--r--tools/perf/util/Build10
-rw-r--r--tools/perf/util/annotate.c615
-rw-r--r--tools/perf/util/annotate.h30
-rw-r--r--tools/perf/util/auxtrace.c738
-rw-r--r--tools/perf/util/auxtrace.h55
-rw-r--r--tools/perf/util/block-range.c328
-rw-r--r--tools/perf/util/block-range.h71
-rw-r--r--tools/perf/util/bpf-loader.c33
-rw-r--r--tools/perf/util/build-id.c4
-rw-r--r--tools/perf/util/c++/Build2
-rw-r--r--tools/perf/util/c++/clang-c.h43
-rw-r--r--tools/perf/util/c++/clang-test.cpp62
-rw-r--r--tools/perf/util/c++/clang.cpp195
-rw-r--r--tools/perf/util/c++/clang.h26
-rw-r--r--tools/perf/util/callchain.c232
-rw-r--r--tools/perf/util/callchain.h29
-rw-r--r--tools/perf/util/config.c20
-rw-r--r--tools/perf/util/config.h4
-rw-r--r--tools/perf/util/cs-etm.h74
-rw-r--r--tools/perf/util/data-convert-bt.c2
-rw-r--r--tools/perf/util/debug.c10
-rw-r--r--tools/perf/util/drv_configs.c77
-rw-r--r--tools/perf/util/drv_configs.h26
-rw-r--r--tools/perf/util/dso.c3
-rw-r--r--tools/perf/util/dwarf-aux.c207
-rw-r--r--tools/perf/util/dwarf-aux.h11
-rw-r--r--tools/perf/util/dwarf-regs.c59
-rw-r--r--tools/perf/util/event.c21
-rw-r--r--tools/perf/util/event.h3
-rw-r--r--tools/perf/util/evlist.c20
-rw-r--r--tools/perf/util/evsel.c95
-rw-r--r--tools/perf/util/evsel.h12
-rw-r--r--tools/perf/util/evsel_fprintf.c26
-rw-r--r--tools/perf/util/genelf.c113
-rw-r--r--tools/perf/util/genelf.h5
-rw-r--r--tools/perf/util/header.c24
-rw-r--r--tools/perf/util/header.h1
-rw-r--r--tools/perf/util/hist.c167
-rw-r--r--tools/perf/util/hist.h10
-rw-r--r--tools/perf/util/include/dwarf-regs.h6
-rw-r--r--tools/perf/util/intel-bts.c11
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-decoder.c70
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-decoder.h2
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c13
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.h6
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-log.c4
-rw-r--r--tools/perf/util/intel-pt.c195
-rw-r--r--tools/perf/util/intel-pt.h4
-rw-r--r--tools/perf/util/jitdump.c82
-rw-r--r--tools/perf/util/jitdump.h12
-rw-r--r--tools/perf/util/llvm-utils.c78
-rw-r--r--tools/perf/util/llvm-utils.h6
-rw-r--r--tools/perf/util/lzma.c15
-rw-r--r--tools/perf/util/machine.c124
-rw-r--r--tools/perf/util/machine.h34
-rw-r--r--tools/perf/util/map.c62
-rw-r--r--tools/perf/util/map.h32
-rw-r--r--tools/perf/util/mem-events.c136
-rw-r--r--tools/perf/util/mem-events.h38
-rw-r--r--tools/perf/util/parse-branch-options.c85
-rw-r--r--tools/perf/util/parse-branch-options.h3
-rw-r--r--tools/perf/util/parse-events.c71
-rw-r--r--tools/perf/util/parse-events.h4
-rw-r--r--tools/perf/util/parse-events.l26
-rw-r--r--tools/perf/util/parse-events.y11
-rw-r--r--tools/perf/util/perf-hooks-list.h3
-rw-r--r--tools/perf/util/perf-hooks.c88
-rw-r--r--tools/perf/util/perf-hooks.h39
-rw-r--r--tools/perf/util/pmu.c203
-rw-r--r--tools/perf/util/pmu.h8
-rw-r--r--tools/perf/util/probe-event.c290
-rw-r--r--tools/perf/util/probe-event.h5
-rw-r--r--tools/perf/util/probe-file.c64
-rw-r--r--tools/perf/util/probe-file.h10
-rw-r--r--tools/perf/util/probe-finder.c111
-rw-r--r--tools/perf/util/probe-finder.h4
-rw-r--r--tools/perf/util/python-ext-sources1
-rw-r--r--tools/perf/util/quote.c2
-rw-r--r--tools/perf/util/scripting-engines/trace-event-perl.c5
-rw-r--r--tools/perf/util/scripting-engines/trace-event-python.c5
-rw-r--r--tools/perf/util/session.c10
-rw-r--r--tools/perf/util/sort.c27
-rw-r--r--tools/perf/util/sort.h15
-rw-r--r--tools/perf/util/strbuf.h3
-rw-r--r--tools/perf/util/string.c21
-rw-r--r--tools/perf/util/svghelper.c11
-rw-r--r--tools/perf/util/symbol-elf.c124
-rw-r--r--tools/perf/util/symbol-minimal.c4
-rw-r--r--tools/perf/util/symbol.c192
-rw-r--r--tools/perf/util/symbol.h37
-rw-r--r--tools/perf/util/symbol_fprintf.c11
-rw-r--r--tools/perf/util/thread.c9
-rw-r--r--tools/perf/util/thread_map.c22
-rw-r--r--tools/perf/util/thread_map.h1
-rw-r--r--tools/perf/util/time-utils.c119
-rw-r--r--tools/perf/util/time-utils.h14
-rw-r--r--tools/perf/util/trace-event-scripting.c39
-rw-r--r--tools/perf/util/unwind-libunwind-local.c4
-rw-r--r--tools/perf/util/util-cxx.h26
-rw-r--r--tools/perf/util/util.c89
-rw-r--r--tools/perf/util/util.h10
-rw-r--r--tools/perf/util/values.c81
-rw-r--r--tools/perf/util/values.h4
364 files changed, 104465 insertions, 1874 deletions
diff --git a/tools/perf/Build b/tools/perf/Build
index a43fae7f439a..b12d5d1666e3 100644
--- a/tools/perf/Build
+++ b/tools/perf/Build
@@ -21,6 +21,7 @@ perf-y += builtin-inject.o
21perf-y += builtin-mem.o 21perf-y += builtin-mem.o
22perf-y += builtin-data.o 22perf-y += builtin-data.o
23perf-y += builtin-version.o 23perf-y += builtin-version.o
24perf-y += builtin-c2c.o
24 25
25perf-$(CONFIG_AUDIT) += builtin-trace.o 26perf-$(CONFIG_AUDIT) += builtin-trace.o
26perf-$(CONFIG_LIBELF) += builtin-probe.o 27perf-$(CONFIG_LIBELF) += builtin-probe.o
diff --git a/tools/perf/Documentation/intel-pt.txt b/tools/perf/Documentation/intel-pt.txt
index c6c8318e38a2..b0b3007d3c9c 100644
--- a/tools/perf/Documentation/intel-pt.txt
+++ b/tools/perf/Documentation/intel-pt.txt
@@ -550,6 +550,18 @@ Unless /proc/sys/kernel/perf_event_paranoid is set to -1, unprivileged users
550have memory limits imposed upon them. That affects what buffer sizes they can 550have memory limits imposed upon them. That affects what buffer sizes they can
551have as outlined above. 551have as outlined above.
552 552
553The v4.2 kernel introduced support for a context switch metadata event,
554PERF_RECORD_SWITCH, which allows unprivileged users to see when their processes
555are scheduled out and in, just not by whom, which is left for the
556PERF_RECORD_SWITCH_CPU_WIDE, that is only accessible in system wide context,
557which in turn requires CAP_SYS_ADMIN.
558
559Please see the 45ac1403f564 ("perf: Add PERF_RECORD_SWITCH to indicate context
560switches") commit, that introduces these metadata events for further info.
561
562When working with kernels < v4.2, the following considerations must be taken,
563as the sched:sched_switch tracepoints will be used to receive such information:
564
553Unless /proc/sys/kernel/perf_event_paranoid is set to -1, unprivileged users are 565Unless /proc/sys/kernel/perf_event_paranoid is set to -1, unprivileged users are
554not permitted to use tracepoints which means there is insufficient side-band 566not permitted to use tracepoints which means there is insufficient side-band
555information to decode Intel PT in per-cpu mode, and potentially workload-only 567information to decode Intel PT in per-cpu mode, and potentially workload-only
@@ -564,8 +576,11 @@ sched_switch tracepoint
564----------------------- 576-----------------------
565 577
566The sched_switch tracepoint is used to provide side-band data for Intel PT 578The sched_switch tracepoint is used to provide side-band data for Intel PT
567decoding. sched_switch events are automatically added. e.g. the second event 579decoding in kernels where the PERF_RECORD_SWITCH metadata event isn't
568shown below 580available.
581
582The sched_switch events are automatically added. e.g. the second event shown
583below:
569 584
570 $ perf record -vv -e intel_pt//u uname 585 $ perf record -vv -e intel_pt//u uname
571 ------------------------------------------------------------ 586 ------------------------------------------------------------
diff --git a/tools/perf/Documentation/jitdump-specification.txt b/tools/perf/Documentation/jitdump-specification.txt
new file mode 100644
index 000000000000..4c62b0713651
--- /dev/null
+++ b/tools/perf/Documentation/jitdump-specification.txt
@@ -0,0 +1,170 @@
1JITDUMP specification version 2
2Last Revised: 09/15/2016
3Author: Stephane Eranian <eranian@gmail.com>
4
5--------------------------------------------------------
6| Revision | Date | Description |
7--------------------------------------------------------
8| 1 | 09/07/2016 | Initial revision |
9--------------------------------------------------------
10| 2 | 09/15/2016 | Add JIT_CODE_UNWINDING_INFO |
11--------------------------------------------------------
12
13
14I/ Introduction
15
16
17This document describes the jitdump file format. The file is generated by Just-In-time compiler runtimes to save meta-data information about the generated code, such as address, size, and name of generated functions, the native code generated, the source line information. The data may then be used by performance tools, such as Linux perf to generate function and assembly level profiles.
18
19The format is not specific to any particular programming language. It can be extended as need be.
20
21The format of the file is binary. It is self-describing in terms of endianness and is portable across multiple processor architectures.
22
23
24II/ Overview of the format
25
26
27The format requires only sequential accesses, i.e., append only mode. The file starts with a fixed size file header describing the version of the specification, the endianness.
28
29The header is followed by a series of records, each starting with a fixed size header describing the type of record and its size. It is, itself, followed by the payload for the record. Records can have a variable size even for a given type.
30
31Each entry in the file is timestamped. All timestamps must use the same clock source. The CLOCK_MONOTONIC clock source is recommended.
32
33
34III/ Jitdump file header format
35
36Each jitdump file starts with a fixed size header containing the following fields in order:
37
38
39* uint32_t magic : a magic number tagging the file type. The value is 4-byte long and represents the string "JiTD" in ASCII form. It is 0x4A695444 or 0x4454694a depending on the endianness. The field can be used to detect the endianness of the file
40* uint32_t version : a 4-byte value representing the format version. It is currently set to 2
41* uint32_t total_size: size in bytes of file header
42* uint32_t elf_mach : ELF architecture encoding (ELF e_machine value as specified in /usr/include/elf.h)
43* uint32_t pad1 : padding. Reserved for future use
44* uint32_t pid : JIT runtime process identification (OS specific)
45* uint64_t timestamp : timestamp of when the file was created
46* uint64_t flags : a bitmask of flags
47
48The flags currently defined are as follows:
49 * bit 0: JITDUMP_FLAGS_ARCH_TIMESTAMP : set if the jitdump file is using an architecture-specific timestamp clock source. For instance, on x86, one could use TSC directly
50
51IV/ Record header
52
53The file header is immediately followed by records. Each record starts with a fixed size header describing the record that follows.
54
55The record header is specified in order as follows:
56* uint32_t id : a value identifying the record type (see below)
57* uint32_t total_size: the size in bytes of the record including the header.
58* uint64_t timestamp : a timestamp of when the record was created.
59
60The following record types are defined:
61 * Value 0 : JIT_CODE_LOAD : record describing a jitted function
62 * Value 1 : JIT_CODE_MOVE : record describing an already jitted function which is moved
63 * Value 2 : JIT_CODE_DEBUG_INFO: record describing the debug information for a jitted function
64 * Value 3 : JIT_CODE_CLOSE : record marking the end of the jit runtime (optional)
65 * Value 4 : JIT_CODE_UNWINDING_INFO: record describing a function unwinding information
66
67 The payload of the record must immediately follow the record header without padding.
68
69V/ JIT_CODE_LOAD record
70
71
72 The record has the following fields following the fixed-size record header in order:
73 * uint32_t pid: OS process id of the runtime generating the jitted code
74 * uint32_t tid: OS thread identification of the runtime thread generating the jitted code
75 * uint64_t vma: virtual address of jitted code start
76 * uint64_t code_addr: code start address for the jitted code. By default vma = code_addr
77 * uint64_t code_size: size in bytes of the generated jitted code
78 * uint64_t code_index: unique identifier for the jitted code (see below)
79 * char[n]: function name in ASCII including the null termination
80 * native code: raw byte encoding of the jitted code
81
82 The record header total_size field is inclusive of all components:
83 * record header
84 * fixed-sized fields
85 * function name string, including termination
86 * native code length
87 * record specific variable data (e.g., array of data entries)
88
89The code_index is used to uniquely identify each jitted function. The index can be a monotonically increasing 64-bit value. Each time a function is jitted it gets a new number. This value is used in case the code for a function is moved and avoids having to issue another JIT_CODE_LOAD record.
90
91The format supports empty functions with no native code.
92
93
94VI/ JIT_CODE_MOVE record
95
96 The record type is optional.
97
98 The record has the following fields following the fixed-size record header in order:
99 * uint32_t pid : OS process id of the runtime generating the jitted code
100 * uint32_t tid : OS thread identification of the runtime thread generating the jitted code
101 * uint64_t vma : new virtual address of jitted code start
102 * uint64_t old_code_addr: previous code address for the same function
103 * uint64_t new_code_addr: alternate new code started address for the jitted code. By default it should be equal to the vma address.
104 * uint64_t code_size : size in bytes of the jitted code
105 * uint64_t code_index : index referring to the JIT_CODE_LOAD code_index record of when the function was initially jitted
106
107
108The MOVE record can be used in case an already jitted function is simply moved by the runtime inside the code cache.
109
110The JIT_CODE_MOVE record cannot come before the JIT_CODE_LOAD record for the same function name. The function cannot have changed name, otherwise a new JIT_CODE_LOAD record must be emitted.
111
112The code size of the function cannot change.
113
114
115VII/ JIT_DEBUG_INFO record
116
117The record type is optional.
118
119The record contains source lines debug information, i.e., a way to map a code address back to a source line. This information may be used by the performance tool.
120
121The record has the following fields following the fixed-size record header in order:
122 * uint64_t code_addr: address of function for which the debug information is generated
123 * uint64_t nr_entry : number of debug entries for the function
124 * debug_entry[n]: array of nr_entry debug entries for the function
125
126The debug_entry describes the source line information. It is defined as follows in order:
127* uint64_t code_addr: address of function for which the debug information is generated
128* uint32_t line : source file line number (starting at 1)
129* uint32_t discrim : column discriminator, 0 is default
130* char name[n] : source file name in ASCII, including null termination
131
132The debug_entry entries are saved in sequence but given that they have variable sizes due to the file name string, they cannot be indexed directly.
133They need to be walked sequentially. The next debug_entry is found at sizeof(debug_entry) + strlen(name) + 1.
134
135IMPORTANT:
136 The JIT_CODE_DEBUG for a given function must always be generated BEFORE the JIT_CODE_LOAD for the function. This facilitates greatly the parser for the jitdump file.
137
138
139VIII/ JIT_CODE_CLOSE record
140
141
142The record type is optional.
143
144The record is used as a marker for the end of the jitted runtime. It can be replaced by the end of the file.
145
146The JIT_CODE_CLOSE record does not have any specific fields, the record header contains all the information needed.
147
148
149IX/ JIT_CODE_UNWINDING_INFO
150
151
152The record type is optional.
153
154The record is used to describe the unwinding information for a jitted function.
155
156The record has the following fields following the fixed-size record header in order:
157
158uint64_t unwind_data_size : the size in bytes of the unwinding data table at the end of the record
159uint64_t eh_frame_hdr_size : the size in bytes of the DWARF EH Frame Header at the start of the unwinding data table at the end of the record
160uint64_t mapped_size : the size of the unwinding data mapped in memory
161const char unwinding_data[n]: an array of unwinding data, consisting of the EH Frame Header, followed by the actual EH Frame
162
163
164The EH Frame header follows the Linux Standard Base (LSB) specification as described in the document at https://refspecs.linuxfoundation.org/LSB_1.3.0/gLSB/gLSB/ehframehdr.html
165
166
167The EH Frame follows the LSB specicfication as described in the document at https://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/ehframechpt.html
168
169
170NOTE: The mapped_size is generally either the same as unwind_data_size (if the unwinding data was mapped in memory by the running process) or zero (if the unwinding data is not mapped by the process). If the unwinding data was not mapped, then only the EH Frame Header will be read, which can be used to specify FP based unwinding for a function which does not have unwinding information.
diff --git a/tools/perf/Documentation/perf-c2c.txt b/tools/perf/Documentation/perf-c2c.txt
new file mode 100644
index 000000000000..3f06730c7f47
--- /dev/null
+++ b/tools/perf/Documentation/perf-c2c.txt
@@ -0,0 +1,290 @@
1perf-c2c(1)
2===========
3
4NAME
5----
6perf-c2c - Shared Data C2C/HITM Analyzer.
7
8SYNOPSIS
9--------
10[verse]
11'perf c2c record' [<options>] <command>
12'perf c2c record' [<options>] -- [<record command options>] <command>
13'perf c2c report' [<options>]
14
15DESCRIPTION
16-----------
17C2C stands for Cache To Cache.
18
19The perf c2c tool provides means for Shared Data C2C/HITM analysis. It allows
20you to track down the cacheline contentions.
21
22The tool is based on x86's load latency and precise store facility events
23provided by Intel CPUs. These events provide:
24 - memory address of the access
25 - type of the access (load and store details)
26 - latency (in cycles) of the load access
27
28The c2c tool provide means to record this data and report back access details
29for cachelines with highest contention - highest number of HITM accesses.
30
31The basic workflow with this tool follows the standard record/report phase.
32User uses the record command to record events data and report command to
33display it.
34
35
36RECORD OPTIONS
37--------------
38-e::
39--event=::
40 Select the PMU event. Use 'perf mem record -e list'
41 to list available events.
42
43-v::
44--verbose::
45 Be more verbose (show counter open errors, etc).
46
47-l::
48--ldlat::
49 Configure mem-loads latency.
50
51-k::
52--all-kernel::
53 Configure all used events to run in kernel space.
54
55-u::
56--all-user::
57 Configure all used events to run in user space.
58
59REPORT OPTIONS
60--------------
61-k::
62--vmlinux=<file>::
63 vmlinux pathname
64
65-v::
66--verbose::
67 Be more verbose (show counter open errors, etc).
68
69-i::
70--input::
71 Specify the input file to process.
72
73-N::
74--node-info::
75 Show extra node info in report (see NODE INFO section)
76
77-c::
78--coalesce::
79 Specify sorintg fields for single cacheline display.
80 Following fields are available: tid,pid,iaddr,dso
81 (see COALESCE)
82
83-g::
84--call-graph::
85 Setup callchains parameters.
86 Please refer to perf-report man page for details.
87
88--stdio::
89 Force the stdio output (see STDIO OUTPUT)
90
91--stats::
92 Display only statistic tables and force stdio mode.
93
94--full-symbols::
95 Display full length of symbols.
96
97--no-source::
98 Do not display Source:Line column.
99
100--show-all::
101 Show all captured HITM lines, with no regard to HITM % 0.0005 limit.
102
103-f::
104--force::
105 Don't do ownership validation.
106
107-d::
108--display::
109 Siwtch to HITM type (rmt, lcl) to display and sort on. Total HITMs as default.
110
111C2C RECORD
112----------
113The perf c2c record command setup options related to HITM cacheline analysis
114and calls standard perf record command.
115
116Following perf record options are configured by default:
117(check perf record man page for details)
118
119 -W,-d,--sample-cpu
120
121Unless specified otherwise with '-e' option, following events are monitored by
122default:
123
124 cpu/mem-loads,ldlat=30/P
125 cpu/mem-stores/P
126
127User can pass any 'perf record' option behind '--' mark, like (to enable
128callchains and system wide monitoring):
129
130 $ perf c2c record -- -g -a
131
132Please check RECORD OPTIONS section for specific c2c record options.
133
134C2C REPORT
135----------
136The perf c2c report command displays shared data analysis. It comes in two
137display modes: stdio and tui (default).
138
139The report command workflow is following:
140 - sort all the data based on the cacheline address
141 - store access details for each cacheline
142 - sort all cachelines based on user settings
143 - display data
144
145In general perf report output consist of 2 basic views:
146 1) most expensive cachelines list
147 2) offsets details for each cacheline
148
149For each cacheline in the 1) list we display following data:
150(Both stdio and TUI modes follow the same fields output)
151
152 Index
153 - zero based index to identify the cacheline
154
155 Cacheline
156 - cacheline address (hex number)
157
158 Total records
159 - sum of all cachelines accesses
160
161 Rmt/Lcl Hitm
162 - cacheline percentage of all Remote/Local HITM accesses
163
164 LLC Load Hitm - Total, Lcl, Rmt
165 - count of Total/Local/Remote load HITMs
166
167 Store Reference - Total, L1Hit, L1Miss
168 Total - all store accesses
169 L1Hit - store accesses that hit L1
170 L1Hit - store accesses that missed L1
171
172 Load Dram
173 - count of local and remote DRAM accesses
174
175 LLC Ld Miss
176 - count of all accesses that missed LLC
177
178 Total Loads
179 - sum of all load accesses
180
181 Core Load Hit - FB, L1, L2
182 - count of load hits in FB (Fill Buffer), L1 and L2 cache
183
184 LLC Load Hit - Llc, Rmt
185 - count of LLC and Remote load hits
186
187For each offset in the 2) list we display following data:
188
189 HITM - Rmt, Lcl
190 - % of Remote/Local HITM accesses for given offset within cacheline
191
192 Store Refs - L1 Hit, L1 Miss
193 - % of store accesses that hit/missed L1 for given offset within cacheline
194
195 Data address - Offset
196 - offset address
197
198 Pid
199 - pid of the process responsible for the accesses
200
201 Tid
202 - tid of the process responsible for the accesses
203
204 Code address
205 - code address responsible for the accesses
206
207 cycles - rmt hitm, lcl hitm, load
208 - sum of cycles for given accesses - Remote/Local HITM and generic load
209
210 cpu cnt
211 - number of cpus that participated on the access
212
213 Symbol
214 - code symbol related to the 'Code address' value
215
216 Shared Object
217 - shared object name related to the 'Code address' value
218
219 Source:Line
220 - source information related to the 'Code address' value
221
222 Node
223 - nodes participating on the access (see NODE INFO section)
224
225NODE INFO
226---------
227The 'Node' field displays nodes that accesses given cacheline
228offset. Its output comes in 3 flavors:
229 - node IDs separated by ','
230 - node IDs with stats for each ID, in following format:
231 Node{cpus %hitms %stores}
232 - node IDs with list of affected CPUs in following format:
233 Node{cpu list}
234
235User can switch between above flavors with -N option or
236use 'n' key to interactively switch in TUI mode.
237
238COALESCE
239--------
240User can specify how to sort offsets for cacheline.
241
242Following fields are available and governs the final
243output fields set for caheline offsets output:
244
245 tid - coalesced by process TIDs
246 pid - coalesced by process PIDs
247 iaddr - coalesced by code address, following fields are displayed:
248 Code address, Code symbol, Shared Object, Source line
249 dso - coalesced by shared object
250
251By default the coalescing is setup with 'pid,tid,iaddr'.
252
253STDIO OUTPUT
254------------
255The stdio output displays data on standard output.
256
257Following tables are displayed:
258 Trace Event Information
259 - overall statistics of memory accesses
260
261 Global Shared Cache Line Event Information
262 - overall statistics on shared cachelines
263
264 Shared Data Cache Line Table
265 - list of most expensive cachelines
266
267 Shared Cache Line Distribution Pareto
268 - list of all accessed offsets for each cacheline
269
270TUI OUTPUT
271----------
272The TUI output provides interactive interface to navigate
273through cachelines list and to display offset details.
274
275For details please refer to the help window by pressing '?' key.
276
277CREDITS
278-------
279Although Don Zickus, Dick Fowles and Joe Mario worked together
280to get this implemented, we got lots of early help from Arnaldo
281Carvalho de Melo, Stephane Eranian, Jiri Olsa and Andi Kleen.
282
283C2C BLOG
284--------
285Check Joe's blog on c2c tool for detailed use case explanation:
286 https://joemario.github.io/blog/2016/09/01/c2c-blog/
287
288SEE ALSO
289--------
290linkperf:perf-record[1], linkperf:perf-mem[1]
diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt
index 15949e2a7805..9365b75fd04f 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -8,6 +8,8 @@ perf-config - Get and set variables in a configuration file.
8SYNOPSIS 8SYNOPSIS
9-------- 9--------
10[verse] 10[verse]
11'perf config' [<file-option>] [section.name[=value] ...]
12or
11'perf config' [<file-option>] -l | --list 13'perf config' [<file-option>] -l | --list
12 14
13DESCRIPTION 15DESCRIPTION
@@ -110,6 +112,47 @@ Given a $HOME/.perfconfig like this:
110 order = caller 112 order = caller
111 sort-key = function 113 sort-key = function
112 114
115 [report]
116 # Defaults
117 sort-order = comm,dso,symbol
118 percent-limit = 0
119 queue-size = 0
120 children = true
121 group = true
122
123You can hide source code of annotate feature setting the config to false with
124
125 % perf config annotate.hide_src_code=true
126
127If you want to add or modify several config items, you can do like
128
129 % perf config ui.show-headers=false kmem.default=slab
130
131To modify the sort order of report functionality in user config file(i.e. `~/.perfconfig`), do
132
133 % perf config --user report sort-order=srcline
134
135To change colors of selected line to other foreground and background colors
136in system config file (i.e. `$(sysconf)/perfconfig`), do
137
138 % perf config --system colors.selected=yellow,green
139
140To query the record mode of call graph, do
141
142 % perf config call-graph.record-mode
143
144If you want to know multiple config key/value pairs, you can do like
145
146 % perf config report.queue-size call-graph.order report.children
147
148To query the config value of sort order of call graph in user config file (i.e. `~/.perfconfig`), do
149
150 % perf config --user call-graph.sort-order
151
152To query the config value of buildid directory in system config file (i.e. `$(sysconf)/perfconfig`), do
153
154 % perf config --system buildid.dir
155
113Variables 156Variables
114~~~~~~~~~ 157~~~~~~~~~
115 158
@@ -382,6 +425,10 @@ call-graph.*::
382 histogram entry. Default is 0 which means no limitation. 425 histogram entry. Default is 0 which means no limitation.
383 426
384report.*:: 427report.*::
428 report.sort_order::
429 Allows changing the default sort order from "comm,dso,symbol" to
430 some other default, for instance "sym,dso" may be more fitting for
431 kernel developers.
385 report.percent-limit:: 432 report.percent-limit::
386 This one is mostly the same as call-graph.threshold but works for 433 This one is mostly the same as call-graph.threshold but works for
387 histogram entries. Entries having an overhead lower than this 434 histogram entries. Entries having an overhead lower than this
diff --git a/tools/perf/Documentation/perf-kmem.txt b/tools/perf/Documentation/perf-kmem.txt
index ff0f433b3fce..479fc3261a50 100644
--- a/tools/perf/Documentation/perf-kmem.txt
+++ b/tools/perf/Documentation/perf-kmem.txt
@@ -61,6 +61,13 @@ OPTIONS
61 default, but this option shows live (currently allocated) pages 61 default, but this option shows live (currently allocated) pages
62 instead. (This option works with --page option only) 62 instead. (This option works with --page option only)
63 63
64--time::
65 Only analyze samples within given time window: <start>,<stop>. Times
66 have the format seconds.microseconds. If start is not given (i.e., time
67 string is ',x.y') then analysis starts at the beginning of the file. If
68 stop time is not given (i.e, time string is 'x.y,') then analysis goes
69 to end of file.
70
64SEE ALSO 71SEE ALSO
65-------- 72--------
66linkperf:perf-record[1] 73linkperf:perf-record[1]
diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt
index a126e97a8114..41857cce5e86 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -8,13 +8,23 @@ perf-list - List all symbolic event types
8SYNOPSIS 8SYNOPSIS
9-------- 9--------
10[verse] 10[verse]
11'perf list' [hw|sw|cache|tracepoint|pmu|event_glob] 11'perf list' [--no-desc] [--long-desc] [hw|sw|cache|tracepoint|pmu|event_glob]
12 12
13DESCRIPTION 13DESCRIPTION
14----------- 14-----------
15This command displays the symbolic event types which can be selected in the 15This command displays the symbolic event types which can be selected in the
16various perf commands with the -e option. 16various perf commands with the -e option.
17 17
18OPTIONS
19-------
20--no-desc::
21Don't print descriptions.
22
23-v::
24--long-desc::
25Print longer event descriptions.
26
27
18[[EVENT_MODIFIERS]] 28[[EVENT_MODIFIERS]]
19EVENT MODIFIERS 29EVENT MODIFIERS
20--------------- 30---------------
diff --git a/tools/perf/Documentation/perf-probe.txt b/tools/perf/Documentation/perf-probe.txt
index b303bcdd8ed1..e6c9902c6d82 100644
--- a/tools/perf/Documentation/perf-probe.txt
+++ b/tools/perf/Documentation/perf-probe.txt
@@ -21,6 +21,8 @@ or
21'perf probe' [options] --vars='PROBEPOINT' 21'perf probe' [options] --vars='PROBEPOINT'
22or 22or
23'perf probe' [options] --funcs 23'perf probe' [options] --funcs
24or
25'perf probe' [options] --definition='PROBE' [...]
24 26
25DESCRIPTION 27DESCRIPTION
26----------- 28-----------
@@ -34,6 +36,8 @@ OPTIONS
34-k:: 36-k::
35--vmlinux=PATH:: 37--vmlinux=PATH::
36 Specify vmlinux path which has debuginfo (Dwarf binary). 38 Specify vmlinux path which has debuginfo (Dwarf binary).
39 Only when using this with --definition, you can give an offline
40 vmlinux file.
37 41
38-m:: 42-m::
39--module=MODNAME|PATH:: 43--module=MODNAME|PATH::
@@ -96,6 +100,11 @@ OPTIONS
96 can also list functions in a user space executable / shared library. 100 can also list functions in a user space executable / shared library.
97 This also can accept a FILTER rule argument. 101 This also can accept a FILTER rule argument.
98 102
103-D::
104--definition=::
105 Show trace-event definition converted from given probe-event instead
106 of write it into tracing/[k,u]probe_events.
107
99--filter=FILTER:: 108--filter=FILTER::
100 (Only for --vars and --funcs) Set filter. FILTER is a combination of glob 109 (Only for --vars and --funcs) Set filter. FILTER is a combination of glob
101 pattern, see FILTER PATTERN for detail. 110 pattern, see FILTER PATTERN for detail.
@@ -176,13 +185,12 @@ Each probe argument follows below syntax.
176 185
177'NAME' specifies the name of this argument (optional). You can use the name of local variable, local data structure member (e.g. var->field, var.field2), local array with fixed index (e.g. array[1], var->array[0], var->pointer[2]), or kprobe-tracer argument format (e.g. $retval, %ax, etc). Note that the name of this argument will be set as the last member name if you specify a local data structure member (e.g. field2 for 'var->field1.field2'.) 186'NAME' specifies the name of this argument (optional). You can use the name of local variable, local data structure member (e.g. var->field, var.field2), local array with fixed index (e.g. array[1], var->array[0], var->pointer[2]), or kprobe-tracer argument format (e.g. $retval, %ax, etc). Note that the name of this argument will be set as the last member name if you specify a local data structure member (e.g. field2 for 'var->field1.field2'.)
178'$vars' and '$params' special arguments are also available for NAME, '$vars' is expanded to the local variables (including function parameters) which can access at given probe point. '$params' is expanded to only the function parameters. 187'$vars' and '$params' special arguments are also available for NAME, '$vars' is expanded to the local variables (including function parameters) which can access at given probe point. '$params' is expanded to only the function parameters.
179'TYPE' casts the type of this argument (optional). If omitted, perf probe automatically set the type based on debuginfo. Currently, basic types (u8/u16/u32/u64/s8/s16/s32/s64), signedness casting (u/s), "string" and bitfield are supported. (see TYPES for detail) 188'TYPE' casts the type of this argument (optional). If omitted, perf probe automatically set the type based on debuginfo (*). Currently, basic types (u8/u16/u32/u64/s8/s16/s32/s64), hexadecimal integers (x/x8/x16/x32/x64), signedness casting (u/s), "string" and bitfield are supported. (see TYPES for detail)
180
181On x86 systems %REG is always the short form of the register: for example %AX. %RAX or %EAX is not valid. 189On x86 systems %REG is always the short form of the register: for example %AX. %RAX or %EAX is not valid.
182 190
183TYPES 191TYPES
184----- 192-----
185Basic types (u8/u16/u32/u64/s8/s16/s32/s64) are integer types. Prefix 's' and 'u' means those types are signed and unsigned respectively. Traced arguments are shown in decimal (signed) or hex (unsigned). You can also use 's' or 'u' to specify only signedness and leave its size auto-detected by perf probe. 193Basic types (u8/u16/u32/u64/s8/s16/s32/s64) and hexadecimal integers (x8/x16/x32/x64) are integer types. Prefix 's' and 'u' means those types are signed and unsigned respectively, and 'x' means that is shown in hexadecimal format. Traced arguments are shown in decimal (sNN/uNN) or hex (xNN). You can also use 's' or 'u' to specify only signedness and leave its size auto-detected by perf probe. Moreover, you can use 'x' to explicitly specify to be shown in hexadecimal (the size is also auto-detected).
186String type is a special type, which fetches a "null-terminated" string from kernel space. This means it will fail and store NULL if the string container has been paged out. You can specify 'string' type only for the local variable or structure member which is an array of or a pointer to 'char' or 'unsigned char' type. 194String type is a special type, which fetches a "null-terminated" string from kernel space. This means it will fail and store NULL if the string container has been paged out. You can specify 'string' type only for the local variable or structure member which is an array of or a pointer to 'char' or 'unsigned char' type.
187Bitfield is another special type, which takes 3 parameters, bit-width, bit-offset, and container-size (usually 32). The syntax is; 195Bitfield is another special type, which takes 3 parameters, bit-width, bit-offset, and container-size (usually 32). The syntax is;
188 196
diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
index 379a2bed07c0..5054d9147f0f 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -35,19 +35,19 @@ OPTIONS
35 35
36 - a symbolically formed PMU event like 'pmu/param1=0x3,param2/' where 36 - a symbolically formed PMU event like 'pmu/param1=0x3,param2/' where
37 'param1', 'param2', etc are defined as formats for the PMU in 37 'param1', 'param2', etc are defined as formats for the PMU in
38 /sys/bus/event_sources/devices/<pmu>/format/*. 38 /sys/bus/event_source/devices/<pmu>/format/*.
39 39
40 - a symbolically formed event like 'pmu/config=M,config1=N,config3=K/' 40 - a symbolically formed event like 'pmu/config=M,config1=N,config3=K/'
41 41
42 where M, N, K are numbers (in decimal, hex, octal format). Acceptable 42 where M, N, K are numbers (in decimal, hex, octal format). Acceptable
43 values for each of 'config', 'config1' and 'config2' are defined by 43 values for each of 'config', 'config1' and 'config2' are defined by
44 corresponding entries in /sys/bus/event_sources/devices/<pmu>/format/* 44 corresponding entries in /sys/bus/event_source/devices/<pmu>/format/*
45 param1 and param2 are defined as formats for the PMU in: 45 param1 and param2 are defined as formats for the PMU in:
46 /sys/bus/event_sources/devices/<pmu>/format/* 46 /sys/bus/event_source/devices/<pmu>/format/*
47 47
48 There are also some params which are not defined in .../<pmu>/format/*. 48 There are also some parameters which are not defined in .../<pmu>/format/*.
49 These params can be used to overload default config values per event. 49 These params can be used to overload default config values per event.
50 Here is a list of the params. 50 Here are some common parameters:
51 - 'period': Set event sampling period 51 - 'period': Set event sampling period
52 - 'freq': Set event sampling frequency 52 - 'freq': Set event sampling frequency
53 - 'time': Disable/enable time stamping. Acceptable values are 1 for 53 - 'time': Disable/enable time stamping. Acceptable values are 1 for
@@ -57,8 +57,23 @@ OPTIONS
57 FP mode, "dwarf" for DWARF mode, "lbr" for LBR mode and 57 FP mode, "dwarf" for DWARF mode, "lbr" for LBR mode and
58 "no" for disable callgraph. 58 "no" for disable callgraph.
59 - 'stack-size': user stack size for dwarf mode 59 - 'stack-size': user stack size for dwarf mode
60
61 See the linkperf:perf-list[1] man page for more parameters.
62
60 Note: If user explicitly sets options which conflict with the params, 63 Note: If user explicitly sets options which conflict with the params,
61 the value set by the params will be overridden. 64 the value set by the parameters will be overridden.
65
66 Also not defined in .../<pmu>/format/* are PMU driver specific
67 configuration parameters. Any configuration parameter preceded by
68 the letter '@' is not interpreted in user space and sent down directly
69 to the PMU driver. For example:
70
71 perf record -e some_event/@cfg1,@cfg2=config/ ...
72
73 will see 'cfg1' and 'cfg2=config' pushed to the PMU driver associated
74 with the event for further processing. There is no restriction on
75 what the configuration parameters are, as long as their semantic is
76 understood and supported by the PMU driver.
62 77
63 - a hardware breakpoint event in the form of '\mem:addr[/len][:access]' 78 - a hardware breakpoint event in the form of '\mem:addr[/len][:access]'
64 where addr is the address in memory you want to break in. 79 where addr is the address in memory you want to break in.
@@ -77,9 +92,62 @@ OPTIONS
77 92
78--filter=<filter>:: 93--filter=<filter>::
79 Event filter. This option should follow a event selector (-e) which 94 Event filter. This option should follow a event selector (-e) which
80 selects tracepoint event(s). Multiple '--filter' options are combined 95 selects either tracepoint event(s) or a hardware trace PMU
96 (e.g. Intel PT or CoreSight).
97
98 - tracepoint filters
99
100 In the case of tracepoints, multiple '--filter' options are combined
81 using '&&'. 101 using '&&'.
82 102
103 - address filters
104
105 A hardware trace PMU advertises its ability to accept a number of
106 address filters by specifying a non-zero value in
107 /sys/bus/event_source/devices/<pmu>/nr_addr_filters.
108
109 Address filters have the format:
110
111 filter|start|stop|tracestop <start> [/ <size>] [@<file name>]
112
113 Where:
114 - 'filter': defines a region that will be traced.
115 - 'start': defines an address at which tracing will begin.
116 - 'stop': defines an address at which tracing will stop.
117 - 'tracestop': defines a region in which tracing will stop.
118
119 <file name> is the name of the object file, <start> is the offset to the
120 code to trace in that file, and <size> is the size of the region to
121 trace. 'start' and 'stop' filters need not specify a <size>.
122
123 If no object file is specified then the kernel is assumed, in which case
124 the start address must be a current kernel memory address.
125
126 <start> can also be specified by providing the name of a symbol. If the
127 symbol name is not unique, it can be disambiguated by inserting #n where
128 'n' selects the n'th symbol in address order. Alternately #0, #g or #G
129 select only a global symbol. <size> can also be specified by providing
130 the name of a symbol, in which case the size is calculated to the end
131 of that symbol. For 'filter' and 'tracestop' filters, if <size> is
132 omitted and <start> is a symbol, then the size is calculated to the end
133 of that symbol.
134
135 If <size> is omitted and <start> is '*', then the start and size will
136 be calculated from the first and last symbols, i.e. to trace the whole
137 file.
138
139 If symbol names (or '*') are provided, they must be surrounded by white
140 space.
141
142 The filter passed to the kernel is not necessarily the same as entered.
143 To see the filter that is passed, use the -v option.
144
145 The kernel may not be able to configure a trace region if it is not
146 within a single mapping. MMAP events (or /proc/<pid>/maps) can be
147 examined to determine if that is a possibility.
148
149 Multiple filters can be separated with space or comma.
150
83--exclude-perf:: 151--exclude-perf::
84 Don't record events issued by perf itself. This option should follow 152 Don't record events issued by perf itself. This option should follow
85 a event selector (-e) which selects tracepoint event(s). It adds a 153 a event selector (-e) which selects tracepoint event(s). It adds a
@@ -362,6 +430,10 @@ that gets then processed, possibly via a perf script, to decide if that
362particular perf.data snapshot should be kept or not. 430particular perf.data snapshot should be kept or not.
363 431
364Implies --timestamp-filename, --no-buildid and --no-buildid-cache. 432Implies --timestamp-filename, --no-buildid and --no-buildid-cache.
433The reason for the latter two is to reduce the data file switching
434overhead. You can still switch them on with:
435
436 --switch-output --no-no-buildid --no-no-buildid-cache
365 437
366--dry-run:: 438--dry-run::
367Parse options then exit. --dry-run can be used to detect errors in cmdline 439Parse options then exit. --dry-run can be used to detect errors in cmdline
diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 2d1746295abf..f2914f03ae7b 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -239,7 +239,8 @@ OPTIONS
239 Accumulate callchain of children to parent entry so that then can 239 Accumulate callchain of children to parent entry so that then can
240 show up in the output. The output will have a new "Children" column 240 show up in the output. The output will have a new "Children" column
241 and will be sorted on the data. It requires callchains are recorded. 241 and will be sorted on the data. It requires callchains are recorded.
242 See the `overhead calculation' section for more details. 242 See the `overhead calculation' section for more details. Enabled by
243 default, disable with --no-children.
243 244
244--max-stack:: 245--max-stack::
245 Set the stack depth limit when parsing the callchain, anything 246 Set the stack depth limit when parsing the callchain, anything
@@ -382,6 +383,13 @@ OPTIONS
382--header-only:: 383--header-only::
383 Show only perf.data header (forces --stdio). 384 Show only perf.data header (forces --stdio).
384 385
386--time::
387 Only analyze samples within given time window: <start>,<stop>. Times
388 have the format seconds.microseconds. If start is not given (i.e., time
389 string is ',x.y') then analysis starts at the beginning of the file. If
390 stop time is not given (i.e, time string is 'x.y,') then analysis goes
391 to end of file.
392
385--itrace:: 393--itrace::
386 Options for decoding instruction tracing data. The options are: 394 Options for decoding instruction tracing data. The options are:
387 395
diff --git a/tools/perf/Documentation/perf-sched.txt b/tools/perf/Documentation/perf-sched.txt
index 1cc08cc47ac5..76173969ab80 100644
--- a/tools/perf/Documentation/perf-sched.txt
+++ b/tools/perf/Documentation/perf-sched.txt
@@ -8,11 +8,11 @@ perf-sched - Tool to trace/measure scheduler properties (latencies)
8SYNOPSIS 8SYNOPSIS
9-------- 9--------
10[verse] 10[verse]
11'perf sched' {record|latency|map|replay|script} 11'perf sched' {record|latency|map|replay|script|timehist}
12 12
13DESCRIPTION 13DESCRIPTION
14----------- 14-----------
15There are five variants of perf sched: 15There are several variants of 'perf sched':
16 16
17 'perf sched record <command>' to record the scheduling events 17 'perf sched record <command>' to record the scheduling events
18 of an arbitrary workload. 18 of an arbitrary workload.
@@ -36,6 +36,30 @@ There are five variants of perf sched:
36 are running on a CPU. A '*' denotes the CPU that had the event, and 36 are running on a CPU. A '*' denotes the CPU that had the event, and
37 a dot signals an idle CPU. 37 a dot signals an idle CPU.
38 38
39 'perf sched timehist' provides an analysis of scheduling events.
40
41 Example usage:
42 perf sched record -- sleep 1
43 perf sched timehist
44
45 By default it shows the individual schedule events, including the wait
46 time (time between sched-out and next sched-in events for the task), the
47 task scheduling delay (time between wakeup and actually running) and run
48 time for the task:
49
50 time cpu task name wait time sch delay run time
51 [tid/pid] (msec) (msec) (msec)
52 -------------- ------ -------------------- --------- --------- ---------
53 79371.874569 [0011] gcc[31949] 0.014 0.000 1.148
54 79371.874591 [0010] gcc[31951] 0.000 0.000 0.024
55 79371.874603 [0010] migration/10[59] 3.350 0.004 0.011
56 79371.874604 [0011] <idle> 1.148 0.000 0.035
57 79371.874723 [0005] <idle> 0.016 0.000 1.383
58 79371.874746 [0005] gcc[31949] 0.153 0.078 0.022
59 ...
60
61 Times are in msec.usec.
62
39OPTIONS 63OPTIONS
40------- 64-------
41-i:: 65-i::
@@ -66,6 +90,60 @@ OPTIONS for 'perf sched map'
66--color-pids:: 90--color-pids::
67 Highlight the given pids. 91 Highlight the given pids.
68 92
93OPTIONS for 'perf sched timehist'
94---------------------------------
95-k::
96--vmlinux=<file>::
97 vmlinux pathname
98
99--kallsyms=<file>::
100 kallsyms pathname
101
102-g::
103--no-call-graph::
104 Do not display call chains if present.
105
106--max-stack::
107 Maximum number of functions to display in backtrace, default 5.
108
109-s::
110--summary::
111 Show only a summary of scheduling by thread with min, max, and average
112 run times (in sec) and relative stddev.
113
114-S::
115--with-summary::
116 Show all scheduling events followed by a summary by thread with min,
117 max, and average run times (in sec) and relative stddev.
118
119--symfs=<directory>::
120 Look for files with symbols relative to this directory.
121
122-V::
123--cpu-visual::
124 Show visual aid for sched switches by CPU: 'i' marks idle time,
125 's' are scheduler events.
126
127-w::
128--wakeups::
129 Show wakeup events.
130
131-M::
132--migrations::
133 Show migration events.
134
135-I::
136--idle-hist::
137 Show idle-related events only.
138
139--time::
140 Only analyze samples within given time window: <start>,<stop>. Times
141 have the format seconds.microseconds. If start is not given (i.e., time
142 string is ',x.y') then analysis starts at the beginning of the file. If
143 stop time is not given (i.e, time string is 'x.y,') then analysis goes
144 to end of file.
145
146
69SEE ALSO 147SEE ALSO
70-------- 148--------
71linkperf:perf-record[1] 149linkperf:perf-record[1]
diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt
index 053bbbd84ece..5dc5c6a09ac4 100644
--- a/tools/perf/Documentation/perf-script.txt
+++ b/tools/perf/Documentation/perf-script.txt
@@ -117,7 +117,7 @@ OPTIONS
117 Comma separated list of fields to print. Options are: 117 Comma separated list of fields to print. Options are:
118 comm, tid, pid, time, cpu, event, trace, ip, sym, dso, addr, symoff, 118 comm, tid, pid, time, cpu, event, trace, ip, sym, dso, addr, symoff,
119 srcline, period, iregs, brstack, brstacksym, flags, bpf-output, 119 srcline, period, iregs, brstack, brstacksym, flags, bpf-output,
120 callindent. Field list can be prepended with the type, trace, sw or hw, 120 callindent, insn, insnlen. Field list can be prepended with the type, trace, sw or hw,
121 to indicate to which event type the field list applies. 121 to indicate to which event type the field list applies.
122 e.g., -F sw:comm,tid,time,ip,sym and -F trace:time,cpu,trace 122 e.g., -F sw:comm,tid,time,ip,sym and -F trace:time,cpu,trace
123 123
@@ -181,6 +181,10 @@ OPTIONS
181 Instruction Trace decoding. For calls and returns, it will display the 181 Instruction Trace decoding. For calls and returns, it will display the
182 name of the symbol indented with spaces to reflect the stack depth. 182 name of the symbol indented with spaces to reflect the stack depth.
183 183
184 When doing instruction trace decoding insn and insnlen give the
185 instruction bytes and the instruction length of the current
186 instruction.
187
184 Finally, a user may not set fields to none for all event types. 188 Finally, a user may not set fields to none for all event types.
185 i.e., -F "" is not allowed. 189 i.e., -F "" is not allowed.
186 190
@@ -208,6 +212,9 @@ OPTIONS
208--hide-call-graph:: 212--hide-call-graph::
209 When printing symbols do not display call chain. 213 When printing symbols do not display call chain.
210 214
215--stop-bt::
216 Stop display of callgraph at these symbols
217
211-C:: 218-C::
212--cpu:: Only report samples for the list of CPUs provided. Multiple CPUs can 219--cpu:: Only report samples for the list of CPUs provided. Multiple CPUs can
213 be provided as a comma-separated list with no space: 0,1. Ranges of 220 be provided as a comma-separated list with no space: 0,1. Ranges of
@@ -285,6 +292,13 @@ include::itrace.txt[]
285--force:: 292--force::
286 Don't do ownership validation. 293 Don't do ownership validation.
287 294
295--time::
296 Only analyze samples within given time window: <start>,<stop>. Times
297 have the format seconds.microseconds. If start is not given (i.e., time
298 string is ',x.y') then analysis starts at the beginning of the file. If
299 stop time is not given (i.e, time string is 'x.y,') then analysis goes
300 to end of file.
301
288SEE ALSO 302SEE ALSO
289-------- 303--------
290linkperf:perf-record[1], linkperf:perf-script-perl[1], 304linkperf:perf-record[1], linkperf:perf-script-perl[1],
diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt
index 91d638df3a6b..e71d63843f45 100644
--- a/tools/perf/Documentation/perf-top.txt
+++ b/tools/perf/Documentation/perf-top.txt
@@ -170,6 +170,7 @@ Default is to monitor all CPUS.
170 show up in the output. The output will have a new "Children" column 170 show up in the output. The output will have a new "Children" column
171 and will be sorted on the data. It requires -g/--call-graph option 171 and will be sorted on the data. It requires -g/--call-graph option
172 enabled. See the `overhead calculation' section for more details. 172 enabled. See the `overhead calculation' section for more details.
173 Enabled by default, disable with --no-children.
173 174
174--max-stack:: 175--max-stack::
175 Set the stack depth limit when parsing the callchain, anything 176 Set the stack depth limit when parsing the callchain, anything
diff --git a/tools/perf/Documentation/perf-trace.txt b/tools/perf/Documentation/perf-trace.txt
index 1ab0782369b1..781b019751a4 100644
--- a/tools/perf/Documentation/perf-trace.txt
+++ b/tools/perf/Documentation/perf-trace.txt
@@ -39,6 +39,11 @@ OPTIONS
39 Prefixing with ! shows all syscalls but the ones specified. You may 39 Prefixing with ! shows all syscalls but the ones specified. You may
40 need to escape it. 40 need to escape it.
41 41
42-D msecs::
43--delay msecs::
44After starting the program, wait msecs before measuring. This is useful to
45filter out the startup phase of the program, which is often very different.
46
42-o:: 47-o::
43--output=:: 48--output=::
44 Output file name. 49 Output file name.
diff --git a/tools/perf/Documentation/perf.data-file-format.txt b/tools/perf/Documentation/perf.data-file-format.txt
index fdc99fe6bbc3..b664b18d3991 100644
--- a/tools/perf/Documentation/perf.data-file-format.txt
+++ b/tools/perf/Documentation/perf.data-file-format.txt
@@ -437,6 +437,10 @@ in pmu-tools parser. This allows to read perf.data from python and dump it.
437quipper 437quipper
438 438
439The quipper C++ parser is available at 439The quipper C++ parser is available at
440https://chromium.googlesource.com/chromiumos/platform/chromiumos-wide-profiling/ 440https://chromium.googlesource.com/chromiumos/platform2
441
442It is under the chromiumos-wide-profiling/ subdirectory. This library can
443convert a perf data file to a protobuf and vice versa.
444
441Unfortunately this parser tends to be many versions behind and may not be able 445Unfortunately this parser tends to be many versions behind and may not be able
442to parse data files generated by recent perf. 446to parse data files generated by recent perf.
diff --git a/tools/perf/Documentation/perfconfig.example b/tools/perf/Documentation/perfconfig.example
index 1d8d5bc4cd2d..2b477c1d1efe 100644
--- a/tools/perf/Documentation/perfconfig.example
+++ b/tools/perf/Documentation/perfconfig.example
@@ -27,3 +27,12 @@
27 use_offset = true 27 use_offset = true
28 jump_arrows = true 28 jump_arrows = true
29 show_nr_jumps = false 29 show_nr_jumps = false
30
31[report]
32
33 # Defaults
34 sort-order = comm,dso,symbol
35 percent-limit = 0
36 queue-size = 0
37 children = true
38 group = true
diff --git a/tools/perf/Documentation/tips.txt b/tools/perf/Documentation/tips.txt
index 5950b5a24efd..8a6479c0eac9 100644
--- a/tools/perf/Documentation/tips.txt
+++ b/tools/perf/Documentation/tips.txt
@@ -28,3 +28,7 @@ To change sampling frequency to 100 Hz: perf record -F 100
28See assembly instructions with percentage: perf annotate <symbol> 28See assembly instructions with percentage: perf annotate <symbol>
29If you prefer Intel style assembly, try: perf annotate -M intel 29If you prefer Intel style assembly, try: perf annotate -M intel
30For hierarchical output, try: perf report --hierarchy 30For hierarchical output, try: perf report --hierarchy
31Order by the overhead of source file name and line number: perf report -s srcline
32System-wide collection from all CPUs: perf record -a
33Show current config key-value pairs: perf config --list
34Show user configuration overrides: perf config --user --list
diff --git a/tools/perf/MANIFEST b/tools/perf/MANIFEST
index ad2534df4ba6..a511e5f31e36 100644
--- a/tools/perf/MANIFEST
+++ b/tools/perf/MANIFEST
@@ -51,6 +51,7 @@ tools/include/asm-generic/bitops/arch_hweight.h
51tools/include/asm-generic/bitops/atomic.h 51tools/include/asm-generic/bitops/atomic.h
52tools/include/asm-generic/bitops/const_hweight.h 52tools/include/asm-generic/bitops/const_hweight.h
53tools/include/asm-generic/bitops/__ffs.h 53tools/include/asm-generic/bitops/__ffs.h
54tools/include/asm-generic/bitops/__ffz.h
54tools/include/asm-generic/bitops/__fls.h 55tools/include/asm-generic/bitops/__fls.h
55tools/include/asm-generic/bitops/find.h 56tools/include/asm-generic/bitops/find.h
56tools/include/asm-generic/bitops/fls64.h 57tools/include/asm-generic/bitops/fls64.h
@@ -60,14 +61,18 @@ tools/include/asm-generic/bitops.h
60tools/include/linux/atomic.h 61tools/include/linux/atomic.h
61tools/include/linux/bitops.h 62tools/include/linux/bitops.h
62tools/include/linux/compiler.h 63tools/include/linux/compiler.h
64tools/include/linux/coresight-pmu.h
63tools/include/linux/filter.h 65tools/include/linux/filter.h
64tools/include/linux/hash.h 66tools/include/linux/hash.h
65tools/include/linux/kernel.h 67tools/include/linux/kernel.h
66tools/include/linux/list.h 68tools/include/linux/list.h
67tools/include/linux/log2.h 69tools/include/linux/log2.h
70tools/include/uapi/asm-generic/mman-common.h
71tools/include/uapi/asm-generic/mman.h
68tools/include/uapi/linux/bpf.h 72tools/include/uapi/linux/bpf.h
69tools/include/uapi/linux/bpf_common.h 73tools/include/uapi/linux/bpf_common.h
70tools/include/uapi/linux/hw_breakpoint.h 74tools/include/uapi/linux/hw_breakpoint.h
75tools/include/uapi/linux/mman.h
71tools/include/uapi/linux/perf_event.h 76tools/include/uapi/linux/perf_event.h
72tools/include/linux/poison.h 77tools/include/linux/poison.h
73tools/include/linux/rbtree.h 78tools/include/linux/rbtree.h
@@ -77,4 +82,6 @@ tools/include/linux/stringify.h
77tools/include/linux/types.h 82tools/include/linux/types.h
78tools/include/linux/err.h 83tools/include/linux/err.h
79tools/include/linux/bitmap.h 84tools/include/linux/bitmap.h
85tools/include/linux/time64.h
86tools/arch/*/include/uapi/asm/mman.h
80tools/arch/*/include/uapi/asm/perf_regs.h 87tools/arch/*/include/uapi/asm/perf_regs.h
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 24803c58049a..76c84f0eec52 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -136,6 +136,7 @@ endif
136# Treat warnings as errors unless directed not to 136# Treat warnings as errors unless directed not to
137ifneq ($(WERROR),0) 137ifneq ($(WERROR),0)
138 CFLAGS += -Werror 138 CFLAGS += -Werror
139 CXXFLAGS += -Werror
139endif 140endif
140 141
141ifndef DEBUG 142ifndef DEBUG
@@ -182,6 +183,13 @@ CFLAGS += -Wall
182CFLAGS += -Wextra 183CFLAGS += -Wextra
183CFLAGS += -std=gnu99 184CFLAGS += -std=gnu99
184 185
186CXXFLAGS += -std=gnu++11 -fno-exceptions -fno-rtti
187CXXFLAGS += -Wall
188CXXFLAGS += -fno-omit-frame-pointer
189CXXFLAGS += -ggdb3
190CXXFLAGS += -funwind-tables
191CXXFLAGS += -Wno-strict-aliasing
192
185# Enforce a non-executable stack, as we may regress (again) in the future by 193# Enforce a non-executable stack, as we may regress (again) in the future by
186# adding assembler files missing the .GNU-stack linker note. 194# adding assembler files missing the .GNU-stack linker note.
187LDFLAGS += -Wl,-z,noexecstack 195LDFLAGS += -Wl,-z,noexecstack
@@ -204,24 +212,27 @@ ifeq ($(DEBUG),0)
204 endif 212 endif
205endif 213endif
206 214
207CFLAGS += -I$(src-perf)/util/include 215INC_FLAGS += -I$(src-perf)/util/include
208CFLAGS += -I$(src-perf)/arch/$(ARCH)/include 216INC_FLAGS += -I$(src-perf)/arch/$(ARCH)/include
209CFLAGS += -I$(srctree)/tools/include/uapi 217INC_FLAGS += -I$(srctree)/tools/include/uapi
210CFLAGS += -I$(srctree)/tools/include/ 218INC_FLAGS += -I$(srctree)/tools/include/
211CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/uapi 219INC_FLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/uapi
212CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/ 220INC_FLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/
213CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/ 221INC_FLAGS += -I$(srctree)/tools/arch/$(ARCH)/
214 222
215# $(obj-perf) for generated common-cmds.h 223# $(obj-perf) for generated common-cmds.h
216# $(obj-perf)/util for generated bison/flex headers 224# $(obj-perf)/util for generated bison/flex headers
217ifneq ($(OUTPUT),) 225ifneq ($(OUTPUT),)
218CFLAGS += -I$(obj-perf)/util 226INC_FLAGS += -I$(obj-perf)/util
219CFLAGS += -I$(obj-perf) 227INC_FLAGS += -I$(obj-perf)
220endif 228endif
221 229
222CFLAGS += -I$(src-perf)/util 230INC_FLAGS += -I$(src-perf)/util
223CFLAGS += -I$(src-perf) 231INC_FLAGS += -I$(src-perf)
224CFLAGS += -I$(srctree)/tools/lib/ 232INC_FLAGS += -I$(srctree)/tools/lib/
233
234CFLAGS += $(INC_FLAGS)
235CXXFLAGS += $(INC_FLAGS)
225 236
226CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE 237CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
227 238
@@ -366,7 +377,7 @@ ifndef NO_SDT
366endif 377endif
367 378
368ifdef PERF_HAVE_JITDUMP 379ifdef PERF_HAVE_JITDUMP
369 ifndef NO_DWARF 380 ifndef NO_LIBELF
370 $(call detected,CONFIG_JITDUMP) 381 $(call detected,CONFIG_JITDUMP)
371 CFLAGS += -DHAVE_JITDUMP 382 CFLAGS += -DHAVE_JITDUMP
372 endif 383 endif
@@ -746,15 +757,74 @@ ifdef LIBBABELTRACE
746endif 757endif
747 758
748ifndef NO_AUXTRACE 759ifndef NO_AUXTRACE
749 ifeq ($(feature-get_cpuid), 0) 760 ifeq ($(ARCH),x86)
750 msg := $(warning Your gcc lacks the __get_cpuid() builtin, disables support for auxtrace/Intel PT, please install a newer gcc); 761 ifeq ($(feature-get_cpuid), 0)
751 NO_AUXTRACE := 1 762 msg := $(warning Your gcc lacks the __get_cpuid() builtin, disables support for auxtrace/Intel PT, please install a newer gcc);
752 else 763 NO_AUXTRACE := 1
764 endif
765 endif
766 ifndef NO_AUXTRACE
753 $(call detected,CONFIG_AUXTRACE) 767 $(call detected,CONFIG_AUXTRACE)
754 CFLAGS += -DHAVE_AUXTRACE_SUPPORT 768 CFLAGS += -DHAVE_AUXTRACE_SUPPORT
755 endif 769 endif
756endif 770endif
757 771
772ifndef NO_JVMTI
773 ifneq (,$(wildcard /usr/sbin/update-java-alternatives))
774 JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}')
775 else
776 ifneq (,$(wildcard /usr/sbin/alternatives))
777 JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g')
778 endif
779 endif
780 ifndef JDIR
781 $(warning No alternatives command found, you need to set JDIR= to point to the root of your Java directory)
782 NO_JVMTI := 1
783 endif
784endif
785
786ifndef NO_JVMTI
787 FEATURE_CHECK_CFLAGS-jvmti := -I$(JDIR)/include -I$(JDIR)/include/linux
788 $(call feature_check,jvmti)
789 ifeq ($(feature-jvmti), 1)
790 $(call detected_var,JDIR)
791 else
792 $(warning No openjdk development package found, please install JDK package)
793 NO_JVMTI := 1
794 endif
795endif
796
797USE_CXX = 0
798USE_CLANGLLVM = 0
799ifdef LIBCLANGLLVM
800 $(call feature_check,cxx)
801 ifneq ($(feature-cxx), 1)
802 msg := $(warning No g++ found, disable clang and llvm support. Please install g++)
803 else
804 $(call feature_check,llvm)
805 $(call feature_check,llvm-version)
806 ifneq ($(feature-llvm), 1)
807 msg := $(warning No suitable libLLVM found, disabling builtin clang and LLVM support. Please install llvm-dev(el) (>= 3.9.0))
808 else
809 $(call feature_check,clang)
810 ifneq ($(feature-clang), 1)
811 msg := $(warning No suitable libclang found, disabling builtin clang and LLVM support. Please install libclang-dev(el) (>= 3.9.0))
812 else
813 CFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT
814 CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir)
815 $(call detected,CONFIG_CXX)
816 $(call detected,CONFIG_CLANGLLVM)
817 USE_CXX = 1
818 USE_LLVM = 1
819 USE_CLANG = 1
820 ifneq ($(feature-llvm-version),1)
821 msg := $(warning This version of LLVM is not tested. May cause build errors)
822 endif
823 endif
824 endif
825 endif
826endif
827
758# Among the variables below, these: 828# Among the variables below, these:
759# perfexecdir 829# perfexecdir
760# template_dir 830# template_dir
@@ -847,6 +917,7 @@ ifeq ($(VF),1)
847 $(call print_var,sysconfdir) 917 $(call print_var,sysconfdir)
848 $(call print_var,LIBUNWIND_DIR) 918 $(call print_var,LIBUNWIND_DIR)
849 $(call print_var,LIBDW_DIR) 919 $(call print_var,LIBDW_DIR)
920 $(call print_var,JDIR)
850 921
851 ifeq ($(dwarf-post-unwind),1) 922 ifeq ($(dwarf-post-unwind),1)
852 $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) 923 $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 2d9087501633..8bb16aa9d661 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -86,6 +86,12 @@ include ../scripts/utilities.mak
86# 86#
87# Define FEATURES_DUMP to provide features detection dump file 87# Define FEATURES_DUMP to provide features detection dump file
88# and bypass the feature detection 88# and bypass the feature detection
89#
90# Define NO_JVMTI if you do not want jvmti agent built
91#
92# Define LIBCLANGLLVM if you DO want builtin clang and llvm support.
93# When selected, pass LLVM_CONFIG=/path/to/llvm-config to `make' if
94# llvm-config is not in $PATH.
89 95
90# As per kernel Makefile, avoid funny character set dependencies 96# As per kernel Makefile, avoid funny character set dependencies
91unexport LC_ALL 97unexport LC_ALL
@@ -94,7 +100,7 @@ LC_NUMERIC=C
94export LC_COLLATE LC_NUMERIC 100export LC_COLLATE LC_NUMERIC
95 101
96ifeq ($(srctree),) 102ifeq ($(srctree),)
97srctree := $(patsubst %/,%,$(dir $(shell pwd))) 103srctree := $(patsubst %/,%,$(dir $(CURDIR)))
98srctree := $(patsubst %/,%,$(dir $(srctree))) 104srctree := $(patsubst %/,%,$(dir $(srctree)))
99#$(info Determined 'srctree' to be $(srctree)) 105#$(info Determined 'srctree' to be $(srctree))
100endif 106endif
@@ -122,10 +128,6 @@ endif
122# (this improves performance and avoids hard-to-debug behaviour); 128# (this improves performance and avoids hard-to-debug behaviour);
123MAKEFLAGS += -r 129MAKEFLAGS += -r
124 130
125$(OUTPUT)PERF-VERSION-FILE: ../../.git/HEAD
126 $(Q)$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)
127 $(Q)touch $(OUTPUT)PERF-VERSION-FILE
128
129# Makefiles suck: This macro sets a default value of $(2) for the 131# Makefiles suck: This macro sets a default value of $(2) for the
130# variable named by $(1), unless the variable has been set by 132# variable named by $(1), unless the variable has been set by
131# environment or command line. This is necessary for CC and AR 133# environment or command line. This is necessary for CC and AR
@@ -141,10 +143,16 @@ endef
141$(call allow-override,CC,$(CROSS_COMPILE)gcc) 143$(call allow-override,CC,$(CROSS_COMPILE)gcc)
142$(call allow-override,AR,$(CROSS_COMPILE)ar) 144$(call allow-override,AR,$(CROSS_COMPILE)ar)
143$(call allow-override,LD,$(CROSS_COMPILE)ld) 145$(call allow-override,LD,$(CROSS_COMPILE)ld)
146$(call allow-override,CXX,$(CROSS_COMPILE)g++)
144 147
145LD += $(EXTRA_LDFLAGS) 148LD += $(EXTRA_LDFLAGS)
146 149
150HOSTCC ?= gcc
151HOSTLD ?= ld
152HOSTAR ?= ar
153
147PKG_CONFIG = $(CROSS_COMPILE)pkg-config 154PKG_CONFIG = $(CROSS_COMPILE)pkg-config
155LLVM_CONFIG ?= llvm-config
148 156
149RM = rm -f 157RM = rm -f
150LN = ln -f 158LN = ln -f
@@ -156,16 +164,11 @@ BISON = bison
156STRIP = strip 164STRIP = strip
157AWK = awk 165AWK = awk
158 166
159LIB_DIR = $(srctree)/tools/lib/api/
160TRACE_EVENT_DIR = $(srctree)/tools/lib/traceevent/
161BPF_DIR = $(srctree)/tools/lib/bpf/
162SUBCMD_DIR = $(srctree)/tools/lib/subcmd/
163
164# include Makefile.config by default and rule out 167# include Makefile.config by default and rule out
165# non-config cases 168# non-config cases
166config := 1 169config := 1
167 170
168NON_CONFIG_TARGETS := clean TAGS tags cscope help 171NON_CONFIG_TARGETS := clean TAGS tags cscope help install-doc install-man install-html install-info install-pdf doc man html info pdf
169 172
170ifdef MAKECMDGOALS 173ifdef MAKECMDGOALS
171ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),) 174ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
@@ -173,6 +176,41 @@ ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
173endif 176endif
174endif 177endif
175 178
179# The fixdep build - we force fixdep tool to be built as
180# the first target in the separate make session not to be
181# disturbed by any parallel make jobs. Once fixdep is done
182# we issue the requested build with FIXDEP=1 variable.
183#
184# The fixdep build is disabled for $(NON_CONFIG_TARGETS)
185# targets, because it's not necessary.
186
187ifdef FIXDEP
188 force_fixdep := 0
189else
190 force_fixdep := $(config)
191endif
192
193export srctree OUTPUT RM CC CXX LD AR CFLAGS CXXFLAGS V BISON FLEX AWK
194export HOSTCC HOSTLD HOSTAR
195
196include $(srctree)/tools/build/Makefile.include
197
198ifeq ($(force_fixdep),1)
199goals := $(filter-out all sub-make, $(MAKECMDGOALS))
200
201$(goals) all: sub-make
202
203sub-make: fixdep
204 @./check-headers.sh
205 $(Q)$(MAKE) FIXDEP=1 -f Makefile.perf $(goals)
206
207else # force_fixdep
208
209LIB_DIR = $(srctree)/tools/lib/api/
210TRACE_EVENT_DIR = $(srctree)/tools/lib/traceevent/
211BPF_DIR = $(srctree)/tools/lib/bpf/
212SUBCMD_DIR = $(srctree)/tools/lib/subcmd/
213
176# Set FEATURE_TESTS to 'all' so all possible feature checkers are executed. 214# Set FEATURE_TESTS to 'all' so all possible feature checkers are executed.
177# Without this setting the output feature dump file misses some features, for 215# Without this setting the output feature dump file misses some features, for
178# example, liberty. Select all checkers so we won't get an incomplete feature 216# example, liberty. Select all checkers so we won't get an incomplete feature
@@ -256,17 +294,6 @@ python-clean := $(call QUIET_CLEAN, python) $(RM) -r $(PYTHON_EXTBUILD) $(OUTPUT
256PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources) 294PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources)
257PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBAPI) 295PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBAPI)
258 296
259$(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) $(LIBTRACEEVENT_DYNAMIC_LIST)
260 $(QUIET_GEN)LDSHARED="$(CC) -pthread -shared" \
261 CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS)' \
262 $(PYTHON_WORD) util/setup.py \
263 --quiet build_ext; \
264 mkdir -p $(OUTPUT)python && \
265 cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/
266#
267# No Perl scripts right now:
268#
269
270SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) 297SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH))
271 298
272PROGRAMS += $(OUTPUT)perf 299PROGRAMS += $(OUTPUT)perf
@@ -279,6 +306,12 @@ ifndef NO_PERF_READ_VDSOX32
279PROGRAMS += $(OUTPUT)perf-read-vdsox32 306PROGRAMS += $(OUTPUT)perf-read-vdsox32
280endif 307endif
281 308
309LIBJVMTI = libperf-jvmti.so
310
311ifndef NO_JVMTI
312PROGRAMS += $(OUTPUT)$(LIBJVMTI)
313endif
314
282# what 'all' will build and 'install' will install, in perfexecdir 315# what 'all' will build and 'install' will install, in perfexecdir
283ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) 316ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
284 317
@@ -313,11 +346,6 @@ endif
313ifndef NO_GTK2 346ifndef NO_GTK2
314 ALL_PROGRAMS += $(OUTPUT)libperf-gtk.so 347 ALL_PROGRAMS += $(OUTPUT)libperf-gtk.so
315 GTK_IN := $(OUTPUT)gtk-in.o 348 GTK_IN := $(OUTPUT)gtk-in.o
316
317install-gtk: $(OUTPUT)libperf-gtk.so
318 $(call QUIET_INSTALL, 'GTK UI') \
319 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(libdir_SQ)'; \
320 $(INSTALL) $(OUTPUT)libperf-gtk.so '$(DESTDIR_SQ)$(libdir_SQ)'
321endif 349endif
322 350
323ifdef ASCIIDOC8 351ifdef ASCIIDOC8
@@ -326,6 +354,21 @@ endif
326 354
327LIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group 355LIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group
328 356
357ifeq ($(USE_CLANG), 1)
358 CLANGLIBS_LIST = AST Basic CodeGen Driver Frontend Lex Tooling Edit Sema Analysis Parse Serialization
359 LIBCLANG = $(foreach l,$(CLANGLIBS_LIST),$(wildcard $(shell $(LLVM_CONFIG) --libdir)/libclang$(l).a))
360 LIBS += -Wl,--start-group $(LIBCLANG) -Wl,--end-group
361endif
362
363ifeq ($(USE_LLVM), 1)
364 LIBLLVM = $(shell $(LLVM_CONFIG) --libs all) $(shell $(LLVM_CONFIG) --system-libs)
365 LIBS += -L$(shell $(LLVM_CONFIG) --libdir) $(LIBLLVM)
366endif
367
368ifeq ($(USE_CXX), 1)
369 LIBS += -lstdc++
370endif
371
329export INSTALL SHELL_PATH 372export INSTALL SHELL_PATH
330 373
331### Build rules 374### Build rules
@@ -334,6 +377,14 @@ SHELL = $(SHELL_PATH)
334 377
335all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS) 378all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS)
336 379
380$(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) $(LIBTRACEEVENT_DYNAMIC_LIST)
381 $(QUIET_GEN)LDSHARED="$(CC) -pthread -shared" \
382 CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS)' \
383 $(PYTHON_WORD) util/setup.py \
384 --quiet build_ext; \
385 mkdir -p $(OUTPUT)python && \
386 cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/
387
337please_set_SHELL_PATH_to_a_more_modern_shell: 388please_set_SHELL_PATH_to_a_more_modern_shell:
338 $(Q)$$(:) 389 $(Q)$$(:)
339 390
@@ -344,98 +395,32 @@ strip: $(PROGRAMS) $(OUTPUT)perf
344 395
345PERF_IN := $(OUTPUT)perf-in.o 396PERF_IN := $(OUTPUT)perf-in.o
346 397
347export srctree OUTPUT RM CC LD AR CFLAGS V BISON FLEX AWK 398JEVENTS := $(OUTPUT)pmu-events/jevents
348include $(srctree)/tools/build/Makefile.include 399JEVENTS_IN := $(OUTPUT)pmu-events/jevents-in.o
400
401PMU_EVENTS_IN := $(OUTPUT)pmu-events/pmu-events-in.o
402
403export JEVENTS
404
405build := -f $(srctree)/tools/build/Makefile.build dir=. obj
349 406
350$(PERF_IN): prepare FORCE 407$(PERF_IN): prepare FORCE
351 @(test -f ../../include/uapi/linux/perf_event.h && ( \
352 (diff -B ../include/uapi/linux/perf_event.h ../../include/uapi/linux/perf_event.h >/dev/null) \
353 || echo "Warning: tools/include/uapi/linux/perf_event.h differs from kernel" >&2 )) || true
354 @(test -f ../../include/linux/hash.h && ( \
355 (diff -B ../include/linux/hash.h ../../include/linux/hash.h >/dev/null) \
356 || echo "Warning: tools/include/linux/hash.h differs from kernel" >&2 )) || true
357 @(test -f ../../include/uapi/linux/hw_breakpoint.h && ( \
358 (diff -B ../include/uapi/linux/hw_breakpoint.h ../../include/uapi/linux/hw_breakpoint.h >/dev/null) \
359 || echo "Warning: tools/include/uapi/linux/hw_breakpoint.h differs from kernel" >&2 )) || true
360 @(test -f ../../arch/x86/include/asm/disabled-features.h && ( \
361 (diff -B ../arch/x86/include/asm/disabled-features.h ../../arch/x86/include/asm/disabled-features.h >/dev/null) \
362 || echo "Warning: tools/arch/x86/include/asm/disabled-features.h differs from kernel" >&2 )) || true
363 @(test -f ../../arch/x86/include/asm/required-features.h && ( \
364 (diff -B ../arch/x86/include/asm/required-features.h ../../arch/x86/include/asm/required-features.h >/dev/null) \
365 || echo "Warning: tools/arch/x86/include/asm/required-features.h differs from kernel" >&2 )) || true
366 @(test -f ../../arch/x86/include/asm/cpufeatures.h && ( \
367 (diff -B ../arch/x86/include/asm/cpufeatures.h ../../arch/x86/include/asm/cpufeatures.h >/dev/null) \
368 || echo "Warning: tools/arch/x86/include/asm/cpufeatures.h differs from kernel" >&2 )) || true
369 @(test -f ../../arch/x86/lib/memcpy_64.S && ( \
370 (diff -B ../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memcpy_64.S >/dev/null) \
371 || echo "Warning: tools/arch/x86/lib/memcpy_64.S differs from kernel" >&2 )) || true
372 @(test -f ../../arch/x86/lib/memset_64.S && ( \
373 (diff -B ../arch/x86/lib/memset_64.S ../../arch/x86/lib/memset_64.S >/dev/null) \
374 || echo "Warning: tools/arch/x86/lib/memset_64.S differs from kernel" >&2 )) || true
375 @(test -f ../../arch/arm/include/uapi/asm/perf_regs.h && ( \
376 (diff -B ../arch/arm/include/uapi/asm/perf_regs.h ../../arch/arm/include/uapi/asm/perf_regs.h >/dev/null) \
377 || echo "Warning: tools/arch/arm/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
378 @(test -f ../../arch/arm64/include/uapi/asm/perf_regs.h && ( \
379 (diff -B ../arch/arm64/include/uapi/asm/perf_regs.h ../../arch/arm64/include/uapi/asm/perf_regs.h >/dev/null) \
380 || echo "Warning: tools/arch/arm64/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
381 @(test -f ../../arch/powerpc/include/uapi/asm/perf_regs.h && ( \
382 (diff -B ../arch/powerpc/include/uapi/asm/perf_regs.h ../../arch/powerpc/include/uapi/asm/perf_regs.h >/dev/null) \
383 || echo "Warning: tools/arch/powerpc/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
384 @(test -f ../../arch/x86/include/uapi/asm/perf_regs.h && ( \
385 (diff -B ../arch/x86/include/uapi/asm/perf_regs.h ../../arch/x86/include/uapi/asm/perf_regs.h >/dev/null) \
386 || echo "Warning: tools/arch/x86/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
387 @(test -f ../../arch/x86/include/uapi/asm/kvm.h && ( \
388 (diff -B ../arch/x86/include/uapi/asm/kvm.h ../../arch/x86/include/uapi/asm/kvm.h >/dev/null) \
389 || echo "Warning: tools/arch/x86/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
390 @(test -f ../../arch/x86/include/uapi/asm/kvm_perf.h && ( \
391 (diff -B ../arch/x86/include/uapi/asm/kvm_perf.h ../../arch/x86/include/uapi/asm/kvm_perf.h >/dev/null) \
392 || echo "Warning: tools/arch/x86/include/uapi/asm/kvm_perf.h differs from kernel" >&2 )) || true
393 @(test -f ../../arch/x86/include/uapi/asm/svm.h && ( \
394 (diff -B ../arch/x86/include/uapi/asm/svm.h ../../arch/x86/include/uapi/asm/svm.h >/dev/null) \
395 || echo "Warning: tools/arch/x86/include/uapi/asm/svm.h differs from kernel" >&2 )) || true
396 @(test -f ../../arch/x86/include/uapi/asm/vmx.h && ( \
397 (diff -B ../arch/x86/include/uapi/asm/vmx.h ../../arch/x86/include/uapi/asm/vmx.h >/dev/null) \
398 || echo "Warning: tools/arch/x86/include/uapi/asm/vmx.h differs from kernel" >&2 )) || true
399 @(test -f ../../arch/powerpc/include/uapi/asm/kvm.h && ( \
400 (diff -B ../arch/powerpc/include/uapi/asm/kvm.h ../../arch/powerpc/include/uapi/asm/kvm.h >/dev/null) \
401 || echo "Warning: tools/arch/powerpc/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
402 @(test -f ../../arch/s390/include/uapi/asm/kvm.h && ( \
403 (diff -B ../arch/s390/include/uapi/asm/kvm.h ../../arch/s390/include/uapi/asm/kvm.h >/dev/null) \
404 || echo "Warning: tools/arch/s390/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
405 @(test -f ../../arch/s390/include/uapi/asm/kvm_perf.h && ( \
406 (diff -B ../arch/s390/include/uapi/asm/kvm_perf.h ../../arch/s390/include/uapi/asm/kvm_perf.h >/dev/null) \
407 || echo "Warning: tools/arch/s390/include/uapi/asm/kvm_perf.h differs from kernel" >&2 )) || true
408 @(test -f ../../arch/s390/include/uapi/asm/sie.h && ( \
409 (diff -B ../arch/s390/include/uapi/asm/sie.h ../../arch/s390/include/uapi/asm/sie.h >/dev/null) \
410 || echo "Warning: tools/arch/s390/include/uapi/asm/sie.h differs from kernel" >&2 )) || true
411 @(test -f ../../arch/arm/include/uapi/asm/kvm.h && ( \
412 (diff -B ../arch/arm/include/uapi/asm/kvm.h ../../arch/arm/include/uapi/asm/kvm.h >/dev/null) \
413 || echo "Warning: tools/arch/arm/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
414 @(test -f ../../arch/arm64/include/uapi/asm/kvm.h && ( \
415 (diff -B ../arch/arm64/include/uapi/asm/kvm.h ../../arch/arm64/include/uapi/asm/kvm.h >/dev/null) \
416 || echo "Warning: tools/arch/arm64/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
417 @(test -f ../../include/asm-generic/bitops/arch_hweight.h && ( \
418 (diff -B ../include/asm-generic/bitops/arch_hweight.h ../../include/asm-generic/bitops/arch_hweight.h >/dev/null) \
419 || echo "Warning: tools/include/asm-generic/bitops/arch_hweight.h differs from kernel" >&2 )) || true
420 @(test -f ../../include/asm-generic/bitops/const_hweight.h && ( \
421 (diff -B ../include/asm-generic/bitops/const_hweight.h ../../include/asm-generic/bitops/const_hweight.h >/dev/null) \
422 || echo "Warning: tools/include/asm-generic/bitops/const_hweight.h differs from kernel" >&2 )) || true
423 @(test -f ../../include/asm-generic/bitops/__fls.h && ( \
424 (diff -B ../include/asm-generic/bitops/__fls.h ../../include/asm-generic/bitops/__fls.h >/dev/null) \
425 || echo "Warning: tools/include/asm-generic/bitops/__fls.h differs from kernel" >&2 )) || true
426 @(test -f ../../include/asm-generic/bitops/fls.h && ( \
427 (diff -B ../include/asm-generic/bitops/fls.h ../../include/asm-generic/bitops/fls.h >/dev/null) \
428 || echo "Warning: tools/include/asm-generic/bitops/fls.h differs from kernel" >&2 )) || true
429 @(test -f ../../include/asm-generic/bitops/fls64.h && ( \
430 (diff -B ../include/asm-generic/bitops/fls64.h ../../include/asm-generic/bitops/fls64.h >/dev/null) \
431 || echo "Warning: tools/include/asm-generic/bitops/fls64.h differs from kernel" >&2 )) || true
432 $(Q)$(MAKE) $(build)=perf 408 $(Q)$(MAKE) $(build)=perf
433 409
434$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(LIBTRACEEVENT_DYNAMIC_LIST) 410$(JEVENTS_IN): FORCE
411 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=pmu-events obj=jevents
412
413$(JEVENTS): $(JEVENTS_IN)
414 $(QUIET_LINK)$(HOSTCC) $(JEVENTS_IN) -o $@
415
416$(PMU_EVENTS_IN): $(JEVENTS) FORCE
417 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=pmu-events obj=pmu-events
418
419$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(PMU_EVENTS_IN) $(LIBTRACEEVENT_DYNAMIC_LIST)
435 $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS) \ 420 $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS) \
436 $(PERF_IN) $(LIBS) -o $@ 421 $(PERF_IN) $(PMU_EVENTS_IN) $(LIBS) -o $@
437 422
438$(GTK_IN): fixdep FORCE 423$(GTK_IN): FORCE
439 $(Q)$(MAKE) $(build)=gtk 424 $(Q)$(MAKE) $(build)=gtk
440 425
441$(OUTPUT)libperf-gtk.so: $(GTK_IN) $(PERFLIBS) 426$(OUTPUT)libperf-gtk.so: $(GTK_IN) $(PERFLIBS)
@@ -449,6 +434,10 @@ $(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt)
449$(SCRIPTS) : % : %.sh 434$(SCRIPTS) : % : %.sh
450 $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@' 435 $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@'
451 436
437$(OUTPUT)PERF-VERSION-FILE: ../../.git/HEAD
438 $(Q)$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)
439 $(Q)touch $(OUTPUT)PERF-VERSION-FILE
440
452# These can record PERF_VERSION 441# These can record PERF_VERSION
453perf.spec $(SCRIPTS) \ 442perf.spec $(SCRIPTS) \
454 : $(OUTPUT)PERF-VERSION-FILE 443 : $(OUTPUT)PERF-VERSION-FILE
@@ -462,6 +451,8 @@ perf.spec $(SCRIPTS) \
462ifneq ($(OUTPUT),) 451ifneq ($(OUTPUT),)
463%.o: $(OUTPUT)%.o 452%.o: $(OUTPUT)%.o
464 @echo " # Redirected target $@ => $(OUTPUT)$@" 453 @echo " # Redirected target $@ => $(OUTPUT)$@"
454pmu-events/%.o: $(OUTPUT)pmu-events/%.o
455 @echo " # Redirected target $@ => $(OUTPUT)$@"
465util/%.o: $(OUTPUT)util/%.o 456util/%.o: $(OUTPUT)util/%.o
466 @echo " # Redirected target $@ => $(OUTPUT)$@" 457 @echo " # Redirected target $@ => $(OUTPUT)$@"
467bench/%.o: $(OUTPUT)bench/%.o 458bench/%.o: $(OUTPUT)bench/%.o
@@ -478,7 +469,7 @@ endif
478__build-dir = $(subst $(OUTPUT),,$(dir $@)) 469__build-dir = $(subst $(OUTPUT),,$(dir $@))
479build-dir = $(if $(__build-dir),$(__build-dir),.) 470build-dir = $(if $(__build-dir),$(__build-dir),.)
480 471
481prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h fixdep archheaders 472prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h archheaders
482 473
483$(OUTPUT)%.o: %.c prepare FORCE 474$(OUTPUT)%.o: %.c prepare FORCE
484 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@ 475 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@
@@ -514,11 +505,21 @@ $(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-vdso-map.c
514 $(QUIET_CC)$(CC) -mx32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c 505 $(QUIET_CC)$(CC) -mx32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
515endif 506endif
516 507
508ifndef NO_JVMTI
509LIBJVMTI_IN := $(OUTPUT)jvmti/jvmti-in.o
510
511$(LIBJVMTI_IN): FORCE
512 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=jvmti obj=jvmti
513
514$(OUTPUT)$(LIBJVMTI): $(LIBJVMTI_IN)
515 $(QUIET_LINK)$(CC) -shared -Wl,-soname -Wl,$(LIBJVMTI) -o $@ $< -lelf -lrt
516endif
517
517$(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h) 518$(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h)
518 519
519LIBPERF_IN := $(OUTPUT)libperf-in.o 520LIBPERF_IN := $(OUTPUT)libperf-in.o
520 521
521$(LIBPERF_IN): prepare fixdep FORCE 522$(LIBPERF_IN): prepare FORCE
522 $(Q)$(MAKE) $(build)=libperf 523 $(Q)$(MAKE) $(build)=libperf
523 524
524$(LIB_FILE): $(LIBPERF_IN) 525$(LIB_FILE): $(LIBPERF_IN)
@@ -526,10 +527,10 @@ $(LIB_FILE): $(LIBPERF_IN)
526 527
527LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ) 528LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ)
528 529
529$(LIBTRACEEVENT): fixdep FORCE 530$(LIBTRACEEVENT): FORCE
530 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a 531 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a
531 532
532libtraceevent_plugins: fixdep FORCE 533libtraceevent_plugins: FORCE
533 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins 534 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins
534 535
535$(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins 536$(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins
@@ -542,21 +543,21 @@ $(LIBTRACEEVENT)-clean:
542install-traceevent-plugins: libtraceevent_plugins 543install-traceevent-plugins: libtraceevent_plugins
543 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) install_plugins 544 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) install_plugins
544 545
545$(LIBAPI): fixdep FORCE 546$(LIBAPI): FORCE
546 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) $(OUTPUT)libapi.a 547 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) $(OUTPUT)libapi.a
547 548
548$(LIBAPI)-clean: 549$(LIBAPI)-clean:
549 $(call QUIET_CLEAN, libapi) 550 $(call QUIET_CLEAN, libapi)
550 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) clean >/dev/null 551 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) clean >/dev/null
551 552
552$(LIBBPF): fixdep FORCE 553$(LIBBPF): FORCE
553 $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT) 554 $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT)
554 555
555$(LIBBPF)-clean: 556$(LIBBPF)-clean:
556 $(call QUIET_CLEAN, libbpf) 557 $(call QUIET_CLEAN, libbpf)
557 $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) clean >/dev/null 558 $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) clean >/dev/null
558 559
559$(LIBSUBCMD): fixdep FORCE 560$(LIBSUBCMD): FORCE
560 $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) $(OUTPUT)libsubcmd.a 561 $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) $(OUTPUT)libsubcmd.a
561 562
562$(LIBSUBCMD)-clean: 563$(LIBSUBCMD)-clean:
@@ -636,7 +637,14 @@ check: $(OUTPUT)common-cmds.h
636 637
637### Installation rules 638### Installation rules
638 639
640ifndef NO_GTK2
641install-gtk: $(OUTPUT)libperf-gtk.so
642 $(call QUIET_INSTALL, 'GTK UI') \
643 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(libdir_SQ)'; \
644 $(INSTALL) $(OUTPUT)libperf-gtk.so '$(DESTDIR_SQ)$(libdir_SQ)'
645else
639install-gtk: 646install-gtk:
647endif
640 648
641install-tools: all install-gtk 649install-tools: all install-gtk
642 $(call QUIET_INSTALL, binaries) \ 650 $(call QUIET_INSTALL, binaries) \
@@ -651,6 +659,10 @@ ifndef NO_PERF_READ_VDSOX32
651 $(call QUIET_INSTALL, perf-read-vdsox32) \ 659 $(call QUIET_INSTALL, perf-read-vdsox32) \
652 $(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(bindir_SQ)'; 660 $(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(bindir_SQ)';
653endif 661endif
662ifndef NO_JVMTI
663 $(call QUIET_INSTALL, $(LIBJVMTI)) \
664 $(INSTALL) $(OUTPUT)$(LIBJVMTI) '$(DESTDIR_SQ)$(libdir_SQ)';
665endif
654 $(call QUIET_INSTALL, libexec) \ 666 $(call QUIET_INSTALL, libexec) \
655 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' 667 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
656 $(call QUIET_INSTALL, perf-archive) \ 668 $(call QUIET_INSTALL, perf-archive) \
@@ -692,9 +704,9 @@ install-tests: all install-gtk
692 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \ 704 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \
693 $(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr' 705 $(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'
694 706
695install-bin: install-tools install-tests 707install-bin: install-tools install-tests install-traceevent-plugins
696 708
697install: install-bin try-install-man install-traceevent-plugins 709install: install-bin try-install-man
698 710
699install-python_ext: 711install-python_ext:
700 $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)' 712 $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
@@ -717,10 +729,11 @@ clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clea
717 $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) 729 $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
718 $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete 730 $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
719 $(Q)$(RM) $(OUTPUT).config-detected 731 $(Q)$(RM) $(OUTPUT).config-detected
720 $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 732 $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents $(OUTPUT)$(LIBJVMTI).so
721 $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \ 733 $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
722 $(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \ 734 $(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \
723 $(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c 735 $(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \
736 $(OUTPUT)pmu-events/pmu-events.c
724 $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean 737 $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
725 $(python-clean) 738 $(python-clean)
726 739
@@ -752,3 +765,4 @@ FORCE:
752.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare 765.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare
753.PHONY: libtraceevent_plugins archheaders 766.PHONY: libtraceevent_plugins archheaders
754 767
768endif # force_fixdep
diff --git a/tools/perf/arch/arm/annotate/instructions.c b/tools/perf/arch/arm/annotate/instructions.c
new file mode 100644
index 000000000000..1ce0872b1726
--- /dev/null
+++ b/tools/perf/arch/arm/annotate/instructions.c
@@ -0,0 +1,59 @@
1#include <sys/types.h>
2#include <regex.h>
3
4struct arm_annotate {
5 regex_t call_insn,
6 jump_insn;
7};
8
9static struct ins_ops *arm__associate_instruction_ops(struct arch *arch, const char *name)
10{
11 struct arm_annotate *arm = arch->priv;
12 struct ins_ops *ops;
13 regmatch_t match[2];
14
15 if (!regexec(&arm->call_insn, name, 2, match, 0))
16 ops = &call_ops;
17 else if (!regexec(&arm->jump_insn, name, 2, match, 0))
18 ops = &jump_ops;
19 else
20 return NULL;
21
22 arch__associate_ins_ops(arch, name, ops);
23 return ops;
24}
25
26static int arm__annotate_init(struct arch *arch)
27{
28 struct arm_annotate *arm;
29 int err;
30
31 if (arch->initialized)
32 return 0;
33
34 arm = zalloc(sizeof(*arm));
35 if (!arm)
36 return -1;
37
38#define ARM_CONDS "(cc|cs|eq|ge|gt|hi|le|ls|lt|mi|ne|pl|vc|vs)"
39 err = regcomp(&arm->call_insn, "^blx?" ARM_CONDS "?$", REG_EXTENDED);
40 if (err)
41 goto out_free_arm;
42 err = regcomp(&arm->jump_insn, "^bx?" ARM_CONDS "?$", REG_EXTENDED);
43 if (err)
44 goto out_free_call;
45#undef ARM_CONDS
46
47 arch->initialized = true;
48 arch->priv = arm;
49 arch->associate_instruction_ops = arm__associate_instruction_ops;
50 arch->objdump.comment_char = ';';
51 arch->objdump.skip_functions_char = '+';
52 return 0;
53
54out_free_call:
55 regfree(&arm->call_insn);
56out_free_arm:
57 free(arm);
58 return -1;
59}
diff --git a/tools/perf/arch/arm/include/dwarf-regs-table.h b/tools/perf/arch/arm/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..f298d034c37b
--- /dev/null
+++ b/tools/perf/arch/arm/include/dwarf-regs-table.h
@@ -0,0 +1,9 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4static const char * const arm_regstr_tbl[] = {
5 "%r0", "%r1", "%r2", "%r3", "%r4",
6 "%r5", "%r6", "%r7", "%r8", "%r9", "%r10",
7 "%fp", "%ip", "%sp", "%lr", "%pc",
8};
9#endif
diff --git a/tools/perf/arch/arm/util/Build b/tools/perf/arch/arm/util/Build
index f98da17357c0..e64c5f216448 100644
--- a/tools/perf/arch/arm/util/Build
+++ b/tools/perf/arch/arm/util/Build
@@ -2,3 +2,5 @@ libperf-$(CONFIG_DWARF) += dwarf-regs.o
2 2
3libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o 3libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o
4libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o 4libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o
5
6libperf-$(CONFIG_AUXTRACE) += pmu.o auxtrace.o cs-etm.o
diff --git a/tools/perf/arch/arm/util/auxtrace.c b/tools/perf/arch/arm/util/auxtrace.c
new file mode 100644
index 000000000000..8edf2cb71564
--- /dev/null
+++ b/tools/perf/arch/arm/util/auxtrace.c
@@ -0,0 +1,54 @@
1/*
2 * Copyright(C) 2015 Linaro Limited. All rights reserved.
3 * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published by
7 * the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include <stdbool.h>
19#include <linux/coresight-pmu.h>
20
21#include "../../util/auxtrace.h"
22#include "../../util/evlist.h"
23#include "../../util/pmu.h"
24#include "cs-etm.h"
25
26struct auxtrace_record
27*auxtrace_record__init(struct perf_evlist *evlist, int *err)
28{
29 struct perf_pmu *cs_etm_pmu;
30 struct perf_evsel *evsel;
31 bool found_etm = false;
32
33 cs_etm_pmu = perf_pmu__find(CORESIGHT_ETM_PMU_NAME);
34
35 if (evlist) {
36 evlist__for_each_entry(evlist, evsel) {
37 if (cs_etm_pmu &&
38 evsel->attr.type == cs_etm_pmu->type)
39 found_etm = true;
40 }
41 }
42
43 if (found_etm)
44 return cs_etm_record_init(err);
45
46 /*
47 * Clear 'err' even if we haven't found a cs_etm event - that way perf
48 * record can still be used even if tracers aren't present. The NULL
49 * return value will take care of telling the infrastructure HW tracing
50 * isn't available.
51 */
52 *err = 0;
53 return NULL;
54}
diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
new file mode 100644
index 000000000000..dfea6b635525
--- /dev/null
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -0,0 +1,615 @@
1/*
2 * Copyright(C) 2015 Linaro Limited. All rights reserved.
3 * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published by
7 * the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include <api/fs/fs.h>
19#include <linux/bitops.h>
20#include <linux/coresight-pmu.h>
21#include <linux/kernel.h>
22#include <linux/log2.h>
23#include <linux/types.h>
24
25#include "cs-etm.h"
26#include "../../perf.h"
27#include "../../util/auxtrace.h"
28#include "../../util/cpumap.h"
29#include "../../util/evlist.h"
30#include "../../util/evsel.h"
31#include "../../util/pmu.h"
32#include "../../util/thread_map.h"
33#include "../../util/cs-etm.h"
34
35#include <stdlib.h>
36
37#define ENABLE_SINK_MAX 128
38#define CS_BUS_DEVICE_PATH "/bus/coresight/devices/"
39
40struct cs_etm_recording {
41 struct auxtrace_record itr;
42 struct perf_pmu *cs_etm_pmu;
43 struct perf_evlist *evlist;
44 bool snapshot_mode;
45 size_t snapshot_size;
46};
47
48static bool cs_etm_is_etmv4(struct auxtrace_record *itr, int cpu);
49
50static int cs_etm_parse_snapshot_options(struct auxtrace_record *itr,
51 struct record_opts *opts,
52 const char *str)
53{
54 struct cs_etm_recording *ptr =
55 container_of(itr, struct cs_etm_recording, itr);
56 unsigned long long snapshot_size = 0;
57 char *endptr;
58
59 if (str) {
60 snapshot_size = strtoull(str, &endptr, 0);
61 if (*endptr || snapshot_size > SIZE_MAX)
62 return -1;
63 }
64
65 opts->auxtrace_snapshot_mode = true;
66 opts->auxtrace_snapshot_size = snapshot_size;
67 ptr->snapshot_size = snapshot_size;
68
69 return 0;
70}
71
72static int cs_etm_recording_options(struct auxtrace_record *itr,
73 struct perf_evlist *evlist,
74 struct record_opts *opts)
75{
76 struct cs_etm_recording *ptr =
77 container_of(itr, struct cs_etm_recording, itr);
78 struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
79 struct perf_evsel *evsel, *cs_etm_evsel = NULL;
80 const struct cpu_map *cpus = evlist->cpus;
81 bool privileged = (geteuid() == 0 || perf_event_paranoid() < 0);
82
83 ptr->evlist = evlist;
84 ptr->snapshot_mode = opts->auxtrace_snapshot_mode;
85
86 evlist__for_each_entry(evlist, evsel) {
87 if (evsel->attr.type == cs_etm_pmu->type) {
88 if (cs_etm_evsel) {
89 pr_err("There may be only one %s event\n",
90 CORESIGHT_ETM_PMU_NAME);
91 return -EINVAL;
92 }
93 evsel->attr.freq = 0;
94 evsel->attr.sample_period = 1;
95 cs_etm_evsel = evsel;
96 opts->full_auxtrace = true;
97 }
98 }
99
100 /* no need to continue if at least one event of interest was found */
101 if (!cs_etm_evsel)
102 return 0;
103
104 if (opts->use_clockid) {
105 pr_err("Cannot use clockid (-k option) with %s\n",
106 CORESIGHT_ETM_PMU_NAME);
107 return -EINVAL;
108 }
109
110 /* we are in snapshot mode */
111 if (opts->auxtrace_snapshot_mode) {
112 /*
113 * No size were given to '-S' or '-m,', so go with
114 * the default
115 */
116 if (!opts->auxtrace_snapshot_size &&
117 !opts->auxtrace_mmap_pages) {
118 if (privileged) {
119 opts->auxtrace_mmap_pages = MiB(4) / page_size;
120 } else {
121 opts->auxtrace_mmap_pages =
122 KiB(128) / page_size;
123 if (opts->mmap_pages == UINT_MAX)
124 opts->mmap_pages = KiB(256) / page_size;
125 }
126 } else if (!opts->auxtrace_mmap_pages && !privileged &&
127 opts->mmap_pages == UINT_MAX) {
128 opts->mmap_pages = KiB(256) / page_size;
129 }
130
131 /*
132 * '-m,xyz' was specified but no snapshot size, so make the
133 * snapshot size as big as the auxtrace mmap area.
134 */
135 if (!opts->auxtrace_snapshot_size) {
136 opts->auxtrace_snapshot_size =
137 opts->auxtrace_mmap_pages * (size_t)page_size;
138 }
139
140 /*
141 * -Sxyz was specified but no auxtrace mmap area, so make the
142 * auxtrace mmap area big enough to fit the requested snapshot
143 * size.
144 */
145 if (!opts->auxtrace_mmap_pages) {
146 size_t sz = opts->auxtrace_snapshot_size;
147
148 sz = round_up(sz, page_size) / page_size;
149 opts->auxtrace_mmap_pages = roundup_pow_of_two(sz);
150 }
151
152 /* Snapshost size can't be bigger than the auxtrace area */
153 if (opts->auxtrace_snapshot_size >
154 opts->auxtrace_mmap_pages * (size_t)page_size) {
155 pr_err("Snapshot size %zu must not be greater than AUX area tracing mmap size %zu\n",
156 opts->auxtrace_snapshot_size,
157 opts->auxtrace_mmap_pages * (size_t)page_size);
158 return -EINVAL;
159 }
160
161 /* Something went wrong somewhere - this shouldn't happen */
162 if (!opts->auxtrace_snapshot_size ||
163 !opts->auxtrace_mmap_pages) {
164 pr_err("Failed to calculate default snapshot size and/or AUX area tracing mmap pages\n");
165 return -EINVAL;
166 }
167 }
168
169 /* We are in full trace mode but '-m,xyz' wasn't specified */
170 if (opts->full_auxtrace && !opts->auxtrace_mmap_pages) {
171 if (privileged) {
172 opts->auxtrace_mmap_pages = MiB(4) / page_size;
173 } else {
174 opts->auxtrace_mmap_pages = KiB(128) / page_size;
175 if (opts->mmap_pages == UINT_MAX)
176 opts->mmap_pages = KiB(256) / page_size;
177 }
178
179 }
180
181 /* Validate auxtrace_mmap_pages provided by user */
182 if (opts->auxtrace_mmap_pages) {
183 unsigned int max_page = (KiB(128) / page_size);
184 size_t sz = opts->auxtrace_mmap_pages * (size_t)page_size;
185
186 if (!privileged &&
187 opts->auxtrace_mmap_pages > max_page) {
188 opts->auxtrace_mmap_pages = max_page;
189 pr_err("auxtrace too big, truncating to %d\n",
190 max_page);
191 }
192
193 if (!is_power_of_2(sz)) {
194 pr_err("Invalid mmap size for %s: must be a power of 2\n",
195 CORESIGHT_ETM_PMU_NAME);
196 return -EINVAL;
197 }
198 }
199
200 if (opts->auxtrace_snapshot_mode)
201 pr_debug2("%s snapshot size: %zu\n", CORESIGHT_ETM_PMU_NAME,
202 opts->auxtrace_snapshot_size);
203
204 if (cs_etm_evsel) {
205 /*
206 * To obtain the auxtrace buffer file descriptor, the auxtrace
207 * event must come first.
208 */
209 perf_evlist__to_front(evlist, cs_etm_evsel);
210 /*
211 * In the case of per-cpu mmaps, we need the CPU on the
212 * AUX event.
213 */
214 if (!cpu_map__empty(cpus))
215 perf_evsel__set_sample_bit(cs_etm_evsel, CPU);
216 }
217
218 /* Add dummy event to keep tracking */
219 if (opts->full_auxtrace) {
220 struct perf_evsel *tracking_evsel;
221 int err;
222
223 err = parse_events(evlist, "dummy:u", NULL);
224 if (err)
225 return err;
226
227 tracking_evsel = perf_evlist__last(evlist);
228 perf_evlist__set_tracking_event(evlist, tracking_evsel);
229
230 tracking_evsel->attr.freq = 0;
231 tracking_evsel->attr.sample_period = 1;
232
233 /* In per-cpu case, always need the time of mmap events etc */
234 if (!cpu_map__empty(cpus))
235 perf_evsel__set_sample_bit(tracking_evsel, TIME);
236 }
237
238 return 0;
239}
240
241static u64 cs_etm_get_config(struct auxtrace_record *itr)
242{
243 u64 config = 0;
244 struct cs_etm_recording *ptr =
245 container_of(itr, struct cs_etm_recording, itr);
246 struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
247 struct perf_evlist *evlist = ptr->evlist;
248 struct perf_evsel *evsel;
249
250 evlist__for_each_entry(evlist, evsel) {
251 if (evsel->attr.type == cs_etm_pmu->type) {
252 /*
253 * Variable perf_event_attr::config is assigned to
254 * ETMv3/PTM. The bit fields have been made to match
255 * the ETMv3.5 ETRMCR register specification. See the
256 * PMU_FORMAT_ATTR() declarations in
257 * drivers/hwtracing/coresight/coresight-perf.c for
258 * details.
259 */
260 config = evsel->attr.config;
261 break;
262 }
263 }
264
265 return config;
266}
267
268static size_t
269cs_etm_info_priv_size(struct auxtrace_record *itr __maybe_unused,
270 struct perf_evlist *evlist __maybe_unused)
271{
272 int i;
273 int etmv3 = 0, etmv4 = 0;
274 const struct cpu_map *cpus = evlist->cpus;
275
276 /* cpu map is not empty, we have specific CPUs to work with */
277 if (!cpu_map__empty(cpus)) {
278 for (i = 0; i < cpu_map__nr(cpus); i++) {
279 if (cs_etm_is_etmv4(itr, cpus->map[i]))
280 etmv4++;
281 else
282 etmv3++;
283 }
284 } else {
285 /* get configuration for all CPUs in the system */
286 for (i = 0; i < cpu__max_cpu(); i++) {
287 if (cs_etm_is_etmv4(itr, i))
288 etmv4++;
289 else
290 etmv3++;
291 }
292 }
293
294 return (CS_ETM_HEADER_SIZE +
295 (etmv4 * CS_ETMV4_PRIV_SIZE) +
296 (etmv3 * CS_ETMV3_PRIV_SIZE));
297}
298
299static const char *metadata_etmv3_ro[CS_ETM_PRIV_MAX] = {
300 [CS_ETM_ETMCCER] = "mgmt/etmccer",
301 [CS_ETM_ETMIDR] = "mgmt/etmidr",
302};
303
304static const char *metadata_etmv4_ro[CS_ETMV4_PRIV_MAX] = {
305 [CS_ETMV4_TRCIDR0] = "trcidr/trcidr0",
306 [CS_ETMV4_TRCIDR1] = "trcidr/trcidr1",
307 [CS_ETMV4_TRCIDR2] = "trcidr/trcidr2",
308 [CS_ETMV4_TRCIDR8] = "trcidr/trcidr8",
309 [CS_ETMV4_TRCAUTHSTATUS] = "mgmt/trcauthstatus",
310};
311
312static bool cs_etm_is_etmv4(struct auxtrace_record *itr, int cpu)
313{
314 bool ret = false;
315 char path[PATH_MAX];
316 int scan;
317 unsigned int val;
318 struct cs_etm_recording *ptr =
319 container_of(itr, struct cs_etm_recording, itr);
320 struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
321
322 /* Take any of the RO files for ETMv4 and see if it present */
323 snprintf(path, PATH_MAX, "cpu%d/%s",
324 cpu, metadata_etmv4_ro[CS_ETMV4_TRCIDR0]);
325 scan = perf_pmu__scan_file(cs_etm_pmu, path, "%x", &val);
326
327 /* The file was read successfully, we have a winner */
328 if (scan == 1)
329 ret = true;
330
331 return ret;
332}
333
334static int cs_etm_get_ro(struct perf_pmu *pmu, int cpu, const char *path)
335{
336 char pmu_path[PATH_MAX];
337 int scan;
338 unsigned int val = 0;
339
340 /* Get RO metadata from sysfs */
341 snprintf(pmu_path, PATH_MAX, "cpu%d/%s", cpu, path);
342
343 scan = perf_pmu__scan_file(pmu, pmu_path, "%x", &val);
344 if (scan != 1)
345 pr_err("%s: error reading: %s\n", __func__, pmu_path);
346
347 return val;
348}
349
350static void cs_etm_get_metadata(int cpu, u32 *offset,
351 struct auxtrace_record *itr,
352 struct auxtrace_info_event *info)
353{
354 u32 increment;
355 u64 magic;
356 struct cs_etm_recording *ptr =
357 container_of(itr, struct cs_etm_recording, itr);
358 struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
359
360 /* first see what kind of tracer this cpu is affined to */
361 if (cs_etm_is_etmv4(itr, cpu)) {
362 magic = __perf_cs_etmv4_magic;
363 /* Get trace configuration register */
364 info->priv[*offset + CS_ETMV4_TRCCONFIGR] =
365 cs_etm_get_config(itr);
366 /* Get traceID from the framework */
367 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
368 coresight_get_trace_id(cpu);
369 /* Get read-only information from sysFS */
370 info->priv[*offset + CS_ETMV4_TRCIDR0] =
371 cs_etm_get_ro(cs_etm_pmu, cpu,
372 metadata_etmv4_ro[CS_ETMV4_TRCIDR0]);
373 info->priv[*offset + CS_ETMV4_TRCIDR1] =
374 cs_etm_get_ro(cs_etm_pmu, cpu,
375 metadata_etmv4_ro[CS_ETMV4_TRCIDR1]);
376 info->priv[*offset + CS_ETMV4_TRCIDR2] =
377 cs_etm_get_ro(cs_etm_pmu, cpu,
378 metadata_etmv4_ro[CS_ETMV4_TRCIDR2]);
379 info->priv[*offset + CS_ETMV4_TRCIDR8] =
380 cs_etm_get_ro(cs_etm_pmu, cpu,
381 metadata_etmv4_ro[CS_ETMV4_TRCIDR8]);
382 info->priv[*offset + CS_ETMV4_TRCAUTHSTATUS] =
383 cs_etm_get_ro(cs_etm_pmu, cpu,
384 metadata_etmv4_ro
385 [CS_ETMV4_TRCAUTHSTATUS]);
386
387 /* How much space was used */
388 increment = CS_ETMV4_PRIV_MAX;
389 } else {
390 magic = __perf_cs_etmv3_magic;
391 /* Get configuration register */
392 info->priv[*offset + CS_ETM_ETMCR] = cs_etm_get_config(itr);
393 /* Get traceID from the framework */
394 info->priv[*offset + CS_ETM_ETMTRACEIDR] =
395 coresight_get_trace_id(cpu);
396 /* Get read-only information from sysFS */
397 info->priv[*offset + CS_ETM_ETMCCER] =
398 cs_etm_get_ro(cs_etm_pmu, cpu,
399 metadata_etmv3_ro[CS_ETM_ETMCCER]);
400 info->priv[*offset + CS_ETM_ETMIDR] =
401 cs_etm_get_ro(cs_etm_pmu, cpu,
402 metadata_etmv3_ro[CS_ETM_ETMIDR]);
403
404 /* How much space was used */
405 increment = CS_ETM_PRIV_MAX;
406 }
407
408 /* Build generic header portion */
409 info->priv[*offset + CS_ETM_MAGIC] = magic;
410 info->priv[*offset + CS_ETM_CPU] = cpu;
411 /* Where the next CPU entry should start from */
412 *offset += increment;
413}
414
415static int cs_etm_info_fill(struct auxtrace_record *itr,
416 struct perf_session *session,
417 struct auxtrace_info_event *info,
418 size_t priv_size)
419{
420 int i;
421 u32 offset;
422 u64 nr_cpu, type;
423 const struct cpu_map *cpus = session->evlist->cpus;
424 struct cs_etm_recording *ptr =
425 container_of(itr, struct cs_etm_recording, itr);
426 struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
427
428 if (priv_size != cs_etm_info_priv_size(itr, session->evlist))
429 return -EINVAL;
430
431 if (!session->evlist->nr_mmaps)
432 return -EINVAL;
433
434 /* If the cpu_map is empty all CPUs are involved */
435 nr_cpu = cpu_map__empty(cpus) ? cpu__max_cpu() : cpu_map__nr(cpus);
436 /* Get PMU type as dynamically assigned by the core */
437 type = cs_etm_pmu->type;
438
439 /* First fill out the session header */
440 info->type = PERF_AUXTRACE_CS_ETM;
441 info->priv[CS_HEADER_VERSION_0] = 0;
442 info->priv[CS_PMU_TYPE_CPUS] = type << 32;
443 info->priv[CS_PMU_TYPE_CPUS] |= nr_cpu;
444 info->priv[CS_ETM_SNAPSHOT] = ptr->snapshot_mode;
445
446 offset = CS_ETM_SNAPSHOT + 1;
447
448 /* cpu map is not empty, we have specific CPUs to work with */
449 if (!cpu_map__empty(cpus)) {
450 for (i = 0; i < cpu_map__nr(cpus) && offset < priv_size; i++)
451 cs_etm_get_metadata(cpus->map[i], &offset, itr, info);
452 } else {
453 /* get configuration for all CPUs in the system */
454 for (i = 0; i < cpu__max_cpu(); i++)
455 cs_etm_get_metadata(i, &offset, itr, info);
456 }
457
458 return 0;
459}
460
461static int cs_etm_find_snapshot(struct auxtrace_record *itr __maybe_unused,
462 int idx, struct auxtrace_mmap *mm,
463 unsigned char *data __maybe_unused,
464 u64 *head, u64 *old)
465{
466 pr_debug3("%s: mmap index %d old head %zu new head %zu size %zu\n",
467 __func__, idx, (size_t)*old, (size_t)*head, mm->len);
468
469 *old = *head;
470 *head += mm->len;
471
472 return 0;
473}
474
475static int cs_etm_snapshot_start(struct auxtrace_record *itr)
476{
477 struct cs_etm_recording *ptr =
478 container_of(itr, struct cs_etm_recording, itr);
479 struct perf_evsel *evsel;
480
481 evlist__for_each_entry(ptr->evlist, evsel) {
482 if (evsel->attr.type == ptr->cs_etm_pmu->type)
483 return perf_evsel__disable(evsel);
484 }
485 return -EINVAL;
486}
487
488static int cs_etm_snapshot_finish(struct auxtrace_record *itr)
489{
490 struct cs_etm_recording *ptr =
491 container_of(itr, struct cs_etm_recording, itr);
492 struct perf_evsel *evsel;
493
494 evlist__for_each_entry(ptr->evlist, evsel) {
495 if (evsel->attr.type == ptr->cs_etm_pmu->type)
496 return perf_evsel__enable(evsel);
497 }
498 return -EINVAL;
499}
500
501static u64 cs_etm_reference(struct auxtrace_record *itr __maybe_unused)
502{
503 return (((u64) rand() << 0) & 0x00000000FFFFFFFFull) |
504 (((u64) rand() << 32) & 0xFFFFFFFF00000000ull);
505}
506
507static void cs_etm_recording_free(struct auxtrace_record *itr)
508{
509 struct cs_etm_recording *ptr =
510 container_of(itr, struct cs_etm_recording, itr);
511 free(ptr);
512}
513
514static int cs_etm_read_finish(struct auxtrace_record *itr, int idx)
515{
516 struct cs_etm_recording *ptr =
517 container_of(itr, struct cs_etm_recording, itr);
518 struct perf_evsel *evsel;
519
520 evlist__for_each_entry(ptr->evlist, evsel) {
521 if (evsel->attr.type == ptr->cs_etm_pmu->type)
522 return perf_evlist__enable_event_idx(ptr->evlist,
523 evsel, idx);
524 }
525
526 return -EINVAL;
527}
528
529struct auxtrace_record *cs_etm_record_init(int *err)
530{
531 struct perf_pmu *cs_etm_pmu;
532 struct cs_etm_recording *ptr;
533
534 cs_etm_pmu = perf_pmu__find(CORESIGHT_ETM_PMU_NAME);
535
536 if (!cs_etm_pmu) {
537 *err = -EINVAL;
538 goto out;
539 }
540
541 ptr = zalloc(sizeof(struct cs_etm_recording));
542 if (!ptr) {
543 *err = -ENOMEM;
544 goto out;
545 }
546
547 ptr->cs_etm_pmu = cs_etm_pmu;
548 ptr->itr.parse_snapshot_options = cs_etm_parse_snapshot_options;
549 ptr->itr.recording_options = cs_etm_recording_options;
550 ptr->itr.info_priv_size = cs_etm_info_priv_size;
551 ptr->itr.info_fill = cs_etm_info_fill;
552 ptr->itr.find_snapshot = cs_etm_find_snapshot;
553 ptr->itr.snapshot_start = cs_etm_snapshot_start;
554 ptr->itr.snapshot_finish = cs_etm_snapshot_finish;
555 ptr->itr.reference = cs_etm_reference;
556 ptr->itr.free = cs_etm_recording_free;
557 ptr->itr.read_finish = cs_etm_read_finish;
558
559 *err = 0;
560 return &ptr->itr;
561out:
562 return NULL;
563}
564
565static FILE *cs_device__open_file(const char *name)
566{
567 struct stat st;
568 char path[PATH_MAX];
569 const char *sysfs;
570
571 sysfs = sysfs__mountpoint();
572 if (!sysfs)
573 return NULL;
574
575 snprintf(path, PATH_MAX,
576 "%s" CS_BUS_DEVICE_PATH "%s", sysfs, name);
577
578 if (stat(path, &st) < 0)
579 return NULL;
580
581 return fopen(path, "w");
582
583}
584
585static __attribute__((format(printf, 2, 3)))
586int cs_device__print_file(const char *name, const char *fmt, ...)
587{
588 va_list args;
589 FILE *file;
590 int ret = -EINVAL;
591
592 va_start(args, fmt);
593 file = cs_device__open_file(name);
594 if (file) {
595 ret = vfprintf(file, fmt, args);
596 fclose(file);
597 }
598 va_end(args);
599 return ret;
600}
601
602int cs_etm_set_drv_config(struct perf_evsel_config_term *term)
603{
604 int ret;
605 char enable_sink[ENABLE_SINK_MAX];
606
607 snprintf(enable_sink, ENABLE_SINK_MAX, "%s/%s",
608 term->val.drv_cfg, "enable_sink");
609
610 ret = cs_device__print_file(enable_sink, "%d", 1);
611 if (ret < 0)
612 return ret;
613
614 return 0;
615}
diff --git a/tools/perf/arch/arm/util/cs-etm.h b/tools/perf/arch/arm/util/cs-etm.h
new file mode 100644
index 000000000000..5256741be549
--- /dev/null
+++ b/tools/perf/arch/arm/util/cs-etm.h
@@ -0,0 +1,26 @@
1/*
2 * Copyright(C) 2015 Linaro Limited. All rights reserved.
3 * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published by
7 * the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef INCLUDE__PERF_CS_ETM_H__
19#define INCLUDE__PERF_CS_ETM_H__
20
21#include "../../util/evsel.h"
22
23struct auxtrace_record *cs_etm_record_init(int *err);
24int cs_etm_set_drv_config(struct perf_evsel_config_term *term);
25
26#endif
diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c
new file mode 100644
index 000000000000..98d67399a0d6
--- /dev/null
+++ b/tools/perf/arch/arm/util/pmu.c
@@ -0,0 +1,36 @@
1/*
2 * Copyright(C) 2015 Linaro Limited. All rights reserved.
3 * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published by
7 * the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include <string.h>
19#include <linux/coresight-pmu.h>
20#include <linux/perf_event.h>
21
22#include "cs-etm.h"
23#include "../../util/pmu.h"
24
25struct perf_event_attr
26*perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused)
27{
28#ifdef HAVE_AUXTRACE_SUPPORT
29 if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) {
30 /* add ETM default config here */
31 pmu->selectable = true;
32 pmu->set_drv_config = cs_etm_set_drv_config;
33 }
34#endif
35 return NULL;
36}
diff --git a/tools/perf/arch/arm64/annotate/instructions.c b/tools/perf/arch/arm64/annotate/instructions.c
new file mode 100644
index 000000000000..44eafd6f2d50
--- /dev/null
+++ b/tools/perf/arch/arm64/annotate/instructions.c
@@ -0,0 +1,62 @@
1#include <sys/types.h>
2#include <regex.h>
3
4struct arm64_annotate {
5 regex_t call_insn,
6 jump_insn;
7};
8
9static struct ins_ops *arm64__associate_instruction_ops(struct arch *arch, const char *name)
10{
11 struct arm64_annotate *arm = arch->priv;
12 struct ins_ops *ops;
13 regmatch_t match[2];
14
15 if (!regexec(&arm->jump_insn, name, 2, match, 0))
16 ops = &jump_ops;
17 else if (!regexec(&arm->call_insn, name, 2, match, 0))
18 ops = &call_ops;
19 else if (!strcmp(name, "ret"))
20 ops = &ret_ops;
21 else
22 return NULL;
23
24 arch__associate_ins_ops(arch, name, ops);
25 return ops;
26}
27
28static int arm64__annotate_init(struct arch *arch)
29{
30 struct arm64_annotate *arm;
31 int err;
32
33 if (arch->initialized)
34 return 0;
35
36 arm = zalloc(sizeof(*arm));
37 if (!arm)
38 return -1;
39
40 /* bl, blr */
41 err = regcomp(&arm->call_insn, "^blr?$", REG_EXTENDED);
42 if (err)
43 goto out_free_arm;
44 /* b, b.cond, br, cbz/cbnz, tbz/tbnz */
45 err = regcomp(&arm->jump_insn, "^[ct]?br?\\.?(cc|cs|eq|ge|gt|hi|le|ls|lt|mi|ne|pl)?n?z?$",
46 REG_EXTENDED);
47 if (err)
48 goto out_free_call;
49
50 arch->initialized = true;
51 arch->priv = arm;
52 arch->associate_instruction_ops = arm64__associate_instruction_ops;
53 arch->objdump.comment_char = ';';
54 arch->objdump.skip_functions_char = '+';
55 return 0;
56
57out_free_call:
58 regfree(&arm->call_insn);
59out_free_arm:
60 free(arm);
61 return -1;
62}
diff --git a/tools/perf/arch/arm64/include/dwarf-regs-table.h b/tools/perf/arch/arm64/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..26759363f921
--- /dev/null
+++ b/tools/perf/arch/arm64/include/dwarf-regs-table.h
@@ -0,0 +1,13 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4static const char * const aarch64_regstr_tbl[] = {
5 "%r0", "%r1", "%r2", "%r3", "%r4",
6 "%r5", "%r6", "%r7", "%r8", "%r9",
7 "%r10", "%r11", "%r12", "%r13", "%r14",
8 "%r15", "%r16", "%r17", "%r18", "%r19",
9 "%r20", "%r21", "%r22", "%r23", "%r24",
10 "%r25", "%r26", "%r27", "%r28", "%r29",
11 "%lr", "%sp",
12};
13#endif
diff --git a/tools/perf/arch/arm64/util/Build b/tools/perf/arch/arm64/util/Build
index 02f41dba4f4f..cef6fb38d17e 100644
--- a/tools/perf/arch/arm64/util/Build
+++ b/tools/perf/arch/arm64/util/Build
@@ -1,2 +1,6 @@
1libperf-$(CONFIG_DWARF) += dwarf-regs.o 1libperf-$(CONFIG_DWARF) += dwarf-regs.o
2libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o 2libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o
3
4libperf-$(CONFIG_AUXTRACE) += ../../arm/util/pmu.o \
5 ../../arm/util/auxtrace.o \
6 ../../arm/util/cs-etm.o
diff --git a/tools/perf/arch/powerpc/Build b/tools/perf/arch/powerpc/Build
index 54afe4a467e7..db52fa22d3a1 100644
--- a/tools/perf/arch/powerpc/Build
+++ b/tools/perf/arch/powerpc/Build
@@ -1 +1,2 @@
1libperf-y += util/ 1libperf-y += util/
2libperf-y += tests/
diff --git a/tools/perf/arch/powerpc/annotate/instructions.c b/tools/perf/arch/powerpc/annotate/instructions.c
new file mode 100644
index 000000000000..3c4004db81b9
--- /dev/null
+++ b/tools/perf/arch/powerpc/annotate/instructions.c
@@ -0,0 +1,58 @@
1static struct ins_ops *powerpc__associate_instruction_ops(struct arch *arch, const char *name)
2{
3 int i;
4 struct ins_ops *ops;
5
6 /*
7 * - Interested only if instruction starts with 'b'.
8 * - Few start with 'b', but aren't branch instructions.
9 */
10 if (name[0] != 'b' ||
11 !strncmp(name, "bcd", 3) ||
12 !strncmp(name, "brinc", 5) ||
13 !strncmp(name, "bper", 4))
14 return NULL;
15
16 ops = &jump_ops;
17
18 i = strlen(name) - 1;
19 if (i < 0)
20 return NULL;
21
22 /* ignore optional hints at the end of the instructions */
23 if (name[i] == '+' || name[i] == '-')
24 i--;
25
26 if (name[i] == 'l' || (name[i] == 'a' && name[i-1] == 'l')) {
27 /*
28 * if the instruction ends up with 'l' or 'la', then
29 * those are considered 'calls' since they update LR.
30 * ... except for 'bnl' which is branch if not less than
31 * and the absolute form of the same.
32 */
33 if (strcmp(name, "bnl") && strcmp(name, "bnl+") &&
34 strcmp(name, "bnl-") && strcmp(name, "bnla") &&
35 strcmp(name, "bnla+") && strcmp(name, "bnla-"))
36 ops = &call_ops;
37 }
38 if (name[i] == 'r' && name[i-1] == 'l')
39 /*
40 * instructions ending with 'lr' are considered to be
41 * return instructions
42 */
43 ops = &ret_ops;
44
45 arch__associate_ins_ops(arch, name, ops);
46 return ops;
47}
48
49static int powerpc__annotate_init(struct arch *arch)
50{
51 if (!arch->initialized) {
52 arch->initialized = true;
53 arch->associate_instruction_ops = powerpc__associate_instruction_ops;
54 arch->objdump.comment_char = '#';
55 }
56
57 return 0;
58}
diff --git a/tools/perf/arch/powerpc/include/arch-tests.h b/tools/perf/arch/powerpc/include/arch-tests.h
new file mode 100644
index 000000000000..84d8dedef2ed
--- /dev/null
+++ b/tools/perf/arch/powerpc/include/arch-tests.h
@@ -0,0 +1,13 @@
1#ifndef ARCH_TESTS_H
2#define ARCH_TESTS_H
3
4#ifdef HAVE_DWARF_UNWIND_SUPPORT
5struct thread;
6struct perf_sample;
7int test__arch_unwind_sample(struct perf_sample *sample,
8 struct thread *thread);
9#endif
10
11extern struct test arch_tests[];
12
13#endif
diff --git a/tools/perf/arch/powerpc/include/dwarf-regs-table.h b/tools/perf/arch/powerpc/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..db4730f5585c
--- /dev/null
+++ b/tools/perf/arch/powerpc/include/dwarf-regs-table.h
@@ -0,0 +1,27 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4/*
5 * Reference:
6 * http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html
7 * http://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf
8 */
9#define REG_DWARFNUM_NAME(reg, idx) [idx] = "%" #reg
10
11static const char * const powerpc_regstr_tbl[] = {
12 "%gpr0", "%gpr1", "%gpr2", "%gpr3", "%gpr4",
13 "%gpr5", "%gpr6", "%gpr7", "%gpr8", "%gpr9",
14 "%gpr10", "%gpr11", "%gpr12", "%gpr13", "%gpr14",
15 "%gpr15", "%gpr16", "%gpr17", "%gpr18", "%gpr19",
16 "%gpr20", "%gpr21", "%gpr22", "%gpr23", "%gpr24",
17 "%gpr25", "%gpr26", "%gpr27", "%gpr28", "%gpr29",
18 "%gpr30", "%gpr31",
19 REG_DWARFNUM_NAME(msr, 66),
20 REG_DWARFNUM_NAME(ctr, 109),
21 REG_DWARFNUM_NAME(link, 108),
22 REG_DWARFNUM_NAME(xer, 101),
23 REG_DWARFNUM_NAME(dar, 119),
24 REG_DWARFNUM_NAME(dsisr, 118),
25};
26
27#endif
diff --git a/tools/perf/arch/powerpc/include/perf_regs.h b/tools/perf/arch/powerpc/include/perf_regs.h
index 75de0e92e71e..c12f4e804f66 100644
--- a/tools/perf/arch/powerpc/include/perf_regs.h
+++ b/tools/perf/arch/powerpc/include/perf_regs.h
@@ -5,6 +5,8 @@
5#include <linux/types.h> 5#include <linux/types.h>
6#include <asm/perf_regs.h> 6#include <asm/perf_regs.h>
7 7
8void perf_regs_load(u64 *regs);
9
8#define PERF_REGS_MASK ((1ULL << PERF_REG_POWERPC_MAX) - 1) 10#define PERF_REGS_MASK ((1ULL << PERF_REG_POWERPC_MAX) - 1)
9#define PERF_REGS_MAX PERF_REG_POWERPC_MAX 11#define PERF_REGS_MAX PERF_REG_POWERPC_MAX
10#ifdef __powerpc64__ 12#ifdef __powerpc64__
diff --git a/tools/perf/arch/powerpc/tests/Build b/tools/perf/arch/powerpc/tests/Build
new file mode 100644
index 000000000000..d827ef384b33
--- /dev/null
+++ b/tools/perf/arch/powerpc/tests/Build
@@ -0,0 +1,4 @@
1libperf-$(CONFIG_DWARF_UNWIND) += regs_load.o
2libperf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o
3
4libperf-y += arch-tests.o
diff --git a/tools/perf/arch/powerpc/tests/arch-tests.c b/tools/perf/arch/powerpc/tests/arch-tests.c
new file mode 100644
index 000000000000..e24f46241f40
--- /dev/null
+++ b/tools/perf/arch/powerpc/tests/arch-tests.c
@@ -0,0 +1,15 @@
1#include <string.h>
2#include "tests/tests.h"
3#include "arch-tests.h"
4
5struct test arch_tests[] = {
6#ifdef HAVE_DWARF_UNWIND_SUPPORT
7 {
8 .desc = "Test dwarf unwind",
9 .func = test__dwarf_unwind,
10 },
11#endif
12 {
13 .func = NULL,
14 },
15};
diff --git a/tools/perf/arch/powerpc/tests/dwarf-unwind.c b/tools/perf/arch/powerpc/tests/dwarf-unwind.c
new file mode 100644
index 000000000000..0bac3137ccbd
--- /dev/null
+++ b/tools/perf/arch/powerpc/tests/dwarf-unwind.c
@@ -0,0 +1,62 @@
1#include <string.h>
2#include "perf_regs.h"
3#include "thread.h"
4#include "map.h"
5#include "event.h"
6#include "debug.h"
7#include "tests/tests.h"
8#include "arch-tests.h"
9
10#define STACK_SIZE 8192
11
12static int sample_ustack(struct perf_sample *sample,
13 struct thread *thread, u64 *regs)
14{
15 struct stack_dump *stack = &sample->user_stack;
16 struct map *map;
17 unsigned long sp;
18 u64 stack_size, *buf;
19
20 buf = malloc(STACK_SIZE);
21 if (!buf) {
22 pr_debug("failed to allocate sample uregs data\n");
23 return -1;
24 }
25
26 sp = (unsigned long) regs[PERF_REG_POWERPC_R1];
27
28 map = map_groups__find(thread->mg, MAP__VARIABLE, (u64) sp);
29 if (!map) {
30 pr_debug("failed to get stack map\n");
31 free(buf);
32 return -1;
33 }
34
35 stack_size = map->end - sp;
36 stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size;
37
38 memcpy(buf, (void *) sp, stack_size);
39 stack->data = (char *) buf;
40 stack->size = stack_size;
41 return 0;
42}
43
44int test__arch_unwind_sample(struct perf_sample *sample,
45 struct thread *thread)
46{
47 struct regs_dump *regs = &sample->user_regs;
48 u64 *buf;
49
50 buf = calloc(1, sizeof(u64) * PERF_REGS_MAX);
51 if (!buf) {
52 pr_debug("failed to allocate sample uregs data\n");
53 return -1;
54 }
55
56 perf_regs_load(buf);
57 regs->abi = PERF_SAMPLE_REGS_ABI;
58 regs->regs = buf;
59 regs->mask = PERF_REGS_MASK;
60
61 return sample_ustack(sample, thread, buf);
62}
diff --git a/tools/perf/arch/powerpc/tests/regs_load.S b/tools/perf/arch/powerpc/tests/regs_load.S
new file mode 100644
index 000000000000..d76c9a32f327
--- /dev/null
+++ b/tools/perf/arch/powerpc/tests/regs_load.S
@@ -0,0 +1,94 @@
1#include <linux/linkage.h>
2
3/* Offset is based on macros from arch/powerpc/include/uapi/asm/ptrace.h. */
4#define R0 0
5#define R1 1 * 8
6#define R2 2 * 8
7#define R3 3 * 8
8#define R4 4 * 8
9#define R5 5 * 8
10#define R6 6 * 8
11#define R7 7 * 8
12#define R8 8 * 8
13#define R9 9 * 8
14#define R10 10 * 8
15#define R11 11 * 8
16#define R12 12 * 8
17#define R13 13 * 8
18#define R14 14 * 8
19#define R15 15 * 8
20#define R16 16 * 8
21#define R17 17 * 8
22#define R18 18 * 8
23#define R19 19 * 8
24#define R20 20 * 8
25#define R21 21 * 8
26#define R22 22 * 8
27#define R23 23 * 8
28#define R24 24 * 8
29#define R25 25 * 8
30#define R26 26 * 8
31#define R27 27 * 8
32#define R28 28 * 8
33#define R29 29 * 8
34#define R30 30 * 8
35#define R31 31 * 8
36#define NIP 32 * 8
37#define CTR 35 * 8
38#define LINK 36 * 8
39#define XER 37 * 8
40
41.globl perf_regs_load
42perf_regs_load:
43 std 0, R0(3)
44 std 1, R1(3)
45 std 2, R2(3)
46 std 3, R3(3)
47 std 4, R4(3)
48 std 5, R5(3)
49 std 6, R6(3)
50 std 7, R7(3)
51 std 8, R8(3)
52 std 9, R9(3)
53 std 10, R10(3)
54 std 11, R11(3)
55 std 12, R12(3)
56 std 13, R13(3)
57 std 14, R14(3)
58 std 15, R15(3)
59 std 16, R16(3)
60 std 17, R17(3)
61 std 18, R18(3)
62 std 19, R19(3)
63 std 20, R20(3)
64 std 21, R21(3)
65 std 22, R22(3)
66 std 23, R23(3)
67 std 24, R24(3)
68 std 25, R25(3)
69 std 26, R26(3)
70 std 27, R27(3)
71 std 28, R28(3)
72 std 29, R29(3)
73 std 30, R30(3)
74 std 31, R31(3)
75
76 /* store NIP */
77 mflr 4
78 std 4, NIP(3)
79
80 /* Store LR */
81 std 4, LINK(3)
82
83 /* Store XER */
84 mfxer 4
85 std 4, XER(3)
86
87 /* Store CTR */
88 mfctr 4
89 std 4, CTR(3)
90
91 /* Restore original value of r4 */
92 ld 4, R4(3)
93
94 blr
diff --git a/tools/perf/arch/powerpc/util/header.c b/tools/perf/arch/powerpc/util/header.c
index f8ccee132867..9aaa6f5a9347 100644
--- a/tools/perf/arch/powerpc/util/header.c
+++ b/tools/perf/arch/powerpc/util/header.c
@@ -32,3 +32,14 @@ get_cpuid(char *buffer, size_t sz)
32 } 32 }
33 return -1; 33 return -1;
34} 34}
35
36char *
37get_cpuid_str(void)
38{
39 char *bufp;
40
41 if (asprintf(&bufp, "%.8lx", mfspr(SPRN_PVR)) < 0)
42 bufp = NULL;
43
44 return bufp;
45}
diff --git a/tools/perf/arch/powerpc/util/sym-handling.c b/tools/perf/arch/powerpc/util/sym-handling.c
index 35745a733100..1030a6e504bb 100644
--- a/tools/perf/arch/powerpc/util/sym-handling.c
+++ b/tools/perf/arch/powerpc/util/sym-handling.c
@@ -82,7 +82,8 @@ void arch__fix_tev_from_maps(struct perf_probe_event *pev,
82 * 82 *
83 * In addition, we shouldn't specify an offset for kretprobes. 83 * In addition, we shouldn't specify an offset for kretprobes.
84 */ 84 */
85 if (pev->point.offset || pev->point.retprobe || !map || !sym) 85 if (pev->point.offset || (!pev->uprobes && pev->point.retprobe) ||
86 !map || !sym)
86 return; 87 return;
87 88
88 lep_offset = PPC64_LOCAL_ENTRY_OFFSET(sym->arch_sym); 89 lep_offset = PPC64_LOCAL_ENTRY_OFFSET(sym->arch_sym);
@@ -108,7 +109,7 @@ void arch__post_process_probe_trace_events(struct perf_probe_event *pev,
108 int i = 0; 109 int i = 0;
109 110
110 map = get_target_map(pev->target, pev->uprobes); 111 map = get_target_map(pev->target, pev->uprobes);
111 if (!map || map__load(map, NULL) < 0) 112 if (!map || map__load(map) < 0)
112 return; 113 return;
113 114
114 for (i = 0; i < ntevs; i++) { 115 for (i = 0; i < ntevs; i++) {
diff --git a/tools/perf/arch/s390/include/dwarf-regs-table.h b/tools/perf/arch/s390/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..9da74a933bd6
--- /dev/null
+++ b/tools/perf/arch/s390/include/dwarf-regs-table.h
@@ -0,0 +1,8 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4static const char * const s390_regstr_tbl[] = {
5 "%r0", "%r1", "%r2", "%r3", "%r4", "%r5", "%r6", "%r7",
6 "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15",
7};
8#endif
diff --git a/tools/perf/arch/sh/include/dwarf-regs-table.h b/tools/perf/arch/sh/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..3a2deaf3dab4
--- /dev/null
+++ b/tools/perf/arch/sh/include/dwarf-regs-table.h
@@ -0,0 +1,25 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4const char * const sh_regstr_tbl[] = {
5 "r0",
6 "r1",
7 "r2",
8 "r3",
9 "r4",
10 "r5",
11 "r6",
12 "r7",
13 "r8",
14 "r9",
15 "r10",
16 "r11",
17 "r12",
18 "r13",
19 "r14",
20 "r15",
21 "pc",
22 "pr",
23};
24
25#endif
diff --git a/tools/perf/arch/sparc/include/dwarf-regs-table.h b/tools/perf/arch/sparc/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..12c07619002c
--- /dev/null
+++ b/tools/perf/arch/sparc/include/dwarf-regs-table.h
@@ -0,0 +1,18 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4static const char * const sparc_regstr_tbl[] = {
5 "%g0", "%g1", "%g2", "%g3", "%g4", "%g5", "%g6", "%g7",
6 "%o0", "%o1", "%o2", "%o3", "%o4", "%o5", "%sp", "%o7",
7 "%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", "%l7",
8 "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%fp", "%i7",
9 "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7",
10 "%f8", "%f9", "%f10", "%f11", "%f12", "%f13", "%f14", "%f15",
11 "%f16", "%f17", "%f18", "%f19", "%f20", "%f21", "%f22", "%f23",
12 "%f24", "%f25", "%f26", "%f27", "%f28", "%f29", "%f30", "%f31",
13 "%f32", "%f33", "%f34", "%f35", "%f36", "%f37", "%f38", "%f39",
14 "%f40", "%f41", "%f42", "%f43", "%f44", "%f45", "%f46", "%f47",
15 "%f48", "%f49", "%f50", "%f51", "%f52", "%f53", "%f54", "%f55",
16 "%f56", "%f57", "%f58", "%f59", "%f60", "%f61", "%f62", "%f63",
17};
18#endif
diff --git a/tools/perf/arch/x86/annotate/instructions.c b/tools/perf/arch/x86/annotate/instructions.c
new file mode 100644
index 000000000000..c1625f256df3
--- /dev/null
+++ b/tools/perf/arch/x86/annotate/instructions.c
@@ -0,0 +1,78 @@
1static struct ins x86__instructions[] = {
2 { .name = "add", .ops = &mov_ops, },
3 { .name = "addl", .ops = &mov_ops, },
4 { .name = "addq", .ops = &mov_ops, },
5 { .name = "addw", .ops = &mov_ops, },
6 { .name = "and", .ops = &mov_ops, },
7 { .name = "bts", .ops = &mov_ops, },
8 { .name = "call", .ops = &call_ops, },
9 { .name = "callq", .ops = &call_ops, },
10 { .name = "cmp", .ops = &mov_ops, },
11 { .name = "cmpb", .ops = &mov_ops, },
12 { .name = "cmpl", .ops = &mov_ops, },
13 { .name = "cmpq", .ops = &mov_ops, },
14 { .name = "cmpw", .ops = &mov_ops, },
15 { .name = "cmpxch", .ops = &mov_ops, },
16 { .name = "dec", .ops = &dec_ops, },
17 { .name = "decl", .ops = &dec_ops, },
18 { .name = "imul", .ops = &mov_ops, },
19 { .name = "inc", .ops = &dec_ops, },
20 { .name = "incl", .ops = &dec_ops, },
21 { .name = "ja", .ops = &jump_ops, },
22 { .name = "jae", .ops = &jump_ops, },
23 { .name = "jb", .ops = &jump_ops, },
24 { .name = "jbe", .ops = &jump_ops, },
25 { .name = "jc", .ops = &jump_ops, },
26 { .name = "jcxz", .ops = &jump_ops, },
27 { .name = "je", .ops = &jump_ops, },
28 { .name = "jecxz", .ops = &jump_ops, },
29 { .name = "jg", .ops = &jump_ops, },
30 { .name = "jge", .ops = &jump_ops, },
31 { .name = "jl", .ops = &jump_ops, },
32 { .name = "jle", .ops = &jump_ops, },
33 { .name = "jmp", .ops = &jump_ops, },
34 { .name = "jmpq", .ops = &jump_ops, },
35 { .name = "jna", .ops = &jump_ops, },
36 { .name = "jnae", .ops = &jump_ops, },
37 { .name = "jnb", .ops = &jump_ops, },
38 { .name = "jnbe", .ops = &jump_ops, },
39 { .name = "jnc", .ops = &jump_ops, },
40 { .name = "jne", .ops = &jump_ops, },
41 { .name = "jng", .ops = &jump_ops, },
42 { .name = "jnge", .ops = &jump_ops, },
43 { .name = "jnl", .ops = &jump_ops, },
44 { .name = "jnle", .ops = &jump_ops, },
45 { .name = "jno", .ops = &jump_ops, },
46 { .name = "jnp", .ops = &jump_ops, },
47 { .name = "jns", .ops = &jump_ops, },
48 { .name = "jnz", .ops = &jump_ops, },
49 { .name = "jo", .ops = &jump_ops, },
50 { .name = "jp", .ops = &jump_ops, },
51 { .name = "jpe", .ops = &jump_ops, },
52 { .name = "jpo", .ops = &jump_ops, },
53 { .name = "jrcxz", .ops = &jump_ops, },
54 { .name = "js", .ops = &jump_ops, },
55 { .name = "jz", .ops = &jump_ops, },
56 { .name = "lea", .ops = &mov_ops, },
57 { .name = "lock", .ops = &lock_ops, },
58 { .name = "mov", .ops = &mov_ops, },
59 { .name = "movb", .ops = &mov_ops, },
60 { .name = "movdqa", .ops = &mov_ops, },
61 { .name = "movl", .ops = &mov_ops, },
62 { .name = "movq", .ops = &mov_ops, },
63 { .name = "movslq", .ops = &mov_ops, },
64 { .name = "movzbl", .ops = &mov_ops, },
65 { .name = "movzwl", .ops = &mov_ops, },
66 { .name = "nop", .ops = &nop_ops, },
67 { .name = "nopl", .ops = &nop_ops, },
68 { .name = "nopw", .ops = &nop_ops, },
69 { .name = "or", .ops = &mov_ops, },
70 { .name = "orl", .ops = &mov_ops, },
71 { .name = "test", .ops = &mov_ops, },
72 { .name = "testb", .ops = &mov_ops, },
73 { .name = "testl", .ops = &mov_ops, },
74 { .name = "xadd", .ops = &mov_ops, },
75 { .name = "xbeginl", .ops = &jump_ops, },
76 { .name = "xbeginq", .ops = &jump_ops, },
77 { .name = "retq", .ops = &ret_ops, },
78};
diff --git a/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl b/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
index 555263e385c9..e93ef0b38db8 100644
--- a/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
@@ -335,6 +335,9 @@
335326 common copy_file_range sys_copy_file_range 335326 common copy_file_range sys_copy_file_range
336327 64 preadv2 sys_preadv2 336327 64 preadv2 sys_preadv2
337328 64 pwritev2 sys_pwritev2 337328 64 pwritev2 sys_pwritev2
338329 common pkey_mprotect sys_pkey_mprotect
339330 common pkey_alloc sys_pkey_alloc
340331 common pkey_free sys_pkey_free
338 341
339# 342#
340# x32-specific system call numbers start at 512 to avoid cache impact 343# x32-specific system call numbers start at 512 to avoid cache impact
@@ -374,5 +377,5 @@
374543 x32 io_setup compat_sys_io_setup 377543 x32 io_setup compat_sys_io_setup
375544 x32 io_submit compat_sys_io_submit 378544 x32 io_submit compat_sys_io_submit
376545 x32 execveat compat_sys_execveat/ptregs 379545 x32 execveat compat_sys_execveat/ptregs
377534 x32 preadv2 compat_sys_preadv2 380546 x32 preadv2 compat_sys_preadv64v2
378535 x32 pwritev2 compat_sys_pwritev2 381547 x32 pwritev2 compat_sys_pwritev64v2
diff --git a/tools/perf/arch/x86/include/dwarf-regs-table.h b/tools/perf/arch/x86/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..9b5e5cbb4209
--- /dev/null
+++ b/tools/perf/arch/x86/include/dwarf-regs-table.h
@@ -0,0 +1,14 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4static const char * const x86_32_regstr_tbl[] = {
5 "%ax", "%cx", "%dx", "%bx", "$stack",/* Stack address instead of %sp */
6 "%bp", "%si", "%di",
7};
8
9static const char * const x86_64_regstr_tbl[] = {
10 "%ax", "%dx", "%cx", "%bx", "%si", "%di",
11 "%bp", "%sp", "%r8", "%r9", "%r10", "%r11",
12 "%r12", "%r13", "%r14", "%r15",
13};
14#endif
diff --git a/tools/perf/arch/x86/tests/arch-tests.c b/tools/perf/arch/x86/tests/arch-tests.c
index 2218cb64f840..99d66191e56c 100644
--- a/tools/perf/arch/x86/tests/arch-tests.c
+++ b/tools/perf/arch/x86/tests/arch-tests.c
@@ -4,27 +4,27 @@
4 4
5struct test arch_tests[] = { 5struct test arch_tests[] = {
6 { 6 {
7 .desc = "x86 rdpmc test", 7 .desc = "x86 rdpmc",
8 .func = test__rdpmc, 8 .func = test__rdpmc,
9 }, 9 },
10 { 10 {
11 .desc = "Test converting perf time to TSC", 11 .desc = "Convert perf time to TSC",
12 .func = test__perf_time_to_tsc, 12 .func = test__perf_time_to_tsc,
13 }, 13 },
14#ifdef HAVE_DWARF_UNWIND_SUPPORT 14#ifdef HAVE_DWARF_UNWIND_SUPPORT
15 { 15 {
16 .desc = "Test dwarf unwind", 16 .desc = "DWARF unwind",
17 .func = test__dwarf_unwind, 17 .func = test__dwarf_unwind,
18 }, 18 },
19#endif 19#endif
20#ifdef HAVE_AUXTRACE_SUPPORT 20#ifdef HAVE_AUXTRACE_SUPPORT
21 { 21 {
22 .desc = "Test x86 instruction decoder - new instructions", 22 .desc = "x86 instruction decoder - new instructions",
23 .func = test__insn_x86, 23 .func = test__insn_x86,
24 }, 24 },
25#endif 25#endif
26 { 26 {
27 .desc = "Test intel cqm nmi context read", 27 .desc = "Intel cqm nmi context read",
28 .func = test__intel_cqm_count_nmi_context, 28 .func = test__intel_cqm_count_nmi_context,
29 }, 29 },
30 { 30 {
diff --git a/tools/perf/arch/x86/util/header.c b/tools/perf/arch/x86/util/header.c
index 146d12a1cec0..a74a48db26f5 100644
--- a/tools/perf/arch/x86/util/header.c
+++ b/tools/perf/arch/x86/util/header.c
@@ -19,8 +19,8 @@ cpuid(unsigned int op, unsigned int *a, unsigned int *b, unsigned int *c,
19 : "a" (op)); 19 : "a" (op));
20} 20}
21 21
22int 22static int
23get_cpuid(char *buffer, size_t sz) 23__get_cpuid(char *buffer, size_t sz, const char *fmt)
24{ 24{
25 unsigned int a, b, c, d, lvl; 25 unsigned int a, b, c, d, lvl;
26 int family = -1, model = -1, step = -1; 26 int family = -1, model = -1, step = -1;
@@ -48,7 +48,7 @@ get_cpuid(char *buffer, size_t sz)
48 if (family >= 0x6) 48 if (family >= 0x6)
49 model += ((a >> 16) & 0xf) << 4; 49 model += ((a >> 16) & 0xf) << 4;
50 } 50 }
51 nb = scnprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step); 51 nb = scnprintf(buffer, sz, fmt, vendor, family, model, step);
52 52
53 /* look for end marker to ensure the entire data fit */ 53 /* look for end marker to ensure the entire data fit */
54 if (strchr(buffer, '$')) { 54 if (strchr(buffer, '$')) {
@@ -57,3 +57,21 @@ get_cpuid(char *buffer, size_t sz)
57 } 57 }
58 return -1; 58 return -1;
59} 59}
60
61int
62get_cpuid(char *buffer, size_t sz)
63{
64 return __get_cpuid(buffer, sz, "%s,%u,%u,%u$");
65}
66
67char *
68get_cpuid_str(void)
69{
70 char *buf = malloc(128);
71
72 if (__get_cpuid(buf, 128, "%s-%u-%X$") < 0) {
73 free(buf);
74 return NULL;
75 }
76 return buf;
77}
diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c
index a2412e9d883b..90fa2286edcf 100644
--- a/tools/perf/arch/x86/util/intel-pt.c
+++ b/tools/perf/arch/x86/util/intel-pt.c
@@ -62,6 +62,7 @@ struct intel_pt_recording {
62 size_t snapshot_ref_buf_size; 62 size_t snapshot_ref_buf_size;
63 int snapshot_ref_cnt; 63 int snapshot_ref_cnt;
64 struct intel_pt_snapshot_ref *snapshot_refs; 64 struct intel_pt_snapshot_ref *snapshot_refs;
65 size_t priv_size;
65}; 66};
66 67
67static int intel_pt_parse_terms_with_default(struct list_head *formats, 68static int intel_pt_parse_terms_with_default(struct list_head *formats,
@@ -273,11 +274,37 @@ intel_pt_pmu_default_config(struct perf_pmu *intel_pt_pmu)
273 return attr; 274 return attr;
274} 275}
275 276
277static const char *intel_pt_find_filter(struct perf_evlist *evlist,
278 struct perf_pmu *intel_pt_pmu)
279{
280 struct perf_evsel *evsel;
281
282 evlist__for_each_entry(evlist, evsel) {
283 if (evsel->attr.type == intel_pt_pmu->type)
284 return evsel->filter;
285 }
286
287 return NULL;
288}
289
290static size_t intel_pt_filter_bytes(const char *filter)
291{
292 size_t len = filter ? strlen(filter) : 0;
293
294 return len ? roundup(len + 1, 8) : 0;
295}
296
276static size_t 297static size_t
277intel_pt_info_priv_size(struct auxtrace_record *itr __maybe_unused, 298intel_pt_info_priv_size(struct auxtrace_record *itr, struct perf_evlist *evlist)
278 struct perf_evlist *evlist __maybe_unused)
279{ 299{
280 return INTEL_PT_AUXTRACE_PRIV_SIZE; 300 struct intel_pt_recording *ptr =
301 container_of(itr, struct intel_pt_recording, itr);
302 const char *filter = intel_pt_find_filter(evlist, ptr->intel_pt_pmu);
303
304 ptr->priv_size = (INTEL_PT_AUXTRACE_PRIV_MAX * sizeof(u64)) +
305 intel_pt_filter_bytes(filter);
306
307 return ptr->priv_size;
281} 308}
282 309
283static void intel_pt_tsc_ctc_ratio(u32 *n, u32 *d) 310static void intel_pt_tsc_ctc_ratio(u32 *n, u32 *d)
@@ -302,9 +329,13 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
302 bool cap_user_time_zero = false, per_cpu_mmaps; 329 bool cap_user_time_zero = false, per_cpu_mmaps;
303 u64 tsc_bit, mtc_bit, mtc_freq_bits, cyc_bit, noretcomp_bit; 330 u64 tsc_bit, mtc_bit, mtc_freq_bits, cyc_bit, noretcomp_bit;
304 u32 tsc_ctc_ratio_n, tsc_ctc_ratio_d; 331 u32 tsc_ctc_ratio_n, tsc_ctc_ratio_d;
332 unsigned long max_non_turbo_ratio;
333 size_t filter_str_len;
334 const char *filter;
335 u64 *info;
305 int err; 336 int err;
306 337
307 if (priv_size != INTEL_PT_AUXTRACE_PRIV_SIZE) 338 if (priv_size != ptr->priv_size)
308 return -EINVAL; 339 return -EINVAL;
309 340
310 intel_pt_parse_terms(&intel_pt_pmu->format, "tsc", &tsc_bit); 341 intel_pt_parse_terms(&intel_pt_pmu->format, "tsc", &tsc_bit);
@@ -317,6 +348,13 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
317 348
318 intel_pt_tsc_ctc_ratio(&tsc_ctc_ratio_n, &tsc_ctc_ratio_d); 349 intel_pt_tsc_ctc_ratio(&tsc_ctc_ratio_n, &tsc_ctc_ratio_d);
319 350
351 if (perf_pmu__scan_file(intel_pt_pmu, "max_nonturbo_ratio",
352 "%lu", &max_non_turbo_ratio) != 1)
353 max_non_turbo_ratio = 0;
354
355 filter = intel_pt_find_filter(session->evlist, ptr->intel_pt_pmu);
356 filter_str_len = filter ? strlen(filter) : 0;
357
320 if (!session->evlist->nr_mmaps) 358 if (!session->evlist->nr_mmaps)
321 return -EINVAL; 359 return -EINVAL;
322 360
@@ -351,6 +389,17 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
351 auxtrace_info->priv[INTEL_PT_TSC_CTC_N] = tsc_ctc_ratio_n; 389 auxtrace_info->priv[INTEL_PT_TSC_CTC_N] = tsc_ctc_ratio_n;
352 auxtrace_info->priv[INTEL_PT_TSC_CTC_D] = tsc_ctc_ratio_d; 390 auxtrace_info->priv[INTEL_PT_TSC_CTC_D] = tsc_ctc_ratio_d;
353 auxtrace_info->priv[INTEL_PT_CYC_BIT] = cyc_bit; 391 auxtrace_info->priv[INTEL_PT_CYC_BIT] = cyc_bit;
392 auxtrace_info->priv[INTEL_PT_MAX_NONTURBO_RATIO] = max_non_turbo_ratio;
393 auxtrace_info->priv[INTEL_PT_FILTER_STR_LEN] = filter_str_len;
394
395 info = &auxtrace_info->priv[INTEL_PT_FILTER_STR_LEN] + 1;
396
397 if (filter_str_len) {
398 size_t len = intel_pt_filter_bytes(filter);
399
400 strncpy((char *)info, filter, len);
401 info += len >> 3;
402 }
354 403
355 return 0; 404 return 0;
356} 405}
diff --git a/tools/perf/arch/xtensa/include/dwarf-regs-table.h b/tools/perf/arch/xtensa/include/dwarf-regs-table.h
new file mode 100644
index 000000000000..aa0444a33fe6
--- /dev/null
+++ b/tools/perf/arch/xtensa/include/dwarf-regs-table.h
@@ -0,0 +1,8 @@
1#ifdef DEFINE_DWARF_REGSTR_TABLE
2/* This is included in perf/util/dwarf-regs.c */
3
4static const char * const xtensa_regstr_tbl[] = {
5 "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7",
6 "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15",
7};
8#endif
diff --git a/tools/perf/bench/futex-hash.c b/tools/perf/bench/futex-hash.c
index 8024cd5febd2..bfbb6b5f609c 100644
--- a/tools/perf/bench/futex-hash.c
+++ b/tools/perf/bench/futex-hash.c
@@ -63,8 +63,9 @@ static const char * const bench_futex_hash_usage[] = {
63static void *workerfn(void *arg) 63static void *workerfn(void *arg)
64{ 64{
65 int ret; 65 int ret;
66 unsigned int i;
67 struct worker *w = (struct worker *) arg; 66 struct worker *w = (struct worker *) arg;
67 unsigned int i;
68 unsigned long ops = w->ops; /* avoid cacheline bouncing */
68 69
69 pthread_mutex_lock(&thread_lock); 70 pthread_mutex_lock(&thread_lock);
70 threads_starting--; 71 threads_starting--;
@@ -74,7 +75,7 @@ static void *workerfn(void *arg)
74 pthread_mutex_unlock(&thread_lock); 75 pthread_mutex_unlock(&thread_lock);
75 76
76 do { 77 do {
77 for (i = 0; i < nfutexes; i++, w->ops++) { 78 for (i = 0; i < nfutexes; i++, ops++) {
78 /* 79 /*
79 * We want the futex calls to fail in order to stress 80 * We want the futex calls to fail in order to stress
80 * the hashing of uaddr and not measure other steps, 81 * the hashing of uaddr and not measure other steps,
@@ -88,6 +89,7 @@ static void *workerfn(void *arg)
88 } 89 }
89 } while (!done); 90 } while (!done);
90 91
92 w->ops = ops;
91 return NULL; 93 return NULL;
92} 94}
93 95
@@ -128,6 +130,8 @@ int bench_futex_hash(int argc, const char **argv,
128 } 130 }
129 131
130 ncpus = sysconf(_SC_NPROCESSORS_ONLN); 132 ncpus = sysconf(_SC_NPROCESSORS_ONLN);
133 nsecs = futexbench_sanitize_numeric(nsecs);
134 nfutexes = futexbench_sanitize_numeric(nfutexes);
131 135
132 sigfillset(&act.sa_mask); 136 sigfillset(&act.sa_mask);
133 act.sa_sigaction = toggle_done; 137 act.sa_sigaction = toggle_done;
@@ -135,6 +139,8 @@ int bench_futex_hash(int argc, const char **argv,
135 139
136 if (!nthreads) /* default to the number of CPUs */ 140 if (!nthreads) /* default to the number of CPUs */
137 nthreads = ncpus; 141 nthreads = ncpus;
142 else
143 nthreads = futexbench_sanitize_numeric(nthreads);
138 144
139 worker = calloc(nthreads, sizeof(*worker)); 145 worker = calloc(nthreads, sizeof(*worker));
140 if (!worker) 146 if (!worker)
diff --git a/tools/perf/bench/futex-lock-pi.c b/tools/perf/bench/futex-lock-pi.c
index 936d89d30483..6d9d6c40a916 100644
--- a/tools/perf/bench/futex-lock-pi.c
+++ b/tools/perf/bench/futex-lock-pi.c
@@ -48,7 +48,7 @@ static const struct option options[] = {
48}; 48};
49 49
50static const char * const bench_futex_lock_pi_usage[] = { 50static const char * const bench_futex_lock_pi_usage[] = {
51 "perf bench futex requeue <options>", 51 "perf bench futex lock-pi <options>",
52 NULL 52 NULL
53}; 53};
54 54
@@ -75,6 +75,7 @@ static void toggle_done(int sig __maybe_unused,
75static void *workerfn(void *arg) 75static void *workerfn(void *arg)
76{ 76{
77 struct worker *w = (struct worker *) arg; 77 struct worker *w = (struct worker *) arg;
78 unsigned long ops = w->ops;
78 79
79 pthread_mutex_lock(&thread_lock); 80 pthread_mutex_lock(&thread_lock);
80 threads_starting--; 81 threads_starting--;
@@ -103,9 +104,10 @@ static void *workerfn(void *arg)
103 if (ret && !silent) 104 if (ret && !silent)
104 warn("thread %d: Could not unlock pi-lock for %p (%d)", 105 warn("thread %d: Could not unlock pi-lock for %p (%d)",
105 w->tid, w->futex, ret); 106 w->tid, w->futex, ret);
106 w->ops++; /* account for thread's share of work */ 107 ops++; /* account for thread's share of work */
107 } while (!done); 108 } while (!done);
108 109
110 w->ops = ops;
109 return NULL; 111 return NULL;
110} 112}
111 113
@@ -150,6 +152,7 @@ int bench_futex_lock_pi(int argc, const char **argv,
150 goto err; 152 goto err;
151 153
152 ncpus = sysconf(_SC_NPROCESSORS_ONLN); 154 ncpus = sysconf(_SC_NPROCESSORS_ONLN);
155 nsecs = futexbench_sanitize_numeric(nsecs);
153 156
154 sigfillset(&act.sa_mask); 157 sigfillset(&act.sa_mask);
155 act.sa_sigaction = toggle_done; 158 act.sa_sigaction = toggle_done;
@@ -157,6 +160,8 @@ int bench_futex_lock_pi(int argc, const char **argv,
157 160
158 if (!nthreads) 161 if (!nthreads)
159 nthreads = ncpus; 162 nthreads = ncpus;
163 else
164 nthreads = futexbench_sanitize_numeric(nthreads);
160 165
161 worker = calloc(nthreads, sizeof(*worker)); 166 worker = calloc(nthreads, sizeof(*worker));
162 if (!worker) 167 if (!worker)
diff --git a/tools/perf/bench/futex-requeue.c b/tools/perf/bench/futex-requeue.c
index f96e22ed9f87..fd4ee95b689a 100644
--- a/tools/perf/bench/futex-requeue.c
+++ b/tools/perf/bench/futex-requeue.c
@@ -16,6 +16,7 @@
16#include <subcmd/parse-options.h> 16#include <subcmd/parse-options.h>
17#include <linux/compiler.h> 17#include <linux/compiler.h>
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/time64.h>
19#include <errno.h> 20#include <errno.h>
20#include "bench.h" 21#include "bench.h"
21#include "futex.h" 22#include "futex.h"
@@ -62,7 +63,7 @@ static void print_summary(void)
62 printf("Requeued %d of %d threads in %.4f ms (+-%.2f%%)\n", 63 printf("Requeued %d of %d threads in %.4f ms (+-%.2f%%)\n",
63 requeued_avg, 64 requeued_avg,
64 nthreads, 65 nthreads,
65 requeuetime_avg/1e3, 66 requeuetime_avg / USEC_PER_MSEC,
66 rel_stddev_stats(requeuetime_stddev, requeuetime_avg)); 67 rel_stddev_stats(requeuetime_stddev, requeuetime_avg));
67} 68}
68 69
@@ -127,6 +128,8 @@ int bench_futex_requeue(int argc, const char **argv,
127 128
128 if (!nthreads) 129 if (!nthreads)
129 nthreads = ncpus; 130 nthreads = ncpus;
131 else
132 nthreads = futexbench_sanitize_numeric(nthreads);
130 133
131 worker = calloc(nthreads, sizeof(*worker)); 134 worker = calloc(nthreads, sizeof(*worker));
132 if (!worker) 135 if (!worker)
@@ -184,7 +187,7 @@ int bench_futex_requeue(int argc, const char **argv,
184 187
185 if (!silent) { 188 if (!silent) {
186 printf("[Run %d]: Requeued %d of %d threads in %.4f ms\n", 189 printf("[Run %d]: Requeued %d of %d threads in %.4f ms\n",
187 j + 1, nrequeued, nthreads, runtime.tv_usec/1e3); 190 j + 1, nrequeued, nthreads, runtime.tv_usec / (double)USEC_PER_MSEC);
188 } 191 }
189 192
190 /* everybody should be blocked on futex2, wake'em up */ 193 /* everybody should be blocked on futex2, wake'em up */
diff --git a/tools/perf/bench/futex-wake-parallel.c b/tools/perf/bench/futex-wake-parallel.c
index 4a2ecd7438ca..beaa6c142477 100644
--- a/tools/perf/bench/futex-wake-parallel.c
+++ b/tools/perf/bench/futex-wake-parallel.c
@@ -15,6 +15,7 @@
15#include <subcmd/parse-options.h> 15#include <subcmd/parse-options.h>
16#include <linux/compiler.h> 16#include <linux/compiler.h>
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/time64.h>
18#include <errno.h> 19#include <errno.h>
19#include "bench.h" 20#include "bench.h"
20#include "futex.h" 21#include "futex.h"
@@ -156,7 +157,7 @@ static void print_run(struct thread_data *waking_worker, unsigned int run_num)
156 157
157 printf("[Run %d]: Avg per-thread latency (waking %d/%d threads) " 158 printf("[Run %d]: Avg per-thread latency (waking %d/%d threads) "
158 "in %.4f ms (+-%.2f%%)\n", run_num + 1, wakeup_avg, 159 "in %.4f ms (+-%.2f%%)\n", run_num + 1, wakeup_avg,
159 nblocked_threads, waketime_avg/1e3, 160 nblocked_threads, waketime_avg / USEC_PER_MSEC,
160 rel_stddev_stats(waketime_stddev, waketime_avg)); 161 rel_stddev_stats(waketime_stddev, waketime_avg));
161} 162}
162 163
@@ -172,7 +173,7 @@ static void print_summary(void)
172 printf("Avg per-thread latency (waking %d/%d threads) in %.4f ms (+-%.2f%%)\n", 173 printf("Avg per-thread latency (waking %d/%d threads) in %.4f ms (+-%.2f%%)\n",
173 wakeup_avg, 174 wakeup_avg,
174 nblocked_threads, 175 nblocked_threads,
175 waketime_avg/1e3, 176 waketime_avg / USEC_PER_MSEC,
176 rel_stddev_stats(waketime_stddev, waketime_avg)); 177 rel_stddev_stats(waketime_stddev, waketime_avg));
177} 178}
178 179
@@ -216,8 +217,12 @@ int bench_futex_wake_parallel(int argc, const char **argv,
216 sigaction(SIGINT, &act, NULL); 217 sigaction(SIGINT, &act, NULL);
217 218
218 ncpus = sysconf(_SC_NPROCESSORS_ONLN); 219 ncpus = sysconf(_SC_NPROCESSORS_ONLN);
220 nwaking_threads = futexbench_sanitize_numeric(nwaking_threads);
221
219 if (!nblocked_threads) 222 if (!nblocked_threads)
220 nblocked_threads = ncpus; 223 nblocked_threads = ncpus;
224 else
225 nblocked_threads = futexbench_sanitize_numeric(nblocked_threads);
221 226
222 /* some sanity checks */ 227 /* some sanity checks */
223 if (nwaking_threads > nblocked_threads || !nwaking_threads) 228 if (nwaking_threads > nblocked_threads || !nwaking_threads)
diff --git a/tools/perf/bench/futex-wake.c b/tools/perf/bench/futex-wake.c
index 87d8f4f292d9..46efcb98b5a4 100644
--- a/tools/perf/bench/futex-wake.c
+++ b/tools/perf/bench/futex-wake.c
@@ -16,6 +16,7 @@
16#include <subcmd/parse-options.h> 16#include <subcmd/parse-options.h>
17#include <linux/compiler.h> 17#include <linux/compiler.h>
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/time64.h>
19#include <errno.h> 20#include <errno.h>
20#include "bench.h" 21#include "bench.h"
21#include "futex.h" 22#include "futex.h"
@@ -81,7 +82,7 @@ static void print_summary(void)
81 printf("Wokeup %d of %d threads in %.4f ms (+-%.2f%%)\n", 82 printf("Wokeup %d of %d threads in %.4f ms (+-%.2f%%)\n",
82 wakeup_avg, 83 wakeup_avg,
83 nthreads, 84 nthreads,
84 waketime_avg/1e3, 85 waketime_avg / USEC_PER_MSEC,
85 rel_stddev_stats(waketime_stddev, waketime_avg)); 86 rel_stddev_stats(waketime_stddev, waketime_avg));
86} 87}
87 88
@@ -128,6 +129,7 @@ int bench_futex_wake(int argc, const char **argv,
128 } 129 }
129 130
130 ncpus = sysconf(_SC_NPROCESSORS_ONLN); 131 ncpus = sysconf(_SC_NPROCESSORS_ONLN);
132 nwakes = futexbench_sanitize_numeric(nwakes);
131 133
132 sigfillset(&act.sa_mask); 134 sigfillset(&act.sa_mask);
133 act.sa_sigaction = toggle_done; 135 act.sa_sigaction = toggle_done;
@@ -135,6 +137,8 @@ int bench_futex_wake(int argc, const char **argv,
135 137
136 if (!nthreads) 138 if (!nthreads)
137 nthreads = ncpus; 139 nthreads = ncpus;
140 else
141 nthreads = futexbench_sanitize_numeric(nthreads);
138 142
139 worker = calloc(nthreads, sizeof(*worker)); 143 worker = calloc(nthreads, sizeof(*worker));
140 if (!worker) 144 if (!worker)
@@ -182,7 +186,7 @@ int bench_futex_wake(int argc, const char **argv,
182 186
183 if (!silent) { 187 if (!silent) {
184 printf("[Run %d]: Wokeup %d of %d threads in %.4f ms\n", 188 printf("[Run %d]: Wokeup %d of %d threads in %.4f ms\n",
185 j + 1, nwoken, nthreads, runtime.tv_usec/1e3); 189 j + 1, nwoken, nthreads, runtime.tv_usec / (double)USEC_PER_MSEC);
186 } 190 }
187 191
188 for (i = 0; i < nthreads; i++) { 192 for (i = 0; i < nthreads; i++) {
diff --git a/tools/perf/bench/futex.h b/tools/perf/bench/futex.h
index b2e06d1190d0..ba7c735c0c62 100644
--- a/tools/perf/bench/futex.h
+++ b/tools/perf/bench/futex.h
@@ -7,6 +7,7 @@
7#ifndef _FUTEX_H 7#ifndef _FUTEX_H
8#define _FUTEX_H 8#define _FUTEX_H
9 9
10#include <stdlib.h>
10#include <unistd.h> 11#include <unistd.h>
11#include <sys/syscall.h> 12#include <sys/syscall.h>
12#include <sys/types.h> 13#include <sys/types.h>
@@ -99,4 +100,7 @@ static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
99} 100}
100#endif 101#endif
101 102
103/* User input sanitation */
104#define futexbench_sanitize_numeric(__n) abs((__n))
105
102#endif /* _FUTEX_H */ 106#endif /* _FUTEX_H */
diff --git a/tools/perf/bench/mem-functions.c b/tools/perf/bench/mem-functions.c
index 2b54d0f2672a..52504a83b5a1 100644
--- a/tools/perf/bench/mem-functions.c
+++ b/tools/perf/bench/mem-functions.c
@@ -21,6 +21,7 @@
21#include <string.h> 21#include <string.h>
22#include <sys/time.h> 22#include <sys/time.h>
23#include <errno.h> 23#include <errno.h>
24#include <linux/time64.h>
24 25
25#define K 1024 26#define K 1024
26 27
@@ -89,7 +90,7 @@ static u64 get_cycles(void)
89 90
90static double timeval2double(struct timeval *ts) 91static double timeval2double(struct timeval *ts)
91{ 92{
92 return (double)ts->tv_sec + (double)ts->tv_usec / (double)1000000; 93 return (double)ts->tv_sec + (double)ts->tv_usec / (double)USEC_PER_SEC;
93} 94}
94 95
95#define print_bps(x) do { \ 96#define print_bps(x) do { \
@@ -105,9 +106,10 @@ static double timeval2double(struct timeval *ts)
105 106
106struct bench_mem_info { 107struct bench_mem_info {
107 const struct function *functions; 108 const struct function *functions;
108 u64 (*do_cycles)(const struct function *r, size_t size); 109 u64 (*do_cycles)(const struct function *r, size_t size, void *src, void *dst);
109 double (*do_gettimeofday)(const struct function *r, size_t size); 110 double (*do_gettimeofday)(const struct function *r, size_t size, void *src, void *dst);
110 const char *const *usage; 111 const char *const *usage;
112 bool alloc_src;
111}; 113};
112 114
113static void __bench_mem_function(struct bench_mem_info *info, int r_idx, size_t size, double size_total) 115static void __bench_mem_function(struct bench_mem_info *info, int r_idx, size_t size, double size_total)
@@ -115,16 +117,26 @@ static void __bench_mem_function(struct bench_mem_info *info, int r_idx, size_t
115 const struct function *r = &info->functions[r_idx]; 117 const struct function *r = &info->functions[r_idx];
116 double result_bps = 0.0; 118 double result_bps = 0.0;
117 u64 result_cycles = 0; 119 u64 result_cycles = 0;
120 void *src = NULL, *dst = zalloc(size);
118 121
119 printf("# function '%s' (%s)\n", r->name, r->desc); 122 printf("# function '%s' (%s)\n", r->name, r->desc);
120 123
124 if (dst == NULL)
125 goto out_alloc_failed;
126
127 if (info->alloc_src) {
128 src = zalloc(size);
129 if (src == NULL)
130 goto out_alloc_failed;
131 }
132
121 if (bench_format == BENCH_FORMAT_DEFAULT) 133 if (bench_format == BENCH_FORMAT_DEFAULT)
122 printf("# Copying %s bytes ...\n\n", size_str); 134 printf("# Copying %s bytes ...\n\n", size_str);
123 135
124 if (use_cycles) { 136 if (use_cycles) {
125 result_cycles = info->do_cycles(r, size); 137 result_cycles = info->do_cycles(r, size, src, dst);
126 } else { 138 } else {
127 result_bps = info->do_gettimeofday(r, size); 139 result_bps = info->do_gettimeofday(r, size, src, dst);
128 } 140 }
129 141
130 switch (bench_format) { 142 switch (bench_format) {
@@ -148,6 +160,14 @@ static void __bench_mem_function(struct bench_mem_info *info, int r_idx, size_t
148 BUG_ON(1); 160 BUG_ON(1);
149 break; 161 break;
150 } 162 }
163
164out_free:
165 free(src);
166 free(dst);
167 return;
168out_alloc_failed:
169 printf("# Memory allocation failed - maybe size (%s) is too large?\n", size_str);
170 goto out_free;
151} 171}
152 172
153static int bench_mem_common(int argc, const char **argv, struct bench_mem_info *info) 173static int bench_mem_common(int argc, const char **argv, struct bench_mem_info *info)
@@ -200,28 +220,14 @@ static int bench_mem_common(int argc, const char **argv, struct bench_mem_info *
200 return 0; 220 return 0;
201} 221}
202 222
203static void memcpy_alloc_mem(void **dst, void **src, size_t size) 223static u64 do_memcpy_cycles(const struct function *r, size_t size, void *src, void *dst)
204{
205 *dst = zalloc(size);
206 if (!*dst)
207 die("memory allocation failed - maybe size is too large?\n");
208
209 *src = zalloc(size);
210 if (!*src)
211 die("memory allocation failed - maybe size is too large?\n");
212
213 /* Make sure to always prefault zero pages even if MMAP_THRESH is crossed: */
214 memset(*src, 0, size);
215}
216
217static u64 do_memcpy_cycles(const struct function *r, size_t size)
218{ 224{
219 u64 cycle_start = 0ULL, cycle_end = 0ULL; 225 u64 cycle_start = 0ULL, cycle_end = 0ULL;
220 void *src = NULL, *dst = NULL;
221 memcpy_t fn = r->fn.memcpy; 226 memcpy_t fn = r->fn.memcpy;
222 int i; 227 int i;
223 228
224 memcpy_alloc_mem(&dst, &src, size); 229 /* Make sure to always prefault zero pages even if MMAP_THRESH is crossed: */
230 memset(src, 0, size);
225 231
226 /* 232 /*
227 * We prefault the freshly allocated memory range here, 233 * We prefault the freshly allocated memory range here,
@@ -234,20 +240,15 @@ static u64 do_memcpy_cycles(const struct function *r, size_t size)
234 fn(dst, src, size); 240 fn(dst, src, size);
235 cycle_end = get_cycles(); 241 cycle_end = get_cycles();
236 242
237 free(src);
238 free(dst);
239 return cycle_end - cycle_start; 243 return cycle_end - cycle_start;
240} 244}
241 245
242static double do_memcpy_gettimeofday(const struct function *r, size_t size) 246static double do_memcpy_gettimeofday(const struct function *r, size_t size, void *src, void *dst)
243{ 247{
244 struct timeval tv_start, tv_end, tv_diff; 248 struct timeval tv_start, tv_end, tv_diff;
245 memcpy_t fn = r->fn.memcpy; 249 memcpy_t fn = r->fn.memcpy;
246 void *src = NULL, *dst = NULL;
247 int i; 250 int i;
248 251
249 memcpy_alloc_mem(&dst, &src, size);
250
251 /* 252 /*
252 * We prefault the freshly allocated memory range here, 253 * We prefault the freshly allocated memory range here,
253 * to not measure page fault overhead: 254 * to not measure page fault overhead:
@@ -261,9 +262,6 @@ static double do_memcpy_gettimeofday(const struct function *r, size_t size)
261 262
262 timersub(&tv_end, &tv_start, &tv_diff); 263 timersub(&tv_end, &tv_start, &tv_diff);
263 264
264 free(src);
265 free(dst);
266
267 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff)); 265 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff));
268} 266}
269 267
@@ -293,27 +291,18 @@ int bench_mem_memcpy(int argc, const char **argv, const char *prefix __maybe_unu
293 .do_cycles = do_memcpy_cycles, 291 .do_cycles = do_memcpy_cycles,
294 .do_gettimeofday = do_memcpy_gettimeofday, 292 .do_gettimeofday = do_memcpy_gettimeofday,
295 .usage = bench_mem_memcpy_usage, 293 .usage = bench_mem_memcpy_usage,
294 .alloc_src = true,
296 }; 295 };
297 296
298 return bench_mem_common(argc, argv, &info); 297 return bench_mem_common(argc, argv, &info);
299} 298}
300 299
301static void memset_alloc_mem(void **dst, size_t size) 300static u64 do_memset_cycles(const struct function *r, size_t size, void *src __maybe_unused, void *dst)
302{
303 *dst = zalloc(size);
304 if (!*dst)
305 die("memory allocation failed - maybe size is too large?\n");
306}
307
308static u64 do_memset_cycles(const struct function *r, size_t size)
309{ 301{
310 u64 cycle_start = 0ULL, cycle_end = 0ULL; 302 u64 cycle_start = 0ULL, cycle_end = 0ULL;
311 memset_t fn = r->fn.memset; 303 memset_t fn = r->fn.memset;
312 void *dst = NULL;
313 int i; 304 int i;
314 305
315 memset_alloc_mem(&dst, size);
316
317 /* 306 /*
318 * We prefault the freshly allocated memory range here, 307 * We prefault the freshly allocated memory range here,
319 * to not measure page fault overhead: 308 * to not measure page fault overhead:
@@ -325,19 +314,15 @@ static u64 do_memset_cycles(const struct function *r, size_t size)
325 fn(dst, i, size); 314 fn(dst, i, size);
326 cycle_end = get_cycles(); 315 cycle_end = get_cycles();
327 316
328 free(dst);
329 return cycle_end - cycle_start; 317 return cycle_end - cycle_start;
330} 318}
331 319
332static double do_memset_gettimeofday(const struct function *r, size_t size) 320static double do_memset_gettimeofday(const struct function *r, size_t size, void *src __maybe_unused, void *dst)
333{ 321{
334 struct timeval tv_start, tv_end, tv_diff; 322 struct timeval tv_start, tv_end, tv_diff;
335 memset_t fn = r->fn.memset; 323 memset_t fn = r->fn.memset;
336 void *dst = NULL;
337 int i; 324 int i;
338 325
339 memset_alloc_mem(&dst, size);
340
341 /* 326 /*
342 * We prefault the freshly allocated memory range here, 327 * We prefault the freshly allocated memory range here,
343 * to not measure page fault overhead: 328 * to not measure page fault overhead:
@@ -351,7 +336,6 @@ static double do_memset_gettimeofday(const struct function *r, size_t size)
351 336
352 timersub(&tv_end, &tv_start, &tv_diff); 337 timersub(&tv_end, &tv_start, &tv_diff);
353 338
354 free(dst);
355 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff)); 339 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff));
356} 340}
357 341
diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
index f7f530081aa9..8efe904e486b 100644
--- a/tools/perf/bench/numa.c
+++ b/tools/perf/bench/numa.c
@@ -30,6 +30,7 @@
30#include <sys/wait.h> 30#include <sys/wait.h>
31#include <sys/prctl.h> 31#include <sys/prctl.h>
32#include <sys/types.h> 32#include <sys/types.h>
33#include <linux/time64.h>
33 34
34#include <numa.h> 35#include <numa.h>
35#include <numaif.h> 36#include <numaif.h>
@@ -1004,7 +1005,7 @@ static void calc_convergence(double runtime_ns_max, double *convergence)
1004 if (strong && process_groups == g->p.nr_proc) { 1005 if (strong && process_groups == g->p.nr_proc) {
1005 if (!*convergence) { 1006 if (!*convergence) {
1006 *convergence = runtime_ns_max; 1007 *convergence = runtime_ns_max;
1007 tprintf(" (%6.1fs converged)\n", *convergence/1e9); 1008 tprintf(" (%6.1fs converged)\n", *convergence / NSEC_PER_SEC);
1008 if (g->p.measure_convergence) { 1009 if (g->p.measure_convergence) {
1009 g->all_converged = true; 1010 g->all_converged = true;
1010 g->stop_work = true; 1011 g->stop_work = true;
@@ -1012,7 +1013,7 @@ static void calc_convergence(double runtime_ns_max, double *convergence)
1012 } 1013 }
1013 } else { 1014 } else {
1014 if (*convergence) { 1015 if (*convergence) {
1015 tprintf(" (%6.1fs de-converged)", runtime_ns_max/1e9); 1016 tprintf(" (%6.1fs de-converged)", runtime_ns_max / NSEC_PER_SEC);
1016 *convergence = 0; 1017 *convergence = 0;
1017 } 1018 }
1018 tprintf("\n"); 1019 tprintf("\n");
@@ -1022,7 +1023,7 @@ static void calc_convergence(double runtime_ns_max, double *convergence)
1022static void show_summary(double runtime_ns_max, int l, double *convergence) 1023static void show_summary(double runtime_ns_max, int l, double *convergence)
1023{ 1024{
1024 tprintf("\r # %5.1f%% [%.1f mins]", 1025 tprintf("\r # %5.1f%% [%.1f mins]",
1025 (double)(l+1)/g->p.nr_loops*100.0, runtime_ns_max/1e9 / 60.0); 1026 (double)(l+1)/g->p.nr_loops*100.0, runtime_ns_max / NSEC_PER_SEC / 60.0);
1026 1027
1027 calc_convergence(runtime_ns_max, convergence); 1028 calc_convergence(runtime_ns_max, convergence);
1028 1029
@@ -1179,8 +1180,8 @@ static void *worker_thread(void *__tdata)
1179 1180
1180 if (details >= 3) { 1181 if (details >= 3) {
1181 timersub(&stop, &start, &diff); 1182 timersub(&stop, &start, &diff);
1182 runtime_ns_max = diff.tv_sec * 1000000000; 1183 runtime_ns_max = diff.tv_sec * NSEC_PER_SEC;
1183 runtime_ns_max += diff.tv_usec * 1000; 1184 runtime_ns_max += diff.tv_usec * NSEC_PER_USEC;
1184 1185
1185 if (details >= 0) { 1186 if (details >= 0) {
1186 printf(" #%2d / %2d: %14.2lf nsecs/op [val: %016"PRIx64"]\n", 1187 printf(" #%2d / %2d: %14.2lf nsecs/op [val: %016"PRIx64"]\n",
@@ -1192,23 +1193,23 @@ static void *worker_thread(void *__tdata)
1192 continue; 1193 continue;
1193 1194
1194 timersub(&stop, &start0, &diff); 1195 timersub(&stop, &start0, &diff);
1195 runtime_ns_max = diff.tv_sec * 1000000000ULL; 1196 runtime_ns_max = diff.tv_sec * NSEC_PER_SEC;
1196 runtime_ns_max += diff.tv_usec * 1000ULL; 1197 runtime_ns_max += diff.tv_usec * NSEC_PER_USEC;
1197 1198
1198 show_summary(runtime_ns_max, l, &convergence); 1199 show_summary(runtime_ns_max, l, &convergence);
1199 } 1200 }
1200 1201
1201 gettimeofday(&stop, NULL); 1202 gettimeofday(&stop, NULL);
1202 timersub(&stop, &start0, &diff); 1203 timersub(&stop, &start0, &diff);
1203 td->runtime_ns = diff.tv_sec * 1000000000ULL; 1204 td->runtime_ns = diff.tv_sec * NSEC_PER_SEC;
1204 td->runtime_ns += diff.tv_usec * 1000ULL; 1205 td->runtime_ns += diff.tv_usec * NSEC_PER_USEC;
1205 td->speed_gbs = bytes_done / (td->runtime_ns / 1e9) / 1e9; 1206 td->speed_gbs = bytes_done / (td->runtime_ns / NSEC_PER_SEC) / 1e9;
1206 1207
1207 getrusage(RUSAGE_THREAD, &rusage); 1208 getrusage(RUSAGE_THREAD, &rusage);
1208 td->system_time_ns = rusage.ru_stime.tv_sec * 1000000000ULL; 1209 td->system_time_ns = rusage.ru_stime.tv_sec * NSEC_PER_SEC;
1209 td->system_time_ns += rusage.ru_stime.tv_usec * 1000ULL; 1210 td->system_time_ns += rusage.ru_stime.tv_usec * NSEC_PER_USEC;
1210 td->user_time_ns = rusage.ru_utime.tv_sec * 1000000000ULL; 1211 td->user_time_ns = rusage.ru_utime.tv_sec * NSEC_PER_SEC;
1211 td->user_time_ns += rusage.ru_utime.tv_usec * 1000ULL; 1212 td->user_time_ns += rusage.ru_utime.tv_usec * NSEC_PER_USEC;
1212 1213
1213 free_data(thread_data, g->p.bytes_thread); 1214 free_data(thread_data, g->p.bytes_thread);
1214 1215
@@ -1469,7 +1470,7 @@ static int __bench_numa(const char *name)
1469 } 1470 }
1470 /* Wait for all the threads to start up: */ 1471 /* Wait for all the threads to start up: */
1471 while (g->nr_tasks_started != g->p.nr_tasks) 1472 while (g->nr_tasks_started != g->p.nr_tasks)
1472 usleep(1000); 1473 usleep(USEC_PER_MSEC);
1473 1474
1474 BUG_ON(g->nr_tasks_started != g->p.nr_tasks); 1475 BUG_ON(g->nr_tasks_started != g->p.nr_tasks);
1475 1476
@@ -1488,9 +1489,9 @@ static int __bench_numa(const char *name)
1488 1489
1489 timersub(&stop, &start, &diff); 1490 timersub(&stop, &start, &diff);
1490 1491
1491 startup_sec = diff.tv_sec * 1000000000.0; 1492 startup_sec = diff.tv_sec * NSEC_PER_SEC;
1492 startup_sec += diff.tv_usec * 1000.0; 1493 startup_sec += diff.tv_usec * NSEC_PER_USEC;
1493 startup_sec /= 1e9; 1494 startup_sec /= NSEC_PER_SEC;
1494 1495
1495 tprintf(" threads initialized in %.6f seconds.\n", startup_sec); 1496 tprintf(" threads initialized in %.6f seconds.\n", startup_sec);
1496 tprintf(" #\n"); 1497 tprintf(" #\n");
@@ -1529,14 +1530,14 @@ static int __bench_numa(const char *name)
1529 tprintf("\n ###\n"); 1530 tprintf("\n ###\n");
1530 tprintf("\n"); 1531 tprintf("\n");
1531 1532
1532 runtime_sec_max = diff.tv_sec * 1000000000.0; 1533 runtime_sec_max = diff.tv_sec * NSEC_PER_SEC;
1533 runtime_sec_max += diff.tv_usec * 1000.0; 1534 runtime_sec_max += diff.tv_usec * NSEC_PER_USEC;
1534 runtime_sec_max /= 1e9; 1535 runtime_sec_max /= NSEC_PER_SEC;
1535 1536
1536 runtime_sec_min = runtime_ns_min/1e9; 1537 runtime_sec_min = runtime_ns_min / NSEC_PER_SEC;
1537 1538
1538 bytes = g->bytes_done; 1539 bytes = g->bytes_done;
1539 runtime_avg = (double)runtime_ns_sum / g->p.nr_tasks / 1e9; 1540 runtime_avg = (double)runtime_ns_sum / g->p.nr_tasks / NSEC_PER_SEC;
1540 1541
1541 if (g->p.measure_convergence) { 1542 if (g->p.measure_convergence) {
1542 print_res(name, runtime_sec_max, 1543 print_res(name, runtime_sec_max,
@@ -1562,7 +1563,7 @@ static int __bench_numa(const char *name)
1562 print_res(name, bytes / 1e9, 1563 print_res(name, bytes / 1e9,
1563 "GB,", "data-total", "GB data processed, total"); 1564 "GB,", "data-total", "GB data processed, total");
1564 1565
1565 print_res(name, runtime_sec_max * 1e9 / (bytes / g->p.nr_tasks), 1566 print_res(name, runtime_sec_max * NSEC_PER_SEC / (bytes / g->p.nr_tasks),
1566 "nsecs,", "runtime/byte/thread","nsecs/byte/thread runtime"); 1567 "nsecs,", "runtime/byte/thread","nsecs/byte/thread runtime");
1567 1568
1568 print_res(name, bytes / g->p.nr_tasks / 1e9 / runtime_sec_max, 1569 print_res(name, bytes / g->p.nr_tasks / 1e9 / runtime_sec_max,
@@ -1581,9 +1582,9 @@ static int __bench_numa(const char *name)
1581 snprintf(tname, 32, "process%d:thread%d", p, t); 1582 snprintf(tname, 32, "process%d:thread%d", p, t);
1582 print_res(tname, td->speed_gbs, 1583 print_res(tname, td->speed_gbs,
1583 "GB/sec", "thread-speed", "GB/sec/thread speed"); 1584 "GB/sec", "thread-speed", "GB/sec/thread speed");
1584 print_res(tname, td->system_time_ns / 1e9, 1585 print_res(tname, td->system_time_ns / NSEC_PER_SEC,
1585 "secs", "thread-system-time", "system CPU time/thread"); 1586 "secs", "thread-system-time", "system CPU time/thread");
1586 print_res(tname, td->user_time_ns / 1e9, 1587 print_res(tname, td->user_time_ns / NSEC_PER_SEC,
1587 "secs", "thread-user-time", "user CPU time/thread"); 1588 "secs", "thread-user-time", "user CPU time/thread");
1588 } 1589 }
1589 } 1590 }
diff --git a/tools/perf/bench/sched-messaging.c b/tools/perf/bench/sched-messaging.c
index bfaf9503de8e..6a111e775210 100644
--- a/tools/perf/bench/sched-messaging.c
+++ b/tools/perf/bench/sched-messaging.c
@@ -29,6 +29,7 @@
29#include <poll.h> 29#include <poll.h>
30#include <limits.h> 30#include <limits.h>
31#include <err.h> 31#include <err.h>
32#include <linux/time64.h>
32 33
33#define DATASIZE 100 34#define DATASIZE 100
34 35
@@ -312,11 +313,11 @@ int bench_sched_messaging(int argc, const char **argv,
312 thread_mode ? "threads" : "processes"); 313 thread_mode ? "threads" : "processes");
313 printf(" %14s: %lu.%03lu [sec]\n", "Total time", 314 printf(" %14s: %lu.%03lu [sec]\n", "Total time",
314 diff.tv_sec, 315 diff.tv_sec,
315 (unsigned long) (diff.tv_usec/1000)); 316 (unsigned long) (diff.tv_usec / USEC_PER_MSEC));
316 break; 317 break;
317 case BENCH_FORMAT_SIMPLE: 318 case BENCH_FORMAT_SIMPLE:
318 printf("%lu.%03lu\n", diff.tv_sec, 319 printf("%lu.%03lu\n", diff.tv_sec,
319 (unsigned long) (diff.tv_usec/1000)); 320 (unsigned long) (diff.tv_usec / USEC_PER_MSEC));
320 break; 321 break;
321 default: 322 default:
322 /* reaching here is something disaster */ 323 /* reaching here is something disaster */
diff --git a/tools/perf/bench/sched-pipe.c b/tools/perf/bench/sched-pipe.c
index 1dc2d13cc272..2243f0150d76 100644
--- a/tools/perf/bench/sched-pipe.c
+++ b/tools/perf/bench/sched-pipe.c
@@ -25,6 +25,7 @@
25#include <sys/time.h> 25#include <sys/time.h>
26#include <sys/types.h> 26#include <sys/types.h>
27#include <sys/syscall.h> 27#include <sys/syscall.h>
28#include <linux/time64.h>
28 29
29#include <pthread.h> 30#include <pthread.h>
30 31
@@ -153,24 +154,24 @@ int bench_sched_pipe(int argc, const char **argv, const char *prefix __maybe_unu
153 printf("# Executed %d pipe operations between two %s\n\n", 154 printf("# Executed %d pipe operations between two %s\n\n",
154 loops, threaded ? "threads" : "processes"); 155 loops, threaded ? "threads" : "processes");
155 156
156 result_usec = diff.tv_sec * 1000000; 157 result_usec = diff.tv_sec * USEC_PER_SEC;
157 result_usec += diff.tv_usec; 158 result_usec += diff.tv_usec;
158 159
159 printf(" %14s: %lu.%03lu [sec]\n\n", "Total time", 160 printf(" %14s: %lu.%03lu [sec]\n\n", "Total time",
160 diff.tv_sec, 161 diff.tv_sec,
161 (unsigned long) (diff.tv_usec/1000)); 162 (unsigned long) (diff.tv_usec / USEC_PER_MSEC));
162 163
163 printf(" %14lf usecs/op\n", 164 printf(" %14lf usecs/op\n",
164 (double)result_usec / (double)loops); 165 (double)result_usec / (double)loops);
165 printf(" %14d ops/sec\n", 166 printf(" %14d ops/sec\n",
166 (int)((double)loops / 167 (int)((double)loops /
167 ((double)result_usec / (double)1000000))); 168 ((double)result_usec / (double)USEC_PER_SEC)));
168 break; 169 break;
169 170
170 case BENCH_FORMAT_SIMPLE: 171 case BENCH_FORMAT_SIMPLE:
171 printf("%lu.%03lu\n", 172 printf("%lu.%03lu\n",
172 diff.tv_sec, 173 diff.tv_sec,
173 (unsigned long) (diff.tv_usec / 1000)); 174 (unsigned long) (diff.tv_usec / USEC_PER_MSEC));
174 break; 175 break;
175 176
176 default: 177 default:
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 9c1034d81b4f..ebb628332a6e 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -30,6 +30,7 @@
30#include "util/tool.h" 30#include "util/tool.h"
31#include "util/data.h" 31#include "util/data.h"
32#include "arch/common.h" 32#include "arch/common.h"
33#include "util/block-range.h"
33 34
34#include <dlfcn.h> 35#include <dlfcn.h>
35#include <linux/bitmap.h> 36#include <linux/bitmap.h>
@@ -46,6 +47,103 @@ struct perf_annotate {
46 DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); 47 DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
47}; 48};
48 49
50/*
51 * Given one basic block:
52 *
53 * from to branch_i
54 * * ----> *
55 * |
56 * | block
57 * v
58 * * ----> *
59 * from to branch_i+1
60 *
61 * where the horizontal are the branches and the vertical is the executed
62 * block of instructions.
63 *
64 * We count, for each 'instruction', the number of blocks that covered it as
65 * well as count the ratio each branch is taken.
66 *
67 * We can do this without knowing the actual instruction stream by keeping
68 * track of the address ranges. We break down ranges such that there is no
69 * overlap and iterate from the start until the end.
70 *
71 * @acme: once we parse the objdump output _before_ processing the samples,
72 * we can easily fold the branch.cycles IPC bits in.
73 */
74static void process_basic_block(struct addr_map_symbol *start,
75 struct addr_map_symbol *end,
76 struct branch_flags *flags)
77{
78 struct symbol *sym = start->sym;
79 struct annotation *notes = sym ? symbol__annotation(sym) : NULL;
80 struct block_range_iter iter;
81 struct block_range *entry;
82
83 /*
84 * Sanity; NULL isn't executable and the CPU cannot execute backwards
85 */
86 if (!start->addr || start->addr > end->addr)
87 return;
88
89 iter = block_range__create(start->addr, end->addr);
90 if (!block_range_iter__valid(&iter))
91 return;
92
93 /*
94 * First block in range is a branch target.
95 */
96 entry = block_range_iter(&iter);
97 assert(entry->is_target);
98 entry->entry++;
99
100 do {
101 entry = block_range_iter(&iter);
102
103 entry->coverage++;
104 entry->sym = sym;
105
106 if (notes)
107 notes->max_coverage = max(notes->max_coverage, entry->coverage);
108
109 } while (block_range_iter__next(&iter));
110
111 /*
112 * Last block in rage is a branch.
113 */
114 entry = block_range_iter(&iter);
115 assert(entry->is_branch);
116 entry->taken++;
117 if (flags->predicted)
118 entry->pred++;
119}
120
121static void process_branch_stack(struct branch_stack *bs, struct addr_location *al,
122 struct perf_sample *sample)
123{
124 struct addr_map_symbol *prev = NULL;
125 struct branch_info *bi;
126 int i;
127
128 if (!bs || !bs->nr)
129 return;
130
131 bi = sample__resolve_bstack(sample, al);
132 if (!bi)
133 return;
134
135 for (i = bs->nr - 1; i >= 0; i--) {
136 /*
137 * XXX filter against symbol
138 */
139 if (prev)
140 process_basic_block(prev, &bi[i].from, &bi[i].flags);
141 prev = &bi[i].to;
142 }
143
144 free(bi);
145}
146
49static int perf_evsel__add_sample(struct perf_evsel *evsel, 147static int perf_evsel__add_sample(struct perf_evsel *evsel,
50 struct perf_sample *sample, 148 struct perf_sample *sample,
51 struct addr_location *al, 149 struct addr_location *al,
@@ -72,6 +170,12 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel,
72 return 0; 170 return 0;
73 } 171 }
74 172
173 /*
174 * XXX filtered samples can still have branch entires pointing into our
175 * symbol and are missed.
176 */
177 process_branch_stack(sample->branch_stack, al, sample);
178
75 sample->period = 1; 179 sample->period = 1;
76 sample->weight = 1; 180 sample->weight = 1;
77 181
@@ -204,8 +308,6 @@ static int __cmd_annotate(struct perf_annotate *ann)
204 struct perf_evsel *pos; 308 struct perf_evsel *pos;
205 u64 total_nr_samples; 309 u64 total_nr_samples;
206 310
207 machines__set_symbol_filter(&session->machines, symbol__annotate_init);
208
209 if (ann->cpu_list) { 311 if (ann->cpu_list) {
210 ret = perf_session__cpu_bitmap(session, ann->cpu_list, 312 ret = perf_session__cpu_bitmap(session, ann->cpu_list,
211 ann->cpu_bitmap); 313 ann->cpu_bitmap);
@@ -367,7 +469,10 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
367 if (annotate.session == NULL) 469 if (annotate.session == NULL)
368 return -1; 470 return -1;
369 471
370 symbol_conf.priv_size = sizeof(struct annotation); 472 ret = symbol__annotation_init();
473 if (ret < 0)
474 goto out_delete;
475
371 symbol_conf.try_vmlinux_path = true; 476 symbol_conf.try_vmlinux_path = true;
372 477
373 ret = symbol__init(&annotate.session->header.env); 478 ret = symbol__init(&annotate.session->header.env);
diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
new file mode 100644
index 000000000000..f8ca7a4ebabc
--- /dev/null
+++ b/tools/perf/builtin-c2c.c
@@ -0,0 +1,2779 @@
1/*
2 * This is rewrite of original c2c tool introduced in here:
3 * http://lwn.net/Articles/588866/
4 *
5 * The original tool was changed to fit in current perf state.
6 *
7 * Original authors:
8 * Don Zickus <dzickus@redhat.com>
9 * Dick Fowles <fowles@inreach.com>
10 * Joe Mario <jmario@redhat.com>
11 */
12#include <linux/compiler.h>
13#include <linux/kernel.h>
14#include <linux/stringify.h>
15#include <asm/bug.h>
16#include "util.h"
17#include "debug.h"
18#include "builtin.h"
19#include <subcmd/parse-options.h>
20#include "mem-events.h"
21#include "session.h"
22#include "hist.h"
23#include "sort.h"
24#include "tool.h"
25#include "data.h"
26#include "sort.h"
27#include "evlist.h"
28#include "evsel.h"
29#include <asm/bug.h>
30#include "ui/browsers/hists.h"
31#include "evlist.h"
32
33struct c2c_hists {
34 struct hists hists;
35 struct perf_hpp_list list;
36 struct c2c_stats stats;
37};
38
39struct compute_stats {
40 struct stats lcl_hitm;
41 struct stats rmt_hitm;
42 struct stats load;
43};
44
45struct c2c_hist_entry {
46 struct c2c_hists *hists;
47 struct c2c_stats stats;
48 unsigned long *cpuset;
49 struct c2c_stats *node_stats;
50 unsigned int cacheline_idx;
51
52 struct compute_stats cstats;
53
54 /*
55 * must be at the end,
56 * because of its callchain dynamic entry
57 */
58 struct hist_entry he;
59};
60
61static char const *coalesce_default = "pid,tid,iaddr";
62
63struct perf_c2c {
64 struct perf_tool tool;
65 struct c2c_hists hists;
66
67 unsigned long **nodes;
68 int nodes_cnt;
69 int cpus_cnt;
70 int *cpu2node;
71 int node_info;
72
73 bool show_src;
74 bool show_all;
75 bool use_stdio;
76 bool stats_only;
77 bool symbol_full;
78
79 /* HITM shared clines stats */
80 struct c2c_stats hitm_stats;
81 int shared_clines;
82
83 int display;
84
85 const char *coalesce;
86 char *cl_sort;
87 char *cl_resort;
88 char *cl_output;
89};
90
91enum {
92 DISPLAY_LCL,
93 DISPLAY_RMT,
94 DISPLAY_TOT,
95 DISPLAY_MAX,
96};
97
98static const char *display_str[DISPLAY_MAX] = {
99 [DISPLAY_LCL] = "Local",
100 [DISPLAY_RMT] = "Remote",
101 [DISPLAY_TOT] = "Total",
102};
103
104static const struct option c2c_options[] = {
105 OPT_INCR('v', "verbose", &verbose, "be more verbose (show counter open errors, etc)"),
106 OPT_END()
107};
108
109static struct perf_c2c c2c;
110
111static void *c2c_he_zalloc(size_t size)
112{
113 struct c2c_hist_entry *c2c_he;
114
115 c2c_he = zalloc(size + sizeof(*c2c_he));
116 if (!c2c_he)
117 return NULL;
118
119 c2c_he->cpuset = bitmap_alloc(c2c.cpus_cnt);
120 if (!c2c_he->cpuset)
121 return NULL;
122
123 c2c_he->node_stats = zalloc(c2c.nodes_cnt * sizeof(*c2c_he->node_stats));
124 if (!c2c_he->node_stats)
125 return NULL;
126
127 init_stats(&c2c_he->cstats.lcl_hitm);
128 init_stats(&c2c_he->cstats.rmt_hitm);
129 init_stats(&c2c_he->cstats.load);
130
131 return &c2c_he->he;
132}
133
134static void c2c_he_free(void *he)
135{
136 struct c2c_hist_entry *c2c_he;
137
138 c2c_he = container_of(he, struct c2c_hist_entry, he);
139 if (c2c_he->hists) {
140 hists__delete_entries(&c2c_he->hists->hists);
141 free(c2c_he->hists);
142 }
143
144 free(c2c_he->cpuset);
145 free(c2c_he->node_stats);
146 free(c2c_he);
147}
148
149static struct hist_entry_ops c2c_entry_ops = {
150 .new = c2c_he_zalloc,
151 .free = c2c_he_free,
152};
153
154static int c2c_hists__init(struct c2c_hists *hists,
155 const char *sort,
156 int nr_header_lines);
157
158static struct c2c_hists*
159he__get_c2c_hists(struct hist_entry *he,
160 const char *sort,
161 int nr_header_lines)
162{
163 struct c2c_hist_entry *c2c_he;
164 struct c2c_hists *hists;
165 int ret;
166
167 c2c_he = container_of(he, struct c2c_hist_entry, he);
168 if (c2c_he->hists)
169 return c2c_he->hists;
170
171 hists = c2c_he->hists = zalloc(sizeof(*hists));
172 if (!hists)
173 return NULL;
174
175 ret = c2c_hists__init(hists, sort, nr_header_lines);
176 if (ret) {
177 free(hists);
178 return NULL;
179 }
180
181 return hists;
182}
183
184static void c2c_he__set_cpu(struct c2c_hist_entry *c2c_he,
185 struct perf_sample *sample)
186{
187 if (WARN_ONCE(sample->cpu == (unsigned int) -1,
188 "WARNING: no sample cpu value"))
189 return;
190
191 set_bit(sample->cpu, c2c_he->cpuset);
192}
193
194static void compute_stats(struct c2c_hist_entry *c2c_he,
195 struct c2c_stats *stats,
196 u64 weight)
197{
198 struct compute_stats *cstats = &c2c_he->cstats;
199
200 if (stats->rmt_hitm)
201 update_stats(&cstats->rmt_hitm, weight);
202 else if (stats->lcl_hitm)
203 update_stats(&cstats->lcl_hitm, weight);
204 else if (stats->load)
205 update_stats(&cstats->load, weight);
206}
207
208static int process_sample_event(struct perf_tool *tool __maybe_unused,
209 union perf_event *event,
210 struct perf_sample *sample,
211 struct perf_evsel *evsel,
212 struct machine *machine)
213{
214 struct c2c_hists *c2c_hists = &c2c.hists;
215 struct c2c_hist_entry *c2c_he;
216 struct c2c_stats stats = { .nr_entries = 0, };
217 struct hist_entry *he;
218 struct addr_location al;
219 struct mem_info *mi, *mi_dup;
220 int ret;
221
222 if (machine__resolve(machine, &al, sample) < 0) {
223 pr_debug("problem processing %d event, skipping it.\n",
224 event->header.type);
225 return -1;
226 }
227
228 ret = sample__resolve_callchain(sample, &callchain_cursor, NULL,
229 evsel, &al, sysctl_perf_event_max_stack);
230 if (ret)
231 goto out;
232
233 mi = sample__resolve_mem(sample, &al);
234 if (mi == NULL)
235 return -ENOMEM;
236
237 mi_dup = memdup(mi, sizeof(*mi));
238 if (!mi_dup)
239 goto free_mi;
240
241 c2c_decode_stats(&stats, mi);
242
243 he = hists__add_entry_ops(&c2c_hists->hists, &c2c_entry_ops,
244 &al, NULL, NULL, mi,
245 sample, true);
246 if (he == NULL)
247 goto free_mi_dup;
248
249 c2c_he = container_of(he, struct c2c_hist_entry, he);
250 c2c_add_stats(&c2c_he->stats, &stats);
251 c2c_add_stats(&c2c_hists->stats, &stats);
252
253 c2c_he__set_cpu(c2c_he, sample);
254
255 hists__inc_nr_samples(&c2c_hists->hists, he->filtered);
256 ret = hist_entry__append_callchain(he, sample);
257
258 if (!ret) {
259 /*
260 * There's already been warning about missing
261 * sample's cpu value. Let's account all to
262 * node 0 in this case, without any further
263 * warning.
264 *
265 * Doing node stats only for single callchain data.
266 */
267 int cpu = sample->cpu == (unsigned int) -1 ? 0 : sample->cpu;
268 int node = c2c.cpu2node[cpu];
269
270 mi = mi_dup;
271
272 mi_dup = memdup(mi, sizeof(*mi));
273 if (!mi_dup)
274 goto free_mi;
275
276 c2c_hists = he__get_c2c_hists(he, c2c.cl_sort, 2);
277 if (!c2c_hists)
278 goto free_mi_dup;
279
280 he = hists__add_entry_ops(&c2c_hists->hists, &c2c_entry_ops,
281 &al, NULL, NULL, mi,
282 sample, true);
283 if (he == NULL)
284 goto free_mi_dup;
285
286 c2c_he = container_of(he, struct c2c_hist_entry, he);
287 c2c_add_stats(&c2c_he->stats, &stats);
288 c2c_add_stats(&c2c_hists->stats, &stats);
289 c2c_add_stats(&c2c_he->node_stats[node], &stats);
290
291 compute_stats(c2c_he, &stats, sample->weight);
292
293 c2c_he__set_cpu(c2c_he, sample);
294
295 hists__inc_nr_samples(&c2c_hists->hists, he->filtered);
296 ret = hist_entry__append_callchain(he, sample);
297 }
298
299out:
300 addr_location__put(&al);
301 return ret;
302
303free_mi_dup:
304 free(mi_dup);
305free_mi:
306 free(mi);
307 ret = -ENOMEM;
308 goto out;
309}
310
311static struct perf_c2c c2c = {
312 .tool = {
313 .sample = process_sample_event,
314 .mmap = perf_event__process_mmap,
315 .mmap2 = perf_event__process_mmap2,
316 .comm = perf_event__process_comm,
317 .exit = perf_event__process_exit,
318 .fork = perf_event__process_fork,
319 .lost = perf_event__process_lost,
320 .ordered_events = true,
321 .ordering_requires_timestamps = true,
322 },
323};
324
325static const char * const c2c_usage[] = {
326 "perf c2c {record|report}",
327 NULL
328};
329
330static const char * const __usage_report[] = {
331 "perf c2c report",
332 NULL
333};
334
335static const char * const *report_c2c_usage = __usage_report;
336
337#define C2C_HEADER_MAX 2
338
339struct c2c_header {
340 struct {
341 const char *text;
342 int span;
343 } line[C2C_HEADER_MAX];
344};
345
346struct c2c_dimension {
347 struct c2c_header header;
348 const char *name;
349 int width;
350 struct sort_entry *se;
351
352 int64_t (*cmp)(struct perf_hpp_fmt *fmt,
353 struct hist_entry *, struct hist_entry *);
354 int (*entry)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
355 struct hist_entry *he);
356 int (*color)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
357 struct hist_entry *he);
358};
359
360struct c2c_fmt {
361 struct perf_hpp_fmt fmt;
362 struct c2c_dimension *dim;
363};
364
365#define SYMBOL_WIDTH 30
366
367static struct c2c_dimension dim_symbol;
368static struct c2c_dimension dim_srcline;
369
370static int symbol_width(struct hists *hists, struct sort_entry *se)
371{
372 int width = hists__col_len(hists, se->se_width_idx);
373
374 if (!c2c.symbol_full)
375 width = MIN(width, SYMBOL_WIDTH);
376
377 return width;
378}
379
380static int c2c_width(struct perf_hpp_fmt *fmt,
381 struct perf_hpp *hpp __maybe_unused,
382 struct hists *hists)
383{
384 struct c2c_fmt *c2c_fmt;
385 struct c2c_dimension *dim;
386
387 c2c_fmt = container_of(fmt, struct c2c_fmt, fmt);
388 dim = c2c_fmt->dim;
389
390 if (dim == &dim_symbol || dim == &dim_srcline)
391 return symbol_width(hists, dim->se);
392
393 return dim->se ? hists__col_len(hists, dim->se->se_width_idx) :
394 c2c_fmt->dim->width;
395}
396
397static int c2c_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
398 struct hists *hists, int line, int *span)
399{
400 struct perf_hpp_list *hpp_list = hists->hpp_list;
401 struct c2c_fmt *c2c_fmt;
402 struct c2c_dimension *dim;
403 const char *text = NULL;
404 int width = c2c_width(fmt, hpp, hists);
405
406 c2c_fmt = container_of(fmt, struct c2c_fmt, fmt);
407 dim = c2c_fmt->dim;
408
409 if (dim->se) {
410 text = dim->header.line[line].text;
411 /* Use the last line from sort_entry if not defined. */
412 if (!text && (line == hpp_list->nr_header_lines - 1))
413 text = dim->se->se_header;
414 } else {
415 text = dim->header.line[line].text;
416
417 if (*span) {
418 (*span)--;
419 return 0;
420 } else {
421 *span = dim->header.line[line].span;
422 }
423 }
424
425 if (text == NULL)
426 text = "";
427
428 return scnprintf(hpp->buf, hpp->size, "%*s", width, text);
429}
430
431#define HEX_STR(__s, __v) \
432({ \
433 scnprintf(__s, sizeof(__s), "0x%" PRIx64, __v); \
434 __s; \
435})
436
437static int64_t
438dcacheline_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
439 struct hist_entry *left, struct hist_entry *right)
440{
441 return sort__dcacheline_cmp(left, right);
442}
443
444static int dcacheline_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
445 struct hist_entry *he)
446{
447 uint64_t addr = 0;
448 int width = c2c_width(fmt, hpp, he->hists);
449 char buf[20];
450
451 if (he->mem_info)
452 addr = cl_address(he->mem_info->daddr.addr);
453
454 return scnprintf(hpp->buf, hpp->size, "%*s", width, HEX_STR(buf, addr));
455}
456
457static int offset_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
458 struct hist_entry *he)
459{
460 uint64_t addr = 0;
461 int width = c2c_width(fmt, hpp, he->hists);
462 char buf[20];
463
464 if (he->mem_info)
465 addr = cl_offset(he->mem_info->daddr.al_addr);
466
467 return scnprintf(hpp->buf, hpp->size, "%*s", width, HEX_STR(buf, addr));
468}
469
470static int64_t
471offset_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
472 struct hist_entry *left, struct hist_entry *right)
473{
474 uint64_t l = 0, r = 0;
475
476 if (left->mem_info)
477 l = cl_offset(left->mem_info->daddr.addr);
478 if (right->mem_info)
479 r = cl_offset(right->mem_info->daddr.addr);
480
481 return (int64_t)(r - l);
482}
483
484static int
485iaddr_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
486 struct hist_entry *he)
487{
488 uint64_t addr = 0;
489 int width = c2c_width(fmt, hpp, he->hists);
490 char buf[20];
491
492 if (he->mem_info)
493 addr = he->mem_info->iaddr.addr;
494
495 return scnprintf(hpp->buf, hpp->size, "%*s", width, HEX_STR(buf, addr));
496}
497
498static int64_t
499iaddr_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
500 struct hist_entry *left, struct hist_entry *right)
501{
502 return sort__iaddr_cmp(left, right);
503}
504
505static int
506tot_hitm_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
507 struct hist_entry *he)
508{
509 struct c2c_hist_entry *c2c_he;
510 int width = c2c_width(fmt, hpp, he->hists);
511 unsigned int tot_hitm;
512
513 c2c_he = container_of(he, struct c2c_hist_entry, he);
514 tot_hitm = c2c_he->stats.lcl_hitm + c2c_he->stats.rmt_hitm;
515
516 return scnprintf(hpp->buf, hpp->size, "%*u", width, tot_hitm);
517}
518
519static int64_t
520tot_hitm_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
521 struct hist_entry *left, struct hist_entry *right)
522{
523 struct c2c_hist_entry *c2c_left;
524 struct c2c_hist_entry *c2c_right;
525 unsigned int tot_hitm_left;
526 unsigned int tot_hitm_right;
527
528 c2c_left = container_of(left, struct c2c_hist_entry, he);
529 c2c_right = container_of(right, struct c2c_hist_entry, he);
530
531 tot_hitm_left = c2c_left->stats.lcl_hitm + c2c_left->stats.rmt_hitm;
532 tot_hitm_right = c2c_right->stats.lcl_hitm + c2c_right->stats.rmt_hitm;
533
534 return tot_hitm_left - tot_hitm_right;
535}
536
537#define STAT_FN_ENTRY(__f) \
538static int \
539__f ## _entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, \
540 struct hist_entry *he) \
541{ \
542 struct c2c_hist_entry *c2c_he; \
543 int width = c2c_width(fmt, hpp, he->hists); \
544 \
545 c2c_he = container_of(he, struct c2c_hist_entry, he); \
546 return scnprintf(hpp->buf, hpp->size, "%*u", width, \
547 c2c_he->stats.__f); \
548}
549
550#define STAT_FN_CMP(__f) \
551static int64_t \
552__f ## _cmp(struct perf_hpp_fmt *fmt __maybe_unused, \
553 struct hist_entry *left, struct hist_entry *right) \
554{ \
555 struct c2c_hist_entry *c2c_left, *c2c_right; \
556 \
557 c2c_left = container_of(left, struct c2c_hist_entry, he); \
558 c2c_right = container_of(right, struct c2c_hist_entry, he); \
559 return c2c_left->stats.__f - c2c_right->stats.__f; \
560}
561
562#define STAT_FN(__f) \
563 STAT_FN_ENTRY(__f) \
564 STAT_FN_CMP(__f)
565
566STAT_FN(rmt_hitm)
567STAT_FN(lcl_hitm)
568STAT_FN(store)
569STAT_FN(st_l1hit)
570STAT_FN(st_l1miss)
571STAT_FN(ld_fbhit)
572STAT_FN(ld_l1hit)
573STAT_FN(ld_l2hit)
574STAT_FN(ld_llchit)
575STAT_FN(rmt_hit)
576
577static uint64_t llc_miss(struct c2c_stats *stats)
578{
579 uint64_t llcmiss;
580
581 llcmiss = stats->lcl_dram +
582 stats->rmt_dram +
583 stats->rmt_hitm +
584 stats->rmt_hit;
585
586 return llcmiss;
587}
588
589static int
590ld_llcmiss_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
591 struct hist_entry *he)
592{
593 struct c2c_hist_entry *c2c_he;
594 int width = c2c_width(fmt, hpp, he->hists);
595
596 c2c_he = container_of(he, struct c2c_hist_entry, he);
597
598 return scnprintf(hpp->buf, hpp->size, "%*lu", width,
599 llc_miss(&c2c_he->stats));
600}
601
602static int64_t
603ld_llcmiss_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
604 struct hist_entry *left, struct hist_entry *right)
605{
606 struct c2c_hist_entry *c2c_left;
607 struct c2c_hist_entry *c2c_right;
608
609 c2c_left = container_of(left, struct c2c_hist_entry, he);
610 c2c_right = container_of(right, struct c2c_hist_entry, he);
611
612 return llc_miss(&c2c_left->stats) - llc_miss(&c2c_right->stats);
613}
614
615static uint64_t total_records(struct c2c_stats *stats)
616{
617 uint64_t lclmiss, ldcnt, total;
618
619 lclmiss = stats->lcl_dram +
620 stats->rmt_dram +
621 stats->rmt_hitm +
622 stats->rmt_hit;
623
624 ldcnt = lclmiss +
625 stats->ld_fbhit +
626 stats->ld_l1hit +
627 stats->ld_l2hit +
628 stats->ld_llchit +
629 stats->lcl_hitm;
630
631 total = ldcnt +
632 stats->st_l1hit +
633 stats->st_l1miss;
634
635 return total;
636}
637
638static int
639tot_recs_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
640 struct hist_entry *he)
641{
642 struct c2c_hist_entry *c2c_he;
643 int width = c2c_width(fmt, hpp, he->hists);
644 uint64_t tot_recs;
645
646 c2c_he = container_of(he, struct c2c_hist_entry, he);
647 tot_recs = total_records(&c2c_he->stats);
648
649 return scnprintf(hpp->buf, hpp->size, "%*" PRIu64, width, tot_recs);
650}
651
652static int64_t
653tot_recs_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
654 struct hist_entry *left, struct hist_entry *right)
655{
656 struct c2c_hist_entry *c2c_left;
657 struct c2c_hist_entry *c2c_right;
658 uint64_t tot_recs_left;
659 uint64_t tot_recs_right;
660
661 c2c_left = container_of(left, struct c2c_hist_entry, he);
662 c2c_right = container_of(right, struct c2c_hist_entry, he);
663
664 tot_recs_left = total_records(&c2c_left->stats);
665 tot_recs_right = total_records(&c2c_right->stats);
666
667 return tot_recs_left - tot_recs_right;
668}
669
670static uint64_t total_loads(struct c2c_stats *stats)
671{
672 uint64_t lclmiss, ldcnt;
673
674 lclmiss = stats->lcl_dram +
675 stats->rmt_dram +
676 stats->rmt_hitm +
677 stats->rmt_hit;
678
679 ldcnt = lclmiss +
680 stats->ld_fbhit +
681 stats->ld_l1hit +
682 stats->ld_l2hit +
683 stats->ld_llchit +
684 stats->lcl_hitm;
685
686 return ldcnt;
687}
688
689static int
690tot_loads_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
691 struct hist_entry *he)
692{
693 struct c2c_hist_entry *c2c_he;
694 int width = c2c_width(fmt, hpp, he->hists);
695 uint64_t tot_recs;
696
697 c2c_he = container_of(he, struct c2c_hist_entry, he);
698 tot_recs = total_loads(&c2c_he->stats);
699
700 return scnprintf(hpp->buf, hpp->size, "%*" PRIu64, width, tot_recs);
701}
702
703static int64_t
704tot_loads_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
705 struct hist_entry *left, struct hist_entry *right)
706{
707 struct c2c_hist_entry *c2c_left;
708 struct c2c_hist_entry *c2c_right;
709 uint64_t tot_recs_left;
710 uint64_t tot_recs_right;
711
712 c2c_left = container_of(left, struct c2c_hist_entry, he);
713 c2c_right = container_of(right, struct c2c_hist_entry, he);
714
715 tot_recs_left = total_loads(&c2c_left->stats);
716 tot_recs_right = total_loads(&c2c_right->stats);
717
718 return tot_recs_left - tot_recs_right;
719}
720
721typedef double (get_percent_cb)(struct c2c_hist_entry *);
722
723static int
724percent_color(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
725 struct hist_entry *he, get_percent_cb get_percent)
726{
727 struct c2c_hist_entry *c2c_he;
728 int width = c2c_width(fmt, hpp, he->hists);
729 double per;
730
731 c2c_he = container_of(he, struct c2c_hist_entry, he);
732 per = get_percent(c2c_he);
733
734#ifdef HAVE_SLANG_SUPPORT
735 if (use_browser)
736 return __hpp__slsmg_color_printf(hpp, "%*.2f%%", width - 1, per);
737#endif
738 return hpp_color_scnprintf(hpp, "%*.2f%%", width - 1, per);
739}
740
741static double percent_hitm(struct c2c_hist_entry *c2c_he)
742{
743 struct c2c_hists *hists;
744 struct c2c_stats *stats;
745 struct c2c_stats *total;
746 int tot = 0, st = 0;
747 double p;
748
749 hists = container_of(c2c_he->he.hists, struct c2c_hists, hists);
750 stats = &c2c_he->stats;
751 total = &hists->stats;
752
753 switch (c2c.display) {
754 case DISPLAY_RMT:
755 st = stats->rmt_hitm;
756 tot = total->rmt_hitm;
757 break;
758 case DISPLAY_LCL:
759 st = stats->lcl_hitm;
760 tot = total->lcl_hitm;
761 break;
762 case DISPLAY_TOT:
763 st = stats->tot_hitm;
764 tot = total->tot_hitm;
765 default:
766 break;
767 }
768
769 p = tot ? (double) st / tot : 0;
770
771 return 100 * p;
772}
773
774#define PERC_STR(__s, __v) \
775({ \
776 scnprintf(__s, sizeof(__s), "%.2F%%", __v); \
777 __s; \
778})
779
780static int
781percent_hitm_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
782 struct hist_entry *he)
783{
784 struct c2c_hist_entry *c2c_he;
785 int width = c2c_width(fmt, hpp, he->hists);
786 char buf[10];
787 double per;
788
789 c2c_he = container_of(he, struct c2c_hist_entry, he);
790 per = percent_hitm(c2c_he);
791 return scnprintf(hpp->buf, hpp->size, "%*s", width, PERC_STR(buf, per));
792}
793
794static int
795percent_hitm_color(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
796 struct hist_entry *he)
797{
798 return percent_color(fmt, hpp, he, percent_hitm);
799}
800
801static int64_t
802percent_hitm_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
803 struct hist_entry *left, struct hist_entry *right)
804{
805 struct c2c_hist_entry *c2c_left;
806 struct c2c_hist_entry *c2c_right;
807 double per_left;
808 double per_right;
809
810 c2c_left = container_of(left, struct c2c_hist_entry, he);
811 c2c_right = container_of(right, struct c2c_hist_entry, he);
812
813 per_left = percent_hitm(c2c_left);
814 per_right = percent_hitm(c2c_right);
815
816 return per_left - per_right;
817}
818
819static struct c2c_stats *he_stats(struct hist_entry *he)
820{
821 struct c2c_hist_entry *c2c_he;
822
823 c2c_he = container_of(he, struct c2c_hist_entry, he);
824 return &c2c_he->stats;
825}
826
827static struct c2c_stats *total_stats(struct hist_entry *he)
828{
829 struct c2c_hists *hists;
830
831 hists = container_of(he->hists, struct c2c_hists, hists);
832 return &hists->stats;
833}
834
835static double percent(int st, int tot)
836{
837 return tot ? 100. * (double) st / (double) tot : 0;
838}
839
840#define PERCENT(__h, __f) percent(he_stats(__h)->__f, total_stats(__h)->__f)
841
842#define PERCENT_FN(__f) \
843static double percent_ ## __f(struct c2c_hist_entry *c2c_he) \
844{ \
845 struct c2c_hists *hists; \
846 \
847 hists = container_of(c2c_he->he.hists, struct c2c_hists, hists); \
848 return percent(c2c_he->stats.__f, hists->stats.__f); \
849}
850
851PERCENT_FN(rmt_hitm)
852PERCENT_FN(lcl_hitm)
853PERCENT_FN(st_l1hit)
854PERCENT_FN(st_l1miss)
855
856static int
857percent_rmt_hitm_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
858 struct hist_entry *he)
859{
860 int width = c2c_width(fmt, hpp, he->hists);
861 double per = PERCENT(he, rmt_hitm);
862 char buf[10];
863
864 return scnprintf(hpp->buf, hpp->size, "%*s", width, PERC_STR(buf, per));
865}
866
867static int
868percent_rmt_hitm_color(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
869 struct hist_entry *he)
870{
871 return percent_color(fmt, hpp, he, percent_rmt_hitm);
872}
873
874static int64_t
875percent_rmt_hitm_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
876 struct hist_entry *left, struct hist_entry *right)
877{
878 double per_left;
879 double per_right;
880
881 per_left = PERCENT(left, lcl_hitm);
882 per_right = PERCENT(right, lcl_hitm);
883
884 return per_left - per_right;
885}
886
887static int
888percent_lcl_hitm_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
889 struct hist_entry *he)
890{
891 int width = c2c_width(fmt, hpp, he->hists);
892 double per = PERCENT(he, lcl_hitm);
893 char buf[10];
894
895 return scnprintf(hpp->buf, hpp->size, "%*s", width, PERC_STR(buf, per));
896}
897
898static int
899percent_lcl_hitm_color(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
900 struct hist_entry *he)
901{
902 return percent_color(fmt, hpp, he, percent_lcl_hitm);
903}
904
905static int64_t
906percent_lcl_hitm_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
907 struct hist_entry *left, struct hist_entry *right)
908{
909 double per_left;
910 double per_right;
911
912 per_left = PERCENT(left, lcl_hitm);
913 per_right = PERCENT(right, lcl_hitm);
914
915 return per_left - per_right;
916}
917
918static int
919percent_stores_l1hit_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
920 struct hist_entry *he)
921{
922 int width = c2c_width(fmt, hpp, he->hists);
923 double per = PERCENT(he, st_l1hit);
924 char buf[10];
925
926 return scnprintf(hpp->buf, hpp->size, "%*s", width, PERC_STR(buf, per));
927}
928
929static int
930percent_stores_l1hit_color(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
931 struct hist_entry *he)
932{
933 return percent_color(fmt, hpp, he, percent_st_l1hit);
934}
935
936static int64_t
937percent_stores_l1hit_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
938 struct hist_entry *left, struct hist_entry *right)
939{
940 double per_left;
941 double per_right;
942
943 per_left = PERCENT(left, st_l1hit);
944 per_right = PERCENT(right, st_l1hit);
945
946 return per_left - per_right;
947}
948
949static int
950percent_stores_l1miss_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
951 struct hist_entry *he)
952{
953 int width = c2c_width(fmt, hpp, he->hists);
954 double per = PERCENT(he, st_l1miss);
955 char buf[10];
956
957 return scnprintf(hpp->buf, hpp->size, "%*s", width, PERC_STR(buf, per));
958}
959
960static int
961percent_stores_l1miss_color(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
962 struct hist_entry *he)
963{
964 return percent_color(fmt, hpp, he, percent_st_l1miss);
965}
966
967static int64_t
968percent_stores_l1miss_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
969 struct hist_entry *left, struct hist_entry *right)
970{
971 double per_left;
972 double per_right;
973
974 per_left = PERCENT(left, st_l1miss);
975 per_right = PERCENT(right, st_l1miss);
976
977 return per_left - per_right;
978}
979
980STAT_FN(lcl_dram)
981STAT_FN(rmt_dram)
982
983static int
984pid_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
985 struct hist_entry *he)
986{
987 int width = c2c_width(fmt, hpp, he->hists);
988
989 return scnprintf(hpp->buf, hpp->size, "%*d", width, he->thread->pid_);
990}
991
992static int64_t
993pid_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
994 struct hist_entry *left, struct hist_entry *right)
995{
996 return left->thread->pid_ - right->thread->pid_;
997}
998
999static int64_t
1000empty_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
1001 struct hist_entry *left __maybe_unused,
1002 struct hist_entry *right __maybe_unused)
1003{
1004 return 0;
1005}
1006
1007static int
1008node_entry(struct perf_hpp_fmt *fmt __maybe_unused, struct perf_hpp *hpp,
1009 struct hist_entry *he)
1010{
1011 struct c2c_hist_entry *c2c_he;
1012 bool first = true;
1013 int node;
1014 int ret = 0;
1015
1016 c2c_he = container_of(he, struct c2c_hist_entry, he);
1017
1018 for (node = 0; node < c2c.nodes_cnt; node++) {
1019 DECLARE_BITMAP(set, c2c.cpus_cnt);
1020
1021 bitmap_zero(set, c2c.cpus_cnt);
1022 bitmap_and(set, c2c_he->cpuset, c2c.nodes[node], c2c.cpus_cnt);
1023
1024 if (!bitmap_weight(set, c2c.cpus_cnt)) {
1025 if (c2c.node_info == 1) {
1026 ret = scnprintf(hpp->buf, hpp->size, "%21s", " ");
1027 advance_hpp(hpp, ret);
1028 }
1029 continue;
1030 }
1031
1032 if (!first) {
1033 ret = scnprintf(hpp->buf, hpp->size, " ");
1034 advance_hpp(hpp, ret);
1035 }
1036
1037 switch (c2c.node_info) {
1038 case 0:
1039 ret = scnprintf(hpp->buf, hpp->size, "%2d", node);
1040 advance_hpp(hpp, ret);
1041 break;
1042 case 1:
1043 {
1044 int num = bitmap_weight(c2c_he->cpuset, c2c.cpus_cnt);
1045 struct c2c_stats *stats = &c2c_he->node_stats[node];
1046
1047 ret = scnprintf(hpp->buf, hpp->size, "%2d{%2d ", node, num);
1048 advance_hpp(hpp, ret);
1049
1050 #define DISPLAY_HITM(__h) \
1051 if (c2c_he->stats.__h> 0) { \
1052 ret = scnprintf(hpp->buf, hpp->size, "%5.1f%% ", \
1053 percent(stats->__h, c2c_he->stats.__h));\
1054 } else { \
1055 ret = scnprintf(hpp->buf, hpp->size, "%6s ", "n/a"); \
1056 }
1057
1058 switch (c2c.display) {
1059 case DISPLAY_RMT:
1060 DISPLAY_HITM(rmt_hitm);
1061 break;
1062 case DISPLAY_LCL:
1063 DISPLAY_HITM(lcl_hitm);
1064 break;
1065 case DISPLAY_TOT:
1066 DISPLAY_HITM(tot_hitm);
1067 default:
1068 break;
1069 }
1070
1071 #undef DISPLAY_HITM
1072
1073 advance_hpp(hpp, ret);
1074
1075 if (c2c_he->stats.store > 0) {
1076 ret = scnprintf(hpp->buf, hpp->size, "%5.1f%%}",
1077 percent(stats->store, c2c_he->stats.store));
1078 } else {
1079 ret = scnprintf(hpp->buf, hpp->size, "%6s}", "n/a");
1080 }
1081
1082 advance_hpp(hpp, ret);
1083 break;
1084 }
1085 case 2:
1086 ret = scnprintf(hpp->buf, hpp->size, "%2d{", node);
1087 advance_hpp(hpp, ret);
1088
1089 ret = bitmap_scnprintf(set, c2c.cpus_cnt, hpp->buf, hpp->size);
1090 advance_hpp(hpp, ret);
1091
1092 ret = scnprintf(hpp->buf, hpp->size, "}");
1093 advance_hpp(hpp, ret);
1094 break;
1095 default:
1096 break;
1097 }
1098
1099 first = false;
1100 }
1101
1102 return 0;
1103}
1104
1105static int
1106mean_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1107 struct hist_entry *he, double mean)
1108{
1109 int width = c2c_width(fmt, hpp, he->hists);
1110 char buf[10];
1111
1112 scnprintf(buf, 10, "%6.0f", mean);
1113 return scnprintf(hpp->buf, hpp->size, "%*s", width, buf);
1114}
1115
1116#define MEAN_ENTRY(__func, __val) \
1117static int \
1118__func(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, struct hist_entry *he) \
1119{ \
1120 struct c2c_hist_entry *c2c_he; \
1121 c2c_he = container_of(he, struct c2c_hist_entry, he); \
1122 return mean_entry(fmt, hpp, he, avg_stats(&c2c_he->cstats.__val)); \
1123}
1124
1125MEAN_ENTRY(mean_rmt_entry, rmt_hitm);
1126MEAN_ENTRY(mean_lcl_entry, lcl_hitm);
1127MEAN_ENTRY(mean_load_entry, load);
1128
1129static int
1130cpucnt_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1131 struct hist_entry *he)
1132{
1133 struct c2c_hist_entry *c2c_he;
1134 int width = c2c_width(fmt, hpp, he->hists);
1135 char buf[10];
1136
1137 c2c_he = container_of(he, struct c2c_hist_entry, he);
1138
1139 scnprintf(buf, 10, "%d", bitmap_weight(c2c_he->cpuset, c2c.cpus_cnt));
1140 return scnprintf(hpp->buf, hpp->size, "%*s", width, buf);
1141}
1142
1143static int
1144cl_idx_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1145 struct hist_entry *he)
1146{
1147 struct c2c_hist_entry *c2c_he;
1148 int width = c2c_width(fmt, hpp, he->hists);
1149 char buf[10];
1150
1151 c2c_he = container_of(he, struct c2c_hist_entry, he);
1152
1153 scnprintf(buf, 10, "%u", c2c_he->cacheline_idx);
1154 return scnprintf(hpp->buf, hpp->size, "%*s", width, buf);
1155}
1156
1157static int
1158cl_idx_empty_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1159 struct hist_entry *he)
1160{
1161 int width = c2c_width(fmt, hpp, he->hists);
1162
1163 return scnprintf(hpp->buf, hpp->size, "%*s", width, "");
1164}
1165
1166#define HEADER_LOW(__h) \
1167 { \
1168 .line[1] = { \
1169 .text = __h, \
1170 }, \
1171 }
1172
1173#define HEADER_BOTH(__h0, __h1) \
1174 { \
1175 .line[0] = { \
1176 .text = __h0, \
1177 }, \
1178 .line[1] = { \
1179 .text = __h1, \
1180 }, \
1181 }
1182
1183#define HEADER_SPAN(__h0, __h1, __s) \
1184 { \
1185 .line[0] = { \
1186 .text = __h0, \
1187 .span = __s, \
1188 }, \
1189 .line[1] = { \
1190 .text = __h1, \
1191 }, \
1192 }
1193
1194#define HEADER_SPAN_LOW(__h) \
1195 { \
1196 .line[1] = { \
1197 .text = __h, \
1198 }, \
1199 }
1200
1201static struct c2c_dimension dim_dcacheline = {
1202 .header = HEADER_LOW("Cacheline"),
1203 .name = "dcacheline",
1204 .cmp = dcacheline_cmp,
1205 .entry = dcacheline_entry,
1206 .width = 18,
1207};
1208
1209static struct c2c_header header_offset_tui = HEADER_LOW("Off");
1210
1211static struct c2c_dimension dim_offset = {
1212 .header = HEADER_BOTH("Data address", "Offset"),
1213 .name = "offset",
1214 .cmp = offset_cmp,
1215 .entry = offset_entry,
1216 .width = 18,
1217};
1218
1219static struct c2c_dimension dim_iaddr = {
1220 .header = HEADER_LOW("Code address"),
1221 .name = "iaddr",
1222 .cmp = iaddr_cmp,
1223 .entry = iaddr_entry,
1224 .width = 18,
1225};
1226
1227static struct c2c_dimension dim_tot_hitm = {
1228 .header = HEADER_SPAN("----- LLC Load Hitm -----", "Total", 2),
1229 .name = "tot_hitm",
1230 .cmp = tot_hitm_cmp,
1231 .entry = tot_hitm_entry,
1232 .width = 7,
1233};
1234
1235static struct c2c_dimension dim_lcl_hitm = {
1236 .header = HEADER_SPAN_LOW("Lcl"),
1237 .name = "lcl_hitm",
1238 .cmp = lcl_hitm_cmp,
1239 .entry = lcl_hitm_entry,
1240 .width = 7,
1241};
1242
1243static struct c2c_dimension dim_rmt_hitm = {
1244 .header = HEADER_SPAN_LOW("Rmt"),
1245 .name = "rmt_hitm",
1246 .cmp = rmt_hitm_cmp,
1247 .entry = rmt_hitm_entry,
1248 .width = 7,
1249};
1250
1251static struct c2c_dimension dim_cl_rmt_hitm = {
1252 .header = HEADER_SPAN("----- HITM -----", "Rmt", 1),
1253 .name = "cl_rmt_hitm",
1254 .cmp = rmt_hitm_cmp,
1255 .entry = rmt_hitm_entry,
1256 .width = 7,
1257};
1258
1259static struct c2c_dimension dim_cl_lcl_hitm = {
1260 .header = HEADER_SPAN_LOW("Lcl"),
1261 .name = "cl_lcl_hitm",
1262 .cmp = lcl_hitm_cmp,
1263 .entry = lcl_hitm_entry,
1264 .width = 7,
1265};
1266
1267static struct c2c_dimension dim_stores = {
1268 .header = HEADER_SPAN("---- Store Reference ----", "Total", 2),
1269 .name = "stores",
1270 .cmp = store_cmp,
1271 .entry = store_entry,
1272 .width = 7,
1273};
1274
1275static struct c2c_dimension dim_stores_l1hit = {
1276 .header = HEADER_SPAN_LOW("L1Hit"),
1277 .name = "stores_l1hit",
1278 .cmp = st_l1hit_cmp,
1279 .entry = st_l1hit_entry,
1280 .width = 7,
1281};
1282
1283static struct c2c_dimension dim_stores_l1miss = {
1284 .header = HEADER_SPAN_LOW("L1Miss"),
1285 .name = "stores_l1miss",
1286 .cmp = st_l1miss_cmp,
1287 .entry = st_l1miss_entry,
1288 .width = 7,
1289};
1290
1291static struct c2c_dimension dim_cl_stores_l1hit = {
1292 .header = HEADER_SPAN("-- Store Refs --", "L1 Hit", 1),
1293 .name = "cl_stores_l1hit",
1294 .cmp = st_l1hit_cmp,
1295 .entry = st_l1hit_entry,
1296 .width = 7,
1297};
1298
1299static struct c2c_dimension dim_cl_stores_l1miss = {
1300 .header = HEADER_SPAN_LOW("L1 Miss"),
1301 .name = "cl_stores_l1miss",
1302 .cmp = st_l1miss_cmp,
1303 .entry = st_l1miss_entry,
1304 .width = 7,
1305};
1306
1307static struct c2c_dimension dim_ld_fbhit = {
1308 .header = HEADER_SPAN("----- Core Load Hit -----", "FB", 2),
1309 .name = "ld_fbhit",
1310 .cmp = ld_fbhit_cmp,
1311 .entry = ld_fbhit_entry,
1312 .width = 7,
1313};
1314
1315static struct c2c_dimension dim_ld_l1hit = {
1316 .header = HEADER_SPAN_LOW("L1"),
1317 .name = "ld_l1hit",
1318 .cmp = ld_l1hit_cmp,
1319 .entry = ld_l1hit_entry,
1320 .width = 7,
1321};
1322
1323static struct c2c_dimension dim_ld_l2hit = {
1324 .header = HEADER_SPAN_LOW("L2"),
1325 .name = "ld_l2hit",
1326 .cmp = ld_l2hit_cmp,
1327 .entry = ld_l2hit_entry,
1328 .width = 7,
1329};
1330
1331static struct c2c_dimension dim_ld_llchit = {
1332 .header = HEADER_SPAN("-- LLC Load Hit --", "Llc", 1),
1333 .name = "ld_lclhit",
1334 .cmp = ld_llchit_cmp,
1335 .entry = ld_llchit_entry,
1336 .width = 8,
1337};
1338
1339static struct c2c_dimension dim_ld_rmthit = {
1340 .header = HEADER_SPAN_LOW("Rmt"),
1341 .name = "ld_rmthit",
1342 .cmp = rmt_hit_cmp,
1343 .entry = rmt_hit_entry,
1344 .width = 8,
1345};
1346
1347static struct c2c_dimension dim_ld_llcmiss = {
1348 .header = HEADER_BOTH("LLC", "Ld Miss"),
1349 .name = "ld_llcmiss",
1350 .cmp = ld_llcmiss_cmp,
1351 .entry = ld_llcmiss_entry,
1352 .width = 7,
1353};
1354
1355static struct c2c_dimension dim_tot_recs = {
1356 .header = HEADER_BOTH("Total", "records"),
1357 .name = "tot_recs",
1358 .cmp = tot_recs_cmp,
1359 .entry = tot_recs_entry,
1360 .width = 7,
1361};
1362
1363static struct c2c_dimension dim_tot_loads = {
1364 .header = HEADER_BOTH("Total", "Loads"),
1365 .name = "tot_loads",
1366 .cmp = tot_loads_cmp,
1367 .entry = tot_loads_entry,
1368 .width = 7,
1369};
1370
1371static struct c2c_header percent_hitm_header[] = {
1372 [DISPLAY_LCL] = HEADER_BOTH("Lcl", "Hitm"),
1373 [DISPLAY_RMT] = HEADER_BOTH("Rmt", "Hitm"),
1374 [DISPLAY_TOT] = HEADER_BOTH("Tot", "Hitm"),
1375};
1376
1377static struct c2c_dimension dim_percent_hitm = {
1378 .name = "percent_hitm",
1379 .cmp = percent_hitm_cmp,
1380 .entry = percent_hitm_entry,
1381 .color = percent_hitm_color,
1382 .width = 7,
1383};
1384
1385static struct c2c_dimension dim_percent_rmt_hitm = {
1386 .header = HEADER_SPAN("----- HITM -----", "Rmt", 1),
1387 .name = "percent_rmt_hitm",
1388 .cmp = percent_rmt_hitm_cmp,
1389 .entry = percent_rmt_hitm_entry,
1390 .color = percent_rmt_hitm_color,
1391 .width = 7,
1392};
1393
1394static struct c2c_dimension dim_percent_lcl_hitm = {
1395 .header = HEADER_SPAN_LOW("Lcl"),
1396 .name = "percent_lcl_hitm",
1397 .cmp = percent_lcl_hitm_cmp,
1398 .entry = percent_lcl_hitm_entry,
1399 .color = percent_lcl_hitm_color,
1400 .width = 7,
1401};
1402
1403static struct c2c_dimension dim_percent_stores_l1hit = {
1404 .header = HEADER_SPAN("-- Store Refs --", "L1 Hit", 1),
1405 .name = "percent_stores_l1hit",
1406 .cmp = percent_stores_l1hit_cmp,
1407 .entry = percent_stores_l1hit_entry,
1408 .color = percent_stores_l1hit_color,
1409 .width = 7,
1410};
1411
1412static struct c2c_dimension dim_percent_stores_l1miss = {
1413 .header = HEADER_SPAN_LOW("L1 Miss"),
1414 .name = "percent_stores_l1miss",
1415 .cmp = percent_stores_l1miss_cmp,
1416 .entry = percent_stores_l1miss_entry,
1417 .color = percent_stores_l1miss_color,
1418 .width = 7,
1419};
1420
1421static struct c2c_dimension dim_dram_lcl = {
1422 .header = HEADER_SPAN("--- Load Dram ----", "Lcl", 1),
1423 .name = "dram_lcl",
1424 .cmp = lcl_dram_cmp,
1425 .entry = lcl_dram_entry,
1426 .width = 8,
1427};
1428
1429static struct c2c_dimension dim_dram_rmt = {
1430 .header = HEADER_SPAN_LOW("Rmt"),
1431 .name = "dram_rmt",
1432 .cmp = rmt_dram_cmp,
1433 .entry = rmt_dram_entry,
1434 .width = 8,
1435};
1436
1437static struct c2c_dimension dim_pid = {
1438 .header = HEADER_LOW("Pid"),
1439 .name = "pid",
1440 .cmp = pid_cmp,
1441 .entry = pid_entry,
1442 .width = 7,
1443};
1444
1445static struct c2c_dimension dim_tid = {
1446 .header = HEADER_LOW("Tid"),
1447 .name = "tid",
1448 .se = &sort_thread,
1449};
1450
1451static struct c2c_dimension dim_symbol = {
1452 .name = "symbol",
1453 .se = &sort_sym,
1454};
1455
1456static struct c2c_dimension dim_dso = {
1457 .header = HEADER_BOTH("Shared", "Object"),
1458 .name = "dso",
1459 .se = &sort_dso,
1460};
1461
1462static struct c2c_header header_node[3] = {
1463 HEADER_LOW("Node"),
1464 HEADER_LOW("Node{cpus %hitms %stores}"),
1465 HEADER_LOW("Node{cpu list}"),
1466};
1467
1468static struct c2c_dimension dim_node = {
1469 .name = "node",
1470 .cmp = empty_cmp,
1471 .entry = node_entry,
1472 .width = 4,
1473};
1474
1475static struct c2c_dimension dim_mean_rmt = {
1476 .header = HEADER_SPAN("---------- cycles ----------", "rmt hitm", 2),
1477 .name = "mean_rmt",
1478 .cmp = empty_cmp,
1479 .entry = mean_rmt_entry,
1480 .width = 8,
1481};
1482
1483static struct c2c_dimension dim_mean_lcl = {
1484 .header = HEADER_SPAN_LOW("lcl hitm"),
1485 .name = "mean_lcl",
1486 .cmp = empty_cmp,
1487 .entry = mean_lcl_entry,
1488 .width = 8,
1489};
1490
1491static struct c2c_dimension dim_mean_load = {
1492 .header = HEADER_SPAN_LOW("load"),
1493 .name = "mean_load",
1494 .cmp = empty_cmp,
1495 .entry = mean_load_entry,
1496 .width = 8,
1497};
1498
1499static struct c2c_dimension dim_cpucnt = {
1500 .header = HEADER_BOTH("cpu", "cnt"),
1501 .name = "cpucnt",
1502 .cmp = empty_cmp,
1503 .entry = cpucnt_entry,
1504 .width = 8,
1505};
1506
1507static struct c2c_dimension dim_srcline = {
1508 .name = "cl_srcline",
1509 .se = &sort_srcline,
1510};
1511
1512static struct c2c_dimension dim_dcacheline_idx = {
1513 .header = HEADER_LOW("Index"),
1514 .name = "cl_idx",
1515 .cmp = empty_cmp,
1516 .entry = cl_idx_entry,
1517 .width = 5,
1518};
1519
1520static struct c2c_dimension dim_dcacheline_num = {
1521 .header = HEADER_LOW("Num"),
1522 .name = "cl_num",
1523 .cmp = empty_cmp,
1524 .entry = cl_idx_entry,
1525 .width = 5,
1526};
1527
1528static struct c2c_dimension dim_dcacheline_num_empty = {
1529 .header = HEADER_LOW("Num"),
1530 .name = "cl_num_empty",
1531 .cmp = empty_cmp,
1532 .entry = cl_idx_empty_entry,
1533 .width = 5,
1534};
1535
1536static struct c2c_dimension *dimensions[] = {
1537 &dim_dcacheline,
1538 &dim_offset,
1539 &dim_iaddr,
1540 &dim_tot_hitm,
1541 &dim_lcl_hitm,
1542 &dim_rmt_hitm,
1543 &dim_cl_lcl_hitm,
1544 &dim_cl_rmt_hitm,
1545 &dim_stores,
1546 &dim_stores_l1hit,
1547 &dim_stores_l1miss,
1548 &dim_cl_stores_l1hit,
1549 &dim_cl_stores_l1miss,
1550 &dim_ld_fbhit,
1551 &dim_ld_l1hit,
1552 &dim_ld_l2hit,
1553 &dim_ld_llchit,
1554 &dim_ld_rmthit,
1555 &dim_ld_llcmiss,
1556 &dim_tot_recs,
1557 &dim_tot_loads,
1558 &dim_percent_hitm,
1559 &dim_percent_rmt_hitm,
1560 &dim_percent_lcl_hitm,
1561 &dim_percent_stores_l1hit,
1562 &dim_percent_stores_l1miss,
1563 &dim_dram_lcl,
1564 &dim_dram_rmt,
1565 &dim_pid,
1566 &dim_tid,
1567 &dim_symbol,
1568 &dim_dso,
1569 &dim_node,
1570 &dim_mean_rmt,
1571 &dim_mean_lcl,
1572 &dim_mean_load,
1573 &dim_cpucnt,
1574 &dim_srcline,
1575 &dim_dcacheline_idx,
1576 &dim_dcacheline_num,
1577 &dim_dcacheline_num_empty,
1578 NULL,
1579};
1580
1581static void fmt_free(struct perf_hpp_fmt *fmt)
1582{
1583 struct c2c_fmt *c2c_fmt;
1584
1585 c2c_fmt = container_of(fmt, struct c2c_fmt, fmt);
1586 free(c2c_fmt);
1587}
1588
1589static bool fmt_equal(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
1590{
1591 struct c2c_fmt *c2c_a = container_of(a, struct c2c_fmt, fmt);
1592 struct c2c_fmt *c2c_b = container_of(b, struct c2c_fmt, fmt);
1593
1594 return c2c_a->dim == c2c_b->dim;
1595}
1596
1597static struct c2c_dimension *get_dimension(const char *name)
1598{
1599 unsigned int i;
1600
1601 for (i = 0; dimensions[i]; i++) {
1602 struct c2c_dimension *dim = dimensions[i];
1603
1604 if (!strcmp(dim->name, name))
1605 return dim;
1606 };
1607
1608 return NULL;
1609}
1610
1611static int c2c_se_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1612 struct hist_entry *he)
1613{
1614 struct c2c_fmt *c2c_fmt = container_of(fmt, struct c2c_fmt, fmt);
1615 struct c2c_dimension *dim = c2c_fmt->dim;
1616 size_t len = fmt->user_len;
1617
1618 if (!len) {
1619 len = hists__col_len(he->hists, dim->se->se_width_idx);
1620
1621 if (dim == &dim_symbol || dim == &dim_srcline)
1622 len = symbol_width(he->hists, dim->se);
1623 }
1624
1625 return dim->se->se_snprintf(he, hpp->buf, hpp->size, len);
1626}
1627
1628static int64_t c2c_se_cmp(struct perf_hpp_fmt *fmt,
1629 struct hist_entry *a, struct hist_entry *b)
1630{
1631 struct c2c_fmt *c2c_fmt = container_of(fmt, struct c2c_fmt, fmt);
1632 struct c2c_dimension *dim = c2c_fmt->dim;
1633
1634 return dim->se->se_cmp(a, b);
1635}
1636
1637static int64_t c2c_se_collapse(struct perf_hpp_fmt *fmt,
1638 struct hist_entry *a, struct hist_entry *b)
1639{
1640 struct c2c_fmt *c2c_fmt = container_of(fmt, struct c2c_fmt, fmt);
1641 struct c2c_dimension *dim = c2c_fmt->dim;
1642 int64_t (*collapse_fn)(struct hist_entry *, struct hist_entry *);
1643
1644 collapse_fn = dim->se->se_collapse ?: dim->se->se_cmp;
1645 return collapse_fn(a, b);
1646}
1647
1648static struct c2c_fmt *get_format(const char *name)
1649{
1650 struct c2c_dimension *dim = get_dimension(name);
1651 struct c2c_fmt *c2c_fmt;
1652 struct perf_hpp_fmt *fmt;
1653
1654 if (!dim)
1655 return NULL;
1656
1657 c2c_fmt = zalloc(sizeof(*c2c_fmt));
1658 if (!c2c_fmt)
1659 return NULL;
1660
1661 c2c_fmt->dim = dim;
1662
1663 fmt = &c2c_fmt->fmt;
1664 INIT_LIST_HEAD(&fmt->list);
1665 INIT_LIST_HEAD(&fmt->sort_list);
1666
1667 fmt->cmp = dim->se ? c2c_se_cmp : dim->cmp;
1668 fmt->sort = dim->se ? c2c_se_cmp : dim->cmp;
1669 fmt->color = dim->se ? NULL : dim->color;
1670 fmt->entry = dim->se ? c2c_se_entry : dim->entry;
1671 fmt->header = c2c_header;
1672 fmt->width = c2c_width;
1673 fmt->collapse = dim->se ? c2c_se_collapse : dim->cmp;
1674 fmt->equal = fmt_equal;
1675 fmt->free = fmt_free;
1676
1677 return c2c_fmt;
1678}
1679
1680static int c2c_hists__init_output(struct perf_hpp_list *hpp_list, char *name)
1681{
1682 struct c2c_fmt *c2c_fmt = get_format(name);
1683
1684 if (!c2c_fmt) {
1685 reset_dimensions();
1686 return output_field_add(hpp_list, name);
1687 }
1688
1689 perf_hpp_list__column_register(hpp_list, &c2c_fmt->fmt);
1690 return 0;
1691}
1692
1693static int c2c_hists__init_sort(struct perf_hpp_list *hpp_list, char *name)
1694{
1695 struct c2c_fmt *c2c_fmt = get_format(name);
1696 struct c2c_dimension *dim;
1697
1698 if (!c2c_fmt) {
1699 reset_dimensions();
1700 return sort_dimension__add(hpp_list, name, NULL, 0);
1701 }
1702
1703 dim = c2c_fmt->dim;
1704 if (dim == &dim_dso)
1705 hpp_list->dso = 1;
1706
1707 perf_hpp_list__register_sort_field(hpp_list, &c2c_fmt->fmt);
1708 return 0;
1709}
1710
1711#define PARSE_LIST(_list, _fn) \
1712 do { \
1713 char *tmp, *tok; \
1714 ret = 0; \
1715 \
1716 if (!_list) \
1717 break; \
1718 \
1719 for (tok = strtok_r((char *)_list, ", ", &tmp); \
1720 tok; tok = strtok_r(NULL, ", ", &tmp)) { \
1721 ret = _fn(hpp_list, tok); \
1722 if (ret == -EINVAL) { \
1723 error("Invalid --fields key: `%s'", tok); \
1724 break; \
1725 } else if (ret == -ESRCH) { \
1726 error("Unknown --fields key: `%s'", tok); \
1727 break; \
1728 } \
1729 } \
1730 } while (0)
1731
1732static int hpp_list__parse(struct perf_hpp_list *hpp_list,
1733 const char *output_,
1734 const char *sort_)
1735{
1736 char *output = output_ ? strdup(output_) : NULL;
1737 char *sort = sort_ ? strdup(sort_) : NULL;
1738 int ret;
1739
1740 PARSE_LIST(output, c2c_hists__init_output);
1741 PARSE_LIST(sort, c2c_hists__init_sort);
1742
1743 /* copy sort keys to output fields */
1744 perf_hpp__setup_output_field(hpp_list);
1745
1746 /*
1747 * We dont need other sorting keys other than those
1748 * we already specified. It also really slows down
1749 * the processing a lot with big number of output
1750 * fields, so switching this off for c2c.
1751 */
1752
1753#if 0
1754 /* and then copy output fields to sort keys */
1755 perf_hpp__append_sort_keys(&hists->list);
1756#endif
1757
1758 free(output);
1759 free(sort);
1760 return ret;
1761}
1762
1763static int c2c_hists__init(struct c2c_hists *hists,
1764 const char *sort,
1765 int nr_header_lines)
1766{
1767 __hists__init(&hists->hists, &hists->list);
1768
1769 /*
1770 * Initialize only with sort fields, we need to resort
1771 * later anyway, and that's where we add output fields
1772 * as well.
1773 */
1774 perf_hpp_list__init(&hists->list);
1775
1776 /* Overload number of header lines.*/
1777 hists->list.nr_header_lines = nr_header_lines;
1778
1779 return hpp_list__parse(&hists->list, NULL, sort);
1780}
1781
1782static int c2c_hists__reinit(struct c2c_hists *c2c_hists,
1783 const char *output,
1784 const char *sort)
1785{
1786 perf_hpp__reset_output_field(&c2c_hists->list);
1787 return hpp_list__parse(&c2c_hists->list, output, sort);
1788}
1789
1790#define DISPLAY_LINE_LIMIT 0.0005
1791
1792static bool he__display(struct hist_entry *he, struct c2c_stats *stats)
1793{
1794 struct c2c_hist_entry *c2c_he;
1795 double ld_dist;
1796
1797 if (c2c.show_all)
1798 return true;
1799
1800 c2c_he = container_of(he, struct c2c_hist_entry, he);
1801
1802#define FILTER_HITM(__h) \
1803 if (stats->__h) { \
1804 ld_dist = ((double)c2c_he->stats.__h / stats->__h); \
1805 if (ld_dist < DISPLAY_LINE_LIMIT) \
1806 he->filtered = HIST_FILTER__C2C; \
1807 } else { \
1808 he->filtered = HIST_FILTER__C2C; \
1809 }
1810
1811 switch (c2c.display) {
1812 case DISPLAY_LCL:
1813 FILTER_HITM(lcl_hitm);
1814 break;
1815 case DISPLAY_RMT:
1816 FILTER_HITM(rmt_hitm);
1817 break;
1818 case DISPLAY_TOT:
1819 FILTER_HITM(tot_hitm);
1820 default:
1821 break;
1822 };
1823
1824#undef FILTER_HITM
1825
1826 return he->filtered == 0;
1827}
1828
1829static inline int valid_hitm_or_store(struct hist_entry *he)
1830{
1831 struct c2c_hist_entry *c2c_he;
1832 bool has_hitm;
1833
1834 c2c_he = container_of(he, struct c2c_hist_entry, he);
1835 has_hitm = c2c.display == DISPLAY_TOT ? c2c_he->stats.tot_hitm :
1836 c2c.display == DISPLAY_LCL ? c2c_he->stats.lcl_hitm :
1837 c2c_he->stats.rmt_hitm;
1838 return has_hitm || c2c_he->stats.store;
1839}
1840
1841static void calc_width(struct hist_entry *he)
1842{
1843 struct c2c_hists *c2c_hists;
1844
1845 c2c_hists = container_of(he->hists, struct c2c_hists, hists);
1846 hists__calc_col_len(&c2c_hists->hists, he);
1847}
1848
1849static int filter_cb(struct hist_entry *he)
1850{
1851 if (c2c.show_src && !he->srcline)
1852 he->srcline = hist_entry__get_srcline(he);
1853
1854 calc_width(he);
1855
1856 if (!valid_hitm_or_store(he))
1857 he->filtered = HIST_FILTER__C2C;
1858
1859 return 0;
1860}
1861
1862static int resort_cl_cb(struct hist_entry *he)
1863{
1864 struct c2c_hist_entry *c2c_he;
1865 struct c2c_hists *c2c_hists;
1866 bool display = he__display(he, &c2c.hitm_stats);
1867
1868 c2c_he = container_of(he, struct c2c_hist_entry, he);
1869 c2c_hists = c2c_he->hists;
1870
1871 calc_width(he);
1872
1873 if (display && c2c_hists) {
1874 static unsigned int idx;
1875
1876 c2c_he->cacheline_idx = idx++;
1877
1878 c2c_hists__reinit(c2c_hists, c2c.cl_output, c2c.cl_resort);
1879
1880 hists__collapse_resort(&c2c_hists->hists, NULL);
1881 hists__output_resort_cb(&c2c_hists->hists, NULL, filter_cb);
1882 }
1883
1884 return 0;
1885}
1886
1887static void setup_nodes_header(void)
1888{
1889 dim_node.header = header_node[c2c.node_info];
1890}
1891
1892static int setup_nodes(struct perf_session *session)
1893{
1894 struct numa_node *n;
1895 unsigned long **nodes;
1896 int node, cpu;
1897 int *cpu2node;
1898
1899 if (c2c.node_info > 2)
1900 c2c.node_info = 2;
1901
1902 c2c.nodes_cnt = session->header.env.nr_numa_nodes;
1903 c2c.cpus_cnt = session->header.env.nr_cpus_online;
1904
1905 n = session->header.env.numa_nodes;
1906 if (!n)
1907 return -EINVAL;
1908
1909 nodes = zalloc(sizeof(unsigned long *) * c2c.nodes_cnt);
1910 if (!nodes)
1911 return -ENOMEM;
1912
1913 c2c.nodes = nodes;
1914
1915 cpu2node = zalloc(sizeof(int) * c2c.cpus_cnt);
1916 if (!cpu2node)
1917 return -ENOMEM;
1918
1919 for (cpu = 0; cpu < c2c.cpus_cnt; cpu++)
1920 cpu2node[cpu] = -1;
1921
1922 c2c.cpu2node = cpu2node;
1923
1924 for (node = 0; node < c2c.nodes_cnt; node++) {
1925 struct cpu_map *map = n[node].map;
1926 unsigned long *set;
1927
1928 set = bitmap_alloc(c2c.cpus_cnt);
1929 if (!set)
1930 return -ENOMEM;
1931
1932 for (cpu = 0; cpu < map->nr; cpu++) {
1933 set_bit(map->map[cpu], set);
1934
1935 if (WARN_ONCE(cpu2node[map->map[cpu]] != -1, "node/cpu topology bug"))
1936 return -EINVAL;
1937
1938 cpu2node[map->map[cpu]] = node;
1939 }
1940
1941 nodes[node] = set;
1942 }
1943
1944 setup_nodes_header();
1945 return 0;
1946}
1947
1948#define HAS_HITMS(__h) ((__h)->stats.lcl_hitm || (__h)->stats.rmt_hitm)
1949
1950static int resort_hitm_cb(struct hist_entry *he)
1951{
1952 struct c2c_hist_entry *c2c_he;
1953 c2c_he = container_of(he, struct c2c_hist_entry, he);
1954
1955 if (HAS_HITMS(c2c_he)) {
1956 c2c.shared_clines++;
1957 c2c_add_stats(&c2c.hitm_stats, &c2c_he->stats);
1958 }
1959
1960 return 0;
1961}
1962
1963static int hists__iterate_cb(struct hists *hists, hists__resort_cb_t cb)
1964{
1965 struct rb_node *next = rb_first(&hists->entries);
1966 int ret = 0;
1967
1968 while (next) {
1969 struct hist_entry *he;
1970
1971 he = rb_entry(next, struct hist_entry, rb_node);
1972 ret = cb(he);
1973 if (ret)
1974 break;
1975 next = rb_next(&he->rb_node);
1976 }
1977
1978 return ret;
1979}
1980
1981static void print_c2c__display_stats(FILE *out)
1982{
1983 int llc_misses;
1984 struct c2c_stats *stats = &c2c.hists.stats;
1985
1986 llc_misses = stats->lcl_dram +
1987 stats->rmt_dram +
1988 stats->rmt_hit +
1989 stats->rmt_hitm;
1990
1991 fprintf(out, "=================================================\n");
1992 fprintf(out, " Trace Event Information \n");
1993 fprintf(out, "=================================================\n");
1994 fprintf(out, " Total records : %10d\n", stats->nr_entries);
1995 fprintf(out, " Locked Load/Store Operations : %10d\n", stats->locks);
1996 fprintf(out, " Load Operations : %10d\n", stats->load);
1997 fprintf(out, " Loads - uncacheable : %10d\n", stats->ld_uncache);
1998 fprintf(out, " Loads - IO : %10d\n", stats->ld_io);
1999 fprintf(out, " Loads - Miss : %10d\n", stats->ld_miss);
2000 fprintf(out, " Loads - no mapping : %10d\n", stats->ld_noadrs);
2001 fprintf(out, " Load Fill Buffer Hit : %10d\n", stats->ld_fbhit);
2002 fprintf(out, " Load L1D hit : %10d\n", stats->ld_l1hit);
2003 fprintf(out, " Load L2D hit : %10d\n", stats->ld_l2hit);
2004 fprintf(out, " Load LLC hit : %10d\n", stats->ld_llchit + stats->lcl_hitm);
2005 fprintf(out, " Load Local HITM : %10d\n", stats->lcl_hitm);
2006 fprintf(out, " Load Remote HITM : %10d\n", stats->rmt_hitm);
2007 fprintf(out, " Load Remote HIT : %10d\n", stats->rmt_hit);
2008 fprintf(out, " Load Local DRAM : %10d\n", stats->lcl_dram);
2009 fprintf(out, " Load Remote DRAM : %10d\n", stats->rmt_dram);
2010 fprintf(out, " Load MESI State Exclusive : %10d\n", stats->ld_excl);
2011 fprintf(out, " Load MESI State Shared : %10d\n", stats->ld_shared);
2012 fprintf(out, " Load LLC Misses : %10d\n", llc_misses);
2013 fprintf(out, " LLC Misses to Local DRAM : %10.1f%%\n", ((double)stats->lcl_dram/(double)llc_misses) * 100.);
2014 fprintf(out, " LLC Misses to Remote DRAM : %10.1f%%\n", ((double)stats->rmt_dram/(double)llc_misses) * 100.);
2015 fprintf(out, " LLC Misses to Remote cache (HIT) : %10.1f%%\n", ((double)stats->rmt_hit /(double)llc_misses) * 100.);
2016 fprintf(out, " LLC Misses to Remote cache (HITM) : %10.1f%%\n", ((double)stats->rmt_hitm/(double)llc_misses) * 100.);
2017 fprintf(out, " Store Operations : %10d\n", stats->store);
2018 fprintf(out, " Store - uncacheable : %10d\n", stats->st_uncache);
2019 fprintf(out, " Store - no mapping : %10d\n", stats->st_noadrs);
2020 fprintf(out, " Store L1D Hit : %10d\n", stats->st_l1hit);
2021 fprintf(out, " Store L1D Miss : %10d\n", stats->st_l1miss);
2022 fprintf(out, " No Page Map Rejects : %10d\n", stats->nomap);
2023 fprintf(out, " Unable to parse data source : %10d\n", stats->noparse);
2024}
2025
2026static void print_shared_cacheline_info(FILE *out)
2027{
2028 struct c2c_stats *stats = &c2c.hitm_stats;
2029 int hitm_cnt = stats->lcl_hitm + stats->rmt_hitm;
2030
2031 fprintf(out, "=================================================\n");
2032 fprintf(out, " Global Shared Cache Line Event Information \n");
2033 fprintf(out, "=================================================\n");
2034 fprintf(out, " Total Shared Cache Lines : %10d\n", c2c.shared_clines);
2035 fprintf(out, " Load HITs on shared lines : %10d\n", stats->load);
2036 fprintf(out, " Fill Buffer Hits on shared lines : %10d\n", stats->ld_fbhit);
2037 fprintf(out, " L1D hits on shared lines : %10d\n", stats->ld_l1hit);
2038 fprintf(out, " L2D hits on shared lines : %10d\n", stats->ld_l2hit);
2039 fprintf(out, " LLC hits on shared lines : %10d\n", stats->ld_llchit + stats->lcl_hitm);
2040 fprintf(out, " Locked Access on shared lines : %10d\n", stats->locks);
2041 fprintf(out, " Store HITs on shared lines : %10d\n", stats->store);
2042 fprintf(out, " Store L1D hits on shared lines : %10d\n", stats->st_l1hit);
2043 fprintf(out, " Total Merged records : %10d\n", hitm_cnt + stats->store);
2044}
2045
2046static void print_cacheline(struct c2c_hists *c2c_hists,
2047 struct hist_entry *he_cl,
2048 struct perf_hpp_list *hpp_list,
2049 FILE *out)
2050{
2051 char bf[1000];
2052 struct perf_hpp hpp = {
2053 .buf = bf,
2054 .size = 1000,
2055 };
2056 static bool once;
2057
2058 if (!once) {
2059 hists__fprintf_headers(&c2c_hists->hists, out);
2060 once = true;
2061 } else {
2062 fprintf(out, "\n");
2063 }
2064
2065 fprintf(out, " -------------------------------------------------------------\n");
2066 __hist_entry__snprintf(he_cl, &hpp, hpp_list);
2067 fprintf(out, "%s\n", bf);
2068 fprintf(out, " -------------------------------------------------------------\n");
2069
2070 hists__fprintf(&c2c_hists->hists, false, 0, 0, 0, out, true);
2071}
2072
2073static void print_pareto(FILE *out)
2074{
2075 struct perf_hpp_list hpp_list;
2076 struct rb_node *nd;
2077 int ret;
2078
2079 perf_hpp_list__init(&hpp_list);
2080 ret = hpp_list__parse(&hpp_list,
2081 "cl_num,"
2082 "cl_rmt_hitm,"
2083 "cl_lcl_hitm,"
2084 "cl_stores_l1hit,"
2085 "cl_stores_l1miss,"
2086 "dcacheline",
2087 NULL);
2088
2089 if (WARN_ONCE(ret, "failed to setup sort entries\n"))
2090 return;
2091
2092 nd = rb_first(&c2c.hists.hists.entries);
2093
2094 for (; nd; nd = rb_next(nd)) {
2095 struct hist_entry *he = rb_entry(nd, struct hist_entry, rb_node);
2096 struct c2c_hist_entry *c2c_he;
2097
2098 if (he->filtered)
2099 continue;
2100
2101 c2c_he = container_of(he, struct c2c_hist_entry, he);
2102 print_cacheline(c2c_he->hists, he, &hpp_list, out);
2103 }
2104}
2105
2106static void print_c2c_info(FILE *out, struct perf_session *session)
2107{
2108 struct perf_evlist *evlist = session->evlist;
2109 struct perf_evsel *evsel;
2110 bool first = true;
2111
2112 fprintf(out, "=================================================\n");
2113 fprintf(out, " c2c details \n");
2114 fprintf(out, "=================================================\n");
2115
2116 evlist__for_each_entry(evlist, evsel) {
2117 fprintf(out, "%-36s: %s\n", first ? " Events" : "",
2118 perf_evsel__name(evsel));
2119 first = false;
2120 }
2121 fprintf(out, " Cachelines sort on : %s HITMs\n",
2122 display_str[c2c.display]);
2123 fprintf(out, " Cacheline data grouping : %s\n", c2c.cl_sort);
2124}
2125
2126static void perf_c2c__hists_fprintf(FILE *out, struct perf_session *session)
2127{
2128 setup_pager();
2129
2130 print_c2c__display_stats(out);
2131 fprintf(out, "\n");
2132 print_shared_cacheline_info(out);
2133 fprintf(out, "\n");
2134 print_c2c_info(out, session);
2135
2136 if (c2c.stats_only)
2137 return;
2138
2139 fprintf(out, "\n");
2140 fprintf(out, "=================================================\n");
2141 fprintf(out, " Shared Data Cache Line Table \n");
2142 fprintf(out, "=================================================\n");
2143 fprintf(out, "#\n");
2144
2145 hists__fprintf(&c2c.hists.hists, true, 0, 0, 0, stdout, false);
2146
2147 fprintf(out, "\n");
2148 fprintf(out, "=================================================\n");
2149 fprintf(out, " Shared Cache Line Distribution Pareto \n");
2150 fprintf(out, "=================================================\n");
2151 fprintf(out, "#\n");
2152
2153 print_pareto(out);
2154}
2155
2156#ifdef HAVE_SLANG_SUPPORT
2157static void c2c_browser__update_nr_entries(struct hist_browser *hb)
2158{
2159 u64 nr_entries = 0;
2160 struct rb_node *nd = rb_first(&hb->hists->entries);
2161
2162 while (nd) {
2163 struct hist_entry *he = rb_entry(nd, struct hist_entry, rb_node);
2164
2165 if (!he->filtered)
2166 nr_entries++;
2167
2168 nd = rb_next(nd);
2169 }
2170
2171 hb->nr_non_filtered_entries = nr_entries;
2172}
2173
2174struct c2c_cacheline_browser {
2175 struct hist_browser hb;
2176 struct hist_entry *he;
2177};
2178
2179static int
2180perf_c2c_cacheline_browser__title(struct hist_browser *browser,
2181 char *bf, size_t size)
2182{
2183 struct c2c_cacheline_browser *cl_browser;
2184 struct hist_entry *he;
2185 uint64_t addr = 0;
2186
2187 cl_browser = container_of(browser, struct c2c_cacheline_browser, hb);
2188 he = cl_browser->he;
2189
2190 if (he->mem_info)
2191 addr = cl_address(he->mem_info->daddr.addr);
2192
2193 scnprintf(bf, size, "Cacheline 0x%lx", addr);
2194 return 0;
2195}
2196
2197static struct c2c_cacheline_browser*
2198c2c_cacheline_browser__new(struct hists *hists, struct hist_entry *he)
2199{
2200 struct c2c_cacheline_browser *browser;
2201
2202 browser = zalloc(sizeof(*browser));
2203 if (browser) {
2204 hist_browser__init(&browser->hb, hists);
2205 browser->hb.c2c_filter = true;
2206 browser->hb.title = perf_c2c_cacheline_browser__title;
2207 browser->he = he;
2208 }
2209
2210 return browser;
2211}
2212
2213static int perf_c2c__browse_cacheline(struct hist_entry *he)
2214{
2215 struct c2c_hist_entry *c2c_he;
2216 struct c2c_hists *c2c_hists;
2217 struct c2c_cacheline_browser *cl_browser;
2218 struct hist_browser *browser;
2219 int key = -1;
2220 const char help[] =
2221 " ENTER Togle callchains (if present) \n"
2222 " n Togle Node details info \n"
2223 " s Togle full lenght of symbol and source line columns \n"
2224 " q Return back to cacheline list \n";
2225
2226 /* Display compact version first. */
2227 c2c.symbol_full = false;
2228
2229 c2c_he = container_of(he, struct c2c_hist_entry, he);
2230 c2c_hists = c2c_he->hists;
2231
2232 cl_browser = c2c_cacheline_browser__new(&c2c_hists->hists, he);
2233 if (cl_browser == NULL)
2234 return -1;
2235
2236 browser = &cl_browser->hb;
2237
2238 /* reset abort key so that it can get Ctrl-C as a key */
2239 SLang_reset_tty();
2240 SLang_init_tty(0, 0, 0);
2241
2242 c2c_browser__update_nr_entries(browser);
2243
2244 while (1) {
2245 key = hist_browser__run(browser, "? - help");
2246
2247 switch (key) {
2248 case 's':
2249 c2c.symbol_full = !c2c.symbol_full;
2250 break;
2251 case 'n':
2252 c2c.node_info = (c2c.node_info + 1) % 3;
2253 setup_nodes_header();
2254 break;
2255 case 'q':
2256 goto out;
2257 case '?':
2258 ui_browser__help_window(&browser->b, help);
2259 break;
2260 default:
2261 break;
2262 }
2263 }
2264
2265out:
2266 free(cl_browser);
2267 return 0;
2268}
2269
2270static int perf_c2c_browser__title(struct hist_browser *browser,
2271 char *bf, size_t size)
2272{
2273 scnprintf(bf, size,
2274 "Shared Data Cache Line Table "
2275 "(%lu entries, sorted on %s HITMs)",
2276 browser->nr_non_filtered_entries,
2277 display_str[c2c.display]);
2278 return 0;
2279}
2280
2281static struct hist_browser*
2282perf_c2c_browser__new(struct hists *hists)
2283{
2284 struct hist_browser *browser = hist_browser__new(hists);
2285
2286 if (browser) {
2287 browser->title = perf_c2c_browser__title;
2288 browser->c2c_filter = true;
2289 }
2290
2291 return browser;
2292}
2293
2294static int perf_c2c__hists_browse(struct hists *hists)
2295{
2296 struct hist_browser *browser;
2297 int key = -1;
2298 const char help[] =
2299 " d Display cacheline details \n"
2300 " ENTER Togle callchains (if present) \n"
2301 " q Quit \n";
2302
2303 browser = perf_c2c_browser__new(hists);
2304 if (browser == NULL)
2305 return -1;
2306
2307 /* reset abort key so that it can get Ctrl-C as a key */
2308 SLang_reset_tty();
2309 SLang_init_tty(0, 0, 0);
2310
2311 c2c_browser__update_nr_entries(browser);
2312
2313 while (1) {
2314 key = hist_browser__run(browser, "? - help");
2315
2316 switch (key) {
2317 case 'q':
2318 goto out;
2319 case 'd':
2320 perf_c2c__browse_cacheline(browser->he_selection);
2321 break;
2322 case '?':
2323 ui_browser__help_window(&browser->b, help);
2324 break;
2325 default:
2326 break;
2327 }
2328 }
2329
2330out:
2331 hist_browser__delete(browser);
2332 return 0;
2333}
2334
2335static void perf_c2c_display(struct perf_session *session)
2336{
2337 if (c2c.use_stdio)
2338 perf_c2c__hists_fprintf(stdout, session);
2339 else
2340 perf_c2c__hists_browse(&c2c.hists.hists);
2341}
2342#else
2343static void perf_c2c_display(struct perf_session *session)
2344{
2345 use_browser = 0;
2346 perf_c2c__hists_fprintf(stdout, session);
2347}
2348#endif /* HAVE_SLANG_SUPPORT */
2349
2350static void ui_quirks(void)
2351{
2352 if (!c2c.use_stdio) {
2353 dim_offset.width = 5;
2354 dim_offset.header = header_offset_tui;
2355 }
2356
2357 dim_percent_hitm.header = percent_hitm_header[c2c.display];
2358}
2359
2360#define CALLCHAIN_DEFAULT_OPT "graph,0.5,caller,function,percent"
2361
2362const char callchain_help[] = "Display call graph (stack chain/backtrace):\n\n"
2363 CALLCHAIN_REPORT_HELP
2364 "\n\t\t\t\tDefault: " CALLCHAIN_DEFAULT_OPT;
2365
2366static int
2367parse_callchain_opt(const struct option *opt, const char *arg, int unset)
2368{
2369 struct callchain_param *callchain = opt->value;
2370
2371 callchain->enabled = !unset;
2372 /*
2373 * --no-call-graph
2374 */
2375 if (unset) {
2376 symbol_conf.use_callchain = false;
2377 callchain->mode = CHAIN_NONE;
2378 return 0;
2379 }
2380
2381 return parse_callchain_report_opt(arg);
2382}
2383
2384static int setup_callchain(struct perf_evlist *evlist)
2385{
2386 u64 sample_type = perf_evlist__combined_sample_type(evlist);
2387 enum perf_call_graph_mode mode = CALLCHAIN_NONE;
2388
2389 if ((sample_type & PERF_SAMPLE_REGS_USER) &&
2390 (sample_type & PERF_SAMPLE_STACK_USER))
2391 mode = CALLCHAIN_DWARF;
2392 else if (sample_type & PERF_SAMPLE_BRANCH_STACK)
2393 mode = CALLCHAIN_LBR;
2394 else if (sample_type & PERF_SAMPLE_CALLCHAIN)
2395 mode = CALLCHAIN_FP;
2396
2397 if (!callchain_param.enabled &&
2398 callchain_param.mode != CHAIN_NONE &&
2399 mode != CALLCHAIN_NONE) {
2400 symbol_conf.use_callchain = true;
2401 if (callchain_register_param(&callchain_param) < 0) {
2402 ui__error("Can't register callchain params.\n");
2403 return -EINVAL;
2404 }
2405 }
2406
2407 callchain_param.record_mode = mode;
2408 callchain_param.min_percent = 0;
2409 return 0;
2410}
2411
2412static int setup_display(const char *str)
2413{
2414 const char *display = str ?: "tot";
2415
2416 if (!strcmp(display, "tot"))
2417 c2c.display = DISPLAY_TOT;
2418 else if (!strcmp(display, "rmt"))
2419 c2c.display = DISPLAY_RMT;
2420 else if (!strcmp(display, "lcl"))
2421 c2c.display = DISPLAY_LCL;
2422 else {
2423 pr_err("failed: unknown display type: %s\n", str);
2424 return -1;
2425 }
2426
2427 return 0;
2428}
2429
2430#define for_each_token(__tok, __buf, __sep, __tmp) \
2431 for (__tok = strtok_r(__buf, __sep, &__tmp); __tok; \
2432 __tok = strtok_r(NULL, __sep, &__tmp))
2433
2434static int build_cl_output(char *cl_sort, bool no_source)
2435{
2436 char *tok, *tmp, *buf = strdup(cl_sort);
2437 bool add_pid = false;
2438 bool add_tid = false;
2439 bool add_iaddr = false;
2440 bool add_sym = false;
2441 bool add_dso = false;
2442 bool add_src = false;
2443
2444 if (!buf)
2445 return -ENOMEM;
2446
2447 for_each_token(tok, buf, ",", tmp) {
2448 if (!strcmp(tok, "tid")) {
2449 add_tid = true;
2450 } else if (!strcmp(tok, "pid")) {
2451 add_pid = true;
2452 } else if (!strcmp(tok, "iaddr")) {
2453 add_iaddr = true;
2454 add_sym = true;
2455 add_dso = true;
2456 add_src = no_source ? false : true;
2457 } else if (!strcmp(tok, "dso")) {
2458 add_dso = true;
2459 } else if (strcmp(tok, "offset")) {
2460 pr_err("unrecognized sort token: %s\n", tok);
2461 return -EINVAL;
2462 }
2463 }
2464
2465 if (asprintf(&c2c.cl_output,
2466 "%s%s%s%s%s%s%s%s%s%s",
2467 c2c.use_stdio ? "cl_num_empty," : "",
2468 "percent_rmt_hitm,"
2469 "percent_lcl_hitm,"
2470 "percent_stores_l1hit,"
2471 "percent_stores_l1miss,"
2472 "offset,",
2473 add_pid ? "pid," : "",
2474 add_tid ? "tid," : "",
2475 add_iaddr ? "iaddr," : "",
2476 "mean_rmt,"
2477 "mean_lcl,"
2478 "mean_load,"
2479 "cpucnt,",
2480 add_sym ? "symbol," : "",
2481 add_dso ? "dso," : "",
2482 add_src ? "cl_srcline," : "",
2483 "node") < 0)
2484 return -ENOMEM;
2485
2486 c2c.show_src = add_src;
2487
2488 free(buf);
2489 return 0;
2490}
2491
2492static int setup_coalesce(const char *coalesce, bool no_source)
2493{
2494 const char *c = coalesce ?: coalesce_default;
2495
2496 if (asprintf(&c2c.cl_sort, "offset,%s", c) < 0)
2497 return -ENOMEM;
2498
2499 if (build_cl_output(c2c.cl_sort, no_source))
2500 return -1;
2501
2502 if (asprintf(&c2c.cl_resort, "offset,%s",
2503 c2c.display == DISPLAY_TOT ?
2504 "tot_hitm" :
2505 c2c.display == DISPLAY_RMT ?
2506 "rmt_hitm,lcl_hitm" :
2507 "lcl_hitm,rmt_hitm") < 0)
2508 return -ENOMEM;
2509
2510 pr_debug("coalesce sort fields: %s\n", c2c.cl_sort);
2511 pr_debug("coalesce resort fields: %s\n", c2c.cl_resort);
2512 pr_debug("coalesce output fields: %s\n", c2c.cl_output);
2513 return 0;
2514}
2515
2516static int perf_c2c__report(int argc, const char **argv)
2517{
2518 struct perf_session *session;
2519 struct ui_progress prog;
2520 struct perf_data_file file = {
2521 .mode = PERF_DATA_MODE_READ,
2522 };
2523 char callchain_default_opt[] = CALLCHAIN_DEFAULT_OPT;
2524 const char *display = NULL;
2525 const char *coalesce = NULL;
2526 bool no_source = false;
2527 const struct option options[] = {
2528 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
2529 "file", "vmlinux pathname"),
2530 OPT_STRING('i', "input", &input_name, "file",
2531 "the input file to process"),
2532 OPT_INCR('N', "node-info", &c2c.node_info,
2533 "show extra node info in report (repeat for more info)"),
2534#ifdef HAVE_SLANG_SUPPORT
2535 OPT_BOOLEAN(0, "stdio", &c2c.use_stdio, "Use the stdio interface"),
2536#endif
2537 OPT_BOOLEAN(0, "stats", &c2c.stats_only,
2538 "Use the stdio interface"),
2539 OPT_BOOLEAN(0, "full-symbols", &c2c.symbol_full,
2540 "Display full length of symbols"),
2541 OPT_BOOLEAN(0, "no-source", &no_source,
2542 "Do not display Source Line column"),
2543 OPT_BOOLEAN(0, "show-all", &c2c.show_all,
2544 "Show all captured HITM lines."),
2545 OPT_CALLBACK_DEFAULT('g', "call-graph", &callchain_param,
2546 "print_type,threshold[,print_limit],order,sort_key[,branch],value",
2547 callchain_help, &parse_callchain_opt,
2548 callchain_default_opt),
2549 OPT_STRING('d', "display", &display, "Switch HITM output type", "lcl,rmt"),
2550 OPT_STRING('c', "coalesce", &coalesce, "coalesce fields",
2551 "coalesce fields: pid,tid,iaddr,dso"),
2552 OPT_BOOLEAN('f', "force", &symbol_conf.force, "don't complain, do it"),
2553 OPT_PARENT(c2c_options),
2554 OPT_END()
2555 };
2556 int err = 0;
2557
2558 argc = parse_options(argc, argv, options, report_c2c_usage,
2559 PARSE_OPT_STOP_AT_NON_OPTION);
2560 if (argc)
2561 usage_with_options(report_c2c_usage, options);
2562
2563 if (c2c.stats_only)
2564 c2c.use_stdio = true;
2565
2566 if (!input_name || !strlen(input_name))
2567 input_name = "perf.data";
2568
2569 file.path = input_name;
2570 file.force = symbol_conf.force;
2571
2572 err = setup_display(display);
2573 if (err)
2574 goto out;
2575
2576 err = setup_coalesce(coalesce, no_source);
2577 if (err) {
2578 pr_debug("Failed to initialize hists\n");
2579 goto out;
2580 }
2581
2582 err = c2c_hists__init(&c2c.hists, "dcacheline", 2);
2583 if (err) {
2584 pr_debug("Failed to initialize hists\n");
2585 goto out;
2586 }
2587
2588 session = perf_session__new(&file, 0, &c2c.tool);
2589 if (session == NULL) {
2590 pr_debug("No memory for session\n");
2591 goto out;
2592 }
2593
2594 err = setup_nodes(session);
2595 if (err) {
2596 pr_err("Failed setup nodes\n");
2597 goto out;
2598 }
2599
2600 err = setup_callchain(session->evlist);
2601 if (err)
2602 goto out_session;
2603
2604 if (symbol__init(&session->header.env) < 0)
2605 goto out_session;
2606
2607 /* No pipe support at the moment. */
2608 if (perf_data_file__is_pipe(session->file)) {
2609 pr_debug("No pipe support at the moment.\n");
2610 goto out_session;
2611 }
2612
2613 if (c2c.use_stdio)
2614 use_browser = 0;
2615 else
2616 use_browser = 1;
2617
2618 setup_browser(false);
2619
2620 err = perf_session__process_events(session);
2621 if (err) {
2622 pr_err("failed to process sample\n");
2623 goto out_session;
2624 }
2625
2626 c2c_hists__reinit(&c2c.hists,
2627 "cl_idx,"
2628 "dcacheline,"
2629 "tot_recs,"
2630 "percent_hitm,"
2631 "tot_hitm,lcl_hitm,rmt_hitm,"
2632 "stores,stores_l1hit,stores_l1miss,"
2633 "dram_lcl,dram_rmt,"
2634 "ld_llcmiss,"
2635 "tot_loads,"
2636 "ld_fbhit,ld_l1hit,ld_l2hit,"
2637 "ld_lclhit,ld_rmthit",
2638 c2c.display == DISPLAY_TOT ? "tot_hitm" :
2639 c2c.display == DISPLAY_LCL ? "lcl_hitm" : "rmt_hitm"
2640 );
2641
2642 ui_progress__init(&prog, c2c.hists.hists.nr_entries, "Sorting...");
2643
2644 hists__collapse_resort(&c2c.hists.hists, NULL);
2645 hists__output_resort_cb(&c2c.hists.hists, &prog, resort_hitm_cb);
2646 hists__iterate_cb(&c2c.hists.hists, resort_cl_cb);
2647
2648 ui_progress__finish();
2649
2650 ui_quirks();
2651
2652 perf_c2c_display(session);
2653
2654out_session:
2655 perf_session__delete(session);
2656out:
2657 return err;
2658}
2659
2660static int parse_record_events(const struct option *opt,
2661 const char *str, int unset __maybe_unused)
2662{
2663 bool *event_set = (bool *) opt->value;
2664
2665 *event_set = true;
2666 return perf_mem_events__parse(str);
2667}
2668
2669
2670static const char * const __usage_record[] = {
2671 "perf c2c record [<options>] [<command>]",
2672 "perf c2c record [<options>] -- <command> [<options>]",
2673 NULL
2674};
2675
2676static const char * const *record_mem_usage = __usage_record;
2677
2678static int perf_c2c__record(int argc, const char **argv)
2679{
2680 int rec_argc, i = 0, j;
2681 const char **rec_argv;
2682 int ret;
2683 bool all_user = false, all_kernel = false;
2684 bool event_set = false;
2685 struct option options[] = {
2686 OPT_CALLBACK('e', "event", &event_set, "event",
2687 "event selector. Use 'perf mem record -e list' to list available events",
2688 parse_record_events),
2689 OPT_BOOLEAN('u', "all-user", &all_user, "collect only user level data"),
2690 OPT_BOOLEAN('k', "all-kernel", &all_kernel, "collect only kernel level data"),
2691 OPT_UINTEGER('l', "ldlat", &perf_mem_events__loads_ldlat, "setup mem-loads latency"),
2692 OPT_PARENT(c2c_options),
2693 OPT_END()
2694 };
2695
2696 if (perf_mem_events__init()) {
2697 pr_err("failed: memory events not supported\n");
2698 return -1;
2699 }
2700
2701 argc = parse_options(argc, argv, options, record_mem_usage,
2702 PARSE_OPT_KEEP_UNKNOWN);
2703
2704 rec_argc = argc + 10; /* max number of arguments */
2705 rec_argv = calloc(rec_argc + 1, sizeof(char *));
2706 if (!rec_argv)
2707 return -1;
2708
2709 rec_argv[i++] = "record";
2710
2711 if (!event_set) {
2712 perf_mem_events[PERF_MEM_EVENTS__LOAD].record = true;
2713 perf_mem_events[PERF_MEM_EVENTS__STORE].record = true;
2714 }
2715
2716 if (perf_mem_events[PERF_MEM_EVENTS__LOAD].record)
2717 rec_argv[i++] = "-W";
2718
2719 rec_argv[i++] = "-d";
2720 rec_argv[i++] = "--sample-cpu";
2721
2722 for (j = 0; j < PERF_MEM_EVENTS__MAX; j++) {
2723 if (!perf_mem_events[j].record)
2724 continue;
2725
2726 if (!perf_mem_events[j].supported) {
2727 pr_err("failed: event '%s' not supported\n",
2728 perf_mem_events[j].name);
2729 return -1;
2730 }
2731
2732 rec_argv[i++] = "-e";
2733 rec_argv[i++] = perf_mem_events__name(j);
2734 };
2735
2736 if (all_user)
2737 rec_argv[i++] = "--all-user";
2738
2739 if (all_kernel)
2740 rec_argv[i++] = "--all-kernel";
2741
2742 for (j = 0; j < argc; j++, i++)
2743 rec_argv[i] = argv[j];
2744
2745 if (verbose > 0) {
2746 pr_debug("calling: ");
2747
2748 j = 0;
2749
2750 while (rec_argv[j]) {
2751 pr_debug("%s ", rec_argv[j]);
2752 j++;
2753 }
2754 pr_debug("\n");
2755 }
2756
2757 ret = cmd_record(i, rec_argv, NULL);
2758 free(rec_argv);
2759 return ret;
2760}
2761
2762int cmd_c2c(int argc, const char **argv, const char *prefix __maybe_unused)
2763{
2764 argc = parse_options(argc, argv, c2c_options, c2c_usage,
2765 PARSE_OPT_STOP_AT_NON_OPTION);
2766
2767 if (!argc)
2768 usage_with_options(c2c_usage, c2c_options);
2769
2770 if (!strncmp(argv[0], "rec", 3)) {
2771 return perf_c2c__record(argc, argv);
2772 } else if (!strncmp(argv[0], "rep", 3)) {
2773 return perf_c2c__report(argc, argv);
2774 } else {
2775 usage_with_options(c2c_usage, c2c_options);
2776 }
2777
2778 return 0;
2779}
diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c
index e4207a23b52c..8c0d93b7c2f0 100644
--- a/tools/perf/builtin-config.c
+++ b/tools/perf/builtin-config.c
@@ -17,7 +17,7 @@
17static bool use_system_config, use_user_config; 17static bool use_system_config, use_user_config;
18 18
19static const char * const config_usage[] = { 19static const char * const config_usage[] = {
20 "perf config [<file-option>] [options]", 20 "perf config [<file-option>] [options] [section.name[=value] ...]",
21 NULL 21 NULL
22}; 22};
23 23
@@ -33,6 +33,73 @@ static struct option config_options[] = {
33 OPT_END() 33 OPT_END()
34}; 34};
35 35
36static int set_config(struct perf_config_set *set, const char *file_name,
37 const char *var, const char *value)
38{
39 struct perf_config_section *section = NULL;
40 struct perf_config_item *item = NULL;
41 const char *first_line = "# this file is auto-generated.";
42 FILE *fp;
43
44 if (set == NULL)
45 return -1;
46
47 fp = fopen(file_name, "w");
48 if (!fp)
49 return -1;
50
51 perf_config_set__collect(set, file_name, var, value);
52 fprintf(fp, "%s\n", first_line);
53
54 /* overwrite configvariables */
55 perf_config_items__for_each_entry(&set->sections, section) {
56 if (!use_system_config && section->from_system_config)
57 continue;
58 fprintf(fp, "[%s]\n", section->name);
59
60 perf_config_items__for_each_entry(&section->items, item) {
61 if (!use_system_config && section->from_system_config)
62 continue;
63 if (item->value)
64 fprintf(fp, "\t%s = %s\n",
65 item->name, item->value);
66 }
67 }
68 fclose(fp);
69
70 return 0;
71}
72
73static int show_spec_config(struct perf_config_set *set, const char *var)
74{
75 struct perf_config_section *section;
76 struct perf_config_item *item;
77
78 if (set == NULL)
79 return -1;
80
81 perf_config_items__for_each_entry(&set->sections, section) {
82 if (prefixcmp(var, section->name) != 0)
83 continue;
84
85 perf_config_items__for_each_entry(&section->items, item) {
86 const char *name = var + strlen(section->name) + 1;
87
88 if (strcmp(name, item->name) == 0) {
89 char *value = item->value;
90
91 if (value) {
92 printf("%s=%s\n", var, value);
93 return 0;
94 }
95 }
96
97 }
98 }
99
100 return 0;
101}
102
36static int show_config(struct perf_config_set *set) 103static int show_config(struct perf_config_set *set)
37{ 104{
38 struct perf_config_section *section; 105 struct perf_config_section *section;
@@ -52,9 +119,44 @@ static int show_config(struct perf_config_set *set)
52 return 0; 119 return 0;
53} 120}
54 121
122static int parse_config_arg(char *arg, char **var, char **value)
123{
124 const char *last_dot = strchr(arg, '.');
125
126 /*
127 * Since "var" actually contains the section name and the real
128 * config variable name separated by a dot, we have to know where the dot is.
129 */
130 if (last_dot == NULL || last_dot == arg) {
131 pr_err("The config variable does not contain a section name: %s\n", arg);
132 return -1;
133 }
134 if (!last_dot[1]) {
135 pr_err("The config variable does not contain a variable name: %s\n", arg);
136 return -1;
137 }
138
139 *value = strchr(arg, '=');
140 if (*value == NULL)
141 *var = arg;
142 else if (!strcmp(*value, "=")) {
143 pr_err("The config variable does not contain a value: %s\n", arg);
144 return -1;
145 } else {
146 *value = *value + 1; /* excluding a first character '=' */
147 *var = strsep(&arg, "=");
148 if (*var[0] == '\0') {
149 pr_err("invalid config variable: %s\n", arg);
150 return -1;
151 }
152 }
153
154 return 0;
155}
156
55int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) 157int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
56{ 158{
57 int ret = 0; 159 int i, ret = 0;
58 struct perf_config_set *set; 160 struct perf_config_set *set;
59 char *user_config = mkpath("%s/.perfconfig", getenv("HOME")); 161 char *user_config = mkpath("%s/.perfconfig", getenv("HOME"));
60 162
@@ -100,7 +202,36 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
100 } 202 }
101 break; 203 break;
102 default: 204 default:
103 usage_with_options(config_usage, config_options); 205 if (argc) {
206 for (i = 0; argv[i]; i++) {
207 char *var, *value;
208 char *arg = strdup(argv[i]);
209
210 if (!arg) {
211 pr_err("%s: strdup failed\n", __func__);
212 ret = -1;
213 break;
214 }
215
216 if (parse_config_arg(arg, &var, &value) < 0) {
217 free(arg);
218 ret = -1;
219 break;
220 }
221
222 if (value == NULL)
223 ret = show_spec_config(set, var);
224 else {
225 const char *config_filename = config_exclusive_filename;
226
227 if (!config_exclusive_filename)
228 config_filename = user_config;
229 ret = set_config(set, config_filename, var, value);
230 }
231 free(arg);
232 }
233 } else
234 usage_with_options(config_usage, config_options);
104 } 235 }
105 236
106 perf_config_set__delete(set); 237 perf_config_set__delete(set);
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 21ee753211ad..9ff0db4e2d0c 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -1033,7 +1033,9 @@ static int hpp__entry_global(struct perf_hpp_fmt *_fmt, struct perf_hpp *hpp,
1033} 1033}
1034 1034
1035static int hpp__header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 1035static int hpp__header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1036 struct hists *hists __maybe_unused) 1036 struct hists *hists __maybe_unused,
1037 int line __maybe_unused,
1038 int *span __maybe_unused)
1037{ 1039{
1038 struct diff_hpp_fmt *dfmt = 1040 struct diff_hpp_fmt *dfmt =
1039 container_of(fmt, struct diff_hpp_fmt, fmt); 1041 container_of(fmt, struct diff_hpp_fmt, fmt);
diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index 73c1c4cc3600..b9bc7e39833a 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -429,7 +429,7 @@ static int perf_event__inject_buildid(struct perf_tool *tool,
429 if (al.map != NULL) { 429 if (al.map != NULL) {
430 if (!al.map->dso->hit) { 430 if (!al.map->dso->hit) {
431 al.map->dso->hit = 1; 431 al.map->dso->hit = 1;
432 if (map__load(al.map, NULL) >= 0) { 432 if (map__load(al.map) >= 0) {
433 dso__inject_build_id(al.map->dso, tool, machine); 433 dso__inject_build_id(al.map->dso, tool, machine);
434 /* 434 /*
435 * If this fails, too bad, let the other side 435 * If this fails, too bad, let the other side
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c
index fdde1bd3e306..915869e00d86 100644
--- a/tools/perf/builtin-kmem.c
+++ b/tools/perf/builtin-kmem.c
@@ -11,6 +11,7 @@
11#include "util/session.h" 11#include "util/session.h"
12#include "util/tool.h" 12#include "util/tool.h"
13#include "util/callchain.h" 13#include "util/callchain.h"
14#include "util/time-utils.h"
14 15
15#include <subcmd/parse-options.h> 16#include <subcmd/parse-options.h>
16#include "util/trace-event.h" 17#include "util/trace-event.h"
@@ -49,6 +50,7 @@ struct alloc_stat {
49 u64 ptr; 50 u64 ptr;
50 u64 bytes_req; 51 u64 bytes_req;
51 u64 bytes_alloc; 52 u64 bytes_alloc;
53 u64 last_alloc;
52 u32 hit; 54 u32 hit;
53 u32 pingpong; 55 u32 pingpong;
54 56
@@ -62,9 +64,13 @@ static struct rb_root root_alloc_sorted;
62static struct rb_root root_caller_stat; 64static struct rb_root root_caller_stat;
63static struct rb_root root_caller_sorted; 65static struct rb_root root_caller_sorted;
64 66
65static unsigned long total_requested, total_allocated; 67static unsigned long total_requested, total_allocated, total_freed;
66static unsigned long nr_allocs, nr_cross_allocs; 68static unsigned long nr_allocs, nr_cross_allocs;
67 69
70/* filters for controlling start and stop of time of analysis */
71static struct perf_time_interval ptime;
72const char *time_str;
73
68static int insert_alloc_stat(unsigned long call_site, unsigned long ptr, 74static int insert_alloc_stat(unsigned long call_site, unsigned long ptr,
69 int bytes_req, int bytes_alloc, int cpu) 75 int bytes_req, int bytes_alloc, int cpu)
70{ 76{
@@ -105,6 +111,8 @@ static int insert_alloc_stat(unsigned long call_site, unsigned long ptr,
105 } 111 }
106 data->call_site = call_site; 112 data->call_site = call_site;
107 data->alloc_cpu = cpu; 113 data->alloc_cpu = cpu;
114 data->last_alloc = bytes_alloc;
115
108 return 0; 116 return 0;
109} 117}
110 118
@@ -223,6 +231,8 @@ static int perf_evsel__process_free_event(struct perf_evsel *evsel,
223 if (!s_alloc) 231 if (!s_alloc)
224 return 0; 232 return 0;
225 233
234 total_freed += s_alloc->last_alloc;
235
226 if ((short)sample->cpu != s_alloc->alloc_cpu) { 236 if ((short)sample->cpu != s_alloc->alloc_cpu) {
227 s_alloc->pingpong++; 237 s_alloc->pingpong++;
228 238
@@ -330,7 +340,7 @@ static int build_alloc_func_list(void)
330 } 340 }
331 341
332 kernel_map = machine__kernel_map(machine); 342 kernel_map = machine__kernel_map(machine);
333 if (map__load(kernel_map, NULL) < 0) { 343 if (map__load(kernel_map) < 0) {
334 pr_err("cannot load kernel map\n"); 344 pr_err("cannot load kernel map\n");
335 return -ENOENT; 345 return -ENOENT;
336 } 346 }
@@ -645,7 +655,6 @@ static const struct {
645 { "__GFP_RECLAIM", "R" }, 655 { "__GFP_RECLAIM", "R" },
646 { "__GFP_DIRECT_RECLAIM", "DR" }, 656 { "__GFP_DIRECT_RECLAIM", "DR" },
647 { "__GFP_KSWAPD_RECLAIM", "KR" }, 657 { "__GFP_KSWAPD_RECLAIM", "KR" },
648 { "__GFP_OTHER_NODE", "ON" },
649}; 658};
650 659
651static size_t max_gfp_len; 660static size_t max_gfp_len;
@@ -907,6 +916,15 @@ static int perf_evsel__process_page_free_event(struct perf_evsel *evsel,
907 return 0; 916 return 0;
908} 917}
909 918
919static bool perf_kmem__skip_sample(struct perf_sample *sample)
920{
921 /* skip sample based on time? */
922 if (perf_time__skip_sample(&ptime, sample->time))
923 return true;
924
925 return false;
926}
927
910typedef int (*tracepoint_handler)(struct perf_evsel *evsel, 928typedef int (*tracepoint_handler)(struct perf_evsel *evsel,
911 struct perf_sample *sample); 929 struct perf_sample *sample);
912 930
@@ -926,6 +944,9 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
926 return -1; 944 return -1;
927 } 945 }
928 946
947 if (perf_kmem__skip_sample(sample))
948 return 0;
949
929 dump_printf(" ... thread: %s:%d\n", thread__comm_str(thread), thread->tid); 950 dump_printf(" ... thread: %s:%d\n", thread__comm_str(thread), thread->tid);
930 951
931 if (evsel->handler != NULL) { 952 if (evsel->handler != NULL) {
@@ -979,7 +1000,7 @@ static void __print_slab_result(struct rb_root *root,
979 if (is_caller) { 1000 if (is_caller) {
980 addr = data->call_site; 1001 addr = data->call_site;
981 if (!raw_ip) 1002 if (!raw_ip)
982 sym = machine__find_kernel_function(machine, addr, &map, NULL); 1003 sym = machine__find_kernel_function(machine, addr, &map);
983 } else 1004 } else
984 addr = data->ptr; 1005 addr = data->ptr;
985 1006
@@ -1043,8 +1064,7 @@ static void __print_page_alloc_result(struct perf_session *session, int n_lines)
1043 char *caller = buf; 1064 char *caller = buf;
1044 1065
1045 data = rb_entry(next, struct page_stat, node); 1066 data = rb_entry(next, struct page_stat, node);
1046 sym = machine__find_kernel_function(machine, data->callsite, 1067 sym = machine__find_kernel_function(machine, data->callsite, &map);
1047 &map, NULL);
1048 if (sym && sym->name) 1068 if (sym && sym->name)
1049 caller = sym->name; 1069 caller = sym->name;
1050 else 1070 else
@@ -1086,8 +1106,7 @@ static void __print_page_caller_result(struct perf_session *session, int n_lines
1086 char *caller = buf; 1106 char *caller = buf;
1087 1107
1088 data = rb_entry(next, struct page_stat, node); 1108 data = rb_entry(next, struct page_stat, node);
1089 sym = machine__find_kernel_function(machine, data->callsite, 1109 sym = machine__find_kernel_function(machine, data->callsite, &map);
1090 &map, NULL);
1091 if (sym && sym->name) 1110 if (sym && sym->name)
1092 caller = sym->name; 1111 caller = sym->name;
1093 else 1112 else
@@ -1130,6 +1149,11 @@ static void print_slab_summary(void)
1130 printf("\n========================\n"); 1149 printf("\n========================\n");
1131 printf("Total bytes requested: %'lu\n", total_requested); 1150 printf("Total bytes requested: %'lu\n", total_requested);
1132 printf("Total bytes allocated: %'lu\n", total_allocated); 1151 printf("Total bytes allocated: %'lu\n", total_allocated);
1152 printf("Total bytes freed: %'lu\n", total_freed);
1153 if (total_allocated > total_freed) {
1154 printf("Net total bytes allocated: %'lu\n",
1155 total_allocated - total_freed);
1156 }
1133 printf("Total bytes wasted on internal fragmentation: %'lu\n", 1157 printf("Total bytes wasted on internal fragmentation: %'lu\n",
1134 total_allocated - total_requested); 1158 total_allocated - total_requested);
1135 printf("Internal fragmentation: %f%%\n", 1159 printf("Internal fragmentation: %f%%\n",
@@ -1886,6 +1910,8 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
1886 OPT_CALLBACK_NOOPT(0, "page", NULL, NULL, "Analyze page allocator", 1910 OPT_CALLBACK_NOOPT(0, "page", NULL, NULL, "Analyze page allocator",
1887 parse_page_opt), 1911 parse_page_opt),
1888 OPT_BOOLEAN(0, "live", &live_page, "Show live page stat"), 1912 OPT_BOOLEAN(0, "live", &live_page, "Show live page stat"),
1913 OPT_STRING(0, "time", &time_str, "str",
1914 "Time span of interest (start,stop)"),
1889 OPT_END() 1915 OPT_END()
1890 }; 1916 };
1891 const char *const kmem_subcommands[] = { "record", "stat", NULL }; 1917 const char *const kmem_subcommands[] = { "record", "stat", NULL };
@@ -1946,6 +1972,11 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
1946 1972
1947 symbol__init(&session->header.env); 1973 symbol__init(&session->header.env);
1948 1974
1975 if (perf_time__parse_str(&ptime, time_str) != 0) {
1976 pr_err("Invalid time string\n");
1977 return -EINVAL;
1978 }
1979
1949 if (!strcmp(argv[0], "stat")) { 1980 if (!strcmp(argv[0], "stat")) {
1950 setlocale(LC_ALL, ""); 1981 setlocale(LC_ALL, "");
1951 1982
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 5e2127e04f83..08fa88f62a24 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -24,6 +24,7 @@
24#include <sys/timerfd.h> 24#include <sys/timerfd.h>
25#endif 25#endif
26 26
27#include <linux/time64.h>
27#include <termios.h> 28#include <termios.h>
28#include <semaphore.h> 29#include <semaphore.h>
29#include <pthread.h> 30#include <pthread.h>
@@ -362,7 +363,7 @@ static bool handle_end_event(struct perf_kvm_stat *kvm,
362 if (!skip_event(decode)) { 363 if (!skip_event(decode)) {
363 pr_info("%" PRIu64 " VM %d, vcpu %d: %s event took %" PRIu64 "usec\n", 364 pr_info("%" PRIu64 " VM %d, vcpu %d: %s event took %" PRIu64 "usec\n",
364 sample->time, sample->pid, vcpu_record->vcpu_id, 365 sample->time, sample->pid, vcpu_record->vcpu_id,
365 decode, time_diff/1000); 366 decode, time_diff / NSEC_PER_USEC);
366 } 367 }
367 } 368 }
368 369
@@ -608,15 +609,15 @@ static void print_result(struct perf_kvm_stat *kvm)
608 pr_info("%10llu ", (unsigned long long)ecount); 609 pr_info("%10llu ", (unsigned long long)ecount);
609 pr_info("%8.2f%% ", (double)ecount / kvm->total_count * 100); 610 pr_info("%8.2f%% ", (double)ecount / kvm->total_count * 100);
610 pr_info("%8.2f%% ", (double)etime / kvm->total_time * 100); 611 pr_info("%8.2f%% ", (double)etime / kvm->total_time * 100);
611 pr_info("%9.2fus ", (double)min / 1e3); 612 pr_info("%9.2fus ", (double)min / NSEC_PER_USEC);
612 pr_info("%9.2fus ", (double)max / 1e3); 613 pr_info("%9.2fus ", (double)max / NSEC_PER_USEC);
613 pr_info("%9.2fus ( +-%7.2f%% )", (double)etime / ecount/1e3, 614 pr_info("%9.2fus ( +-%7.2f%% )", (double)etime / ecount / NSEC_PER_USEC,
614 kvm_event_rel_stddev(vcpu, event)); 615 kvm_event_rel_stddev(vcpu, event));
615 pr_info("\n"); 616 pr_info("\n");
616 } 617 }
617 618
618 pr_info("\nTotal Samples:%" PRIu64 ", Total events handled time:%.2fus.\n\n", 619 pr_info("\nTotal Samples:%" PRIu64 ", Total events handled time:%.2fus.\n\n",
619 kvm->total_count, kvm->total_time / 1e3); 620 kvm->total_count, kvm->total_time / (double)NSEC_PER_USEC);
620 621
621 if (kvm->lost_events) 622 if (kvm->lost_events)
622 pr_info("\nLost events: %" PRIu64 "\n\n", kvm->lost_events); 623 pr_info("\nLost events: %" PRIu64 "\n\n", kvm->lost_events);
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index 88ee419e5189..ba9322ff858b 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -16,16 +16,23 @@
16#include "util/pmu.h" 16#include "util/pmu.h"
17#include <subcmd/parse-options.h> 17#include <subcmd/parse-options.h>
18 18
19static bool desc_flag = true;
20
19int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused) 21int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
20{ 22{
21 int i; 23 int i;
22 bool raw_dump = false; 24 bool raw_dump = false;
25 bool long_desc_flag = false;
23 struct option list_options[] = { 26 struct option list_options[] = {
24 OPT_BOOLEAN(0, "raw-dump", &raw_dump, "Dump raw events"), 27 OPT_BOOLEAN(0, "raw-dump", &raw_dump, "Dump raw events"),
28 OPT_BOOLEAN('d', "desc", &desc_flag,
29 "Print extra event descriptions. --no-desc to not print."),
30 OPT_BOOLEAN('v', "long-desc", &long_desc_flag,
31 "Print longer event descriptions."),
25 OPT_END() 32 OPT_END()
26 }; 33 };
27 const char * const list_usage[] = { 34 const char * const list_usage[] = {
28 "perf list [hw|sw|cache|tracepoint|pmu|sdt|event_glob]", 35 "perf list [<options>] [hw|sw|cache|tracepoint|pmu|sdt|event_glob]",
29 NULL 36 NULL
30 }; 37 };
31 38
@@ -40,7 +47,7 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
40 printf("\nList of pre-defined events (to be used in -e):\n\n"); 47 printf("\nList of pre-defined events (to be used in -e):\n\n");
41 48
42 if (argc == 0) { 49 if (argc == 0) {
43 print_events(NULL, raw_dump); 50 print_events(NULL, raw_dump, !desc_flag, long_desc_flag);
44 return 0; 51 return 0;
45 } 52 }
46 53
@@ -61,14 +68,16 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
61 strcmp(argv[i], "hwcache") == 0) 68 strcmp(argv[i], "hwcache") == 0)
62 print_hwcache_events(NULL, raw_dump); 69 print_hwcache_events(NULL, raw_dump);
63 else if (strcmp(argv[i], "pmu") == 0) 70 else if (strcmp(argv[i], "pmu") == 0)
64 print_pmu_events(NULL, raw_dump); 71 print_pmu_events(NULL, raw_dump, !desc_flag,
72 long_desc_flag);
65 else if (strcmp(argv[i], "sdt") == 0) 73 else if (strcmp(argv[i], "sdt") == 0)
66 print_sdt_events(NULL, NULL, raw_dump); 74 print_sdt_events(NULL, NULL, raw_dump);
67 else if ((sep = strchr(argv[i], ':')) != NULL) { 75 else if ((sep = strchr(argv[i], ':')) != NULL) {
68 int sep_idx; 76 int sep_idx;
69 77
70 if (sep == NULL) { 78 if (sep == NULL) {
71 print_events(argv[i], raw_dump); 79 print_events(argv[i], raw_dump, !desc_flag,
80 long_desc_flag);
72 continue; 81 continue;
73 } 82 }
74 sep_idx = sep - argv[i]; 83 sep_idx = sep - argv[i];
@@ -90,7 +99,8 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
90 print_symbol_events(s, PERF_TYPE_SOFTWARE, 99 print_symbol_events(s, PERF_TYPE_SOFTWARE,
91 event_symbols_sw, PERF_COUNT_SW_MAX, raw_dump); 100 event_symbols_sw, PERF_COUNT_SW_MAX, raw_dump);
92 print_hwcache_events(s, raw_dump); 101 print_hwcache_events(s, raw_dump);
93 print_pmu_events(s, raw_dump); 102 print_pmu_events(s, raw_dump, !desc_flag,
103 long_desc_flag);
94 print_tracepoint_events(NULL, s, raw_dump); 104 print_tracepoint_events(NULL, s, raw_dump);
95 print_sdt_events(NULL, s, raw_dump); 105 print_sdt_events(NULL, s, raw_dump);
96 free(s); 106 free(s);
diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
index d1ce29be560e..cd7bc4d104e2 100644
--- a/tools/perf/builtin-mem.c
+++ b/tools/perf/builtin-mem.c
@@ -70,8 +70,8 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem)
70 OPT_UINTEGER(0, "ldlat", &perf_mem_events__loads_ldlat, "mem-loads latency"), 70 OPT_UINTEGER(0, "ldlat", &perf_mem_events__loads_ldlat, "mem-loads latency"),
71 OPT_INCR('v', "verbose", &verbose, 71 OPT_INCR('v', "verbose", &verbose,
72 "be more verbose (show counter open errors, etc)"), 72 "be more verbose (show counter open errors, etc)"),
73 OPT_BOOLEAN('U', "--all-user", &all_user, "collect only user level data"), 73 OPT_BOOLEAN('U', "all-user", &all_user, "collect only user level data"),
74 OPT_BOOLEAN('K', "--all-kernel", &all_kernel, "collect only kernel level data"), 74 OPT_BOOLEAN('K', "all-kernel", &all_kernel, "collect only kernel level data"),
75 OPT_END() 75 OPT_END()
76 }; 76 };
77 77
diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index ee5b42173ba3..f87996b0cb29 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -326,6 +326,11 @@ static int perf_add_probe_events(struct perf_probe_event *pevs, int npevs)
326 if (ret < 0) 326 if (ret < 0)
327 goto out_cleanup; 327 goto out_cleanup;
328 328
329 if (params.command == 'D') { /* it shows definition */
330 ret = show_probe_trace_events(pevs, npevs);
331 goto out_cleanup;
332 }
333
329 ret = apply_perf_probe_events(pevs, npevs); 334 ret = apply_perf_probe_events(pevs, npevs);
330 if (ret < 0) 335 if (ret < 0)
331 goto out_cleanup; 336 goto out_cleanup;
@@ -454,6 +459,14 @@ out:
454 return ret; 459 return ret;
455} 460}
456 461
462#ifdef HAVE_DWARF_SUPPORT
463#define PROBEDEF_STR \
464 "[EVENT=]FUNC[@SRC][+OFF|%return|:RL|;PT]|SRC:AL|SRC;PT [[NAME=]ARG ...]"
465#else
466#define PROBEDEF_STR "[EVENT=]FUNC[+OFF|%return] [[NAME=]ARG ...]"
467#endif
468
469
457static int 470static int
458__cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused) 471__cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
459{ 472{
@@ -479,13 +492,7 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
479 opt_set_filter_with_command, DEFAULT_LIST_FILTER), 492 opt_set_filter_with_command, DEFAULT_LIST_FILTER),
480 OPT_CALLBACK('d', "del", NULL, "[GROUP:]EVENT", "delete a probe event.", 493 OPT_CALLBACK('d', "del", NULL, "[GROUP:]EVENT", "delete a probe event.",
481 opt_set_filter_with_command), 494 opt_set_filter_with_command),
482 OPT_CALLBACK('a', "add", NULL, 495 OPT_CALLBACK('a', "add", NULL, PROBEDEF_STR,
483#ifdef HAVE_DWARF_SUPPORT
484 "[EVENT=]FUNC[@SRC][+OFF|%return|:RL|;PT]|SRC:AL|SRC;PT"
485 " [[NAME=]ARG ...]",
486#else
487 "[EVENT=]FUNC[+OFF|%return] [[NAME=]ARG ...]",
488#endif
489 "probe point definition, where\n" 496 "probe point definition, where\n"
490 "\t\tGROUP:\tGroup name (optional)\n" 497 "\t\tGROUP:\tGroup name (optional)\n"
491 "\t\tEVENT:\tEvent name\n" 498 "\t\tEVENT:\tEvent name\n"
@@ -503,6 +510,9 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
503 "\t\tARG:\tProbe argument (kprobe-tracer argument format.)\n", 510 "\t\tARG:\tProbe argument (kprobe-tracer argument format.)\n",
504#endif 511#endif
505 opt_add_probe_event), 512 opt_add_probe_event),
513 OPT_CALLBACK('D', "definition", NULL, PROBEDEF_STR,
514 "Show trace event definition of given traceevent for k/uprobe_events.",
515 opt_add_probe_event),
506 OPT_BOOLEAN('f', "force", &probe_conf.force_add, "forcibly add events" 516 OPT_BOOLEAN('f', "force", &probe_conf.force_add, "forcibly add events"
507 " with existing name"), 517 " with existing name"),
508 OPT_CALLBACK('L', "line", NULL, 518 OPT_CALLBACK('L', "line", NULL,
@@ -548,6 +558,7 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
548 558
549 set_option_flag(options, 'a', "add", PARSE_OPT_EXCLUSIVE); 559 set_option_flag(options, 'a', "add", PARSE_OPT_EXCLUSIVE);
550 set_option_flag(options, 'd', "del", PARSE_OPT_EXCLUSIVE); 560 set_option_flag(options, 'd', "del", PARSE_OPT_EXCLUSIVE);
561 set_option_flag(options, 'D', "definition", PARSE_OPT_EXCLUSIVE);
551 set_option_flag(options, 'l', "list", PARSE_OPT_EXCLUSIVE); 562 set_option_flag(options, 'l', "list", PARSE_OPT_EXCLUSIVE);
552#ifdef HAVE_DWARF_SUPPORT 563#ifdef HAVE_DWARF_SUPPORT
553 set_option_flag(options, 'L', "line", PARSE_OPT_EXCLUSIVE); 564 set_option_flag(options, 'L', "line", PARSE_OPT_EXCLUSIVE);
@@ -600,6 +611,14 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
600 */ 611 */
601 symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL); 612 symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);
602 613
614 /*
615 * Except for --list, --del and --add, other command doesn't depend
616 * nor change running kernel. So if user gives offline vmlinux,
617 * ignore its buildid.
618 */
619 if (!strchr("lda", params.command) && symbol_conf.vmlinux_name)
620 symbol_conf.ignore_vmlinux_buildid = true;
621
603 switch (params.command) { 622 switch (params.command) {
604 case 'l': 623 case 'l':
605 if (params.uprobes) { 624 if (params.uprobes) {
@@ -643,7 +662,9 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
643 return ret; 662 return ret;
644 } 663 }
645 break; 664 break;
665 case 'D':
646 case 'a': 666 case 'a':
667
647 /* Ensure the last given target is used */ 668 /* Ensure the last given target is used */
648 if (params.target && !params.target_used) { 669 if (params.target && !params.target_used) {
649 pr_err(" Error: -x/-m must follow the probe definitions.\n"); 670 pr_err(" Error: -x/-m must follow the probe definitions.\n");
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 6355902fbfc8..4ec10e9427d9 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -22,6 +22,7 @@
22#include "util/evlist.h" 22#include "util/evlist.h"
23#include "util/evsel.h" 23#include "util/evsel.h"
24#include "util/debug.h" 24#include "util/debug.h"
25#include "util/drv_configs.h"
25#include "util/session.h" 26#include "util/session.h"
26#include "util/tool.h" 27#include "util/tool.h"
27#include "util/symbol.h" 28#include "util/symbol.h"
@@ -36,13 +37,14 @@
36#include "util/llvm-utils.h" 37#include "util/llvm-utils.h"
37#include "util/bpf-loader.h" 38#include "util/bpf-loader.h"
38#include "util/trigger.h" 39#include "util/trigger.h"
40#include "util/perf-hooks.h"
39#include "asm/bug.h" 41#include "asm/bug.h"
40 42
41#include <unistd.h> 43#include <unistd.h>
42#include <sched.h> 44#include <sched.h>
43#include <sys/mman.h> 45#include <sys/mman.h>
44#include <asm/bug.h> 46#include <asm/bug.h>
45 47#include <linux/time64.h>
46 48
47struct record { 49struct record {
48 struct perf_tool tool; 50 struct perf_tool tool;
@@ -96,7 +98,7 @@ backward_rb_find_range(void *buf, int mask, u64 head, u64 *start, u64 *end)
96 *start = head; 98 *start = head;
97 while (true) { 99 while (true) {
98 if (evt_head - head >= (unsigned int)size) { 100 if (evt_head - head >= (unsigned int)size) {
99 pr_debug("Finshed reading backward ring buffer: rewind\n"); 101 pr_debug("Finished reading backward ring buffer: rewind\n");
100 if (evt_head - head > (unsigned int)size) 102 if (evt_head - head > (unsigned int)size)
101 evt_head -= pheader->size; 103 evt_head -= pheader->size;
102 *end = evt_head; 104 *end = evt_head;
@@ -106,7 +108,7 @@ backward_rb_find_range(void *buf, int mask, u64 head, u64 *start, u64 *end)
106 pheader = (struct perf_event_header *)(buf + (evt_head & mask)); 108 pheader = (struct perf_event_header *)(buf + (evt_head & mask));
107 109
108 if (pheader->size == 0) { 110 if (pheader->size == 0) {
109 pr_debug("Finshed reading backward ring buffer: get start\n"); 111 pr_debug("Finished reading backward ring buffer: get start\n");
110 *end = evt_head; 112 *end = evt_head;
111 return 0; 113 return 0;
112 } 114 }
@@ -205,6 +207,12 @@ static void sig_handler(int sig)
205 done = 1; 207 done = 1;
206} 208}
207 209
210static void sigsegv_handler(int sig)
211{
212 perf_hooks__recover();
213 sighandler_dump_stack(sig);
214}
215
208static void record__sig_exit(void) 216static void record__sig_exit(void)
209{ 217{
210 if (signr == -1) 218 if (signr == -1)
@@ -383,6 +391,7 @@ static int record__open(struct record *rec)
383 struct perf_evlist *evlist = rec->evlist; 391 struct perf_evlist *evlist = rec->evlist;
384 struct perf_session *session = rec->session; 392 struct perf_session *session = rec->session;
385 struct record_opts *opts = &rec->opts; 393 struct record_opts *opts = &rec->opts;
394 struct perf_evsel_config_term *err_term;
386 int rc = 0; 395 int rc = 0;
387 396
388 perf_evlist__config(evlist, opts, &callchain_param); 397 perf_evlist__config(evlist, opts, &callchain_param);
@@ -412,6 +421,14 @@ try_again:
412 goto out; 421 goto out;
413 } 422 }
414 423
424 if (perf_evlist__apply_drv_configs(evlist, &pos, &err_term)) {
425 error("failed to set config \"%s\" on event %s with %d (%s)\n",
426 err_term->val.drv_cfg, perf_evsel__name(pos), errno,
427 str_error_r(errno, msg, sizeof(msg)));
428 rc = -1;
429 goto out;
430 }
431
415 rc = record__mmap(rec); 432 rc = record__mmap(rec);
416 if (rc) 433 if (rc)
417 goto out; 434 goto out;
@@ -823,6 +840,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
823 signal(SIGCHLD, sig_handler); 840 signal(SIGCHLD, sig_handler);
824 signal(SIGINT, sig_handler); 841 signal(SIGINT, sig_handler);
825 signal(SIGTERM, sig_handler); 842 signal(SIGTERM, sig_handler);
843 signal(SIGSEGV, sigsegv_handler);
826 844
827 if (rec->opts.auxtrace_snapshot_mode || rec->switch_output) { 845 if (rec->opts.auxtrace_snapshot_mode || rec->switch_output) {
828 signal(SIGUSR2, snapshot_sig_handler); 846 signal(SIGUSR2, snapshot_sig_handler);
@@ -954,12 +972,13 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
954 } 972 }
955 973
956 if (opts->initial_delay) { 974 if (opts->initial_delay) {
957 usleep(opts->initial_delay * 1000); 975 usleep(opts->initial_delay * USEC_PER_MSEC);
958 perf_evlist__enable(rec->evlist); 976 perf_evlist__enable(rec->evlist);
959 } 977 }
960 978
961 trigger_ready(&auxtrace_snapshot_trigger); 979 trigger_ready(&auxtrace_snapshot_trigger);
962 trigger_ready(&switch_output_trigger); 980 trigger_ready(&switch_output_trigger);
981 perf_hooks__invoke_record_start();
963 for (;;) { 982 for (;;) {
964 unsigned long long hits = rec->samples; 983 unsigned long long hits = rec->samples;
965 984
@@ -1104,6 +1123,8 @@ out_child:
1104 } 1123 }
1105 } 1124 }
1106 1125
1126 perf_hooks__invoke_record_end();
1127
1107 if (!err && !quiet) { 1128 if (!err && !quiet) {
1108 char samples[128]; 1129 char samples[128];
1109 const char *postfix = rec->timestamp_filename ? 1130 const char *postfix = rec->timestamp_filename ?
@@ -1384,7 +1405,7 @@ static bool dry_run;
1384 * perf_evlist__prepare_workload, etc instead of fork+exec'in 'perf record', 1405 * perf_evlist__prepare_workload, etc instead of fork+exec'in 'perf record',
1385 * using pipes, etc. 1406 * using pipes, etc.
1386 */ 1407 */
1387struct option __record_options[] = { 1408static struct option __record_options[] = {
1388 OPT_CALLBACK('e', "event", &record.evlist, "event", 1409 OPT_CALLBACK('e', "event", &record.evlist, "event",
1389 "event selector. use 'perf list' to list available events", 1410 "event selector. use 'perf list' to list available events",
1390 parse_events_option), 1411 parse_events_option),
@@ -1563,29 +1584,39 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1563 if (!rec->itr) { 1584 if (!rec->itr) {
1564 rec->itr = auxtrace_record__init(rec->evlist, &err); 1585 rec->itr = auxtrace_record__init(rec->evlist, &err);
1565 if (err) 1586 if (err)
1566 return err; 1587 goto out;
1567 } 1588 }
1568 1589
1569 err = auxtrace_parse_snapshot_options(rec->itr, &rec->opts, 1590 err = auxtrace_parse_snapshot_options(rec->itr, &rec->opts,
1570 rec->opts.auxtrace_snapshot_opts); 1591 rec->opts.auxtrace_snapshot_opts);
1571 if (err) 1592 if (err)
1572 return err; 1593 goto out;
1594
1595 /*
1596 * Allow aliases to facilitate the lookup of symbols for address
1597 * filters. Refer to auxtrace_parse_filters().
1598 */
1599 symbol_conf.allow_aliases = true;
1600
1601 symbol__init(NULL);
1602
1603 err = auxtrace_parse_filters(rec->evlist);
1604 if (err)
1605 goto out;
1573 1606
1574 if (dry_run) 1607 if (dry_run)
1575 return 0; 1608 goto out;
1576 1609
1577 err = bpf__setup_stdout(rec->evlist); 1610 err = bpf__setup_stdout(rec->evlist);
1578 if (err) { 1611 if (err) {
1579 bpf__strerror_setup_stdout(rec->evlist, err, errbuf, sizeof(errbuf)); 1612 bpf__strerror_setup_stdout(rec->evlist, err, errbuf, sizeof(errbuf));
1580 pr_err("ERROR: Setup BPF stdout failed: %s\n", 1613 pr_err("ERROR: Setup BPF stdout failed: %s\n",
1581 errbuf); 1614 errbuf);
1582 return err; 1615 goto out;
1583 } 1616 }
1584 1617
1585 err = -ENOMEM; 1618 err = -ENOMEM;
1586 1619
1587 symbol__init(NULL);
1588
1589 if (symbol_conf.kptr_restrict) 1620 if (symbol_conf.kptr_restrict)
1590 pr_warning( 1621 pr_warning(
1591"WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,\n" 1622"WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,\n"
@@ -1605,7 +1636,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1605 * overhead. Still generate buildid if they are required 1636 * overhead. Still generate buildid if they are required
1606 * explicitly using 1637 * explicitly using
1607 * 1638 *
1608 * perf record --signal-trigger --no-no-buildid \ 1639 * perf record --switch-output --no-no-buildid \
1609 * --no-no-buildid-cache 1640 * --no-no-buildid-cache
1610 * 1641 *
1611 * Following code equals to: 1642 * Following code equals to:
@@ -1633,7 +1664,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1633 if (rec->evlist->nr_entries == 0 && 1664 if (rec->evlist->nr_entries == 0 &&
1634 perf_evlist__add_default(rec->evlist) < 0) { 1665 perf_evlist__add_default(rec->evlist) < 0) {
1635 pr_err("Not enough memory for event selector list\n"); 1666 pr_err("Not enough memory for event selector list\n");
1636 goto out_symbol_exit; 1667 goto out;
1637 } 1668 }
1638 1669
1639 if (rec->opts.target.tid && !rec->opts.no_inherit_set) 1670 if (rec->opts.target.tid && !rec->opts.no_inherit_set)
@@ -1653,16 +1684,19 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1653 ui__error("%s", errbuf); 1684 ui__error("%s", errbuf);
1654 1685
1655 err = -saved_errno; 1686 err = -saved_errno;
1656 goto out_symbol_exit; 1687 goto out;
1657 } 1688 }
1658 1689
1690 /* Enable ignoring missing threads when -u option is defined. */
1691 rec->opts.ignore_missing_thread = rec->opts.target.uid != UINT_MAX;
1692
1659 err = -ENOMEM; 1693 err = -ENOMEM;
1660 if (perf_evlist__create_maps(rec->evlist, &rec->opts.target) < 0) 1694 if (perf_evlist__create_maps(rec->evlist, &rec->opts.target) < 0)
1661 usage_with_options(record_usage, record_options); 1695 usage_with_options(record_usage, record_options);
1662 1696
1663 err = auxtrace_record__options(rec->itr, rec->evlist, &rec->opts); 1697 err = auxtrace_record__options(rec->itr, rec->evlist, &rec->opts);
1664 if (err) 1698 if (err)
1665 goto out_symbol_exit; 1699 goto out;
1666 1700
1667 /* 1701 /*
1668 * We take all buildids when the file contains 1702 * We take all buildids when the file contains
@@ -1674,11 +1708,11 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1674 1708
1675 if (record_opts__config(&rec->opts)) { 1709 if (record_opts__config(&rec->opts)) {
1676 err = -EINVAL; 1710 err = -EINVAL;
1677 goto out_symbol_exit; 1711 goto out;
1678 } 1712 }
1679 1713
1680 err = __cmd_record(&record, argc, argv); 1714 err = __cmd_record(&record, argc, argv);
1681out_symbol_exit: 1715out:
1682 perf_evlist__delete(rec->evlist); 1716 perf_evlist__delete(rec->evlist);
1683 symbol__exit(); 1717 symbol__exit();
1684 auxtrace_record__free(rec->itr); 1718 auxtrace_record__free(rec->itr);
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 949e5a15c960..06cc759a4597 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -36,7 +36,7 @@
36#include "util/hist.h" 36#include "util/hist.h"
37#include "util/data.h" 37#include "util/data.h"
38#include "arch/common.h" 38#include "arch/common.h"
39 39#include "util/time-utils.h"
40#include "util/auxtrace.h" 40#include "util/auxtrace.h"
41 41
42#include <dlfcn.h> 42#include <dlfcn.h>
@@ -59,6 +59,8 @@ struct report {
59 const char *pretty_printing_style; 59 const char *pretty_printing_style;
60 const char *cpu_list; 60 const char *cpu_list;
61 const char *symbol_filter_str; 61 const char *symbol_filter_str;
62 const char *time_str;
63 struct perf_time_interval ptime;
62 float min_percent; 64 float min_percent;
63 u64 nr_entries; 65 u64 nr_entries;
64 u64 queue_size; 66 u64 queue_size;
@@ -89,6 +91,10 @@ static int report__config(const char *var, const char *value, void *cb)
89 rep->queue_size = perf_config_u64(var, value); 91 rep->queue_size = perf_config_u64(var, value);
90 return 0; 92 return 0;
91 } 93 }
94 if (!strcmp(var, "report.sort_order")) {
95 default_sort_order = strdup(value);
96 return 0;
97 }
92 98
93 return 0; 99 return 0;
94} 100}
@@ -154,6 +160,9 @@ static int process_sample_event(struct perf_tool *tool,
154 }; 160 };
155 int ret = 0; 161 int ret = 0;
156 162
163 if (perf_time__skip_sample(&rep->ptime, sample->time))
164 return 0;
165
157 if (machine__resolve(machine, &al, sample) < 0) { 166 if (machine__resolve(machine, &al, sample) < 0) {
158 pr_debug("problem processing %d event, skipping it.\n", 167 pr_debug("problem processing %d event, skipping it.\n",
159 event->header.type); 168 event->header.type);
@@ -203,11 +212,14 @@ static int process_read_event(struct perf_tool *tool,
203 212
204 if (rep->show_threads) { 213 if (rep->show_threads) {
205 const char *name = evsel ? perf_evsel__name(evsel) : "unknown"; 214 const char *name = evsel ? perf_evsel__name(evsel) : "unknown";
206 perf_read_values_add_value(&rep->show_threads_values, 215 int err = perf_read_values_add_value(&rep->show_threads_values,
207 event->read.pid, event->read.tid, 216 event->read.pid, event->read.tid,
208 event->read.id, 217 event->read.id,
209 name, 218 name,
210 event->read.value); 219 event->read.value);
220
221 if (err)
222 return err;
211 } 223 }
212 224
213 dump_printf(": %d %d %s %" PRIu64 "\n", event->read.pid, event->read.tid, 225 dump_printf(": %d %d %s %" PRIu64 "\n", event->read.pid, event->read.tid,
@@ -535,8 +547,11 @@ static int __cmd_report(struct report *rep)
535 } 547 }
536 } 548 }
537 549
538 if (rep->show_threads) 550 if (rep->show_threads) {
539 perf_read_values_init(&rep->show_threads_values); 551 ret = perf_read_values_init(&rep->show_threads_values);
552 if (ret)
553 return ret;
554 }
540 555
541 ret = report__setup_sample_type(rep); 556 ret = report__setup_sample_type(rep);
542 if (ret) { 557 if (ret) {
@@ -633,7 +648,7 @@ report_parse_ignore_callees_opt(const struct option *opt __maybe_unused,
633} 648}
634 649
635static int 650static int
636parse_branch_mode(const struct option *opt __maybe_unused, 651parse_branch_mode(const struct option *opt,
637 const char *str __maybe_unused, int unset) 652 const char *str __maybe_unused, int unset)
638{ 653{
639 int *branch_mode = opt->value; 654 int *branch_mode = opt->value;
@@ -820,6 +835,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
820 OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode", 835 OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode",
821 "'always' (default), 'never' or 'auto' only applicable to --stdio mode", 836 "'always' (default), 'never' or 'auto' only applicable to --stdio mode",
822 stdio__config_color, "always"), 837 stdio__config_color, "always"),
838 OPT_STRING(0, "time", &report.time_str, "str",
839 "Time span of interest (start,stop)"),
823 OPT_END() 840 OPT_END()
824 }; 841 };
825 struct perf_data_file file = { 842 struct perf_data_file file = {
@@ -901,6 +918,9 @@ repeat:
901 if (itrace_synth_opts.last_branch) 918 if (itrace_synth_opts.last_branch)
902 has_br_stack = true; 919 has_br_stack = true;
903 920
921 if (has_br_stack && branch_call_mode)
922 symbol_conf.show_branchflag_count = true;
923
904 /* 924 /*
905 * Branch mode is a tristate: 925 * Branch mode is a tristate:
906 * -1 means default, so decide based on the file having branch data. 926 * -1 means default, so decide based on the file having branch data.
@@ -931,7 +951,6 @@ repeat:
931 951
932 if (symbol_conf.report_hierarchy) { 952 if (symbol_conf.report_hierarchy) {
933 /* disable incompatible options */ 953 /* disable incompatible options */
934 symbol_conf.event_group = false;
935 symbol_conf.cumulate_callchain = false; 954 symbol_conf.cumulate_callchain = false;
936 955
937 if (field_order) { 956 if (field_order) {
@@ -980,9 +999,9 @@ repeat:
980 * implementation. 999 * implementation.
981 */ 1000 */
982 if (ui__has_annotation()) { 1001 if (ui__has_annotation()) {
983 symbol_conf.priv_size = sizeof(struct annotation); 1002 ret = symbol__annotation_init();
984 machines__set_symbol_filter(&session->machines, 1003 if (ret < 0)
985 symbol__annotate_init); 1004 goto error;
986 /* 1005 /*
987 * For searching by name on the "Browse map details". 1006 * For searching by name on the "Browse map details".
988 * providing it only in verbose mode not to bloat too 1007 * providing it only in verbose mode not to bloat too
@@ -1003,6 +1022,11 @@ repeat:
1003 if (symbol__init(&session->header.env) < 0) 1022 if (symbol__init(&session->header.env) < 0)
1004 goto error; 1023 goto error;
1005 1024
1025 if (perf_time__parse_str(&report.ptime, report.time_str) != 0) {
1026 pr_err("Invalid time string\n");
1027 return -EINVAL;
1028 }
1029
1006 sort__setup_elide(stdout); 1030 sort__setup_elide(stdout);
1007 1031
1008 ret = __cmd_report(&report); 1032 ret = __cmd_report(&report);
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index 0dfe8df2ab9b..5b134b0d1ff3 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -13,12 +13,16 @@
13#include "util/cloexec.h" 13#include "util/cloexec.h"
14#include "util/thread_map.h" 14#include "util/thread_map.h"
15#include "util/color.h" 15#include "util/color.h"
16#include "util/stat.h"
17#include "util/callchain.h"
18#include "util/time-utils.h"
16 19
17#include <subcmd/parse-options.h> 20#include <subcmd/parse-options.h>
18#include "util/trace-event.h" 21#include "util/trace-event.h"
19 22
20#include "util/debug.h" 23#include "util/debug.h"
21 24
25#include <linux/log2.h>
22#include <sys/prctl.h> 26#include <sys/prctl.h>
23#include <sys/resource.h> 27#include <sys/resource.h>
24 28
@@ -26,6 +30,7 @@
26#include <pthread.h> 30#include <pthread.h>
27#include <math.h> 31#include <math.h>
28#include <api/fs/fs.h> 32#include <api/fs/fs.h>
33#include <linux/time64.h>
29 34
30#define PR_SET_NAME 15 /* Set process name */ 35#define PR_SET_NAME 15 /* Set process name */
31#define MAX_CPUS 4096 36#define MAX_CPUS 4096
@@ -191,15 +196,63 @@ struct perf_sched {
191 bool force; 196 bool force;
192 bool skip_merge; 197 bool skip_merge;
193 struct perf_sched_map map; 198 struct perf_sched_map map;
199
200 /* options for timehist command */
201 bool summary;
202 bool summary_only;
203 bool idle_hist;
204 bool show_callchain;
205 unsigned int max_stack;
206 bool show_cpu_visual;
207 bool show_wakeups;
208 bool show_migrations;
209 u64 skipped_samples;
210 const char *time_str;
211 struct perf_time_interval ptime;
212 struct perf_time_interval hist_time;
213};
214
215/* per thread run time data */
216struct thread_runtime {
217 u64 last_time; /* time of previous sched in/out event */
218 u64 dt_run; /* run time */
219 u64 dt_wait; /* time between CPU access (off cpu) */
220 u64 dt_delay; /* time between wakeup and sched-in */
221 u64 ready_to_run; /* time of wakeup */
222
223 struct stats run_stats;
224 u64 total_run_time;
225
226 u64 migrations;
227};
228
229/* per event run time data */
230struct evsel_runtime {
231 u64 *last_time; /* time this event was last seen per cpu */
232 u32 ncpu; /* highest cpu slot allocated */
233};
234
235/* per cpu idle time data */
236struct idle_thread_runtime {
237 struct thread_runtime tr;
238 struct thread *last_thread;
239 struct rb_root sorted_root;
240 struct callchain_root callchain;
241 struct callchain_cursor cursor;
194}; 242};
195 243
244/* track idle times per cpu */
245static struct thread **idle_threads;
246static int idle_max_cpu;
247static char idle_comm[] = "<idle>";
248
196static u64 get_nsecs(void) 249static u64 get_nsecs(void)
197{ 250{
198 struct timespec ts; 251 struct timespec ts;
199 252
200 clock_gettime(CLOCK_MONOTONIC, &ts); 253 clock_gettime(CLOCK_MONOTONIC, &ts);
201 254
202 return ts.tv_sec * 1000000000ULL + ts.tv_nsec; 255 return ts.tv_sec * NSEC_PER_SEC + ts.tv_nsec;
203} 256}
204 257
205static void burn_nsecs(struct perf_sched *sched, u64 nsecs) 258static void burn_nsecs(struct perf_sched *sched, u64 nsecs)
@@ -223,7 +276,7 @@ static void sleep_nsecs(u64 nsecs)
223 276
224static void calibrate_run_measurement_overhead(struct perf_sched *sched) 277static void calibrate_run_measurement_overhead(struct perf_sched *sched)
225{ 278{
226 u64 T0, T1, delta, min_delta = 1000000000ULL; 279 u64 T0, T1, delta, min_delta = NSEC_PER_SEC;
227 int i; 280 int i;
228 281
229 for (i = 0; i < 10; i++) { 282 for (i = 0; i < 10; i++) {
@@ -240,7 +293,7 @@ static void calibrate_run_measurement_overhead(struct perf_sched *sched)
240 293
241static void calibrate_sleep_measurement_overhead(struct perf_sched *sched) 294static void calibrate_sleep_measurement_overhead(struct perf_sched *sched)
242{ 295{
243 u64 T0, T1, delta, min_delta = 1000000000ULL; 296 u64 T0, T1, delta, min_delta = NSEC_PER_SEC;
244 int i; 297 int i;
245 298
246 for (i = 0; i < 10; i++) { 299 for (i = 0; i < 10; i++) {
@@ -452,8 +505,8 @@ static u64 get_cpu_usage_nsec_parent(void)
452 err = getrusage(RUSAGE_SELF, &ru); 505 err = getrusage(RUSAGE_SELF, &ru);
453 BUG_ON(err); 506 BUG_ON(err);
454 507
455 sum = ru.ru_utime.tv_sec*1e9 + ru.ru_utime.tv_usec*1e3; 508 sum = ru.ru_utime.tv_sec * NSEC_PER_SEC + ru.ru_utime.tv_usec * NSEC_PER_USEC;
456 sum += ru.ru_stime.tv_sec*1e9 + ru.ru_stime.tv_usec*1e3; 509 sum += ru.ru_stime.tv_sec * NSEC_PER_SEC + ru.ru_stime.tv_usec * NSEC_PER_USEC;
457 510
458 return sum; 511 return sum;
459} 512}
@@ -667,12 +720,12 @@ static void run_one_test(struct perf_sched *sched)
667 sched->run_avg = delta; 720 sched->run_avg = delta;
668 sched->run_avg = (sched->run_avg * (sched->replay_repeat - 1) + delta) / sched->replay_repeat; 721 sched->run_avg = (sched->run_avg * (sched->replay_repeat - 1) + delta) / sched->replay_repeat;
669 722
670 printf("#%-3ld: %0.3f, ", sched->nr_runs, (double)delta / 1000000.0); 723 printf("#%-3ld: %0.3f, ", sched->nr_runs, (double)delta / NSEC_PER_MSEC);
671 724
672 printf("ravg: %0.2f, ", (double)sched->run_avg / 1e6); 725 printf("ravg: %0.2f, ", (double)sched->run_avg / NSEC_PER_MSEC);
673 726
674 printf("cpu: %0.2f / %0.2f", 727 printf("cpu: %0.2f / %0.2f",
675 (double)sched->cpu_usage / 1e6, (double)sched->runavg_cpu_usage / 1e6); 728 (double)sched->cpu_usage / NSEC_PER_MSEC, (double)sched->runavg_cpu_usage / NSEC_PER_MSEC);
676 729
677#if 0 730#if 0
678 /* 731 /*
@@ -680,8 +733,8 @@ static void run_one_test(struct perf_sched *sched)
680 * accurate than the sched->sum_exec_runtime based statistics: 733 * accurate than the sched->sum_exec_runtime based statistics:
681 */ 734 */
682 printf(" [%0.2f / %0.2f]", 735 printf(" [%0.2f / %0.2f]",
683 (double)sched->parent_cpu_usage/1e6, 736 (double)sched->parent_cpu_usage / NSEC_PER_MSEC,
684 (double)sched->runavg_parent_cpu_usage/1e6); 737 (double)sched->runavg_parent_cpu_usage / NSEC_PER_MSEC);
685#endif 738#endif
686 739
687 printf("\n"); 740 printf("\n");
@@ -696,13 +749,13 @@ static void test_calibrations(struct perf_sched *sched)
696 u64 T0, T1; 749 u64 T0, T1;
697 750
698 T0 = get_nsecs(); 751 T0 = get_nsecs();
699 burn_nsecs(sched, 1e6); 752 burn_nsecs(sched, NSEC_PER_MSEC);
700 T1 = get_nsecs(); 753 T1 = get_nsecs();
701 754
702 printf("the run test took %" PRIu64 " nsecs\n", T1 - T0); 755 printf("the run test took %" PRIu64 " nsecs\n", T1 - T0);
703 756
704 T0 = get_nsecs(); 757 T0 = get_nsecs();
705 sleep_nsecs(1e6); 758 sleep_nsecs(NSEC_PER_MSEC);
706 T1 = get_nsecs(); 759 T1 = get_nsecs();
707 760
708 printf("the sleep test took %" PRIu64 " nsecs\n", T1 - T0); 761 printf("the sleep test took %" PRIu64 " nsecs\n", T1 - T0);
@@ -1190,6 +1243,7 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
1190 int i; 1243 int i;
1191 int ret; 1244 int ret;
1192 u64 avg; 1245 u64 avg;
1246 char max_lat_at[32];
1193 1247
1194 if (!work_list->nb_atoms) 1248 if (!work_list->nb_atoms)
1195 return; 1249 return;
@@ -1211,12 +1265,13 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
1211 printf(" "); 1265 printf(" ");
1212 1266
1213 avg = work_list->total_lat / work_list->nb_atoms; 1267 avg = work_list->total_lat / work_list->nb_atoms;
1268 timestamp__scnprintf_usec(work_list->max_lat_at, max_lat_at, sizeof(max_lat_at));
1214 1269
1215 printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13.6f s\n", 1270 printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13s s\n",
1216 (double)work_list->total_runtime / 1e6, 1271 (double)work_list->total_runtime / NSEC_PER_MSEC,
1217 work_list->nb_atoms, (double)avg / 1e6, 1272 work_list->nb_atoms, (double)avg / NSEC_PER_MSEC,
1218 (double)work_list->max_lat / 1e6, 1273 (double)work_list->max_lat / NSEC_PER_MSEC,
1219 (double)work_list->max_lat_at / 1e9); 1274 max_lat_at);
1220} 1275}
1221 1276
1222static int pid_cmp(struct work_atoms *l, struct work_atoms *r) 1277static int pid_cmp(struct work_atoms *l, struct work_atoms *r)
@@ -1401,6 +1456,7 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
1401 int cpus_nr; 1456 int cpus_nr;
1402 bool new_cpu = false; 1457 bool new_cpu = false;
1403 const char *color = PERF_COLOR_NORMAL; 1458 const char *color = PERF_COLOR_NORMAL;
1459 char stimestamp[32];
1404 1460
1405 BUG_ON(this_cpu >= MAX_CPUS || this_cpu < 0); 1461 BUG_ON(this_cpu >= MAX_CPUS || this_cpu < 0);
1406 1462
@@ -1478,7 +1534,7 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
1478 cpu_color = COLOR_CPUS; 1534 cpu_color = COLOR_CPUS;
1479 1535
1480 if (cpu != this_cpu) 1536 if (cpu != this_cpu)
1481 color_fprintf(stdout, cpu_color, " "); 1537 color_fprintf(stdout, color, " ");
1482 else 1538 else
1483 color_fprintf(stdout, cpu_color, "*"); 1539 color_fprintf(stdout, cpu_color, "*");
1484 1540
@@ -1491,8 +1547,9 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
1491 if (sched->map.cpus && !cpu_map__has(sched->map.cpus, this_cpu)) 1547 if (sched->map.cpus && !cpu_map__has(sched->map.cpus, this_cpu))
1492 goto out; 1548 goto out;
1493 1549
1494 color_fprintf(stdout, color, " %12.6f secs ", (double)timestamp/1e9); 1550 timestamp__scnprintf_usec(timestamp, stimestamp, sizeof(stimestamp));
1495 if (new_shortname) { 1551 color_fprintf(stdout, color, " %12s secs ", stimestamp);
1552 if (new_shortname || (verbose && sched_in->tid)) {
1496 const char *pid_color = color; 1553 const char *pid_color = color;
1497 1554
1498 if (thread__has_color(sched_in)) 1555 if (thread__has_color(sched_in))
@@ -1649,6 +1706,1178 @@ out_delete:
1649 return rc; 1706 return rc;
1650} 1707}
1651 1708
1709/*
1710 * scheduling times are printed as msec.usec
1711 */
1712static inline void print_sched_time(unsigned long long nsecs, int width)
1713{
1714 unsigned long msecs;
1715 unsigned long usecs;
1716
1717 msecs = nsecs / NSEC_PER_MSEC;
1718 nsecs -= msecs * NSEC_PER_MSEC;
1719 usecs = nsecs / NSEC_PER_USEC;
1720 printf("%*lu.%03lu ", width, msecs, usecs);
1721}
1722
1723/*
1724 * returns runtime data for event, allocating memory for it the
1725 * first time it is used.
1726 */
1727static struct evsel_runtime *perf_evsel__get_runtime(struct perf_evsel *evsel)
1728{
1729 struct evsel_runtime *r = evsel->priv;
1730
1731 if (r == NULL) {
1732 r = zalloc(sizeof(struct evsel_runtime));
1733 evsel->priv = r;
1734 }
1735
1736 return r;
1737}
1738
1739/*
1740 * save last time event was seen per cpu
1741 */
1742static void perf_evsel__save_time(struct perf_evsel *evsel,
1743 u64 timestamp, u32 cpu)
1744{
1745 struct evsel_runtime *r = perf_evsel__get_runtime(evsel);
1746
1747 if (r == NULL)
1748 return;
1749
1750 if ((cpu >= r->ncpu) || (r->last_time == NULL)) {
1751 int i, n = __roundup_pow_of_two(cpu+1);
1752 void *p = r->last_time;
1753
1754 p = realloc(r->last_time, n * sizeof(u64));
1755 if (!p)
1756 return;
1757
1758 r->last_time = p;
1759 for (i = r->ncpu; i < n; ++i)
1760 r->last_time[i] = (u64) 0;
1761
1762 r->ncpu = n;
1763 }
1764
1765 r->last_time[cpu] = timestamp;
1766}
1767
1768/* returns last time this event was seen on the given cpu */
1769static u64 perf_evsel__get_time(struct perf_evsel *evsel, u32 cpu)
1770{
1771 struct evsel_runtime *r = perf_evsel__get_runtime(evsel);
1772
1773 if ((r == NULL) || (r->last_time == NULL) || (cpu >= r->ncpu))
1774 return 0;
1775
1776 return r->last_time[cpu];
1777}
1778
1779static int comm_width = 30;
1780
1781static char *timehist_get_commstr(struct thread *thread)
1782{
1783 static char str[32];
1784 const char *comm = thread__comm_str(thread);
1785 pid_t tid = thread->tid;
1786 pid_t pid = thread->pid_;
1787 int n;
1788
1789 if (pid == 0)
1790 n = scnprintf(str, sizeof(str), "%s", comm);
1791
1792 else if (tid != pid)
1793 n = scnprintf(str, sizeof(str), "%s[%d/%d]", comm, tid, pid);
1794
1795 else
1796 n = scnprintf(str, sizeof(str), "%s[%d]", comm, tid);
1797
1798 if (n > comm_width)
1799 comm_width = n;
1800
1801 return str;
1802}
1803
1804static void timehist_header(struct perf_sched *sched)
1805{
1806 u32 ncpus = sched->max_cpu + 1;
1807 u32 i, j;
1808
1809 printf("%15s %6s ", "time", "cpu");
1810
1811 if (sched->show_cpu_visual) {
1812 printf(" ");
1813 for (i = 0, j = 0; i < ncpus; ++i) {
1814 printf("%x", j++);
1815 if (j > 15)
1816 j = 0;
1817 }
1818 printf(" ");
1819 }
1820
1821 printf(" %-*s %9s %9s %9s", comm_width,
1822 "task name", "wait time", "sch delay", "run time");
1823
1824 printf("\n");
1825
1826 /*
1827 * units row
1828 */
1829 printf("%15s %-6s ", "", "");
1830
1831 if (sched->show_cpu_visual)
1832 printf(" %*s ", ncpus, "");
1833
1834 printf(" %-*s %9s %9s %9s\n", comm_width,
1835 "[tid/pid]", "(msec)", "(msec)", "(msec)");
1836
1837 /*
1838 * separator
1839 */
1840 printf("%.15s %.6s ", graph_dotted_line, graph_dotted_line);
1841
1842 if (sched->show_cpu_visual)
1843 printf(" %.*s ", ncpus, graph_dotted_line);
1844
1845 printf(" %.*s %.9s %.9s %.9s", comm_width,
1846 graph_dotted_line, graph_dotted_line, graph_dotted_line,
1847 graph_dotted_line);
1848
1849 printf("\n");
1850}
1851
1852static void timehist_print_sample(struct perf_sched *sched,
1853 struct perf_sample *sample,
1854 struct addr_location *al,
1855 struct thread *thread,
1856 u64 t)
1857{
1858 struct thread_runtime *tr = thread__priv(thread);
1859 u32 max_cpus = sched->max_cpu + 1;
1860 char tstr[64];
1861
1862 timestamp__scnprintf_usec(t, tstr, sizeof(tstr));
1863 printf("%15s [%04d] ", tstr, sample->cpu);
1864
1865 if (sched->show_cpu_visual) {
1866 u32 i;
1867 char c;
1868
1869 printf(" ");
1870 for (i = 0; i < max_cpus; ++i) {
1871 /* flag idle times with 'i'; others are sched events */
1872 if (i == sample->cpu)
1873 c = (thread->tid == 0) ? 'i' : 's';
1874 else
1875 c = ' ';
1876 printf("%c", c);
1877 }
1878 printf(" ");
1879 }
1880
1881 printf(" %-*s ", comm_width, timehist_get_commstr(thread));
1882
1883 print_sched_time(tr->dt_wait, 6);
1884 print_sched_time(tr->dt_delay, 6);
1885 print_sched_time(tr->dt_run, 6);
1886
1887 if (sched->show_wakeups)
1888 printf(" %-*s", comm_width, "");
1889
1890 if (thread->tid == 0)
1891 goto out;
1892
1893 if (sched->show_callchain)
1894 printf(" ");
1895
1896 sample__fprintf_sym(sample, al, 0,
1897 EVSEL__PRINT_SYM | EVSEL__PRINT_ONELINE |
1898 EVSEL__PRINT_CALLCHAIN_ARROW |
1899 EVSEL__PRINT_SKIP_IGNORED,
1900 &callchain_cursor, stdout);
1901
1902out:
1903 printf("\n");
1904}
1905
1906/*
1907 * Explanation of delta-time stats:
1908 *
1909 * t = time of current schedule out event
1910 * tprev = time of previous sched out event
1911 * also time of schedule-in event for current task
1912 * last_time = time of last sched change event for current task
1913 * (i.e, time process was last scheduled out)
1914 * ready_to_run = time of wakeup for current task
1915 *
1916 * -----|------------|------------|------------|------
1917 * last ready tprev t
1918 * time to run
1919 *
1920 * |-------- dt_wait --------|
1921 * |- dt_delay -|-- dt_run --|
1922 *
1923 * dt_run = run time of current task
1924 * dt_wait = time between last schedule out event for task and tprev
1925 * represents time spent off the cpu
1926 * dt_delay = time between wakeup and schedule-in of task
1927 */
1928
1929static void timehist_update_runtime_stats(struct thread_runtime *r,
1930 u64 t, u64 tprev)
1931{
1932 r->dt_delay = 0;
1933 r->dt_wait = 0;
1934 r->dt_run = 0;
1935 if (tprev) {
1936 r->dt_run = t - tprev;
1937 if (r->ready_to_run) {
1938 if (r->ready_to_run > tprev)
1939 pr_debug("time travel: wakeup time for task > previous sched_switch event\n");
1940 else
1941 r->dt_delay = tprev - r->ready_to_run;
1942 }
1943
1944 if (r->last_time > tprev)
1945 pr_debug("time travel: last sched out time for task > previous sched_switch event\n");
1946 else if (r->last_time)
1947 r->dt_wait = tprev - r->last_time;
1948 }
1949
1950 update_stats(&r->run_stats, r->dt_run);
1951 r->total_run_time += r->dt_run;
1952}
1953
1954static bool is_idle_sample(struct perf_sample *sample,
1955 struct perf_evsel *evsel)
1956{
1957 /* pid 0 == swapper == idle task */
1958 if (strcmp(perf_evsel__name(evsel), "sched:sched_switch") == 0)
1959 return perf_evsel__intval(evsel, sample, "prev_pid") == 0;
1960
1961 return sample->pid == 0;
1962}
1963
1964static void save_task_callchain(struct perf_sched *sched,
1965 struct perf_sample *sample,
1966 struct perf_evsel *evsel,
1967 struct machine *machine)
1968{
1969 struct callchain_cursor *cursor = &callchain_cursor;
1970 struct thread *thread;
1971
1972 /* want main thread for process - has maps */
1973 thread = machine__findnew_thread(machine, sample->pid, sample->pid);
1974 if (thread == NULL) {
1975 pr_debug("Failed to get thread for pid %d.\n", sample->pid);
1976 return;
1977 }
1978
1979 if (!symbol_conf.use_callchain || sample->callchain == NULL)
1980 return;
1981
1982 if (thread__resolve_callchain(thread, cursor, evsel, sample,
1983 NULL, NULL, sched->max_stack + 2) != 0) {
1984 if (verbose)
1985 error("Failed to resolve callchain. Skipping\n");
1986
1987 return;
1988 }
1989
1990 callchain_cursor_commit(cursor);
1991
1992 while (true) {
1993 struct callchain_cursor_node *node;
1994 struct symbol *sym;
1995
1996 node = callchain_cursor_current(cursor);
1997 if (node == NULL)
1998 break;
1999
2000 sym = node->sym;
2001 if (sym && sym->name) {
2002 if (!strcmp(sym->name, "schedule") ||
2003 !strcmp(sym->name, "__schedule") ||
2004 !strcmp(sym->name, "preempt_schedule"))
2005 sym->ignore = 1;
2006 }
2007
2008 callchain_cursor_advance(cursor);
2009 }
2010}
2011
2012static int init_idle_thread(struct thread *thread)
2013{
2014 struct idle_thread_runtime *itr;
2015
2016 thread__set_comm(thread, idle_comm, 0);
2017
2018 itr = zalloc(sizeof(*itr));
2019 if (itr == NULL)
2020 return -ENOMEM;
2021
2022 init_stats(&itr->tr.run_stats);
2023 callchain_init(&itr->callchain);
2024 callchain_cursor_reset(&itr->cursor);
2025 thread__set_priv(thread, itr);
2026
2027 return 0;
2028}
2029
2030/*
2031 * Track idle stats per cpu by maintaining a local thread
2032 * struct for the idle task on each cpu.
2033 */
2034static int init_idle_threads(int ncpu)
2035{
2036 int i, ret;
2037
2038 idle_threads = zalloc(ncpu * sizeof(struct thread *));
2039 if (!idle_threads)
2040 return -ENOMEM;
2041
2042 idle_max_cpu = ncpu;
2043
2044 /* allocate the actual thread struct if needed */
2045 for (i = 0; i < ncpu; ++i) {
2046 idle_threads[i] = thread__new(0, 0);
2047 if (idle_threads[i] == NULL)
2048 return -ENOMEM;
2049
2050 ret = init_idle_thread(idle_threads[i]);
2051 if (ret < 0)
2052 return ret;
2053 }
2054
2055 return 0;
2056}
2057
2058static void free_idle_threads(void)
2059{
2060 int i;
2061
2062 if (idle_threads == NULL)
2063 return;
2064
2065 for (i = 0; i < idle_max_cpu; ++i) {
2066 if ((idle_threads[i]))
2067 thread__delete(idle_threads[i]);
2068 }
2069
2070 free(idle_threads);
2071}
2072
2073static struct thread *get_idle_thread(int cpu)
2074{
2075 /*
2076 * expand/allocate array of pointers to local thread
2077 * structs if needed
2078 */
2079 if ((cpu >= idle_max_cpu) || (idle_threads == NULL)) {
2080 int i, j = __roundup_pow_of_two(cpu+1);
2081 void *p;
2082
2083 p = realloc(idle_threads, j * sizeof(struct thread *));
2084 if (!p)
2085 return NULL;
2086
2087 idle_threads = (struct thread **) p;
2088 for (i = idle_max_cpu; i < j; ++i)
2089 idle_threads[i] = NULL;
2090
2091 idle_max_cpu = j;
2092 }
2093
2094 /* allocate a new thread struct if needed */
2095 if (idle_threads[cpu] == NULL) {
2096 idle_threads[cpu] = thread__new(0, 0);
2097
2098 if (idle_threads[cpu]) {
2099 if (init_idle_thread(idle_threads[cpu]) < 0)
2100 return NULL;
2101 }
2102 }
2103
2104 return idle_threads[cpu];
2105}
2106
2107static void save_idle_callchain(struct idle_thread_runtime *itr,
2108 struct perf_sample *sample)
2109{
2110 if (!symbol_conf.use_callchain || sample->callchain == NULL)
2111 return;
2112
2113 callchain_cursor__copy(&itr->cursor, &callchain_cursor);
2114}
2115
2116/*
2117 * handle runtime stats saved per thread
2118 */
2119static struct thread_runtime *thread__init_runtime(struct thread *thread)
2120{
2121 struct thread_runtime *r;
2122
2123 r = zalloc(sizeof(struct thread_runtime));
2124 if (!r)
2125 return NULL;
2126
2127 init_stats(&r->run_stats);
2128 thread__set_priv(thread, r);
2129
2130 return r;
2131}
2132
2133static struct thread_runtime *thread__get_runtime(struct thread *thread)
2134{
2135 struct thread_runtime *tr;
2136
2137 tr = thread__priv(thread);
2138 if (tr == NULL) {
2139 tr = thread__init_runtime(thread);
2140 if (tr == NULL)
2141 pr_debug("Failed to malloc memory for runtime data.\n");
2142 }
2143
2144 return tr;
2145}
2146
2147static struct thread *timehist_get_thread(struct perf_sched *sched,
2148 struct perf_sample *sample,
2149 struct machine *machine,
2150 struct perf_evsel *evsel)
2151{
2152 struct thread *thread;
2153
2154 if (is_idle_sample(sample, evsel)) {
2155 thread = get_idle_thread(sample->cpu);
2156 if (thread == NULL)
2157 pr_err("Failed to get idle thread for cpu %d.\n", sample->cpu);
2158
2159 } else {
2160 /* there were samples with tid 0 but non-zero pid */
2161 thread = machine__findnew_thread(machine, sample->pid,
2162 sample->tid ?: sample->pid);
2163 if (thread == NULL) {
2164 pr_debug("Failed to get thread for tid %d. skipping sample.\n",
2165 sample->tid);
2166 }
2167
2168 save_task_callchain(sched, sample, evsel, machine);
2169 if (sched->idle_hist) {
2170 struct thread *idle;
2171 struct idle_thread_runtime *itr;
2172
2173 idle = get_idle_thread(sample->cpu);
2174 if (idle == NULL) {
2175 pr_err("Failed to get idle thread for cpu %d.\n", sample->cpu);
2176 return NULL;
2177 }
2178
2179 itr = thread__priv(idle);
2180 if (itr == NULL)
2181 return NULL;
2182
2183 itr->last_thread = thread;
2184
2185 /* copy task callchain when entering to idle */
2186 if (perf_evsel__intval(evsel, sample, "next_pid") == 0)
2187 save_idle_callchain(itr, sample);
2188 }
2189 }
2190
2191 return thread;
2192}
2193
2194static bool timehist_skip_sample(struct perf_sched *sched,
2195 struct thread *thread,
2196 struct perf_evsel *evsel,
2197 struct perf_sample *sample)
2198{
2199 bool rc = false;
2200
2201 if (thread__is_filtered(thread)) {
2202 rc = true;
2203 sched->skipped_samples++;
2204 }
2205
2206 if (sched->idle_hist) {
2207 if (strcmp(perf_evsel__name(evsel), "sched:sched_switch"))
2208 rc = true;
2209 else if (perf_evsel__intval(evsel, sample, "prev_pid") != 0 &&
2210 perf_evsel__intval(evsel, sample, "next_pid") != 0)
2211 rc = true;
2212 }
2213
2214 return rc;
2215}
2216
2217static void timehist_print_wakeup_event(struct perf_sched *sched,
2218 struct perf_evsel *evsel,
2219 struct perf_sample *sample,
2220 struct machine *machine,
2221 struct thread *awakened)
2222{
2223 struct thread *thread;
2224 char tstr[64];
2225
2226 thread = machine__findnew_thread(machine, sample->pid, sample->tid);
2227 if (thread == NULL)
2228 return;
2229
2230 /* show wakeup unless both awakee and awaker are filtered */
2231 if (timehist_skip_sample(sched, thread, evsel, sample) &&
2232 timehist_skip_sample(sched, awakened, evsel, sample)) {
2233 return;
2234 }
2235
2236 timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr));
2237 printf("%15s [%04d] ", tstr, sample->cpu);
2238 if (sched->show_cpu_visual)
2239 printf(" %*s ", sched->max_cpu + 1, "");
2240
2241 printf(" %-*s ", comm_width, timehist_get_commstr(thread));
2242
2243 /* dt spacer */
2244 printf(" %9s %9s %9s ", "", "", "");
2245
2246 printf("awakened: %s", timehist_get_commstr(awakened));
2247
2248 printf("\n");
2249}
2250
2251static int timehist_sched_wakeup_event(struct perf_tool *tool,
2252 union perf_event *event __maybe_unused,
2253 struct perf_evsel *evsel,
2254 struct perf_sample *sample,
2255 struct machine *machine)
2256{
2257 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2258 struct thread *thread;
2259 struct thread_runtime *tr = NULL;
2260 /* want pid of awakened task not pid in sample */
2261 const u32 pid = perf_evsel__intval(evsel, sample, "pid");
2262
2263 thread = machine__findnew_thread(machine, 0, pid);
2264 if (thread == NULL)
2265 return -1;
2266
2267 tr = thread__get_runtime(thread);
2268 if (tr == NULL)
2269 return -1;
2270
2271 if (tr->ready_to_run == 0)
2272 tr->ready_to_run = sample->time;
2273
2274 /* show wakeups if requested */
2275 if (sched->show_wakeups &&
2276 !perf_time__skip_sample(&sched->ptime, sample->time))
2277 timehist_print_wakeup_event(sched, evsel, sample, machine, thread);
2278
2279 return 0;
2280}
2281
2282static void timehist_print_migration_event(struct perf_sched *sched,
2283 struct perf_evsel *evsel,
2284 struct perf_sample *sample,
2285 struct machine *machine,
2286 struct thread *migrated)
2287{
2288 struct thread *thread;
2289 char tstr[64];
2290 u32 max_cpus = sched->max_cpu + 1;
2291 u32 ocpu, dcpu;
2292
2293 if (sched->summary_only)
2294 return;
2295
2296 max_cpus = sched->max_cpu + 1;
2297 ocpu = perf_evsel__intval(evsel, sample, "orig_cpu");
2298 dcpu = perf_evsel__intval(evsel, sample, "dest_cpu");
2299
2300 thread = machine__findnew_thread(machine, sample->pid, sample->tid);
2301 if (thread == NULL)
2302 return;
2303
2304 if (timehist_skip_sample(sched, thread, evsel, sample) &&
2305 timehist_skip_sample(sched, migrated, evsel, sample)) {
2306 return;
2307 }
2308
2309 timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr));
2310 printf("%15s [%04d] ", tstr, sample->cpu);
2311
2312 if (sched->show_cpu_visual) {
2313 u32 i;
2314 char c;
2315
2316 printf(" ");
2317 for (i = 0; i < max_cpus; ++i) {
2318 c = (i == sample->cpu) ? 'm' : ' ';
2319 printf("%c", c);
2320 }
2321 printf(" ");
2322 }
2323
2324 printf(" %-*s ", comm_width, timehist_get_commstr(thread));
2325
2326 /* dt spacer */
2327 printf(" %9s %9s %9s ", "", "", "");
2328
2329 printf("migrated: %s", timehist_get_commstr(migrated));
2330 printf(" cpu %d => %d", ocpu, dcpu);
2331
2332 printf("\n");
2333}
2334
2335static int timehist_migrate_task_event(struct perf_tool *tool,
2336 union perf_event *event __maybe_unused,
2337 struct perf_evsel *evsel,
2338 struct perf_sample *sample,
2339 struct machine *machine)
2340{
2341 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2342 struct thread *thread;
2343 struct thread_runtime *tr = NULL;
2344 /* want pid of migrated task not pid in sample */
2345 const u32 pid = perf_evsel__intval(evsel, sample, "pid");
2346
2347 thread = machine__findnew_thread(machine, 0, pid);
2348 if (thread == NULL)
2349 return -1;
2350
2351 tr = thread__get_runtime(thread);
2352 if (tr == NULL)
2353 return -1;
2354
2355 tr->migrations++;
2356
2357 /* show migrations if requested */
2358 timehist_print_migration_event(sched, evsel, sample, machine, thread);
2359
2360 return 0;
2361}
2362
2363static int timehist_sched_change_event(struct perf_tool *tool,
2364 union perf_event *event,
2365 struct perf_evsel *evsel,
2366 struct perf_sample *sample,
2367 struct machine *machine)
2368{
2369 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2370 struct perf_time_interval *ptime = &sched->ptime;
2371 struct addr_location al;
2372 struct thread *thread;
2373 struct thread_runtime *tr = NULL;
2374 u64 tprev, t = sample->time;
2375 int rc = 0;
2376
2377 if (machine__resolve(machine, &al, sample) < 0) {
2378 pr_err("problem processing %d event. skipping it\n",
2379 event->header.type);
2380 rc = -1;
2381 goto out;
2382 }
2383
2384 thread = timehist_get_thread(sched, sample, machine, evsel);
2385 if (thread == NULL) {
2386 rc = -1;
2387 goto out;
2388 }
2389
2390 if (timehist_skip_sample(sched, thread, evsel, sample))
2391 goto out;
2392
2393 tr = thread__get_runtime(thread);
2394 if (tr == NULL) {
2395 rc = -1;
2396 goto out;
2397 }
2398
2399 tprev = perf_evsel__get_time(evsel, sample->cpu);
2400
2401 /*
2402 * If start time given:
2403 * - sample time is under window user cares about - skip sample
2404 * - tprev is under window user cares about - reset to start of window
2405 */
2406 if (ptime->start && ptime->start > t)
2407 goto out;
2408
2409 if (tprev && ptime->start > tprev)
2410 tprev = ptime->start;
2411
2412 /*
2413 * If end time given:
2414 * - previous sched event is out of window - we are done
2415 * - sample time is beyond window user cares about - reset it
2416 * to close out stats for time window interest
2417 */
2418 if (ptime->end) {
2419 if (tprev > ptime->end)
2420 goto out;
2421
2422 if (t > ptime->end)
2423 t = ptime->end;
2424 }
2425
2426 if (!sched->idle_hist || thread->tid == 0) {
2427 timehist_update_runtime_stats(tr, t, tprev);
2428
2429 if (sched->idle_hist) {
2430 struct idle_thread_runtime *itr = (void *)tr;
2431 struct thread_runtime *last_tr;
2432
2433 BUG_ON(thread->tid != 0);
2434
2435 if (itr->last_thread == NULL)
2436 goto out;
2437
2438 /* add current idle time as last thread's runtime */
2439 last_tr = thread__get_runtime(itr->last_thread);
2440 if (last_tr == NULL)
2441 goto out;
2442
2443 timehist_update_runtime_stats(last_tr, t, tprev);
2444 /*
2445 * remove delta time of last thread as it's not updated
2446 * and otherwise it will show an invalid value next
2447 * time. we only care total run time and run stat.
2448 */
2449 last_tr->dt_run = 0;
2450 last_tr->dt_wait = 0;
2451 last_tr->dt_delay = 0;
2452
2453 if (itr->cursor.nr)
2454 callchain_append(&itr->callchain, &itr->cursor, t - tprev);
2455
2456 itr->last_thread = NULL;
2457 }
2458 }
2459
2460 if (!sched->summary_only)
2461 timehist_print_sample(sched, sample, &al, thread, t);
2462
2463out:
2464 if (sched->hist_time.start == 0 && t >= ptime->start)
2465 sched->hist_time.start = t;
2466 if (ptime->end == 0 || t <= ptime->end)
2467 sched->hist_time.end = t;
2468
2469 if (tr) {
2470 /* time of this sched_switch event becomes last time task seen */
2471 tr->last_time = sample->time;
2472
2473 /* sched out event for task so reset ready to run time */
2474 tr->ready_to_run = 0;
2475 }
2476
2477 perf_evsel__save_time(evsel, sample->time, sample->cpu);
2478
2479 return rc;
2480}
2481
2482static int timehist_sched_switch_event(struct perf_tool *tool,
2483 union perf_event *event,
2484 struct perf_evsel *evsel,
2485 struct perf_sample *sample,
2486 struct machine *machine __maybe_unused)
2487{
2488 return timehist_sched_change_event(tool, event, evsel, sample, machine);
2489}
2490
2491static int process_lost(struct perf_tool *tool __maybe_unused,
2492 union perf_event *event,
2493 struct perf_sample *sample,
2494 struct machine *machine __maybe_unused)
2495{
2496 char tstr[64];
2497
2498 timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr));
2499 printf("%15s ", tstr);
2500 printf("lost %" PRIu64 " events on cpu %d\n", event->lost.lost, sample->cpu);
2501
2502 return 0;
2503}
2504
2505
2506static void print_thread_runtime(struct thread *t,
2507 struct thread_runtime *r)
2508{
2509 double mean = avg_stats(&r->run_stats);
2510 float stddev;
2511
2512 printf("%*s %5d %9" PRIu64 " ",
2513 comm_width, timehist_get_commstr(t), t->ppid,
2514 (u64) r->run_stats.n);
2515
2516 print_sched_time(r->total_run_time, 8);
2517 stddev = rel_stddev_stats(stddev_stats(&r->run_stats), mean);
2518 print_sched_time(r->run_stats.min, 6);
2519 printf(" ");
2520 print_sched_time((u64) mean, 6);
2521 printf(" ");
2522 print_sched_time(r->run_stats.max, 6);
2523 printf(" ");
2524 printf("%5.2f", stddev);
2525 printf(" %5" PRIu64, r->migrations);
2526 printf("\n");
2527}
2528
2529struct total_run_stats {
2530 u64 sched_count;
2531 u64 task_count;
2532 u64 total_run_time;
2533};
2534
2535static int __show_thread_runtime(struct thread *t, void *priv)
2536{
2537 struct total_run_stats *stats = priv;
2538 struct thread_runtime *r;
2539
2540 if (thread__is_filtered(t))
2541 return 0;
2542
2543 r = thread__priv(t);
2544 if (r && r->run_stats.n) {
2545 stats->task_count++;
2546 stats->sched_count += r->run_stats.n;
2547 stats->total_run_time += r->total_run_time;
2548 print_thread_runtime(t, r);
2549 }
2550
2551 return 0;
2552}
2553
2554static int show_thread_runtime(struct thread *t, void *priv)
2555{
2556 if (t->dead)
2557 return 0;
2558
2559 return __show_thread_runtime(t, priv);
2560}
2561
2562static int show_deadthread_runtime(struct thread *t, void *priv)
2563{
2564 if (!t->dead)
2565 return 0;
2566
2567 return __show_thread_runtime(t, priv);
2568}
2569
2570static size_t callchain__fprintf_folded(FILE *fp, struct callchain_node *node)
2571{
2572 const char *sep = " <- ";
2573 struct callchain_list *chain;
2574 size_t ret = 0;
2575 char bf[1024];
2576 bool first;
2577
2578 if (node == NULL)
2579 return 0;
2580
2581 ret = callchain__fprintf_folded(fp, node->parent);
2582 first = (ret == 0);
2583
2584 list_for_each_entry(chain, &node->val, list) {
2585 if (chain->ip >= PERF_CONTEXT_MAX)
2586 continue;
2587 if (chain->ms.sym && chain->ms.sym->ignore)
2588 continue;
2589 ret += fprintf(fp, "%s%s", first ? "" : sep,
2590 callchain_list__sym_name(chain, bf, sizeof(bf),
2591 false));
2592 first = false;
2593 }
2594
2595 return ret;
2596}
2597
2598static size_t timehist_print_idlehist_callchain(struct rb_root *root)
2599{
2600 size_t ret = 0;
2601 FILE *fp = stdout;
2602 struct callchain_node *chain;
2603 struct rb_node *rb_node = rb_first(root);
2604
2605 printf(" %16s %8s %s\n", "Idle time (msec)", "Count", "Callchains");
2606 printf(" %.16s %.8s %.50s\n", graph_dotted_line, graph_dotted_line,
2607 graph_dotted_line);
2608
2609 while (rb_node) {
2610 chain = rb_entry(rb_node, struct callchain_node, rb_node);
2611 rb_node = rb_next(rb_node);
2612
2613 ret += fprintf(fp, " ");
2614 print_sched_time(chain->hit, 12);
2615 ret += 16; /* print_sched_time returns 2nd arg + 4 */
2616 ret += fprintf(fp, " %8d ", chain->count);
2617 ret += callchain__fprintf_folded(fp, chain);
2618 ret += fprintf(fp, "\n");
2619 }
2620
2621 return ret;
2622}
2623
2624static void timehist_print_summary(struct perf_sched *sched,
2625 struct perf_session *session)
2626{
2627 struct machine *m = &session->machines.host;
2628 struct total_run_stats totals;
2629 u64 task_count;
2630 struct thread *t;
2631 struct thread_runtime *r;
2632 int i;
2633 u64 hist_time = sched->hist_time.end - sched->hist_time.start;
2634
2635 memset(&totals, 0, sizeof(totals));
2636
2637 if (sched->idle_hist) {
2638 printf("\nIdle-time summary\n");
2639 printf("%*s parent sched-out ", comm_width, "comm");
2640 printf(" idle-time min-idle avg-idle max-idle stddev migrations\n");
2641 } else {
2642 printf("\nRuntime summary\n");
2643 printf("%*s parent sched-in ", comm_width, "comm");
2644 printf(" run-time min-run avg-run max-run stddev migrations\n");
2645 }
2646 printf("%*s (count) ", comm_width, "");
2647 printf(" (msec) (msec) (msec) (msec) %%\n");
2648 printf("%.117s\n", graph_dotted_line);
2649
2650 machine__for_each_thread(m, show_thread_runtime, &totals);
2651 task_count = totals.task_count;
2652 if (!task_count)
2653 printf("<no still running tasks>\n");
2654
2655 printf("\nTerminated tasks:\n");
2656 machine__for_each_thread(m, show_deadthread_runtime, &totals);
2657 if (task_count == totals.task_count)
2658 printf("<no terminated tasks>\n");
2659
2660 /* CPU idle stats not tracked when samples were skipped */
2661 if (sched->skipped_samples && !sched->idle_hist)
2662 return;
2663
2664 printf("\nIdle stats:\n");
2665 for (i = 0; i < idle_max_cpu; ++i) {
2666 t = idle_threads[i];
2667 if (!t)
2668 continue;
2669
2670 r = thread__priv(t);
2671 if (r && r->run_stats.n) {
2672 totals.sched_count += r->run_stats.n;
2673 printf(" CPU %2d idle for ", i);
2674 print_sched_time(r->total_run_time, 6);
2675 printf(" msec (%6.2f%%)\n", 100.0 * r->total_run_time / hist_time);
2676 } else
2677 printf(" CPU %2d idle entire time window\n", i);
2678 }
2679
2680 if (sched->idle_hist && symbol_conf.use_callchain) {
2681 callchain_param.mode = CHAIN_FOLDED;
2682 callchain_param.value = CCVAL_PERIOD;
2683
2684 callchain_register_param(&callchain_param);
2685
2686 printf("\nIdle stats by callchain:\n");
2687 for (i = 0; i < idle_max_cpu; ++i) {
2688 struct idle_thread_runtime *itr;
2689
2690 t = idle_threads[i];
2691 if (!t)
2692 continue;
2693
2694 itr = thread__priv(t);
2695 if (itr == NULL)
2696 continue;
2697
2698 callchain_param.sort(&itr->sorted_root, &itr->callchain,
2699 0, &callchain_param);
2700
2701 printf(" CPU %2d:", i);
2702 print_sched_time(itr->tr.total_run_time, 6);
2703 printf(" msec\n");
2704 timehist_print_idlehist_callchain(&itr->sorted_root);
2705 printf("\n");
2706 }
2707 }
2708
2709 printf("\n"
2710 " Total number of unique tasks: %" PRIu64 "\n"
2711 "Total number of context switches: %" PRIu64 "\n",
2712 totals.task_count, totals.sched_count);
2713
2714 printf(" Total run time (msec): ");
2715 print_sched_time(totals.total_run_time, 2);
2716 printf("\n");
2717
2718 printf(" Total scheduling time (msec): ");
2719 print_sched_time(hist_time, 2);
2720 printf(" (x %d)\n", sched->max_cpu);
2721}
2722
2723typedef int (*sched_handler)(struct perf_tool *tool,
2724 union perf_event *event,
2725 struct perf_evsel *evsel,
2726 struct perf_sample *sample,
2727 struct machine *machine);
2728
2729static int perf_timehist__process_sample(struct perf_tool *tool,
2730 union perf_event *event,
2731 struct perf_sample *sample,
2732 struct perf_evsel *evsel,
2733 struct machine *machine)
2734{
2735 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2736 int err = 0;
2737 int this_cpu = sample->cpu;
2738
2739 if (this_cpu > sched->max_cpu)
2740 sched->max_cpu = this_cpu;
2741
2742 if (evsel->handler != NULL) {
2743 sched_handler f = evsel->handler;
2744
2745 err = f(tool, event, evsel, sample, machine);
2746 }
2747
2748 return err;
2749}
2750
2751static int timehist_check_attr(struct perf_sched *sched,
2752 struct perf_evlist *evlist)
2753{
2754 struct perf_evsel *evsel;
2755 struct evsel_runtime *er;
2756
2757 list_for_each_entry(evsel, &evlist->entries, node) {
2758 er = perf_evsel__get_runtime(evsel);
2759 if (er == NULL) {
2760 pr_err("Failed to allocate memory for evsel runtime data\n");
2761 return -1;
2762 }
2763
2764 if (sched->show_callchain &&
2765 !(evsel->attr.sample_type & PERF_SAMPLE_CALLCHAIN)) {
2766 pr_info("Samples do not have callchains.\n");
2767 sched->show_callchain = 0;
2768 symbol_conf.use_callchain = 0;
2769 }
2770 }
2771
2772 return 0;
2773}
2774
2775static int perf_sched__timehist(struct perf_sched *sched)
2776{
2777 const struct perf_evsel_str_handler handlers[] = {
2778 { "sched:sched_switch", timehist_sched_switch_event, },
2779 { "sched:sched_wakeup", timehist_sched_wakeup_event, },
2780 { "sched:sched_wakeup_new", timehist_sched_wakeup_event, },
2781 };
2782 const struct perf_evsel_str_handler migrate_handlers[] = {
2783 { "sched:sched_migrate_task", timehist_migrate_task_event, },
2784 };
2785 struct perf_data_file file = {
2786 .path = input_name,
2787 .mode = PERF_DATA_MODE_READ,
2788 .force = sched->force,
2789 };
2790
2791 struct perf_session *session;
2792 struct perf_evlist *evlist;
2793 int err = -1;
2794
2795 /*
2796 * event handlers for timehist option
2797 */
2798 sched->tool.sample = perf_timehist__process_sample;
2799 sched->tool.mmap = perf_event__process_mmap;
2800 sched->tool.comm = perf_event__process_comm;
2801 sched->tool.exit = perf_event__process_exit;
2802 sched->tool.fork = perf_event__process_fork;
2803 sched->tool.lost = process_lost;
2804 sched->tool.attr = perf_event__process_attr;
2805 sched->tool.tracing_data = perf_event__process_tracing_data;
2806 sched->tool.build_id = perf_event__process_build_id;
2807
2808 sched->tool.ordered_events = true;
2809 sched->tool.ordering_requires_timestamps = true;
2810
2811 symbol_conf.use_callchain = sched->show_callchain;
2812
2813 session = perf_session__new(&file, false, &sched->tool);
2814 if (session == NULL)
2815 return -ENOMEM;
2816
2817 evlist = session->evlist;
2818
2819 symbol__init(&session->header.env);
2820
2821 if (perf_time__parse_str(&sched->ptime, sched->time_str) != 0) {
2822 pr_err("Invalid time string\n");
2823 return -EINVAL;
2824 }
2825
2826 if (timehist_check_attr(sched, evlist) != 0)
2827 goto out;
2828
2829 setup_pager();
2830
2831 /* setup per-evsel handlers */
2832 if (perf_session__set_tracepoints_handlers(session, handlers))
2833 goto out;
2834
2835 /* sched_switch event at a minimum needs to exist */
2836 if (!perf_evlist__find_tracepoint_by_name(session->evlist,
2837 "sched:sched_switch")) {
2838 pr_err("No sched_switch events found. Have you run 'perf sched record'?\n");
2839 goto out;
2840 }
2841
2842 if (sched->show_migrations &&
2843 perf_session__set_tracepoints_handlers(session, migrate_handlers))
2844 goto out;
2845
2846 /* pre-allocate struct for per-CPU idle stats */
2847 sched->max_cpu = session->header.env.nr_cpus_online;
2848 if (sched->max_cpu == 0)
2849 sched->max_cpu = 4;
2850 if (init_idle_threads(sched->max_cpu))
2851 goto out;
2852
2853 /* summary_only implies summary option, but don't overwrite summary if set */
2854 if (sched->summary_only)
2855 sched->summary = sched->summary_only;
2856
2857 if (!sched->summary_only)
2858 timehist_header(sched);
2859
2860 err = perf_session__process_events(session);
2861 if (err) {
2862 pr_err("Failed to process events, error %d", err);
2863 goto out;
2864 }
2865
2866 sched->nr_events = evlist->stats.nr_events[0];
2867 sched->nr_lost_events = evlist->stats.total_lost;
2868 sched->nr_lost_chunks = evlist->stats.nr_events[PERF_RECORD_LOST];
2869
2870 if (sched->summary)
2871 timehist_print_summary(sched, session);
2872
2873out:
2874 free_idle_threads();
2875 perf_session__delete(session);
2876
2877 return err;
2878}
2879
2880
1652static void print_bad_events(struct perf_sched *sched) 2881static void print_bad_events(struct perf_sched *sched)
1653{ 2882{
1654 if (sched->nr_unordered_timestamps && sched->nr_timestamps) { 2883 if (sched->nr_unordered_timestamps && sched->nr_timestamps) {
@@ -1753,7 +2982,7 @@ static int perf_sched__lat(struct perf_sched *sched)
1753 2982
1754 printf(" -----------------------------------------------------------------------------------------------------------------\n"); 2983 printf(" -----------------------------------------------------------------------------------------------------------------\n");
1755 printf(" TOTAL: |%11.3f ms |%9" PRIu64 " |\n", 2984 printf(" TOTAL: |%11.3f ms |%9" PRIu64 " |\n",
1756 (double)sched->all_runtime / 1e6, sched->all_count); 2985 (double)sched->all_runtime / NSEC_PER_MSEC, sched->all_count);
1757 2986
1758 printf(" ---------------------------------------------------\n"); 2987 printf(" ---------------------------------------------------\n");
1759 2988
@@ -1952,38 +3181,32 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
1952 .next_shortname1 = 'A', 3181 .next_shortname1 = 'A',
1953 .next_shortname2 = '0', 3182 .next_shortname2 = '0',
1954 .skip_merge = 0, 3183 .skip_merge = 0,
3184 .show_callchain = 1,
3185 .max_stack = 5,
3186 };
3187 const struct option sched_options[] = {
3188 OPT_STRING('i', "input", &input_name, "file",
3189 "input file name"),
3190 OPT_INCR('v', "verbose", &verbose,
3191 "be more verbose (show symbol address, etc)"),
3192 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
3193 "dump raw trace in ASCII"),
3194 OPT_BOOLEAN('f', "force", &sched.force, "don't complain, do it"),
3195 OPT_END()
1955 }; 3196 };
1956 const struct option latency_options[] = { 3197 const struct option latency_options[] = {
1957 OPT_STRING('s', "sort", &sched.sort_order, "key[,key2...]", 3198 OPT_STRING('s', "sort", &sched.sort_order, "key[,key2...]",
1958 "sort by key(s): runtime, switch, avg, max"), 3199 "sort by key(s): runtime, switch, avg, max"),
1959 OPT_INCR('v', "verbose", &verbose,
1960 "be more verbose (show symbol address, etc)"),
1961 OPT_INTEGER('C', "CPU", &sched.profile_cpu, 3200 OPT_INTEGER('C', "CPU", &sched.profile_cpu,
1962 "CPU to profile on"), 3201 "CPU to profile on"),
1963 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1964 "dump raw trace in ASCII"),
1965 OPT_BOOLEAN('p', "pids", &sched.skip_merge, 3202 OPT_BOOLEAN('p', "pids", &sched.skip_merge,
1966 "latency stats per pid instead of per comm"), 3203 "latency stats per pid instead of per comm"),
1967 OPT_END() 3204 OPT_PARENT(sched_options)
1968 }; 3205 };
1969 const struct option replay_options[] = { 3206 const struct option replay_options[] = {
1970 OPT_UINTEGER('r', "repeat", &sched.replay_repeat, 3207 OPT_UINTEGER('r', "repeat", &sched.replay_repeat,
1971 "repeat the workload replay N times (-1: infinite)"), 3208 "repeat the workload replay N times (-1: infinite)"),
1972 OPT_INCR('v', "verbose", &verbose, 3209 OPT_PARENT(sched_options)
1973 "be more verbose (show symbol address, etc)"),
1974 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1975 "dump raw trace in ASCII"),
1976 OPT_BOOLEAN('f', "force", &sched.force, "don't complain, do it"),
1977 OPT_END()
1978 };
1979 const struct option sched_options[] = {
1980 OPT_STRING('i', "input", &input_name, "file",
1981 "input file name"),
1982 OPT_INCR('v', "verbose", &verbose,
1983 "be more verbose (show symbol address, etc)"),
1984 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1985 "dump raw trace in ASCII"),
1986 OPT_END()
1987 }; 3210 };
1988 const struct option map_options[] = { 3211 const struct option map_options[] = {
1989 OPT_BOOLEAN(0, "compact", &sched.map.comp, 3212 OPT_BOOLEAN(0, "compact", &sched.map.comp,
@@ -1994,8 +3217,32 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
1994 "highlight given CPUs in map"), 3217 "highlight given CPUs in map"),
1995 OPT_STRING(0, "cpus", &sched.map.cpus_str, "cpus", 3218 OPT_STRING(0, "cpus", &sched.map.cpus_str, "cpus",
1996 "display given CPUs in map"), 3219 "display given CPUs in map"),
1997 OPT_END() 3220 OPT_PARENT(sched_options)
3221 };
3222 const struct option timehist_options[] = {
3223 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
3224 "file", "vmlinux pathname"),
3225 OPT_STRING(0, "kallsyms", &symbol_conf.kallsyms_name,
3226 "file", "kallsyms pathname"),
3227 OPT_BOOLEAN('g', "call-graph", &sched.show_callchain,
3228 "Display call chains if present (default on)"),
3229 OPT_UINTEGER(0, "max-stack", &sched.max_stack,
3230 "Maximum number of functions to display backtrace."),
3231 OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
3232 "Look for files with symbols relative to this directory"),
3233 OPT_BOOLEAN('s', "summary", &sched.summary_only,
3234 "Show only syscall summary with statistics"),
3235 OPT_BOOLEAN('S', "with-summary", &sched.summary,
3236 "Show all syscalls and summary with statistics"),
3237 OPT_BOOLEAN('w', "wakeups", &sched.show_wakeups, "Show wakeup events"),
3238 OPT_BOOLEAN('M', "migrations", &sched.show_migrations, "Show migration events"),
3239 OPT_BOOLEAN('V', "cpu-visual", &sched.show_cpu_visual, "Add CPU visual"),
3240 OPT_BOOLEAN('I', "idle-hist", &sched.idle_hist, "Show idle events only"),
3241 OPT_STRING(0, "time", &sched.time_str, "str",
3242 "Time span for analysis (start,stop)"),
3243 OPT_PARENT(sched_options)
1998 }; 3244 };
3245
1999 const char * const latency_usage[] = { 3246 const char * const latency_usage[] = {
2000 "perf sched latency [<options>]", 3247 "perf sched latency [<options>]",
2001 NULL 3248 NULL
@@ -2008,8 +3255,13 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
2008 "perf sched map [<options>]", 3255 "perf sched map [<options>]",
2009 NULL 3256 NULL
2010 }; 3257 };
3258 const char * const timehist_usage[] = {
3259 "perf sched timehist [<options>]",
3260 NULL
3261 };
2011 const char *const sched_subcommands[] = { "record", "latency", "map", 3262 const char *const sched_subcommands[] = { "record", "latency", "map",
2012 "replay", "script", NULL }; 3263 "replay", "script",
3264 "timehist", NULL };
2013 const char *sched_usage[] = { 3265 const char *sched_usage[] = {
2014 NULL, 3266 NULL,
2015 NULL 3267 NULL
@@ -2072,6 +3324,21 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
2072 usage_with_options(replay_usage, replay_options); 3324 usage_with_options(replay_usage, replay_options);
2073 } 3325 }
2074 return perf_sched__replay(&sched); 3326 return perf_sched__replay(&sched);
3327 } else if (!strcmp(argv[0], "timehist")) {
3328 if (argc) {
3329 argc = parse_options(argc, argv, timehist_options,
3330 timehist_usage, 0);
3331 if (argc)
3332 usage_with_options(timehist_usage, timehist_options);
3333 }
3334 if (sched.show_wakeups && sched.summary_only) {
3335 pr_err(" Error: -s and -w are mutually exclusive.\n");
3336 parse_options_usage(timehist_usage, timehist_options, "s", true);
3337 parse_options_usage(NULL, timehist_options, "w", true);
3338 return -EINVAL;
3339 }
3340
3341 return perf_sched__timehist(&sched);
2075 } else { 3342 } else {
2076 usage_with_options(sched_usage, sched_options); 3343 usage_with_options(sched_usage, sched_options);
2077 } 3344 }
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index c859e59dfe3e..2f3ff69fc4e7 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -22,8 +22,10 @@
22#include "util/thread_map.h" 22#include "util/thread_map.h"
23#include "util/stat.h" 23#include "util/stat.h"
24#include "util/thread-stack.h" 24#include "util/thread-stack.h"
25#include "util/time-utils.h"
25#include <linux/bitmap.h> 26#include <linux/bitmap.h>
26#include <linux/stringify.h> 27#include <linux/stringify.h>
28#include <linux/time64.h>
27#include "asm/bug.h" 29#include "asm/bug.h"
28#include "util/mem-events.h" 30#include "util/mem-events.h"
29 31
@@ -65,6 +67,8 @@ enum perf_output_field {
65 PERF_OUTPUT_WEIGHT = 1U << 18, 67 PERF_OUTPUT_WEIGHT = 1U << 18,
66 PERF_OUTPUT_BPF_OUTPUT = 1U << 19, 68 PERF_OUTPUT_BPF_OUTPUT = 1U << 19,
67 PERF_OUTPUT_CALLINDENT = 1U << 20, 69 PERF_OUTPUT_CALLINDENT = 1U << 20,
70 PERF_OUTPUT_INSN = 1U << 21,
71 PERF_OUTPUT_INSNLEN = 1U << 22,
68}; 72};
69 73
70struct output_option { 74struct output_option {
@@ -92,6 +96,8 @@ struct output_option {
92 {.str = "weight", .field = PERF_OUTPUT_WEIGHT}, 96 {.str = "weight", .field = PERF_OUTPUT_WEIGHT},
93 {.str = "bpf-output", .field = PERF_OUTPUT_BPF_OUTPUT}, 97 {.str = "bpf-output", .field = PERF_OUTPUT_BPF_OUTPUT},
94 {.str = "callindent", .field = PERF_OUTPUT_CALLINDENT}, 98 {.str = "callindent", .field = PERF_OUTPUT_CALLINDENT},
99 {.str = "insn", .field = PERF_OUTPUT_INSN},
100 {.str = "insnlen", .field = PERF_OUTPUT_INSNLEN},
95}; 101};
96 102
97/* default set to maintain compatibility with current format */ 103/* default set to maintain compatibility with current format */
@@ -436,7 +442,6 @@ static void print_sample_start(struct perf_sample *sample,
436{ 442{
437 struct perf_event_attr *attr = &evsel->attr; 443 struct perf_event_attr *attr = &evsel->attr;
438 unsigned long secs; 444 unsigned long secs;
439 unsigned long usecs;
440 unsigned long long nsecs; 445 unsigned long long nsecs;
441 446
442 if (PRINT_FIELD(COMM)) { 447 if (PRINT_FIELD(COMM)) {
@@ -464,13 +469,16 @@ static void print_sample_start(struct perf_sample *sample,
464 469
465 if (PRINT_FIELD(TIME)) { 470 if (PRINT_FIELD(TIME)) {
466 nsecs = sample->time; 471 nsecs = sample->time;
467 secs = nsecs / NSECS_PER_SEC; 472 secs = nsecs / NSEC_PER_SEC;
468 nsecs -= secs * NSECS_PER_SEC; 473 nsecs -= secs * NSEC_PER_SEC;
469 usecs = nsecs / NSECS_PER_USEC; 474
470 if (nanosecs) 475 if (nanosecs)
471 printf("%5lu.%09llu: ", secs, nsecs); 476 printf("%5lu.%09llu: ", secs, nsecs);
472 else 477 else {
473 printf("%5lu.%06lu: ", secs, usecs); 478 char sample_time[32];
479 timestamp__scnprintf_usec(sample->time, sample_time, sizeof(sample_time));
480 printf("%12s: ", sample_time);
481 }
474 } 482 }
475} 483}
476 484
@@ -521,11 +529,11 @@ static void print_sample_brstacksym(struct perf_sample *sample,
521 529
522 thread__find_addr_map(thread, sample->cpumode, MAP__FUNCTION, from, &alf); 530 thread__find_addr_map(thread, sample->cpumode, MAP__FUNCTION, from, &alf);
523 if (alf.map) 531 if (alf.map)
524 alf.sym = map__find_symbol(alf.map, alf.addr, NULL); 532 alf.sym = map__find_symbol(alf.map, alf.addr);
525 533
526 thread__find_addr_map(thread, sample->cpumode, MAP__FUNCTION, to, &alt); 534 thread__find_addr_map(thread, sample->cpumode, MAP__FUNCTION, to, &alt);
527 if (alt.map) 535 if (alt.map)
528 alt.sym = map__find_symbol(alt.map, alt.addr, NULL); 536 alt.sym = map__find_symbol(alt.map, alt.addr);
529 537
530 symbol__fprintf_symname_offs(alf.sym, &alf, stdout); 538 symbol__fprintf_symname_offs(alf.sym, &alf, stdout);
531 putchar('/'); 539 putchar('/');
@@ -623,6 +631,20 @@ static void print_sample_callindent(struct perf_sample *sample,
623 printf("%*s", spacing - len, ""); 631 printf("%*s", spacing - len, "");
624} 632}
625 633
634static void print_insn(struct perf_sample *sample,
635 struct perf_event_attr *attr)
636{
637 if (PRINT_FIELD(INSNLEN))
638 printf(" ilen: %d", sample->insn_len);
639 if (PRINT_FIELD(INSN)) {
640 int i;
641
642 printf(" insn:");
643 for (i = 0; i < sample->insn_len; i++)
644 printf(" %02x", (unsigned char)sample->insn[i]);
645 }
646}
647
626static void print_sample_bts(struct perf_sample *sample, 648static void print_sample_bts(struct perf_sample *sample,
627 struct perf_evsel *evsel, 649 struct perf_evsel *evsel,
628 struct thread *thread, 650 struct thread *thread,
@@ -667,6 +689,8 @@ static void print_sample_bts(struct perf_sample *sample,
667 if (print_srcline_last) 689 if (print_srcline_last)
668 map__fprintf_srcline(al->map, al->addr, "\n ", stdout); 690 map__fprintf_srcline(al->map, al->addr, "\n ", stdout);
669 691
692 print_insn(sample, attr);
693
670 printf("\n"); 694 printf("\n");
671} 695}
672 696
@@ -810,6 +834,8 @@ struct perf_script {
810 struct cpu_map *cpus; 834 struct cpu_map *cpus;
811 struct thread_map *threads; 835 struct thread_map *threads;
812 int name_width; 836 int name_width;
837 const char *time_str;
838 struct perf_time_interval ptime;
813}; 839};
814 840
815static int perf_evlist__max_name_len(struct perf_evlist *evlist) 841static int perf_evlist__max_name_len(struct perf_evlist *evlist)
@@ -910,7 +936,7 @@ static void process_event(struct perf_script *script,
910 936
911 if (perf_evsel__is_bpf_output(evsel) && PRINT_FIELD(BPF_OUTPUT)) 937 if (perf_evsel__is_bpf_output(evsel) && PRINT_FIELD(BPF_OUTPUT))
912 print_sample_bpf_output(sample); 938 print_sample_bpf_output(sample);
913 939 print_insn(sample, attr);
914 printf("\n"); 940 printf("\n");
915} 941}
916 942
@@ -991,6 +1017,9 @@ static int process_sample_event(struct perf_tool *tool,
991 struct perf_script *scr = container_of(tool, struct perf_script, tool); 1017 struct perf_script *scr = container_of(tool, struct perf_script, tool);
992 struct addr_location al; 1018 struct addr_location al;
993 1019
1020 if (perf_time__skip_sample(&scr->ptime, sample->time))
1021 return 0;
1022
994 if (debug_mode) { 1023 if (debug_mode) {
995 if (sample->time < last_timestamp) { 1024 if (sample->time < last_timestamp) {
996 pr_err("Samples misordered, previous: %" PRIu64 1025 pr_err("Samples misordered, previous: %" PRIu64
@@ -2123,11 +2152,13 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2123 "Valid types: hw,sw,trace,raw. " 2152 "Valid types: hw,sw,trace,raw. "
2124 "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso," 2153 "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,"
2125 "addr,symoff,period,iregs,brstack,brstacksym,flags," 2154 "addr,symoff,period,iregs,brstack,brstacksym,flags,"
2126 "bpf-output,callindent", parse_output_fields), 2155 "bpf-output,callindent,insn,insnlen", parse_output_fields),
2127 OPT_BOOLEAN('a', "all-cpus", &system_wide, 2156 OPT_BOOLEAN('a', "all-cpus", &system_wide,
2128 "system-wide collection from all CPUs"), 2157 "system-wide collection from all CPUs"),
2129 OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]", 2158 OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]",
2130 "only consider these symbols"), 2159 "only consider these symbols"),
2160 OPT_STRING(0, "stop-bt", &symbol_conf.bt_stop_list_str, "symbol[,symbol...]",
2161 "Stop display of callgraph at these symbols"),
2131 OPT_STRING('C', "cpu", &cpu_list, "cpu", "list of cpus to profile"), 2162 OPT_STRING('C', "cpu", &cpu_list, "cpu", "list of cpus to profile"),
2132 OPT_STRING('c', "comms", &symbol_conf.comm_list_str, "comm[,comm...]", 2163 OPT_STRING('c', "comms", &symbol_conf.comm_list_str, "comm[,comm...]",
2133 "only display events for these comms"), 2164 "only display events for these comms"),
@@ -2161,7 +2192,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2161 "Enable symbol demangling"), 2192 "Enable symbol demangling"),
2162 OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, 2193 OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel,
2163 "Enable kernel symbol demangling"), 2194 "Enable kernel symbol demangling"),
2164 2195 OPT_STRING(0, "time", &script.time_str, "str",
2196 "Time span of interest (start,stop)"),
2165 OPT_END() 2197 OPT_END()
2166 }; 2198 };
2167 const char * const script_subcommands[] = { "record", "report", NULL }; 2199 const char * const script_subcommands[] = { "record", "report", NULL };
@@ -2440,6 +2472,12 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2440 if (err < 0) 2472 if (err < 0)
2441 goto out_delete; 2473 goto out_delete;
2442 2474
2475 /* needs to be parsed after looking up reference time */
2476 if (perf_time__parse_str(&script.ptime, script.time_str) != 0) {
2477 pr_err("Invalid time string\n");
2478 return -EINVAL;
2479 }
2480
2443 err = __cmd_script(&script); 2481 err = __cmd_script(&script);
2444 2482
2445 flush_scripting(); 2483 flush_scripting();
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 3c7452b39f57..a02f2e965628 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -52,6 +52,7 @@
52#include "util/evlist.h" 52#include "util/evlist.h"
53#include "util/evsel.h" 53#include "util/evsel.h"
54#include "util/debug.h" 54#include "util/debug.h"
55#include "util/drv_configs.h"
55#include "util/color.h" 56#include "util/color.h"
56#include "util/stat.h" 57#include "util/stat.h"
57#include "util/header.h" 58#include "util/header.h"
@@ -65,6 +66,7 @@
65#include "util/group.h" 66#include "util/group.h"
66#include "asm/bug.h" 67#include "asm/bug.h"
67 68
69#include <linux/time64.h>
68#include <api/fs/fs.h> 70#include <api/fs/fs.h>
69#include <stdlib.h> 71#include <stdlib.h>
70#include <sys/prctl.h> 72#include <sys/prctl.h>
@@ -172,7 +174,7 @@ static inline void diff_timespec(struct timespec *r, struct timespec *a,
172{ 174{
173 r->tv_sec = a->tv_sec - b->tv_sec; 175 r->tv_sec = a->tv_sec - b->tv_sec;
174 if (a->tv_nsec < b->tv_nsec) { 176 if (a->tv_nsec < b->tv_nsec) {
175 r->tv_nsec = a->tv_nsec + 1000000000L - b->tv_nsec; 177 r->tv_nsec = a->tv_nsec + NSEC_PER_SEC - b->tv_nsec;
176 r->tv_sec--; 178 r->tv_sec--;
177 } else { 179 } else {
178 r->tv_nsec = a->tv_nsec - b->tv_nsec ; 180 r->tv_nsec = a->tv_nsec - b->tv_nsec ;
@@ -354,7 +356,7 @@ static void process_interval(void)
354 diff_timespec(&rs, &ts, &ref_time); 356 diff_timespec(&rs, &ts, &ref_time);
355 357
356 if (STAT_RECORD) { 358 if (STAT_RECORD) {
357 if (WRITE_STAT_ROUND_EVENT(rs.tv_sec * NSECS_PER_SEC + rs.tv_nsec, INTERVAL)) 359 if (WRITE_STAT_ROUND_EVENT(rs.tv_sec * NSEC_PER_SEC + rs.tv_nsec, INTERVAL))
358 pr_err("failed to write stat round event\n"); 360 pr_err("failed to write stat round event\n");
359 } 361 }
360 362
@@ -364,7 +366,7 @@ static void process_interval(void)
364static void enable_counters(void) 366static void enable_counters(void)
365{ 367{
366 if (initial_delay) 368 if (initial_delay)
367 usleep(initial_delay * 1000); 369 usleep(initial_delay * USEC_PER_MSEC);
368 370
369 /* 371 /*
370 * We need to enable counters only if: 372 * We need to enable counters only if:
@@ -539,10 +541,11 @@ static int __run_perf_stat(int argc, const char **argv)
539 int status = 0; 541 int status = 0;
540 const bool forks = (argc > 0); 542 const bool forks = (argc > 0);
541 bool is_pipe = STAT_RECORD ? perf_stat.file.is_pipe : false; 543 bool is_pipe = STAT_RECORD ? perf_stat.file.is_pipe : false;
544 struct perf_evsel_config_term *err_term;
542 545
543 if (interval) { 546 if (interval) {
544 ts.tv_sec = interval / 1000; 547 ts.tv_sec = interval / USEC_PER_MSEC;
545 ts.tv_nsec = (interval % 1000) * 1000000; 548 ts.tv_nsec = (interval % USEC_PER_MSEC) * NSEC_PER_MSEC;
546 } else { 549 } else {
547 ts.tv_sec = 1; 550 ts.tv_sec = 1;
548 ts.tv_nsec = 0; 551 ts.tv_nsec = 0;
@@ -610,6 +613,13 @@ try_again:
610 return -1; 613 return -1;
611 } 614 }
612 615
616 if (perf_evlist__apply_drv_configs(evsel_list, &counter, &err_term)) {
617 error("failed to set config \"%s\" on event %s with %d (%s)\n",
618 err_term->val.drv_cfg, perf_evsel__name(counter), errno,
619 str_error_r(errno, msg, sizeof(msg)));
620 return -1;
621 }
622
613 if (STAT_RECORD) { 623 if (STAT_RECORD) {
614 int err, fd = perf_data_file__fd(&perf_stat.file); 624 int err, fd = perf_data_file__fd(&perf_stat.file);
615 625
@@ -971,7 +981,7 @@ static void print_metric_header(void *ctx, const char *color __maybe_unused,
971static void nsec_printout(int id, int nr, struct perf_evsel *evsel, double avg) 981static void nsec_printout(int id, int nr, struct perf_evsel *evsel, double avg)
972{ 982{
973 FILE *output = stat_config.output; 983 FILE *output = stat_config.output;
974 double msecs = avg / 1e6; 984 double msecs = avg / NSEC_PER_MSEC;
975 const char *fmt_v, *fmt_n; 985 const char *fmt_v, *fmt_n;
976 char name[25]; 986 char name[25];
977 987
@@ -1460,7 +1470,7 @@ static void print_footer(void)
1460 if (!null_run) 1470 if (!null_run)
1461 fprintf(output, "\n"); 1471 fprintf(output, "\n");
1462 fprintf(output, " %17.9f seconds time elapsed", 1472 fprintf(output, " %17.9f seconds time elapsed",
1463 avg_stats(&walltime_nsecs_stats)/1e9); 1473 avg_stats(&walltime_nsecs_stats) / NSEC_PER_SEC);
1464 if (run_count > 1) { 1474 if (run_count > 1) {
1465 fprintf(output, " "); 1475 fprintf(output, " ");
1466 print_noise_pct(stddev_stats(&walltime_nsecs_stats), 1476 print_noise_pct(stddev_stats(&walltime_nsecs_stats),
@@ -2175,8 +2185,8 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
2175 update_stats(&walltime_nsecs_stats, stat_round->time); 2185 update_stats(&walltime_nsecs_stats, stat_round->time);
2176 2186
2177 if (stat_config.interval && stat_round->time) { 2187 if (stat_config.interval && stat_round->time) {
2178 tsh.tv_sec = stat_round->time / NSECS_PER_SEC; 2188 tsh.tv_sec = stat_round->time / NSEC_PER_SEC;
2179 tsh.tv_nsec = stat_round->time % NSECS_PER_SEC; 2189 tsh.tv_nsec = stat_round->time % NSEC_PER_SEC;
2180 ts = &tsh; 2190 ts = &tsh;
2181 } 2191 }
2182 2192
@@ -2185,7 +2195,7 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
2185} 2195}
2186 2196
2187static 2197static
2188int process_stat_config_event(struct perf_tool *tool __maybe_unused, 2198int process_stat_config_event(struct perf_tool *tool,
2189 union perf_event *event, 2199 union perf_event *event,
2190 struct perf_session *session __maybe_unused) 2200 struct perf_session *session __maybe_unused)
2191{ 2201{
@@ -2228,7 +2238,7 @@ static int set_maps(struct perf_stat *st)
2228} 2238}
2229 2239
2230static 2240static
2231int process_thread_map_event(struct perf_tool *tool __maybe_unused, 2241int process_thread_map_event(struct perf_tool *tool,
2232 union perf_event *event, 2242 union perf_event *event,
2233 struct perf_session *session __maybe_unused) 2243 struct perf_session *session __maybe_unused)
2234{ 2244{
@@ -2247,7 +2257,7 @@ int process_thread_map_event(struct perf_tool *tool __maybe_unused,
2247} 2257}
2248 2258
2249static 2259static
2250int process_cpu_map_event(struct perf_tool *tool __maybe_unused, 2260int process_cpu_map_event(struct perf_tool *tool,
2251 union perf_event *event, 2261 union perf_event *event,
2252 struct perf_session *session __maybe_unused) 2262 struct perf_session *session __maybe_unused)
2253{ 2263{
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index 733a55422d03..e7eaa298d34a 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -24,6 +24,7 @@
24#include "util/evlist.h" 24#include "util/evlist.h"
25#include "util/evsel.h" 25#include "util/evsel.h"
26#include <linux/rbtree.h> 26#include <linux/rbtree.h>
27#include <linux/time64.h>
27#include "util/symbol.h" 28#include "util/symbol.h"
28#include "util/callchain.h" 29#include "util/callchain.h"
29#include "util/strlist.h" 30#include "util/strlist.h"
@@ -1288,9 +1289,9 @@ static void draw_process_bars(struct timechart *tchart)
1288 if (c->comm) { 1289 if (c->comm) {
1289 char comm[256]; 1290 char comm[256];
1290 if (c->total_time > 5000000000) /* 5 seconds */ 1291 if (c->total_time > 5000000000) /* 5 seconds */
1291 sprintf(comm, "%s:%i (%2.2fs)", c->comm, p->pid, c->total_time / 1000000000.0); 1292 sprintf(comm, "%s:%i (%2.2fs)", c->comm, p->pid, c->total_time / (double)NSEC_PER_SEC);
1292 else 1293 else
1293 sprintf(comm, "%s:%i (%3.1fms)", c->comm, p->pid, c->total_time / 1000000.0); 1294 sprintf(comm, "%s:%i (%3.1fms)", c->comm, p->pid, c->total_time / (double)NSEC_PER_MSEC);
1294 1295
1295 svg_text(Y, c->start_time, comm); 1296 svg_text(Y, c->start_time, comm);
1296 } 1297 }
@@ -1637,7 +1638,7 @@ static int __cmd_timechart(struct timechart *tchart, const char *output_name)
1637 write_svg_file(tchart, output_name); 1638 write_svg_file(tchart, output_name);
1638 1639
1639 pr_info("Written %2.1f seconds of trace to %s.\n", 1640 pr_info("Written %2.1f seconds of trace to %s.\n",
1640 (tchart->last_time - tchart->first_time) / 1000000000.0, output_name); 1641 (tchart->last_time - tchart->first_time) / (double)NSEC_PER_SEC, output_name);
1641out_delete: 1642out_delete:
1642 perf_session__delete(session); 1643 perf_session__delete(session);
1643 return ret; 1644 return ret;
@@ -1901,10 +1902,10 @@ parse_time(const struct option *opt, const char *arg, int __maybe_unused unset)
1901 if (sscanf(arg, "%" PRIu64 "%cs", value, &unit) > 0) { 1902 if (sscanf(arg, "%" PRIu64 "%cs", value, &unit) > 0) {
1902 switch (unit) { 1903 switch (unit) {
1903 case 'm': 1904 case 'm':
1904 *value *= 1000000; 1905 *value *= NSEC_PER_MSEC;
1905 break; 1906 break;
1906 case 'u': 1907 case 'u':
1907 *value *= 1000; 1908 *value *= NSEC_PER_USEC;
1908 break; 1909 break;
1909 case 'n': 1910 case 'n':
1910 break; 1911 break;
@@ -1928,7 +1929,7 @@ int cmd_timechart(int argc, const char **argv,
1928 .ordered_events = true, 1929 .ordered_events = true,
1929 }, 1930 },
1930 .proc_num = 15, 1931 .proc_num = 15,
1931 .min_time = 1000000, 1932 .min_time = NSEC_PER_MSEC,
1932 .merge_dist = 1000, 1933 .merge_dist = 1000,
1933 }; 1934 };
1934 const char *output_name = "output.svg"; 1935 const char *output_name = "output.svg";
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 418ed94756d3..3df4178ba378 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -24,6 +24,7 @@
24#include "util/annotate.h" 24#include "util/annotate.h"
25#include "util/config.h" 25#include "util/config.h"
26#include "util/color.h" 26#include "util/color.h"
27#include "util/drv_configs.h"
27#include "util/evlist.h" 28#include "util/evlist.h"
28#include "util/evsel.h" 29#include "util/evsel.h"
29#include "util/machine.h" 30#include "util/machine.h"
@@ -68,6 +69,7 @@
68#include <sys/mman.h> 69#include <sys/mman.h>
69 70
70#include <linux/stringify.h> 71#include <linux/stringify.h>
72#include <linux/time64.h>
71#include <linux/types.h> 73#include <linux/types.h>
72 74
73static volatile int done; 75static volatile int done;
@@ -128,7 +130,7 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
128 return err; 130 return err;
129 } 131 }
130 132
131 err = symbol__disassemble(sym, map, 0); 133 err = symbol__disassemble(sym, map, NULL, 0);
132 if (err == 0) { 134 if (err == 0) {
133out_assign: 135out_assign:
134 top->sym_filter_entry = he; 136 top->sym_filter_entry = he;
@@ -624,7 +626,7 @@ static void *display_thread(void *arg)
624 display_setup_sig(); 626 display_setup_sig();
625 pthread__unblock_sigwinch(); 627 pthread__unblock_sigwinch();
626repeat: 628repeat:
627 delay_msecs = top->delay_secs * 1000; 629 delay_msecs = top->delay_secs * MSEC_PER_SEC;
628 set_term_quiet_input(&save); 630 set_term_quiet_input(&save);
629 /* trash return*/ 631 /* trash return*/
630 getc(stdin); 632 getc(stdin);
@@ -656,34 +658,6 @@ repeat:
656 return NULL; 658 return NULL;
657} 659}
658 660
659static int symbol_filter(struct map *map, struct symbol *sym)
660{
661 const char *name = sym->name;
662
663 if (!__map__is_kernel(map))
664 return 0;
665 /*
666 * ppc64 uses function descriptors and appends a '.' to the
667 * start of every instruction address. Remove it.
668 */
669 if (name[0] == '.')
670 name++;
671
672 if (!strcmp(name, "_text") ||
673 !strcmp(name, "_etext") ||
674 !strcmp(name, "_sinittext") ||
675 !strncmp("init_module", name, 11) ||
676 !strncmp("cleanup_module", name, 14) ||
677 strstr(name, "_text_start") ||
678 strstr(name, "_text_end"))
679 return 1;
680
681 if (symbol__is_idle(sym))
682 sym->ignore = true;
683
684 return 0;
685}
686
687static int hist_iter__top_callback(struct hist_entry_iter *iter, 661static int hist_iter__top_callback(struct hist_entry_iter *iter,
688 struct addr_location *al, bool single, 662 struct addr_location *al, bool single,
689 void *arg) 663 void *arg)
@@ -782,7 +756,7 @@ static void perf_event__process_sample(struct perf_tool *tool,
782 } 756 }
783 } 757 }
784 758
785 if (al.sym == NULL || !al.sym->ignore) { 759 if (al.sym == NULL || !al.sym->idle) {
786 struct hists *hists = evsel__hists(evsel); 760 struct hists *hists = evsel__hists(evsel);
787 struct hist_entry_iter iter = { 761 struct hist_entry_iter iter = {
788 .evsel = evsel, 762 .evsel = evsel,
@@ -940,6 +914,10 @@ static int callchain_param__setup_sample_type(struct callchain_param *callchain)
940 914
941static int __cmd_top(struct perf_top *top) 915static int __cmd_top(struct perf_top *top)
942{ 916{
917 char msg[512];
918 struct perf_evsel *pos;
919 struct perf_evsel_config_term *err_term;
920 struct perf_evlist *evlist = top->evlist;
943 struct record_opts *opts = &top->record_opts; 921 struct record_opts *opts = &top->record_opts;
944 pthread_t thread; 922 pthread_t thread;
945 int ret; 923 int ret;
@@ -948,8 +926,6 @@ static int __cmd_top(struct perf_top *top)
948 if (top->session == NULL) 926 if (top->session == NULL)
949 return -1; 927 return -1;
950 928
951 machines__set_symbol_filter(&top->session->machines, symbol_filter);
952
953 if (!objdump_path) { 929 if (!objdump_path) {
954 ret = perf_env__lookup_objdump(&top->session->header.env); 930 ret = perf_env__lookup_objdump(&top->session->header.env);
955 if (ret) 931 if (ret)
@@ -976,6 +952,14 @@ static int __cmd_top(struct perf_top *top)
976 if (ret) 952 if (ret)
977 goto out_delete; 953 goto out_delete;
978 954
955 ret = perf_evlist__apply_drv_configs(evlist, &pos, &err_term);
956 if (ret) {
957 error("failed to set config \"%s\" on event %s with %d (%s)\n",
958 err_term->val.drv_cfg, perf_evsel__name(pos), errno,
959 str_error_r(errno, msg, sizeof(msg)));
960 goto out_delete;
961 }
962
979 top->session->evlist = top->evlist; 963 top->session->evlist = top->evlist;
980 perf_session__set_id_hdr_size(top->session); 964 perf_session__set_id_hdr_size(top->session);
981 965
@@ -1323,7 +1307,9 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
1323 if (symbol_conf.cumulate_callchain && !callchain_param.order_set) 1307 if (symbol_conf.cumulate_callchain && !callchain_param.order_set)
1324 callchain_param.order = ORDER_CALLER; 1308 callchain_param.order = ORDER_CALLER;
1325 1309
1326 symbol_conf.priv_size = sizeof(struct annotation); 1310 status = symbol__annotation_init();
1311 if (status < 0)
1312 goto out_delete_evlist;
1327 1313
1328 symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL); 1314 symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);
1329 if (symbol__init(NULL) < 0) 1315 if (symbol__init(NULL) < 0)
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index b8c6766301db..206bf72b77fc 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -45,6 +45,7 @@
45#include <linux/audit.h> 45#include <linux/audit.h>
46#include <linux/random.h> 46#include <linux/random.h>
47#include <linux/stringify.h> 47#include <linux/stringify.h>
48#include <linux/time64.h>
48 49
49#ifndef O_CLOEXEC 50#ifndef O_CLOEXEC
50# define O_CLOEXEC 02000000 51# define O_CLOEXEC 02000000
@@ -73,8 +74,6 @@ struct trace {
73 size_t nr; 74 size_t nr;
74 int *entries; 75 int *entries;
75 } ev_qualifier_ids; 76 } ev_qualifier_ids;
76 struct intlist *tid_list;
77 struct intlist *pid_list;
78 struct { 77 struct {
79 size_t nr; 78 size_t nr;
80 pid_t *entries; 79 pid_t *entries;
@@ -741,6 +740,8 @@ static struct syscall_fmt {
741 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, }, 740 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
742 { .name = "rt_tgsigqueueinfo", .errmsg = true, 741 { .name = "rt_tgsigqueueinfo", .errmsg = true,
743 .arg_scnprintf = { [2] = SCA_SIGNUM, /* sig */ }, }, 742 .arg_scnprintf = { [2] = SCA_SIGNUM, /* sig */ }, },
743 { .name = "sched_getattr", .errmsg = true, },
744 { .name = "sched_setattr", .errmsg = true, },
744 { .name = "sched_setscheduler", .errmsg = true, 745 { .name = "sched_setscheduler", .errmsg = true,
745 .arg_scnprintf = { [1] = SCA_SCHED_POLICY, /* policy */ }, }, 746 .arg_scnprintf = { [1] = SCA_SCHED_POLICY, /* policy */ }, },
746 { .name = "seccomp", .errmsg = true, 747 { .name = "seccomp", .errmsg = true,
@@ -840,7 +841,6 @@ static size_t fprintf_duration(unsigned long t, FILE *fp)
840 */ 841 */
841struct thread_trace { 842struct thread_trace {
842 u64 entry_time; 843 u64 entry_time;
843 u64 exit_time;
844 bool entry_pending; 844 bool entry_pending;
845 unsigned long nr_events; 845 unsigned long nr_events;
846 unsigned long pfmaj, pfmin; 846 unsigned long pfmaj, pfmin;
@@ -1449,7 +1449,7 @@ static int trace__printf_interrupted_entry(struct trace *trace, struct perf_samp
1449 1449
1450 duration = sample->time - ttrace->entry_time; 1450 duration = sample->time - ttrace->entry_time;
1451 1451
1452 printed = trace__fprintf_entry_head(trace, trace->current, duration, sample->time, trace->output); 1452 printed = trace__fprintf_entry_head(trace, trace->current, duration, ttrace->entry_time, trace->output);
1453 printed += fprintf(trace->output, "%-70s) ...\n", ttrace->entry_str); 1453 printed += fprintf(trace->output, "%-70s) ...\n", ttrace->entry_str);
1454 ttrace->entry_pending = false; 1454 ttrace->entry_pending = false;
1455 1455
@@ -1496,7 +1496,7 @@ static int trace__sys_enter(struct trace *trace, struct perf_evsel *evsel,
1496 1496
1497 if (sc->is_exit) { 1497 if (sc->is_exit) {
1498 if (!(trace->duration_filter || trace->summary_only || trace->min_stack)) { 1498 if (!(trace->duration_filter || trace->summary_only || trace->min_stack)) {
1499 trace__fprintf_entry_head(trace, thread, 1, sample->time, trace->output); 1499 trace__fprintf_entry_head(trace, thread, 1, ttrace->entry_time, trace->output);
1500 fprintf(trace->output, "%-70s)\n", ttrace->entry_str); 1500 fprintf(trace->output, "%-70s)\n", ttrace->entry_str);
1501 } 1501 }
1502 } else { 1502 } else {
@@ -1568,8 +1568,6 @@ static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel,
1568 ++trace->stats.vfs_getname; 1568 ++trace->stats.vfs_getname;
1569 } 1569 }
1570 1570
1571 ttrace->exit_time = sample->time;
1572
1573 if (ttrace->entry_time) { 1571 if (ttrace->entry_time) {
1574 duration = sample->time - ttrace->entry_time; 1572 duration = sample->time - ttrace->entry_time;
1575 if (trace__filter_duration(trace, duration)) 1573 if (trace__filter_duration(trace, duration))
@@ -1589,7 +1587,7 @@ static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel,
1589 if (trace->summary_only) 1587 if (trace->summary_only)
1590 goto out; 1588 goto out;
1591 1589
1592 trace__fprintf_entry_head(trace, thread, duration, sample->time, trace->output); 1590 trace__fprintf_entry_head(trace, thread, duration, ttrace->entry_time, trace->output);
1593 1591
1594 if (ttrace->entry_pending) { 1592 if (ttrace->entry_pending) {
1595 fprintf(trace->output, "%-70s", ttrace->entry_str); 1593 fprintf(trace->output, "%-70s", ttrace->entry_str);
@@ -1890,18 +1888,6 @@ out_put:
1890 return err; 1888 return err;
1891} 1889}
1892 1890
1893static bool skip_sample(struct trace *trace, struct perf_sample *sample)
1894{
1895 if ((trace->pid_list && intlist__find(trace->pid_list, sample->pid)) ||
1896 (trace->tid_list && intlist__find(trace->tid_list, sample->tid)))
1897 return false;
1898
1899 if (trace->pid_list || trace->tid_list)
1900 return true;
1901
1902 return false;
1903}
1904
1905static void trace__set_base_time(struct trace *trace, 1891static void trace__set_base_time(struct trace *trace,
1906 struct perf_evsel *evsel, 1892 struct perf_evsel *evsel,
1907 struct perf_sample *sample) 1893 struct perf_sample *sample)
@@ -1926,11 +1912,13 @@ static int trace__process_sample(struct perf_tool *tool,
1926 struct machine *machine __maybe_unused) 1912 struct machine *machine __maybe_unused)
1927{ 1913{
1928 struct trace *trace = container_of(tool, struct trace, tool); 1914 struct trace *trace = container_of(tool, struct trace, tool);
1915 struct thread *thread;
1929 int err = 0; 1916 int err = 0;
1930 1917
1931 tracepoint_handler handler = evsel->handler; 1918 tracepoint_handler handler = evsel->handler;
1932 1919
1933 if (skip_sample(trace, sample)) 1920 thread = machine__findnew_thread(trace->host, sample->pid, sample->tid);
1921 if (thread && thread__is_filtered(thread))
1934 return 0; 1922 return 0;
1935 1923
1936 trace__set_base_time(trace, evsel, sample); 1924 trace__set_base_time(trace, evsel, sample);
@@ -1943,27 +1931,6 @@ static int trace__process_sample(struct perf_tool *tool,
1943 return err; 1931 return err;
1944} 1932}
1945 1933
1946static int parse_target_str(struct trace *trace)
1947{
1948 if (trace->opts.target.pid) {
1949 trace->pid_list = intlist__new(trace->opts.target.pid);
1950 if (trace->pid_list == NULL) {
1951 pr_err("Error parsing process id string\n");
1952 return -EINVAL;
1953 }
1954 }
1955
1956 if (trace->opts.target.tid) {
1957 trace->tid_list = intlist__new(trace->opts.target.tid);
1958 if (trace->tid_list == NULL) {
1959 pr_err("Error parsing thread id string\n");
1960 return -EINVAL;
1961 }
1962 }
1963
1964 return 0;
1965}
1966
1967static int trace__record(struct trace *trace, int argc, const char **argv) 1934static int trace__record(struct trace *trace, int argc, const char **argv)
1968{ 1935{
1969 unsigned int rec_argc, i, j; 1936 unsigned int rec_argc, i, j;
@@ -2140,6 +2107,7 @@ out_delete_sys_enter:
2140static int trace__set_ev_qualifier_filter(struct trace *trace) 2107static int trace__set_ev_qualifier_filter(struct trace *trace)
2141{ 2108{
2142 int err = -1; 2109 int err = -1;
2110 struct perf_evsel *sys_exit;
2143 char *filter = asprintf_expr_inout_ints("id", !trace->not_ev_qualifier, 2111 char *filter = asprintf_expr_inout_ints("id", !trace->not_ev_qualifier,
2144 trace->ev_qualifier_ids.nr, 2112 trace->ev_qualifier_ids.nr,
2145 trace->ev_qualifier_ids.entries); 2113 trace->ev_qualifier_ids.entries);
@@ -2147,8 +2115,11 @@ static int trace__set_ev_qualifier_filter(struct trace *trace)
2147 if (filter == NULL) 2115 if (filter == NULL)
2148 goto out_enomem; 2116 goto out_enomem;
2149 2117
2150 if (!perf_evsel__append_filter(trace->syscalls.events.sys_enter, "&&", filter)) 2118 if (!perf_evsel__append_tp_filter(trace->syscalls.events.sys_enter,
2151 err = perf_evsel__append_filter(trace->syscalls.events.sys_exit, "&&", filter); 2119 filter)) {
2120 sys_exit = trace->syscalls.events.sys_exit;
2121 err = perf_evsel__append_tp_filter(sys_exit, filter);
2122 }
2152 2123
2153 free(filter); 2124 free(filter);
2154out: 2125out:
@@ -2303,12 +2274,17 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
2303 if (err < 0) 2274 if (err < 0)
2304 goto out_error_mmap; 2275 goto out_error_mmap;
2305 2276
2306 if (!target__none(&trace->opts.target)) 2277 if (!target__none(&trace->opts.target) && !trace->opts.initial_delay)
2307 perf_evlist__enable(evlist); 2278 perf_evlist__enable(evlist);
2308 2279
2309 if (forks) 2280 if (forks)
2310 perf_evlist__start_workload(evlist); 2281 perf_evlist__start_workload(evlist);
2311 2282
2283 if (trace->opts.initial_delay) {
2284 usleep(trace->opts.initial_delay * 1000);
2285 perf_evlist__enable(evlist);
2286 }
2287
2312 trace->multiple_threads = thread_map__pid(evlist->threads, 0) == -1 || 2288 trace->multiple_threads = thread_map__pid(evlist->threads, 0) == -1 ||
2313 evlist->threads->nr > 1 || 2289 evlist->threads->nr > 1 ||
2314 perf_evlist__first(evlist)->attr.inherit; 2290 perf_evlist__first(evlist)->attr.inherit;
@@ -2451,6 +2427,12 @@ static int trace__replay(struct trace *trace)
2451 if (session == NULL) 2427 if (session == NULL)
2452 return -1; 2428 return -1;
2453 2429
2430 if (trace->opts.target.pid)
2431 symbol_conf.pid_list_str = strdup(trace->opts.target.pid);
2432
2433 if (trace->opts.target.tid)
2434 symbol_conf.tid_list_str = strdup(trace->opts.target.tid);
2435
2454 if (symbol__init(&session->header.env) < 0) 2436 if (symbol__init(&session->header.env) < 0)
2455 goto out; 2437 goto out;
2456 2438
@@ -2494,10 +2476,6 @@ static int trace__replay(struct trace *trace)
2494 evsel->handler = trace__pgfault; 2476 evsel->handler = trace__pgfault;
2495 } 2477 }
2496 2478
2497 err = parse_target_str(trace);
2498 if (err != 0)
2499 goto out;
2500
2501 setup_pager(); 2479 setup_pager();
2502 2480
2503 err = perf_session__process_events(session); 2481 err = perf_session__process_events(session);
@@ -2809,6 +2787,9 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
2809 "Default: kernel.perf_event_max_stack or " __stringify(PERF_MAX_STACK_DEPTH)), 2787 "Default: kernel.perf_event_max_stack or " __stringify(PERF_MAX_STACK_DEPTH)),
2810 OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout, 2788 OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout,
2811 "per thread proc mmap processing timeout in ms"), 2789 "per thread proc mmap processing timeout in ms"),
2790 OPT_UINTEGER('D', "delay", &trace.opts.initial_delay,
2791 "ms to wait before starting measurement after program "
2792 "start"),
2812 OPT_END() 2793 OPT_END()
2813 }; 2794 };
2814 bool __maybe_unused max_stack_user_set = true; 2795 bool __maybe_unused max_stack_user_set = true;
diff --git a/tools/perf/builtin.h b/tools/perf/builtin.h
index 41c24010ab43..0bcf68e98ccc 100644
--- a/tools/perf/builtin.h
+++ b/tools/perf/builtin.h
@@ -18,6 +18,7 @@ int cmd_bench(int argc, const char **argv, const char *prefix);
18int cmd_buildid_cache(int argc, const char **argv, const char *prefix); 18int cmd_buildid_cache(int argc, const char **argv, const char *prefix);
19int cmd_buildid_list(int argc, const char **argv, const char *prefix); 19int cmd_buildid_list(int argc, const char **argv, const char *prefix);
20int cmd_config(int argc, const char **argv, const char *prefix); 20int cmd_config(int argc, const char **argv, const char *prefix);
21int cmd_c2c(int argc, const char **argv, const char *prefix);
21int cmd_diff(int argc, const char **argv, const char *prefix); 22int cmd_diff(int argc, const char **argv, const char *prefix);
22int cmd_evlist(int argc, const char **argv, const char *prefix); 23int cmd_evlist(int argc, const char **argv, const char *prefix);
23int cmd_help(int argc, const char **argv, const char *prefix); 24int cmd_help(int argc, const char **argv, const char *prefix);
diff --git a/tools/perf/check-headers.sh b/tools/perf/check-headers.sh
new file mode 100755
index 000000000000..c747bfd7f14d
--- /dev/null
+++ b/tools/perf/check-headers.sh
@@ -0,0 +1,59 @@
1#!/bin/sh
2
3HEADERS='
4include/uapi/linux/perf_event.h
5include/linux/hash.h
6include/uapi/linux/hw_breakpoint.h
7arch/x86/include/asm/disabled-features.h
8arch/x86/include/asm/required-features.h
9arch/x86/include/asm/cpufeatures.h
10arch/arm/include/uapi/asm/perf_regs.h
11arch/arm64/include/uapi/asm/perf_regs.h
12arch/powerpc/include/uapi/asm/perf_regs.h
13arch/x86/include/uapi/asm/perf_regs.h
14arch/x86/include/uapi/asm/kvm.h
15arch/x86/include/uapi/asm/kvm_perf.h
16arch/x86/include/uapi/asm/svm.h
17arch/x86/include/uapi/asm/vmx.h
18arch/powerpc/include/uapi/asm/kvm.h
19arch/s390/include/uapi/asm/kvm.h
20arch/s390/include/uapi/asm/kvm_perf.h
21arch/s390/include/uapi/asm/sie.h
22arch/arm/include/uapi/asm/kvm.h
23arch/arm64/include/uapi/asm/kvm.h
24include/asm-generic/bitops/arch_hweight.h
25include/asm-generic/bitops/const_hweight.h
26include/asm-generic/bitops/__fls.h
27include/asm-generic/bitops/fls.h
28include/asm-generic/bitops/fls64.h
29include/linux/coresight-pmu.h
30include/uapi/asm-generic/mman-common.h
31'
32
33check () {
34 file=$1
35 opts=
36
37 shift
38 while [ -n "$*" ]; do
39 opts="$opts \"$1\""
40 shift
41 done
42
43 cmd="diff $opts ../$file ../../$file > /dev/null"
44
45 test -f ../../$file &&
46 eval $cmd || echo "Warning: $file differs from kernel" >&2
47}
48
49
50# simple diff check
51for i in $HEADERS; do
52 check $i -B
53done
54
55# diff with extra ignore lines
56check arch/x86/lib/memcpy_64.S -B -I "^EXPORT_SYMBOL" -I "^#include <asm/export.h>"
57check arch/x86/lib/memset_64.S -B -I "^EXPORT_SYMBOL" -I "^#include <asm/export.h>"
58check include/uapi/asm-generic/mman.h -B -I "^#include <\(uapi/\)*asm-generic/mman-common.h>"
59check include/uapi/linux/mman.h -B -I "^#include <\(uapi/\)*asm/mman.h>"
diff --git a/tools/perf/jvmti/Build b/tools/perf/jvmti/Build
new file mode 100644
index 000000000000..eaeb8cb5379b
--- /dev/null
+++ b/tools/perf/jvmti/Build
@@ -0,0 +1,8 @@
1jvmti-y += libjvmti.o
2jvmti-y += jvmti_agent.o
3
4CFLAGS_jvmti = -fPIC -DPIC -I$(JDIR)/include -I$(JDIR)/include/linux
5CFLAGS_REMOVE_jvmti = -Wmissing-declarations
6CFLAGS_REMOVE_jvmti += -Wstrict-prototypes
7CFLAGS_REMOVE_jvmti += -Wextra
8CFLAGS_REMOVE_jvmti += -Wwrite-strings
diff --git a/tools/perf/jvmti/Makefile b/tools/perf/jvmti/Makefile
deleted file mode 100644
index 5ce61a1bda9c..000000000000
--- a/tools/perf/jvmti/Makefile
+++ /dev/null
@@ -1,89 +0,0 @@
1ARCH=$(shell uname -m)
2
3ifeq ($(ARCH), x86_64)
4JARCH=amd64
5endif
6ifeq ($(ARCH), armv7l)
7JARCH=armhf
8endif
9ifeq ($(ARCH), armv6l)
10JARCH=armhf
11endif
12ifeq ($(ARCH), aarch64)
13JARCH=aarch64
14endif
15ifeq ($(ARCH), ppc64)
16JARCH=powerpc
17endif
18ifeq ($(ARCH), ppc64le)
19JARCH=powerpc
20endif
21
22DESTDIR=/usr/local
23
24VERSION=1
25REVISION=0
26AGE=0
27
28LN=ln -sf
29RM=rm
30
31SLIBJVMTI=libjvmti.so.$(VERSION).$(REVISION).$(AGE)
32VLIBJVMTI=libjvmti.so.$(VERSION)
33SLDFLAGS=-shared -Wl,-soname -Wl,$(VLIBJVMTI)
34SOLIBEXT=so
35
36# The following works at least on fedora 23, you may need the next
37# line for other distros.
38ifneq (,$(wildcard /usr/sbin/update-java-alternatives))
39JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | cut -d ' ' -f 3)
40else
41 ifneq (,$(wildcard /usr/sbin/alternatives))
42 JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g')
43 endif
44endif
45ifndef JDIR
46$(error Could not find alternatives command, you need to set JDIR= to point to the root of your Java directory)
47else
48 ifeq (,$(wildcard $(JDIR)/include/jvmti.h))
49 $(error the openjdk development package appears to me missing, install and try again)
50 endif
51endif
52$(info Using Java from $(JDIR))
53# -lrt required in 32-bit mode for clock_gettime()
54LIBS=-lelf -lrt
55INCDIR=-I $(JDIR)/include -I $(JDIR)/include/linux
56
57TARGETS=$(SLIBJVMTI)
58
59SRCS=libjvmti.c jvmti_agent.c
60OBJS=$(SRCS:.c=.o)
61SOBJS=$(OBJS:.o=.lo)
62OPT=-O2 -g -Werror -Wall
63
64CFLAGS=$(INCDIR) $(OPT)
65
66all: $(TARGETS)
67
68.c.o:
69 $(CC) $(CFLAGS) -c $*.c
70.c.lo:
71 $(CC) -fPIC -DPIC $(CFLAGS) -c $*.c -o $*.lo
72
73$(OBJS) $(SOBJS): Makefile jvmti_agent.h ../util/jitdump.h
74
75$(SLIBJVMTI): $(SOBJS)
76 $(CC) $(CFLAGS) $(SLDFLAGS) -o $@ $(SOBJS) $(LIBS)
77 $(LN) $@ libjvmti.$(SOLIBEXT)
78
79clean:
80 $(RM) -f *.o *.so.* *.so *.lo
81
82install:
83 -mkdir -p $(DESTDIR)/lib
84 install -m 755 $(SLIBJVMTI) $(DESTDIR)/lib/
85 (cd $(DESTDIR)/lib; $(LN) $(SLIBJVMTI) $(VLIBJVMTI))
86 (cd $(DESTDIR)/lib; $(LN) $(SLIBJVMTI) libjvmti.$(SOLIBEXT))
87 ldconfig
88
89.SUFFIXES: .c .S .o .lo
diff --git a/tools/perf/jvmti/jvmti_agent.c b/tools/perf/jvmti/jvmti_agent.c
index 55daefff0d54..e9651a9d670e 100644
--- a/tools/perf/jvmti/jvmti_agent.c
+++ b/tools/perf/jvmti/jvmti_agent.c
@@ -44,11 +44,6 @@
44static char jit_path[PATH_MAX]; 44static char jit_path[PATH_MAX];
45static void *marker_addr; 45static void *marker_addr;
46 46
47/*
48 * padding buffer
49 */
50static const char pad_bytes[7];
51
52static inline pid_t gettid(void) 47static inline pid_t gettid(void)
53{ 48{
54 return (pid_t)syscall(__NR_gettid); 49 return (pid_t)syscall(__NR_gettid);
@@ -230,7 +225,6 @@ init_arch_timestamp(void)
230 225
231void *jvmti_open(void) 226void *jvmti_open(void)
232{ 227{
233 int pad_cnt;
234 char dump_path[PATH_MAX]; 228 char dump_path[PATH_MAX];
235 struct jitheader header; 229 struct jitheader header;
236 int fd; 230 int fd;
@@ -288,10 +282,6 @@ void *jvmti_open(void)
288 header.total_size = sizeof(header); 282 header.total_size = sizeof(header);
289 header.pid = getpid(); 283 header.pid = getpid();
290 284
291 /* calculate amount of padding '\0' */
292 pad_cnt = PADDING_8ALIGNED(header.total_size);
293 header.total_size += pad_cnt;
294
295 header.timestamp = perf_get_timestamp(); 285 header.timestamp = perf_get_timestamp();
296 286
297 if (use_arch_timestamp) 287 if (use_arch_timestamp)
@@ -301,13 +291,6 @@ void *jvmti_open(void)
301 warn("jvmti: cannot write dumpfile header"); 291 warn("jvmti: cannot write dumpfile header");
302 goto error; 292 goto error;
303 } 293 }
304
305 /* write padding '\0' if necessary */
306 if (pad_cnt && !fwrite(pad_bytes, pad_cnt, 1, fp)) {
307 warn("jvmti: cannot write dumpfile header padding");
308 goto error;
309 }
310
311 return fp; 294 return fp;
312error: 295error:
313 fclose(fp); 296 fclose(fp);
@@ -349,7 +332,6 @@ jvmti_write_code(void *agent, char const *sym,
349 static int code_generation = 1; 332 static int code_generation = 1;
350 struct jr_code_load rec; 333 struct jr_code_load rec;
351 size_t sym_len; 334 size_t sym_len;
352 size_t padding_count;
353 FILE *fp = agent; 335 FILE *fp = agent;
354 int ret = -1; 336 int ret = -1;
355 337
@@ -366,8 +348,6 @@ jvmti_write_code(void *agent, char const *sym,
366 348
367 rec.p.id = JIT_CODE_LOAD; 349 rec.p.id = JIT_CODE_LOAD;
368 rec.p.total_size = sizeof(rec) + sym_len; 350 rec.p.total_size = sizeof(rec) + sym_len;
369 padding_count = PADDING_8ALIGNED(rec.p.total_size);
370 rec.p. total_size += padding_count;
371 rec.p.timestamp = perf_get_timestamp(); 351 rec.p.timestamp = perf_get_timestamp();
372 352
373 rec.code_size = size; 353 rec.code_size = size;
@@ -393,9 +373,6 @@ jvmti_write_code(void *agent, char const *sym,
393 ret = fwrite_unlocked(&rec, sizeof(rec), 1, fp); 373 ret = fwrite_unlocked(&rec, sizeof(rec), 1, fp);
394 fwrite_unlocked(sym, sym_len, 1, fp); 374 fwrite_unlocked(sym, sym_len, 1, fp);
395 375
396 if (padding_count)
397 fwrite_unlocked(pad_bytes, padding_count, 1, fp);
398
399 if (code) 376 if (code)
400 fwrite_unlocked(code, size, 1, fp); 377 fwrite_unlocked(code, size, 1, fp);
401 378
@@ -412,7 +389,6 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file,
412{ 389{
413 struct jr_code_debug_info rec; 390 struct jr_code_debug_info rec;
414 size_t sret, len, size, flen; 391 size_t sret, len, size, flen;
415 size_t padding_count;
416 uint64_t addr; 392 uint64_t addr;
417 const char *fn = file; 393 const char *fn = file;
418 FILE *fp = agent; 394 FILE *fp = agent;
@@ -443,16 +419,10 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file,
443 * int : line number 419 * int : line number
444 * int : column discriminator 420 * int : column discriminator
445 * file[] : source file name 421 * file[] : source file name
446 * padding : pad to multiple of 8 bytes
447 */ 422 */
448 size += nr_lines * sizeof(struct debug_entry); 423 size += nr_lines * sizeof(struct debug_entry);
449 size += flen * nr_lines; 424 size += flen * nr_lines;
450 /* 425 rec.p.total_size = size;
451 * pad to 8 bytes
452 */
453 padding_count = PADDING_8ALIGNED(size);
454
455 rec.p.total_size = size + padding_count;
456 426
457 /* 427 /*
458 * If JVM is multi-threaded, nultiple concurrent calls to agent 428 * If JVM is multi-threaded, nultiple concurrent calls to agent
@@ -486,12 +456,6 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file,
486 if (sret != 1) 456 if (sret != 1)
487 goto error; 457 goto error;
488 } 458 }
489 if (padding_count) {
490 sret = fwrite_unlocked(pad_bytes, padding_count, 1, fp);
491 if (sret != 1)
492 goto error;
493 }
494
495 funlockfile(fp); 459 funlockfile(fp);
496 return 0; 460 return 0;
497error: 461error:
diff --git a/tools/perf/jvmti/libjvmti.c b/tools/perf/jvmti/libjvmti.c
index ac12e4b91a92..5612641c69b4 100644
--- a/tools/perf/jvmti/libjvmti.c
+++ b/tools/perf/jvmti/libjvmti.c
@@ -12,6 +12,19 @@
12static int has_line_numbers; 12static int has_line_numbers;
13void *jvmti_agent; 13void *jvmti_agent;
14 14
15static void print_error(jvmtiEnv *jvmti, const char *msg, jvmtiError ret)
16{
17 char *err_msg = NULL;
18 jvmtiError err;
19 err = (*jvmti)->GetErrorName(jvmti, ret, &err_msg);
20 if (err == JVMTI_ERROR_NONE) {
21 warnx("%s failed with %s", msg, err_msg);
22 (*jvmti)->Deallocate(jvmti, (unsigned char *)err_msg);
23 } else {
24 warnx("%s failed with an unknown error %d", msg, ret);
25 }
26}
27
15static jvmtiError 28static jvmtiError
16do_get_line_numbers(jvmtiEnv *jvmti, void *pc, jmethodID m, jint bci, 29do_get_line_numbers(jvmtiEnv *jvmti, void *pc, jmethodID m, jint bci,
17 jvmti_line_info_t *tab, jint *nr) 30 jvmti_line_info_t *tab, jint *nr)
@@ -22,8 +35,10 @@ do_get_line_numbers(jvmtiEnv *jvmti, void *pc, jmethodID m, jint bci,
22 jvmtiError ret; 35 jvmtiError ret;
23 36
24 ret = (*jvmti)->GetLineNumberTable(jvmti, m, &nr_lines, &loc_tab); 37 ret = (*jvmti)->GetLineNumberTable(jvmti, m, &nr_lines, &loc_tab);
25 if (ret != JVMTI_ERROR_NONE) 38 if (ret != JVMTI_ERROR_NONE) {
39 print_error(jvmti, "GetLineNumberTable", ret);
26 return ret; 40 return ret;
41 }
27 42
28 for (i = 0; i < nr_lines; i++) { 43 for (i = 0; i < nr_lines; i++) {
29 if (loc_tab[i].start_location < bci) { 44 if (loc_tab[i].start_location < bci) {
@@ -71,6 +86,8 @@ get_line_numbers(jvmtiEnv *jvmti, const void *compile_info, jvmti_line_info_t **
71 /* free what was allocated for nothing */ 86 /* free what was allocated for nothing */
72 (*jvmti)->Deallocate(jvmti, (unsigned char *)lne); 87 (*jvmti)->Deallocate(jvmti, (unsigned char *)lne);
73 nr_total += (int)nr; 88 nr_total += (int)nr;
89 } else {
90 print_error(jvmti, "GetLineNumberTable", ret);
74 } 91 }
75 } 92 }
76 } 93 }
@@ -130,7 +147,7 @@ compiled_method_load_cb(jvmtiEnv *jvmti,
130 ret = (*jvmti)->GetMethodDeclaringClass(jvmti, method, 147 ret = (*jvmti)->GetMethodDeclaringClass(jvmti, method,
131 &decl_class); 148 &decl_class);
132 if (ret != JVMTI_ERROR_NONE) { 149 if (ret != JVMTI_ERROR_NONE) {
133 warnx("jvmti: cannot get declaring class"); 150 print_error(jvmti, "GetMethodDeclaringClass", ret);
134 return; 151 return;
135 } 152 }
136 153
@@ -144,21 +161,21 @@ compiled_method_load_cb(jvmtiEnv *jvmti,
144 161
145 ret = (*jvmti)->GetSourceFileName(jvmti, decl_class, &file_name); 162 ret = (*jvmti)->GetSourceFileName(jvmti, decl_class, &file_name);
146 if (ret != JVMTI_ERROR_NONE) { 163 if (ret != JVMTI_ERROR_NONE) {
147 warnx("jvmti: cannot get source filename ret=%d", ret); 164 print_error(jvmti, "GetSourceFileName", ret);
148 goto error; 165 goto error;
149 } 166 }
150 167
151 ret = (*jvmti)->GetClassSignature(jvmti, decl_class, 168 ret = (*jvmti)->GetClassSignature(jvmti, decl_class,
152 &class_sign, NULL); 169 &class_sign, NULL);
153 if (ret != JVMTI_ERROR_NONE) { 170 if (ret != JVMTI_ERROR_NONE) {
154 warnx("jvmti: getclassignature failed"); 171 print_error(jvmti, "GetClassSignature", ret);
155 goto error; 172 goto error;
156 } 173 }
157 174
158 ret = (*jvmti)->GetMethodName(jvmti, method, &func_name, 175 ret = (*jvmti)->GetMethodName(jvmti, method, &func_name,
159 &func_sign, NULL); 176 &func_sign, NULL);
160 if (ret != JVMTI_ERROR_NONE) { 177 if (ret != JVMTI_ERROR_NONE) {
161 warnx("jvmti: failed getmethodname"); 178 print_error(jvmti, "GetMethodName", ret);
162 goto error; 179 goto error;
163 } 180 }
164 181
@@ -253,7 +270,7 @@ Agent_OnLoad(JavaVM *jvm, char *options, void *reserved __unused)
253 270
254 ret = (*jvmti)->AddCapabilities(jvmti, &caps1); 271 ret = (*jvmti)->AddCapabilities(jvmti, &caps1);
255 if (ret != JVMTI_ERROR_NONE) { 272 if (ret != JVMTI_ERROR_NONE) {
256 warnx("jvmti: acquire compiled_method capability failed"); 273 print_error(jvmti, "AddCapabilities", ret);
257 return -1; 274 return -1;
258 } 275 }
259 ret = (*jvmti)->GetJLocationFormat(jvmti, &format); 276 ret = (*jvmti)->GetJLocationFormat(jvmti, &format);
@@ -264,7 +281,9 @@ Agent_OnLoad(JavaVM *jvm, char *options, void *reserved __unused)
264 ret = (*jvmti)->AddCapabilities(jvmti, &caps1); 281 ret = (*jvmti)->AddCapabilities(jvmti, &caps1);
265 if (ret == JVMTI_ERROR_NONE) 282 if (ret == JVMTI_ERROR_NONE)
266 has_line_numbers = 1; 283 has_line_numbers = 1;
267 } 284 } else if (ret != JVMTI_ERROR_NONE)
285 print_error(jvmti, "GetJLocationFormat", ret);
286
268 287
269 memset(&cb, 0, sizeof(cb)); 288 memset(&cb, 0, sizeof(cb));
270 289
@@ -273,21 +292,21 @@ Agent_OnLoad(JavaVM *jvm, char *options, void *reserved __unused)
273 292
274 ret = (*jvmti)->SetEventCallbacks(jvmti, &cb, sizeof(cb)); 293 ret = (*jvmti)->SetEventCallbacks(jvmti, &cb, sizeof(cb));
275 if (ret != JVMTI_ERROR_NONE) { 294 if (ret != JVMTI_ERROR_NONE) {
276 warnx("jvmti: cannot set event callbacks"); 295 print_error(jvmti, "SetEventCallbacks", ret);
277 return -1; 296 return -1;
278 } 297 }
279 298
280 ret = (*jvmti)->SetEventNotificationMode(jvmti, JVMTI_ENABLE, 299 ret = (*jvmti)->SetEventNotificationMode(jvmti, JVMTI_ENABLE,
281 JVMTI_EVENT_COMPILED_METHOD_LOAD, NULL); 300 JVMTI_EVENT_COMPILED_METHOD_LOAD, NULL);
282 if (ret != JVMTI_ERROR_NONE) { 301 if (ret != JVMTI_ERROR_NONE) {
283 warnx("jvmti: setnotification failed for method_load"); 302 print_error(jvmti, "SetEventNotificationMode(METHOD_LOAD)", ret);
284 return -1; 303 return -1;
285 } 304 }
286 305
287 ret = (*jvmti)->SetEventNotificationMode(jvmti, JVMTI_ENABLE, 306 ret = (*jvmti)->SetEventNotificationMode(jvmti, JVMTI_ENABLE,
288 JVMTI_EVENT_DYNAMIC_CODE_GENERATED, NULL); 307 JVMTI_EVENT_DYNAMIC_CODE_GENERATED, NULL);
289 if (ret != JVMTI_ERROR_NONE) { 308 if (ret != JVMTI_ERROR_NONE) {
290 warnx("jvmti: setnotification failed on code_generated"); 309 print_error(jvmti, "SetEventNotificationMode(CODE_GENERATED)", ret);
291 return -1; 310 return -1;
292 } 311 }
293 return 0; 312 return 0;
diff --git a/tools/perf/perf-sys.h b/tools/perf/perf-sys.h
index 7ed72a475c57..e4b717e9eb6c 100644
--- a/tools/perf/perf-sys.h
+++ b/tools/perf/perf-sys.h
@@ -20,7 +20,6 @@
20#endif 20#endif
21 21
22#ifdef __powerpc__ 22#ifdef __powerpc__
23#include "../../arch/powerpc/include/uapi/asm/unistd.h"
24#define CPUINFO_PROC {"cpu"} 23#define CPUINFO_PROC {"cpu"}
25#endif 24#endif
26 25
diff --git a/tools/perf/perf.c b/tools/perf/perf.c
index 64c06961bfe4..aa23b3347d6b 100644
--- a/tools/perf/perf.c
+++ b/tools/perf/perf.c
@@ -43,6 +43,7 @@ static struct cmd_struct commands[] = {
43 { "buildid-cache", cmd_buildid_cache, 0 }, 43 { "buildid-cache", cmd_buildid_cache, 0 },
44 { "buildid-list", cmd_buildid_list, 0 }, 44 { "buildid-list", cmd_buildid_list, 0 },
45 { "config", cmd_config, 0 }, 45 { "config", cmd_config, 0 },
46 { "c2c", cmd_c2c, 0 },
46 { "diff", cmd_diff, 0 }, 47 { "diff", cmd_diff, 0 },
47 { "evlist", cmd_evlist, 0 }, 48 { "evlist", cmd_evlist, 0 },
48 { "help", cmd_help, 0 }, 49 { "help", cmd_help, 0 },
diff --git a/tools/perf/perf.h b/tools/perf/perf.h
index cb0f1356ff81..1c27d947c2fe 100644
--- a/tools/perf/perf.h
+++ b/tools/perf/perf.h
@@ -14,13 +14,6 @@ void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
14#define HAVE_ATTR_TEST 14#define HAVE_ATTR_TEST
15#include "perf-sys.h" 15#include "perf-sys.h"
16 16
17#ifndef NSEC_PER_SEC
18# define NSEC_PER_SEC 1000000000ULL
19#endif
20#ifndef NSEC_PER_USEC
21# define NSEC_PER_USEC 1000ULL
22#endif
23
24static inline unsigned long long rdclock(void) 17static inline unsigned long long rdclock(void)
25{ 18{
26 struct timespec ts; 19 struct timespec ts;
@@ -62,6 +55,7 @@ struct record_opts {
62 bool all_user; 55 bool all_user;
63 bool tail_synthesize; 56 bool tail_synthesize;
64 bool overwrite; 57 bool overwrite;
58 bool ignore_missing_thread;
65 unsigned int freq; 59 unsigned int freq;
66 unsigned int mmap_pages; 60 unsigned int mmap_pages;
67 unsigned int auxtrace_mmap_pages; 61 unsigned int auxtrace_mmap_pages;
diff --git a/tools/perf/pmu-events/Build b/tools/perf/pmu-events/Build
new file mode 100644
index 000000000000..9213a1273697
--- /dev/null
+++ b/tools/perf/pmu-events/Build
@@ -0,0 +1,13 @@
1hostprogs := jevents
2
3jevents-y += json.o jsmn.o jevents.o
4pmu-events-y += pmu-events.o
5JDIR = pmu-events/arch/$(ARCH)
6JSON = $(shell [ -d $(JDIR) ] && \
7 find $(JDIR) -name '*.json' -o -name 'mapfile.csv')
8#
9# Locate/process JSON files in pmu-events/arch/
10# directory and create tables in pmu-events.c.
11#
12$(OUTPUT)pmu-events/pmu-events.c: $(JSON) $(JEVENTS)
13 $(Q)$(call echo-cmd,gen)$(JEVENTS) $(ARCH) pmu-events/arch $(OUTPUT)pmu-events/pmu-events.c $(V)
diff --git a/tools/perf/pmu-events/README b/tools/perf/pmu-events/README
new file mode 100644
index 000000000000..1408ade0d773
--- /dev/null
+++ b/tools/perf/pmu-events/README
@@ -0,0 +1,147 @@
1
2The contents of this directory allow users to specify PMU events in their
3CPUs by their symbolic names rather than raw event codes (see example below).
4
5The main program in this directory, is the 'jevents', which is built and
6executed _BEFORE_ the perf binary itself is built.
7
8The 'jevents' program tries to locate and process JSON files in the directory
9tree tools/perf/pmu-events/arch/foo.
10
11 - Regular files with '.json' extension in the name are assumed to be
12 JSON files, each of which describes a set of PMU events.
13
14 - Regular files with basename starting with 'mapfile.csv' are assumed
15 to be a CSV file that maps a specific CPU to its set of PMU events.
16 (see below for mapfile format)
17
18 - Directories are traversed, but all other files are ignored.
19
20The PMU events supported by a CPU model are expected to grouped into topics
21such as Pipelining, Cache, Memory, Floating-point etc. All events for a topic
22should be placed in a separate JSON file - where the file name identifies
23the topic. Eg: "Floating-point.json".
24
25All the topic JSON files for a CPU model/family should be in a separate
26sub directory. Thus for the Silvermont X86 CPU:
27
28 $ ls tools/perf/pmu-events/arch/x86/Silvermont_core
29 Cache.json Memory.json Virtual-Memory.json
30 Frontend.json Pipeline.json
31
32Using the JSON files and the mapfile, 'jevents' generates the C source file,
33'pmu-events.c', which encodes the two sets of tables:
34
35 - Set of 'PMU events tables' for all known CPUs in the architecture,
36 (one table like the following, per JSON file; table name 'pme_power8'
37 is derived from JSON file name, 'power8.json').
38
39 struct pmu_event pme_power8[] = {
40
41 ...
42
43 {
44 .name = "pm_1plus_ppc_cmpl",
45 .event = "event=0x100f2",
46 .desc = "1 or more ppc insts finished,",
47 },
48
49 ...
50 }
51
52 - A 'mapping table' that maps each CPU of the architecture, to its
53 'PMU events table'
54
55 struct pmu_events_map pmu_events_map[] = {
56 {
57 .cpuid = "004b0000",
58 .version = "1",
59 .type = "core",
60 .table = pme_power8
61 },
62 ...
63
64 };
65
66After the 'pmu-events.c' is generated, it is compiled and the resulting
67'pmu-events.o' is added to 'libperf.a' which is then used to build perf.
68
69NOTES:
70 1. Several CPUs can support same set of events and hence use a common
71 JSON file. Hence several entries in the pmu_events_map[] could map
72 to a single 'PMU events table'.
73
74 2. The 'pmu-events.h' has an extern declaration for the mapping table
75 and the generated 'pmu-events.c' defines this table.
76
77 3. _All_ known CPU tables for architecture are included in the perf
78 binary.
79
80At run time, perf determines the actual CPU it is running on, finds the
81matching events table and builds aliases for those events. This allows
82users to specify events by their name:
83
84 $ perf stat -e pm_1plus_ppc_cmpl sleep 1
85
86where 'pm_1plus_ppc_cmpl' is a Power8 PMU event.
87
88In case of errors when processing files in the tools/perf/pmu-events/arch
89directory, 'jevents' tries to create an empty mapping file to allow the perf
90build to succeed even if the PMU event aliases cannot be used.
91
92However some errors in processing may cause the perf build to fail.
93
94Mapfile format
95===============
96
97The mapfile enables multiple CPU models to share a single set of PMU events.
98It is required even if such mapping is 1:1.
99
100The mapfile.csv format is expected to be:
101
102 Header line
103 CPUID,Version,Dir/path/name,Type
104
105where:
106
107 Comma:
108 is the required field delimiter (i.e other fields cannot
109 have commas within them).
110
111 Comments:
112 Lines in which the first character is either '\n' or '#'
113 are ignored.
114
115 Header line
116 The header line is the first line in the file, which is
117 always _IGNORED_. It can empty.
118
119 CPUID:
120 CPUID is an arch-specific char string, that can be used
121 to identify CPU (and associate it with a set of PMU events
122 it supports). Multiple CPUIDS can point to the same
123 File/path/name.json.
124
125 Example:
126 CPUID == 'GenuineIntel-6-2E' (on x86).
127 CPUID == '004b0100' (PVR value in Powerpc)
128 Version:
129 is the Version of the mapfile.
130
131 Dir/path/name:
132 is the pathname to the directory containing the CPU's JSON
133 files, relative to the directory containing the mapfile.csv
134
135 Type:
136 indicates whether the events or "core" or "uncore" events.
137
138
139 Eg:
140
141 $ grep Silvermont tools/perf/pmu-events/arch/x86/mapfile.csv
142 GenuineIntel-6-37,V13,Silvermont_core,core
143 GenuineIntel-6-4D,V13,Silvermont_core,core
144 GenuineIntel-6-4C,V13,Silvermont_core,core
145
146 i.e the three CPU models use the JSON files (i.e PMU events) listed
147 in the directory 'tools/perf/pmu-events/arch/x86/Silvermont_core'.
diff --git a/tools/perf/pmu-events/arch/powerpc/mapfile.csv b/tools/perf/pmu-events/arch/powerpc/mapfile.csv
new file mode 100644
index 000000000000..e925baa0c30b
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/mapfile.csv
@@ -0,0 +1,21 @@
1# Format:
2# PVR,Version,JSON/file/pathname,Type
3#
4# where
5# PVR Processor version
6# Version could be used to track version of of JSON file
7# but currently unused.
8# JSON/file/pathname is the path to JSON file, relative
9# to tools/perf/pmu-events/arch/powerpc/.
10# Type is core, uncore etc
11#
12# Multiple PVRs could map to a single JSON file.
13#
14
15# Power8 entries
16004b0000,1,power8.json,core
17004b0201,1,power8.json,core
18004c0000,1,power8.json,core
19004d0000,1,power8.json,core
20004d0100,1,power8.json,core
21004d0200,1,power8.json,core
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/cache.json b/tools/perf/pmu-events/arch/powerpc/power8/cache.json
new file mode 100644
index 000000000000..4a3daa6b4b96
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/cache.json
@@ -0,0 +1,176 @@
1[
2 {,
3 "EventCode": "0x4c048",
4 "EventName": "PM_DATA_FROM_DL2L3_MOD",
5 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a demand load",
6 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
7 },
8 {,
9 "EventCode": "0x3c048",
10 "EventName": "PM_DATA_FROM_DL2L3_SHR",
11 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a demand load",
12 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
13 },
14 {,
15 "EventCode": "0x3c04c",
16 "EventName": "PM_DATA_FROM_DL4",
17 "BriefDescription": "The processor's data cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to a demand load",
18 "PublicDescription": "The processor's data cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
19 },
20 {,
21 "EventCode": "0x1c042",
22 "EventName": "PM_DATA_FROM_L2",
23 "BriefDescription": "The processor's data cache was reloaded from local core's L2 due to a demand load",
24 "PublicDescription": "The processor's data cache was reloaded from local core's L2 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
25 },
26 {,
27 "EventCode": "0x200fe",
28 "EventName": "PM_DATA_FROM_L2MISS",
29 "BriefDescription": "Demand LD - L2 Miss (not L2 hit)",
30 "PublicDescription": ""
31 },
32 {,
33 "EventCode": "0x1c04e",
34 "EventName": "PM_DATA_FROM_L2MISS_MOD",
35 "BriefDescription": "The processor's data cache was reloaded from a localtion other than the local core's L2 due to a demand load",
36 "PublicDescription": "The processor's data cache was reloaded from a localtion other than the local core's L2 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
37 },
38 {,
39 "EventCode": "0x3c040",
40 "EventName": "PM_DATA_FROM_L2_DISP_CONFLICT_LDHITST",
41 "BriefDescription": "The processor's data cache was reloaded from local core's L2 with load hit store conflict due to a demand load",
42 "PublicDescription": "The processor's data cache was reloaded from local core's L2 with load hit store conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
43 },
44 {,
45 "EventCode": "0x4c040",
46 "EventName": "PM_DATA_FROM_L2_DISP_CONFLICT_OTHER",
47 "BriefDescription": "The processor's data cache was reloaded from local core's L2 with dispatch conflict due to a demand load",
48 "PublicDescription": "The processor's data cache was reloaded from local core's L2 with dispatch conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
49 },
50 {,
51 "EventCode": "0x2c040",
52 "EventName": "PM_DATA_FROM_L2_MEPF",
53 "BriefDescription": "The processor's data cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state due to a demand load",
54 "PublicDescription": "The processor's data cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
55 },
56 {,
57 "EventCode": "0x1c040",
58 "EventName": "PM_DATA_FROM_L2_NO_CONFLICT",
59 "BriefDescription": "The processor's data cache was reloaded from local core's L2 without conflict due to a demand load",
60 "PublicDescription": "The processor's data cache was reloaded from local core's L2 without conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
61 },
62 {,
63 "EventCode": "0x4c042",
64 "EventName": "PM_DATA_FROM_L3",
65 "BriefDescription": "The processor's data cache was reloaded from local core's L3 due to a demand load",
66 "PublicDescription": "The processor's data cache was reloaded from local core's L3 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
67 },
68 {,
69 "EventCode": "0x300fe",
70 "EventName": "PM_DATA_FROM_L3MISS",
71 "BriefDescription": "Demand LD - L3 Miss (not L2 hit and not L3 hit)",
72 "PublicDescription": ""
73 },
74 {,
75 "EventCode": "0x4c04e",
76 "EventName": "PM_DATA_FROM_L3MISS_MOD",
77 "BriefDescription": "The processor's data cache was reloaded from a localtion other than the local core's L3 due to a demand load",
78 "PublicDescription": "The processor's data cache was reloaded from a localtion other than the local core's L3 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
79 },
80 {,
81 "EventCode": "0x3c042",
82 "EventName": "PM_DATA_FROM_L3_DISP_CONFLICT",
83 "BriefDescription": "The processor's data cache was reloaded from local core's L3 with dispatch conflict due to a demand load",
84 "PublicDescription": "The processor's data cache was reloaded from local core's L3 with dispatch conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
85 },
86 {,
87 "EventCode": "0x2c042",
88 "EventName": "PM_DATA_FROM_L3_MEPF",
89 "BriefDescription": "The processor's data cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state due to a demand load",
90 "PublicDescription": "The processor's data cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
91 },
92 {,
93 "EventCode": "0x1c044",
94 "EventName": "PM_DATA_FROM_L3_NO_CONFLICT",
95 "BriefDescription": "The processor's data cache was reloaded from local core's L3 without conflict due to a demand load",
96 "PublicDescription": "The processor's data cache was reloaded from local core's L3 without conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
97 },
98 {,
99 "EventCode": "0x1c04c",
100 "EventName": "PM_DATA_FROM_LL4",
101 "BriefDescription": "The processor's data cache was reloaded from the local chip's L4 cache due to a demand load",
102 "PublicDescription": "The processor's data cache was reloaded from the local chip's L4 cache due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
103 },
104 {,
105 "EventCode": "0x4c04a",
106 "EventName": "PM_DATA_FROM_OFF_CHIP_CACHE",
107 "BriefDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to a demand load",
108 "PublicDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
109 },
110 {,
111 "EventCode": "0x1c048",
112 "EventName": "PM_DATA_FROM_ON_CHIP_CACHE",
113 "BriefDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to a demand load",
114 "PublicDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
115 },
116 {,
117 "EventCode": "0x2c046",
118 "EventName": "PM_DATA_FROM_RL2L3_MOD",
119 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a demand load",
120 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
121 },
122 {,
123 "EventCode": "0x1c04a",
124 "EventName": "PM_DATA_FROM_RL2L3_SHR",
125 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a demand load",
126 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
127 },
128 {,
129 "EventCode": "0x3001a",
130 "EventName": "PM_DATA_TABLEWALK_CYC",
131 "BriefDescription": "Tablwalk Cycles (could be 1 or 2 active)",
132 "PublicDescription": "Data Tablewalk Active"
133 },
134 {,
135 "EventCode": "0x4e04e",
136 "EventName": "PM_DPTEG_FROM_L3MISS",
137 "BriefDescription": "A Page Table Entry was loaded into the TLB from a localtion other than the local core's L3 due to a data side request",
138 "PublicDescription": ""
139 },
140 {,
141 "EventCode": "0xd094",
142 "EventName": "PM_DSLB_MISS",
143 "BriefDescription": "Data SLB Miss - Total of all segment sizes",
144 "PublicDescription": "Data SLB Miss - Total of all segment sizesData SLB misses"
145 },
146 {,
147 "EventCode": "0x1002c",
148 "EventName": "PM_L1_DCACHE_RELOADED_ALL",
149 "BriefDescription": "L1 data cache reloaded for demand or prefetch",
150 "PublicDescription": ""
151 },
152 {,
153 "EventCode": "0x300f6",
154 "EventName": "PM_L1_DCACHE_RELOAD_VALID",
155 "BriefDescription": "DL1 reloaded due to Demand Load",
156 "PublicDescription": ""
157 },
158 {,
159 "EventCode": "0x3e054",
160 "EventName": "PM_LD_MISS_L1",
161 "BriefDescription": "Load Missed L1",
162 "PublicDescription": ""
163 },
164 {,
165 "EventCode": "0x100ee",
166 "EventName": "PM_LD_REF_L1",
167 "BriefDescription": "All L1 D cache load references counted at finish, gated by reject",
168 "PublicDescription": "Load Ref count combined for all units"
169 },
170 {,
171 "EventCode": "0x300f0",
172 "EventName": "PM_ST_MISS_L1",
173 "BriefDescription": "Store Missed L1",
174 "PublicDescription": ""
175 },
176]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/floating-point.json b/tools/perf/pmu-events/arch/powerpc/power8/floating-point.json
new file mode 100644
index 000000000000..5f1bb9fca40c
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/floating-point.json
@@ -0,0 +1,14 @@
1[
2 {,
3 "EventCode": "0x2000e",
4 "EventName": "PM_FXU_BUSY",
5 "BriefDescription": "fxu0 busy and fxu1 busy",
6 "PublicDescription": ""
7 },
8 {,
9 "EventCode": "0x1000e",
10 "EventName": "PM_FXU_IDLE",
11 "BriefDescription": "fxu0 idle and fxu1 idle",
12 "PublicDescription": ""
13 },
14]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/frontend.json b/tools/perf/pmu-events/arch/powerpc/power8/frontend.json
new file mode 100644
index 000000000000..04c5f1b7bee1
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/frontend.json
@@ -0,0 +1,470 @@
1[
2 {,
3 "EventCode": "0x2505e",
4 "EventName": "PM_BACK_BR_CMPL",
5 "BriefDescription": "Branch instruction completed with a target address less than current instruction address",
6 "PublicDescription": ""
7 },
8 {,
9 "EventCode": "0x10068",
10 "EventName": "PM_BRU_FIN",
11 "BriefDescription": "Branch Instruction Finished",
12 "PublicDescription": ""
13 },
14 {,
15 "EventCode": "0x20036",
16 "EventName": "PM_BR_2PATH",
17 "BriefDescription": "two path branch",
18 "PublicDescription": ""
19 },
20 {,
21 "EventCode": "0x40060",
22 "EventName": "PM_BR_CMPL",
23 "BriefDescription": "Branch Instruction completed",
24 "PublicDescription": ""
25 },
26 {,
27 "EventCode": "0x400f6",
28 "EventName": "PM_BR_MPRED_CMPL",
29 "BriefDescription": "Number of Branch Mispredicts",
30 "PublicDescription": ""
31 },
32 {,
33 "EventCode": "0x200fa",
34 "EventName": "PM_BR_TAKEN_CMPL",
35 "BriefDescription": "New event for Branch Taken",
36 "PublicDescription": ""
37 },
38 {,
39 "EventCode": "0x10018",
40 "EventName": "PM_IC_DEMAND_CYC",
41 "BriefDescription": "Cycles when a demand ifetch was pending",
42 "PublicDescription": "Demand ifetch pending"
43 },
44 {,
45 "EventCode": "0x100f6",
46 "EventName": "PM_IERAT_RELOAD",
47 "BriefDescription": "Number of I-ERAT reloads",
48 "PublicDescription": "IERAT Reloaded (Miss)"
49 },
50 {,
51 "EventCode": "0x4006a",
52 "EventName": "PM_IERAT_RELOAD_16M",
53 "BriefDescription": "IERAT Reloaded (Miss) for a 16M page",
54 "PublicDescription": ""
55 },
56 {,
57 "EventCode": "0x20064",
58 "EventName": "PM_IERAT_RELOAD_4K",
59 "BriefDescription": "IERAT Miss (Not implemented as DI on POWER6)",
60 "PublicDescription": "IERAT Reloaded (Miss) for a 4k page"
61 },
62 {,
63 "EventCode": "0x3006a",
64 "EventName": "PM_IERAT_RELOAD_64K",
65 "BriefDescription": "IERAT Reloaded (Miss) for a 64k page",
66 "PublicDescription": ""
67 },
68 {,
69 "EventCode": "0x14050",
70 "EventName": "PM_INST_CHIP_PUMP_CPRED",
71 "BriefDescription": "Initial and Final Pump Scope was chip pump (prediction=correct) for an instruction fetch",
72 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was chip pump (prediction=correct) for an instruction fetch"
73 },
74 {,
75 "EventCode": "0x2",
76 "EventName": "PM_INST_CMPL",
77 "BriefDescription": "Number of PowerPC Instructions that completed",
78 "PublicDescription": "PPC Instructions Finished (completed)"
79 },
80 {,
81 "EventCode": "0x200f2",
82 "EventName": "PM_INST_DISP",
83 "BriefDescription": "PPC Dispatched",
84 "PublicDescription": ""
85 },
86 {,
87 "EventCode": "0x44048",
88 "EventName": "PM_INST_FROM_DL2L3_MOD",
89 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to an instruction fetch (not prefetch)",
90 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
91 },
92 {,
93 "EventCode": "0x34048",
94 "EventName": "PM_INST_FROM_DL2L3_SHR",
95 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to an instruction fetch (not prefetch)",
96 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
97 },
98 {,
99 "EventCode": "0x3404c",
100 "EventName": "PM_INST_FROM_DL4",
101 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to an instruction fetch (not prefetch)",
102 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
103 },
104 {,
105 "EventCode": "0x4404c",
106 "EventName": "PM_INST_FROM_DMEM",
107 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group (Distant) due to an instruction fetch (not prefetch)",
108 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group (Distant) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
109 },
110 {,
111 "EventCode": "0x14042",
112 "EventName": "PM_INST_FROM_L2",
113 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 due to an instruction fetch (not prefetch)",
114 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
115 },
116 {,
117 "EventCode": "0x1404e",
118 "EventName": "PM_INST_FROM_L2MISS",
119 "BriefDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L2 due to an instruction fetch (not prefetch)",
120 "PublicDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L2 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
121 },
122 {,
123 "EventCode": "0x34040",
124 "EventName": "PM_INST_FROM_L2_DISP_CONFLICT_LDHITST",
125 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 with load hit store conflict due to an instruction fetch (not prefetch)",
126 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 with load hit store conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
127 },
128 {,
129 "EventCode": "0x44040",
130 "EventName": "PM_INST_FROM_L2_DISP_CONFLICT_OTHER",
131 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 with dispatch conflict due to an instruction fetch (not prefetch)",
132 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 with dispatch conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
133 },
134 {,
135 "EventCode": "0x24040",
136 "EventName": "PM_INST_FROM_L2_MEPF",
137 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state. due to an instruction fetch (not prefetch)",
138 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state. due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
139 },
140 {,
141 "EventCode": "0x14040",
142 "EventName": "PM_INST_FROM_L2_NO_CONFLICT",
143 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 without conflict due to an instruction fetch (not prefetch)",
144 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 without conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
145 },
146 {,
147 "EventCode": "0x44042",
148 "EventName": "PM_INST_FROM_L3",
149 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 due to an instruction fetch (not prefetch)",
150 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
151 },
152 {,
153 "EventCode": "0x300fa",
154 "EventName": "PM_INST_FROM_L3MISS",
155 "BriefDescription": "Marked instruction was reloaded from a location beyond the local chiplet",
156 "PublicDescription": "Inst from L3 miss"
157 },
158 {,
159 "EventCode": "0x4404e",
160 "EventName": "PM_INST_FROM_L3MISS_MOD",
161 "BriefDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L3 due to a instruction fetch",
162 "PublicDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L3 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
163 },
164 {,
165 "EventCode": "0x34042",
166 "EventName": "PM_INST_FROM_L3_DISP_CONFLICT",
167 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 with dispatch conflict due to an instruction fetch (not prefetch)",
168 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 with dispatch conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
169 },
170 {,
171 "EventCode": "0x24042",
172 "EventName": "PM_INST_FROM_L3_MEPF",
173 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state. due to an instruction fetch (not prefetch)",
174 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state. due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
175 },
176 {,
177 "EventCode": "0x14044",
178 "EventName": "PM_INST_FROM_L3_NO_CONFLICT",
179 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 without conflict due to an instruction fetch (not prefetch)",
180 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 without conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
181 },
182 {,
183 "EventCode": "0x1404c",
184 "EventName": "PM_INST_FROM_LL4",
185 "BriefDescription": "The processor's Instruction cache was reloaded from the local chip's L4 cache due to an instruction fetch (not prefetch)",
186 "PublicDescription": "The processor's Instruction cache was reloaded from the local chip's L4 cache due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
187 },
188 {,
189 "EventCode": "0x24048",
190 "EventName": "PM_INST_FROM_LMEM",
191 "BriefDescription": "The processor's Instruction cache was reloaded from the local chip's Memory due to an instruction fetch (not prefetch)",
192 "PublicDescription": "The processor's Instruction cache was reloaded from the local chip's Memory due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
193 },
194 {,
195 "EventCode": "0x2404c",
196 "EventName": "PM_INST_FROM_MEMORY",
197 "BriefDescription": "The processor's Instruction cache was reloaded from a memory location including L4 from local remote or distant due to an instruction fetch (not prefetch)",
198 "PublicDescription": "The processor's Instruction cache was reloaded from a memory location including L4 from local remote or distant due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
199 },
200 {,
201 "EventCode": "0x4404a",
202 "EventName": "PM_INST_FROM_OFF_CHIP_CACHE",
203 "BriefDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to an instruction fetch (not prefetch)",
204 "PublicDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
205 },
206 {,
207 "EventCode": "0x14048",
208 "EventName": "PM_INST_FROM_ON_CHIP_CACHE",
209 "BriefDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to an instruction fetch (not prefetch)",
210 "PublicDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
211 },
212 {,
213 "EventCode": "0x24046",
214 "EventName": "PM_INST_FROM_RL2L3_MOD",
215 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to an instruction fetch (not prefetch)",
216 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
217 },
218 {,
219 "EventCode": "0x1404a",
220 "EventName": "PM_INST_FROM_RL2L3_SHR",
221 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to an instruction fetch (not prefetch)",
222 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
223 },
224 {,
225 "EventCode": "0x2404a",
226 "EventName": "PM_INST_FROM_RL4",
227 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to an instruction fetch (not prefetch)",
228 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
229 },
230 {,
231 "EventCode": "0x3404a",
232 "EventName": "PM_INST_FROM_RMEM",
233 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to an instruction fetch (not prefetch)",
234 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
235 },
236 {,
237 "EventCode": "0x24050",
238 "EventName": "PM_INST_GRP_PUMP_CPRED",
239 "BriefDescription": "Initial and Final Pump Scope was group pump (prediction=correct) for an instruction fetch",
240 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was group pump for an instruction fetch"
241 },
242 {,
243 "EventCode": "0x24052",
244 "EventName": "PM_INST_GRP_PUMP_MPRED",
245 "BriefDescription": "Final Pump Scope (Group) ended up either larger or smaller than Initial Pump Scope for an instruction fetch",
246 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope OR Final Pump Scope(Group) got data from source that was at smaller scope(Chip) Final pump was group pump and initial pump was chip or final and initial pump was gro"
247 },
248 {,
249 "EventCode": "0x14052",
250 "EventName": "PM_INST_GRP_PUMP_MPRED_RTY",
251 "BriefDescription": "Final Pump Scope (Group) ended up larger than Initial Pump Scope (Chip) for an instruction fetch",
252 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope (Chip) Final pump was group pump and initial pump was chip pumpfor an instruction fetch"
253 },
254 {,
255 "EventCode": "0x1003a",
256 "EventName": "PM_INST_IMC_MATCH_CMPL",
257 "BriefDescription": "IMC Match Count ( Not architected in P8)",
258 "PublicDescription": ""
259 },
260 {,
261 "EventCode": "0x14054",
262 "EventName": "PM_INST_PUMP_CPRED",
263 "BriefDescription": "Pump prediction correct. Counts across all types of pumps for an instruction fetch",
264 "PublicDescription": "Pump prediction correct. Counts across all types of pumpsfor an instruction fetch"
265 },
266 {,
267 "EventCode": "0x44052",
268 "EventName": "PM_INST_PUMP_MPRED",
269 "BriefDescription": "Pump misprediction. Counts across all types of pumps for an instruction fetch",
270 "PublicDescription": "Pump Mis prediction Counts across all types of pumpsfor an instruction fetch"
271 },
272 {,
273 "EventCode": "0x34050",
274 "EventName": "PM_INST_SYS_PUMP_CPRED",
275 "BriefDescription": "Initial and Final Pump Scope was system pump (prediction=correct) for an instruction fetch",
276 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was system pump for an instruction fetch"
277 },
278 {,
279 "EventCode": "0x34052",
280 "EventName": "PM_INST_SYS_PUMP_MPRED",
281 "BriefDescription": "Final Pump Scope (system) mispredicted. Either the original scope was too small (Chip/Group) or the original scope was System and it should have been smaller. Counts for an instruction fetch",
282 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope(Chip/Group) OR Final Pump Scope(system) got data from source that was at smaller scope(Chip/group) Final pump was system pump and initial pump was chip or group or"
283 },
284 {,
285 "EventCode": "0x44050",
286 "EventName": "PM_INST_SYS_PUMP_MPRED_RTY",
287 "BriefDescription": "Final Pump Scope (system) ended up larger than Initial Pump Scope (Chip/Group) for an instruction fetch",
288 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope (Chip or Group) for an instruction fetch"
289 },
290 {,
291 "EventCode": "0x45048",
292 "EventName": "PM_IPTEG_FROM_DL2L3_MOD",
293 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a instruction side request",
294 "PublicDescription": ""
295 },
296 {,
297 "EventCode": "0x35048",
298 "EventName": "PM_IPTEG_FROM_DL2L3_SHR",
299 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a instruction side request",
300 "PublicDescription": ""
301 },
302 {,
303 "EventCode": "0x3504c",
304 "EventName": "PM_IPTEG_FROM_DL4",
305 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's L4 on a different Node or Group (Distant) due to a instruction side request",
306 "PublicDescription": ""
307 },
308 {,
309 "EventCode": "0x4504c",
310 "EventName": "PM_IPTEG_FROM_DMEM",
311 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's memory on the same Node or Group (Distant) due to a instruction side request",
312 "PublicDescription": ""
313 },
314 {,
315 "EventCode": "0x15042",
316 "EventName": "PM_IPTEG_FROM_L2",
317 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 due to a instruction side request",
318 "PublicDescription": ""
319 },
320 {,
321 "EventCode": "0x1504e",
322 "EventName": "PM_IPTEG_FROM_L2MISS",
323 "BriefDescription": "A Page Table Entry was loaded into the TLB from a localtion other than the local core's L2 due to a instruction side request",
324 "PublicDescription": ""
325 },
326 {,
327 "EventCode": "0x25040",
328 "EventName": "PM_IPTEG_FROM_L2_MEPF",
329 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 hit without dispatch conflicts on Mepf state. due to a instruction side request",
330 "PublicDescription": ""
331 },
332 {,
333 "EventCode": "0x15040",
334 "EventName": "PM_IPTEG_FROM_L2_NO_CONFLICT",
335 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 without conflict due to a instruction side request",
336 "PublicDescription": ""
337 },
338 {,
339 "EventCode": "0x45042",
340 "EventName": "PM_IPTEG_FROM_L3",
341 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 due to a instruction side request",
342 "PublicDescription": ""
343 },
344 {,
345 "EventCode": "0x4504e",
346 "EventName": "PM_IPTEG_FROM_L3MISS",
347 "BriefDescription": "A Page Table Entry was loaded into the TLB from a localtion other than the local core's L3 due to a instruction side request",
348 "PublicDescription": ""
349 },
350 {,
351 "EventCode": "0x35042",
352 "EventName": "PM_IPTEG_FROM_L3_DISP_CONFLICT",
353 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 with dispatch conflict due to a instruction side request",
354 "PublicDescription": ""
355 },
356 {,
357 "EventCode": "0x25042",
358 "EventName": "PM_IPTEG_FROM_L3_MEPF",
359 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 without dispatch conflicts hit on Mepf state. due to a instruction side request",
360 "PublicDescription": ""
361 },
362 {,
363 "EventCode": "0x15044",
364 "EventName": "PM_IPTEG_FROM_L3_NO_CONFLICT",
365 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 without conflict due to a instruction side request",
366 "PublicDescription": ""
367 },
368 {,
369 "EventCode": "0x1504c",
370 "EventName": "PM_IPTEG_FROM_LL4",
371 "BriefDescription": "A Page Table Entry was loaded into the TLB from the local chip's L4 cache due to a instruction side request",
372 "PublicDescription": ""
373 },
374 {,
375 "EventCode": "0x25048",
376 "EventName": "PM_IPTEG_FROM_LMEM",
377 "BriefDescription": "A Page Table Entry was loaded into the TLB from the local chip's Memory due to a instruction side request",
378 "PublicDescription": ""
379 },
380 {,
381 "EventCode": "0x2504c",
382 "EventName": "PM_IPTEG_FROM_MEMORY",
383 "BriefDescription": "A Page Table Entry was loaded into the TLB from a memory location including L4 from local remote or distant due to a instruction side request",
384 "PublicDescription": ""
385 },
386 {,
387 "EventCode": "0x4504a",
388 "EventName": "PM_IPTEG_FROM_OFF_CHIP_CACHE",
389 "BriefDescription": "A Page Table Entry was loaded into the TLB either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to a instruction side request",
390 "PublicDescription": ""
391 },
392 {,
393 "EventCode": "0x15048",
394 "EventName": "PM_IPTEG_FROM_ON_CHIP_CACHE",
395 "BriefDescription": "A Page Table Entry was loaded into the TLB either shared or modified data from another core's L2/L3 on the same chip due to a instruction side request",
396 "PublicDescription": ""
397 },
398 {,
399 "EventCode": "0x25046",
400 "EventName": "PM_IPTEG_FROM_RL2L3_MOD",
401 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a instruction side request",
402 "PublicDescription": ""
403 },
404 {,
405 "EventCode": "0x1504a",
406 "EventName": "PM_IPTEG_FROM_RL2L3_SHR",
407 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a instruction side request",
408 "PublicDescription": ""
409 },
410 {,
411 "EventCode": "0x2504a",
412 "EventName": "PM_IPTEG_FROM_RL4",
413 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's L4 on the same Node or Group ( Remote) due to a instruction side request",
414 "PublicDescription": ""
415 },
416 {,
417 "EventCode": "0x3504a",
418 "EventName": "PM_IPTEG_FROM_RMEM",
419 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's memory on the same Node or Group ( Remote) due to a instruction side request",
420 "PublicDescription": ""
421 },
422 {,
423 "EventCode": "0xd096",
424 "EventName": "PM_ISLB_MISS",
425 "BriefDescription": "I SLB Miss",
426 "PublicDescription": ""
427 },
428 {,
429 "EventCode": "0x400fc",
430 "EventName": "PM_ITLB_MISS",
431 "BriefDescription": "ITLB Reloaded (always zero on POWER6)",
432 "PublicDescription": ""
433 },
434 {,
435 "EventCode": "0x200fd",
436 "EventName": "PM_L1_ICACHE_MISS",
437 "BriefDescription": "Demand iCache Miss",
438 "PublicDescription": ""
439 },
440 {,
441 "EventCode": "0x40012",
442 "EventName": "PM_L1_ICACHE_RELOADED_ALL",
443 "BriefDescription": "Counts all Icache reloads includes demand, prefetchm prefetch turned into demand and demand turned into prefetch",
444 "PublicDescription": ""
445 },
446 {,
447 "EventCode": "0x30068",
448 "EventName": "PM_L1_ICACHE_RELOADED_PREF",
449 "BriefDescription": "Counts all Icache prefetch reloads ( includes demand turned into prefetch)",
450 "PublicDescription": ""
451 },
452 {,
453 "EventCode": "0x300f4",
454 "EventName": "PM_THRD_CONC_RUN_INST",
455 "BriefDescription": "PPC Instructions Finished when both threads in run_cycles",
456 "PublicDescription": "Concurrent Run Instructions"
457 },
458 {,
459 "EventCode": "0x30060",
460 "EventName": "PM_TM_TRANS_RUN_INST",
461 "BriefDescription": "Instructions completed in transactional state",
462 "PublicDescription": ""
463 },
464 {,
465 "EventCode": "0x4e014",
466 "EventName": "PM_TM_TX_PASS_RUN_INST",
467 "BriefDescription": "run instructions spent in successful transactions",
468 "PublicDescription": ""
469 },
470]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/marked.json b/tools/perf/pmu-events/arch/powerpc/power8/marked.json
new file mode 100644
index 000000000000..dcdcede3c3fe
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/marked.json
@@ -0,0 +1,794 @@
1[
2 {,
3 "EventCode": "0x3515e",
4 "EventName": "PM_MRK_BACK_BR_CMPL",
5 "BriefDescription": "Marked branch instruction completed with a target address less than current instruction address",
6 "PublicDescription": ""
7 },
8 {,
9 "EventCode": "0x2013a",
10 "EventName": "PM_MRK_BRU_FIN",
11 "BriefDescription": "bru marked instr finish",
12 "PublicDescription": ""
13 },
14 {,
15 "EventCode": "0x1016e",
16 "EventName": "PM_MRK_BR_CMPL",
17 "BriefDescription": "Branch Instruction completed",
18 "PublicDescription": ""
19 },
20 {,
21 "EventCode": "0x301e4",
22 "EventName": "PM_MRK_BR_MPRED_CMPL",
23 "BriefDescription": "Marked Branch Mispredicted",
24 "PublicDescription": ""
25 },
26 {,
27 "EventCode": "0x101e2",
28 "EventName": "PM_MRK_BR_TAKEN_CMPL",
29 "BriefDescription": "Marked Branch Taken completed",
30 "PublicDescription": ""
31 },
32 {,
33 "EventCode": "0x4d148",
34 "EventName": "PM_MRK_DATA_FROM_DL2L3_MOD",
35 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a marked load",
36 "PublicDescription": ""
37 },
38 {,
39 "EventCode": "0x2d128",
40 "EventName": "PM_MRK_DATA_FROM_DL2L3_MOD_CYC",
41 "BriefDescription": "Duration in cycles to reload with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a marked load",
42 "PublicDescription": ""
43 },
44 {,
45 "EventCode": "0x3d148",
46 "EventName": "PM_MRK_DATA_FROM_DL2L3_SHR",
47 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a marked load",
48 "PublicDescription": ""
49 },
50 {,
51 "EventCode": "0x2c128",
52 "EventName": "PM_MRK_DATA_FROM_DL2L3_SHR_CYC",
53 "BriefDescription": "Duration in cycles to reload with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a marked load",
54 "PublicDescription": ""
55 },
56 {,
57 "EventCode": "0x3d14c",
58 "EventName": "PM_MRK_DATA_FROM_DL4",
59 "BriefDescription": "The processor's data cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to a marked load",
60 "PublicDescription": ""
61 },
62 {,
63 "EventCode": "0x2c12c",
64 "EventName": "PM_MRK_DATA_FROM_DL4_CYC",
65 "BriefDescription": "Duration in cycles to reload from another chip's L4 on a different Node or Group (Distant) due to a marked load",
66 "PublicDescription": ""
67 },
68 {,
69 "EventCode": "0x4d14c",
70 "EventName": "PM_MRK_DATA_FROM_DMEM",
71 "BriefDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group (Distant) due to a marked load",
72 "PublicDescription": ""
73 },
74 {,
75 "EventCode": "0x2d12c",
76 "EventName": "PM_MRK_DATA_FROM_DMEM_CYC",
77 "BriefDescription": "Duration in cycles to reload from another chip's memory on the same Node or Group (Distant) due to a marked load",
78 "PublicDescription": ""
79 },
80 {,
81 "EventCode": "0x1d142",
82 "EventName": "PM_MRK_DATA_FROM_L2",
83 "BriefDescription": "The processor's data cache was reloaded from local core's L2 due to a marked load",
84 "PublicDescription": ""
85 },
86 {,
87 "EventCode": "0x1d14e",
88 "EventName": "PM_MRK_DATA_FROM_L2MISS",
89 "BriefDescription": "Data cache reload L2 miss",
90 "PublicDescription": ""
91 },
92 {,
93 "EventCode": "0x4c12e",
94 "EventName": "PM_MRK_DATA_FROM_L2MISS_CYC",
95 "BriefDescription": "Duration in cycles to reload from a localtion other than the local core's L2 due to a marked load",
96 "PublicDescription": ""
97 },
98 {,
99 "EventCode": "0x4c122",
100 "EventName": "PM_MRK_DATA_FROM_L2_CYC",
101 "BriefDescription": "Duration in cycles to reload from local core's L2 due to a marked load",
102 "PublicDescription": ""
103 },
104 {,
105 "EventCode": "0x3d140",
106 "EventName": "PM_MRK_DATA_FROM_L2_DISP_CONFLICT_LDHITST",
107 "BriefDescription": "The processor's data cache was reloaded from local core's L2 with load hit store conflict due to a marked load",
108 "PublicDescription": ""
109 },
110 {,
111 "EventCode": "0x2c120",
112 "EventName": "PM_MRK_DATA_FROM_L2_DISP_CONFLICT_LDHITST_CYC",
113 "BriefDescription": "Duration in cycles to reload from local core's L2 with load hit store conflict due to a marked load",
114 "PublicDescription": ""
115 },
116 {,
117 "EventCode": "0x4d140",
118 "EventName": "PM_MRK_DATA_FROM_L2_DISP_CONFLICT_OTHER",
119 "BriefDescription": "The processor's data cache was reloaded from local core's L2 with dispatch conflict due to a marked load",
120 "PublicDescription": ""
121 },
122 {,
123 "EventCode": "0x2d120",
124 "EventName": "PM_MRK_DATA_FROM_L2_DISP_CONFLICT_OTHER_CYC",
125 "BriefDescription": "Duration in cycles to reload from local core's L2 with dispatch conflict due to a marked load",
126 "PublicDescription": ""
127 },
128 {,
129 "EventCode": "0x2d140",
130 "EventName": "PM_MRK_DATA_FROM_L2_MEPF",
131 "BriefDescription": "The processor's data cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state. due to a marked load",
132 "PublicDescription": ""
133 },
134 {,
135 "EventCode": "0x4d120",
136 "EventName": "PM_MRK_DATA_FROM_L2_MEPF_CYC",
137 "BriefDescription": "Duration in cycles to reload from local core's L2 hit without dispatch conflicts on Mepf state. due to a marked load",
138 "PublicDescription": ""
139 },
140 {,
141 "EventCode": "0x1d140",
142 "EventName": "PM_MRK_DATA_FROM_L2_NO_CONFLICT",
143 "BriefDescription": "The processor's data cache was reloaded from local core's L2 without conflict due to a marked load",
144 "PublicDescription": ""
145 },
146 {,
147 "EventCode": "0x4c120",
148 "EventName": "PM_MRK_DATA_FROM_L2_NO_CONFLICT_CYC",
149 "BriefDescription": "Duration in cycles to reload from local core's L2 without conflict due to a marked load",
150 "PublicDescription": ""
151 },
152 {,
153 "EventCode": "0x4d142",
154 "EventName": "PM_MRK_DATA_FROM_L3",
155 "BriefDescription": "The processor's data cache was reloaded from local core's L3 due to a marked load",
156 "PublicDescription": ""
157 },
158 {,
159 "EventCode": "0x201e4",
160 "EventName": "PM_MRK_DATA_FROM_L3MISS",
161 "BriefDescription": "The processor's data cache was reloaded from a localtion other than the local core's L3 due to a marked load",
162 "PublicDescription": ""
163 },
164 {,
165 "EventCode": "0x2d12e",
166 "EventName": "PM_MRK_DATA_FROM_L3MISS_CYC",
167 "BriefDescription": "Duration in cycles to reload from a localtion other than the local core's L3 due to a marked load",
168 "PublicDescription": ""
169 },
170 {,
171 "EventCode": "0x2d122",
172 "EventName": "PM_MRK_DATA_FROM_L3_CYC",
173 "BriefDescription": "Duration in cycles to reload from local core's L3 due to a marked load",
174 "PublicDescription": ""
175 },
176 {,
177 "EventCode": "0x3d142",
178 "EventName": "PM_MRK_DATA_FROM_L3_DISP_CONFLICT",
179 "BriefDescription": "The processor's data cache was reloaded from local core's L3 with dispatch conflict due to a marked load",
180 "PublicDescription": ""
181 },
182 {,
183 "EventCode": "0x2c122",
184 "EventName": "PM_MRK_DATA_FROM_L3_DISP_CONFLICT_CYC",
185 "BriefDescription": "Duration in cycles to reload from local core's L3 with dispatch conflict due to a marked load",
186 "PublicDescription": ""
187 },
188 {,
189 "EventCode": "0x2d142",
190 "EventName": "PM_MRK_DATA_FROM_L3_MEPF",
191 "BriefDescription": "The processor's data cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state. due to a marked load",
192 "PublicDescription": ""
193 },
194 {,
195 "EventCode": "0x4d122",
196 "EventName": "PM_MRK_DATA_FROM_L3_MEPF_CYC",
197 "BriefDescription": "Duration in cycles to reload from local core's L3 without dispatch conflicts hit on Mepf state. due to a marked load",
198 "PublicDescription": ""
199 },
200 {,
201 "EventCode": "0x1d144",
202 "EventName": "PM_MRK_DATA_FROM_L3_NO_CONFLICT",
203 "BriefDescription": "The processor's data cache was reloaded from local core's L3 without conflict due to a marked load",
204 "PublicDescription": ""
205 },
206 {,
207 "EventCode": "0x4c124",
208 "EventName": "PM_MRK_DATA_FROM_L3_NO_CONFLICT_CYC",
209 "BriefDescription": "Duration in cycles to reload from local core's L3 without conflict due to a marked load",
210 "PublicDescription": ""
211 },
212 {,
213 "EventCode": "0x1d14c",
214 "EventName": "PM_MRK_DATA_FROM_LL4",
215 "BriefDescription": "The processor's data cache was reloaded from the local chip's L4 cache due to a marked load",
216 "PublicDescription": ""
217 },
218 {,
219 "EventCode": "0x4c12c",
220 "EventName": "PM_MRK_DATA_FROM_LL4_CYC",
221 "BriefDescription": "Duration in cycles to reload from the local chip's L4 cache due to a marked load",
222 "PublicDescription": ""
223 },
224 {,
225 "EventCode": "0x2d148",
226 "EventName": "PM_MRK_DATA_FROM_LMEM",
227 "BriefDescription": "The processor's data cache was reloaded from the local chip's Memory due to a marked load",
228 "PublicDescription": ""
229 },
230 {,
231 "EventCode": "0x4d128",
232 "EventName": "PM_MRK_DATA_FROM_LMEM_CYC",
233 "BriefDescription": "Duration in cycles to reload from the local chip's Memory due to a marked load",
234 "PublicDescription": ""
235 },
236 {,
237 "EventCode": "0x2d14c",
238 "EventName": "PM_MRK_DATA_FROM_MEMORY",
239 "BriefDescription": "The processor's data cache was reloaded from a memory location including L4 from local remote or distant due to a marked load",
240 "PublicDescription": ""
241 },
242 {,
243 "EventCode": "0x4d12c",
244 "EventName": "PM_MRK_DATA_FROM_MEMORY_CYC",
245 "BriefDescription": "Duration in cycles to reload from a memory location including L4 from local remote or distant due to a marked load",
246 "PublicDescription": ""
247 },
248 {,
249 "EventCode": "0x4d14a",
250 "EventName": "PM_MRK_DATA_FROM_OFF_CHIP_CACHE",
251 "BriefDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to a marked load",
252 "PublicDescription": ""
253 },
254 {,
255 "EventCode": "0x2d12a",
256 "EventName": "PM_MRK_DATA_FROM_OFF_CHIP_CACHE_CYC",
257 "BriefDescription": "Duration in cycles to reload either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to a marked load",
258 "PublicDescription": ""
259 },
260 {,
261 "EventCode": "0x1d148",
262 "EventName": "PM_MRK_DATA_FROM_ON_CHIP_CACHE",
263 "BriefDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to a marked load",
264 "PublicDescription": ""
265 },
266 {,
267 "EventCode": "0x4c128",
268 "EventName": "PM_MRK_DATA_FROM_ON_CHIP_CACHE_CYC",
269 "BriefDescription": "Duration in cycles to reload either shared or modified data from another core's L2/L3 on the same chip due to a marked load",
270 "PublicDescription": ""
271 },
272 {,
273 "EventCode": "0x2d146",
274 "EventName": "PM_MRK_DATA_FROM_RL2L3_MOD",
275 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a marked load",
276 "PublicDescription": ""
277 },
278 {,
279 "EventCode": "0x4d126",
280 "EventName": "PM_MRK_DATA_FROM_RL2L3_MOD_CYC",
281 "BriefDescription": "Duration in cycles to reload with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a marked load",
282 "PublicDescription": ""
283 },
284 {,
285 "EventCode": "0x1d14a",
286 "EventName": "PM_MRK_DATA_FROM_RL2L3_SHR",
287 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a marked load",
288 "PublicDescription": ""
289 },
290 {,
291 "EventCode": "0x4c12a",
292 "EventName": "PM_MRK_DATA_FROM_RL2L3_SHR_CYC",
293 "BriefDescription": "Duration in cycles to reload with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a marked load",
294 "PublicDescription": ""
295 },
296 {,
297 "EventCode": "0x2d14a",
298 "EventName": "PM_MRK_DATA_FROM_RL4",
299 "BriefDescription": "The processor's data cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to a marked load",
300 "PublicDescription": ""
301 },
302 {,
303 "EventCode": "0x4d12a",
304 "EventName": "PM_MRK_DATA_FROM_RL4_CYC",
305 "BriefDescription": "Duration in cycles to reload from another chip's L4 on the same Node or Group ( Remote) due to a marked load",
306 "PublicDescription": ""
307 },
308 {,
309 "EventCode": "0x3d14a",
310 "EventName": "PM_MRK_DATA_FROM_RMEM",
311 "BriefDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to a marked load",
312 "PublicDescription": ""
313 },
314 {,
315 "EventCode": "0x2c12a",
316 "EventName": "PM_MRK_DATA_FROM_RMEM_CYC",
317 "BriefDescription": "Duration in cycles to reload from another chip's memory on the same Node or Group ( Remote) due to a marked load",
318 "PublicDescription": ""
319 },
320 {,
321 "EventCode": "0x40118",
322 "EventName": "PM_MRK_DCACHE_RELOAD_INTV",
323 "BriefDescription": "Combined Intervention event",
324 "PublicDescription": ""
325 },
326 {,
327 "EventCode": "0x301e6",
328 "EventName": "PM_MRK_DERAT_MISS",
329 "BriefDescription": "Erat Miss (TLB Access) All page sizes",
330 "PublicDescription": ""
331 },
332 {,
333 "EventCode": "0x4d154",
334 "EventName": "PM_MRK_DERAT_MISS_16G",
335 "BriefDescription": "Marked Data ERAT Miss (Data TLB Access) page size 16G",
336 "PublicDescription": ""
337 },
338 {,
339 "EventCode": "0x3d154",
340 "EventName": "PM_MRK_DERAT_MISS_16M",
341 "BriefDescription": "Marked Data ERAT Miss (Data TLB Access) page size 16M",
342 "PublicDescription": ""
343 },
344 {,
345 "EventCode": "0x1d156",
346 "EventName": "PM_MRK_DERAT_MISS_4K",
347 "BriefDescription": "Marked Data ERAT Miss (Data TLB Access) page size 4K",
348 "PublicDescription": ""
349 },
350 {,
351 "EventCode": "0x2d154",
352 "EventName": "PM_MRK_DERAT_MISS_64K",
353 "BriefDescription": "Marked Data ERAT Miss (Data TLB Access) page size 64K",
354 "PublicDescription": ""
355 },
356 {,
357 "EventCode": "0x20132",
358 "EventName": "PM_MRK_DFU_FIN",
359 "BriefDescription": "Decimal Unit marked Instruction Finish",
360 "PublicDescription": ""
361 },
362 {,
363 "EventCode": "0x4f148",
364 "EventName": "PM_MRK_DPTEG_FROM_DL2L3_MOD",
365 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a marked data side request",
366 "PublicDescription": ""
367 },
368 {,
369 "EventCode": "0x3f148",
370 "EventName": "PM_MRK_DPTEG_FROM_DL2L3_SHR",
371 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a marked data side request",
372 "PublicDescription": ""
373 },
374 {,
375 "EventCode": "0x3f14c",
376 "EventName": "PM_MRK_DPTEG_FROM_DL4",
377 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's L4 on a different Node or Group (Distant) due to a marked data side request",
378 "PublicDescription": ""
379 },
380 {,
381 "EventCode": "0x4f14c",
382 "EventName": "PM_MRK_DPTEG_FROM_DMEM",
383 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's memory on the same Node or Group (Distant) due to a marked data side request",
384 "PublicDescription": ""
385 },
386 {,
387 "EventCode": "0x1f142",
388 "EventName": "PM_MRK_DPTEG_FROM_L2",
389 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 due to a marked data side request",
390 "PublicDescription": ""
391 },
392 {,
393 "EventCode": "0x1f14e",
394 "EventName": "PM_MRK_DPTEG_FROM_L2MISS",
395 "BriefDescription": "A Page Table Entry was loaded into the TLB from a localtion other than the local core's L2 due to a marked data side request",
396 "PublicDescription": ""
397 },
398 {,
399 "EventCode": "0x2f140",
400 "EventName": "PM_MRK_DPTEG_FROM_L2_MEPF",
401 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 hit without dispatch conflicts on Mepf state. due to a marked data side request",
402 "PublicDescription": ""
403 },
404 {,
405 "EventCode": "0x1f140",
406 "EventName": "PM_MRK_DPTEG_FROM_L2_NO_CONFLICT",
407 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 without conflict due to a marked data side request",
408 "PublicDescription": ""
409 },
410 {,
411 "EventCode": "0x4f142",
412 "EventName": "PM_MRK_DPTEG_FROM_L3",
413 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 due to a marked data side request",
414 "PublicDescription": ""
415 },
416 {,
417 "EventCode": "0x4f14e",
418 "EventName": "PM_MRK_DPTEG_FROM_L3MISS",
419 "BriefDescription": "A Page Table Entry was loaded into the TLB from a localtion other than the local core's L3 due to a marked data side request",
420 "PublicDescription": ""
421 },
422 {,
423 "EventCode": "0x3f142",
424 "EventName": "PM_MRK_DPTEG_FROM_L3_DISP_CONFLICT",
425 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 with dispatch conflict due to a marked data side request",
426 "PublicDescription": ""
427 },
428 {,
429 "EventCode": "0x2f142",
430 "EventName": "PM_MRK_DPTEG_FROM_L3_MEPF",
431 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 without dispatch conflicts hit on Mepf state. due to a marked data side request",
432 "PublicDescription": ""
433 },
434 {,
435 "EventCode": "0x1f144",
436 "EventName": "PM_MRK_DPTEG_FROM_L3_NO_CONFLICT",
437 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 without conflict due to a marked data side request",
438 "PublicDescription": ""
439 },
440 {,
441 "EventCode": "0x1f14c",
442 "EventName": "PM_MRK_DPTEG_FROM_LL4",
443 "BriefDescription": "A Page Table Entry was loaded into the TLB from the local chip's L4 cache due to a marked data side request",
444 "PublicDescription": ""
445 },
446 {,
447 "EventCode": "0x2f148",
448 "EventName": "PM_MRK_DPTEG_FROM_LMEM",
449 "BriefDescription": "A Page Table Entry was loaded into the TLB from the local chip's Memory due to a marked data side request",
450 "PublicDescription": ""
451 },
452 {,
453 "EventCode": "0x2f14c",
454 "EventName": "PM_MRK_DPTEG_FROM_MEMORY",
455 "BriefDescription": "A Page Table Entry was loaded into the TLB from a memory location including L4 from local remote or distant due to a marked data side request",
456 "PublicDescription": ""
457 },
458 {,
459 "EventCode": "0x4f14a",
460 "EventName": "PM_MRK_DPTEG_FROM_OFF_CHIP_CACHE",
461 "BriefDescription": "A Page Table Entry was loaded into the TLB either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to a marked data side request",
462 "PublicDescription": ""
463 },
464 {,
465 "EventCode": "0x1f148",
466 "EventName": "PM_MRK_DPTEG_FROM_ON_CHIP_CACHE",
467 "BriefDescription": "A Page Table Entry was loaded into the TLB either shared or modified data from another core's L2/L3 on the same chip due to a marked data side request",
468 "PublicDescription": ""
469 },
470 {,
471 "EventCode": "0x2f146",
472 "EventName": "PM_MRK_DPTEG_FROM_RL2L3_MOD",
473 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a marked data side request",
474 "PublicDescription": ""
475 },
476 {,
477 "EventCode": "0x1f14a",
478 "EventName": "PM_MRK_DPTEG_FROM_RL2L3_SHR",
479 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a marked data side request",
480 "PublicDescription": ""
481 },
482 {,
483 "EventCode": "0x2f14a",
484 "EventName": "PM_MRK_DPTEG_FROM_RL4",
485 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's L4 on the same Node or Group ( Remote) due to a marked data side request",
486 "PublicDescription": ""
487 },
488 {,
489 "EventCode": "0x3f14a",
490 "EventName": "PM_MRK_DPTEG_FROM_RMEM",
491 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's memory on the same Node or Group ( Remote) due to a marked data side request",
492 "PublicDescription": ""
493 },
494 {,
495 "EventCode": "0x401e4",
496 "EventName": "PM_MRK_DTLB_MISS",
497 "BriefDescription": "Marked dtlb miss",
498 "PublicDescription": ""
499 },
500 {,
501 "EventCode": "0x1d158",
502 "EventName": "PM_MRK_DTLB_MISS_16G",
503 "BriefDescription": "Marked Data TLB Miss page size 16G",
504 "PublicDescription": ""
505 },
506 {,
507 "EventCode": "0x4d156",
508 "EventName": "PM_MRK_DTLB_MISS_16M",
509 "BriefDescription": "Marked Data TLB Miss page size 16M",
510 "PublicDescription": ""
511 },
512 {,
513 "EventCode": "0x2d156",
514 "EventName": "PM_MRK_DTLB_MISS_4K",
515 "BriefDescription": "Marked Data TLB Miss page size 4k",
516 "PublicDescription": ""
517 },
518 {,
519 "EventCode": "0x3d156",
520 "EventName": "PM_MRK_DTLB_MISS_64K",
521 "BriefDescription": "Marked Data TLB Miss page size 64K",
522 "PublicDescription": ""
523 },
524 {,
525 "EventCode": "0x40154",
526 "EventName": "PM_MRK_FAB_RSP_BKILL",
527 "BriefDescription": "Marked store had to do a bkill",
528 "PublicDescription": ""
529 },
530 {,
531 "EventCode": "0x2f150",
532 "EventName": "PM_MRK_FAB_RSP_BKILL_CYC",
533 "BriefDescription": "cycles L2 RC took for a bkill",
534 "PublicDescription": ""
535 },
536 {,
537 "EventCode": "0x3015e",
538 "EventName": "PM_MRK_FAB_RSP_CLAIM_RTY",
539 "BriefDescription": "Sampled store did a rwitm and got a rty",
540 "PublicDescription": ""
541 },
542 {,
543 "EventCode": "0x30154",
544 "EventName": "PM_MRK_FAB_RSP_DCLAIM",
545 "BriefDescription": "Marked store had to do a dclaim",
546 "PublicDescription": ""
547 },
548 {,
549 "EventCode": "0x2f152",
550 "EventName": "PM_MRK_FAB_RSP_DCLAIM_CYC",
551 "BriefDescription": "cycles L2 RC took for a dclaim",
552 "PublicDescription": ""
553 },
554 {,
555 "EventCode": "0x4015e",
556 "EventName": "PM_MRK_FAB_RSP_RD_RTY",
557 "BriefDescription": "Sampled L2 reads retry count",
558 "PublicDescription": ""
559 },
560 {,
561 "EventCode": "0x1015e",
562 "EventName": "PM_MRK_FAB_RSP_RD_T_INTV",
563 "BriefDescription": "Sampled Read got a T intervention",
564 "PublicDescription": ""
565 },
566 {,
567 "EventCode": "0x4f150",
568 "EventName": "PM_MRK_FAB_RSP_RWITM_CYC",
569 "BriefDescription": "cycles L2 RC took for a rwitm",
570 "PublicDescription": ""
571 },
572 {,
573 "EventCode": "0x2015e",
574 "EventName": "PM_MRK_FAB_RSP_RWITM_RTY",
575 "BriefDescription": "Sampled store did a rwitm and got a rty",
576 "PublicDescription": ""
577 },
578 {,
579 "EventCode": "0x20134",
580 "EventName": "PM_MRK_FXU_FIN",
581 "BriefDescription": "fxu marked instr finish",
582 "PublicDescription": ""
583 },
584 {,
585 "EventCode": "0x401e0",
586 "EventName": "PM_MRK_INST_CMPL",
587 "BriefDescription": "marked instruction completed",
588 "PublicDescription": ""
589 },
590 {,
591 "EventCode": "0x20130",
592 "EventName": "PM_MRK_INST_DECODED",
593 "BriefDescription": "marked instruction decoded",
594 "PublicDescription": "marked instruction decoded. Name from ISU?"
595 },
596 {,
597 "EventCode": "0x101e0",
598 "EventName": "PM_MRK_INST_DISP",
599 "BriefDescription": "The thread has dispatched a randomly sampled marked instruction",
600 "PublicDescription": "Marked Instruction dispatched"
601 },
602 {,
603 "EventCode": "0x30130",
604 "EventName": "PM_MRK_INST_FIN",
605 "BriefDescription": "marked instruction finished",
606 "PublicDescription": "marked instr finish any unit"
607 },
608 {,
609 "EventCode": "0x401e6",
610 "EventName": "PM_MRK_INST_FROM_L3MISS",
611 "BriefDescription": "Marked instruction was reloaded from a location beyond the local chiplet",
612 "PublicDescription": "n/a"
613 },
614 {,
615 "EventCode": "0x10132",
616 "EventName": "PM_MRK_INST_ISSUED",
617 "BriefDescription": "Marked instruction issued",
618 "PublicDescription": ""
619 },
620 {,
621 "EventCode": "0x40134",
622 "EventName": "PM_MRK_INST_TIMEO",
623 "BriefDescription": "marked Instruction finish timeout (instruction lost)",
624 "PublicDescription": ""
625 },
626 {,
627 "EventCode": "0x101e4",
628 "EventName": "PM_MRK_L1_ICACHE_MISS",
629 "BriefDescription": "sampled Instruction suffered an icache Miss",
630 "PublicDescription": "Marked L1 Icache Miss"
631 },
632 {,
633 "EventCode": "0x101ea",
634 "EventName": "PM_MRK_L1_RELOAD_VALID",
635 "BriefDescription": "Marked demand reload",
636 "PublicDescription": ""
637 },
638 {,
639 "EventCode": "0x20114",
640 "EventName": "PM_MRK_L2_RC_DISP",
641 "BriefDescription": "Marked Instruction RC dispatched in L2",
642 "PublicDescription": ""
643 },
644 {,
645 "EventCode": "0x3012a",
646 "EventName": "PM_MRK_L2_RC_DONE",
647 "BriefDescription": "Marked RC done",
648 "PublicDescription": ""
649 },
650 {,
651 "EventCode": "0x40116",
652 "EventName": "PM_MRK_LARX_FIN",
653 "BriefDescription": "Larx finished",
654 "PublicDescription": ""
655 },
656 {,
657 "EventCode": "0x1013e",
658 "EventName": "PM_MRK_LD_MISS_EXPOSED_CYC",
659 "BriefDescription": "Marked Load exposed Miss cycles",
660 "PublicDescription": "Marked Load exposed Miss (use edge detect to count #)"
661 },
662 {,
663 "EventCode": "0x201e2",
664 "EventName": "PM_MRK_LD_MISS_L1",
665 "BriefDescription": "Marked DL1 Demand Miss counted at exec time",
666 "PublicDescription": ""
667 },
668 {,
669 "EventCode": "0x4013e",
670 "EventName": "PM_MRK_LD_MISS_L1_CYC",
671 "BriefDescription": "Marked ld latency",
672 "PublicDescription": ""
673 },
674 {,
675 "EventCode": "0x40132",
676 "EventName": "PM_MRK_LSU_FIN",
677 "BriefDescription": "lsu marked instr finish",
678 "PublicDescription": ""
679 },
680 {,
681 "EventCode": "0x20112",
682 "EventName": "PM_MRK_NTF_FIN",
683 "BriefDescription": "Marked next to finish instruction finished",
684 "PublicDescription": ""
685 },
686 {,
687 "EventCode": "0x1d15e",
688 "EventName": "PM_MRK_RUN_CYC",
689 "BriefDescription": "Marked run cycles",
690 "PublicDescription": ""
691 },
692 {,
693 "EventCode": "0x3013e",
694 "EventName": "PM_MRK_STALL_CMPLU_CYC",
695 "BriefDescription": "Marked Group completion Stall",
696 "PublicDescription": "Marked Group Completion Stall cycles (use edge detect to count #)"
697 },
698 {,
699 "EventCode": "0x3e158",
700 "EventName": "PM_MRK_STCX_FAIL",
701 "BriefDescription": "marked stcx failed",
702 "PublicDescription": ""
703 },
704 {,
705 "EventCode": "0x10134",
706 "EventName": "PM_MRK_ST_CMPL",
707 "BriefDescription": "marked store completed and sent to nest",
708 "PublicDescription": "Marked store completed"
709 },
710 {,
711 "EventCode": "0x30134",
712 "EventName": "PM_MRK_ST_CMPL_INT",
713 "BriefDescription": "marked store finished with intervention",
714 "PublicDescription": "marked store complete (data home) with intervention"
715 },
716 {,
717 "EventCode": "0x3f150",
718 "EventName": "PM_MRK_ST_DRAIN_TO_L2DISP_CYC",
719 "BriefDescription": "cycles to drain st from core to L2",
720 "PublicDescription": ""
721 },
722 {,
723 "EventCode": "0x3012c",
724 "EventName": "PM_MRK_ST_FWD",
725 "BriefDescription": "Marked st forwards",
726 "PublicDescription": ""
727 },
728 {,
729 "EventCode": "0x1f150",
730 "EventName": "PM_MRK_ST_L2DISP_TO_CMPL_CYC",
731 "BriefDescription": "cycles from L2 rc disp to l2 rc completion",
732 "PublicDescription": ""
733 },
734 {,
735 "EventCode": "0x20138",
736 "EventName": "PM_MRK_ST_NEST",
737 "BriefDescription": "Marked store sent to nest",
738 "PublicDescription": ""
739 },
740 {,
741 "EventCode": "0x30132",
742 "EventName": "PM_MRK_VSU_FIN",
743 "BriefDescription": "VSU marked instr finish",
744 "PublicDescription": "vsu (fpu) marked instr finish"
745 },
746 {,
747 "EventCode": "0x3d15e",
748 "EventName": "PM_MULT_MRK",
749 "BriefDescription": "mult marked instr",
750 "PublicDescription": ""
751 },
752 {,
753 "EventCode": "0x15152",
754 "EventName": "PM_SYNC_MRK_BR_LINK",
755 "BriefDescription": "Marked Branch and link branch that can cause a synchronous interrupt",
756 "PublicDescription": ""
757 },
758 {,
759 "EventCode": "0x1515c",
760 "EventName": "PM_SYNC_MRK_BR_MPRED",
761 "BriefDescription": "Marked Branch mispredict that can cause a synchronous interrupt",
762 "PublicDescription": ""
763 },
764 {,
765 "EventCode": "0x15156",
766 "EventName": "PM_SYNC_MRK_FX_DIVIDE",
767 "BriefDescription": "Marked fixed point divide that can cause a synchronous interrupt",
768 "PublicDescription": ""
769 },
770 {,
771 "EventCode": "0x15158",
772 "EventName": "PM_SYNC_MRK_L2HIT",
773 "BriefDescription": "Marked L2 Hits that can throw a synchronous interrupt",
774 "PublicDescription": ""
775 },
776 {,
777 "EventCode": "0x1515a",
778 "EventName": "PM_SYNC_MRK_L2MISS",
779 "BriefDescription": "Marked L2 Miss that can throw a synchronous interrupt",
780 "PublicDescription": ""
781 },
782 {,
783 "EventCode": "0x15154",
784 "EventName": "PM_SYNC_MRK_L3MISS",
785 "BriefDescription": "Marked L3 misses that can throw a synchronous interrupt",
786 "PublicDescription": ""
787 },
788 {,
789 "EventCode": "0x15150",
790 "EventName": "PM_SYNC_MRK_PROBE_NOP",
791 "BriefDescription": "Marked probeNops which can cause synchronous interrupts",
792 "PublicDescription": ""
793 },
794]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/memory.json b/tools/perf/pmu-events/arch/powerpc/power8/memory.json
new file mode 100644
index 000000000000..87cdaadba7bd
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/memory.json
@@ -0,0 +1,212 @@
1[
2 {,
3 "EventCode": "0x10050",
4 "EventName": "PM_CHIP_PUMP_CPRED",
5 "BriefDescription": "Initial and Final Pump Scope was chip pump (prediction=correct) for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
6 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was chip pump (prediction=correct) for all data types ( demand load,data,inst prefetch,inst fetch,xlate (I or d)"
7 },
8 {,
9 "EventCode": "0x1c050",
10 "EventName": "PM_DATA_CHIP_PUMP_CPRED",
11 "BriefDescription": "Initial and Final Pump Scope was chip pump (prediction=correct) for a demand load",
12 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was chip pump (prediction=correct) for a demand load"
13 },
14 {,
15 "EventCode": "0x4c04c",
16 "EventName": "PM_DATA_FROM_DMEM",
17 "BriefDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group (Distant) due to a demand load",
18 "PublicDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group (Distant) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
19 },
20 {,
21 "EventCode": "0x2c048",
22 "EventName": "PM_DATA_FROM_LMEM",
23 "BriefDescription": "The processor's data cache was reloaded from the local chip's Memory due to a demand load",
24 "PublicDescription": "The processor's data cache was reloaded from the local chip's Memory due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
25 },
26 {,
27 "EventCode": "0x2c04c",
28 "EventName": "PM_DATA_FROM_MEMORY",
29 "BriefDescription": "The processor's data cache was reloaded from a memory location including L4 from local remote or distant due to a demand load",
30 "PublicDescription": "The processor's data cache was reloaded from a memory location including L4 from local remote or distant due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
31 },
32 {,
33 "EventCode": "0x2c04a",
34 "EventName": "PM_DATA_FROM_RL4",
35 "BriefDescription": "The processor's data cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to a demand load",
36 "PublicDescription": "The processor's data cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
37 },
38 {,
39 "EventCode": "0x3c04a",
40 "EventName": "PM_DATA_FROM_RMEM",
41 "BriefDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to a demand load",
42 "PublicDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
43 },
44 {,
45 "EventCode": "0x2c050",
46 "EventName": "PM_DATA_GRP_PUMP_CPRED",
47 "BriefDescription": "Initial and Final Pump Scope was group pump (prediction=correct) for a demand load",
48 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was group pump for a demand load"
49 },
50 {,
51 "EventCode": "0x2c052",
52 "EventName": "PM_DATA_GRP_PUMP_MPRED",
53 "BriefDescription": "Final Pump Scope (Group) ended up either larger or smaller than Initial Pump Scope for a demand load",
54 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope OR Final Pump Scope(Group) got data from source that was at smaller scope(Chip) Final pump was group pump and initial pump was chip or final and initial pump was gro"
55 },
56 {,
57 "EventCode": "0x1c052",
58 "EventName": "PM_DATA_GRP_PUMP_MPRED_RTY",
59 "BriefDescription": "Final Pump Scope (Group) ended up larger than Initial Pump Scope (Chip) for a demand load",
60 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope (Chip) Final pump was group pump and initial pump was chip pumpfor a demand load"
61 },
62 {,
63 "EventCode": "0x1c054",
64 "EventName": "PM_DATA_PUMP_CPRED",
65 "BriefDescription": "Pump prediction correct. Counts across all types of pumps for a demand load",
66 "PublicDescription": ""
67 },
68 {,
69 "EventCode": "0x4c052",
70 "EventName": "PM_DATA_PUMP_MPRED",
71 "BriefDescription": "Pump misprediction. Counts across all types of pumps for a demand load",
72 "PublicDescription": "Pump Mis prediction Counts across all types of pumpsfor a demand load"
73 },
74 {,
75 "EventCode": "0x3c050",
76 "EventName": "PM_DATA_SYS_PUMP_CPRED",
77 "BriefDescription": "Initial and Final Pump Scope was system pump (prediction=correct) for a demand load",
78 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was system pump for a demand load"
79 },
80 {,
81 "EventCode": "0x3c052",
82 "EventName": "PM_DATA_SYS_PUMP_MPRED",
83 "BriefDescription": "Final Pump Scope (system) mispredicted. Either the original scope was too small (Chip/Group) or the original scope was System and it should have been smaller. Counts for a demand load",
84 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope(Chip/Group) OR Final Pump Scope(system) got data from source that was at smaller scope(Chip/group) Final pump was system pump and initial pump was chip or group or"
85 },
86 {,
87 "EventCode": "0x4c050",
88 "EventName": "PM_DATA_SYS_PUMP_MPRED_RTY",
89 "BriefDescription": "Final Pump Scope (system) ended up larger than Initial Pump Scope (Chip/Group) for a demand load",
90 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope (Chip or Group) for a demand load"
91 },
92 {,
93 "EventCode": "0x3e04c",
94 "EventName": "PM_DPTEG_FROM_DL4",
95 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's L4 on a different Node or Group (Distant) due to a data side request",
96 "PublicDescription": ""
97 },
98 {,
99 "EventCode": "0x4e04c",
100 "EventName": "PM_DPTEG_FROM_DMEM",
101 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's memory on the same Node or Group (Distant) due to a data side request",
102 "PublicDescription": ""
103 },
104 {,
105 "EventCode": "0x3e04a",
106 "EventName": "PM_DPTEG_FROM_RMEM",
107 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's memory on the same Node or Group ( Remote) due to a data side request",
108 "PublicDescription": ""
109 },
110 {,
111 "EventCode": "0x20050",
112 "EventName": "PM_GRP_PUMP_CPRED",
113 "BriefDescription": "Initial and Final Pump Scope and data sourced across this scope was group pump for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
114 "PublicDescription": ""
115 },
116 {,
117 "EventCode": "0x20052",
118 "EventName": "PM_GRP_PUMP_MPRED",
119 "BriefDescription": "Final Pump Scope (Group) ended up either larger or smaller than Initial Pump Scope for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
120 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope OR Final Pump Scope(Group) got data from source that was at smaller scope(Chip) Final pump was group pump and initial pump was chip or final and initial pump was gro"
121 },
122 {,
123 "EventCode": "0x10052",
124 "EventName": "PM_GRP_PUMP_MPRED_RTY",
125 "BriefDescription": "Final Pump Scope (Group) ended up larger than Initial Pump Scope (Chip) for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
126 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope (Chip) Final pump was group pump and initial pump was chip pumpfor all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
127 },
128 {,
129 "EventCode": "0x18082",
130 "EventName": "PM_L3_CO_MEPF",
131 "BriefDescription": "L3 CO of line in Mep state ( includes casthrough",
132 "PublicDescription": ""
133 },
134 {,
135 "EventCode": "0x4c058",
136 "EventName": "PM_MEM_CO",
137 "BriefDescription": "Memory castouts from this lpar",
138 "PublicDescription": ""
139 },
140 {,
141 "EventCode": "0x10058",
142 "EventName": "PM_MEM_LOC_THRESH_IFU",
143 "BriefDescription": "Local Memory above threshold for IFU speculation control",
144 "PublicDescription": ""
145 },
146 {,
147 "EventCode": "0x40056",
148 "EventName": "PM_MEM_LOC_THRESH_LSU_HIGH",
149 "BriefDescription": "Local memory above threshold for LSU medium",
150 "PublicDescription": ""
151 },
152 {,
153 "EventCode": "0x1c05e",
154 "EventName": "PM_MEM_LOC_THRESH_LSU_MED",
155 "BriefDescription": "Local memory above theshold for data prefetch",
156 "PublicDescription": ""
157 },
158 {,
159 "EventCode": "0x2c058",
160 "EventName": "PM_MEM_PREF",
161 "BriefDescription": "Memory prefetch for this lpar. Includes L4",
162 "PublicDescription": ""
163 },
164 {,
165 "EventCode": "0x10056",
166 "EventName": "PM_MEM_READ",
167 "BriefDescription": "Reads from Memory from this lpar (includes data/inst/xlate/l1prefetch/inst prefetch). Includes L4",
168 "PublicDescription": ""
169 },
170 {,
171 "EventCode": "0x3c05e",
172 "EventName": "PM_MEM_RWITM",
173 "BriefDescription": "Memory rwitm for this lpar",
174 "PublicDescription": ""
175 },
176 {,
177 "EventCode": "0x3006e",
178 "EventName": "PM_NEST_REF_CLK",
179 "BriefDescription": "Multiply by 4 to obtain the number of PB cycles",
180 "PublicDescription": "Nest reference clocks"
181 },
182 {,
183 "EventCode": "0x10054",
184 "EventName": "PM_PUMP_CPRED",
185 "BriefDescription": "Pump prediction correct. Counts across all types of pumps for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
186 "PublicDescription": "Pump prediction correct. Counts across all types of pumpsfor all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
187 },
188 {,
189 "EventCode": "0x40052",
190 "EventName": "PM_PUMP_MPRED",
191 "BriefDescription": "Pump misprediction. Counts across all types of pumps for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
192 "PublicDescription": "Pump Mis prediction Counts across all types of pumpsfor all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
193 },
194 {,
195 "EventCode": "0x30050",
196 "EventName": "PM_SYS_PUMP_CPRED",
197 "BriefDescription": "Initial and Final Pump Scope was system pump for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
198 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was system pump for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
199 },
200 {,
201 "EventCode": "0x30052",
202 "EventName": "PM_SYS_PUMP_MPRED",
203 "BriefDescription": "Final Pump Scope (system) mispredicted. Either the original scope was too small (Chip/Group) or the original scope was System and it should have been smaller. Counts for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
204 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope(Chip/Group) OR Final Pump Scope(system) got data from source that was at smaller scope(Chip/group) Final pump was system pump and initial pump was chip or group or"
205 },
206 {,
207 "EventCode": "0x40050",
208 "EventName": "PM_SYS_PUMP_MPRED_RTY",
209 "BriefDescription": "Final Pump Scope (system) ended up larger than Initial Pump Scope (Chip/Group) for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)",
210 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope (Chip or Group) for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
211 },
212]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/other.json b/tools/perf/pmu-events/arch/powerpc/power8/other.json
new file mode 100644
index 000000000000..704302c3e67d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/other.json
@@ -0,0 +1,4064 @@
1[
2 {,
3 "EventCode": "0x1f05e",
4 "EventName": "PM_1LPAR_CYC",
5 "BriefDescription": "Number of cycles in single lpar mode. All threads in the core are assigned to the same lpar",
6 "PublicDescription": ""
7 },
8 {,
9 "EventCode": "0x2006e",
10 "EventName": "PM_2LPAR_CYC",
11 "BriefDescription": "Cycles in 2-lpar mode. Threads 0-3 belong to Lpar0 and threads 4-7 belong to Lpar1",
12 "PublicDescription": "Number of cycles in 2 lpar mode"
13 },
14 {,
15 "EventCode": "0x4e05e",
16 "EventName": "PM_4LPAR_CYC",
17 "BriefDescription": "Number of cycles in 4 LPAR mode. Threads 0-1 belong to lpar0, threads 2-3 belong to lpar1, threads 4-5 belong to lpar2, and threads 6-7 belong to lpar3",
18 "PublicDescription": ""
19 },
20 {,
21 "EventCode": "0x610050",
22 "EventName": "PM_ALL_CHIP_PUMP_CPRED",
23 "BriefDescription": "Initial and Final Pump Scope was chip pump (prediction=correct) for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
24 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was chip pump (prediction=correct) for all data types ( demand load,data,inst prefetch,inst fetch,xlate (I or d)"
25 },
26 {,
27 "EventCode": "0x520050",
28 "EventName": "PM_ALL_GRP_PUMP_CPRED",
29 "BriefDescription": "Initial and Final Pump Scope and data sourced across this scope was group pump for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
30 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was group pump for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
31 },
32 {,
33 "EventCode": "0x620052",
34 "EventName": "PM_ALL_GRP_PUMP_MPRED",
35 "BriefDescription": "Final Pump Scope (Group) ended up either larger or smaller than Initial Pump Scope for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
36 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope OR Final Pump Scope(Group) got data from source that was at smaller scope(Chip) Final pump was group pump and initial pump was chip or final and initial pump was gro"
37 },
38 {,
39 "EventCode": "0x610052",
40 "EventName": "PM_ALL_GRP_PUMP_MPRED_RTY",
41 "BriefDescription": "Final Pump Scope (Group) ended up larger than Initial Pump Scope (Chip) for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
42 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope (Chip) Final pump was group pump and initial pump was chip pumpfor all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
43 },
44 {,
45 "EventCode": "0x610054",
46 "EventName": "PM_ALL_PUMP_CPRED",
47 "BriefDescription": "Pump prediction correct. Counts across all types of pumps for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
48 "PublicDescription": "Pump prediction correct. Counts across all types of pumpsfor all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
49 },
50 {,
51 "EventCode": "0x640052",
52 "EventName": "PM_ALL_PUMP_MPRED",
53 "BriefDescription": "Pump misprediction. Counts across all types of pumps for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
54 "PublicDescription": "Pump Mis prediction Counts across all types of pumpsfor all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
55 },
56 {,
57 "EventCode": "0x630050",
58 "EventName": "PM_ALL_SYS_PUMP_CPRED",
59 "BriefDescription": "Initial and Final Pump Scope was system pump for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
60 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was system pump for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
61 },
62 {,
63 "EventCode": "0x630052",
64 "EventName": "PM_ALL_SYS_PUMP_MPRED",
65 "BriefDescription": "Final Pump Scope (system) mispredicted. Either the original scope was too small (Chip/Group) or the original scope was System and it should have been smaller. Counts for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
66 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope(Chip/Group) OR Final Pump Scope(system) got data from source that was at smaller scope(Chip/group) Final pump was system pump and initial pump was chip or group or"
67 },
68 {,
69 "EventCode": "0x640050",
70 "EventName": "PM_ALL_SYS_PUMP_MPRED_RTY",
71 "BriefDescription": "Final Pump Scope (system) ended up larger than Initial Pump Scope (Chip/Group) for all data types (demand load,data prefetch,inst prefetch,inst fetch,xlate)",
72 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope (Chip or Group) for all data types excluding data prefetch (demand load,inst prefetch,inst fetch,xlate)"
73 },
74 {,
75 "EventCode": "0x4082",
76 "EventName": "PM_BANK_CONFLICT",
77 "BriefDescription": "Read blocked due to interleave conflict. The ifar logic will detect an interleave conflict and kill the data that was read that cycle",
78 "PublicDescription": ""
79 },
80 {,
81 "EventCode": "0x5086",
82 "EventName": "PM_BR_BC_8",
83 "BriefDescription": "Pairable BC+8 branch that has not been converted to a Resolve Finished in the BRU pipeline",
84 "PublicDescription": ""
85 },
86 {,
87 "EventCode": "0x5084",
88 "EventName": "PM_BR_BC_8_CONV",
89 "BriefDescription": "Pairable BC+8 branch that was converted to a Resolve Finished in the BRU pipeline",
90 "PublicDescription": ""
91 },
92 {,
93 "EventCode": "0x40ac",
94 "EventName": "PM_BR_MPRED_CCACHE",
95 "BriefDescription": "Conditional Branch Completed that was Mispredicted due to the Count Cache Target Prediction",
96 "PublicDescription": ""
97 },
98 {,
99 "EventCode": "0x40b8",
100 "EventName": "PM_BR_MPRED_CR",
101 "BriefDescription": "Conditional Branch Completed that was Mispredicted due to the BHT Direction Prediction (taken/not taken)",
102 "PublicDescription": ""
103 },
104 {,
105 "EventCode": "0x40ae",
106 "EventName": "PM_BR_MPRED_LSTACK",
107 "BriefDescription": "Conditional Branch Completed that was Mispredicted due to the Link Stack Target Prediction",
108 "PublicDescription": ""
109 },
110 {,
111 "EventCode": "0x40ba",
112 "EventName": "PM_BR_MPRED_TA",
113 "BriefDescription": "Conditional Branch Completed that was Mispredicted due to the Target Address Prediction from the Count Cache or Link Stack. Only XL-form branches that resolved Taken set this event",
114 "PublicDescription": ""
115 },
116 {,
117 "EventCode": "0x10138",
118 "EventName": "PM_BR_MRK_2PATH",
119 "BriefDescription": "marked two path branch",
120 "PublicDescription": ""
121 },
122 {,
123 "EventCode": "0x409c",
124 "EventName": "PM_BR_PRED_BR0",
125 "BriefDescription": "Conditional Branch Completed on BR0 (1st branch in group) in which the HW predicted the Direction or Target",
126 "PublicDescription": ""
127 },
128 {,
129 "EventCode": "0x409e",
130 "EventName": "PM_BR_PRED_BR1",
131 "BriefDescription": "Conditional Branch Completed on BR1 (2nd branch in group) in which the HW predicted the Direction or Target. Note: BR1 can only be used in Single Thread Mode. In all of the SMT modes, only one branch can complete, thus BR1 is unused",
132 "PublicDescription": ""
133 },
134 {,
135 "EventCode": "0x489c",
136 "EventName": "PM_BR_PRED_BR_CMPL",
137 "BriefDescription": "Completion Time Event. This event can also be calculated from the direct bus as follows: if_pc_br0_br_pred(0) OR if_pc_br0_br_pred(1)",
138 "PublicDescription": "IFU"
139 },
140 {,
141 "EventCode": "0x40a4",
142 "EventName": "PM_BR_PRED_CCACHE_BR0",
143 "BriefDescription": "Conditional Branch Completed on BR0 that used the Count Cache for Target Prediction",
144 "PublicDescription": ""
145 },
146 {,
147 "EventCode": "0x40a6",
148 "EventName": "PM_BR_PRED_CCACHE_BR1",
149 "BriefDescription": "Conditional Branch Completed on BR1 that used the Count Cache for Target Prediction",
150 "PublicDescription": ""
151 },
152 {,
153 "EventCode": "0x48a4",
154 "EventName": "PM_BR_PRED_CCACHE_CMPL",
155 "BriefDescription": "Completion Time Event. This event can also be calculated from the direct bus as follows: if_pc_br0_br_pred(0) AND if_pc_br0_pred_type",
156 "PublicDescription": "IFU"
157 },
158 {,
159 "EventCode": "0x40b0",
160 "EventName": "PM_BR_PRED_CR_BR0",
161 "BriefDescription": "Conditional Branch Completed on BR0 that had its direction predicted. I-form branches do not set this event. In addition, B-form branches which do not use the BHT do not set this event - these are branches with BO-field set to 'always taken' and branches",
162 "PublicDescription": ""
163 },
164 {,
165 "EventCode": "0x40b2",
166 "EventName": "PM_BR_PRED_CR_BR1",
167 "BriefDescription": "Conditional Branch Completed on BR1 that had its direction predicted. I-form branches do not set this event. In addition, B-form branches which do not use the BHT do not set this event - these are branches with BO-field set to 'always taken' and branches",
168 "PublicDescription": ""
169 },
170 {,
171 "EventCode": "0x48b0",
172 "EventName": "PM_BR_PRED_CR_CMPL",
173 "BriefDescription": "Completion Time Event. This event can also be calculated from the direct bus as follows: if_pc_br0_br_pred(1)='1'",
174 "PublicDescription": "IFU"
175 },
176 {,
177 "EventCode": "0x40a8",
178 "EventName": "PM_BR_PRED_LSTACK_BR0",
179 "BriefDescription": "Conditional Branch Completed on BR0 that used the Link Stack for Target Prediction",
180 "PublicDescription": ""
181 },
182 {,
183 "EventCode": "0x40aa",
184 "EventName": "PM_BR_PRED_LSTACK_BR1",
185 "BriefDescription": "Conditional Branch Completed on BR1 that used the Link Stack for Target Prediction",
186 "PublicDescription": ""
187 },
188 {,
189 "EventCode": "0x48a8",
190 "EventName": "PM_BR_PRED_LSTACK_CMPL",
191 "BriefDescription": "Completion Time Event. This event can also be calculated from the direct bus as follows: if_pc_br0_br_pred(0) AND (not if_pc_br0_pred_type)",
192 "PublicDescription": "IFU"
193 },
194 {,
195 "EventCode": "0x40b4",
196 "EventName": "PM_BR_PRED_TA_BR0",
197 "BriefDescription": "Conditional Branch Completed on BR0 that had its target address predicted. Only XL-form branches set this event",
198 "PublicDescription": ""
199 },
200 {,
201 "EventCode": "0x40b6",
202 "EventName": "PM_BR_PRED_TA_BR1",
203 "BriefDescription": "Conditional Branch Completed on BR1 that had its target address predicted. Only XL-form branches set this event",
204 "PublicDescription": ""
205 },
206 {,
207 "EventCode": "0x48b4",
208 "EventName": "PM_BR_PRED_TA_CMPL",
209 "BriefDescription": "Completion Time Event. This event can also be calculated from the direct bus as follows: if_pc_br0_br_pred(0)='1'",
210 "PublicDescription": "IFU"
211 },
212 {,
213 "EventCode": "0x40a0",
214 "EventName": "PM_BR_UNCOND_BR0",
215 "BriefDescription": "Unconditional Branch Completed on BR0. HW branch prediction was not used for this branch. This can be an I-form branch, a B-form branch with BO-field set to branch always, or a B-form branch which was coverted to a Resolve",
216 "PublicDescription": ""
217 },
218 {,
219 "EventCode": "0x40a2",
220 "EventName": "PM_BR_UNCOND_BR1",
221 "BriefDescription": "Unconditional Branch Completed on BR1. HW branch prediction was not used for this branch. This can be an I-form branch, a B-form branch with BO-field set to branch always, or a B-form branch which was coverted to a Resolve",
222 "PublicDescription": ""
223 },
224 {,
225 "EventCode": "0x48a0",
226 "EventName": "PM_BR_UNCOND_CMPL",
227 "BriefDescription": "Completion Time Event. This event can also be calculated from the direct bus as follows: if_pc_br0_br_pred=00 AND if_pc_br0_completed",
228 "PublicDescription": "IFU"
229 },
230 {,
231 "EventCode": "0x3094",
232 "EventName": "PM_CASTOUT_ISSUED",
233 "BriefDescription": "Castouts issued",
234 "PublicDescription": ""
235 },
236 {,
237 "EventCode": "0x3096",
238 "EventName": "PM_CASTOUT_ISSUED_GPR",
239 "BriefDescription": "Castouts issued GPR",
240 "PublicDescription": ""
241 },
242 {,
243 "EventCode": "0x2090",
244 "EventName": "PM_CLB_HELD",
245 "BriefDescription": "CLB Hold: Any Reason",
246 "PublicDescription": ""
247 },
248 {,
249 "EventCode": "0x2d018",
250 "EventName": "PM_CMPLU_STALL_BRU_CRU",
251 "BriefDescription": "Completion stall due to IFU",
252 "PublicDescription": ""
253 },
254 {,
255 "EventCode": "0x30026",
256 "EventName": "PM_CMPLU_STALL_COQ_FULL",
257 "BriefDescription": "Completion stall due to CO q full",
258 "PublicDescription": ""
259 },
260 {,
261 "EventCode": "0x30038",
262 "EventName": "PM_CMPLU_STALL_FLUSH",
263 "BriefDescription": "completion stall due to flush by own thread",
264 "PublicDescription": ""
265 },
266 {,
267 "EventCode": "0x30028",
268 "EventName": "PM_CMPLU_STALL_MEM_ECC_DELAY",
269 "BriefDescription": "Completion stall due to mem ECC delay",
270 "PublicDescription": ""
271 },
272 {,
273 "EventCode": "0x2e01c",
274 "EventName": "PM_CMPLU_STALL_NO_NTF",
275 "BriefDescription": "Completion stall due to nop",
276 "PublicDescription": ""
277 },
278 {,
279 "EventCode": "0x2e01e",
280 "EventName": "PM_CMPLU_STALL_NTCG_FLUSH",
281 "BriefDescription": "Completion stall due to ntcg flush",
282 "PublicDescription": "Completion stall due to reject (load hit store)"
283 },
284 {,
285 "EventCode": "0x4c010",
286 "EventName": "PM_CMPLU_STALL_REJECT",
287 "BriefDescription": "Completion stall due to LSU reject",
288 "PublicDescription": ""
289 },
290 {,
291 "EventCode": "0x2c01a",
292 "EventName": "PM_CMPLU_STALL_REJECT_LHS",
293 "BriefDescription": "Completion stall due to reject (load hit store)",
294 "PublicDescription": ""
295 },
296 {,
297 "EventCode": "0x4c014",
298 "EventName": "PM_CMPLU_STALL_REJ_LMQ_FULL",
299 "BriefDescription": "Completion stall due to LSU reject LMQ full",
300 "PublicDescription": ""
301 },
302 {,
303 "EventCode": "0x4d010",
304 "EventName": "PM_CMPLU_STALL_SCALAR",
305 "BriefDescription": "Completion stall due to VSU scalar instruction",
306 "PublicDescription": ""
307 },
308 {,
309 "EventCode": "0x2d010",
310 "EventName": "PM_CMPLU_STALL_SCALAR_LONG",
311 "BriefDescription": "Completion stall due to VSU scalar long latency instruction",
312 "PublicDescription": ""
313 },
314 {,
315 "EventCode": "0x2c014",
316 "EventName": "PM_CMPLU_STALL_STORE",
317 "BriefDescription": "Completion stall by stores this includes store agen finishes in pipe LS0/LS1 and store data finishes in LS2/LS3",
318 "PublicDescription": ""
319 },
320 {,
321 "EventCode": "0x2d014",
322 "EventName": "PM_CMPLU_STALL_VECTOR",
323 "BriefDescription": "Completion stall due to VSU vector instruction",
324 "PublicDescription": ""
325 },
326 {,
327 "EventCode": "0x4d012",
328 "EventName": "PM_CMPLU_STALL_VECTOR_LONG",
329 "BriefDescription": "Completion stall due to VSU vector long instruction",
330 "PublicDescription": ""
331 },
332 {,
333 "EventCode": "0x2d012",
334 "EventName": "PM_CMPLU_STALL_VSU",
335 "BriefDescription": "Completion stall due to VSU instruction",
336 "PublicDescription": ""
337 },
338 {,
339 "EventCode": "0x16083",
340 "EventName": "PM_CO0_ALLOC",
341 "BriefDescription": "CO mach 0 Busy. Used by PMU to sample ave RC livetime(mach0 used as sample point)",
342 "PublicDescription": "0.0"
343 },
344 {,
345 "EventCode": "0x16082",
346 "EventName": "PM_CO0_BUSY",
347 "BriefDescription": "CO mach 0 Busy. Used by PMU to sample ave RC livetime(mach0 used as sample point)",
348 "PublicDescription": ""
349 },
350 {,
351 "EventCode": "0x517082",
352 "EventName": "PM_CO_DISP_FAIL",
353 "BriefDescription": "CO dispatch failed due to all CO machines being busy",
354 "PublicDescription": ""
355 },
356 {,
357 "EventCode": "0x527084",
358 "EventName": "PM_CO_TM_SC_FOOTPRINT",
359 "BriefDescription": "L2 did a cleanifdirty CO to the L3 (ie created an SC line in the L3)",
360 "PublicDescription": ""
361 },
362 {,
363 "EventCode": "0x3608a",
364 "EventName": "PM_CO_USAGE",
365 "BriefDescription": "Continuous 16 cycle(2to1) window where this signals rotates thru sampling each L2 CO machine busy. PMU uses this wave to then do 16 cyc count to sample total number of machs running",
366 "PublicDescription": ""
367 },
368 {,
369 "EventCode": "0x40066",
370 "EventName": "PM_CRU_FIN",
371 "BriefDescription": "IFU Finished a (non-branch) instruction",
372 "PublicDescription": ""
373 },
374 {,
375 "EventCode": "0x61c050",
376 "EventName": "PM_DATA_ALL_CHIP_PUMP_CPRED",
377 "BriefDescription": "Initial and Final Pump Scope was chip pump (prediction=correct) for either demand loads or data prefetch",
378 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was chip pump (prediction=correct) for a demand load"
379 },
380 {,
381 "EventCode": "0x64c048",
382 "EventName": "PM_DATA_ALL_FROM_DL2L3_MOD",
383 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either demand loads or data prefetch",
384 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
385 },
386 {,
387 "EventCode": "0x63c048",
388 "EventName": "PM_DATA_ALL_FROM_DL2L3_SHR",
389 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either demand loads or data prefetch",
390 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
391 },
392 {,
393 "EventCode": "0x63c04c",
394 "EventName": "PM_DATA_ALL_FROM_DL4",
395 "BriefDescription": "The processor's data cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to either demand loads or data prefetch",
396 "PublicDescription": "The processor's data cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
397 },
398 {,
399 "EventCode": "0x64c04c",
400 "EventName": "PM_DATA_ALL_FROM_DMEM",
401 "BriefDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group (Distant) due to either demand loads or data prefetch",
402 "PublicDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group (Distant) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
403 },
404 {,
405 "EventCode": "0x61c042",
406 "EventName": "PM_DATA_ALL_FROM_L2",
407 "BriefDescription": "The processor's data cache was reloaded from local core's L2 due to either demand loads or data prefetch",
408 "PublicDescription": "The processor's data cache was reloaded from local core's L2 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
409 },
410 {,
411 "EventCode": "0x64c046",
412 "EventName": "PM_DATA_ALL_FROM_L21_MOD",
413 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L2 on the same chip due to either demand loads or data prefetch",
414 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L2 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
415 },
416 {,
417 "EventCode": "0x63c046",
418 "EventName": "PM_DATA_ALL_FROM_L21_SHR",
419 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L2 on the same chip due to either demand loads or data prefetch",
420 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L2 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
421 },
422 {,
423 "EventCode": "0x61c04e",
424 "EventName": "PM_DATA_ALL_FROM_L2MISS_MOD",
425 "BriefDescription": "The processor's data cache was reloaded from a localtion other than the local core's L2 due to either demand loads or data prefetch",
426 "PublicDescription": "The processor's data cache was reloaded from a localtion other than the local core's L2 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
427 },
428 {,
429 "EventCode": "0x63c040",
430 "EventName": "PM_DATA_ALL_FROM_L2_DISP_CONFLICT_LDHITST",
431 "BriefDescription": "The processor's data cache was reloaded from local core's L2 with load hit store conflict due to either demand loads or data prefetch",
432 "PublicDescription": "The processor's data cache was reloaded from local core's L2 with load hit store conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
433 },
434 {,
435 "EventCode": "0x64c040",
436 "EventName": "PM_DATA_ALL_FROM_L2_DISP_CONFLICT_OTHER",
437 "BriefDescription": "The processor's data cache was reloaded from local core's L2 with dispatch conflict due to either demand loads or data prefetch",
438 "PublicDescription": "The processor's data cache was reloaded from local core's L2 with dispatch conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
439 },
440 {,
441 "EventCode": "0x62c040",
442 "EventName": "PM_DATA_ALL_FROM_L2_MEPF",
443 "BriefDescription": "The processor's data cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state due to either demand loads or data prefetch",
444 "PublicDescription": "The processor's data cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
445 },
446 {,
447 "EventCode": "0x61c040",
448 "EventName": "PM_DATA_ALL_FROM_L2_NO_CONFLICT",
449 "BriefDescription": "The processor's data cache was reloaded from local core's L2 without conflict due to either demand loads or data prefetch",
450 "PublicDescription": "The processor's data cache was reloaded from local core's L2 without conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
451 },
452 {,
453 "EventCode": "0x64c042",
454 "EventName": "PM_DATA_ALL_FROM_L3",
455 "BriefDescription": "The processor's data cache was reloaded from local core's L3 due to either demand loads or data prefetch",
456 "PublicDescription": "The processor's data cache was reloaded from local core's L3 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
457 },
458 {,
459 "EventCode": "0x64c044",
460 "EventName": "PM_DATA_ALL_FROM_L31_ECO_MOD",
461 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to either demand loads or data prefetch",
462 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
463 },
464 {,
465 "EventCode": "0x63c044",
466 "EventName": "PM_DATA_ALL_FROM_L31_ECO_SHR",
467 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to either demand loads or data prefetch",
468 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
469 },
470 {,
471 "EventCode": "0x62c044",
472 "EventName": "PM_DATA_ALL_FROM_L31_MOD",
473 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L3 on the same chip due to either demand loads or data prefetch",
474 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
475 },
476 {,
477 "EventCode": "0x61c046",
478 "EventName": "PM_DATA_ALL_FROM_L31_SHR",
479 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L3 on the same chip due to either demand loads or data prefetch",
480 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
481 },
482 {,
483 "EventCode": "0x64c04e",
484 "EventName": "PM_DATA_ALL_FROM_L3MISS_MOD",
485 "BriefDescription": "The processor's data cache was reloaded from a localtion other than the local core's L3 due to either demand loads or data prefetch",
486 "PublicDescription": "The processor's data cache was reloaded from a localtion other than the local core's L3 due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
487 },
488 {,
489 "EventCode": "0x63c042",
490 "EventName": "PM_DATA_ALL_FROM_L3_DISP_CONFLICT",
491 "BriefDescription": "The processor's data cache was reloaded from local core's L3 with dispatch conflict due to either demand loads or data prefetch",
492 "PublicDescription": "The processor's data cache was reloaded from local core's L3 with dispatch conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
493 },
494 {,
495 "EventCode": "0x62c042",
496 "EventName": "PM_DATA_ALL_FROM_L3_MEPF",
497 "BriefDescription": "The processor's data cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state due to either demand loads or data prefetch",
498 "PublicDescription": "The processor's data cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
499 },
500 {,
501 "EventCode": "0x61c044",
502 "EventName": "PM_DATA_ALL_FROM_L3_NO_CONFLICT",
503 "BriefDescription": "The processor's data cache was reloaded from local core's L3 without conflict due to either demand loads or data prefetch",
504 "PublicDescription": "The processor's data cache was reloaded from local core's L3 without conflict due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
505 },
506 {,
507 "EventCode": "0x61c04c",
508 "EventName": "PM_DATA_ALL_FROM_LL4",
509 "BriefDescription": "The processor's data cache was reloaded from the local chip's L4 cache due to either demand loads or data prefetch",
510 "PublicDescription": "The processor's data cache was reloaded from the local chip's L4 cache due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
511 },
512 {,
513 "EventCode": "0x62c048",
514 "EventName": "PM_DATA_ALL_FROM_LMEM",
515 "BriefDescription": "The processor's data cache was reloaded from the local chip's Memory due to either demand loads or data prefetch",
516 "PublicDescription": "The processor's data cache was reloaded from the local chip's Memory due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
517 },
518 {,
519 "EventCode": "0x62c04c",
520 "EventName": "PM_DATA_ALL_FROM_MEMORY",
521 "BriefDescription": "The processor's data cache was reloaded from a memory location including L4 from local remote or distant due to either demand loads or data prefetch",
522 "PublicDescription": "The processor's data cache was reloaded from a memory location including L4 from local remote or distant due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
523 },
524 {,
525 "EventCode": "0x64c04a",
526 "EventName": "PM_DATA_ALL_FROM_OFF_CHIP_CACHE",
527 "BriefDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to either demand loads or data prefetch",
528 "PublicDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
529 },
530 {,
531 "EventCode": "0x61c048",
532 "EventName": "PM_DATA_ALL_FROM_ON_CHIP_CACHE",
533 "BriefDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to either demand loads or data prefetch",
534 "PublicDescription": "The processor's data cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
535 },
536 {,
537 "EventCode": "0x62c046",
538 "EventName": "PM_DATA_ALL_FROM_RL2L3_MOD",
539 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either demand loads or data prefetch",
540 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
541 },
542 {,
543 "EventCode": "0x61c04a",
544 "EventName": "PM_DATA_ALL_FROM_RL2L3_SHR",
545 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either demand loads or data prefetch",
546 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
547 },
548 {,
549 "EventCode": "0x62c04a",
550 "EventName": "PM_DATA_ALL_FROM_RL4",
551 "BriefDescription": "The processor's data cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to either demand loads or data prefetch",
552 "PublicDescription": "The processor's data cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
553 },
554 {,
555 "EventCode": "0x63c04a",
556 "EventName": "PM_DATA_ALL_FROM_RMEM",
557 "BriefDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to either demand loads or data prefetch",
558 "PublicDescription": "The processor's data cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
559 },
560 {,
561 "EventCode": "0x62c050",
562 "EventName": "PM_DATA_ALL_GRP_PUMP_CPRED",
563 "BriefDescription": "Initial and Final Pump Scope was group pump (prediction=correct) for either demand loads or data prefetch",
564 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was group pump for a demand load"
565 },
566 {,
567 "EventCode": "0x62c052",
568 "EventName": "PM_DATA_ALL_GRP_PUMP_MPRED",
569 "BriefDescription": "Final Pump Scope (Group) ended up either larger or smaller than Initial Pump Scope for either demand loads or data prefetch",
570 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope OR Final Pump Scope(Group) got data from source that was at smaller scope(Chip) Final pump was group pump and initial pump was chip or final and initial pump was gro"
571 },
572 {,
573 "EventCode": "0x61c052",
574 "EventName": "PM_DATA_ALL_GRP_PUMP_MPRED_RTY",
575 "BriefDescription": "Final Pump Scope (Group) ended up larger than Initial Pump Scope (Chip) for either demand loads or data prefetch",
576 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope (Chip) Final pump was group pump and initial pump was chip pumpfor a demand load"
577 },
578 {,
579 "EventCode": "0x61c054",
580 "EventName": "PM_DATA_ALL_PUMP_CPRED",
581 "BriefDescription": "Pump prediction correct. Counts across all types of pumps for either demand loads or data prefetch",
582 "PublicDescription": "Pump prediction correct. Counts across all types of pumps for a demand load"
583 },
584 {,
585 "EventCode": "0x64c052",
586 "EventName": "PM_DATA_ALL_PUMP_MPRED",
587 "BriefDescription": "Pump misprediction. Counts across all types of pumps for either demand loads or data prefetch",
588 "PublicDescription": "Pump Mis prediction Counts across all types of pumpsfor a demand load"
589 },
590 {,
591 "EventCode": "0x63c050",
592 "EventName": "PM_DATA_ALL_SYS_PUMP_CPRED",
593 "BriefDescription": "Initial and Final Pump Scope was system pump (prediction=correct) for either demand loads or data prefetch",
594 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was system pump for a demand load"
595 },
596 {,
597 "EventCode": "0x63c052",
598 "EventName": "PM_DATA_ALL_SYS_PUMP_MPRED",
599 "BriefDescription": "Final Pump Scope (system) mispredicted. Either the original scope was too small (Chip/Group) or the original scope was System and it should have been smaller. Counts for either demand loads or data prefetch",
600 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope(Chip/Group) OR Final Pump Scope(system) got data from source that was at smaller scope(Chip/group) Final pump was system pump and initial pump was chip or group or"
601 },
602 {,
603 "EventCode": "0x64c050",
604 "EventName": "PM_DATA_ALL_SYS_PUMP_MPRED_RTY",
605 "BriefDescription": "Final Pump Scope (system) ended up larger than Initial Pump Scope (Chip/Group) for either demand loads or data prefetch",
606 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope (Chip or Group) for a demand load"
607 },
608 {,
609 "EventCode": "0x4c046",
610 "EventName": "PM_DATA_FROM_L21_MOD",
611 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L2 on the same chip due to a demand load",
612 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L2 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
613 },
614 {,
615 "EventCode": "0x3c046",
616 "EventName": "PM_DATA_FROM_L21_SHR",
617 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L2 on the same chip due to a demand load",
618 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L2 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
619 },
620 {,
621 "EventCode": "0x4c044",
622 "EventName": "PM_DATA_FROM_L31_ECO_MOD",
623 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to a demand load",
624 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
625 },
626 {,
627 "EventCode": "0x3c044",
628 "EventName": "PM_DATA_FROM_L31_ECO_SHR",
629 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to a demand load",
630 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
631 },
632 {,
633 "EventCode": "0x2c044",
634 "EventName": "PM_DATA_FROM_L31_MOD",
635 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L3 on the same chip due to a demand load",
636 "PublicDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
637 },
638 {,
639 "EventCode": "0x1c046",
640 "EventName": "PM_DATA_FROM_L31_SHR",
641 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L3 on the same chip due to a demand load",
642 "PublicDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L3 on the same chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1"
643 },
644 {,
645 "EventCode": "0x400fe",
646 "EventName": "PM_DATA_FROM_MEM",
647 "BriefDescription": "The processor's data cache was reloaded from a memory location including L4 from local remote or distant due to a demand load",
648 "PublicDescription": "Data cache reload from memory (including L4)"
649 },
650 {,
651 "EventCode": "0xe0bc",
652 "EventName": "PM_DC_COLLISIONS",
653 "BriefDescription": "DATA Cache collisions",
654 "PublicDescription": "DATA Cache collisions42"
655 },
656 {,
657 "EventCode": "0x1e050",
658 "EventName": "PM_DC_PREF_STREAM_ALLOC",
659 "BriefDescription": "Stream marked valid. The stream could have been allocated through the hardware prefetch mechanism or through software. This is combined ls0 and ls1",
660 "PublicDescription": ""
661 },
662 {,
663 "EventCode": "0x2e050",
664 "EventName": "PM_DC_PREF_STREAM_CONF",
665 "BriefDescription": "A demand load referenced a line in an active prefetch stream. The stream could have been allocated through the hardware prefetch mechanism or through software. Combine up + down",
666 "PublicDescription": ""
667 },
668 {,
669 "EventCode": "0x4e050",
670 "EventName": "PM_DC_PREF_STREAM_FUZZY_CONF",
671 "BriefDescription": "A demand load referenced a line in an active fuzzy prefetch stream. The stream could have been allocated through the hardware prefetch mechanism or through software.Fuzzy stream confirm (out of order effects, or pf cant keep up)",
672 "PublicDescription": ""
673 },
674 {,
675 "EventCode": "0x3e050",
676 "EventName": "PM_DC_PREF_STREAM_STRIDED_CONF",
677 "BriefDescription": "A demand load referenced a line in an active strided prefetch stream. The stream could have been allocated through the hardware prefetch mechanism or through software",
678 "PublicDescription": ""
679 },
680 {,
681 "EventCode": "0xb0ba",
682 "EventName": "PM_DFU",
683 "BriefDescription": "Finish DFU (all finish)",
684 "PublicDescription": ""
685 },
686 {,
687 "EventCode": "0xb0be",
688 "EventName": "PM_DFU_DCFFIX",
689 "BriefDescription": "Convert from fixed opcode finish (dcffix,dcffixq)",
690 "PublicDescription": ""
691 },
692 {,
693 "EventCode": "0xb0bc",
694 "EventName": "PM_DFU_DENBCD",
695 "BriefDescription": "BCD->DPD opcode finish (denbcd, denbcdq)",
696 "PublicDescription": ""
697 },
698 {,
699 "EventCode": "0xb0b8",
700 "EventName": "PM_DFU_MC",
701 "BriefDescription": "Finish DFU multicycle",
702 "PublicDescription": ""
703 },
704 {,
705 "EventCode": "0x2092",
706 "EventName": "PM_DISP_CLB_HELD_BAL",
707 "BriefDescription": "Dispatch/CLB Hold: Balance",
708 "PublicDescription": ""
709 },
710 {,
711 "EventCode": "0x2094",
712 "EventName": "PM_DISP_CLB_HELD_RES",
713 "BriefDescription": "Dispatch/CLB Hold: Resource",
714 "PublicDescription": ""
715 },
716 {,
717 "EventCode": "0x20a8",
718 "EventName": "PM_DISP_CLB_HELD_SB",
719 "BriefDescription": "Dispatch/CLB Hold: Scoreboard",
720 "PublicDescription": ""
721 },
722 {,
723 "EventCode": "0x2098",
724 "EventName": "PM_DISP_CLB_HELD_SYNC",
725 "BriefDescription": "Dispatch/CLB Hold: Sync type instruction",
726 "PublicDescription": ""
727 },
728 {,
729 "EventCode": "0x2096",
730 "EventName": "PM_DISP_CLB_HELD_TLBIE",
731 "BriefDescription": "Dispatch Hold: Due to TLBIE",
732 "PublicDescription": ""
733 },
734 {,
735 "EventCode": "0x20006",
736 "EventName": "PM_DISP_HELD_IQ_FULL",
737 "BriefDescription": "Dispatch held due to Issue q full",
738 "PublicDescription": ""
739 },
740 {,
741 "EventCode": "0x1002a",
742 "EventName": "PM_DISP_HELD_MAP_FULL",
743 "BriefDescription": "Dispatch for this thread was held because the Mappers were full",
744 "PublicDescription": "Dispatch held due to Mapper full"
745 },
746 {,
747 "EventCode": "0x30018",
748 "EventName": "PM_DISP_HELD_SRQ_FULL",
749 "BriefDescription": "Dispatch held due SRQ no room",
750 "PublicDescription": ""
751 },
752 {,
753 "EventCode": "0x30a6",
754 "EventName": "PM_DISP_HOLD_GCT_FULL",
755 "BriefDescription": "Dispatch Hold Due to no space in the GCT",
756 "PublicDescription": ""
757 },
758 {,
759 "EventCode": "0x30008",
760 "EventName": "PM_DISP_WT",
761 "BriefDescription": "Dispatched Starved",
762 "PublicDescription": "Dispatched Starved (not held, nothing to dispatch)"
763 },
764 {,
765 "EventCode": "0x4e046",
766 "EventName": "PM_DPTEG_FROM_L21_MOD",
767 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's L2 on the same chip due to a data side request",
768 "PublicDescription": ""
769 },
770 {,
771 "EventCode": "0x3e046",
772 "EventName": "PM_DPTEG_FROM_L21_SHR",
773 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's L2 on the same chip due to a data side request",
774 "PublicDescription": ""
775 },
776 {,
777 "EventCode": "0x3e040",
778 "EventName": "PM_DPTEG_FROM_L2_DISP_CONFLICT_LDHITST",
779 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 with load hit store conflict due to a data side request",
780 "PublicDescription": ""
781 },
782 {,
783 "EventCode": "0x4e040",
784 "EventName": "PM_DPTEG_FROM_L2_DISP_CONFLICT_OTHER",
785 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 with dispatch conflict due to a data side request",
786 "PublicDescription": ""
787 },
788 {,
789 "EventCode": "0x4e044",
790 "EventName": "PM_DPTEG_FROM_L31_ECO_MOD",
791 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's ECO L3 on the same chip due to a data side request",
792 "PublicDescription": ""
793 },
794 {,
795 "EventCode": "0x3e044",
796 "EventName": "PM_DPTEG_FROM_L31_ECO_SHR",
797 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's ECO L3 on the same chip due to a data side request",
798 "PublicDescription": ""
799 },
800 {,
801 "EventCode": "0x2e044",
802 "EventName": "PM_DPTEG_FROM_L31_MOD",
803 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's L3 on the same chip due to a data side request",
804 "PublicDescription": ""
805 },
806 {,
807 "EventCode": "0x1e046",
808 "EventName": "PM_DPTEG_FROM_L31_SHR",
809 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's L3 on the same chip due to a data side request",
810 "PublicDescription": ""
811 },
812 {,
813 "EventCode": "0x50a8",
814 "EventName": "PM_EAT_FORCE_MISPRED",
815 "BriefDescription": "XL-form branch was mispredicted due to the predicted target address missing from EAT. The EAT forces a mispredict in this case since there is no predicated target to validate. This is a rare case that may occur when the EAT is full and a branch is issue",
816 "PublicDescription": ""
817 },
818 {,
819 "EventCode": "0x4084",
820 "EventName": "PM_EAT_FULL_CYC",
821 "BriefDescription": "Cycles No room in EAT",
822 "PublicDescription": "Cycles No room in EATSet on bank conflict and case where no ibuffers available"
823 },
824 {,
825 "EventCode": "0x2080",
826 "EventName": "PM_EE_OFF_EXT_INT",
827 "BriefDescription": "Ee off and external interrupt",
828 "PublicDescription": ""
829 },
830 {,
831 "EventCode": "0x20b4",
832 "EventName": "PM_FAV_TBEGIN",
833 "BriefDescription": "Dispatch time Favored tbegin",
834 "PublicDescription": ""
835 },
836 {,
837 "EventCode": "0x100f4",
838 "EventName": "PM_FLOP",
839 "BriefDescription": "Floating Point Operation Finished",
840 "PublicDescription": "Floating Point Operations Finished"
841 },
842 {,
843 "EventCode": "0xa0ae",
844 "EventName": "PM_FLOP_SUM_SCALAR",
845 "BriefDescription": "flops summary scalar instructions",
846 "PublicDescription": ""
847 },
848 {,
849 "EventCode": "0xa0ac",
850 "EventName": "PM_FLOP_SUM_VEC",
851 "BriefDescription": "flops summary vector instructions",
852 "PublicDescription": ""
853 },
854 {,
855 "EventCode": "0x2084",
856 "EventName": "PM_FLUSH_BR_MPRED",
857 "BriefDescription": "Flush caused by branch mispredict",
858 "PublicDescription": ""
859 },
860 {,
861 "EventCode": "0x2082",
862 "EventName": "PM_FLUSH_DISP",
863 "BriefDescription": "Dispatch flush",
864 "PublicDescription": ""
865 },
866 {,
867 "EventCode": "0x208c",
868 "EventName": "PM_FLUSH_DISP_SB",
869 "BriefDescription": "Dispatch Flush: Scoreboard",
870 "PublicDescription": ""
871 },
872 {,
873 "EventCode": "0x2088",
874 "EventName": "PM_FLUSH_DISP_SYNC",
875 "BriefDescription": "Dispatch Flush: Sync",
876 "PublicDescription": ""
877 },
878 {,
879 "EventCode": "0x208a",
880 "EventName": "PM_FLUSH_DISP_TLBIE",
881 "BriefDescription": "Dispatch Flush: TLBIE",
882 "PublicDescription": ""
883 },
884 {,
885 "EventCode": "0x208e",
886 "EventName": "PM_FLUSH_LSU",
887 "BriefDescription": "Flush initiated by LSU",
888 "PublicDescription": ""
889 },
890 {,
891 "EventCode": "0x2086",
892 "EventName": "PM_FLUSH_PARTIAL",
893 "BriefDescription": "Partial flush",
894 "PublicDescription": ""
895 },
896 {,
897 "EventCode": "0xa0b0",
898 "EventName": "PM_FPU0_FCONV",
899 "BriefDescription": "Convert instruction executed",
900 "PublicDescription": ""
901 },
902 {,
903 "EventCode": "0xa0b8",
904 "EventName": "PM_FPU0_FEST",
905 "BriefDescription": "Estimate instruction executed",
906 "PublicDescription": ""
907 },
908 {,
909 "EventCode": "0xa0b4",
910 "EventName": "PM_FPU0_FRSP",
911 "BriefDescription": "Round to single precision instruction executed",
912 "PublicDescription": ""
913 },
914 {,
915 "EventCode": "0xa0b2",
916 "EventName": "PM_FPU1_FCONV",
917 "BriefDescription": "Convert instruction executed",
918 "PublicDescription": ""
919 },
920 {,
921 "EventCode": "0xa0ba",
922 "EventName": "PM_FPU1_FEST",
923 "BriefDescription": "Estimate instruction executed",
924 "PublicDescription": ""
925 },
926 {,
927 "EventCode": "0xa0b6",
928 "EventName": "PM_FPU1_FRSP",
929 "BriefDescription": "Round to single precision instruction executed",
930 "PublicDescription": ""
931 },
932 {,
933 "EventCode": "0x50b0",
934 "EventName": "PM_FUSION_TOC_GRP0_1",
935 "BriefDescription": "One pair of instructions fused with TOC in Group0",
936 "PublicDescription": ""
937 },
938 {,
939 "EventCode": "0x50ae",
940 "EventName": "PM_FUSION_TOC_GRP0_2",
941 "BriefDescription": "Two pairs of instructions fused with TOCin Group0",
942 "PublicDescription": ""
943 },
944 {,
945 "EventCode": "0x50ac",
946 "EventName": "PM_FUSION_TOC_GRP0_3",
947 "BriefDescription": "Three pairs of instructions fused with TOC in Group0",
948 "PublicDescription": ""
949 },
950 {,
951 "EventCode": "0x50b2",
952 "EventName": "PM_FUSION_TOC_GRP1_1",
953 "BriefDescription": "One pair of instructions fused with TOX in Group1",
954 "PublicDescription": ""
955 },
956 {,
957 "EventCode": "0x50b8",
958 "EventName": "PM_FUSION_VSX_GRP0_1",
959 "BriefDescription": "One pair of instructions fused with VSX in Group0",
960 "PublicDescription": ""
961 },
962 {,
963 "EventCode": "0x50b6",
964 "EventName": "PM_FUSION_VSX_GRP0_2",
965 "BriefDescription": "Two pairs of instructions fused with VSX in Group0",
966 "PublicDescription": ""
967 },
968 {,
969 "EventCode": "0x50b4",
970 "EventName": "PM_FUSION_VSX_GRP0_3",
971 "BriefDescription": "Three pairs of instructions fused with VSX in Group0",
972 "PublicDescription": ""
973 },
974 {,
975 "EventCode": "0x50ba",
976 "EventName": "PM_FUSION_VSX_GRP1_1",
977 "BriefDescription": "One pair of instructions fused with VSX in Group1",
978 "PublicDescription": ""
979 },
980 {,
981 "EventCode": "0x3000e",
982 "EventName": "PM_FXU0_BUSY_FXU1_IDLE",
983 "BriefDescription": "fxu0 busy and fxu1 idle",
984 "PublicDescription": ""
985 },
986 {,
987 "EventCode": "0x10004",
988 "EventName": "PM_FXU0_FIN",
989 "BriefDescription": "The fixed point unit Unit 0 finished an instruction. Instructions that finish may not necessary complete",
990 "PublicDescription": "FXU0 Finished"
991 },
992 {,
993 "EventCode": "0x4000e",
994 "EventName": "PM_FXU1_BUSY_FXU0_IDLE",
995 "BriefDescription": "fxu0 idle and fxu1 busy",
996 "PublicDescription": ""
997 },
998 {,
999 "EventCode": "0x40004",
1000 "EventName": "PM_FXU1_FIN",
1001 "BriefDescription": "FXU1 Finished",
1002 "PublicDescription": ""
1003 },
1004 {,
1005 "EventCode": "0x20008",
1006 "EventName": "PM_GCT_EMPTY_CYC",
1007 "BriefDescription": "No itags assigned either thread (GCT Empty)",
1008 "PublicDescription": ""
1009 },
1010 {,
1011 "EventCode": "0x30a4",
1012 "EventName": "PM_GCT_MERGE",
1013 "BriefDescription": "Group dispatched on a merged GCT empty. GCT entries can be merged only within the same thread",
1014 "PublicDescription": ""
1015 },
1016 {,
1017 "EventCode": "0x4d01e",
1018 "EventName": "PM_GCT_NOSLOT_BR_MPRED",
1019 "BriefDescription": "Gct empty for this thread due to branch mispred",
1020 "PublicDescription": ""
1021 },
1022 {,
1023 "EventCode": "0x4d01a",
1024 "EventName": "PM_GCT_NOSLOT_BR_MPRED_ICMISS",
1025 "BriefDescription": "Gct empty for this thread due to Icache Miss and branch mispred",
1026 "PublicDescription": ""
1027 },
1028 {,
1029 "EventCode": "0x100f8",
1030 "EventName": "PM_GCT_NOSLOT_CYC",
1031 "BriefDescription": "No itags assigned",
1032 "PublicDescription": "Pipeline empty (No itags assigned , no GCT slots used)"
1033 },
1034 {,
1035 "EventCode": "0x2d01e",
1036 "EventName": "PM_GCT_NOSLOT_DISP_HELD_ISSQ",
1037 "BriefDescription": "Gct empty for this thread due to dispatch hold on this thread due to Issue q full",
1038 "PublicDescription": ""
1039 },
1040 {,
1041 "EventCode": "0x4d01c",
1042 "EventName": "PM_GCT_NOSLOT_DISP_HELD_MAP",
1043 "BriefDescription": "Gct empty for this thread due to dispatch hold on this thread due to Mapper full",
1044 "PublicDescription": ""
1045 },
1046 {,
1047 "EventCode": "0x2e010",
1048 "EventName": "PM_GCT_NOSLOT_DISP_HELD_OTHER",
1049 "BriefDescription": "Gct empty for this thread due to dispatch hold on this thread due to sync",
1050 "PublicDescription": ""
1051 },
1052 {,
1053 "EventCode": "0x2d01c",
1054 "EventName": "PM_GCT_NOSLOT_DISP_HELD_SRQ",
1055 "BriefDescription": "Gct empty for this thread due to dispatch hold on this thread due to SRQ full",
1056 "PublicDescription": ""
1057 },
1058 {,
1059 "EventCode": "0x4e010",
1060 "EventName": "PM_GCT_NOSLOT_IC_L3MISS",
1061 "BriefDescription": "Gct empty for this thread due to icach l3 miss",
1062 "PublicDescription": ""
1063 },
1064 {,
1065 "EventCode": "0x2d01a",
1066 "EventName": "PM_GCT_NOSLOT_IC_MISS",
1067 "BriefDescription": "Gct empty for this thread due to Icache Miss",
1068 "PublicDescription": ""
1069 },
1070 {,
1071 "EventCode": "0x20a2",
1072 "EventName": "PM_GCT_UTIL_11_14_ENTRIES",
1073 "BriefDescription": "GCT Utilization 11-14 entries",
1074 "PublicDescription": ""
1075 },
1076 {,
1077 "EventCode": "0x20a4",
1078 "EventName": "PM_GCT_UTIL_15_17_ENTRIES",
1079 "BriefDescription": "GCT Utilization 15-17 entries",
1080 "PublicDescription": ""
1081 },
1082 {,
1083 "EventCode": "0x20a6",
1084 "EventName": "PM_GCT_UTIL_18_ENTRIES",
1085 "BriefDescription": "GCT Utilization 18+ entries",
1086 "PublicDescription": ""
1087 },
1088 {,
1089 "EventCode": "0x209c",
1090 "EventName": "PM_GCT_UTIL_1_2_ENTRIES",
1091 "BriefDescription": "GCT Utilization 1-2 entries",
1092 "PublicDescription": ""
1093 },
1094 {,
1095 "EventCode": "0x209e",
1096 "EventName": "PM_GCT_UTIL_3_6_ENTRIES",
1097 "BriefDescription": "GCT Utilization 3-6 entries",
1098 "PublicDescription": ""
1099 },
1100 {,
1101 "EventCode": "0x20a0",
1102 "EventName": "PM_GCT_UTIL_7_10_ENTRIES",
1103 "BriefDescription": "GCT Utilization 7-10 entries",
1104 "PublicDescription": ""
1105 },
1106 {,
1107 "EventCode": "0x1000a",
1108 "EventName": "PM_GRP_BR_MPRED_NONSPEC",
1109 "BriefDescription": "Group experienced non-speculative branch redirect",
1110 "PublicDescription": "Group experienced Non-speculative br mispredicct"
1111 },
1112 {,
1113 "EventCode": "0x30004",
1114 "EventName": "PM_GRP_CMPL",
1115 "BriefDescription": "group completed",
1116 "PublicDescription": ""
1117 },
1118 {,
1119 "EventCode": "0x3000a",
1120 "EventName": "PM_GRP_DISP",
1121 "BriefDescription": "group dispatch",
1122 "PublicDescription": "dispatch_success (Group Dispatched)"
1123 },
1124 {,
1125 "EventCode": "0x1000c",
1126 "EventName": "PM_GRP_IC_MISS_NONSPEC",
1127 "BriefDescription": "Group experienced non-speculative I cache miss",
1128 "PublicDescription": "Group experi enced Non-specu lative I cache miss"
1129 },
1130 {,
1131 "EventCode": "0x10130",
1132 "EventName": "PM_GRP_MRK",
1133 "BriefDescription": "Instruction Marked",
1134 "PublicDescription": "Instruction marked in idu"
1135 },
1136 {,
1137 "EventCode": "0x509c",
1138 "EventName": "PM_GRP_NON_FULL_GROUP",
1139 "BriefDescription": "GROUPs where we did not have 6 non branch instructions in the group(ST mode), in SMT mode 3 non branches",
1140 "PublicDescription": ""
1141 },
1142 {,
1143 "EventCode": "0x50a4",
1144 "EventName": "PM_GRP_TERM_2ND_BRANCH",
1145 "BriefDescription": "There were enough instructions in the Ibuffer, but 2nd branch ends group",
1146 "PublicDescription": ""
1147 },
1148 {,
1149 "EventCode": "0x50a6",
1150 "EventName": "PM_GRP_TERM_FPU_AFTER_BR",
1151 "BriefDescription": "There were enough instructions in the Ibuffer, but FPU OP IN same group after a branch terminates a group, cant do partial flushes",
1152 "PublicDescription": ""
1153 },
1154 {,
1155 "EventCode": "0x509e",
1156 "EventName": "PM_GRP_TERM_NOINST",
1157 "BriefDescription": "Do not fill every slot in the group, Not enough instructions in the Ibuffer. This includes cases where the group started with enough instructions, but some got knocked out by a cache miss or branch redirect (which would also empty the Ibuffer)",
1158 "PublicDescription": ""
1159 },
1160 {,
1161 "EventCode": "0x50a0",
1162 "EventName": "PM_GRP_TERM_OTHER",
1163 "BriefDescription": "There were enough instructions in the Ibuffer, but the group terminated early for some other reason, most likely due to a First or Last",
1164 "PublicDescription": ""
1165 },
1166 {,
1167 "EventCode": "0x50a2",
1168 "EventName": "PM_GRP_TERM_SLOT_LIMIT",
1169 "BriefDescription": "There were enough instructions in the Ibuffer, but 3 src RA/RB/RC , 2 way crack caused a group termination",
1170 "PublicDescription": ""
1171 },
1172 {,
1173 "EventCode": "0x4086",
1174 "EventName": "PM_IBUF_FULL_CYC",
1175 "BriefDescription": "Cycles No room in ibuff",
1176 "PublicDescription": "Cycles No room in ibufffully qualified transfer (if5 valid)"
1177 },
1178 {,
1179 "EventCode": "0x4098",
1180 "EventName": "PM_IC_DEMAND_L2_BHT_REDIRECT",
1181 "BriefDescription": "L2 I cache demand request due to BHT redirect, branch redirect ( 2 bubbles 3 cycles)",
1182 "PublicDescription": ""
1183 },
1184 {,
1185 "EventCode": "0x409a",
1186 "EventName": "PM_IC_DEMAND_L2_BR_REDIRECT",
1187 "BriefDescription": "L2 I cache demand request due to branch Mispredict ( 15 cycle path)",
1188 "PublicDescription": ""
1189 },
1190 {,
1191 "EventCode": "0x4088",
1192 "EventName": "PM_IC_DEMAND_REQ",
1193 "BriefDescription": "Demand Instruction fetch request",
1194 "PublicDescription": ""
1195 },
1196 {,
1197 "EventCode": "0x508a",
1198 "EventName": "PM_IC_INVALIDATE",
1199 "BriefDescription": "Ic line invalidated",
1200 "PublicDescription": ""
1201 },
1202 {,
1203 "EventCode": "0x4092",
1204 "EventName": "PM_IC_PREF_CANCEL_HIT",
1205 "BriefDescription": "Prefetch Canceled due to icache hit",
1206 "PublicDescription": ""
1207 },
1208 {,
1209 "EventCode": "0x4094",
1210 "EventName": "PM_IC_PREF_CANCEL_L2",
1211 "BriefDescription": "L2 Squashed request",
1212 "PublicDescription": ""
1213 },
1214 {,
1215 "EventCode": "0x4090",
1216 "EventName": "PM_IC_PREF_CANCEL_PAGE",
1217 "BriefDescription": "Prefetch Canceled due to page boundary",
1218 "PublicDescription": ""
1219 },
1220 {,
1221 "EventCode": "0x408a",
1222 "EventName": "PM_IC_PREF_REQ",
1223 "BriefDescription": "Instruction prefetch requests",
1224 "PublicDescription": ""
1225 },
1226 {,
1227 "EventCode": "0x408e",
1228 "EventName": "PM_IC_PREF_WRITE",
1229 "BriefDescription": "Instruction prefetch written into IL1",
1230 "PublicDescription": ""
1231 },
1232 {,
1233 "EventCode": "0x4096",
1234 "EventName": "PM_IC_RELOAD_PRIVATE",
1235 "BriefDescription": "Reloading line was brought in private for a specific thread. Most lines are brought in shared for all eight thrreads. If RA does not match then invalidates and then brings it shared to other thread. In P7 line brought in private , then line was invalidat",
1236 "PublicDescription": ""
1237 },
1238 {,
1239 "EventCode": "0x5088",
1240 "EventName": "PM_IFU_L2_TOUCH",
1241 "BriefDescription": "L2 touch to update MRU on a line",
1242 "PublicDescription": ""
1243 },
1244 {,
1245 "EventCode": "0x514050",
1246 "EventName": "PM_INST_ALL_CHIP_PUMP_CPRED",
1247 "BriefDescription": "Initial and Final Pump Scope was chip pump (prediction=correct) for instruction fetches and prefetches",
1248 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was chip pump (prediction=correct) for an instruction fetch"
1249 },
1250 {,
1251 "EventCode": "0x544048",
1252 "EventName": "PM_INST_ALL_FROM_DL2L3_MOD",
1253 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to instruction fetches and prefetches",
1254 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1255 },
1256 {,
1257 "EventCode": "0x534048",
1258 "EventName": "PM_INST_ALL_FROM_DL2L3_SHR",
1259 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to instruction fetches and prefetches",
1260 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1261 },
1262 {,
1263 "EventCode": "0x53404c",
1264 "EventName": "PM_INST_ALL_FROM_DL4",
1265 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to instruction fetches and prefetches",
1266 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's L4 on a different Node or Group (Distant) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1267 },
1268 {,
1269 "EventCode": "0x54404c",
1270 "EventName": "PM_INST_ALL_FROM_DMEM",
1271 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group (Distant) due to instruction fetches and prefetches",
1272 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group (Distant) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1273 },
1274 {,
1275 "EventCode": "0x514042",
1276 "EventName": "PM_INST_ALL_FROM_L2",
1277 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 due to instruction fetches and prefetches",
1278 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1279 },
1280 {,
1281 "EventCode": "0x544046",
1282 "EventName": "PM_INST_ALL_FROM_L21_MOD",
1283 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L2 on the same chip due to instruction fetches and prefetches",
1284 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L2 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1285 },
1286 {,
1287 "EventCode": "0x534046",
1288 "EventName": "PM_INST_ALL_FROM_L21_SHR",
1289 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L2 on the same chip due to instruction fetches and prefetches",
1290 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L2 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1291 },
1292 {,
1293 "EventCode": "0x51404e",
1294 "EventName": "PM_INST_ALL_FROM_L2MISS",
1295 "BriefDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L2 due to instruction fetches and prefetches",
1296 "PublicDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L2 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1297 },
1298 {,
1299 "EventCode": "0x534040",
1300 "EventName": "PM_INST_ALL_FROM_L2_DISP_CONFLICT_LDHITST",
1301 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 with load hit store conflict due to instruction fetches and prefetches",
1302 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 with load hit store conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1303 },
1304 {,
1305 "EventCode": "0x544040",
1306 "EventName": "PM_INST_ALL_FROM_L2_DISP_CONFLICT_OTHER",
1307 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 with dispatch conflict due to instruction fetches and prefetches",
1308 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 with dispatch conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1309 },
1310 {,
1311 "EventCode": "0x524040",
1312 "EventName": "PM_INST_ALL_FROM_L2_MEPF",
1313 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state. due to instruction fetches and prefetches",
1314 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 hit without dispatch conflicts on Mepf state. due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1315 },
1316 {,
1317 "EventCode": "0x514040",
1318 "EventName": "PM_INST_ALL_FROM_L2_NO_CONFLICT",
1319 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L2 without conflict due to instruction fetches and prefetches",
1320 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L2 without conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1321 },
1322 {,
1323 "EventCode": "0x544042",
1324 "EventName": "PM_INST_ALL_FROM_L3",
1325 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 due to instruction fetches and prefetches",
1326 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1327 },
1328 {,
1329 "EventCode": "0x544044",
1330 "EventName": "PM_INST_ALL_FROM_L31_ECO_MOD",
1331 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to instruction fetches and prefetches",
1332 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1333 },
1334 {,
1335 "EventCode": "0x534044",
1336 "EventName": "PM_INST_ALL_FROM_L31_ECO_SHR",
1337 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to instruction fetches and prefetches",
1338 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1339 },
1340 {,
1341 "EventCode": "0x524044",
1342 "EventName": "PM_INST_ALL_FROM_L31_MOD",
1343 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L3 on the same chip due to instruction fetches and prefetches",
1344 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1345 },
1346 {,
1347 "EventCode": "0x514046",
1348 "EventName": "PM_INST_ALL_FROM_L31_SHR",
1349 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L3 on the same chip due to instruction fetches and prefetches",
1350 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1351 },
1352 {,
1353 "EventCode": "0x54404e",
1354 "EventName": "PM_INST_ALL_FROM_L3MISS_MOD",
1355 "BriefDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L3 due to a instruction fetch",
1356 "PublicDescription": "The processor's Instruction cache was reloaded from a localtion other than the local core's L3 due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1357 },
1358 {,
1359 "EventCode": "0x534042",
1360 "EventName": "PM_INST_ALL_FROM_L3_DISP_CONFLICT",
1361 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 with dispatch conflict due to instruction fetches and prefetches",
1362 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 with dispatch conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1363 },
1364 {,
1365 "EventCode": "0x524042",
1366 "EventName": "PM_INST_ALL_FROM_L3_MEPF",
1367 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state. due to instruction fetches and prefetches",
1368 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 without dispatch conflicts hit on Mepf state. due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1369 },
1370 {,
1371 "EventCode": "0x514044",
1372 "EventName": "PM_INST_ALL_FROM_L3_NO_CONFLICT",
1373 "BriefDescription": "The processor's Instruction cache was reloaded from local core's L3 without conflict due to instruction fetches and prefetches",
1374 "PublicDescription": "The processor's Instruction cache was reloaded from local core's L3 without conflict due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1375 },
1376 {,
1377 "EventCode": "0x51404c",
1378 "EventName": "PM_INST_ALL_FROM_LL4",
1379 "BriefDescription": "The processor's Instruction cache was reloaded from the local chip's L4 cache due to instruction fetches and prefetches",
1380 "PublicDescription": "The processor's Instruction cache was reloaded from the local chip's L4 cache due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1381 },
1382 {,
1383 "EventCode": "0x524048",
1384 "EventName": "PM_INST_ALL_FROM_LMEM",
1385 "BriefDescription": "The processor's Instruction cache was reloaded from the local chip's Memory due to instruction fetches and prefetches",
1386 "PublicDescription": "The processor's Instruction cache was reloaded from the local chip's Memory due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1387 },
1388 {,
1389 "EventCode": "0x52404c",
1390 "EventName": "PM_INST_ALL_FROM_MEMORY",
1391 "BriefDescription": "The processor's Instruction cache was reloaded from a memory location including L4 from local remote or distant due to instruction fetches and prefetches",
1392 "PublicDescription": "The processor's Instruction cache was reloaded from a memory location including L4 from local remote or distant due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1393 },
1394 {,
1395 "EventCode": "0x54404a",
1396 "EventName": "PM_INST_ALL_FROM_OFF_CHIP_CACHE",
1397 "BriefDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to instruction fetches and prefetches",
1398 "PublicDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1399 },
1400 {,
1401 "EventCode": "0x514048",
1402 "EventName": "PM_INST_ALL_FROM_ON_CHIP_CACHE",
1403 "BriefDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to instruction fetches and prefetches",
1404 "PublicDescription": "The processor's Instruction cache was reloaded either shared or modified data from another core's L2/L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1405 },
1406 {,
1407 "EventCode": "0x524046",
1408 "EventName": "PM_INST_ALL_FROM_RL2L3_MOD",
1409 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to instruction fetches and prefetches",
1410 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1411 },
1412 {,
1413 "EventCode": "0x51404a",
1414 "EventName": "PM_INST_ALL_FROM_RL2L3_SHR",
1415 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to instruction fetches and prefetches",
1416 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1417 },
1418 {,
1419 "EventCode": "0x52404a",
1420 "EventName": "PM_INST_ALL_FROM_RL4",
1421 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to instruction fetches and prefetches",
1422 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's L4 on the same Node or Group ( Remote) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1423 },
1424 {,
1425 "EventCode": "0x53404a",
1426 "EventName": "PM_INST_ALL_FROM_RMEM",
1427 "BriefDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to instruction fetches and prefetches",
1428 "PublicDescription": "The processor's Instruction cache was reloaded from another chip's memory on the same Node or Group ( Remote) due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1429 },
1430 {,
1431 "EventCode": "0x524050",
1432 "EventName": "PM_INST_ALL_GRP_PUMP_CPRED",
1433 "BriefDescription": "Initial and Final Pump Scope was group pump (prediction=correct) for instruction fetches and prefetches",
1434 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was group pump for an instruction fetch"
1435 },
1436 {,
1437 "EventCode": "0x524052",
1438 "EventName": "PM_INST_ALL_GRP_PUMP_MPRED",
1439 "BriefDescription": "Final Pump Scope (Group) ended up either larger or smaller than Initial Pump Scope for instruction fetches and prefetches",
1440 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope OR Final Pump Scope(Group) got data from source that was at smaller scope(Chip) Final pump was group pump and initial pump was chip or final and initial pump was gro"
1441 },
1442 {,
1443 "EventCode": "0x514052",
1444 "EventName": "PM_INST_ALL_GRP_PUMP_MPRED_RTY",
1445 "BriefDescription": "Final Pump Scope (Group) ended up larger than Initial Pump Scope (Chip) for instruction fetches and prefetches",
1446 "PublicDescription": "Final Pump Scope(Group) to get data sourced, ended up larger than Initial Pump Scope (Chip) Final pump was group pump and initial pump was chip pumpfor an instruction fetch"
1447 },
1448 {,
1449 "EventCode": "0x514054",
1450 "EventName": "PM_INST_ALL_PUMP_CPRED",
1451 "BriefDescription": "Pump prediction correct. Counts across all types of pumps for instruction fetches and prefetches",
1452 "PublicDescription": "Pump prediction correct. Counts across all types of pumpsfor an instruction fetch"
1453 },
1454 {,
1455 "EventCode": "0x544052",
1456 "EventName": "PM_INST_ALL_PUMP_MPRED",
1457 "BriefDescription": "Pump misprediction. Counts across all types of pumps for instruction fetches and prefetches",
1458 "PublicDescription": "Pump Mis prediction Counts across all types of pumpsfor an instruction fetch"
1459 },
1460 {,
1461 "EventCode": "0x534050",
1462 "EventName": "PM_INST_ALL_SYS_PUMP_CPRED",
1463 "BriefDescription": "Initial and Final Pump Scope was system pump (prediction=correct) for instruction fetches and prefetches",
1464 "PublicDescription": "Initial and Final Pump Scope and data sourced across this scope was system pump for an instruction fetch"
1465 },
1466 {,
1467 "EventCode": "0x534052",
1468 "EventName": "PM_INST_ALL_SYS_PUMP_MPRED",
1469 "BriefDescription": "Final Pump Scope (system) mispredicted. Either the original scope was too small (Chip/Group) or the original scope was System and it should have been smaller. Counts for instruction fetches and prefetches",
1470 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope(Chip/Group) OR Final Pump Scope(system) got data from source that was at smaller scope(Chip/group) Final pump was system pump and initial pump was chip or group or"
1471 },
1472 {,
1473 "EventCode": "0x544050",
1474 "EventName": "PM_INST_ALL_SYS_PUMP_MPRED_RTY",
1475 "BriefDescription": "Final Pump Scope (system) ended up larger than Initial Pump Scope (Chip/Group) for instruction fetches and prefetches",
1476 "PublicDescription": "Final Pump Scope(system) to get data sourced, ended up larger than Initial Pump Scope (Chip or Group) for an instruction fetch"
1477 },
1478 {,
1479 "EventCode": "0x4080",
1480 "EventName": "PM_INST_FROM_L1",
1481 "BriefDescription": "Instruction fetches from L1",
1482 "PublicDescription": ""
1483 },
1484 {,
1485 "EventCode": "0x44046",
1486 "EventName": "PM_INST_FROM_L21_MOD",
1487 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L2 on the same chip due to an instruction fetch (not prefetch)",
1488 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L2 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1489 },
1490 {,
1491 "EventCode": "0x34046",
1492 "EventName": "PM_INST_FROM_L21_SHR",
1493 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L2 on the same chip due to an instruction fetch (not prefetch)",
1494 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L2 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1495 },
1496 {,
1497 "EventCode": "0x44044",
1498 "EventName": "PM_INST_FROM_L31_ECO_MOD",
1499 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to an instruction fetch (not prefetch)",
1500 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1501 },
1502 {,
1503 "EventCode": "0x34044",
1504 "EventName": "PM_INST_FROM_L31_ECO_SHR",
1505 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to an instruction fetch (not prefetch)",
1506 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1507 },
1508 {,
1509 "EventCode": "0x24044",
1510 "EventName": "PM_INST_FROM_L31_MOD",
1511 "BriefDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L3 on the same chip due to an instruction fetch (not prefetch)",
1512 "PublicDescription": "The processor's Instruction cache was reloaded with Modified (M) data from another core's L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1513 },
1514 {,
1515 "EventCode": "0x14046",
1516 "EventName": "PM_INST_FROM_L31_SHR",
1517 "BriefDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L3 on the same chip due to an instruction fetch (not prefetch)",
1518 "PublicDescription": "The processor's Instruction cache was reloaded with Shared (S) data from another core's L3 on the same chip due to either an instruction fetch or instruction fetch plus prefetch if MMCR1[17] is 1"
1519 },
1520 {,
1521 "EventCode": "0x30016",
1522 "EventName": "PM_INST_IMC_MATCH_DISP",
1523 "BriefDescription": "Matched Instructions Dispatched",
1524 "PublicDescription": "IMC Matches dispatched"
1525 },
1526 {,
1527 "EventCode": "0x30014",
1528 "EventName": "PM_IOPS_DISP",
1529 "BriefDescription": "Internal Operations dispatched",
1530 "PublicDescription": "IOPS dispatched"
1531 },
1532 {,
1533 "EventCode": "0x45046",
1534 "EventName": "PM_IPTEG_FROM_L21_MOD",
1535 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's L2 on the same chip due to a instruction side request",
1536 "PublicDescription": ""
1537 },
1538 {,
1539 "EventCode": "0x35046",
1540 "EventName": "PM_IPTEG_FROM_L21_SHR",
1541 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's L2 on the same chip due to a instruction side request",
1542 "PublicDescription": ""
1543 },
1544 {,
1545 "EventCode": "0x35040",
1546 "EventName": "PM_IPTEG_FROM_L2_DISP_CONFLICT_LDHITST",
1547 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 with load hit store conflict due to a instruction side request",
1548 "PublicDescription": ""
1549 },
1550 {,
1551 "EventCode": "0x45040",
1552 "EventName": "PM_IPTEG_FROM_L2_DISP_CONFLICT_OTHER",
1553 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 with dispatch conflict due to a instruction side request",
1554 "PublicDescription": ""
1555 },
1556 {,
1557 "EventCode": "0x45044",
1558 "EventName": "PM_IPTEG_FROM_L31_ECO_MOD",
1559 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's ECO L3 on the same chip due to a instruction side request",
1560 "PublicDescription": ""
1561 },
1562 {,
1563 "EventCode": "0x35044",
1564 "EventName": "PM_IPTEG_FROM_L31_ECO_SHR",
1565 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's ECO L3 on the same chip due to a instruction side request",
1566 "PublicDescription": ""
1567 },
1568 {,
1569 "EventCode": "0x25044",
1570 "EventName": "PM_IPTEG_FROM_L31_MOD",
1571 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's L3 on the same chip due to a instruction side request",
1572 "PublicDescription": ""
1573 },
1574 {,
1575 "EventCode": "0x15046",
1576 "EventName": "PM_IPTEG_FROM_L31_SHR",
1577 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's L3 on the same chip due to a instruction side request",
1578 "PublicDescription": ""
1579 },
1580 {,
1581 "EventCode": "0x617082",
1582 "EventName": "PM_ISIDE_DISP",
1583 "BriefDescription": "All i-side dispatch attempts",
1584 "PublicDescription": ""
1585 },
1586 {,
1587 "EventCode": "0x627084",
1588 "EventName": "PM_ISIDE_DISP_FAIL",
1589 "BriefDescription": "All i-side dispatch attempts that failed due to a addr collision with another machine",
1590 "PublicDescription": ""
1591 },
1592 {,
1593 "EventCode": "0x627086",
1594 "EventName": "PM_ISIDE_DISP_FAIL_OTHER",
1595 "BriefDescription": "All i-side dispatch attempts that failed due to a reason other than addrs collision",
1596 "PublicDescription": ""
1597 },
1598 {,
1599 "EventCode": "0x4608e",
1600 "EventName": "PM_ISIDE_L2MEMACC",
1601 "BriefDescription": "valid when first beat of data comes in for an i-side fetch where data came from mem(or L4)",
1602 "PublicDescription": ""
1603 },
1604 {,
1605 "EventCode": "0x44608e",
1606 "EventName": "PM_ISIDE_MRU_TOUCH",
1607 "BriefDescription": "Iside L2 MRU touch",
1608 "PublicDescription": ""
1609 },
1610 {,
1611 "EventCode": "0x30ac",
1612 "EventName": "PM_ISU_REF_FX0",
1613 "BriefDescription": "FX0 ISU reject",
1614 "PublicDescription": ""
1615 },
1616 {,
1617 "EventCode": "0x30ae",
1618 "EventName": "PM_ISU_REF_FX1",
1619 "BriefDescription": "FX1 ISU reject",
1620 "PublicDescription": ""
1621 },
1622 {,
1623 "EventCode": "0x38ac",
1624 "EventName": "PM_ISU_REF_FXU",
1625 "BriefDescription": "FXU ISU reject from either pipe",
1626 "PublicDescription": ""
1627 },
1628 {,
1629 "EventCode": "0x30b0",
1630 "EventName": "PM_ISU_REF_LS0",
1631 "BriefDescription": "LS0 ISU reject",
1632 "PublicDescription": ""
1633 },
1634 {,
1635 "EventCode": "0x30b2",
1636 "EventName": "PM_ISU_REF_LS1",
1637 "BriefDescription": "LS1 ISU reject",
1638 "PublicDescription": ""
1639 },
1640 {,
1641 "EventCode": "0x30b4",
1642 "EventName": "PM_ISU_REF_LS2",
1643 "BriefDescription": "LS2 ISU reject",
1644 "PublicDescription": ""
1645 },
1646 {,
1647 "EventCode": "0x30b6",
1648 "EventName": "PM_ISU_REF_LS3",
1649 "BriefDescription": "LS3 ISU reject",
1650 "PublicDescription": ""
1651 },
1652 {,
1653 "EventCode": "0x309c",
1654 "EventName": "PM_ISU_REJECTS_ALL",
1655 "BriefDescription": "All isu rejects could be more than 1 per cycle",
1656 "PublicDescription": ""
1657 },
1658 {,
1659 "EventCode": "0x30a2",
1660 "EventName": "PM_ISU_REJECT_RES_NA",
1661 "BriefDescription": "ISU reject due to resource not available",
1662 "PublicDescription": ""
1663 },
1664 {,
1665 "EventCode": "0x309e",
1666 "EventName": "PM_ISU_REJECT_SAR_BYPASS",
1667 "BriefDescription": "Reject because of SAR bypass",
1668 "PublicDescription": ""
1669 },
1670 {,
1671 "EventCode": "0x30a0",
1672 "EventName": "PM_ISU_REJECT_SRC_NA",
1673 "BriefDescription": "ISU reject due to source not available",
1674 "PublicDescription": ""
1675 },
1676 {,
1677 "EventCode": "0x30a8",
1678 "EventName": "PM_ISU_REJ_VS0",
1679 "BriefDescription": "VS0 ISU reject",
1680 "PublicDescription": ""
1681 },
1682 {,
1683 "EventCode": "0x30aa",
1684 "EventName": "PM_ISU_REJ_VS1",
1685 "BriefDescription": "VS1 ISU reject",
1686 "PublicDescription": ""
1687 },
1688 {,
1689 "EventCode": "0x38a8",
1690 "EventName": "PM_ISU_REJ_VSU",
1691 "BriefDescription": "VSU ISU reject from either pipe",
1692 "PublicDescription": ""
1693 },
1694 {,
1695 "EventCode": "0x30b8",
1696 "EventName": "PM_ISYNC",
1697 "BriefDescription": "Isync count per thread",
1698 "PublicDescription": ""
1699 },
1700 {,
1701 "EventCode": "0x200301ea",
1702 "EventName": "PM_L1MISS_LAT_EXC_1024",
1703 "BriefDescription": "L1 misses that took longer than 1024 cyles to resolve (miss to reload)",
1704 "PublicDescription": "Reload latency exceeded 1024 cyc"
1705 },
1706 {,
1707 "EventCode": "0x200401ec",
1708 "EventName": "PM_L1MISS_LAT_EXC_2048",
1709 "BriefDescription": "L1 misses that took longer than 2048 cyles to resolve (miss to reload)",
1710 "PublicDescription": "Reload latency exceeded 2048 cyc"
1711 },
1712 {,
1713 "EventCode": "0x200101e8",
1714 "EventName": "PM_L1MISS_LAT_EXC_256",
1715 "BriefDescription": "L1 misses that took longer than 256 cyles to resolve (miss to reload)",
1716 "PublicDescription": "Reload latency exceeded 256 cyc"
1717 },
1718 {,
1719 "EventCode": "0x200201e6",
1720 "EventName": "PM_L1MISS_LAT_EXC_32",
1721 "BriefDescription": "L1 misses that took longer than 32 cyles to resolve (miss to reload)",
1722 "PublicDescription": "Reload latency exceeded 32 cyc"
1723 },
1724 {,
1725 "EventCode": "0x26086",
1726 "EventName": "PM_L1PF_L2MEMACC",
1727 "BriefDescription": "valid when first beat of data comes in for an L1pref where data came from mem(or L4)",
1728 "PublicDescription": ""
1729 },
1730 {,
1731 "EventCode": "0x408c",
1732 "EventName": "PM_L1_DEMAND_WRITE",
1733 "BriefDescription": "Instruction Demand sectors wriittent into IL1",
1734 "PublicDescription": ""
1735 },
1736 {,
1737 "EventCode": "0x417080",
1738 "EventName": "PM_L2_CASTOUT_MOD",
1739 "BriefDescription": "L2 Castouts - Modified (M, Mu, Me)",
1740 "PublicDescription": ""
1741 },
1742 {,
1743 "EventCode": "0x417082",
1744 "EventName": "PM_L2_CASTOUT_SHR",
1745 "BriefDescription": "L2 Castouts - Shared (T, Te, Si, S)",
1746 "PublicDescription": ""
1747 },
1748 {,
1749 "EventCode": "0x27084",
1750 "EventName": "PM_L2_CHIP_PUMP",
1751 "BriefDescription": "RC requests that were local on chip pump attempts",
1752 "PublicDescription": ""
1753 },
1754 {,
1755 "EventCode": "0x427086",
1756 "EventName": "PM_L2_DC_INV",
1757 "BriefDescription": "Dcache invalidates from L2",
1758 "PublicDescription": ""
1759 },
1760 {,
1761 "EventCode": "0x44608c",
1762 "EventName": "PM_L2_DISP_ALL_L2MISS",
1763 "BriefDescription": "All successful Ld/St dispatches for this thread that were an L2miss",
1764 "PublicDescription": ""
1765 },
1766 {,
1767 "EventCode": "0x27086",
1768 "EventName": "PM_L2_GROUP_PUMP",
1769 "BriefDescription": "RC requests that were on Node Pump attempts",
1770 "PublicDescription": ""
1771 },
1772 {,
1773 "EventCode": "0x626084",
1774 "EventName": "PM_L2_GRP_GUESS_CORRECT",
1775 "BriefDescription": "L2 guess grp and guess was correct (data intra-6chip AND ^on-chip)",
1776 "PublicDescription": ""
1777 },
1778 {,
1779 "EventCode": "0x626086",
1780 "EventName": "PM_L2_GRP_GUESS_WRONG",
1781 "BriefDescription": "L2 guess grp and guess was not correct (ie data on-chip OR beyond-6chip)",
1782 "PublicDescription": ""
1783 },
1784 {,
1785 "EventCode": "0x427084",
1786 "EventName": "PM_L2_IC_INV",
1787 "BriefDescription": "Icache Invalidates from L2",
1788 "PublicDescription": ""
1789 },
1790 {,
1791 "EventCode": "0x436088",
1792 "EventName": "PM_L2_INST",
1793 "BriefDescription": "All successful I-side dispatches for this thread (excludes i_l2mru_tch reqs)",
1794 "PublicDescription": ""
1795 },
1796 {,
1797 "EventCode": "0x43608a",
1798 "EventName": "PM_L2_INST_MISS",
1799 "BriefDescription": "All successful i-side dispatches that were an L2miss for this thread (excludes i_l2mru_tch reqs)",
1800 "PublicDescription": ""
1801 },
1802 {,
1803 "EventCode": "0x416080",
1804 "EventName": "PM_L2_LD",
1805 "BriefDescription": "All successful D-side Load dispatches for this thread",
1806 "PublicDescription": ""
1807 },
1808 {,
1809 "EventCode": "0x437088",
1810 "EventName": "PM_L2_LD_DISP",
1811 "BriefDescription": "All successful load dispatches",
1812 "PublicDescription": ""
1813 },
1814 {,
1815 "EventCode": "0x43708a",
1816 "EventName": "PM_L2_LD_HIT",
1817 "BriefDescription": "All successful load dispatches that were L2 hits",
1818 "PublicDescription": ""
1819 },
1820 {,
1821 "EventCode": "0x426084",
1822 "EventName": "PM_L2_LD_MISS",
1823 "BriefDescription": "All successful D-Side Load dispatches that were an L2miss for this thread",
1824 "PublicDescription": ""
1825 },
1826 {,
1827 "EventCode": "0x616080",
1828 "EventName": "PM_L2_LOC_GUESS_CORRECT",
1829 "BriefDescription": "L2 guess loc and guess was correct (ie data local)",
1830 "PublicDescription": ""
1831 },
1832 {,
1833 "EventCode": "0x616082",
1834 "EventName": "PM_L2_LOC_GUESS_WRONG",
1835 "BriefDescription": "L2 guess loc and guess was not correct (ie data not on chip)",
1836 "PublicDescription": ""
1837 },
1838 {,
1839 "EventCode": "0x516080",
1840 "EventName": "PM_L2_RCLD_DISP",
1841 "BriefDescription": "L2 RC load dispatch attempt",
1842 "PublicDescription": ""
1843 },
1844 {,
1845 "EventCode": "0x516082",
1846 "EventName": "PM_L2_RCLD_DISP_FAIL_ADDR",
1847 "BriefDescription": "L2 RC load dispatch attempt failed due to address collision with RC/CO/SN/SQ",
1848 "PublicDescription": ""
1849 },
1850 {,
1851 "EventCode": "0x526084",
1852 "EventName": "PM_L2_RCLD_DISP_FAIL_OTHER",
1853 "BriefDescription": "L2 RC load dispatch attempt failed due to other reasons",
1854 "PublicDescription": ""
1855 },
1856 {,
1857 "EventCode": "0x536088",
1858 "EventName": "PM_L2_RCST_DISP",
1859 "BriefDescription": "L2 RC store dispatch attempt",
1860 "PublicDescription": ""
1861 },
1862 {,
1863 "EventCode": "0x53608a",
1864 "EventName": "PM_L2_RCST_DISP_FAIL_ADDR",
1865 "BriefDescription": "L2 RC store dispatch attempt failed due to address collision with RC/CO/SN/SQ",
1866 "PublicDescription": ""
1867 },
1868 {,
1869 "EventCode": "0x54608c",
1870 "EventName": "PM_L2_RCST_DISP_FAIL_OTHER",
1871 "BriefDescription": "L2 RC store dispatch attempt failed due to other reasons",
1872 "PublicDescription": ""
1873 },
1874 {,
1875 "EventCode": "0x537088",
1876 "EventName": "PM_L2_RC_ST_DONE",
1877 "BriefDescription": "RC did st to line that was Tx or Sx",
1878 "PublicDescription": ""
1879 },
1880 {,
1881 "EventCode": "0x63708a",
1882 "EventName": "PM_L2_RTY_LD",
1883 "BriefDescription": "RC retries on PB for any load from core",
1884 "PublicDescription": ""
1885 },
1886 {,
1887 "EventCode": "0x3708a",
1888 "EventName": "PM_L2_RTY_ST",
1889 "BriefDescription": "RC retries on PB for any store from core",
1890 "PublicDescription": ""
1891 },
1892 {,
1893 "EventCode": "0x54708c",
1894 "EventName": "PM_L2_SN_M_RD_DONE",
1895 "BriefDescription": "SNP dispatched for a read and was M",
1896 "PublicDescription": ""
1897 },
1898 {,
1899 "EventCode": "0x54708e",
1900 "EventName": "PM_L2_SN_M_WR_DONE",
1901 "BriefDescription": "SNP dispatched for a write and was M",
1902 "PublicDescription": ""
1903 },
1904 {,
1905 "EventCode": "0x53708a",
1906 "EventName": "PM_L2_SN_SX_I_DONE",
1907 "BriefDescription": "SNP dispatched and went from Sx or Tx to Ix",
1908 "PublicDescription": ""
1909 },
1910 {,
1911 "EventCode": "0x17080",
1912 "EventName": "PM_L2_ST",
1913 "BriefDescription": "All successful D-side store dispatches for this thread",
1914 "PublicDescription": ""
1915 },
1916 {,
1917 "EventCode": "0x44708c",
1918 "EventName": "PM_L2_ST_DISP",
1919 "BriefDescription": "All successful store dispatches",
1920 "PublicDescription": ""
1921 },
1922 {,
1923 "EventCode": "0x44708e",
1924 "EventName": "PM_L2_ST_HIT",
1925 "BriefDescription": "All successful store dispatches that were L2Hits",
1926 "PublicDescription": ""
1927 },
1928 {,
1929 "EventCode": "0x17082",
1930 "EventName": "PM_L2_ST_MISS",
1931 "BriefDescription": "All successful D-side store dispatches for this thread that were L2 Miss",
1932 "PublicDescription": ""
1933 },
1934 {,
1935 "EventCode": "0x636088",
1936 "EventName": "PM_L2_SYS_GUESS_CORRECT",
1937 "BriefDescription": "L2 guess sys and guess was correct (ie data beyond-6chip)",
1938 "PublicDescription": ""
1939 },
1940 {,
1941 "EventCode": "0x63608a",
1942 "EventName": "PM_L2_SYS_GUESS_WRONG",
1943 "BriefDescription": "L2 guess sys and guess was not correct (ie data ^beyond-6chip)",
1944 "PublicDescription": ""
1945 },
1946 {,
1947 "EventCode": "0x617080",
1948 "EventName": "PM_L2_SYS_PUMP",
1949 "BriefDescription": "RC requests that were system pump attempts",
1950 "PublicDescription": ""
1951 },
1952 {,
1953 "EventCode": "0x1e05e",
1954 "EventName": "PM_L2_TM_REQ_ABORT",
1955 "BriefDescription": "TM abort",
1956 "PublicDescription": ""
1957 },
1958 {,
1959 "EventCode": "0x3e05c",
1960 "EventName": "PM_L2_TM_ST_ABORT_SISTER",
1961 "BriefDescription": "TM marked store abort",
1962 "PublicDescription": ""
1963 },
1964 {,
1965 "EventCode": "0x23808a",
1966 "EventName": "PM_L3_CINJ",
1967 "BriefDescription": "l3 ci of cache inject",
1968 "PublicDescription": ""
1969 },
1970 {,
1971 "EventCode": "0x128084",
1972 "EventName": "PM_L3_CI_HIT",
1973 "BriefDescription": "L3 Castins Hit (total count",
1974 "PublicDescription": ""
1975 },
1976 {,
1977 "EventCode": "0x128086",
1978 "EventName": "PM_L3_CI_MISS",
1979 "BriefDescription": "L3 castins miss (total count",
1980 "PublicDescription": ""
1981 },
1982 {,
1983 "EventCode": "0x819082",
1984 "EventName": "PM_L3_CI_USAGE",
1985 "BriefDescription": "rotating sample of 16 CI or CO actives",
1986 "PublicDescription": ""
1987 },
1988 {,
1989 "EventCode": "0x438088",
1990 "EventName": "PM_L3_CO",
1991 "BriefDescription": "l3 castout occurring ( does not include casthrough or log writes (cinj/dmaw)",
1992 "PublicDescription": ""
1993 },
1994 {,
1995 "EventCode": "0x83908b",
1996 "EventName": "PM_L3_CO0_ALLOC",
1997 "BriefDescription": "lifetime, sample of CO machine 0 valid",
1998 "PublicDescription": "0.0"
1999 },
2000 {,
2001 "EventCode": "0x83908a",
2002 "EventName": "PM_L3_CO0_BUSY",
2003 "BriefDescription": "lifetime, sample of CO machine 0 valid",
2004 "PublicDescription": ""
2005 },
2006 {,
2007 "EventCode": "0x28086",
2008 "EventName": "PM_L3_CO_L31",
2009 "BriefDescription": "L3 CO to L3.1 OR of port 0 and 1 ( lossy)",
2010 "PublicDescription": ""
2011 },
2012 {,
2013 "EventCode": "0x238088",
2014 "EventName": "PM_L3_CO_LCO",
2015 "BriefDescription": "Total L3 castouts occurred on LCO",
2016 "PublicDescription": ""
2017 },
2018 {,
2019 "EventCode": "0x28084",
2020 "EventName": "PM_L3_CO_MEM",
2021 "BriefDescription": "L3 CO to memory OR of port 0 and 1 ( lossy)",
2022 "PublicDescription": ""
2023 },
2024 {,
2025 "EventCode": "0xb19082",
2026 "EventName": "PM_L3_GRP_GUESS_CORRECT",
2027 "BriefDescription": "Initial scope=group and data from same group (near) (pred successful)",
2028 "PublicDescription": ""
2029 },
2030 {,
2031 "EventCode": "0xb3908a",
2032 "EventName": "PM_L3_GRP_GUESS_WRONG_HIGH",
2033 "BriefDescription": "Initial scope=group but data from local node. Predition too high",
2034 "PublicDescription": ""
2035 },
2036 {,
2037 "EventCode": "0xb39088",
2038 "EventName": "PM_L3_GRP_GUESS_WRONG_LOW",
2039 "BriefDescription": "Initial scope=group but data from outside group (far or rem). Prediction too Low",
2040 "PublicDescription": ""
2041 },
2042 {,
2043 "EventCode": "0x218080",
2044 "EventName": "PM_L3_HIT",
2045 "BriefDescription": "L3 Hits",
2046 "PublicDescription": ""
2047 },
2048 {,
2049 "EventCode": "0x138088",
2050 "EventName": "PM_L3_L2_CO_HIT",
2051 "BriefDescription": "L2 castout hits",
2052 "PublicDescription": ""
2053 },
2054 {,
2055 "EventCode": "0x13808a",
2056 "EventName": "PM_L3_L2_CO_MISS",
2057 "BriefDescription": "L2 castout miss",
2058 "PublicDescription": ""
2059 },
2060 {,
2061 "EventCode": "0x14808c",
2062 "EventName": "PM_L3_LAT_CI_HIT",
2063 "BriefDescription": "L3 Lateral Castins Hit",
2064 "PublicDescription": ""
2065 },
2066 {,
2067 "EventCode": "0x14808e",
2068 "EventName": "PM_L3_LAT_CI_MISS",
2069 "BriefDescription": "L3 Lateral Castins Miss",
2070 "PublicDescription": ""
2071 },
2072 {,
2073 "EventCode": "0x228084",
2074 "EventName": "PM_L3_LD_HIT",
2075 "BriefDescription": "L3 demand LD Hits",
2076 "PublicDescription": ""
2077 },
2078 {,
2079 "EventCode": "0x228086",
2080 "EventName": "PM_L3_LD_MISS",
2081 "BriefDescription": "L3 demand LD Miss",
2082 "PublicDescription": ""
2083 },
2084 {,
2085 "EventCode": "0x1e052",
2086 "EventName": "PM_L3_LD_PREF",
2087 "BriefDescription": "L3 Load Prefetches",
2088 "PublicDescription": ""
2089 },
2090 {,
2091 "EventCode": "0xb19080",
2092 "EventName": "PM_L3_LOC_GUESS_CORRECT",
2093 "BriefDescription": "initial scope=node/chip and data from local node (local) (pred successful)",
2094 "PublicDescription": ""
2095 },
2096 {,
2097 "EventCode": "0xb29086",
2098 "EventName": "PM_L3_LOC_GUESS_WRONG",
2099 "BriefDescription": "Initial scope=node but data from out side local node (near or far or rem). Prediction too Low",
2100 "PublicDescription": ""
2101 },
2102 {,
2103 "EventCode": "0x218082",
2104 "EventName": "PM_L3_MISS",
2105 "BriefDescription": "L3 Misses",
2106 "PublicDescription": ""
2107 },
2108 {,
2109 "EventCode": "0x54808c",
2110 "EventName": "PM_L3_P0_CO_L31",
2111 "BriefDescription": "l3 CO to L3.1 (lco) port 0",
2112 "PublicDescription": ""
2113 },
2114 {,
2115 "EventCode": "0x538088",
2116 "EventName": "PM_L3_P0_CO_MEM",
2117 "BriefDescription": "l3 CO to memory port 0",
2118 "PublicDescription": ""
2119 },
2120 {,
2121 "EventCode": "0x929084",
2122 "EventName": "PM_L3_P0_CO_RTY",
2123 "BriefDescription": "L3 CO received retry port 0",
2124 "PublicDescription": ""
2125 },
2126 {,
2127 "EventCode": "0xa29084",
2128 "EventName": "PM_L3_P0_GRP_PUMP",
2129 "BriefDescription": "L3 pf sent with grp scope port 0",
2130 "PublicDescription": ""
2131 },
2132 {,
2133 "EventCode": "0x528084",
2134 "EventName": "PM_L3_P0_LCO_DATA",
2135 "BriefDescription": "lco sent with data port 0",
2136 "PublicDescription": ""
2137 },
2138 {,
2139 "EventCode": "0x518080",
2140 "EventName": "PM_L3_P0_LCO_NO_DATA",
2141 "BriefDescription": "dataless l3 lco sent port 0",
2142 "PublicDescription": ""
2143 },
2144 {,
2145 "EventCode": "0xa4908c",
2146 "EventName": "PM_L3_P0_LCO_RTY",
2147 "BriefDescription": "L3 LCO received retry port 0",
2148 "PublicDescription": ""
2149 },
2150 {,
2151 "EventCode": "0xa19080",
2152 "EventName": "PM_L3_P0_NODE_PUMP",
2153 "BriefDescription": "L3 pf sent with nodal scope port 0",
2154 "PublicDescription": ""
2155 },
2156 {,
2157 "EventCode": "0x919080",
2158 "EventName": "PM_L3_P0_PF_RTY",
2159 "BriefDescription": "L3 PF received retry port 0",
2160 "PublicDescription": ""
2161 },
2162 {,
2163 "EventCode": "0x939088",
2164 "EventName": "PM_L3_P0_SN_HIT",
2165 "BriefDescription": "L3 snoop hit port 0",
2166 "PublicDescription": ""
2167 },
2168 {,
2169 "EventCode": "0x118080",
2170 "EventName": "PM_L3_P0_SN_INV",
2171 "BriefDescription": "Port0 snooper detects someone doing a store to a line thats Sx",
2172 "PublicDescription": ""
2173 },
2174 {,
2175 "EventCode": "0x94908c",
2176 "EventName": "PM_L3_P0_SN_MISS",
2177 "BriefDescription": "L3 snoop miss port 0",
2178 "PublicDescription": ""
2179 },
2180 {,
2181 "EventCode": "0xa39088",
2182 "EventName": "PM_L3_P0_SYS_PUMP",
2183 "BriefDescription": "L3 pf sent with sys scope port 0",
2184 "PublicDescription": ""
2185 },
2186 {,
2187 "EventCode": "0x54808e",
2188 "EventName": "PM_L3_P1_CO_L31",
2189 "BriefDescription": "l3 CO to L3.1 (lco) port 1",
2190 "PublicDescription": ""
2191 },
2192 {,
2193 "EventCode": "0x53808a",
2194 "EventName": "PM_L3_P1_CO_MEM",
2195 "BriefDescription": "l3 CO to memory port 1",
2196 "PublicDescription": ""
2197 },
2198 {,
2199 "EventCode": "0x929086",
2200 "EventName": "PM_L3_P1_CO_RTY",
2201 "BriefDescription": "L3 CO received retry port 1",
2202 "PublicDescription": ""
2203 },
2204 {,
2205 "EventCode": "0xa29086",
2206 "EventName": "PM_L3_P1_GRP_PUMP",
2207 "BriefDescription": "L3 pf sent with grp scope port 1",
2208 "PublicDescription": ""
2209 },
2210 {,
2211 "EventCode": "0x528086",
2212 "EventName": "PM_L3_P1_LCO_DATA",
2213 "BriefDescription": "lco sent with data port 1",
2214 "PublicDescription": ""
2215 },
2216 {,
2217 "EventCode": "0x518082",
2218 "EventName": "PM_L3_P1_LCO_NO_DATA",
2219 "BriefDescription": "dataless l3 lco sent port 1",
2220 "PublicDescription": ""
2221 },
2222 {,
2223 "EventCode": "0xa4908e",
2224 "EventName": "PM_L3_P1_LCO_RTY",
2225 "BriefDescription": "L3 LCO received retry port 1",
2226 "PublicDescription": ""
2227 },
2228 {,
2229 "EventCode": "0xa19082",
2230 "EventName": "PM_L3_P1_NODE_PUMP",
2231 "BriefDescription": "L3 pf sent with nodal scope port 1",
2232 "PublicDescription": ""
2233 },
2234 {,
2235 "EventCode": "0x919082",
2236 "EventName": "PM_L3_P1_PF_RTY",
2237 "BriefDescription": "L3 PF received retry port 1",
2238 "PublicDescription": ""
2239 },
2240 {,
2241 "EventCode": "0x93908a",
2242 "EventName": "PM_L3_P1_SN_HIT",
2243 "BriefDescription": "L3 snoop hit port 1",
2244 "PublicDescription": ""
2245 },
2246 {,
2247 "EventCode": "0x118082",
2248 "EventName": "PM_L3_P1_SN_INV",
2249 "BriefDescription": "Port1 snooper detects someone doing a store to a line thats Sx",
2250 "PublicDescription": ""
2251 },
2252 {,
2253 "EventCode": "0x94908e",
2254 "EventName": "PM_L3_P1_SN_MISS",
2255 "BriefDescription": "L3 snoop miss port 1",
2256 "PublicDescription": ""
2257 },
2258 {,
2259 "EventCode": "0xa3908a",
2260 "EventName": "PM_L3_P1_SYS_PUMP",
2261 "BriefDescription": "L3 pf sent with sys scope port 1",
2262 "PublicDescription": ""
2263 },
2264 {,
2265 "EventCode": "0x84908d",
2266 "EventName": "PM_L3_PF0_ALLOC",
2267 "BriefDescription": "lifetime, sample of PF machine 0 valid",
2268 "PublicDescription": "0.0"
2269 },
2270 {,
2271 "EventCode": "0x84908c",
2272 "EventName": "PM_L3_PF0_BUSY",
2273 "BriefDescription": "lifetime, sample of PF machine 0 valid",
2274 "PublicDescription": ""
2275 },
2276 {,
2277 "EventCode": "0x428084",
2278 "EventName": "PM_L3_PF_HIT_L3",
2279 "BriefDescription": "l3 pf hit in l3",
2280 "PublicDescription": ""
2281 },
2282 {,
2283 "EventCode": "0x18080",
2284 "EventName": "PM_L3_PF_MISS_L3",
2285 "BriefDescription": "L3 Prefetch missed in L3",
2286 "PublicDescription": ""
2287 },
2288 {,
2289 "EventCode": "0x3808a",
2290 "EventName": "PM_L3_PF_OFF_CHIP_CACHE",
2291 "BriefDescription": "L3 Prefetch from Off chip cache",
2292 "PublicDescription": ""
2293 },
2294 {,
2295 "EventCode": "0x4808e",
2296 "EventName": "PM_L3_PF_OFF_CHIP_MEM",
2297 "BriefDescription": "L3 Prefetch from Off chip memory",
2298 "PublicDescription": ""
2299 },
2300 {,
2301 "EventCode": "0x38088",
2302 "EventName": "PM_L3_PF_ON_CHIP_CACHE",
2303 "BriefDescription": "L3 Prefetch from On chip cache",
2304 "PublicDescription": ""
2305 },
2306 {,
2307 "EventCode": "0x4808c",
2308 "EventName": "PM_L3_PF_ON_CHIP_MEM",
2309 "BriefDescription": "L3 Prefetch from On chip memory",
2310 "PublicDescription": ""
2311 },
2312 {,
2313 "EventCode": "0x829084",
2314 "EventName": "PM_L3_PF_USAGE",
2315 "BriefDescription": "rotating sample of 32 PF actives",
2316 "PublicDescription": ""
2317 },
2318 {,
2319 "EventCode": "0x4e052",
2320 "EventName": "PM_L3_PREF_ALL",
2321 "BriefDescription": "Total HW L3 prefetches(Load+store)",
2322 "PublicDescription": ""
2323 },
2324 {,
2325 "EventCode": "0x84908f",
2326 "EventName": "PM_L3_RD0_ALLOC",
2327 "BriefDescription": "lifetime, sample of RD machine 0 valid",
2328 "PublicDescription": "0.0"
2329 },
2330 {,
2331 "EventCode": "0x84908e",
2332 "EventName": "PM_L3_RD0_BUSY",
2333 "BriefDescription": "lifetime, sample of RD machine 0 valid",
2334 "PublicDescription": ""
2335 },
2336 {,
2337 "EventCode": "0x829086",
2338 "EventName": "PM_L3_RD_USAGE",
2339 "BriefDescription": "rotating sample of 16 RD actives",
2340 "PublicDescription": ""
2341 },
2342 {,
2343 "EventCode": "0x839089",
2344 "EventName": "PM_L3_SN0_ALLOC",
2345 "BriefDescription": "lifetime, sample of snooper machine 0 valid",
2346 "PublicDescription": "0.0"
2347 },
2348 {,
2349 "EventCode": "0x839088",
2350 "EventName": "PM_L3_SN0_BUSY",
2351 "BriefDescription": "lifetime, sample of snooper machine 0 valid",
2352 "PublicDescription": ""
2353 },
2354 {,
2355 "EventCode": "0x819080",
2356 "EventName": "PM_L3_SN_USAGE",
2357 "BriefDescription": "rotating sample of 8 snoop valids",
2358 "PublicDescription": ""
2359 },
2360 {,
2361 "EventCode": "0x2e052",
2362 "EventName": "PM_L3_ST_PREF",
2363 "BriefDescription": "L3 store Prefetches",
2364 "PublicDescription": ""
2365 },
2366 {,
2367 "EventCode": "0x3e052",
2368 "EventName": "PM_L3_SW_PREF",
2369 "BriefDescription": "Data stream touchto L3",
2370 "PublicDescription": ""
2371 },
2372 {,
2373 "EventCode": "0xb29084",
2374 "EventName": "PM_L3_SYS_GUESS_CORRECT",
2375 "BriefDescription": "Initial scope=system and data from outside group (far or rem)(pred successful)",
2376 "PublicDescription": ""
2377 },
2378 {,
2379 "EventCode": "0xb4908c",
2380 "EventName": "PM_L3_SYS_GUESS_WRONG",
2381 "BriefDescription": "Initial scope=system but data from local or near. Predction too high",
2382 "PublicDescription": ""
2383 },
2384 {,
2385 "EventCode": "0x24808e",
2386 "EventName": "PM_L3_TRANS_PF",
2387 "BriefDescription": "L3 Transient prefetch",
2388 "PublicDescription": ""
2389 },
2390 {,
2391 "EventCode": "0x18081",
2392 "EventName": "PM_L3_WI0_ALLOC",
2393 "BriefDescription": "lifetime, sample of Write Inject machine 0 valid",
2394 "PublicDescription": "0.0"
2395 },
2396 {,
2397 "EventCode": "0x418080",
2398 "EventName": "PM_L3_WI0_BUSY",
2399 "BriefDescription": "lifetime, sample of Write Inject machine 0 valid",
2400 "PublicDescription": ""
2401 },
2402 {,
2403 "EventCode": "0x418082",
2404 "EventName": "PM_L3_WI_USAGE",
2405 "BriefDescription": "rotating sample of 8 WI actives",
2406 "PublicDescription": ""
2407 },
2408 {,
2409 "EventCode": "0xc080",
2410 "EventName": "PM_LD_REF_L1_LSU0",
2411 "BriefDescription": "LS0 L1 D cache load references counted at finish, gated by reject",
2412 "PublicDescription": "LS0 L1 D cache load references counted at finish, gated by rejectLSU0 L1 D cache load references"
2413 },
2414 {,
2415 "EventCode": "0xc082",
2416 "EventName": "PM_LD_REF_L1_LSU1",
2417 "BriefDescription": "LS1 L1 D cache load references counted at finish, gated by reject",
2418 "PublicDescription": "LS1 L1 D cache load references counted at finish, gated by rejectLSU1 L1 D cache load references"
2419 },
2420 {,
2421 "EventCode": "0xc094",
2422 "EventName": "PM_LD_REF_L1_LSU2",
2423 "BriefDescription": "LS2 L1 D cache load references counted at finish, gated by reject",
2424 "PublicDescription": "LS2 L1 D cache load references counted at finish, gated by reject42"
2425 },
2426 {,
2427 "EventCode": "0xc096",
2428 "EventName": "PM_LD_REF_L1_LSU3",
2429 "BriefDescription": "LS3 L1 D cache load references counted at finish, gated by reject",
2430 "PublicDescription": "LS3 L1 D cache load references counted at finish, gated by reject42"
2431 },
2432 {,
2433 "EventCode": "0x509a",
2434 "EventName": "PM_LINK_STACK_INVALID_PTR",
2435 "BriefDescription": "A flush were LS ptr is invalid, results in a pop , A lot of interrupts between push and pops",
2436 "PublicDescription": ""
2437 },
2438 {,
2439 "EventCode": "0x5098",
2440 "EventName": "PM_LINK_STACK_WRONG_ADD_PRED",
2441 "BriefDescription": "Link stack predicts wrong address, because of link stack design limitation",
2442 "PublicDescription": ""
2443 },
2444 {,
2445 "EventCode": "0xe080",
2446 "EventName": "PM_LS0_ERAT_MISS_PREF",
2447 "BriefDescription": "LS0 Erat miss due to prefetch",
2448 "PublicDescription": "LS0 Erat miss due to prefetch42"
2449 },
2450 {,
2451 "EventCode": "0xd0b8",
2452 "EventName": "PM_LS0_L1_PREF",
2453 "BriefDescription": "LS0 L1 cache data prefetches",
2454 "PublicDescription": "LS0 L1 cache data prefetches42"
2455 },
2456 {,
2457 "EventCode": "0xc098",
2458 "EventName": "PM_LS0_L1_SW_PREF",
2459 "BriefDescription": "Software L1 Prefetches, including SW Transient Prefetches",
2460 "PublicDescription": "Software L1 Prefetches, including SW Transient Prefetches42"
2461 },
2462 {,
2463 "EventCode": "0xe082",
2464 "EventName": "PM_LS1_ERAT_MISS_PREF",
2465 "BriefDescription": "LS1 Erat miss due to prefetch",
2466 "PublicDescription": "LS1 Erat miss due to prefetch42"
2467 },
2468 {,
2469 "EventCode": "0xd0ba",
2470 "EventName": "PM_LS1_L1_PREF",
2471 "BriefDescription": "LS1 L1 cache data prefetches",
2472 "PublicDescription": "LS1 L1 cache data prefetches42"
2473 },
2474 {,
2475 "EventCode": "0xc09a",
2476 "EventName": "PM_LS1_L1_SW_PREF",
2477 "BriefDescription": "Software L1 Prefetches, including SW Transient Prefetches",
2478 "PublicDescription": "Software L1 Prefetches, including SW Transient Prefetches42"
2479 },
2480 {,
2481 "EventCode": "0xc0b0",
2482 "EventName": "PM_LSU0_FLUSH_LRQ",
2483 "BriefDescription": "LS0 Flush: LRQ",
2484 "PublicDescription": "LS0 Flush: LRQLSU0 LRQ flushes"
2485 },
2486 {,
2487 "EventCode": "0xc0b8",
2488 "EventName": "PM_LSU0_FLUSH_SRQ",
2489 "BriefDescription": "LS0 Flush: SRQ",
2490 "PublicDescription": "LS0 Flush: SRQLSU0 SRQ lhs flushes"
2491 },
2492 {,
2493 "EventCode": "0xc0a4",
2494 "EventName": "PM_LSU0_FLUSH_ULD",
2495 "BriefDescription": "LS0 Flush: Unaligned Load",
2496 "PublicDescription": "LS0 Flush: Unaligned LoadLSU0 unaligned load flushes"
2497 },
2498 {,
2499 "EventCode": "0xc0ac",
2500 "EventName": "PM_LSU0_FLUSH_UST",
2501 "BriefDescription": "LS0 Flush: Unaligned Store",
2502 "PublicDescription": "LS0 Flush: Unaligned StoreLSU0 unaligned store flushes"
2503 },
2504 {,
2505 "EventCode": "0xf088",
2506 "EventName": "PM_LSU0_L1_CAM_CANCEL",
2507 "BriefDescription": "ls0 l1 tm cam cancel",
2508 "PublicDescription": "ls0 l1 tm cam cancel42"
2509 },
2510 {,
2511 "EventCode": "0x1e056",
2512 "EventName": "PM_LSU0_LARX_FIN",
2513 "BriefDescription": "Larx finished in LSU pipe0",
2514 "PublicDescription": ""
2515 },
2516 {,
2517 "EventCode": "0xd08c",
2518 "EventName": "PM_LSU0_LMQ_LHR_MERGE",
2519 "BriefDescription": "LS0 Load Merged with another cacheline request",
2520 "PublicDescription": "LS0 Load Merged with another cacheline request42"
2521 },
2522 {,
2523 "EventCode": "0xc08c",
2524 "EventName": "PM_LSU0_NCLD",
2525 "BriefDescription": "LS0 Non-cachable Loads counted at finish",
2526 "PublicDescription": "LS0 Non-cachable Loads counted at finishLSU0 non-cacheable loads"
2527 },
2528 {,
2529 "EventCode": "0xe090",
2530 "EventName": "PM_LSU0_PRIMARY_ERAT_HIT",
2531 "BriefDescription": "Primary ERAT hit",
2532 "PublicDescription": "Primary ERAT hit42"
2533 },
2534 {,
2535 "EventCode": "0x1e05a",
2536 "EventName": "PM_LSU0_REJECT",
2537 "BriefDescription": "LSU0 reject",
2538 "PublicDescription": ""
2539 },
2540 {,
2541 "EventCode": "0xc09c",
2542 "EventName": "PM_LSU0_SRQ_STFWD",
2543 "BriefDescription": "LS0 SRQ forwarded data to a load",
2544 "PublicDescription": "LS0 SRQ forwarded data to a loadLSU0 SRQ store forwarded"
2545 },
2546 {,
2547 "EventCode": "0xf084",
2548 "EventName": "PM_LSU0_STORE_REJECT",
2549 "BriefDescription": "ls0 store reject",
2550 "PublicDescription": "ls0 store reject42"
2551 },
2552 {,
2553 "EventCode": "0xe0a8",
2554 "EventName": "PM_LSU0_TMA_REQ_L2",
2555 "BriefDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding",
2556 "PublicDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding42"
2557 },
2558 {,
2559 "EventCode": "0xe098",
2560 "EventName": "PM_LSU0_TM_L1_HIT",
2561 "BriefDescription": "Load tm hit in L1",
2562 "PublicDescription": "Load tm hit in L142"
2563 },
2564 {,
2565 "EventCode": "0xe0a0",
2566 "EventName": "PM_LSU0_TM_L1_MISS",
2567 "BriefDescription": "Load tm L1 miss",
2568 "PublicDescription": "Load tm L1 miss42"
2569 },
2570 {,
2571 "EventCode": "0xc0b2",
2572 "EventName": "PM_LSU1_FLUSH_LRQ",
2573 "BriefDescription": "LS1 Flush: LRQ",
2574 "PublicDescription": "LS1 Flush: LRQLSU1 LRQ flushes"
2575 },
2576 {,
2577 "EventCode": "0xc0ba",
2578 "EventName": "PM_LSU1_FLUSH_SRQ",
2579 "BriefDescription": "LS1 Flush: SRQ",
2580 "PublicDescription": "LS1 Flush: SRQLSU1 SRQ lhs flushes"
2581 },
2582 {,
2583 "EventCode": "0xc0a6",
2584 "EventName": "PM_LSU1_FLUSH_ULD",
2585 "BriefDescription": "LS 1 Flush: Unaligned Load",
2586 "PublicDescription": "LS 1 Flush: Unaligned LoadLSU1 unaligned load flushes"
2587 },
2588 {,
2589 "EventCode": "0xc0ae",
2590 "EventName": "PM_LSU1_FLUSH_UST",
2591 "BriefDescription": "LS1 Flush: Unaligned Store",
2592 "PublicDescription": "LS1 Flush: Unaligned StoreLSU1 unaligned store flushes"
2593 },
2594 {,
2595 "EventCode": "0xf08a",
2596 "EventName": "PM_LSU1_L1_CAM_CANCEL",
2597 "BriefDescription": "ls1 l1 tm cam cancel",
2598 "PublicDescription": "ls1 l1 tm cam cancel42"
2599 },
2600 {,
2601 "EventCode": "0x2e056",
2602 "EventName": "PM_LSU1_LARX_FIN",
2603 "BriefDescription": "Larx finished in LSU pipe1",
2604 "PublicDescription": ""
2605 },
2606 {,
2607 "EventCode": "0xd08e",
2608 "EventName": "PM_LSU1_LMQ_LHR_MERGE",
2609 "BriefDescription": "LS1 Load Merge with another cacheline request",
2610 "PublicDescription": "LS1 Load Merge with another cacheline request42"
2611 },
2612 {,
2613 "EventCode": "0xc08e",
2614 "EventName": "PM_LSU1_NCLD",
2615 "BriefDescription": "LS1 Non-cachable Loads counted at finish",
2616 "PublicDescription": "LS1 Non-cachable Loads counted at finishLSU1 non-cacheable loads"
2617 },
2618 {,
2619 "EventCode": "0xe092",
2620 "EventName": "PM_LSU1_PRIMARY_ERAT_HIT",
2621 "BriefDescription": "Primary ERAT hit",
2622 "PublicDescription": "Primary ERAT hit42"
2623 },
2624 {,
2625 "EventCode": "0x2e05a",
2626 "EventName": "PM_LSU1_REJECT",
2627 "BriefDescription": "LSU1 reject",
2628 "PublicDescription": ""
2629 },
2630 {,
2631 "EventCode": "0xc09e",
2632 "EventName": "PM_LSU1_SRQ_STFWD",
2633 "BriefDescription": "LS1 SRQ forwarded data to a load",
2634 "PublicDescription": "LS1 SRQ forwarded data to a loadLSU1 SRQ store forwarded"
2635 },
2636 {,
2637 "EventCode": "0xf086",
2638 "EventName": "PM_LSU1_STORE_REJECT",
2639 "BriefDescription": "ls1 store reject",
2640 "PublicDescription": "ls1 store reject42"
2641 },
2642 {,
2643 "EventCode": "0xe0aa",
2644 "EventName": "PM_LSU1_TMA_REQ_L2",
2645 "BriefDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding",
2646 "PublicDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding42"
2647 },
2648 {,
2649 "EventCode": "0xe09a",
2650 "EventName": "PM_LSU1_TM_L1_HIT",
2651 "BriefDescription": "Load tm hit in L1",
2652 "PublicDescription": "Load tm hit in L142"
2653 },
2654 {,
2655 "EventCode": "0xe0a2",
2656 "EventName": "PM_LSU1_TM_L1_MISS",
2657 "BriefDescription": "Load tm L1 miss",
2658 "PublicDescription": "Load tm L1 miss42"
2659 },
2660 {,
2661 "EventCode": "0xc0b4",
2662 "EventName": "PM_LSU2_FLUSH_LRQ",
2663 "BriefDescription": "LS02Flush: LRQ",
2664 "PublicDescription": "LS02Flush: LRQ42"
2665 },
2666 {,
2667 "EventCode": "0xc0bc",
2668 "EventName": "PM_LSU2_FLUSH_SRQ",
2669 "BriefDescription": "LS2 Flush: SRQ",
2670 "PublicDescription": "LS2 Flush: SRQ42"
2671 },
2672 {,
2673 "EventCode": "0xc0a8",
2674 "EventName": "PM_LSU2_FLUSH_ULD",
2675 "BriefDescription": "LS3 Flush: Unaligned Load",
2676 "PublicDescription": "LS3 Flush: Unaligned Load42"
2677 },
2678 {,
2679 "EventCode": "0xf08c",
2680 "EventName": "PM_LSU2_L1_CAM_CANCEL",
2681 "BriefDescription": "ls2 l1 tm cam cancel",
2682 "PublicDescription": "ls2 l1 tm cam cancel42"
2683 },
2684 {,
2685 "EventCode": "0x3e056",
2686 "EventName": "PM_LSU2_LARX_FIN",
2687 "BriefDescription": "Larx finished in LSU pipe2",
2688 "PublicDescription": ""
2689 },
2690 {,
2691 "EventCode": "0xc084",
2692 "EventName": "PM_LSU2_LDF",
2693 "BriefDescription": "LS2 Scalar Loads",
2694 "PublicDescription": "LS2 Scalar Loads42"
2695 },
2696 {,
2697 "EventCode": "0xc088",
2698 "EventName": "PM_LSU2_LDX",
2699 "BriefDescription": "LS0 Vector Loads",
2700 "PublicDescription": "LS0 Vector Loads42"
2701 },
2702 {,
2703 "EventCode": "0xd090",
2704 "EventName": "PM_LSU2_LMQ_LHR_MERGE",
2705 "BriefDescription": "LS0 Load Merged with another cacheline request",
2706 "PublicDescription": "LS0 Load Merged with another cacheline request42"
2707 },
2708 {,
2709 "EventCode": "0xe094",
2710 "EventName": "PM_LSU2_PRIMARY_ERAT_HIT",
2711 "BriefDescription": "Primary ERAT hit",
2712 "PublicDescription": "Primary ERAT hit42"
2713 },
2714 {,
2715 "EventCode": "0x3e05a",
2716 "EventName": "PM_LSU2_REJECT",
2717 "BriefDescription": "LSU2 reject",
2718 "PublicDescription": ""
2719 },
2720 {,
2721 "EventCode": "0xc0a0",
2722 "EventName": "PM_LSU2_SRQ_STFWD",
2723 "BriefDescription": "LS2 SRQ forwarded data to a load",
2724 "PublicDescription": "LS2 SRQ forwarded data to a load42"
2725 },
2726 {,
2727 "EventCode": "0xe0ac",
2728 "EventName": "PM_LSU2_TMA_REQ_L2",
2729 "BriefDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding",
2730 "PublicDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding42"
2731 },
2732 {,
2733 "EventCode": "0xe09c",
2734 "EventName": "PM_LSU2_TM_L1_HIT",
2735 "BriefDescription": "Load tm hit in L1",
2736 "PublicDescription": "Load tm hit in L142"
2737 },
2738 {,
2739 "EventCode": "0xe0a4",
2740 "EventName": "PM_LSU2_TM_L1_MISS",
2741 "BriefDescription": "Load tm L1 miss",
2742 "PublicDescription": "Load tm L1 miss42"
2743 },
2744 {,
2745 "EventCode": "0xc0b6",
2746 "EventName": "PM_LSU3_FLUSH_LRQ",
2747 "BriefDescription": "LS3 Flush: LRQ",
2748 "PublicDescription": "LS3 Flush: LRQ42"
2749 },
2750 {,
2751 "EventCode": "0xc0be",
2752 "EventName": "PM_LSU3_FLUSH_SRQ",
2753 "BriefDescription": "LS13 Flush: SRQ",
2754 "PublicDescription": "LS13 Flush: SRQ42"
2755 },
2756 {,
2757 "EventCode": "0xc0aa",
2758 "EventName": "PM_LSU3_FLUSH_ULD",
2759 "BriefDescription": "LS 14Flush: Unaligned Load",
2760 "PublicDescription": "LS 14Flush: Unaligned Load42"
2761 },
2762 {,
2763 "EventCode": "0xf08e",
2764 "EventName": "PM_LSU3_L1_CAM_CANCEL",
2765 "BriefDescription": "ls3 l1 tm cam cancel",
2766 "PublicDescription": "ls3 l1 tm cam cancel42"
2767 },
2768 {,
2769 "EventCode": "0x4e056",
2770 "EventName": "PM_LSU3_LARX_FIN",
2771 "BriefDescription": "Larx finished in LSU pipe3",
2772 "PublicDescription": ""
2773 },
2774 {,
2775 "EventCode": "0xc086",
2776 "EventName": "PM_LSU3_LDF",
2777 "BriefDescription": "LS3 Scalar Loads",
2778 "PublicDescription": "LS3 Scalar Loads 42"
2779 },
2780 {,
2781 "EventCode": "0xc08a",
2782 "EventName": "PM_LSU3_LDX",
2783 "BriefDescription": "LS1 Vector Loads",
2784 "PublicDescription": "LS1 Vector Loads42"
2785 },
2786 {,
2787 "EventCode": "0xd092",
2788 "EventName": "PM_LSU3_LMQ_LHR_MERGE",
2789 "BriefDescription": "LS1 Load Merge with another cacheline request",
2790 "PublicDescription": "LS1 Load Merge with another cacheline request42"
2791 },
2792 {,
2793 "EventCode": "0xe096",
2794 "EventName": "PM_LSU3_PRIMARY_ERAT_HIT",
2795 "BriefDescription": "Primary ERAT hit",
2796 "PublicDescription": "Primary ERAT hit42"
2797 },
2798 {,
2799 "EventCode": "0x4e05a",
2800 "EventName": "PM_LSU3_REJECT",
2801 "BriefDescription": "LSU3 reject",
2802 "PublicDescription": ""
2803 },
2804 {,
2805 "EventCode": "0xc0a2",
2806 "EventName": "PM_LSU3_SRQ_STFWD",
2807 "BriefDescription": "LS3 SRQ forwarded data to a load",
2808 "PublicDescription": "LS3 SRQ forwarded data to a load42"
2809 },
2810 {,
2811 "EventCode": "0xe0ae",
2812 "EventName": "PM_LSU3_TMA_REQ_L2",
2813 "BriefDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding",
2814 "PublicDescription": "addrs only req to L2 only on the first one,Indication that Load footprint is not expanding42"
2815 },
2816 {,
2817 "EventCode": "0xe09e",
2818 "EventName": "PM_LSU3_TM_L1_HIT",
2819 "BriefDescription": "Load tm hit in L1",
2820 "PublicDescription": "Load tm hit in L142"
2821 },
2822 {,
2823 "EventCode": "0xe0a6",
2824 "EventName": "PM_LSU3_TM_L1_MISS",
2825 "BriefDescription": "Load tm L1 miss",
2826 "PublicDescription": "Load tm L1 miss42"
2827 },
2828 {,
2829 "EventCode": "0xe880",
2830 "EventName": "PM_LSU_ERAT_MISS_PREF",
2831 "BriefDescription": "Erat miss due to prefetch, on either pipe",
2832 "PublicDescription": "LSU"
2833 },
2834 {,
2835 "EventCode": "0xc8ac",
2836 "EventName": "PM_LSU_FLUSH_UST",
2837 "BriefDescription": "Unaligned Store Flush on either pipe",
2838 "PublicDescription": "LSU"
2839 },
2840 {,
2841 "EventCode": "0xd0a4",
2842 "EventName": "PM_LSU_FOUR_TABLEWALK_CYC",
2843 "BriefDescription": "Cycles when four tablewalks pending on this thread",
2844 "PublicDescription": "Cycles when four tablewalks pending on this thread42"
2845 },
2846 {,
2847 "EventCode": "0x10066",
2848 "EventName": "PM_LSU_FX_FIN",
2849 "BriefDescription": "LSU Finished a FX operation (up to 2 per cycle",
2850 "PublicDescription": ""
2851 },
2852 {,
2853 "EventCode": "0xd8b8",
2854 "EventName": "PM_LSU_L1_PREF",
2855 "BriefDescription": "hw initiated , include sw streaming forms as well , include sw streams as a separate event",
2856 "PublicDescription": "LSU"
2857 },
2858 {,
2859 "EventCode": "0xc898",
2860 "EventName": "PM_LSU_L1_SW_PREF",
2861 "BriefDescription": "Software L1 Prefetches, including SW Transient Prefetches, on both pipes",
2862 "PublicDescription": "LSU"
2863 },
2864 {,
2865 "EventCode": "0xc884",
2866 "EventName": "PM_LSU_LDF",
2867 "BriefDescription": "FPU loads only on LS2/LS3 ie LU0/LU1",
2868 "PublicDescription": "LSU"
2869 },
2870 {,
2871 "EventCode": "0xc888",
2872 "EventName": "PM_LSU_LDX",
2873 "BriefDescription": "Vector loads can issue only on LS2/LS3",
2874 "PublicDescription": "LSU"
2875 },
2876 {,
2877 "EventCode": "0xd0a2",
2878 "EventName": "PM_LSU_LMQ_FULL_CYC",
2879 "BriefDescription": "LMQ full",
2880 "PublicDescription": "LMQ fullCycles LMQ full"
2881 },
2882 {,
2883 "EventCode": "0xd0a1",
2884 "EventName": "PM_LSU_LMQ_S0_ALLOC",
2885 "BriefDescription": "Per thread - use edge detect to count allocates On a per thread basis, level signal indicating Slot 0 is valid. By instrumenting a single slot we can calculate service time for that slot. Previous machines required a separate signal indicating the slot was allocated. Because any signal can be routed to any counter in P8, we can count level in one PMC and edge detect in another PMC using the same signal",
2886 "PublicDescription": "0.0"
2887 },
2888 {,
2889 "EventCode": "0xd0a0",
2890 "EventName": "PM_LSU_LMQ_S0_VALID",
2891 "BriefDescription": "Slot 0 of LMQ valid",
2892 "PublicDescription": "Slot 0 of LMQ validLMQ slot 0 valid"
2893 },
2894 {,
2895 "EventCode": "0x3001c",
2896 "EventName": "PM_LSU_LMQ_SRQ_EMPTY_ALL_CYC",
2897 "BriefDescription": "ALL threads lsu empty (lmq and srq empty)",
2898 "PublicDescription": "ALL threads lsu empty (lmq and srq empty). Issue HW016541"
2899 },
2900 {,
2901 "EventCode": "0xd09f",
2902 "EventName": "PM_LSU_LRQ_S0_ALLOC",
2903 "BriefDescription": "Per thread - use edge detect to count allocates On a per thread basis, level signal indicating Slot 0 is valid. By instrumenting a single slot we can calculate service time for that slot. Previous machines required a separate signal indicating the slot was allocated. Because any signal can be routed to any counter in P8, we can count level in one PMC and edge detect in another PMC using the same signal",
2904 "PublicDescription": "0.0"
2905 },
2906 {,
2907 "EventCode": "0xd09e",
2908 "EventName": "PM_LSU_LRQ_S0_VALID",
2909 "BriefDescription": "Slot 0 of LRQ valid",
2910 "PublicDescription": "Slot 0 of LRQ validLRQ slot 0 valid"
2911 },
2912 {,
2913 "EventCode": "0xf091",
2914 "EventName": "PM_LSU_LRQ_S43_ALLOC",
2915 "BriefDescription": "LRQ slot 43 was released",
2916 "PublicDescription": "0.0"
2917 },
2918 {,
2919 "EventCode": "0xf090",
2920 "EventName": "PM_LSU_LRQ_S43_VALID",
2921 "BriefDescription": "LRQ slot 43 was busy",
2922 "PublicDescription": "LRQ slot 43 was busy42"
2923 },
2924 {,
2925 "EventCode": "0x30162",
2926 "EventName": "PM_LSU_MRK_DERAT_MISS",
2927 "BriefDescription": "DERAT Reloaded (Miss)",
2928 "PublicDescription": ""
2929 },
2930 {,
2931 "EventCode": "0xc88c",
2932 "EventName": "PM_LSU_NCLD",
2933 "BriefDescription": "count at finish so can return only on ls0 or ls1",
2934 "PublicDescription": "LSU"
2935 },
2936 {,
2937 "EventCode": "0xc092",
2938 "EventName": "PM_LSU_NCST",
2939 "BriefDescription": "Non-cachable Stores sent to nest",
2940 "PublicDescription": "Non-cachable Stores sent to nest42"
2941 },
2942 {,
2943 "EventCode": "0x10064",
2944 "EventName": "PM_LSU_REJECT",
2945 "BriefDescription": "LSU Reject (up to 4 per cycle)",
2946 "PublicDescription": ""
2947 },
2948 {,
2949 "EventCode": "0xd082",
2950 "EventName": "PM_LSU_SET_MPRED",
2951 "BriefDescription": "Line already in cache at reload time",
2952 "PublicDescription": "Line already in cache at reload time42"
2953 },
2954 {,
2955 "EventCode": "0x40008",
2956 "EventName": "PM_LSU_SRQ_EMPTY_CYC",
2957 "BriefDescription": "ALL threads srq empty",
2958 "PublicDescription": "All threads srq empty"
2959 },
2960 {,
2961 "EventCode": "0xd09d",
2962 "EventName": "PM_LSU_SRQ_S0_ALLOC",
2963 "BriefDescription": "Per thread - use edge detect to count allocates On a per thread basis, level signal indicating Slot 0 is valid. By instrumenting a single slot we can calculate service time for that slot. Previous machines required a separate signal indicating the slot was allocated. Because any signal can be routed to any counter in P8, we can count level in one PMC and edge detect in another PMC using the same signal",
2964 "PublicDescription": "0.0"
2965 },
2966 {,
2967 "EventCode": "0xd09c",
2968 "EventName": "PM_LSU_SRQ_S0_VALID",
2969 "BriefDescription": "Slot 0 of SRQ valid",
2970 "PublicDescription": "Slot 0 of SRQ validSRQ slot 0 valid"
2971 },
2972 {,
2973 "EventCode": "0xf093",
2974 "EventName": "PM_LSU_SRQ_S39_ALLOC",
2975 "BriefDescription": "SRQ slot 39 was released",
2976 "PublicDescription": "0.0"
2977 },
2978 {,
2979 "EventCode": "0xf092",
2980 "EventName": "PM_LSU_SRQ_S39_VALID",
2981 "BriefDescription": "SRQ slot 39 was busy",
2982 "PublicDescription": "SRQ slot 39 was busy42"
2983 },
2984 {,
2985 "EventCode": "0xd09b",
2986 "EventName": "PM_LSU_SRQ_SYNC",
2987 "BriefDescription": "A sync in the SRQ ended",
2988 "PublicDescription": "0.0"
2989 },
2990 {,
2991 "EventCode": "0xd09a",
2992 "EventName": "PM_LSU_SRQ_SYNC_CYC",
2993 "BriefDescription": "A sync is in the SRQ (edge detect to count)",
2994 "PublicDescription": "A sync is in the SRQ (edge detect to count)SRQ sync duration"
2995 },
2996 {,
2997 "EventCode": "0xf084",
2998 "EventName": "PM_LSU_STORE_REJECT",
2999 "BriefDescription": "Store reject on either pipe",
3000 "PublicDescription": "LSU"
3001 },
3002 {,
3003 "EventCode": "0xd0a6",
3004 "EventName": "PM_LSU_TWO_TABLEWALK_CYC",
3005 "BriefDescription": "Cycles when two tablewalks pending on this thread",
3006 "PublicDescription": "Cycles when two tablewalks pending on this thread42"
3007 },
3008 {,
3009 "EventCode": "0x5094",
3010 "EventName": "PM_LWSYNC",
3011 "BriefDescription": "threaded version, IC Misses where we got EA dir hit but no sector valids were on. ICBI took line out",
3012 "PublicDescription": ""
3013 },
3014 {,
3015 "EventCode": "0x209a",
3016 "EventName": "PM_LWSYNC_HELD",
3017 "BriefDescription": "LWSYNC held at dispatch",
3018 "PublicDescription": ""
3019 },
3020 {,
3021 "EventCode": "0x3013a",
3022 "EventName": "PM_MRK_CRU_FIN",
3023 "BriefDescription": "IFU non-branch finished",
3024 "PublicDescription": "IFU non-branch marked instruction finished"
3025 },
3026 {,
3027 "EventCode": "0x4d146",
3028 "EventName": "PM_MRK_DATA_FROM_L21_MOD",
3029 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L2 on the same chip due to a marked load",
3030 "PublicDescription": ""
3031 },
3032 {,
3033 "EventCode": "0x2d126",
3034 "EventName": "PM_MRK_DATA_FROM_L21_MOD_CYC",
3035 "BriefDescription": "Duration in cycles to reload with Modified (M) data from another core's L2 on the same chip due to a marked load",
3036 "PublicDescription": ""
3037 },
3038 {,
3039 "EventCode": "0x3d146",
3040 "EventName": "PM_MRK_DATA_FROM_L21_SHR",
3041 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L2 on the same chip due to a marked load",
3042 "PublicDescription": ""
3043 },
3044 {,
3045 "EventCode": "0x2c126",
3046 "EventName": "PM_MRK_DATA_FROM_L21_SHR_CYC",
3047 "BriefDescription": "Duration in cycles to reload with Shared (S) data from another core's L2 on the same chip due to a marked load",
3048 "PublicDescription": ""
3049 },
3050 {,
3051 "EventCode": "0x4d144",
3052 "EventName": "PM_MRK_DATA_FROM_L31_ECO_MOD",
3053 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's ECO L3 on the same chip due to a marked load",
3054 "PublicDescription": ""
3055 },
3056 {,
3057 "EventCode": "0x2d124",
3058 "EventName": "PM_MRK_DATA_FROM_L31_ECO_MOD_CYC",
3059 "BriefDescription": "Duration in cycles to reload with Modified (M) data from another core's ECO L3 on the same chip due to a marked load",
3060 "PublicDescription": ""
3061 },
3062 {,
3063 "EventCode": "0x3d144",
3064 "EventName": "PM_MRK_DATA_FROM_L31_ECO_SHR",
3065 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's ECO L3 on the same chip due to a marked load",
3066 "PublicDescription": ""
3067 },
3068 {,
3069 "EventCode": "0x2c124",
3070 "EventName": "PM_MRK_DATA_FROM_L31_ECO_SHR_CYC",
3071 "BriefDescription": "Duration in cycles to reload with Shared (S) data from another core's ECO L3 on the same chip due to a marked load",
3072 "PublicDescription": ""
3073 },
3074 {,
3075 "EventCode": "0x2d144",
3076 "EventName": "PM_MRK_DATA_FROM_L31_MOD",
3077 "BriefDescription": "The processor's data cache was reloaded with Modified (M) data from another core's L3 on the same chip due to a marked load",
3078 "PublicDescription": ""
3079 },
3080 {,
3081 "EventCode": "0x4d124",
3082 "EventName": "PM_MRK_DATA_FROM_L31_MOD_CYC",
3083 "BriefDescription": "Duration in cycles to reload with Modified (M) data from another core's L3 on the same chip due to a marked load",
3084 "PublicDescription": ""
3085 },
3086 {,
3087 "EventCode": "0x1d146",
3088 "EventName": "PM_MRK_DATA_FROM_L31_SHR",
3089 "BriefDescription": "The processor's data cache was reloaded with Shared (S) data from another core's L3 on the same chip due to a marked load",
3090 "PublicDescription": ""
3091 },
3092 {,
3093 "EventCode": "0x4c126",
3094 "EventName": "PM_MRK_DATA_FROM_L31_SHR_CYC",
3095 "BriefDescription": "Duration in cycles to reload with Shared (S) data from another core's L3 on the same chip due to a marked load",
3096 "PublicDescription": ""
3097 },
3098 {,
3099 "EventCode": "0x201e0",
3100 "EventName": "PM_MRK_DATA_FROM_MEM",
3101 "BriefDescription": "The processor's data cache was reloaded from a memory location including L4 from local remote or distant due to a marked load",
3102 "PublicDescription": ""
3103 },
3104 {,
3105 "EventCode": "0x4f146",
3106 "EventName": "PM_MRK_DPTEG_FROM_L21_MOD",
3107 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's L2 on the same chip due to a marked data side request",
3108 "PublicDescription": ""
3109 },
3110 {,
3111 "EventCode": "0x3f146",
3112 "EventName": "PM_MRK_DPTEG_FROM_L21_SHR",
3113 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's L2 on the same chip due to a marked data side request",
3114 "PublicDescription": ""
3115 },
3116 {,
3117 "EventCode": "0x3f140",
3118 "EventName": "PM_MRK_DPTEG_FROM_L2_DISP_CONFLICT_LDHITST",
3119 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 with load hit store conflict due to a marked data side request",
3120 "PublicDescription": ""
3121 },
3122 {,
3123 "EventCode": "0x4f140",
3124 "EventName": "PM_MRK_DPTEG_FROM_L2_DISP_CONFLICT_OTHER",
3125 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 with dispatch conflict due to a marked data side request",
3126 "PublicDescription": ""
3127 },
3128 {,
3129 "EventCode": "0x4f144",
3130 "EventName": "PM_MRK_DPTEG_FROM_L31_ECO_MOD",
3131 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's ECO L3 on the same chip due to a marked data side request",
3132 "PublicDescription": ""
3133 },
3134 {,
3135 "EventCode": "0x3f144",
3136 "EventName": "PM_MRK_DPTEG_FROM_L31_ECO_SHR",
3137 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's ECO L3 on the same chip due to a marked data side request",
3138 "PublicDescription": ""
3139 },
3140 {,
3141 "EventCode": "0x2f144",
3142 "EventName": "PM_MRK_DPTEG_FROM_L31_MOD",
3143 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another core's L3 on the same chip due to a marked data side request",
3144 "PublicDescription": ""
3145 },
3146 {,
3147 "EventCode": "0x1f146",
3148 "EventName": "PM_MRK_DPTEG_FROM_L31_SHR",
3149 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another core's L3 on the same chip due to a marked data side request",
3150 "PublicDescription": ""
3151 },
3152 {,
3153 "EventCode": "0x30156",
3154 "EventName": "PM_MRK_FAB_RSP_MATCH",
3155 "BriefDescription": "ttype and cresp matched as specified in MMCR1",
3156 "PublicDescription": ""
3157 },
3158 {,
3159 "EventCode": "0x4f152",
3160 "EventName": "PM_MRK_FAB_RSP_MATCH_CYC",
3161 "BriefDescription": "cresp/ttype match cycles",
3162 "PublicDescription": ""
3163 },
3164 {,
3165 "EventCode": "0x2013c",
3166 "EventName": "PM_MRK_FILT_MATCH",
3167 "BriefDescription": "Marked filter Match",
3168 "PublicDescription": ""
3169 },
3170 {,
3171 "EventCode": "0x1013c",
3172 "EventName": "PM_MRK_FIN_STALL_CYC",
3173 "BriefDescription": "Marked instruction Finish Stall cycles (marked finish after NTC) (use edge detect to count )",
3174 "PublicDescription": "Marked instruction Finish Stall cycles (marked finish after NTC) (use edge detect to count #)"
3175 },
3176 {,
3177 "EventCode": "0x40130",
3178 "EventName": "PM_MRK_GRP_CMPL",
3179 "BriefDescription": "marked instruction finished (completed)",
3180 "PublicDescription": ""
3181 },
3182 {,
3183 "EventCode": "0x4013a",
3184 "EventName": "PM_MRK_GRP_IC_MISS",
3185 "BriefDescription": "Marked Group experienced I cache miss",
3186 "PublicDescription": ""
3187 },
3188 {,
3189 "EventCode": "0x3013c",
3190 "EventName": "PM_MRK_GRP_NTC",
3191 "BriefDescription": "Marked group ntc cycles",
3192 "PublicDescription": ""
3193 },
3194 {,
3195 "EventCode": "0x1013f",
3196 "EventName": "PM_MRK_LD_MISS_EXPOSED",
3197 "BriefDescription": "Marked Load exposed Miss (exposed period ended)",
3198 "PublicDescription": "Marked Load exposed Miss (use edge detect to count #)"
3199 },
3200 {,
3201 "EventCode": "0xd180",
3202 "EventName": "PM_MRK_LSU_FLUSH",
3203 "BriefDescription": "Flush: (marked) : All Cases",
3204 "PublicDescription": "Flush: (marked) : All Cases42"
3205 },
3206 {,
3207 "EventCode": "0xd188",
3208 "EventName": "PM_MRK_LSU_FLUSH_LRQ",
3209 "BriefDescription": "Flush: (marked) LRQ",
3210 "PublicDescription": "Flush: (marked) LRQMarked LRQ flushes"
3211 },
3212 {,
3213 "EventCode": "0xd18a",
3214 "EventName": "PM_MRK_LSU_FLUSH_SRQ",
3215 "BriefDescription": "Flush: (marked) SRQ",
3216 "PublicDescription": "Flush: (marked) SRQMarked SRQ lhs flushes"
3217 },
3218 {,
3219 "EventCode": "0xd184",
3220 "EventName": "PM_MRK_LSU_FLUSH_ULD",
3221 "BriefDescription": "Flush: (marked) Unaligned Load",
3222 "PublicDescription": "Flush: (marked) Unaligned LoadMarked unaligned load flushes"
3223 },
3224 {,
3225 "EventCode": "0xd186",
3226 "EventName": "PM_MRK_LSU_FLUSH_UST",
3227 "BriefDescription": "Flush: (marked) Unaligned Store",
3228 "PublicDescription": "Flush: (marked) Unaligned StoreMarked unaligned store flushes"
3229 },
3230 {,
3231 "EventCode": "0x40164",
3232 "EventName": "PM_MRK_LSU_REJECT",
3233 "BriefDescription": "LSU marked reject (up to 2 per cycle)",
3234 "PublicDescription": ""
3235 },
3236 {,
3237 "EventCode": "0x30164",
3238 "EventName": "PM_MRK_LSU_REJECT_ERAT_MISS",
3239 "BriefDescription": "LSU marked reject due to ERAT (up to 2 per cycle)",
3240 "PublicDescription": ""
3241 },
3242 {,
3243 "EventCode": "0x1d15a",
3244 "EventName": "PM_MRK_SRC_PREF_TRACK_EFF",
3245 "BriefDescription": "Marked src pref track was effective",
3246 "PublicDescription": ""
3247 },
3248 {,
3249 "EventCode": "0x3d15a",
3250 "EventName": "PM_MRK_SRC_PREF_TRACK_INEFF",
3251 "BriefDescription": "Prefetch tracked was ineffective for marked src",
3252 "PublicDescription": ""
3253 },
3254 {,
3255 "EventCode": "0x4d15c",
3256 "EventName": "PM_MRK_SRC_PREF_TRACK_MOD",
3257 "BriefDescription": "Prefetch tracked was moderate for marked src",
3258 "PublicDescription": ""
3259 },
3260 {,
3261 "EventCode": "0x1d15c",
3262 "EventName": "PM_MRK_SRC_PREF_TRACK_MOD_L2",
3263 "BriefDescription": "Marked src Prefetch Tracked was moderate (source L2)",
3264 "PublicDescription": ""
3265 },
3266 {,
3267 "EventCode": "0x3d15c",
3268 "EventName": "PM_MRK_SRC_PREF_TRACK_MOD_L3",
3269 "BriefDescription": "Prefetch tracked was moderate (L3 hit) for marked src",
3270 "PublicDescription": ""
3271 },
3272 {,
3273 "EventCode": "0x1c15a",
3274 "EventName": "PM_MRK_TGT_PREF_TRACK_EFF",
3275 "BriefDescription": "Marked target pref track was effective",
3276 "PublicDescription": ""
3277 },
3278 {,
3279 "EventCode": "0x3c15a",
3280 "EventName": "PM_MRK_TGT_PREF_TRACK_INEFF",
3281 "BriefDescription": "Prefetch tracked was ineffective for marked target",
3282 "PublicDescription": ""
3283 },
3284 {,
3285 "EventCode": "0x4c15c",
3286 "EventName": "PM_MRK_TGT_PREF_TRACK_MOD",
3287 "BriefDescription": "Prefetch tracked was moderate for marked target",
3288 "PublicDescription": ""
3289 },
3290 {,
3291 "EventCode": "0x1c15c",
3292 "EventName": "PM_MRK_TGT_PREF_TRACK_MOD_L2",
3293 "BriefDescription": "Marked target Prefetch Tracked was moderate (source L2)",
3294 "PublicDescription": ""
3295 },
3296 {,
3297 "EventCode": "0x3c15c",
3298 "EventName": "PM_MRK_TGT_PREF_TRACK_MOD_L3",
3299 "BriefDescription": "Prefetch tracked was moderate (L3 hit) for marked target",
3300 "PublicDescription": ""
3301 },
3302 {,
3303 "EventCode": "0x20b0",
3304 "EventName": "PM_NESTED_TEND",
3305 "BriefDescription": "Completion time nested tend",
3306 "PublicDescription": ""
3307 },
3308 {,
3309 "EventCode": "0x20b6",
3310 "EventName": "PM_NON_FAV_TBEGIN",
3311 "BriefDescription": "Dispatch time non favored tbegin",
3312 "PublicDescription": ""
3313 },
3314 {,
3315 "EventCode": "0x328084",
3316 "EventName": "PM_NON_TM_RST_SC",
3317 "BriefDescription": "non tm snp rst tm sc",
3318 "PublicDescription": ""
3319 },
3320 {,
3321 "EventCode": "0x2001a",
3322 "EventName": "PM_NTCG_ALL_FIN",
3323 "BriefDescription": "Cycles after all instructions have finished to group completed",
3324 "PublicDescription": "Ccycles after all instructions have finished to group completed"
3325 },
3326 {,
3327 "EventCode": "0x20ac",
3328 "EventName": "PM_OUTER_TBEGIN",
3329 "BriefDescription": "Completion time outer tbegin",
3330 "PublicDescription": ""
3331 },
3332 {,
3333 "EventCode": "0x20ae",
3334 "EventName": "PM_OUTER_TEND",
3335 "BriefDescription": "Completion time outer tend",
3336 "PublicDescription": ""
3337 },
3338 {,
3339 "EventCode": "0x2005a",
3340 "EventName": "PM_PREF_TRACKED",
3341 "BriefDescription": "Total number of Prefetch Operations that were tracked",
3342 "PublicDescription": ""
3343 },
3344 {,
3345 "EventCode": "0x1005a",
3346 "EventName": "PM_PREF_TRACK_EFF",
3347 "BriefDescription": "Prefetch Tracked was effective",
3348 "PublicDescription": ""
3349 },
3350 {,
3351 "EventCode": "0x3005a",
3352 "EventName": "PM_PREF_TRACK_INEFF",
3353 "BriefDescription": "Prefetch tracked was ineffective",
3354 "PublicDescription": ""
3355 },
3356 {,
3357 "EventCode": "0x4005a",
3358 "EventName": "PM_PREF_TRACK_MOD",
3359 "BriefDescription": "Prefetch tracked was moderate",
3360 "PublicDescription": ""
3361 },
3362 {,
3363 "EventCode": "0x1005c",
3364 "EventName": "PM_PREF_TRACK_MOD_L2",
3365 "BriefDescription": "Prefetch Tracked was moderate (source L2)",
3366 "PublicDescription": ""
3367 },
3368 {,
3369 "EventCode": "0x3005c",
3370 "EventName": "PM_PREF_TRACK_MOD_L3",
3371 "BriefDescription": "Prefetch tracked was moderate (L3)",
3372 "PublicDescription": ""
3373 },
3374 {,
3375 "EventCode": "0xe084",
3376 "EventName": "PM_PTE_PREFETCH",
3377 "BriefDescription": "PTE prefetches",
3378 "PublicDescription": "PTE prefetches42"
3379 },
3380 {,
3381 "EventCode": "0x16081",
3382 "EventName": "PM_RC0_ALLOC",
3383 "BriefDescription": "RC mach 0 Busy. Used by PMU to sample ave RC livetime(mach0 used as sample point)",
3384 "PublicDescription": "0.0"
3385 },
3386 {,
3387 "EventCode": "0x16080",
3388 "EventName": "PM_RC0_BUSY",
3389 "BriefDescription": "RC mach 0 Busy. Used by PMU to sample ave RC livetime(mach0 used as sample point)",
3390 "PublicDescription": ""
3391 },
3392 {,
3393 "EventCode": "0x200301ea",
3394 "EventName": "PM_RC_LIFETIME_EXC_1024",
3395 "BriefDescription": "Number of times the RC machine for a sampled instruction was active for more than 1024 cycles",
3396 "PublicDescription": "Reload latency exceeded 1024 cyc"
3397 },
3398 {,
3399 "EventCode": "0x200401ec",
3400 "EventName": "PM_RC_LIFETIME_EXC_2048",
3401 "BriefDescription": "Number of times the RC machine for a sampled instruction was active for more than 2048 cycles",
3402 "PublicDescription": "Threshold counter exceeded a value of 2048"
3403 },
3404 {,
3405 "EventCode": "0x200101e8",
3406 "EventName": "PM_RC_LIFETIME_EXC_256",
3407 "BriefDescription": "Number of times the RC machine for a sampled instruction was active for more than 256 cycles",
3408 "PublicDescription": "Threshold counter exceed a count of 256"
3409 },
3410 {,
3411 "EventCode": "0x200201e6",
3412 "EventName": "PM_RC_LIFETIME_EXC_32",
3413 "BriefDescription": "Number of times the RC machine for a sampled instruction was active for more than 32 cycles",
3414 "PublicDescription": "Reload latency exceeded 32 cyc"
3415 },
3416 {,
3417 "EventCode": "0x36088",
3418 "EventName": "PM_RC_USAGE",
3419 "BriefDescription": "Continuous 16 cycle(2to1) window where this signals rotates thru sampling each L2 RC machine busy. PMU uses this wave to then do 16 cyc count to sample total number of machs running",
3420 "PublicDescription": ""
3421 },
3422 {,
3423 "EventCode": "0x34808e",
3424 "EventName": "PM_RD_CLEARING_SC",
3425 "BriefDescription": "rd clearing sc",
3426 "PublicDescription": ""
3427 },
3428 {,
3429 "EventCode": "0x34808c",
3430 "EventName": "PM_RD_FORMING_SC",
3431 "BriefDescription": "rd forming sc",
3432 "PublicDescription": ""
3433 },
3434 {,
3435 "EventCode": "0x428086",
3436 "EventName": "PM_RD_HIT_PF",
3437 "BriefDescription": "rd machine hit l3 pf machine",
3438 "PublicDescription": ""
3439 },
3440 {,
3441 "EventCode": "0x20004",
3442 "EventName": "PM_REAL_SRQ_FULL",
3443 "BriefDescription": "Out of real srq entries",
3444 "PublicDescription": ""
3445 },
3446 {,
3447 "EventCode": "0x2006a",
3448 "EventName": "PM_RUN_CYC_SMT2_SHRD_MODE",
3449 "BriefDescription": "cycles this threads run latch is set and the core is in SMT2 shared mode",
3450 "PublicDescription": "Cycles run latch is set and core is in SMT2-shared mode"
3451 },
3452 {,
3453 "EventCode": "0x1006a",
3454 "EventName": "PM_RUN_CYC_SMT2_SPLIT_MODE",
3455 "BriefDescription": "Cycles run latch is set and core is in SMT2-split mode",
3456 "PublicDescription": ""
3457 },
3458 {,
3459 "EventCode": "0x4006c",
3460 "EventName": "PM_RUN_CYC_SMT8_MODE",
3461 "BriefDescription": "Cycles run latch is set and core is in SMT8 mode",
3462 "PublicDescription": ""
3463 },
3464 {,
3465 "EventCode": "0xf082",
3466 "EventName": "PM_SEC_ERAT_HIT",
3467 "BriefDescription": "secondary ERAT Hit",
3468 "PublicDescription": "secondary ERAT Hit42"
3469 },
3470 {,
3471 "EventCode": "0x508c",
3472 "EventName": "PM_SHL_CREATED",
3473 "BriefDescription": "Store-Hit-Load Table Entry Created",
3474 "PublicDescription": ""
3475 },
3476 {,
3477 "EventCode": "0x508e",
3478 "EventName": "PM_SHL_ST_CONVERT",
3479 "BriefDescription": "Store-Hit-Load Table Read Hit with entry Enabled",
3480 "PublicDescription": ""
3481 },
3482 {,
3483 "EventCode": "0x5090",
3484 "EventName": "PM_SHL_ST_DISABLE",
3485 "BriefDescription": "Store-Hit-Load Table Read Hit with entry Disabled (entry was disabled due to the entry shown to not prevent the flush)",
3486 "PublicDescription": ""
3487 },
3488 {,
3489 "EventCode": "0x26085",
3490 "EventName": "PM_SN0_ALLOC",
3491 "BriefDescription": "SN mach 0 Busy. Used by PMU to sample ave RC livetime(mach0 used as sample point)",
3492 "PublicDescription": "0.0"
3493 },
3494 {,
3495 "EventCode": "0x26084",
3496 "EventName": "PM_SN0_BUSY",
3497 "BriefDescription": "SN mach 0 Busy. Used by PMU to sample ave RC livetime(mach0 used as sample point)",
3498 "PublicDescription": ""
3499 },
3500 {,
3501 "EventCode": "0xd0b2",
3502 "EventName": "PM_SNOOP_TLBIE",
3503 "BriefDescription": "TLBIE snoop",
3504 "PublicDescription": "TLBIE snoopSnoop TLBIE"
3505 },
3506 {,
3507 "EventCode": "0x338088",
3508 "EventName": "PM_SNP_TM_HIT_M",
3509 "BriefDescription": "snp tm st hit m mu",
3510 "PublicDescription": ""
3511 },
3512 {,
3513 "EventCode": "0x33808a",
3514 "EventName": "PM_SNP_TM_HIT_T",
3515 "BriefDescription": "snp tm_st_hit t tn te",
3516 "PublicDescription": ""
3517 },
3518 {,
3519 "EventCode": "0x4608c",
3520 "EventName": "PM_SN_USAGE",
3521 "BriefDescription": "Continuous 16 cycle(2to1) window where this signals rotates thru sampling each L2 SN machine busy. PMU uses this wave to then do 16 cyc count to sample total number of machs running",
3522 "PublicDescription": ""
3523 },
3524 {,
3525 "EventCode": "0x10028",
3526 "EventName": "PM_STALL_END_GCT_EMPTY",
3527 "BriefDescription": "Count ended because GCT went empty",
3528 "PublicDescription": ""
3529 },
3530 {,
3531 "EventCode": "0xc090",
3532 "EventName": "PM_STCX_LSU",
3533 "BriefDescription": "STCX executed reported at sent to nest",
3534 "PublicDescription": "STCX executed reported at sent to nest42"
3535 },
3536 {,
3537 "EventCode": "0x717080",
3538 "EventName": "PM_ST_CAUSED_FAIL",
3539 "BriefDescription": "Non TM St caused any thread to fail",
3540 "PublicDescription": ""
3541 },
3542 {,
3543 "EventCode": "0x3090",
3544 "EventName": "PM_SWAP_CANCEL",
3545 "BriefDescription": "SWAP cancel , rtag not available",
3546 "PublicDescription": ""
3547 },
3548 {,
3549 "EventCode": "0x3092",
3550 "EventName": "PM_SWAP_CANCEL_GPR",
3551 "BriefDescription": "SWAP cancel , rtag not available for gpr",
3552 "PublicDescription": ""
3553 },
3554 {,
3555 "EventCode": "0x308c",
3556 "EventName": "PM_SWAP_COMPLETE",
3557 "BriefDescription": "swap cast in completed",
3558 "PublicDescription": ""
3559 },
3560 {,
3561 "EventCode": "0x308e",
3562 "EventName": "PM_SWAP_COMPLETE_GPR",
3563 "BriefDescription": "swap cast in completed fpr gpr",
3564 "PublicDescription": ""
3565 },
3566 {,
3567 "EventCode": "0xe086",
3568 "EventName": "PM_TABLEWALK_CYC_PREF",
3569 "BriefDescription": "tablewalk qualified for pte prefetches",
3570 "PublicDescription": "tablewalk qualified for pte prefetches42"
3571 },
3572 {,
3573 "EventCode": "0x20b2",
3574 "EventName": "PM_TABORT_TRECLAIM",
3575 "BriefDescription": "Completion time tabortnoncd, tabortcd, treclaim",
3576 "PublicDescription": ""
3577 },
3578 {,
3579 "EventCode": "0xe0ba",
3580 "EventName": "PM_TEND_PEND_CYC",
3581 "BriefDescription": "TEND latency per thread",
3582 "PublicDescription": "TEND latency per thread42"
3583 },
3584 {,
3585 "EventCode": "0x10012",
3586 "EventName": "PM_THRD_GRP_CMPL_BOTH_CYC",
3587 "BriefDescription": "Cycles group completed on both completion slots by any thread",
3588 "PublicDescription": "Two threads finished same cycle (gated by run latch)"
3589 },
3590 {,
3591 "EventCode": "0x40bc",
3592 "EventName": "PM_THRD_PRIO_0_1_CYC",
3593 "BriefDescription": "Cycles thread running at priority level 0 or 1",
3594 "PublicDescription": ""
3595 },
3596 {,
3597 "EventCode": "0x40be",
3598 "EventName": "PM_THRD_PRIO_2_3_CYC",
3599 "BriefDescription": "Cycles thread running at priority level 2 or 3",
3600 "PublicDescription": ""
3601 },
3602 {,
3603 "EventCode": "0x5080",
3604 "EventName": "PM_THRD_PRIO_4_5_CYC",
3605 "BriefDescription": "Cycles thread running at priority level 4 or 5",
3606 "PublicDescription": ""
3607 },
3608 {,
3609 "EventCode": "0x5082",
3610 "EventName": "PM_THRD_PRIO_6_7_CYC",
3611 "BriefDescription": "Cycles thread running at priority level 6 or 7",
3612 "PublicDescription": ""
3613 },
3614 {,
3615 "EventCode": "0x3098",
3616 "EventName": "PM_THRD_REBAL_CYC",
3617 "BriefDescription": "cycles rebalance was active",
3618 "PublicDescription": ""
3619 },
3620 {,
3621 "EventCode": "0x20b8",
3622 "EventName": "PM_TM_BEGIN_ALL",
3623 "BriefDescription": "Tm any tbegin",
3624 "PublicDescription": ""
3625 },
3626 {,
3627 "EventCode": "0x318082",
3628 "EventName": "PM_TM_CAM_OVERFLOW",
3629 "BriefDescription": "l3 tm cam overflow during L2 co of SC",
3630 "PublicDescription": ""
3631 },
3632 {,
3633 "EventCode": "0x74708c",
3634 "EventName": "PM_TM_CAP_OVERFLOW",
3635 "BriefDescription": "TM Footprint Capactiy Overflow",
3636 "PublicDescription": ""
3637 },
3638 {,
3639 "EventCode": "0x20ba",
3640 "EventName": "PM_TM_END_ALL",
3641 "BriefDescription": "Tm any tend",
3642 "PublicDescription": ""
3643 },
3644 {,
3645 "EventCode": "0x3086",
3646 "EventName": "PM_TM_FAIL_CONF_NON_TM",
3647 "BriefDescription": "TEXAS fail reason @ completion",
3648 "PublicDescription": ""
3649 },
3650 {,
3651 "EventCode": "0x3088",
3652 "EventName": "PM_TM_FAIL_CON_TM",
3653 "BriefDescription": "TEXAS fail reason @ completion",
3654 "PublicDescription": ""
3655 },
3656 {,
3657 "EventCode": "0xe0b2",
3658 "EventName": "PM_TM_FAIL_DISALLOW",
3659 "BriefDescription": "TM fail disallow",
3660 "PublicDescription": "TM fail disallow42"
3661 },
3662 {,
3663 "EventCode": "0x3084",
3664 "EventName": "PM_TM_FAIL_FOOTPRINT_OVERFLOW",
3665 "BriefDescription": "TEXAS fail reason @ completion",
3666 "PublicDescription": ""
3667 },
3668 {,
3669 "EventCode": "0xe0b8",
3670 "EventName": "PM_TM_FAIL_NON_TX_CONFLICT",
3671 "BriefDescription": "Non transactional conflict from LSU whtver gets repoted to texas",
3672 "PublicDescription": "Non transactional conflict from LSU whtver gets repoted to texas42"
3673 },
3674 {,
3675 "EventCode": "0x308a",
3676 "EventName": "PM_TM_FAIL_SELF",
3677 "BriefDescription": "TEXAS fail reason @ completion",
3678 "PublicDescription": ""
3679 },
3680 {,
3681 "EventCode": "0xe0b4",
3682 "EventName": "PM_TM_FAIL_TLBIE",
3683 "BriefDescription": "TLBIE hit bloom filter",
3684 "PublicDescription": "TLBIE hit bloom filter42"
3685 },
3686 {,
3687 "EventCode": "0xe0b6",
3688 "EventName": "PM_TM_FAIL_TX_CONFLICT",
3689 "BriefDescription": "Transactional conflict from LSU, whatever gets reported to texas",
3690 "PublicDescription": "Transactional conflict from LSU, whatever gets reported to texas 42"
3691 },
3692 {,
3693 "EventCode": "0x727086",
3694 "EventName": "PM_TM_FAV_CAUSED_FAIL",
3695 "BriefDescription": "TM Load (fav) caused another thread to fail",
3696 "PublicDescription": ""
3697 },
3698 {,
3699 "EventCode": "0x717082",
3700 "EventName": "PM_TM_LD_CAUSED_FAIL",
3701 "BriefDescription": "Non TM Ld caused any thread to fail",
3702 "PublicDescription": ""
3703 },
3704 {,
3705 "EventCode": "0x727084",
3706 "EventName": "PM_TM_LD_CONF",
3707 "BriefDescription": "TM Load (fav or non-fav) ran into conflict (failed)",
3708 "PublicDescription": ""
3709 },
3710 {,
3711 "EventCode": "0x328086",
3712 "EventName": "PM_TM_RST_SC",
3713 "BriefDescription": "tm snp rst tm sc",
3714 "PublicDescription": ""
3715 },
3716 {,
3717 "EventCode": "0x318080",
3718 "EventName": "PM_TM_SC_CO",
3719 "BriefDescription": "l3 castout tm Sc line",
3720 "PublicDescription": ""
3721 },
3722 {,
3723 "EventCode": "0x73708a",
3724 "EventName": "PM_TM_ST_CAUSED_FAIL",
3725 "BriefDescription": "TM Store (fav or non-fav) caused another thread to fail",
3726 "PublicDescription": ""
3727 },
3728 {,
3729 "EventCode": "0x737088",
3730 "EventName": "PM_TM_ST_CONF",
3731 "BriefDescription": "TM Store (fav or non-fav) ran into conflict (failed)",
3732 "PublicDescription": ""
3733 },
3734 {,
3735 "EventCode": "0x20bc",
3736 "EventName": "PM_TM_TBEGIN",
3737 "BriefDescription": "Tm nested tbegin",
3738 "PublicDescription": ""
3739 },
3740 {,
3741 "EventCode": "0x3080",
3742 "EventName": "PM_TM_TRESUME",
3743 "BriefDescription": "Tm resume",
3744 "PublicDescription": ""
3745 },
3746 {,
3747 "EventCode": "0x20be",
3748 "EventName": "PM_TM_TSUSPEND",
3749 "BriefDescription": "Tm suspend",
3750 "PublicDescription": ""
3751 },
3752 {,
3753 "EventCode": "0xe08c",
3754 "EventName": "PM_UP_PREF_L3",
3755 "BriefDescription": "Micropartition prefetch",
3756 "PublicDescription": "Micropartition prefetch42"
3757 },
3758 {,
3759 "EventCode": "0xe08e",
3760 "EventName": "PM_UP_PREF_POINTER",
3761 "BriefDescription": "Micrpartition pointer prefetches",
3762 "PublicDescription": "Micrpartition pointer prefetches42"
3763 },
3764 {,
3765 "EventCode": "0xa0a4",
3766 "EventName": "PM_VSU0_16FLOP",
3767 "BriefDescription": "Sixteen flops operation (SP vector versions of fdiv,fsqrt)",
3768 "PublicDescription": ""
3769 },
3770 {,
3771 "EventCode": "0xa080",
3772 "EventName": "PM_VSU0_1FLOP",
3773 "BriefDescription": "one flop (fadd, fmul, fsub, fcmp, fsel, fabs, fnabs, fres, fsqrte, fneg) operation finished",
3774 "PublicDescription": "one flop (fadd, fmul, fsub, fcmp, fsel, fabs, fnabs, fres, fsqrte, fneg) operation finishedDecode into 1,2,4 FLOP according to instr IOP, multiplied by #vector elements according to route( eg x1, x2, x4) Only if instr sends finish to ISU"
3775 },
3776 {,
3777 "EventCode": "0xa098",
3778 "EventName": "PM_VSU0_2FLOP",
3779 "BriefDescription": "two flops operation (scalar fmadd, fnmadd, fmsub, fnmsub and DP vector versions of single flop instructions)",
3780 "PublicDescription": ""
3781 },
3782 {,
3783 "EventCode": "0xa09c",
3784 "EventName": "PM_VSU0_4FLOP",
3785 "BriefDescription": "four flops operation (scalar fdiv, fsqrt, DP vector version of fmadd, fnmadd, fmsub, fnmsub, SP vector versions of single flop instructions)",
3786 "PublicDescription": ""
3787 },
3788 {,
3789 "EventCode": "0xa0a0",
3790 "EventName": "PM_VSU0_8FLOP",
3791 "BriefDescription": "eight flops operation (DP vector versions of fdiv,fsqrt and SP vector versions of fmadd,fnmadd,fmsub,fnmsub)",
3792 "PublicDescription": ""
3793 },
3794 {,
3795 "EventCode": "0xb0a4",
3796 "EventName": "PM_VSU0_COMPLEX_ISSUED",
3797 "BriefDescription": "Complex VMX instruction issued",
3798 "PublicDescription": ""
3799 },
3800 {,
3801 "EventCode": "0xb0b4",
3802 "EventName": "PM_VSU0_CY_ISSUED",
3803 "BriefDescription": "Cryptographic instruction RFC02196 Issued",
3804 "PublicDescription": ""
3805 },
3806 {,
3807 "EventCode": "0xb0a8",
3808 "EventName": "PM_VSU0_DD_ISSUED",
3809 "BriefDescription": "64BIT Decimal Issued",
3810 "PublicDescription": ""
3811 },
3812 {,
3813 "EventCode": "0xa08c",
3814 "EventName": "PM_VSU0_DP_2FLOP",
3815 "BriefDescription": "DP vector version of fmul, fsub, fcmp, fsel, fabs, fnabs, fres ,fsqrte, fneg",
3816 "PublicDescription": ""
3817 },
3818 {,
3819 "EventCode": "0xa090",
3820 "EventName": "PM_VSU0_DP_FMA",
3821 "BriefDescription": "DP vector version of fmadd,fnmadd,fmsub,fnmsub",
3822 "PublicDescription": ""
3823 },
3824 {,
3825 "EventCode": "0xa094",
3826 "EventName": "PM_VSU0_DP_FSQRT_FDIV",
3827 "BriefDescription": "DP vector versions of fdiv,fsqrt",
3828 "PublicDescription": ""
3829 },
3830 {,
3831 "EventCode": "0xb0ac",
3832 "EventName": "PM_VSU0_DQ_ISSUED",
3833 "BriefDescription": "128BIT Decimal Issued",
3834 "PublicDescription": ""
3835 },
3836 {,
3837 "EventCode": "0xb0b0",
3838 "EventName": "PM_VSU0_EX_ISSUED",
3839 "BriefDescription": "Direct move 32/64b VRFtoGPR RFC02206 Issued",
3840 "PublicDescription": ""
3841 },
3842 {,
3843 "EventCode": "0xa0bc",
3844 "EventName": "PM_VSU0_FIN",
3845 "BriefDescription": "VSU0 Finished an instruction",
3846 "PublicDescription": ""
3847 },
3848 {,
3849 "EventCode": "0xa084",
3850 "EventName": "PM_VSU0_FMA",
3851 "BriefDescription": "two flops operation (fmadd, fnmadd, fmsub, fnmsub) Scalar instructions only!",
3852 "PublicDescription": ""
3853 },
3854 {,
3855 "EventCode": "0xb098",
3856 "EventName": "PM_VSU0_FPSCR",
3857 "BriefDescription": "Move to/from FPSCR type instruction issued on Pipe 0",
3858 "PublicDescription": ""
3859 },
3860 {,
3861 "EventCode": "0xa088",
3862 "EventName": "PM_VSU0_FSQRT_FDIV",
3863 "BriefDescription": "four flops operation (fdiv,fsqrt) Scalar Instructions only!",
3864 "PublicDescription": ""
3865 },
3866 {,
3867 "EventCode": "0xb090",
3868 "EventName": "PM_VSU0_PERMUTE_ISSUED",
3869 "BriefDescription": "Permute VMX Instruction Issued",
3870 "PublicDescription": ""
3871 },
3872 {,
3873 "EventCode": "0xb088",
3874 "EventName": "PM_VSU0_SCALAR_DP_ISSUED",
3875 "BriefDescription": "Double Precision scalar instruction issued on Pipe0",
3876 "PublicDescription": ""
3877 },
3878 {,
3879 "EventCode": "0xb094",
3880 "EventName": "PM_VSU0_SIMPLE_ISSUED",
3881 "BriefDescription": "Simple VMX instruction issued",
3882 "PublicDescription": ""
3883 },
3884 {,
3885 "EventCode": "0xa0a8",
3886 "EventName": "PM_VSU0_SINGLE",
3887 "BriefDescription": "FPU single precision",
3888 "PublicDescription": ""
3889 },
3890 {,
3891 "EventCode": "0xb09c",
3892 "EventName": "PM_VSU0_SQ",
3893 "BriefDescription": "Store Vector Issued",
3894 "PublicDescription": ""
3895 },
3896 {,
3897 "EventCode": "0xb08c",
3898 "EventName": "PM_VSU0_STF",
3899 "BriefDescription": "FPU store (SP or DP) issued on Pipe0",
3900 "PublicDescription": ""
3901 },
3902 {,
3903 "EventCode": "0xb080",
3904 "EventName": "PM_VSU0_VECTOR_DP_ISSUED",
3905 "BriefDescription": "Double Precision vector instruction issued on Pipe0",
3906 "PublicDescription": ""
3907 },
3908 {,
3909 "EventCode": "0xb084",
3910 "EventName": "PM_VSU0_VECTOR_SP_ISSUED",
3911 "BriefDescription": "Single Precision vector instruction issued (executed)",
3912 "PublicDescription": ""
3913 },
3914 {,
3915 "EventCode": "0xa0a6",
3916 "EventName": "PM_VSU1_16FLOP",
3917 "BriefDescription": "Sixteen flops operation (SP vector versions of fdiv,fsqrt)",
3918 "PublicDescription": ""
3919 },
3920 {,
3921 "EventCode": "0xa082",
3922 "EventName": "PM_VSU1_1FLOP",
3923 "BriefDescription": "one flop (fadd, fmul, fsub, fcmp, fsel, fabs, fnabs, fres, fsqrte, fneg) operation finished",
3924 "PublicDescription": ""
3925 },
3926 {,
3927 "EventCode": "0xa09a",
3928 "EventName": "PM_VSU1_2FLOP",
3929 "BriefDescription": "two flops operation (scalar fmadd, fnmadd, fmsub, fnmsub and DP vector versions of single flop instructions)",
3930 "PublicDescription": ""
3931 },
3932 {,
3933 "EventCode": "0xa09e",
3934 "EventName": "PM_VSU1_4FLOP",
3935 "BriefDescription": "four flops operation (scalar fdiv, fsqrt, DP vector version of fmadd, fnmadd, fmsub, fnmsub, SP vector versions of single flop instructions)",
3936 "PublicDescription": ""
3937 },
3938 {,
3939 "EventCode": "0xa0a2",
3940 "EventName": "PM_VSU1_8FLOP",
3941 "BriefDescription": "eight flops operation (DP vector versions of fdiv,fsqrt and SP vector versions of fmadd,fnmadd,fmsub,fnmsub)",
3942 "PublicDescription": ""
3943 },
3944 {,
3945 "EventCode": "0xb0a6",
3946 "EventName": "PM_VSU1_COMPLEX_ISSUED",
3947 "BriefDescription": "Complex VMX instruction issued",
3948 "PublicDescription": ""
3949 },
3950 {,
3951 "EventCode": "0xb0b6",
3952 "EventName": "PM_VSU1_CY_ISSUED",
3953 "BriefDescription": "Cryptographic instruction RFC02196 Issued",
3954 "PublicDescription": ""
3955 },
3956 {,
3957 "EventCode": "0xb0aa",
3958 "EventName": "PM_VSU1_DD_ISSUED",
3959 "BriefDescription": "64BIT Decimal Issued",
3960 "PublicDescription": ""
3961 },
3962 {,
3963 "EventCode": "0xa08e",
3964 "EventName": "PM_VSU1_DP_2FLOP",
3965 "BriefDescription": "DP vector version of fmul, fsub, fcmp, fsel, fabs, fnabs, fres ,fsqrte, fneg",
3966 "PublicDescription": ""
3967 },
3968 {,
3969 "EventCode": "0xa092",
3970 "EventName": "PM_VSU1_DP_FMA",
3971 "BriefDescription": "DP vector version of fmadd,fnmadd,fmsub,fnmsub",
3972 "PublicDescription": ""
3973 },
3974 {,
3975 "EventCode": "0xa096",
3976 "EventName": "PM_VSU1_DP_FSQRT_FDIV",
3977 "BriefDescription": "DP vector versions of fdiv,fsqrt",
3978 "PublicDescription": ""
3979 },
3980 {,
3981 "EventCode": "0xb0ae",
3982 "EventName": "PM_VSU1_DQ_ISSUED",
3983 "BriefDescription": "128BIT Decimal Issued",
3984 "PublicDescription": ""
3985 },
3986 {,
3987 "EventCode": "0xb0b2",
3988 "EventName": "PM_VSU1_EX_ISSUED",
3989 "BriefDescription": "Direct move 32/64b VRFtoGPR RFC02206 Issued",
3990 "PublicDescription": ""
3991 },
3992 {,
3993 "EventCode": "0xa0be",
3994 "EventName": "PM_VSU1_FIN",
3995 "BriefDescription": "VSU1 Finished an instruction",
3996 "PublicDescription": ""
3997 },
3998 {,
3999 "EventCode": "0xa086",
4000 "EventName": "PM_VSU1_FMA",
4001 "BriefDescription": "two flops operation (fmadd, fnmadd, fmsub, fnmsub) Scalar instructions only!",
4002 "PublicDescription": ""
4003 },
4004 {,
4005 "EventCode": "0xb09a",
4006 "EventName": "PM_VSU1_FPSCR",
4007 "BriefDescription": "Move to/from FPSCR type instruction issued on Pipe 0",
4008 "PublicDescription": ""
4009 },
4010 {,
4011 "EventCode": "0xa08a",
4012 "EventName": "PM_VSU1_FSQRT_FDIV",
4013 "BriefDescription": "four flops operation (fdiv,fsqrt) Scalar Instructions only!",
4014 "PublicDescription": ""
4015 },
4016 {,
4017 "EventCode": "0xb092",
4018 "EventName": "PM_VSU1_PERMUTE_ISSUED",
4019 "BriefDescription": "Permute VMX Instruction Issued",
4020 "PublicDescription": ""
4021 },
4022 {,
4023 "EventCode": "0xb08a",
4024 "EventName": "PM_VSU1_SCALAR_DP_ISSUED",
4025 "BriefDescription": "Double Precision scalar instruction issued on Pipe1",
4026 "PublicDescription": ""
4027 },
4028 {,
4029 "EventCode": "0xb096",
4030 "EventName": "PM_VSU1_SIMPLE_ISSUED",
4031 "BriefDescription": "Simple VMX instruction issued",
4032 "PublicDescription": ""
4033 },
4034 {,
4035 "EventCode": "0xa0aa",
4036 "EventName": "PM_VSU1_SINGLE",
4037 "BriefDescription": "FPU single precision",
4038 "PublicDescription": ""
4039 },
4040 {,
4041 "EventCode": "0xb09e",
4042 "EventName": "PM_VSU1_SQ",
4043 "BriefDescription": "Store Vector Issued",
4044 "PublicDescription": ""
4045 },
4046 {,
4047 "EventCode": "0xb08e",
4048 "EventName": "PM_VSU1_STF",
4049 "BriefDescription": "FPU store (SP or DP) issued on Pipe1",
4050 "PublicDescription": ""
4051 },
4052 {,
4053 "EventCode": "0xb082",
4054 "EventName": "PM_VSU1_VECTOR_DP_ISSUED",
4055 "BriefDescription": "Double Precision vector instruction issued on Pipe1",
4056 "PublicDescription": ""
4057 },
4058 {,
4059 "EventCode": "0xb086",
4060 "EventName": "PM_VSU1_VECTOR_SP_ISSUED",
4061 "BriefDescription": "Single Precision vector instruction issued (executed)",
4062 "PublicDescription": ""
4063 },
4064]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/pipeline.json b/tools/perf/pmu-events/arch/powerpc/power8/pipeline.json
new file mode 100644
index 000000000000..293f3a4c6901
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/pipeline.json
@@ -0,0 +1,350 @@
1[
2 {,
3 "EventCode": "0x100f2",
4 "EventName": "PM_1PLUS_PPC_CMPL",
5 "BriefDescription": "1 or more ppc insts finished",
6 "PublicDescription": "1 or more ppc insts finished (completed)"
7 },
8 {,
9 "EventCode": "0x400f2",
10 "EventName": "PM_1PLUS_PPC_DISP",
11 "BriefDescription": "Cycles at least one Instr Dispatched",
12 "PublicDescription": "Cycles at least one Instr Dispatched. Could be a group with only microcode. Issue HW016521"
13 },
14 {,
15 "EventCode": "0x100fa",
16 "EventName": "PM_ANY_THRD_RUN_CYC",
17 "BriefDescription": "One of threads in run_cycles",
18 "PublicDescription": "Any thread in run_cycles (was one thread in run_cycles)"
19 },
20 {,
21 "EventCode": "0x4000a",
22 "EventName": "PM_CMPLU_STALL",
23 "BriefDescription": "Completion stall",
24 "PublicDescription": ""
25 },
26 {,
27 "EventCode": "0x4d018",
28 "EventName": "PM_CMPLU_STALL_BRU",
29 "BriefDescription": "Completion stall due to a Branch Unit",
30 "PublicDescription": ""
31 },
32 {,
33 "EventCode": "0x2c012",
34 "EventName": "PM_CMPLU_STALL_DCACHE_MISS",
35 "BriefDescription": "Completion stall by Dcache miss",
36 "PublicDescription": ""
37 },
38 {,
39 "EventCode": "0x2c018",
40 "EventName": "PM_CMPLU_STALL_DMISS_L21_L31",
41 "BriefDescription": "Completion stall by Dcache miss which resolved on chip ( excluding local L2/L3)",
42 "PublicDescription": ""
43 },
44 {,
45 "EventCode": "0x2c016",
46 "EventName": "PM_CMPLU_STALL_DMISS_L2L3",
47 "BriefDescription": "Completion stall by Dcache miss which resolved in L2/L3",
48 "PublicDescription": ""
49 },
50 {,
51 "EventCode": "0x4c016",
52 "EventName": "PM_CMPLU_STALL_DMISS_L2L3_CONFLICT",
53 "BriefDescription": "Completion stall due to cache miss that resolves in the L2 or L3 with a conflict",
54 "PublicDescription": "Completion stall due to cache miss resolving in core's L2/L3 with a conflict"
55 },
56 {,
57 "EventCode": "0x4c01a",
58 "EventName": "PM_CMPLU_STALL_DMISS_L3MISS",
59 "BriefDescription": "Completion stall due to cache miss resolving missed the L3",
60 "PublicDescription": ""
61 },
62 {,
63 "EventCode": "0x4c018",
64 "EventName": "PM_CMPLU_STALL_DMISS_LMEM",
65 "BriefDescription": "Completion stall due to cache miss that resolves in local memory",
66 "PublicDescription": "Completion stall due to cache miss resolving in core's Local Memory"
67 },
68 {,
69 "EventCode": "0x2c01c",
70 "EventName": "PM_CMPLU_STALL_DMISS_REMOTE",
71 "BriefDescription": "Completion stall by Dcache miss which resolved from remote chip (cache or memory)",
72 "PublicDescription": "Completion stall by Dcache miss which resolved on chip ( excluding local L2/L3)"
73 },
74 {,
75 "EventCode": "0x4c012",
76 "EventName": "PM_CMPLU_STALL_ERAT_MISS",
77 "BriefDescription": "Completion stall due to LSU reject ERAT miss",
78 "PublicDescription": ""
79 },
80 {,
81 "EventCode": "0x4d016",
82 "EventName": "PM_CMPLU_STALL_FXLONG",
83 "BriefDescription": "Completion stall due to a long latency fixed point instruction",
84 "PublicDescription": ""
85 },
86 {,
87 "EventCode": "0x2d016",
88 "EventName": "PM_CMPLU_STALL_FXU",
89 "BriefDescription": "Completion stall due to FXU",
90 "PublicDescription": ""
91 },
92 {,
93 "EventCode": "0x30036",
94 "EventName": "PM_CMPLU_STALL_HWSYNC",
95 "BriefDescription": "completion stall due to hwsync",
96 "PublicDescription": ""
97 },
98 {,
99 "EventCode": "0x4d014",
100 "EventName": "PM_CMPLU_STALL_LOAD_FINISH",
101 "BriefDescription": "Completion stall due to a Load finish",
102 "PublicDescription": ""
103 },
104 {,
105 "EventCode": "0x2c010",
106 "EventName": "PM_CMPLU_STALL_LSU",
107 "BriefDescription": "Completion stall by LSU instruction",
108 "PublicDescription": ""
109 },
110 {,
111 "EventCode": "0x10036",
112 "EventName": "PM_CMPLU_STALL_LWSYNC",
113 "BriefDescription": "completion stall due to isync/lwsync",
114 "PublicDescription": ""
115 },
116 {,
117 "EventCode": "0x30006",
118 "EventName": "PM_CMPLU_STALL_OTHER_CMPL",
119 "BriefDescription": "Instructions core completed while this tread was stalled",
120 "PublicDescription": "Instructions core completed while this thread was stalled"
121 },
122 {,
123 "EventCode": "0x4c01c",
124 "EventName": "PM_CMPLU_STALL_ST_FWD",
125 "BriefDescription": "Completion stall due to store forward",
126 "PublicDescription": ""
127 },
128 {,
129 "EventCode": "0x1001c",
130 "EventName": "PM_CMPLU_STALL_THRD",
131 "BriefDescription": "Completion Stalled due to thread conflict. Group ready to complete but it was another thread's turn",
132 "PublicDescription": "Completion stall due to thread conflict"
133 },
134 {,
135 "EventCode": "0x1e",
136 "EventName": "PM_CYC",
137 "BriefDescription": "Cycles",
138 "PublicDescription": ""
139 },
140 {,
141 "EventCode": "0x10006",
142 "EventName": "PM_DISP_HELD",
143 "BriefDescription": "Dispatch Held",
144 "PublicDescription": ""
145 },
146 {,
147 "EventCode": "0x4003c",
148 "EventName": "PM_DISP_HELD_SYNC_HOLD",
149 "BriefDescription": "Dispatch held due to SYNC hold",
150 "PublicDescription": ""
151 },
152 {,
153 "EventCode": "0x200f8",
154 "EventName": "PM_EXT_INT",
155 "BriefDescription": "external interrupt",
156 "PublicDescription": ""
157 },
158 {,
159 "EventCode": "0x400f8",
160 "EventName": "PM_FLUSH",
161 "BriefDescription": "Flush (any type)",
162 "PublicDescription": ""
163 },
164 {,
165 "EventCode": "0x30012",
166 "EventName": "PM_FLUSH_COMPLETION",
167 "BriefDescription": "Completion Flush",
168 "PublicDescription": ""
169 },
170 {,
171 "EventCode": "0x3000c",
172 "EventName": "PM_FREQ_DOWN",
173 "BriefDescription": "Power Management: Below Threshold B",
174 "PublicDescription": "Frequency is being slewed down due to Power Management"
175 },
176 {,
177 "EventCode": "0x4000c",
178 "EventName": "PM_FREQ_UP",
179 "BriefDescription": "Power Management: Above Threshold A",
180 "PublicDescription": "Frequency is being slewed up due to Power Management"
181 },
182 {,
183 "EventCode": "0x2000a",
184 "EventName": "PM_HV_CYC",
185 "BriefDescription": "Cycles in which msr_hv is high. Note that this event does not take msr_pr into consideration",
186 "PublicDescription": "cycles in hypervisor mode"
187 },
188 {,
189 "EventCode": "0x3405e",
190 "EventName": "PM_IFETCH_THROTTLE",
191 "BriefDescription": "Cycles in which Instruction fetch throttle was active",
192 "PublicDescription": "Cycles instruction fecth was throttled in IFU"
193 },
194 {,
195 "EventCode": "0x10014",
196 "EventName": "PM_IOPS_CMPL",
197 "BriefDescription": "Internal Operations completed",
198 "PublicDescription": "IOPS Completed"
199 },
200 {,
201 "EventCode": "0x3c058",
202 "EventName": "PM_LARX_FIN",
203 "BriefDescription": "Larx finished",
204 "PublicDescription": ""
205 },
206 {,
207 "EventCode": "0x1002e",
208 "EventName": "PM_LD_CMPL",
209 "BriefDescription": "count of Loads completed",
210 "PublicDescription": ""
211 },
212 {,
213 "EventCode": "0x10062",
214 "EventName": "PM_LD_L3MISS_PEND_CYC",
215 "BriefDescription": "Cycles L3 miss was pending for this thread",
216 "PublicDescription": ""
217 },
218 {,
219 "EventCode": "0x30066",
220 "EventName": "PM_LSU_FIN",
221 "BriefDescription": "LSU Finished an instruction (up to 2 per cycle)",
222 "PublicDescription": ""
223 },
224 {,
225 "EventCode": "0x2003e",
226 "EventName": "PM_LSU_LMQ_SRQ_EMPTY_CYC",
227 "BriefDescription": "LSU empty (lmq and srq empty)",
228 "PublicDescription": ""
229 },
230 {,
231 "EventCode": "0x2e05c",
232 "EventName": "PM_LSU_REJECT_ERAT_MISS",
233 "BriefDescription": "LSU Reject due to ERAT (up to 4 per cycles)",
234 "PublicDescription": ""
235 },
236 {,
237 "EventCode": "0x4e05c",
238 "EventName": "PM_LSU_REJECT_LHS",
239 "BriefDescription": "LSU Reject due to LHS (up to 4 per cycle)",
240 "PublicDescription": ""
241 },
242 {,
243 "EventCode": "0x1e05c",
244 "EventName": "PM_LSU_REJECT_LMQ_FULL",
245 "BriefDescription": "LSU reject due to LMQ full ( 4 per cycle)",
246 "PublicDescription": ""
247 },
248 {,
249 "EventCode": "0x1001a",
250 "EventName": "PM_LSU_SRQ_FULL_CYC",
251 "BriefDescription": "Storage Queue is full and is blocking dispatch",
252 "PublicDescription": "SRQ is Full"
253 },
254 {,
255 "EventCode": "0x40014",
256 "EventName": "PM_PROBE_NOP_DISP",
257 "BriefDescription": "ProbeNops dispatched",
258 "PublicDescription": ""
259 },
260 {,
261 "EventCode": "0x600f4",
262 "EventName": "PM_RUN_CYC",
263 "BriefDescription": "Run_cycles",
264 "PublicDescription": ""
265 },
266 {,
267 "EventCode": "0x3006c",
268 "EventName": "PM_RUN_CYC_SMT2_MODE",
269 "BriefDescription": "Cycles run latch is set and core is in SMT2 mode",
270 "PublicDescription": ""
271 },
272 {,
273 "EventCode": "0x2006c",
274 "EventName": "PM_RUN_CYC_SMT4_MODE",
275 "BriefDescription": "cycles this threads run latch is set and the core is in SMT4 mode",
276 "PublicDescription": "Cycles run latch is set and core is in SMT4 mode"
277 },
278 {,
279 "EventCode": "0x1006c",
280 "EventName": "PM_RUN_CYC_ST_MODE",
281 "BriefDescription": "Cycles run latch is set and core is in ST mode",
282 "PublicDescription": ""
283 },
284 {,
285 "EventCode": "0x500fa",
286 "EventName": "PM_RUN_INST_CMPL",
287 "BriefDescription": "Run_Instructions",
288 "PublicDescription": ""
289 },
290 {,
291 "EventCode": "0x1e058",
292 "EventName": "PM_STCX_FAIL",
293 "BriefDescription": "stcx failed",
294 "PublicDescription": ""
295 },
296 {,
297 "EventCode": "0x20016",
298 "EventName": "PM_ST_CMPL",
299 "BriefDescription": "Store completion count",
300 "PublicDescription": ""
301 },
302 {,
303 "EventCode": "0x200f0",
304 "EventName": "PM_ST_FIN",
305 "BriefDescription": "Store Instructions Finished",
306 "PublicDescription": "Store Instructions Finished (store sent to nest)"
307 },
308 {,
309 "EventCode": "0x20018",
310 "EventName": "PM_ST_FWD",
311 "BriefDescription": "Store forwards that finished",
312 "PublicDescription": ""
313 },
314 {,
315 "EventCode": "0x10026",
316 "EventName": "PM_TABLEWALK_CYC",
317 "BriefDescription": "Cycles when a tablewalk (I or D) is active",
318 "PublicDescription": "Tablewalk Active"
319 },
320 {,
321 "EventCode": "0x300f8",
322 "EventName": "PM_TB_BIT_TRANS",
323 "BriefDescription": "timebase event",
324 "PublicDescription": ""
325 },
326 {,
327 "EventCode": "0x2000c",
328 "EventName": "PM_THRD_ALL_RUN_CYC",
329 "BriefDescription": "All Threads in Run_cycles (was both threads in run_cycles)",
330 "PublicDescription": ""
331 },
332 {,
333 "EventCode": "0x30058",
334 "EventName": "PM_TLBIE_FIN",
335 "BriefDescription": "tlbie finished",
336 "PublicDescription": ""
337 },
338 {,
339 "EventCode": "0x10060",
340 "EventName": "PM_TM_TRANS_RUN_CYC",
341 "BriefDescription": "run cycles in transactional state",
342 "PublicDescription": ""
343 },
344 {,
345 "EventCode": "0x2e012",
346 "EventName": "PM_TM_TX_PASS_RUN_CYC",
347 "BriefDescription": "cycles spent in successful transactions",
348 "PublicDescription": "run cycles spent in successful transactions"
349 },
350]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/pmc.json b/tools/perf/pmu-events/arch/powerpc/power8/pmc.json
new file mode 100644
index 000000000000..583e4d937621
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/pmc.json
@@ -0,0 +1,140 @@
1[
2 {,
3 "EventCode": "0x20010",
4 "EventName": "PM_PMC1_OVERFLOW",
5 "BriefDescription": "Overflow from counter 1",
6 "PublicDescription": ""
7 },
8 {,
9 "EventCode": "0x30010",
10 "EventName": "PM_PMC2_OVERFLOW",
11 "BriefDescription": "Overflow from counter 2",
12 "PublicDescription": ""
13 },
14 {,
15 "EventCode": "0x30020",
16 "EventName": "PM_PMC2_REWIND",
17 "BriefDescription": "PMC2 Rewind Event (did not match condition)",
18 "PublicDescription": ""
19 },
20 {,
21 "EventCode": "0x10022",
22 "EventName": "PM_PMC2_SAVED",
23 "BriefDescription": "PMC2 Rewind Value saved",
24 "PublicDescription": "PMC2 Rewind Value saved (matched condition)"
25 },
26 {,
27 "EventCode": "0x40010",
28 "EventName": "PM_PMC3_OVERFLOW",
29 "BriefDescription": "Overflow from counter 3",
30 "PublicDescription": ""
31 },
32 {,
33 "EventCode": "0x10010",
34 "EventName": "PM_PMC4_OVERFLOW",
35 "BriefDescription": "Overflow from counter 4",
36 "PublicDescription": ""
37 },
38 {,
39 "EventCode": "0x10020",
40 "EventName": "PM_PMC4_REWIND",
41 "BriefDescription": "PMC4 Rewind Event",
42 "PublicDescription": "PMC4 Rewind Event (did not match condition)"
43 },
44 {,
45 "EventCode": "0x30022",
46 "EventName": "PM_PMC4_SAVED",
47 "BriefDescription": "PMC4 Rewind Value saved (matched condition)",
48 "PublicDescription": ""
49 },
50 {,
51 "EventCode": "0x10024",
52 "EventName": "PM_PMC5_OVERFLOW",
53 "BriefDescription": "Overflow from counter 5",
54 "PublicDescription": ""
55 },
56 {,
57 "EventCode": "0x30024",
58 "EventName": "PM_PMC6_OVERFLOW",
59 "BriefDescription": "Overflow from counter 6",
60 "PublicDescription": ""
61 },
62 {,
63 "EventCode": "0x400f4",
64 "EventName": "PM_RUN_PURR",
65 "BriefDescription": "Run_PURR",
66 "PublicDescription": ""
67 },
68 {,
69 "EventCode": "0x10008",
70 "EventName": "PM_RUN_SPURR",
71 "BriefDescription": "Run SPURR",
72 "PublicDescription": ""
73 },
74 {,
75 "EventCode": "0x0",
76 "EventName": "PM_SUSPENDED",
77 "BriefDescription": "Counter OFF",
78 "PublicDescription": ""
79 },
80 {,
81 "EventCode": "0x301ea",
82 "EventName": "PM_THRESH_EXC_1024",
83 "BriefDescription": "Threshold counter exceeded a value of 1024",
84 "PublicDescription": ""
85 },
86 {,
87 "EventCode": "0x401ea",
88 "EventName": "PM_THRESH_EXC_128",
89 "BriefDescription": "Threshold counter exceeded a value of 128",
90 "PublicDescription": ""
91 },
92 {,
93 "EventCode": "0x401ec",
94 "EventName": "PM_THRESH_EXC_2048",
95 "BriefDescription": "Threshold counter exceeded a value of 2048",
96 "PublicDescription": ""
97 },
98 {,
99 "EventCode": "0x101e8",
100 "EventName": "PM_THRESH_EXC_256",
101 "BriefDescription": "Threshold counter exceed a count of 256",
102 "PublicDescription": ""
103 },
104 {,
105 "EventCode": "0x201e6",
106 "EventName": "PM_THRESH_EXC_32",
107 "BriefDescription": "Threshold counter exceeded a value of 32",
108 "PublicDescription": ""
109 },
110 {,
111 "EventCode": "0x101e6",
112 "EventName": "PM_THRESH_EXC_4096",
113 "BriefDescription": "Threshold counter exceed a count of 4096",
114 "PublicDescription": ""
115 },
116 {,
117 "EventCode": "0x201e8",
118 "EventName": "PM_THRESH_EXC_512",
119 "BriefDescription": "Threshold counter exceeded a value of 512",
120 "PublicDescription": ""
121 },
122 {,
123 "EventCode": "0x301e8",
124 "EventName": "PM_THRESH_EXC_64",
125 "BriefDescription": "IFU non-branch finished",
126 "PublicDescription": "Threshold counter exceeded a value of 64"
127 },
128 {,
129 "EventCode": "0x101ec",
130 "EventName": "PM_THRESH_MET",
131 "BriefDescription": "threshold exceeded",
132 "PublicDescription": ""
133 },
134 {,
135 "EventCode": "0x4016e",
136 "EventName": "PM_THRESH_NOT_MET",
137 "BriefDescription": "Threshold counter did not meet threshold",
138 "PublicDescription": ""
139 },
140]
diff --git a/tools/perf/pmu-events/arch/powerpc/power8/translation.json b/tools/perf/pmu-events/arch/powerpc/power8/translation.json
new file mode 100644
index 000000000000..e47a55459bc8
--- /dev/null
+++ b/tools/perf/pmu-events/arch/powerpc/power8/translation.json
@@ -0,0 +1,176 @@
1[
2 {,
3 "EventCode": "0x4c054",
4 "EventName": "PM_DERAT_MISS_16G",
5 "BriefDescription": "Data ERAT Miss (Data TLB Access) page size 16G",
6 "PublicDescription": ""
7 },
8 {,
9 "EventCode": "0x3c054",
10 "EventName": "PM_DERAT_MISS_16M",
11 "BriefDescription": "Data ERAT Miss (Data TLB Access) page size 16M",
12 "PublicDescription": ""
13 },
14 {,
15 "EventCode": "0x1c056",
16 "EventName": "PM_DERAT_MISS_4K",
17 "BriefDescription": "Data ERAT Miss (Data TLB Access) page size 4K",
18 "PublicDescription": ""
19 },
20 {,
21 "EventCode": "0x2c054",
22 "EventName": "PM_DERAT_MISS_64K",
23 "BriefDescription": "Data ERAT Miss (Data TLB Access) page size 64K",
24 "PublicDescription": ""
25 },
26 {,
27 "EventCode": "0x4e048",
28 "EventName": "PM_DPTEG_FROM_DL2L3_MOD",
29 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a data side request",
30 "PublicDescription": ""
31 },
32 {,
33 "EventCode": "0x3e048",
34 "EventName": "PM_DPTEG_FROM_DL2L3_SHR",
35 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a data side request",
36 "PublicDescription": ""
37 },
38 {,
39 "EventCode": "0x1e042",
40 "EventName": "PM_DPTEG_FROM_L2",
41 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 due to a data side request",
42 "PublicDescription": ""
43 },
44 {,
45 "EventCode": "0x1e04e",
46 "EventName": "PM_DPTEG_FROM_L2MISS",
47 "BriefDescription": "A Page Table Entry was loaded into the TLB from a localtion other than the local core's L2 due to a data side request",
48 "PublicDescription": ""
49 },
50 {,
51 "EventCode": "0x2e040",
52 "EventName": "PM_DPTEG_FROM_L2_MEPF",
53 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 hit without dispatch conflicts on Mepf state. due to a data side request",
54 "PublicDescription": ""
55 },
56 {,
57 "EventCode": "0x1e040",
58 "EventName": "PM_DPTEG_FROM_L2_NO_CONFLICT",
59 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 without conflict due to a data side request",
60 "PublicDescription": ""
61 },
62 {,
63 "EventCode": "0x4e042",
64 "EventName": "PM_DPTEG_FROM_L3",
65 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 due to a data side request",
66 "PublicDescription": ""
67 },
68 {,
69 "EventCode": "0x3e042",
70 "EventName": "PM_DPTEG_FROM_L3_DISP_CONFLICT",
71 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 with dispatch conflict due to a data side request",
72 "PublicDescription": ""
73 },
74 {,
75 "EventCode": "0x2e042",
76 "EventName": "PM_DPTEG_FROM_L3_MEPF",
77 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 without dispatch conflicts hit on Mepf state. due to a data side request",
78 "PublicDescription": ""
79 },
80 {,
81 "EventCode": "0x1e044",
82 "EventName": "PM_DPTEG_FROM_L3_NO_CONFLICT",
83 "BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 without conflict due to a data side request",
84 "PublicDescription": ""
85 },
86 {,
87 "EventCode": "0x1e04c",
88 "EventName": "PM_DPTEG_FROM_LL4",
89 "BriefDescription": "A Page Table Entry was loaded into the TLB from the local chip's L4 cache due to a data side request",
90 "PublicDescription": ""
91 },
92 {,
93 "EventCode": "0x2e048",
94 "EventName": "PM_DPTEG_FROM_LMEM",
95 "BriefDescription": "A Page Table Entry was loaded into the TLB from the local chip's Memory due to a data side request",
96 "PublicDescription": ""
97 },
98 {,
99 "EventCode": "0x2e04c",
100 "EventName": "PM_DPTEG_FROM_MEMORY",
101 "BriefDescription": "A Page Table Entry was loaded into the TLB from a memory location including L4 from local remote or distant due to a data side request",
102 "PublicDescription": ""
103 },
104 {,
105 "EventCode": "0x4e04a",
106 "EventName": "PM_DPTEG_FROM_OFF_CHIP_CACHE",
107 "BriefDescription": "A Page Table Entry was loaded into the TLB either shared or modified data from another core's L2/L3 on a different chip (remote or distant) due to a data side request",
108 "PublicDescription": ""
109 },
110 {,
111 "EventCode": "0x1e048",
112 "EventName": "PM_DPTEG_FROM_ON_CHIP_CACHE",
113 "BriefDescription": "A Page Table Entry was loaded into the TLB either shared or modified data from another core's L2/L3 on the same chip due to a data side request",
114 "PublicDescription": ""
115 },
116 {,
117 "EventCode": "0x2e046",
118 "EventName": "PM_DPTEG_FROM_RL2L3_MOD",
119 "BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a data side request",
120 "PublicDescription": ""
121 },
122 {,
123 "EventCode": "0x1e04a",
124 "EventName": "PM_DPTEG_FROM_RL2L3_SHR",
125 "BriefDescription": "A Page Table Entry was loaded into the TLB with Shared (S) data from another chip's L2 or L3 on the same Node or Group (Remote), as this chip due to a data side request",
126 "PublicDescription": ""
127 },
128 {,
129 "EventCode": "0x2e04a",
130 "EventName": "PM_DPTEG_FROM_RL4",
131 "BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's L4 on the same Node or Group ( Remote) due to a data side request",
132 "PublicDescription": ""
133 },
134 {,
135 "EventCode": "0x300fc",
136 "EventName": "PM_DTLB_MISS",
137 "BriefDescription": "Data PTEG reload",
138 "PublicDescription": "Data PTEG Reloaded (DTLB Miss)"
139 },
140 {,
141 "EventCode": "0x1c058",
142 "EventName": "PM_DTLB_MISS_16G",
143 "BriefDescription": "Data TLB Miss page size 16G",
144 "PublicDescription": ""
145 },
146 {,
147 "EventCode": "0x4c056",
148 "EventName": "PM_DTLB_MISS_16M",
149 "BriefDescription": "Data TLB Miss page size 16M",
150 "PublicDescription": ""
151 },
152 {,
153 "EventCode": "0x2c056",
154 "EventName": "PM_DTLB_MISS_4K",
155 "BriefDescription": "Data TLB Miss page size 4k",
156 "PublicDescription": ""
157 },
158 {,
159 "EventCode": "0x3c056",
160 "EventName": "PM_DTLB_MISS_64K",
161 "BriefDescription": "Data TLB Miss page size 64K",
162 "PublicDescription": ""
163 },
164 {,
165 "EventCode": "0x200f6",
166 "EventName": "PM_LSU_DERAT_MISS",
167 "BriefDescription": "DERAT Reloaded due to a DERAT miss",
168 "PublicDescription": "DERAT Reloaded (Miss)"
169 },
170 {,
171 "EventCode": "0x20066",
172 "EventName": "PM_TLB_MISS",
173 "BriefDescription": "TLB Miss (I + D)",
174 "PublicDescription": ""
175 },
176]
diff --git a/tools/perf/pmu-events/arch/x86/bonnell/cache.json b/tools/perf/pmu-events/arch/x86/bonnell/cache.json
new file mode 100644
index 000000000000..ffab90c5891c
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/bonnell/cache.json
@@ -0,0 +1,746 @@
1[
2 {
3 "EventCode": "0x21",
4 "Counter": "0,1",
5 "UMask": "0x40",
6 "EventName": "L2_ADS.SELF",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "Cycles L2 address bus is in use."
9 },
10 {
11 "EventCode": "0x22",
12 "Counter": "0,1",
13 "UMask": "0x40",
14 "EventName": "L2_DBUS_BUSY.SELF",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "Cycles the L2 cache data bus is busy."
17 },
18 {
19 "EventCode": "0x23",
20 "Counter": "0,1",
21 "UMask": "0x40",
22 "EventName": "L2_DBUS_BUSY_RD.SELF",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "Cycles the L2 transfers data to the core."
25 },
26 {
27 "EventCode": "0x24",
28 "Counter": "0,1",
29 "UMask": "0x70",
30 "EventName": "L2_LINES_IN.SELF.ANY",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "L2 cache misses."
33 },
34 {
35 "EventCode": "0x24",
36 "Counter": "0,1",
37 "UMask": "0x40",
38 "EventName": "L2_LINES_IN.SELF.DEMAND",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "L2 cache misses."
41 },
42 {
43 "EventCode": "0x24",
44 "Counter": "0,1",
45 "UMask": "0x50",
46 "EventName": "L2_LINES_IN.SELF.PREFETCH",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "L2 cache misses."
49 },
50 {
51 "EventCode": "0x25",
52 "Counter": "0,1",
53 "UMask": "0x40",
54 "EventName": "L2_M_LINES_IN.SELF",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "L2 cache line modifications."
57 },
58 {
59 "EventCode": "0x26",
60 "Counter": "0,1",
61 "UMask": "0x70",
62 "EventName": "L2_LINES_OUT.SELF.ANY",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "L2 cache lines evicted."
65 },
66 {
67 "EventCode": "0x26",
68 "Counter": "0,1",
69 "UMask": "0x40",
70 "EventName": "L2_LINES_OUT.SELF.DEMAND",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "L2 cache lines evicted."
73 },
74 {
75 "EventCode": "0x26",
76 "Counter": "0,1",
77 "UMask": "0x50",
78 "EventName": "L2_LINES_OUT.SELF.PREFETCH",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "L2 cache lines evicted."
81 },
82 {
83 "EventCode": "0x27",
84 "Counter": "0,1",
85 "UMask": "0x70",
86 "EventName": "L2_M_LINES_OUT.SELF.ANY",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "Modified lines evicted from the L2 cache"
89 },
90 {
91 "EventCode": "0x27",
92 "Counter": "0,1",
93 "UMask": "0x40",
94 "EventName": "L2_M_LINES_OUT.SELF.DEMAND",
95 "SampleAfterValue": "200000",
96 "BriefDescription": "Modified lines evicted from the L2 cache"
97 },
98 {
99 "EventCode": "0x27",
100 "Counter": "0,1",
101 "UMask": "0x50",
102 "EventName": "L2_M_LINES_OUT.SELF.PREFETCH",
103 "SampleAfterValue": "200000",
104 "BriefDescription": "Modified lines evicted from the L2 cache"
105 },
106 {
107 "EventCode": "0x28",
108 "Counter": "0,1",
109 "UMask": "0x44",
110 "EventName": "L2_IFETCH.SELF.E_STATE",
111 "SampleAfterValue": "200000",
112 "BriefDescription": "L2 cacheable instruction fetch requests"
113 },
114 {
115 "EventCode": "0x28",
116 "Counter": "0,1",
117 "UMask": "0x41",
118 "EventName": "L2_IFETCH.SELF.I_STATE",
119 "SampleAfterValue": "200000",
120 "BriefDescription": "L2 cacheable instruction fetch requests"
121 },
122 {
123 "EventCode": "0x28",
124 "Counter": "0,1",
125 "UMask": "0x48",
126 "EventName": "L2_IFETCH.SELF.M_STATE",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "L2 cacheable instruction fetch requests"
129 },
130 {
131 "EventCode": "0x28",
132 "Counter": "0,1",
133 "UMask": "0x42",
134 "EventName": "L2_IFETCH.SELF.S_STATE",
135 "SampleAfterValue": "200000",
136 "BriefDescription": "L2 cacheable instruction fetch requests"
137 },
138 {
139 "EventCode": "0x28",
140 "Counter": "0,1",
141 "UMask": "0x4f",
142 "EventName": "L2_IFETCH.SELF.MESI",
143 "SampleAfterValue": "200000",
144 "BriefDescription": "L2 cacheable instruction fetch requests"
145 },
146 {
147 "EventCode": "0x29",
148 "Counter": "0,1",
149 "UMask": "0x74",
150 "EventName": "L2_LD.SELF.ANY.E_STATE",
151 "SampleAfterValue": "200000",
152 "BriefDescription": "L2 cache reads"
153 },
154 {
155 "EventCode": "0x29",
156 "Counter": "0,1",
157 "UMask": "0x71",
158 "EventName": "L2_LD.SELF.ANY.I_STATE",
159 "SampleAfterValue": "200000",
160 "BriefDescription": "L2 cache reads"
161 },
162 {
163 "EventCode": "0x29",
164 "Counter": "0,1",
165 "UMask": "0x78",
166 "EventName": "L2_LD.SELF.ANY.M_STATE",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "L2 cache reads"
169 },
170 {
171 "EventCode": "0x29",
172 "Counter": "0,1",
173 "UMask": "0x72",
174 "EventName": "L2_LD.SELF.ANY.S_STATE",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "L2 cache reads"
177 },
178 {
179 "EventCode": "0x29",
180 "Counter": "0,1",
181 "UMask": "0x7f",
182 "EventName": "L2_LD.SELF.ANY.MESI",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "L2 cache reads"
185 },
186 {
187 "EventCode": "0x29",
188 "Counter": "0,1",
189 "UMask": "0x44",
190 "EventName": "L2_LD.SELF.DEMAND.E_STATE",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "L2 cache reads"
193 },
194 {
195 "EventCode": "0x29",
196 "Counter": "0,1",
197 "UMask": "0x41",
198 "EventName": "L2_LD.SELF.DEMAND.I_STATE",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "L2 cache reads"
201 },
202 {
203 "EventCode": "0x29",
204 "Counter": "0,1",
205 "UMask": "0x48",
206 "EventName": "L2_LD.SELF.DEMAND.M_STATE",
207 "SampleAfterValue": "200000",
208 "BriefDescription": "L2 cache reads"
209 },
210 {
211 "EventCode": "0x29",
212 "Counter": "0,1",
213 "UMask": "0x42",
214 "EventName": "L2_LD.SELF.DEMAND.S_STATE",
215 "SampleAfterValue": "200000",
216 "BriefDescription": "L2 cache reads"
217 },
218 {
219 "EventCode": "0x29",
220 "Counter": "0,1",
221 "UMask": "0x4f",
222 "EventName": "L2_LD.SELF.DEMAND.MESI",
223 "SampleAfterValue": "200000",
224 "BriefDescription": "L2 cache reads"
225 },
226 {
227 "EventCode": "0x29",
228 "Counter": "0,1",
229 "UMask": "0x54",
230 "EventName": "L2_LD.SELF.PREFETCH.E_STATE",
231 "SampleAfterValue": "200000",
232 "BriefDescription": "L2 cache reads"
233 },
234 {
235 "EventCode": "0x29",
236 "Counter": "0,1",
237 "UMask": "0x51",
238 "EventName": "L2_LD.SELF.PREFETCH.I_STATE",
239 "SampleAfterValue": "200000",
240 "BriefDescription": "L2 cache reads"
241 },
242 {
243 "EventCode": "0x29",
244 "Counter": "0,1",
245 "UMask": "0x58",
246 "EventName": "L2_LD.SELF.PREFETCH.M_STATE",
247 "SampleAfterValue": "200000",
248 "BriefDescription": "L2 cache reads"
249 },
250 {
251 "EventCode": "0x29",
252 "Counter": "0,1",
253 "UMask": "0x52",
254 "EventName": "L2_LD.SELF.PREFETCH.S_STATE",
255 "SampleAfterValue": "200000",
256 "BriefDescription": "L2 cache reads"
257 },
258 {
259 "EventCode": "0x29",
260 "Counter": "0,1",
261 "UMask": "0x5f",
262 "EventName": "L2_LD.SELF.PREFETCH.MESI",
263 "SampleAfterValue": "200000",
264 "BriefDescription": "L2 cache reads"
265 },
266 {
267 "EventCode": "0x2A",
268 "Counter": "0,1",
269 "UMask": "0x44",
270 "EventName": "L2_ST.SELF.E_STATE",
271 "SampleAfterValue": "200000",
272 "BriefDescription": "L2 store requests"
273 },
274 {
275 "EventCode": "0x2A",
276 "Counter": "0,1",
277 "UMask": "0x41",
278 "EventName": "L2_ST.SELF.I_STATE",
279 "SampleAfterValue": "200000",
280 "BriefDescription": "L2 store requests"
281 },
282 {
283 "EventCode": "0x2A",
284 "Counter": "0,1",
285 "UMask": "0x48",
286 "EventName": "L2_ST.SELF.M_STATE",
287 "SampleAfterValue": "200000",
288 "BriefDescription": "L2 store requests"
289 },
290 {
291 "EventCode": "0x2A",
292 "Counter": "0,1",
293 "UMask": "0x42",
294 "EventName": "L2_ST.SELF.S_STATE",
295 "SampleAfterValue": "200000",
296 "BriefDescription": "L2 store requests"
297 },
298 {
299 "EventCode": "0x2A",
300 "Counter": "0,1",
301 "UMask": "0x4f",
302 "EventName": "L2_ST.SELF.MESI",
303 "SampleAfterValue": "200000",
304 "BriefDescription": "L2 store requests"
305 },
306 {
307 "EventCode": "0x2B",
308 "Counter": "0,1",
309 "UMask": "0x44",
310 "EventName": "L2_LOCK.SELF.E_STATE",
311 "SampleAfterValue": "200000",
312 "BriefDescription": "L2 locked accesses"
313 },
314 {
315 "EventCode": "0x2B",
316 "Counter": "0,1",
317 "UMask": "0x41",
318 "EventName": "L2_LOCK.SELF.I_STATE",
319 "SampleAfterValue": "200000",
320 "BriefDescription": "L2 locked accesses"
321 },
322 {
323 "EventCode": "0x2B",
324 "Counter": "0,1",
325 "UMask": "0x48",
326 "EventName": "L2_LOCK.SELF.M_STATE",
327 "SampleAfterValue": "200000",
328 "BriefDescription": "L2 locked accesses"
329 },
330 {
331 "EventCode": "0x2B",
332 "Counter": "0,1",
333 "UMask": "0x42",
334 "EventName": "L2_LOCK.SELF.S_STATE",
335 "SampleAfterValue": "200000",
336 "BriefDescription": "L2 locked accesses"
337 },
338 {
339 "EventCode": "0x2B",
340 "Counter": "0,1",
341 "UMask": "0x4f",
342 "EventName": "L2_LOCK.SELF.MESI",
343 "SampleAfterValue": "200000",
344 "BriefDescription": "L2 locked accesses"
345 },
346 {
347 "EventCode": "0x2C",
348 "Counter": "0,1",
349 "UMask": "0x44",
350 "EventName": "L2_DATA_RQSTS.SELF.E_STATE",
351 "SampleAfterValue": "200000",
352 "BriefDescription": "All data requests from the L1 data cache"
353 },
354 {
355 "EventCode": "0x2C",
356 "Counter": "0,1",
357 "UMask": "0x41",
358 "EventName": "L2_DATA_RQSTS.SELF.I_STATE",
359 "SampleAfterValue": "200000",
360 "BriefDescription": "All data requests from the L1 data cache"
361 },
362 {
363 "EventCode": "0x2C",
364 "Counter": "0,1",
365 "UMask": "0x48",
366 "EventName": "L2_DATA_RQSTS.SELF.M_STATE",
367 "SampleAfterValue": "200000",
368 "BriefDescription": "All data requests from the L1 data cache"
369 },
370 {
371 "EventCode": "0x2C",
372 "Counter": "0,1",
373 "UMask": "0x42",
374 "EventName": "L2_DATA_RQSTS.SELF.S_STATE",
375 "SampleAfterValue": "200000",
376 "BriefDescription": "All data requests from the L1 data cache"
377 },
378 {
379 "EventCode": "0x2C",
380 "Counter": "0,1",
381 "UMask": "0x4f",
382 "EventName": "L2_DATA_RQSTS.SELF.MESI",
383 "SampleAfterValue": "200000",
384 "BriefDescription": "All data requests from the L1 data cache"
385 },
386 {
387 "EventCode": "0x2D",
388 "Counter": "0,1",
389 "UMask": "0x44",
390 "EventName": "L2_LD_IFETCH.SELF.E_STATE",
391 "SampleAfterValue": "200000",
392 "BriefDescription": "All read requests from L1 instruction and data caches"
393 },
394 {
395 "EventCode": "0x2D",
396 "Counter": "0,1",
397 "UMask": "0x41",
398 "EventName": "L2_LD_IFETCH.SELF.I_STATE",
399 "SampleAfterValue": "200000",
400 "BriefDescription": "All read requests from L1 instruction and data caches"
401 },
402 {
403 "EventCode": "0x2D",
404 "Counter": "0,1",
405 "UMask": "0x48",
406 "EventName": "L2_LD_IFETCH.SELF.M_STATE",
407 "SampleAfterValue": "200000",
408 "BriefDescription": "All read requests from L1 instruction and data caches"
409 },
410 {
411 "EventCode": "0x2D",
412 "Counter": "0,1",
413 "UMask": "0x42",
414 "EventName": "L2_LD_IFETCH.SELF.S_STATE",
415 "SampleAfterValue": "200000",
416 "BriefDescription": "All read requests from L1 instruction and data caches"
417 },
418 {
419 "EventCode": "0x2D",
420 "Counter": "0,1",
421 "UMask": "0x4f",
422 "EventName": "L2_LD_IFETCH.SELF.MESI",
423 "SampleAfterValue": "200000",
424 "BriefDescription": "All read requests from L1 instruction and data caches"
425 },
426 {
427 "EventCode": "0x2E",
428 "Counter": "0,1",
429 "UMask": "0x74",
430 "EventName": "L2_RQSTS.SELF.ANY.E_STATE",
431 "SampleAfterValue": "200000",
432 "BriefDescription": "L2 cache requests"
433 },
434 {
435 "EventCode": "0x2E",
436 "Counter": "0,1",
437 "UMask": "0x71",
438 "EventName": "L2_RQSTS.SELF.ANY.I_STATE",
439 "SampleAfterValue": "200000",
440 "BriefDescription": "L2 cache requests"
441 },
442 {
443 "EventCode": "0x2E",
444 "Counter": "0,1",
445 "UMask": "0x78",
446 "EventName": "L2_RQSTS.SELF.ANY.M_STATE",
447 "SampleAfterValue": "200000",
448 "BriefDescription": "L2 cache requests"
449 },
450 {
451 "EventCode": "0x2E",
452 "Counter": "0,1",
453 "UMask": "0x72",
454 "EventName": "L2_RQSTS.SELF.ANY.S_STATE",
455 "SampleAfterValue": "200000",
456 "BriefDescription": "L2 cache requests"
457 },
458 {
459 "EventCode": "0x2E",
460 "Counter": "0,1",
461 "UMask": "0x7f",
462 "EventName": "L2_RQSTS.SELF.ANY.MESI",
463 "SampleAfterValue": "200000",
464 "BriefDescription": "L2 cache requests"
465 },
466 {
467 "EventCode": "0x2E",
468 "Counter": "0,1",
469 "UMask": "0x44",
470 "EventName": "L2_RQSTS.SELF.DEMAND.E_STATE",
471 "SampleAfterValue": "200000",
472 "BriefDescription": "L2 cache requests"
473 },
474 {
475 "EventCode": "0x2E",
476 "Counter": "0,1",
477 "UMask": "0x48",
478 "EventName": "L2_RQSTS.SELF.DEMAND.M_STATE",
479 "SampleAfterValue": "200000",
480 "BriefDescription": "L2 cache requests"
481 },
482 {
483 "EventCode": "0x2E",
484 "Counter": "0,1",
485 "UMask": "0x42",
486 "EventName": "L2_RQSTS.SELF.DEMAND.S_STATE",
487 "SampleAfterValue": "200000",
488 "BriefDescription": "L2 cache requests"
489 },
490 {
491 "EventCode": "0x2E",
492 "Counter": "0,1",
493 "UMask": "0x54",
494 "EventName": "L2_RQSTS.SELF.PREFETCH.E_STATE",
495 "SampleAfterValue": "200000",
496 "BriefDescription": "L2 cache requests"
497 },
498 {
499 "EventCode": "0x2E",
500 "Counter": "0,1",
501 "UMask": "0x51",
502 "EventName": "L2_RQSTS.SELF.PREFETCH.I_STATE",
503 "SampleAfterValue": "200000",
504 "BriefDescription": "L2 cache requests"
505 },
506 {
507 "EventCode": "0x2E",
508 "Counter": "0,1",
509 "UMask": "0x58",
510 "EventName": "L2_RQSTS.SELF.PREFETCH.M_STATE",
511 "SampleAfterValue": "200000",
512 "BriefDescription": "L2 cache requests"
513 },
514 {
515 "EventCode": "0x2E",
516 "Counter": "0,1",
517 "UMask": "0x52",
518 "EventName": "L2_RQSTS.SELF.PREFETCH.S_STATE",
519 "SampleAfterValue": "200000",
520 "BriefDescription": "L2 cache requests"
521 },
522 {
523 "EventCode": "0x2E",
524 "Counter": "0,1",
525 "UMask": "0x5f",
526 "EventName": "L2_RQSTS.SELF.PREFETCH.MESI",
527 "SampleAfterValue": "200000",
528 "BriefDescription": "L2 cache requests"
529 },
530 {
531 "EventCode": "0x2E",
532 "Counter": "0,1",
533 "UMask": "0x41",
534 "EventName": "L2_RQSTS.SELF.DEMAND.I_STATE",
535 "SampleAfterValue": "200000",
536 "BriefDescription": "L2 cache demand requests from this core that missed the L2"
537 },
538 {
539 "EventCode": "0x2E",
540 "Counter": "0,1",
541 "UMask": "0x4f",
542 "EventName": "L2_RQSTS.SELF.DEMAND.MESI",
543 "SampleAfterValue": "200000",
544 "BriefDescription": "L2 cache demand requests from this core"
545 },
546 {
547 "EventCode": "0x30",
548 "Counter": "0,1",
549 "UMask": "0x74",
550 "EventName": "L2_REJECT_BUSQ.SELF.ANY.E_STATE",
551 "SampleAfterValue": "200000",
552 "BriefDescription": "Rejected L2 cache requests"
553 },
554 {
555 "EventCode": "0x30",
556 "Counter": "0,1",
557 "UMask": "0x71",
558 "EventName": "L2_REJECT_BUSQ.SELF.ANY.I_STATE",
559 "SampleAfterValue": "200000",
560 "BriefDescription": "Rejected L2 cache requests"
561 },
562 {
563 "EventCode": "0x30",
564 "Counter": "0,1",
565 "UMask": "0x78",
566 "EventName": "L2_REJECT_BUSQ.SELF.ANY.M_STATE",
567 "SampleAfterValue": "200000",
568 "BriefDescription": "Rejected L2 cache requests"
569 },
570 {
571 "EventCode": "0x30",
572 "Counter": "0,1",
573 "UMask": "0x72",
574 "EventName": "L2_REJECT_BUSQ.SELF.ANY.S_STATE",
575 "SampleAfterValue": "200000",
576 "BriefDescription": "Rejected L2 cache requests"
577 },
578 {
579 "EventCode": "0x30",
580 "Counter": "0,1",
581 "UMask": "0x7f",
582 "EventName": "L2_REJECT_BUSQ.SELF.ANY.MESI",
583 "SampleAfterValue": "200000",
584 "BriefDescription": "Rejected L2 cache requests"
585 },
586 {
587 "EventCode": "0x30",
588 "Counter": "0,1",
589 "UMask": "0x44",
590 "EventName": "L2_REJECT_BUSQ.SELF.DEMAND.E_STATE",
591 "SampleAfterValue": "200000",
592 "BriefDescription": "Rejected L2 cache requests"
593 },
594 {
595 "EventCode": "0x30",
596 "Counter": "0,1",
597 "UMask": "0x41",
598 "EventName": "L2_REJECT_BUSQ.SELF.DEMAND.I_STATE",
599 "SampleAfterValue": "200000",
600 "BriefDescription": "Rejected L2 cache requests"
601 },
602 {
603 "EventCode": "0x30",
604 "Counter": "0,1",
605 "UMask": "0x48",
606 "EventName": "L2_REJECT_BUSQ.SELF.DEMAND.M_STATE",
607 "SampleAfterValue": "200000",
608 "BriefDescription": "Rejected L2 cache requests"
609 },
610 {
611 "EventCode": "0x30",
612 "Counter": "0,1",
613 "UMask": "0x42",
614 "EventName": "L2_REJECT_BUSQ.SELF.DEMAND.S_STATE",
615 "SampleAfterValue": "200000",
616 "BriefDescription": "Rejected L2 cache requests"
617 },
618 {
619 "EventCode": "0x30",
620 "Counter": "0,1",
621 "UMask": "0x4f",
622 "EventName": "L2_REJECT_BUSQ.SELF.DEMAND.MESI",
623 "SampleAfterValue": "200000",
624 "BriefDescription": "Rejected L2 cache requests"
625 },
626 {
627 "EventCode": "0x30",
628 "Counter": "0,1",
629 "UMask": "0x54",
630 "EventName": "L2_REJECT_BUSQ.SELF.PREFETCH.E_STATE",
631 "SampleAfterValue": "200000",
632 "BriefDescription": "Rejected L2 cache requests"
633 },
634 {
635 "EventCode": "0x30",
636 "Counter": "0,1",
637 "UMask": "0x51",
638 "EventName": "L2_REJECT_BUSQ.SELF.PREFETCH.I_STATE",
639 "SampleAfterValue": "200000",
640 "BriefDescription": "Rejected L2 cache requests"
641 },
642 {
643 "EventCode": "0x30",
644 "Counter": "0,1",
645 "UMask": "0x58",
646 "EventName": "L2_REJECT_BUSQ.SELF.PREFETCH.M_STATE",
647 "SampleAfterValue": "200000",
648 "BriefDescription": "Rejected L2 cache requests"
649 },
650 {
651 "EventCode": "0x30",
652 "Counter": "0,1",
653 "UMask": "0x52",
654 "EventName": "L2_REJECT_BUSQ.SELF.PREFETCH.S_STATE",
655 "SampleAfterValue": "200000",
656 "BriefDescription": "Rejected L2 cache requests"
657 },
658 {
659 "EventCode": "0x30",
660 "Counter": "0,1",
661 "UMask": "0x5f",
662 "EventName": "L2_REJECT_BUSQ.SELF.PREFETCH.MESI",
663 "SampleAfterValue": "200000",
664 "BriefDescription": "Rejected L2 cache requests"
665 },
666 {
667 "EventCode": "0x32",
668 "Counter": "0,1",
669 "UMask": "0x40",
670 "EventName": "L2_NO_REQ.SELF",
671 "SampleAfterValue": "200000",
672 "BriefDescription": "Cycles no L2 cache requests are pending"
673 },
674 {
675 "EventCode": "0x40",
676 "Counter": "0,1",
677 "UMask": "0xa1",
678 "EventName": "L1D_CACHE.LD",
679 "SampleAfterValue": "2000000",
680 "BriefDescription": "L1 Cacheable Data Reads"
681 },
682 {
683 "EventCode": "0x40",
684 "Counter": "0,1",
685 "UMask": "0xa2",
686 "EventName": "L1D_CACHE.ST",
687 "SampleAfterValue": "2000000",
688 "BriefDescription": "L1 Cacheable Data Writes"
689 },
690 {
691 "EventCode": "0x40",
692 "Counter": "0,1",
693 "UMask": "0x83",
694 "EventName": "L1D_CACHE.ALL_REF",
695 "SampleAfterValue": "2000000",
696 "BriefDescription": "L1 Data reads and writes"
697 },
698 {
699 "EventCode": "0x40",
700 "Counter": "0,1",
701 "UMask": "0xa3",
702 "EventName": "L1D_CACHE.ALL_CACHE_REF",
703 "SampleAfterValue": "2000000",
704 "BriefDescription": "L1 Data Cacheable reads and writes"
705 },
706 {
707 "EventCode": "0x40",
708 "Counter": "0,1",
709 "UMask": "0x8",
710 "EventName": "L1D_CACHE.REPL",
711 "SampleAfterValue": "200000",
712 "BriefDescription": "L1 Data line replacements"
713 },
714 {
715 "EventCode": "0x40",
716 "Counter": "0,1",
717 "UMask": "0x48",
718 "EventName": "L1D_CACHE.REPLM",
719 "SampleAfterValue": "200000",
720 "BriefDescription": "Modified cache lines allocated in the L1 data cache"
721 },
722 {
723 "EventCode": "0x40",
724 "Counter": "0,1",
725 "UMask": "0x10",
726 "EventName": "L1D_CACHE.EVICT",
727 "SampleAfterValue": "200000",
728 "BriefDescription": "Modified cache lines evicted from the L1 data cache"
729 },
730 {
731 "EventCode": "0xCB",
732 "Counter": "0,1",
733 "UMask": "0x1",
734 "EventName": "MEM_LOAD_RETIRED.L2_HIT",
735 "SampleAfterValue": "200000",
736 "BriefDescription": "Retired loads that hit the L2 cache (precise event)."
737 },
738 {
739 "EventCode": "0xCB",
740 "Counter": "0,1",
741 "UMask": "0x2",
742 "EventName": "MEM_LOAD_RETIRED.L2_MISS",
743 "SampleAfterValue": "10000",
744 "BriefDescription": "Retired loads that miss the L2 cache"
745 }
746] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/bonnell/floating-point.json b/tools/perf/pmu-events/arch/x86/bonnell/floating-point.json
new file mode 100644
index 000000000000..f0e090cdb9f0
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/bonnell/floating-point.json
@@ -0,0 +1,261 @@
1[
2 {
3 "EventCode": "0x10",
4 "Counter": "0,1",
5 "UMask": "0x1",
6 "EventName": "X87_COMP_OPS_EXE.ANY.S",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Floating point computational micro-ops executed."
9 },
10 {
11 "PEBS": "2",
12 "EventCode": "0x10",
13 "Counter": "0,1",
14 "UMask": "0x81",
15 "EventName": "X87_COMP_OPS_EXE.ANY.AR",
16 "SampleAfterValue": "2000000",
17 "BriefDescription": "Floating point computational micro-ops retired."
18 },
19 {
20 "EventCode": "0x10",
21 "Counter": "0,1",
22 "UMask": "0x2",
23 "EventName": "X87_COMP_OPS_EXE.FXCH.S",
24 "SampleAfterValue": "2000000",
25 "BriefDescription": "FXCH uops executed."
26 },
27 {
28 "PEBS": "2",
29 "EventCode": "0x10",
30 "Counter": "0,1",
31 "UMask": "0x82",
32 "EventName": "X87_COMP_OPS_EXE.FXCH.AR",
33 "SampleAfterValue": "2000000",
34 "BriefDescription": "FXCH uops retired."
35 },
36 {
37 "EventCode": "0x11",
38 "Counter": "0,1",
39 "UMask": "0x1",
40 "EventName": "FP_ASSIST.S",
41 "SampleAfterValue": "10000",
42 "BriefDescription": "Floating point assists."
43 },
44 {
45 "EventCode": "0x11",
46 "Counter": "0,1",
47 "UMask": "0x81",
48 "EventName": "FP_ASSIST.AR",
49 "SampleAfterValue": "10000",
50 "BriefDescription": "Floating point assists for retired operations."
51 },
52 {
53 "EventCode": "0xB0",
54 "Counter": "0,1",
55 "UMask": "0x0",
56 "EventName": "SIMD_UOPS_EXEC.S",
57 "SampleAfterValue": "2000000",
58 "BriefDescription": "SIMD micro-ops executed (excluding stores)."
59 },
60 {
61 "PEBS": "2",
62 "EventCode": "0xB0",
63 "Counter": "0,1",
64 "UMask": "0x80",
65 "EventName": "SIMD_UOPS_EXEC.AR",
66 "SampleAfterValue": "2000000",
67 "BriefDescription": "SIMD micro-ops retired (excluding stores)."
68 },
69 {
70 "EventCode": "0xB1",
71 "Counter": "0,1",
72 "UMask": "0x0",
73 "EventName": "SIMD_SAT_UOP_EXEC.S",
74 "SampleAfterValue": "2000000",
75 "BriefDescription": "SIMD saturated arithmetic micro-ops executed."
76 },
77 {
78 "EventCode": "0xB1",
79 "Counter": "0,1",
80 "UMask": "0x80",
81 "EventName": "SIMD_SAT_UOP_EXEC.AR",
82 "SampleAfterValue": "2000000",
83 "BriefDescription": "SIMD saturated arithmetic micro-ops retired."
84 },
85 {
86 "EventCode": "0xB3",
87 "Counter": "0,1",
88 "UMask": "0x1",
89 "EventName": "SIMD_UOP_TYPE_EXEC.MUL.S",
90 "SampleAfterValue": "2000000",
91 "BriefDescription": "SIMD packed multiply micro-ops executed"
92 },
93 {
94 "EventCode": "0xB3",
95 "Counter": "0,1",
96 "UMask": "0x81",
97 "EventName": "SIMD_UOP_TYPE_EXEC.MUL.AR",
98 "SampleAfterValue": "2000000",
99 "BriefDescription": "SIMD packed multiply micro-ops retired"
100 },
101 {
102 "EventCode": "0xB3",
103 "Counter": "0,1",
104 "UMask": "0x2",
105 "EventName": "SIMD_UOP_TYPE_EXEC.SHIFT.S",
106 "SampleAfterValue": "2000000",
107 "BriefDescription": "SIMD packed shift micro-ops executed"
108 },
109 {
110 "EventCode": "0xB3",
111 "Counter": "0,1",
112 "UMask": "0x82",
113 "EventName": "SIMD_UOP_TYPE_EXEC.SHIFT.AR",
114 "SampleAfterValue": "2000000",
115 "BriefDescription": "SIMD packed shift micro-ops retired"
116 },
117 {
118 "EventCode": "0xB3",
119 "Counter": "0,1",
120 "UMask": "0x4",
121 "EventName": "SIMD_UOP_TYPE_EXEC.PACK.S",
122 "SampleAfterValue": "2000000",
123 "BriefDescription": "SIMD packed micro-ops executed"
124 },
125 {
126 "EventCode": "0xB3",
127 "Counter": "0,1",
128 "UMask": "0x84",
129 "EventName": "SIMD_UOP_TYPE_EXEC.PACK.AR",
130 "SampleAfterValue": "2000000",
131 "BriefDescription": "SIMD packed micro-ops retired"
132 },
133 {
134 "EventCode": "0xB3",
135 "Counter": "0,1",
136 "UMask": "0x8",
137 "EventName": "SIMD_UOP_TYPE_EXEC.UNPACK.S",
138 "SampleAfterValue": "2000000",
139 "BriefDescription": "SIMD unpacked micro-ops executed"
140 },
141 {
142 "EventCode": "0xB3",
143 "Counter": "0,1",
144 "UMask": "0x88",
145 "EventName": "SIMD_UOP_TYPE_EXEC.UNPACK.AR",
146 "SampleAfterValue": "2000000",
147 "BriefDescription": "SIMD unpacked micro-ops retired"
148 },
149 {
150 "EventCode": "0xB3",
151 "Counter": "0,1",
152 "UMask": "0x10",
153 "EventName": "SIMD_UOP_TYPE_EXEC.LOGICAL.S",
154 "SampleAfterValue": "2000000",
155 "BriefDescription": "SIMD packed logical micro-ops executed"
156 },
157 {
158 "EventCode": "0xB3",
159 "Counter": "0,1",
160 "UMask": "0x90",
161 "EventName": "SIMD_UOP_TYPE_EXEC.LOGICAL.AR",
162 "SampleAfterValue": "2000000",
163 "BriefDescription": "SIMD packed logical micro-ops retired"
164 },
165 {
166 "EventCode": "0xB3",
167 "Counter": "0,1",
168 "UMask": "0x20",
169 "EventName": "SIMD_UOP_TYPE_EXEC.ARITHMETIC.S",
170 "SampleAfterValue": "2000000",
171 "BriefDescription": "SIMD packed arithmetic micro-ops executed"
172 },
173 {
174 "EventCode": "0xB3",
175 "Counter": "0,1",
176 "UMask": "0xa0",
177 "EventName": "SIMD_UOP_TYPE_EXEC.ARITHMETIC.AR",
178 "SampleAfterValue": "2000000",
179 "BriefDescription": "SIMD packed arithmetic micro-ops retired"
180 },
181 {
182 "EventCode": "0xC7",
183 "Counter": "0,1",
184 "UMask": "0x1",
185 "EventName": "SIMD_INST_RETIRED.PACKED_SINGLE",
186 "SampleAfterValue": "2000000",
187 "BriefDescription": "Retired Streaming SIMD Extensions (SSE) packed-single instructions."
188 },
189 {
190 "EventCode": "0xC7",
191 "Counter": "0,1",
192 "UMask": "0x2",
193 "EventName": "SIMD_INST_RETIRED.SCALAR_SINGLE",
194 "SampleAfterValue": "2000000",
195 "BriefDescription": "Retired Streaming SIMD Extensions (SSE) scalar-single instructions."
196 },
197 {
198 "EventCode": "0xC7",
199 "Counter": "0,1",
200 "UMask": "0x8",
201 "EventName": "SIMD_INST_RETIRED.SCALAR_DOUBLE",
202 "SampleAfterValue": "2000000",
203 "BriefDescription": "Retired Streaming SIMD Extensions 2 (SSE2) scalar-double instructions."
204 },
205 {
206 "EventCode": "0xC7",
207 "Counter": "0,1",
208 "UMask": "0x10",
209 "EventName": "SIMD_INST_RETIRED.VECTOR",
210 "SampleAfterValue": "2000000",
211 "BriefDescription": "Retired Streaming SIMD Extensions 2 (SSE2) vector instructions."
212 },
213 {
214 "EventCode": "0xCA",
215 "Counter": "0,1",
216 "UMask": "0x1",
217 "EventName": "SIMD_COMP_INST_RETIRED.PACKED_SINGLE",
218 "SampleAfterValue": "2000000",
219 "BriefDescription": "Retired computational Streaming SIMD Extensions (SSE) packed-single instructions."
220 },
221 {
222 "EventCode": "0xCA",
223 "Counter": "0,1",
224 "UMask": "0x2",
225 "EventName": "SIMD_COMP_INST_RETIRED.SCALAR_SINGLE",
226 "SampleAfterValue": "2000000",
227 "BriefDescription": "Retired computational Streaming SIMD Extensions (SSE) scalar-single instructions."
228 },
229 {
230 "EventCode": "0xCA",
231 "Counter": "0,1",
232 "UMask": "0x8",
233 "EventName": "SIMD_COMP_INST_RETIRED.SCALAR_DOUBLE",
234 "SampleAfterValue": "2000000",
235 "BriefDescription": "Retired computational Streaming SIMD Extensions 2 (SSE2) scalar-double instructions."
236 },
237 {
238 "EventCode": "0xCD",
239 "Counter": "0,1",
240 "UMask": "0x0",
241 "EventName": "SIMD_ASSIST",
242 "SampleAfterValue": "100000",
243 "BriefDescription": "SIMD assists invoked."
244 },
245 {
246 "EventCode": "0xCE",
247 "Counter": "0,1",
248 "UMask": "0x0",
249 "EventName": "SIMD_INSTR_RETIRED",
250 "SampleAfterValue": "2000000",
251 "BriefDescription": "SIMD Instructions retired."
252 },
253 {
254 "EventCode": "0xCF",
255 "Counter": "0,1",
256 "UMask": "0x0",
257 "EventName": "SIMD_SAT_INSTR_RETIRED",
258 "SampleAfterValue": "2000000",
259 "BriefDescription": "Saturated arithmetic instructions retired."
260 }
261] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/bonnell/frontend.json b/tools/perf/pmu-events/arch/x86/bonnell/frontend.json
new file mode 100644
index 000000000000..935b7dcf067d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/bonnell/frontend.json
@@ -0,0 +1,83 @@
1[
2 {
3 "EventCode": "0x80",
4 "Counter": "0,1",
5 "UMask": "0x3",
6 "EventName": "ICACHE.ACCESSES",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "Instruction fetches."
9 },
10 {
11 "EventCode": "0x80",
12 "Counter": "0,1",
13 "UMask": "0x1",
14 "EventName": "ICACHE.HIT",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "Icache hit"
17 },
18 {
19 "EventCode": "0x80",
20 "Counter": "0,1",
21 "UMask": "0x2",
22 "EventName": "ICACHE.MISSES",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "Icache miss"
25 },
26 {
27 "EventCode": "0x86",
28 "Counter": "0,1",
29 "UMask": "0x1",
30 "EventName": "CYCLES_ICACHE_MEM_STALLED.ICACHE_MEM_STALLED",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "Cycles during which instruction fetches are stalled."
33 },
34 {
35 "EventCode": "0x87",
36 "Counter": "0,1",
37 "UMask": "0x1",
38 "EventName": "DECODE_STALL.PFB_EMPTY",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "Decode stall due to PFB empty"
41 },
42 {
43 "EventCode": "0x87",
44 "Counter": "0,1",
45 "UMask": "0x2",
46 "EventName": "DECODE_STALL.IQ_FULL",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "Decode stall due to IQ full"
49 },
50 {
51 "EventCode": "0xAA",
52 "Counter": "0,1",
53 "UMask": "0x1",
54 "EventName": "MACRO_INSTS.NON_CISC_DECODED",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "Non-CISC nacro instructions decoded"
57 },
58 {
59 "EventCode": "0xAA",
60 "Counter": "0,1",
61 "UMask": "0x2",
62 "EventName": "MACRO_INSTS.CISC_DECODED",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "CISC macro instructions decoded"
65 },
66 {
67 "EventCode": "0xAA",
68 "Counter": "0,1",
69 "UMask": "0x3",
70 "EventName": "MACRO_INSTS.ALL_DECODED",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "All Instructions decoded"
73 },
74 {
75 "EventCode": "0xA9",
76 "Counter": "0,1",
77 "UMask": "0x1",
78 "EventName": "UOPS.MS_CYCLES",
79 "SampleAfterValue": "2000000",
80 "BriefDescription": "This event counts the cycles where 1 or more uops are issued by the micro-sequencer (MS), including microcode assists and inserted flows, and written to the IQ. ",
81 "CounterMask": "1"
82 }
83] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/bonnell/memory.json b/tools/perf/pmu-events/arch/x86/bonnell/memory.json
new file mode 100644
index 000000000000..3ae843b20c8a
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/bonnell/memory.json
@@ -0,0 +1,154 @@
1[
2 {
3 "EventCode": "0x5",
4 "Counter": "0,1",
5 "UMask": "0xf",
6 "EventName": "MISALIGN_MEM_REF.SPLIT",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "Memory references that cross an 8-byte boundary."
9 },
10 {
11 "EventCode": "0x5",
12 "Counter": "0,1",
13 "UMask": "0x9",
14 "EventName": "MISALIGN_MEM_REF.LD_SPLIT",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "Load splits"
17 },
18 {
19 "EventCode": "0x5",
20 "Counter": "0,1",
21 "UMask": "0xa",
22 "EventName": "MISALIGN_MEM_REF.ST_SPLIT",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "Store splits"
25 },
26 {
27 "EventCode": "0x5",
28 "Counter": "0,1",
29 "UMask": "0x8f",
30 "EventName": "MISALIGN_MEM_REF.SPLIT.AR",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "Memory references that cross an 8-byte boundary (At Retirement)"
33 },
34 {
35 "EventCode": "0x5",
36 "Counter": "0,1",
37 "UMask": "0x89",
38 "EventName": "MISALIGN_MEM_REF.LD_SPLIT.AR",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "Load splits (At Retirement)"
41 },
42 {
43 "EventCode": "0x5",
44 "Counter": "0,1",
45 "UMask": "0x8a",
46 "EventName": "MISALIGN_MEM_REF.ST_SPLIT.AR",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "Store splits (Ar Retirement)"
49 },
50 {
51 "EventCode": "0x5",
52 "Counter": "0,1",
53 "UMask": "0x8c",
54 "EventName": "MISALIGN_MEM_REF.RMW_SPLIT",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "ld-op-st splits"
57 },
58 {
59 "EventCode": "0x5",
60 "Counter": "0,1",
61 "UMask": "0x97",
62 "EventName": "MISALIGN_MEM_REF.BUBBLE",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "Nonzero segbase 1 bubble"
65 },
66 {
67 "EventCode": "0x5",
68 "Counter": "0,1",
69 "UMask": "0x91",
70 "EventName": "MISALIGN_MEM_REF.LD_BUBBLE",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "Nonzero segbase load 1 bubble"
73 },
74 {
75 "EventCode": "0x5",
76 "Counter": "0,1",
77 "UMask": "0x92",
78 "EventName": "MISALIGN_MEM_REF.ST_BUBBLE",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Nonzero segbase store 1 bubble"
81 },
82 {
83 "EventCode": "0x5",
84 "Counter": "0,1",
85 "UMask": "0x94",
86 "EventName": "MISALIGN_MEM_REF.RMW_BUBBLE",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "Nonzero segbase ld-op-st 1 bubble"
89 },
90 {
91 "EventCode": "0x7",
92 "Counter": "0,1",
93 "UMask": "0x81",
94 "EventName": "PREFETCH.PREFETCHT0",
95 "SampleAfterValue": "200000",
96 "BriefDescription": "Streaming SIMD Extensions (SSE) PrefetchT0 instructions executed."
97 },
98 {
99 "EventCode": "0x7",
100 "Counter": "0,1",
101 "UMask": "0x82",
102 "EventName": "PREFETCH.PREFETCHT1",
103 "SampleAfterValue": "200000",
104 "BriefDescription": "Streaming SIMD Extensions (SSE) PrefetchT1 instructions executed."
105 },
106 {
107 "EventCode": "0x7",
108 "Counter": "0,1",
109 "UMask": "0x84",
110 "EventName": "PREFETCH.PREFETCHT2",
111 "SampleAfterValue": "200000",
112 "BriefDescription": "Streaming SIMD Extensions (SSE) PrefetchT2 instructions executed."
113 },
114 {
115 "EventCode": "0x7",
116 "Counter": "0,1",
117 "UMask": "0x86",
118 "EventName": "PREFETCH.SW_L2",
119 "SampleAfterValue": "200000",
120 "BriefDescription": "Streaming SIMD Extensions (SSE) PrefetchT1 and PrefetchT2 instructions executed"
121 },
122 {
123 "EventCode": "0x7",
124 "Counter": "0,1",
125 "UMask": "0x88",
126 "EventName": "PREFETCH.PREFETCHNTA",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "Streaming SIMD Extensions (SSE) Prefetch NTA instructions executed"
129 },
130 {
131 "EventCode": "0x7",
132 "Counter": "0,1",
133 "UMask": "0x10",
134 "EventName": "PREFETCH.HW_PREFETCH",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "L1 hardware prefetch request"
137 },
138 {
139 "EventCode": "0x7",
140 "Counter": "0,1",
141 "UMask": "0xf",
142 "EventName": "PREFETCH.SOFTWARE_PREFETCH",
143 "SampleAfterValue": "200000",
144 "BriefDescription": "Any Software prefetch"
145 },
146 {
147 "EventCode": "0x7",
148 "Counter": "0,1",
149 "UMask": "0x8f",
150 "EventName": "PREFETCH.SOFTWARE_PREFETCH.AR",
151 "SampleAfterValue": "200000",
152 "BriefDescription": "Any Software prefetch"
153 }
154] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/bonnell/other.json b/tools/perf/pmu-events/arch/x86/bonnell/other.json
new file mode 100644
index 000000000000..4bc1c582d1cd
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/bonnell/other.json
@@ -0,0 +1,450 @@
1[
2 {
3 "EventCode": "0x6",
4 "Counter": "0,1",
5 "UMask": "0x80",
6 "EventName": "SEGMENT_REG_LOADS.ANY",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "Number of segment register loads."
9 },
10 {
11 "EventCode": "0x9",
12 "Counter": "0,1",
13 "UMask": "0x20",
14 "EventName": "DISPATCH_BLOCKED.ANY",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "Memory cluster signals to block micro-op dispatch for any reason"
17 },
18 {
19 "EventCode": "0x3A",
20 "Counter": "0,1",
21 "UMask": "0x0",
22 "EventName": "EIST_TRANS",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "Number of Enhanced Intel SpeedStep(R) Technology (EIST) transitions"
25 },
26 {
27 "EventCode": "0x3B",
28 "Counter": "0,1",
29 "UMask": "0xc0",
30 "EventName": "THERMAL_TRIP",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "Number of thermal trips"
33 },
34 {
35 "EventCode": "0x60",
36 "Counter": "0,1",
37 "UMask": "0xe0",
38 "EventName": "BUS_REQUEST_OUTSTANDING.ALL_AGENTS",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "Outstanding cacheable data read bus requests duration."
41 },
42 {
43 "EventCode": "0x60",
44 "Counter": "0,1",
45 "UMask": "0x40",
46 "EventName": "BUS_REQUEST_OUTSTANDING.SELF",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "Outstanding cacheable data read bus requests duration."
49 },
50 {
51 "EventCode": "0x61",
52 "Counter": "0,1",
53 "UMask": "0x20",
54 "EventName": "BUS_BNR_DRV.ALL_AGENTS",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "Number of Bus Not Ready signals asserted."
57 },
58 {
59 "EventCode": "0x61",
60 "Counter": "0,1",
61 "UMask": "0x0",
62 "EventName": "BUS_BNR_DRV.THIS_AGENT",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "Number of Bus Not Ready signals asserted."
65 },
66 {
67 "EventCode": "0x62",
68 "Counter": "0,1",
69 "UMask": "0x20",
70 "EventName": "BUS_DRDY_CLOCKS.ALL_AGENTS",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "Bus cycles when data is sent on the bus."
73 },
74 {
75 "EventCode": "0x62",
76 "Counter": "0,1",
77 "UMask": "0x0",
78 "EventName": "BUS_DRDY_CLOCKS.THIS_AGENT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Bus cycles when data is sent on the bus."
81 },
82 {
83 "EventCode": "0x63",
84 "Counter": "0,1",
85 "UMask": "0xe0",
86 "EventName": "BUS_LOCK_CLOCKS.ALL_AGENTS",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "Bus cycles when a LOCK signal is asserted."
89 },
90 {
91 "EventCode": "0x63",
92 "Counter": "0,1",
93 "UMask": "0x40",
94 "EventName": "BUS_LOCK_CLOCKS.SELF",
95 "SampleAfterValue": "200000",
96 "BriefDescription": "Bus cycles when a LOCK signal is asserted."
97 },
98 {
99 "EventCode": "0x64",
100 "Counter": "0,1",
101 "UMask": "0x40",
102 "EventName": "BUS_DATA_RCV.SELF",
103 "SampleAfterValue": "200000",
104 "BriefDescription": "Bus cycles while processor receives data."
105 },
106 {
107 "EventCode": "0x65",
108 "Counter": "0,1",
109 "UMask": "0xe0",
110 "EventName": "BUS_TRANS_BRD.ALL_AGENTS",
111 "SampleAfterValue": "200000",
112 "BriefDescription": "Burst read bus transactions."
113 },
114 {
115 "EventCode": "0x65",
116 "Counter": "0,1",
117 "UMask": "0x40",
118 "EventName": "BUS_TRANS_BRD.SELF",
119 "SampleAfterValue": "200000",
120 "BriefDescription": "Burst read bus transactions."
121 },
122 {
123 "EventCode": "0x66",
124 "Counter": "0,1",
125 "UMask": "0xe0",
126 "EventName": "BUS_TRANS_RFO.ALL_AGENTS",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "RFO bus transactions."
129 },
130 {
131 "EventCode": "0x66",
132 "Counter": "0,1",
133 "UMask": "0x40",
134 "EventName": "BUS_TRANS_RFO.SELF",
135 "SampleAfterValue": "200000",
136 "BriefDescription": "RFO bus transactions."
137 },
138 {
139 "EventCode": "0x67",
140 "Counter": "0,1",
141 "UMask": "0xe0",
142 "EventName": "BUS_TRANS_WB.ALL_AGENTS",
143 "SampleAfterValue": "200000",
144 "BriefDescription": "Explicit writeback bus transactions."
145 },
146 {
147 "EventCode": "0x67",
148 "Counter": "0,1",
149 "UMask": "0x40",
150 "EventName": "BUS_TRANS_WB.SELF",
151 "SampleAfterValue": "200000",
152 "BriefDescription": "Explicit writeback bus transactions."
153 },
154 {
155 "EventCode": "0x68",
156 "Counter": "0,1",
157 "UMask": "0xe0",
158 "EventName": "BUS_TRANS_IFETCH.ALL_AGENTS",
159 "SampleAfterValue": "200000",
160 "BriefDescription": "Instruction-fetch bus transactions."
161 },
162 {
163 "EventCode": "0x68",
164 "Counter": "0,1",
165 "UMask": "0x40",
166 "EventName": "BUS_TRANS_IFETCH.SELF",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "Instruction-fetch bus transactions."
169 },
170 {
171 "EventCode": "0x69",
172 "Counter": "0,1",
173 "UMask": "0xe0",
174 "EventName": "BUS_TRANS_INVAL.ALL_AGENTS",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "Invalidate bus transactions."
177 },
178 {
179 "EventCode": "0x69",
180 "Counter": "0,1",
181 "UMask": "0x40",
182 "EventName": "BUS_TRANS_INVAL.SELF",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "Invalidate bus transactions."
185 },
186 {
187 "EventCode": "0x6A",
188 "Counter": "0,1",
189 "UMask": "0xe0",
190 "EventName": "BUS_TRANS_PWR.ALL_AGENTS",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "Partial write bus transaction."
193 },
194 {
195 "EventCode": "0x6A",
196 "Counter": "0,1",
197 "UMask": "0x40",
198 "EventName": "BUS_TRANS_PWR.SELF",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "Partial write bus transaction."
201 },
202 {
203 "EventCode": "0x6B",
204 "Counter": "0,1",
205 "UMask": "0xe0",
206 "EventName": "BUS_TRANS_P.ALL_AGENTS",
207 "SampleAfterValue": "200000",
208 "BriefDescription": "Partial bus transactions."
209 },
210 {
211 "EventCode": "0x6B",
212 "Counter": "0,1",
213 "UMask": "0x40",
214 "EventName": "BUS_TRANS_P.SELF",
215 "SampleAfterValue": "200000",
216 "BriefDescription": "Partial bus transactions."
217 },
218 {
219 "EventCode": "0x6C",
220 "Counter": "0,1",
221 "UMask": "0xe0",
222 "EventName": "BUS_TRANS_IO.ALL_AGENTS",
223 "SampleAfterValue": "200000",
224 "BriefDescription": "IO bus transactions."
225 },
226 {
227 "EventCode": "0x6C",
228 "Counter": "0,1",
229 "UMask": "0x40",
230 "EventName": "BUS_TRANS_IO.SELF",
231 "SampleAfterValue": "200000",
232 "BriefDescription": "IO bus transactions."
233 },
234 {
235 "EventCode": "0x6D",
236 "Counter": "0,1",
237 "UMask": "0xe0",
238 "EventName": "BUS_TRANS_DEF.ALL_AGENTS",
239 "SampleAfterValue": "200000",
240 "BriefDescription": "Deferred bus transactions."
241 },
242 {
243 "EventCode": "0x6D",
244 "Counter": "0,1",
245 "UMask": "0x40",
246 "EventName": "BUS_TRANS_DEF.SELF",
247 "SampleAfterValue": "200000",
248 "BriefDescription": "Deferred bus transactions."
249 },
250 {
251 "EventCode": "0x6E",
252 "Counter": "0,1",
253 "UMask": "0xe0",
254 "EventName": "BUS_TRANS_BURST.ALL_AGENTS",
255 "SampleAfterValue": "200000",
256 "BriefDescription": "Burst (full cache-line) bus transactions."
257 },
258 {
259 "EventCode": "0x6E",
260 "Counter": "0,1",
261 "UMask": "0x40",
262 "EventName": "BUS_TRANS_BURST.SELF",
263 "SampleAfterValue": "200000",
264 "BriefDescription": "Burst (full cache-line) bus transactions."
265 },
266 {
267 "EventCode": "0x6F",
268 "Counter": "0,1",
269 "UMask": "0xe0",
270 "EventName": "BUS_TRANS_MEM.ALL_AGENTS",
271 "SampleAfterValue": "200000",
272 "BriefDescription": "Memory bus transactions."
273 },
274 {
275 "EventCode": "0x6F",
276 "Counter": "0,1",
277 "UMask": "0x40",
278 "EventName": "BUS_TRANS_MEM.SELF",
279 "SampleAfterValue": "200000",
280 "BriefDescription": "Memory bus transactions."
281 },
282 {
283 "EventCode": "0x70",
284 "Counter": "0,1",
285 "UMask": "0xe0",
286 "EventName": "BUS_TRANS_ANY.ALL_AGENTS",
287 "SampleAfterValue": "200000",
288 "BriefDescription": "All bus transactions."
289 },
290 {
291 "EventCode": "0x70",
292 "Counter": "0,1",
293 "UMask": "0x40",
294 "EventName": "BUS_TRANS_ANY.SELF",
295 "SampleAfterValue": "200000",
296 "BriefDescription": "All bus transactions."
297 },
298 {
299 "EventCode": "0x77",
300 "Counter": "0,1",
301 "UMask": "0xb",
302 "EventName": "EXT_SNOOP.THIS_AGENT.ANY",
303 "SampleAfterValue": "200000",
304 "BriefDescription": "External snoops."
305 },
306 {
307 "EventCode": "0x77",
308 "Counter": "0,1",
309 "UMask": "0x1",
310 "EventName": "EXT_SNOOP.THIS_AGENT.CLEAN",
311 "SampleAfterValue": "200000",
312 "BriefDescription": "External snoops."
313 },
314 {
315 "EventCode": "0x77",
316 "Counter": "0,1",
317 "UMask": "0x2",
318 "EventName": "EXT_SNOOP.THIS_AGENT.HIT",
319 "SampleAfterValue": "200000",
320 "BriefDescription": "External snoops."
321 },
322 {
323 "EventCode": "0x77",
324 "Counter": "0,1",
325 "UMask": "0x8",
326 "EventName": "EXT_SNOOP.THIS_AGENT.HITM",
327 "SampleAfterValue": "200000",
328 "BriefDescription": "External snoops."
329 },
330 {
331 "EventCode": "0x77",
332 "Counter": "0,1",
333 "UMask": "0x2b",
334 "EventName": "EXT_SNOOP.ALL_AGENTS.ANY",
335 "SampleAfterValue": "200000",
336 "BriefDescription": "External snoops."
337 },
338 {
339 "EventCode": "0x77",
340 "Counter": "0,1",
341 "UMask": "0x21",
342 "EventName": "EXT_SNOOP.ALL_AGENTS.CLEAN",
343 "SampleAfterValue": "200000",
344 "BriefDescription": "External snoops."
345 },
346 {
347 "EventCode": "0x77",
348 "Counter": "0,1",
349 "UMask": "0x22",
350 "EventName": "EXT_SNOOP.ALL_AGENTS.HIT",
351 "SampleAfterValue": "200000",
352 "BriefDescription": "External snoops."
353 },
354 {
355 "EventCode": "0x77",
356 "Counter": "0,1",
357 "UMask": "0x28",
358 "EventName": "EXT_SNOOP.ALL_AGENTS.HITM",
359 "SampleAfterValue": "200000",
360 "BriefDescription": "External snoops."
361 },
362 {
363 "EventCode": "0x7A",
364 "Counter": "0,1",
365 "UMask": "0x20",
366 "EventName": "BUS_HIT_DRV.ALL_AGENTS",
367 "SampleAfterValue": "200000",
368 "BriefDescription": "HIT signal asserted."
369 },
370 {
371 "EventCode": "0x7A",
372 "Counter": "0,1",
373 "UMask": "0x0",
374 "EventName": "BUS_HIT_DRV.THIS_AGENT",
375 "SampleAfterValue": "200000",
376 "BriefDescription": "HIT signal asserted."
377 },
378 {
379 "EventCode": "0x7B",
380 "Counter": "0,1",
381 "UMask": "0x20",
382 "EventName": "BUS_HITM_DRV.ALL_AGENTS",
383 "SampleAfterValue": "200000",
384 "BriefDescription": "HITM signal asserted."
385 },
386 {
387 "EventCode": "0x7B",
388 "Counter": "0,1",
389 "UMask": "0x0",
390 "EventName": "BUS_HITM_DRV.THIS_AGENT",
391 "SampleAfterValue": "200000",
392 "BriefDescription": "HITM signal asserted."
393 },
394 {
395 "EventCode": "0x7D",
396 "Counter": "0,1",
397 "UMask": "0x40",
398 "EventName": "BUSQ_EMPTY.SELF",
399 "SampleAfterValue": "200000",
400 "BriefDescription": "Bus queue is empty."
401 },
402 {
403 "EventCode": "0x7E",
404 "Counter": "0,1",
405 "UMask": "0xe0",
406 "EventName": "SNOOP_STALL_DRV.ALL_AGENTS",
407 "SampleAfterValue": "200000",
408 "BriefDescription": "Bus stalled for snoops."
409 },
410 {
411 "EventCode": "0x7E",
412 "Counter": "0,1",
413 "UMask": "0x40",
414 "EventName": "SNOOP_STALL_DRV.SELF",
415 "SampleAfterValue": "200000",
416 "BriefDescription": "Bus stalled for snoops."
417 },
418 {
419 "EventCode": "0x7F",
420 "Counter": "0,1",
421 "UMask": "0x40",
422 "EventName": "BUS_IO_WAIT.SELF",
423 "SampleAfterValue": "200000",
424 "BriefDescription": "IO requests waiting in the bus queue."
425 },
426 {
427 "EventCode": "0xC6",
428 "Counter": "0,1",
429 "UMask": "0x1",
430 "EventName": "CYCLES_INT_MASKED.CYCLES_INT_MASKED",
431 "SampleAfterValue": "2000000",
432 "BriefDescription": "Cycles during which interrupts are disabled."
433 },
434 {
435 "EventCode": "0xC6",
436 "Counter": "0,1",
437 "UMask": "0x2",
438 "EventName": "CYCLES_INT_MASKED.CYCLES_INT_PENDING_AND_MASKED",
439 "SampleAfterValue": "2000000",
440 "BriefDescription": "Cycles during which interrupts are pending and disabled."
441 },
442 {
443 "EventCode": "0xC8",
444 "Counter": "0,1",
445 "UMask": "0x0",
446 "EventName": "HW_INT_RCV",
447 "SampleAfterValue": "200000",
448 "BriefDescription": "Hardware interrupts received."
449 }
450] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/bonnell/pipeline.json b/tools/perf/pmu-events/arch/x86/bonnell/pipeline.json
new file mode 100644
index 000000000000..b2e681c78466
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/bonnell/pipeline.json
@@ -0,0 +1,364 @@
1[
2 {
3 "EventCode": "0x2",
4 "Counter": "0,1",
5 "UMask": "0x83",
6 "EventName": "STORE_FORWARDS.ANY",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "All store forwards"
9 },
10 {
11 "EventCode": "0x2",
12 "Counter": "0,1",
13 "UMask": "0x81",
14 "EventName": "STORE_FORWARDS.GOOD",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "Good store forwards"
17 },
18 {
19 "EventCode": "0x3",
20 "Counter": "0,1",
21 "UMask": "0x7f",
22 "EventName": "REISSUE.ANY",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "Micro-op reissues for any cause"
25 },
26 {
27 "EventCode": "0x3",
28 "Counter": "0,1",
29 "UMask": "0xff",
30 "EventName": "REISSUE.ANY.AR",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "Micro-op reissues for any cause (At Retirement)"
33 },
34 {
35 "EventCode": "0x12",
36 "Counter": "0,1",
37 "UMask": "0x1",
38 "EventName": "MUL.S",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "Multiply operations executed."
41 },
42 {
43 "EventCode": "0x12",
44 "Counter": "0,1",
45 "UMask": "0x81",
46 "EventName": "MUL.AR",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "Multiply operations retired"
49 },
50 {
51 "EventCode": "0x13",
52 "Counter": "0,1",
53 "UMask": "0x1",
54 "EventName": "DIV.S",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "Divide operations executed."
57 },
58 {
59 "EventCode": "0x13",
60 "Counter": "0,1",
61 "UMask": "0x81",
62 "EventName": "DIV.AR",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "Divide operations retired"
65 },
66 {
67 "EventCode": "0x14",
68 "Counter": "0,1",
69 "UMask": "0x1",
70 "EventName": "CYCLES_DIV_BUSY",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "Cycles the divider is busy."
73 },
74 {
75 "EventCode": "0x3C",
76 "Counter": "0,1",
77 "UMask": "0x0",
78 "EventName": "CPU_CLK_UNHALTED.CORE_P",
79 "SampleAfterValue": "2000000",
80 "BriefDescription": "Core cycles when core is not halted"
81 },
82 {
83 "EventCode": "0x3C",
84 "Counter": "0,1",
85 "UMask": "0x1",
86 "EventName": "CPU_CLK_UNHALTED.BUS",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "Bus cycles when core is not halted"
89 },
90 {
91 "EventCode": "0xA",
92 "Counter": "Fixed counter 2",
93 "UMask": "0x0",
94 "EventName": "CPU_CLK_UNHALTED.CORE",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "Core cycles when core is not halted"
97 },
98 {
99 "EventCode": "0xA",
100 "Counter": "Fixed counter 3",
101 "UMask": "0x0",
102 "EventName": "CPU_CLK_UNHALTED.REF",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Reference cycles when core is not halted."
105 },
106 {
107 "EventCode": "0x88",
108 "Counter": "0,1",
109 "UMask": "0x1",
110 "EventName": "BR_INST_TYPE_RETIRED.COND",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "All macro conditional branch instructions."
113 },
114 {
115 "EventCode": "0x88",
116 "Counter": "0,1",
117 "UMask": "0x2",
118 "EventName": "BR_INST_TYPE_RETIRED.UNCOND",
119 "SampleAfterValue": "2000000",
120 "BriefDescription": "All macro unconditional branch instructions, excluding calls and indirects"
121 },
122 {
123 "EventCode": "0x88",
124 "Counter": "0,1",
125 "UMask": "0x4",
126 "EventName": "BR_INST_TYPE_RETIRED.IND",
127 "SampleAfterValue": "2000000",
128 "BriefDescription": "All indirect branches that are not calls."
129 },
130 {
131 "EventCode": "0x88",
132 "Counter": "0,1",
133 "UMask": "0x8",
134 "EventName": "BR_INST_TYPE_RETIRED.RET",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "All indirect branches that have a return mnemonic"
137 },
138 {
139 "EventCode": "0x88",
140 "Counter": "0,1",
141 "UMask": "0x10",
142 "EventName": "BR_INST_TYPE_RETIRED.DIR_CALL",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "All non-indirect calls"
145 },
146 {
147 "EventCode": "0x88",
148 "Counter": "0,1",
149 "UMask": "0x20",
150 "EventName": "BR_INST_TYPE_RETIRED.IND_CALL",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "All indirect calls, including both register and memory indirect."
153 },
154 {
155 "EventCode": "0x88",
156 "Counter": "0,1",
157 "UMask": "0x41",
158 "EventName": "BR_INST_TYPE_RETIRED.COND_TAKEN",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "Only taken macro conditional branch instructions"
161 },
162 {
163 "EventCode": "0x89",
164 "Counter": "0,1",
165 "UMask": "0x1",
166 "EventName": "BR_MISSP_TYPE_RETIRED.COND",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "Mispredicted cond branch instructions retired"
169 },
170 {
171 "EventCode": "0x89",
172 "Counter": "0,1",
173 "UMask": "0x2",
174 "EventName": "BR_MISSP_TYPE_RETIRED.IND",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "Mispredicted ind branches that are not calls"
177 },
178 {
179 "EventCode": "0x89",
180 "Counter": "0,1",
181 "UMask": "0x4",
182 "EventName": "BR_MISSP_TYPE_RETIRED.RETURN",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "Mispredicted return branches"
185 },
186 {
187 "EventCode": "0x89",
188 "Counter": "0,1",
189 "UMask": "0x8",
190 "EventName": "BR_MISSP_TYPE_RETIRED.IND_CALL",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "Mispredicted indirect calls, including both register and memory indirect. "
193 },
194 {
195 "EventCode": "0x89",
196 "Counter": "0,1",
197 "UMask": "0x11",
198 "EventName": "BR_MISSP_TYPE_RETIRED.COND_TAKEN",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "Mispredicted and taken cond branch instructions retired"
201 },
202 {
203 "PEBS": "2",
204 "EventCode": "0xC0",
205 "Counter": "0,1",
206 "UMask": "0x0",
207 "EventName": "INST_RETIRED.ANY_P",
208 "SampleAfterValue": "2000000",
209 "BriefDescription": "Instructions retired (precise event)."
210 },
211 {
212 "EventCode": "0xA",
213 "Counter": "Fixed counter 1",
214 "UMask": "0x0",
215 "EventName": "INST_RETIRED.ANY",
216 "SampleAfterValue": "2000000",
217 "BriefDescription": "Instructions retired."
218 },
219 {
220 "EventCode": "0xC2",
221 "Counter": "0,1",
222 "UMask": "0x10",
223 "EventName": "UOPS_RETIRED.ANY",
224 "SampleAfterValue": "2000000",
225 "BriefDescription": "Micro-ops retired."
226 },
227 {
228 "EventCode": "0xC2",
229 "Counter": "0,1",
230 "UMask": "0x10",
231 "EventName": "UOPS_RETIRED.STALLED_CYCLES",
232 "SampleAfterValue": "2000000",
233 "BriefDescription": "Cycles no micro-ops retired."
234 },
235 {
236 "EventCode": "0xC2",
237 "Counter": "0,1",
238 "UMask": "0x10",
239 "EventName": "UOPS_RETIRED.STALLS",
240 "SampleAfterValue": "2000000",
241 "BriefDescription": "Periods no micro-ops retired."
242 },
243 {
244 "EventCode": "0xC3",
245 "Counter": "0,1",
246 "UMask": "0x1",
247 "EventName": "MACHINE_CLEARS.SMC",
248 "SampleAfterValue": "200000",
249 "BriefDescription": "Self-Modifying Code detected."
250 },
251 {
252 "EventCode": "0xC4",
253 "Counter": "0,1",
254 "UMask": "0x0",
255 "EventName": "BR_INST_RETIRED.ANY",
256 "SampleAfterValue": "2000000",
257 "BriefDescription": "Retired branch instructions."
258 },
259 {
260 "EventCode": "0xC4",
261 "Counter": "0,1",
262 "UMask": "0x1",
263 "EventName": "BR_INST_RETIRED.PRED_NOT_TAKEN",
264 "SampleAfterValue": "2000000",
265 "BriefDescription": "Retired branch instructions that were predicted not-taken."
266 },
267 {
268 "EventCode": "0xC4",
269 "Counter": "0,1",
270 "UMask": "0x2",
271 "EventName": "BR_INST_RETIRED.MISPRED_NOT_TAKEN",
272 "SampleAfterValue": "200000",
273 "BriefDescription": "Retired branch instructions that were mispredicted not-taken."
274 },
275 {
276 "EventCode": "0xC4",
277 "Counter": "0,1",
278 "UMask": "0x4",
279 "EventName": "BR_INST_RETIRED.PRED_TAKEN",
280 "SampleAfterValue": "2000000",
281 "BriefDescription": "Retired branch instructions that were predicted taken."
282 },
283 {
284 "EventCode": "0xC4",
285 "Counter": "0,1",
286 "UMask": "0x8",
287 "EventName": "BR_INST_RETIRED.MISPRED_TAKEN",
288 "SampleAfterValue": "200000",
289 "BriefDescription": "Retired branch instructions that were mispredicted taken."
290 },
291 {
292 "EventCode": "0xC4",
293 "Counter": "0,1",
294 "UMask": "0xc",
295 "EventName": "BR_INST_RETIRED.TAKEN",
296 "SampleAfterValue": "2000000",
297 "BriefDescription": "Retired taken branch instructions."
298 },
299 {
300 "EventCode": "0xC4",
301 "Counter": "0,1",
302 "UMask": "0xf",
303 "EventName": "BR_INST_RETIRED.ANY1",
304 "SampleAfterValue": "2000000",
305 "BriefDescription": "Retired branch instructions."
306 },
307 {
308 "PEBS": "1",
309 "EventCode": "0xC5",
310 "Counter": "0,1",
311 "UMask": "0x0",
312 "EventName": "BR_INST_RETIRED.MISPRED",
313 "SampleAfterValue": "200000",
314 "BriefDescription": "Retired mispredicted branch instructions (precise event)."
315 },
316 {
317 "EventCode": "0xDC",
318 "Counter": "0,1",
319 "UMask": "0x2",
320 "EventName": "RESOURCE_STALLS.DIV_BUSY",
321 "SampleAfterValue": "2000000",
322 "BriefDescription": "Cycles issue is stalled due to div busy."
323 },
324 {
325 "EventCode": "0xE0",
326 "Counter": "0,1",
327 "UMask": "0x1",
328 "EventName": "BR_INST_DECODED",
329 "SampleAfterValue": "2000000",
330 "BriefDescription": "Branch instructions decoded"
331 },
332 {
333 "EventCode": "0xE4",
334 "Counter": "0,1",
335 "UMask": "0x1",
336 "EventName": "BOGUS_BR",
337 "SampleAfterValue": "2000000",
338 "BriefDescription": "Bogus branches"
339 },
340 {
341 "EventCode": "0xE6",
342 "Counter": "0,1",
343 "UMask": "0x1",
344 "EventName": "BACLEARS.ANY",
345 "SampleAfterValue": "2000000",
346 "BriefDescription": "BACLEARS asserted."
347 },
348 {
349 "EventCode": "0x3",
350 "Counter": "0,1",
351 "UMask": "0x1",
352 "EventName": "REISSUE.OVERLAP_STORE",
353 "SampleAfterValue": "200000",
354 "BriefDescription": "Micro-op reissues on a store-load collision"
355 },
356 {
357 "EventCode": "0x3",
358 "Counter": "0,1",
359 "UMask": "0x81",
360 "EventName": "REISSUE.OVERLAP_STORE.AR",
361 "SampleAfterValue": "200000",
362 "BriefDescription": "Micro-op reissues on a store-load collision (At Retirement)"
363 }
364] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/bonnell/virtual-memory.json b/tools/perf/pmu-events/arch/x86/bonnell/virtual-memory.json
new file mode 100644
index 000000000000..7bb817588721
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/bonnell/virtual-memory.json
@@ -0,0 +1,124 @@
1[
2 {
3 "EventCode": "0x8",
4 "Counter": "0,1",
5 "UMask": "0x7",
6 "EventName": "DATA_TLB_MISSES.DTLB_MISS",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "Memory accesses that missed the DTLB."
9 },
10 {
11 "EventCode": "0x8",
12 "Counter": "0,1",
13 "UMask": "0x5",
14 "EventName": "DATA_TLB_MISSES.DTLB_MISS_LD",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "DTLB misses due to load operations."
17 },
18 {
19 "EventCode": "0x8",
20 "Counter": "0,1",
21 "UMask": "0x9",
22 "EventName": "DATA_TLB_MISSES.L0_DTLB_MISS_LD",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "L0 DTLB misses due to load operations."
25 },
26 {
27 "EventCode": "0x8",
28 "Counter": "0,1",
29 "UMask": "0x6",
30 "EventName": "DATA_TLB_MISSES.DTLB_MISS_ST",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "DTLB misses due to store operations."
33 },
34 {
35 "EventCode": "0x8",
36 "Counter": "0,1",
37 "UMask": "0xa",
38 "EventName": "DATA_TLB_MISSES.L0_DTLB_MISS_ST",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "L0 DTLB misses due to store operations"
41 },
42 {
43 "EventCode": "0xC",
44 "Counter": "0,1",
45 "UMask": "0x3",
46 "EventName": "PAGE_WALKS.WALKS",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "Number of page-walks executed."
49 },
50 {
51 "EventCode": "0xC",
52 "Counter": "0,1",
53 "UMask": "0x3",
54 "EventName": "PAGE_WALKS.CYCLES",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "Duration of page-walks in core cycles"
57 },
58 {
59 "EventCode": "0xC",
60 "Counter": "0,1",
61 "UMask": "0x1",
62 "EventName": "PAGE_WALKS.D_SIDE_WALKS",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "Number of D-side only page walks"
65 },
66 {
67 "EventCode": "0xC",
68 "Counter": "0,1",
69 "UMask": "0x1",
70 "EventName": "PAGE_WALKS.D_SIDE_CYCLES",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "Duration of D-side only page walks"
73 },
74 {
75 "EventCode": "0xC",
76 "Counter": "0,1",
77 "UMask": "0x2",
78 "EventName": "PAGE_WALKS.I_SIDE_WALKS",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Number of I-Side page walks"
81 },
82 {
83 "EventCode": "0xC",
84 "Counter": "0,1",
85 "UMask": "0x2",
86 "EventName": "PAGE_WALKS.I_SIDE_CYCLES",
87 "SampleAfterValue": "2000000",
88 "BriefDescription": "Duration of I-Side page walks"
89 },
90 {
91 "EventCode": "0x82",
92 "Counter": "0,1",
93 "UMask": "0x1",
94 "EventName": "ITLB.HIT",
95 "SampleAfterValue": "200000",
96 "BriefDescription": "ITLB hits."
97 },
98 {
99 "EventCode": "0x82",
100 "Counter": "0,1",
101 "UMask": "0x4",
102 "EventName": "ITLB.FLUSH",
103 "SampleAfterValue": "200000",
104 "BriefDescription": "ITLB flushes."
105 },
106 {
107 "PEBS": "2",
108 "EventCode": "0x82",
109 "Counter": "0,1",
110 "UMask": "0x2",
111 "EventName": "ITLB.MISSES",
112 "SampleAfterValue": "200000",
113 "BriefDescription": "ITLB misses."
114 },
115 {
116 "PEBS": "1",
117 "EventCode": "0xCB",
118 "Counter": "0,1",
119 "UMask": "0x4",
120 "EventName": "MEM_LOAD_RETIRED.DTLB_MISS",
121 "SampleAfterValue": "200000",
122 "BriefDescription": "Retired loads that miss the DTLB (precise event)."
123 }
124] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwell/cache.json b/tools/perf/pmu-events/arch/x86/broadwell/cache.json
new file mode 100644
index 000000000000..73688a9dab2a
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwell/cache.json
@@ -0,0 +1,3198 @@
1[
2 {
3 "PublicDescription": "This event counts the number of demand Data Read requests that miss L2 cache. Only not rejected loads are counted.",
4 "EventCode": "0x24",
5 "Counter": "0,1,2,3",
6 "UMask": "0x21",
7 "EventName": "L2_RQSTS.DEMAND_DATA_RD_MISS",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Demand Data Read miss L2, no rejects",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "This event counts the number of demand Data Read requests that hit L2 cache. Only not rejected loads are counted.",
14 "EventCode": "0x24",
15 "Counter": "0,1,2,3",
16 "UMask": "0x41",
17 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
18 "SampleAfterValue": "200003",
19 "BriefDescription": "Demand Data Read requests that hit L2 cache",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "This event counts the number of requests from the L2 hardware prefetchers that miss L2 cache.",
24 "EventCode": "0x24",
25 "Counter": "0,1,2,3",
26 "UMask": "0x30",
27 "EventName": "L2_RQSTS.L2_PF_MISS",
28 "SampleAfterValue": "200003",
29 "BriefDescription": "L2 prefetch requests that miss L2 cache",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "This event counts the number of requests from the L2 hardware prefetchers that hit L2 cache. L3 prefetch new types.",
34 "EventCode": "0x24",
35 "Counter": "0,1,2,3",
36 "UMask": "0x50",
37 "EventName": "L2_RQSTS.L2_PF_HIT",
38 "SampleAfterValue": "200003",
39 "BriefDescription": "L2 prefetch requests that hit L2 cache",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "This event counts the number of demand Data Read requests (including requests from L1D hardware prefetchers). These loads may hit or miss L2 cache. Only non rejected loads are counted.",
44 "EventCode": "0x24",
45 "Counter": "0,1,2,3",
46 "UMask": "0xe1",
47 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
48 "SampleAfterValue": "200003",
49 "BriefDescription": "Demand Data Read requests",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "This event counts the total number of RFO (read for ownership) requests to L2 cache. L2 RFO requests include both L1D demand RFO misses as well as L1D RFO prefetches.",
54 "EventCode": "0x24",
55 "Counter": "0,1,2,3",
56 "UMask": "0xe2",
57 "EventName": "L2_RQSTS.ALL_RFO",
58 "SampleAfterValue": "200003",
59 "BriefDescription": "RFO requests to L2 cache",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "This event counts the total number of L2 code requests.",
64 "EventCode": "0x24",
65 "Counter": "0,1,2,3",
66 "UMask": "0xe4",
67 "EventName": "L2_RQSTS.ALL_CODE_RD",
68 "SampleAfterValue": "200003",
69 "BriefDescription": "L2 code requests",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "PublicDescription": "This event counts the total number of requests from the L2 hardware prefetchers.",
74 "EventCode": "0x24",
75 "Counter": "0,1,2,3",
76 "UMask": "0xf8",
77 "EventName": "L2_RQSTS.ALL_PF",
78 "SampleAfterValue": "200003",
79 "BriefDescription": "Requests from L2 hardware prefetchers",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "PublicDescription": "This event counts the number of WB requests that hit L2 cache.",
84 "EventCode": "0x27",
85 "Counter": "0,1,2,3",
86 "UMask": "0x50",
87 "EventName": "L2_DEMAND_RQSTS.WB_HIT",
88 "SampleAfterValue": "200003",
89 "BriefDescription": "Not rejected writebacks that hit L2 cache",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "PublicDescription": "This event counts core-originated cacheable demand requests that miss the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
94 "EventCode": "0x2E",
95 "Counter": "0,1,2,3",
96 "UMask": "0x41",
97 "EventName": "LONGEST_LAT_CACHE.MISS",
98 "SampleAfterValue": "100003",
99 "BriefDescription": "Core-originated cacheable demand requests missed L3",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "PublicDescription": "This event counts core-originated cacheable demand requests that refer to the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
104 "EventCode": "0x2E",
105 "Counter": "0,1,2,3",
106 "UMask": "0x4f",
107 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
108 "SampleAfterValue": "100003",
109 "BriefDescription": "Core-originated cacheable demand requests that refer to L3",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "PublicDescription": "This event counts duration of L1D miss outstanding, that is each cycle number of Fill Buffers (FB) outstanding required by Demand Reads. FB either is held by demand loads, or it is held by non-demand loads and gets hit at least once by demand. The valid outstanding interval is defined until the FB deallocation by one of the following ways: from FB allocation, if FB is allocated by demand; from the demand Hit FB, if it is allocated by hardware or software prefetch.\nNote: In the L1D, a Demand Read contains cacheable or noncacheable demand loads, including ones causing cache-line splits and reads due to page walks resulted from any request type.",
114 "EventCode": "0x48",
115 "Counter": "2",
116 "UMask": "0x1",
117 "EventName": "L1D_PEND_MISS.PENDING",
118 "SampleAfterValue": "2000003",
119 "BriefDescription": "L1D miss oustandings duration in cycles",
120 "CounterHTOff": "2"
121 },
122 {
123 "PublicDescription": "This event counts duration of L1D miss outstanding in cycles.",
124 "EventCode": "0x48",
125 "Counter": "2",
126 "UMask": "0x1",
127 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
128 "SampleAfterValue": "2000003",
129 "BriefDescription": "Cycles with L1D load Misses outstanding.",
130 "CounterMask": "1",
131 "CounterHTOff": "2"
132 },
133 {
134 "PublicDescription": "This event counts L1D data line replacements including opportunistic replacements, and replacements that require stall-for-replace or block-for-replace.",
135 "EventCode": "0x51",
136 "Counter": "0,1,2,3",
137 "UMask": "0x1",
138 "EventName": "L1D.REPLACEMENT",
139 "SampleAfterValue": "2000003",
140 "BriefDescription": "L1D data line replacements",
141 "CounterHTOff": "0,1,2,3,4,5,6,7"
142 },
143 {
144 "PublicDescription": "This event counts the number of offcore outstanding Demand Data Read transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor. See the corresponding Umask under OFFCORE_REQUESTS.\nNote: A prefetch promoted to Demand is counted from the promotion point.",
145 "EventCode": "0x60",
146 "Counter": "0,1,2,3",
147 "UMask": "0x1",
148 "Errata": "BDM76",
149 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
150 "SampleAfterValue": "2000003",
151 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
152 "CounterHTOff": "0,1,2,3,4,5,6,7"
153 },
154 {
155 "PublicDescription": "This event counts the number of offcore outstanding Code Reads transactions in the super queue every cycle. The \"Offcore outstanding\" state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
156 "EventCode": "0x60",
157 "Counter": "0,1,2,3",
158 "UMask": "0x2",
159 "Errata": "BDM76",
160 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
161 "SampleAfterValue": "2000003",
162 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
163 "CounterHTOff": "0,1,2,3,4,5,6,7"
164 },
165 {
166 "PublicDescription": "This event counts the number of offcore outstanding RFO (store) transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
167 "EventCode": "0x60",
168 "Counter": "0,1,2,3",
169 "UMask": "0x4",
170 "Errata": "BDM76",
171 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
172 "SampleAfterValue": "2000003",
173 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore",
174 "CounterHTOff": "0,1,2,3,4,5,6,7"
175 },
176 {
177 "PublicDescription": "This event counts the number of offcore outstanding cacheable Core Data Read transactions in the super queue every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
178 "EventCode": "0x60",
179 "Counter": "0,1,2,3",
180 "UMask": "0x8",
181 "Errata": "BDM76",
182 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
183 "SampleAfterValue": "2000003",
184 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
185 "CounterHTOff": "0,1,2,3,4,5,6,7"
186 },
187 {
188 "PublicDescription": "This event counts cycles when offcore outstanding Demand Data Read transactions are present in the super queue (SQ). A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation).",
189 "EventCode": "0x60",
190 "Counter": "0,1,2,3",
191 "UMask": "0x1",
192 "Errata": "BDM76",
193 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
194 "SampleAfterValue": "2000003",
195 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore",
196 "CounterMask": "1",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "PublicDescription": "This event counts cycles when offcore outstanding cacheable Core Data Read transactions are present in the super queue. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
201 "EventCode": "0x60",
202 "Counter": "0,1,2,3",
203 "UMask": "0x8",
204 "Errata": "BDM76",
205 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
206 "SampleAfterValue": "2000003",
207 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore",
208 "CounterMask": "1",
209 "CounterHTOff": "0,1,2,3,4,5,6,7"
210 },
211 {
212 "PublicDescription": "This event counts the number of offcore outstanding demand rfo Reads transactions in the super queue every cycle. The \"Offcore outstanding\" state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
213 "EventCode": "0x60",
214 "Counter": "0,1,2,3",
215 "UMask": "0x4",
216 "Errata": "BDM76",
217 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
218 "SampleAfterValue": "2000003",
219 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
220 "CounterMask": "1",
221 "CounterHTOff": "0,1,2,3,4,5,6,7"
222 },
223 {
224 "PublicDescription": "This event counts the number of cycles when the L1D is locked. It is a superset of the 0x1 mask (BUS_LOCK_CLOCKS.BUS_LOCK_DURATION).",
225 "EventCode": "0x63",
226 "Counter": "0,1,2,3",
227 "UMask": "0x2",
228 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
229 "SampleAfterValue": "2000003",
230 "BriefDescription": "Cycles when L1D is locked",
231 "CounterHTOff": "0,1,2,3,4,5,6,7"
232 },
233 {
234 "PublicDescription": "This event counts the Demand Data Read requests sent to uncore. Use it in conjunction with OFFCORE_REQUESTS_OUTSTANDING to determine average latency in the uncore.",
235 "EventCode": "0xB0",
236 "Counter": "0,1,2,3",
237 "UMask": "0x1",
238 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
239 "SampleAfterValue": "100003",
240 "BriefDescription": "Demand Data Read requests sent to uncore",
241 "CounterHTOff": "0,1,2,3,4,5,6,7"
242 },
243 {
244 "PublicDescription": "This event counts both cacheable and noncachaeble code read requests.",
245 "EventCode": "0xB0",
246 "Counter": "0,1,2,3",
247 "UMask": "0x2",
248 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
249 "SampleAfterValue": "100003",
250 "BriefDescription": "Cacheable and noncachaeble code read requests",
251 "CounterHTOff": "0,1,2,3,4,5,6,7"
252 },
253 {
254 "PublicDescription": "This event counts the demand RFO (read for ownership) requests including regular RFOs, locks, ItoM.",
255 "EventCode": "0xB0",
256 "Counter": "0,1,2,3",
257 "UMask": "0x4",
258 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
259 "SampleAfterValue": "100003",
260 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
261 "CounterHTOff": "0,1,2,3,4,5,6,7"
262 },
263 {
264 "PublicDescription": "This event counts the demand and prefetch data reads. All Core Data Reads include cacheable \"Demands\" and L2 prefetchers (not L3 prefetchers). Counting also covers reads due to page walks resulted from any request type.",
265 "EventCode": "0xB0",
266 "Counter": "0,1,2,3",
267 "UMask": "0x8",
268 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
269 "SampleAfterValue": "100003",
270 "BriefDescription": "Demand and prefetch data reads",
271 "CounterHTOff": "0,1,2,3,4,5,6,7"
272 },
273 {
274 "PublicDescription": "This event counts the number of cases when the offcore requests buffer cannot take more entries for the core. This can happen when the superqueue does not contain eligible entries, or when L1D writeback pending FIFO requests is full.\nNote: Writeback pending FIFO has six entries.",
275 "EventCode": "0xb2",
276 "Counter": "0,1,2,3",
277 "UMask": "0x1",
278 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
279 "SampleAfterValue": "2000003",
280 "BriefDescription": "Offcore requests buffer cannot take more entries for this thread core.",
281 "CounterHTOff": "0,1,2,3,4,5,6,7"
282 },
283 {
284 "PEBS": "1",
285 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts load uops with true STLB miss retired to the architected path. True STLB miss is an uop triggering page walk that gets completed without blocks, and later gets retired. This page walk can end up with or without a fault.",
286 "EventCode": "0xD0",
287 "Counter": "0,1,2,3",
288 "UMask": "0x11",
289 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
290 "SampleAfterValue": "100003",
291 "BriefDescription": "Retired load uops that miss the STLB.",
292 "CounterHTOff": "0,1,2,3",
293 "Data_LA": "1"
294 },
295 {
296 "PEBS": "1",
297 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts store uops with true STLB miss retired to the architected path. True STLB miss is an uop triggering page walk that gets completed without blocks, and later gets retired. This page walk can end up with or without a fault.",
298 "EventCode": "0xD0",
299 "Counter": "0,1,2,3",
300 "UMask": "0x12",
301 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
302 "SampleAfterValue": "100003",
303 "BriefDescription": "Retired store uops that miss the STLB.",
304 "CounterHTOff": "0,1,2,3",
305 "Data_LA": "1",
306 "L1_Hit_Indication": "1"
307 },
308 {
309 "PEBS": "1",
310 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts load uops with locked access retired to the architected path.",
311 "EventCode": "0xD0",
312 "Counter": "0,1,2,3",
313 "UMask": "0x21",
314 "Errata": "BDM35",
315 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
316 "SampleAfterValue": "100007",
317 "BriefDescription": "Retired load uops with locked access.",
318 "CounterHTOff": "0,1,2,3",
319 "Data_LA": "1"
320 },
321 {
322 "PEBS": "1",
323 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts line-splitted load uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
324 "EventCode": "0xD0",
325 "Counter": "0,1,2,3",
326 "UMask": "0x41",
327 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
328 "SampleAfterValue": "100003",
329 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
330 "CounterHTOff": "0,1,2,3",
331 "Data_LA": "1"
332 },
333 {
334 "PEBS": "1",
335 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts line-splitted store uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
336 "EventCode": "0xD0",
337 "Counter": "0,1,2,3",
338 "UMask": "0x42",
339 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
340 "SampleAfterValue": "100003",
341 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
342 "CounterHTOff": "0,1,2,3",
343 "Data_LA": "1",
344 "L1_Hit_Indication": "1"
345 },
346 {
347 "PEBS": "1",
348 "PublicDescription": "This event counts load uops retired to the architected path with a filter on bits 0 and 1 applied.\nNote: This event counts AVX-256bit load/store double-pump memory uops as a single uop at retirement. This event also counts SW prefetches.",
349 "EventCode": "0xD0",
350 "Counter": "0,1,2,3",
351 "UMask": "0x81",
352 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
353 "SampleAfterValue": "2000003",
354 "BriefDescription": "All retired load uops.",
355 "CounterHTOff": "0,1,2,3",
356 "Data_LA": "1"
357 },
358 {
359 "PEBS": "1",
360 "PublicDescription": "This event counts store uops retired to the architected path with a filter on bits 0 and 1 applied.\nNote: This event counts AVX-256bit load/store double-pump memory uops as a single uop at retirement.",
361 "EventCode": "0xD0",
362 "Counter": "0,1,2,3",
363 "UMask": "0x82",
364 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
365 "SampleAfterValue": "2000003",
366 "BriefDescription": "All retired store uops.",
367 "CounterHTOff": "0,1,2,3",
368 "Data_LA": "1",
369 "L1_Hit_Indication": "1"
370 },
371 {
372 "PEBS": "1",
373 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the nearest-level (L1) cache.\nNote: Only two data-sources of L1/FB are applicable for AVX-256bit even though the corresponding AVX load could be serviced by a deeper level in the memory hierarchy. Data source is reported for the Low-half load. This event also counts SW prefetches independent of the actual data source.",
374 "EventCode": "0xD1",
375 "Counter": "0,1,2,3",
376 "UMask": "0x1",
377 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
378 "SampleAfterValue": "2000003",
379 "BriefDescription": "Retired load uops with L1 cache hits as data sources.",
380 "CounterHTOff": "0,1,2,3",
381 "Data_LA": "1"
382 },
383 {
384 "PEBS": "1",
385 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the mid-level (L2) cache.",
386 "EventCode": "0xD1",
387 "Counter": "0,1,2,3",
388 "UMask": "0x2",
389 "Errata": "BDM35",
390 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
391 "SampleAfterValue": "100003",
392 "BriefDescription": "Retired load uops with L2 cache hits as data sources.",
393 "CounterHTOff": "0,1,2,3",
394 "Data_LA": "1"
395 },
396 {
397 "PEBS": "1",
398 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were data hits in the last-level (L3) cache without snoops required.",
399 "EventCode": "0xD1",
400 "Counter": "0,1,2,3",
401 "UMask": "0x4",
402 "Errata": "BDM100",
403 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_HIT",
404 "SampleAfterValue": "50021",
405 "BriefDescription": "Retired load uops which data sources were data hits in L3 without snoops required.",
406 "CounterHTOff": "0,1,2,3",
407 "Data_LA": "1"
408 },
409 {
410 "PEBS": "1",
411 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were misses in the nearest-level (L1) cache. Counting excludes unknown and UC data source.",
412 "EventCode": "0xD1",
413 "Counter": "0,1,2,3",
414 "UMask": "0x8",
415 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
416 "SampleAfterValue": "100003",
417 "BriefDescription": "Retired load uops misses in L1 cache as data sources.",
418 "CounterHTOff": "0,1,2,3",
419 "Data_LA": "1"
420 },
421 {
422 "PEBS": "1",
423 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were misses in the mid-level (L2) cache. Counting excludes unknown and UC data source.",
424 "EventCode": "0xD1",
425 "Counter": "0,1,2,3",
426 "UMask": "0x10",
427 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
428 "SampleAfterValue": "50021",
429 "BriefDescription": "Miss in mid-level (L2) cache. Excludes Unknown data-source.",
430 "CounterHTOff": "0,1,2,3",
431 "Data_LA": "1"
432 },
433 {
434 "PEBS": "1",
435 "EventCode": "0xD1",
436 "Counter": "0,1,2,3",
437 "UMask": "0x20",
438 "Errata": "BDM100, BDE70",
439 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_MISS",
440 "SampleAfterValue": "100007",
441 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
442 "CounterHTOff": "0,1,2,3",
443 "Data_LA": "1"
444 },
445 {
446 "PEBS": "1",
447 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were load uops missed L1 but hit a fill buffer due to a preceding miss to the same cache line with the data not ready.\nNote: Only two data-sources of L1/FB are applicable for AVX-256bit even though the corresponding AVX load could be serviced by a deeper level in the memory hierarchy. Data source is reported for the Low-half load.",
448 "EventCode": "0xD1",
449 "Counter": "0,1,2,3",
450 "UMask": "0x40",
451 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
452 "SampleAfterValue": "100003",
453 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
454 "CounterHTOff": "0,1,2,3",
455 "Data_LA": "1"
456 },
457 {
458 "PEBS": "1",
459 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were L3 Hit and a cross-core snoop missed in the on-pkg core cache.",
460 "EventCode": "0xD2",
461 "Counter": "0,1,2,3",
462 "UMask": "0x1",
463 "Errata": "BDM100",
464 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS",
465 "SampleAfterValue": "20011",
466 "BriefDescription": "Retired load uops which data sources were L3 hit and cross-core snoop missed in on-pkg core cache.",
467 "CounterHTOff": "0,1,2,3",
468 "Data_LA": "1"
469 },
470 {
471 "PEBS": "1",
472 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were L3 hit and a cross-core snoop hit in the on-pkg core cache.",
473 "EventCode": "0xD2",
474 "Counter": "0,1,2,3",
475 "UMask": "0x2",
476 "Errata": "BDM100",
477 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT",
478 "SampleAfterValue": "20011",
479 "BriefDescription": "Retired load uops which data sources were L3 and cross-core snoop hits in on-pkg core cache.",
480 "CounterHTOff": "0,1,2,3",
481 "Data_LA": "1"
482 },
483 {
484 "PEBS": "1",
485 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were HitM responses from a core on same socket (shared L3).",
486 "EventCode": "0xD2",
487 "Counter": "0,1,2,3",
488 "UMask": "0x4",
489 "Errata": "BDM100",
490 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM",
491 "SampleAfterValue": "20011",
492 "BriefDescription": "Retired load uops which data sources were HitM responses from shared L3.",
493 "CounterHTOff": "0,1,2,3",
494 "Data_LA": "1"
495 },
496 {
497 "PEBS": "1",
498 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the last-level (L3) cache without snoops required.",
499 "EventCode": "0xD2",
500 "Counter": "0,1,2,3",
501 "UMask": "0x8",
502 "Errata": "BDM100",
503 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_NONE",
504 "SampleAfterValue": "100003",
505 "BriefDescription": "Retired load uops which data sources were hits in L3 without snoops required.",
506 "CounterHTOff": "0,1,2,3",
507 "Data_LA": "1"
508 },
509 {
510 "PEBS": "1",
511 "PublicDescription": "Retired load uop whose Data Source was: local DRAM either Snoop not needed or Snoop Miss (RspI).",
512 "EventCode": "0xD3",
513 "Counter": "0,1,2,3",
514 "UMask": "0x1",
515 "Errata": "BDE70, BDM100",
516 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM",
517 "SampleAfterValue": "100007",
518 "BriefDescription": "Data from local DRAM either Snoop not needed or Snoop Miss (RspI)",
519 "CounterHTOff": "0,1,2,3",
520 "Data_LA": "1"
521 },
522 {
523 "PublicDescription": "This event counts Demand Data Read requests that access L2 cache, including rejects.",
524 "EventCode": "0xF0",
525 "Counter": "0,1,2,3",
526 "UMask": "0x1",
527 "EventName": "L2_TRANS.DEMAND_DATA_RD",
528 "SampleAfterValue": "200003",
529 "BriefDescription": "Demand Data Read requests that access L2 cache",
530 "CounterHTOff": "0,1,2,3,4,5,6,7"
531 },
532 {
533 "PublicDescription": "This event counts Read for Ownership (RFO) requests that access L2 cache.",
534 "EventCode": "0xF0",
535 "Counter": "0,1,2,3",
536 "UMask": "0x2",
537 "EventName": "L2_TRANS.RFO",
538 "SampleAfterValue": "200003",
539 "BriefDescription": "RFO requests that access L2 cache",
540 "CounterHTOff": "0,1,2,3,4,5,6,7"
541 },
542 {
543 "PublicDescription": "This event counts the number of L2 cache accesses when fetching instructions.",
544 "EventCode": "0xF0",
545 "Counter": "0,1,2,3",
546 "UMask": "0x4",
547 "EventName": "L2_TRANS.CODE_RD",
548 "SampleAfterValue": "200003",
549 "BriefDescription": "L2 cache accesses when fetching instructions",
550 "CounterHTOff": "0,1,2,3,4,5,6,7"
551 },
552 {
553 "PublicDescription": "This event counts L2 or L3 HW prefetches that access L2 cache including rejects.",
554 "EventCode": "0xF0",
555 "Counter": "0,1,2,3",
556 "UMask": "0x8",
557 "EventName": "L2_TRANS.ALL_PF",
558 "SampleAfterValue": "200003",
559 "BriefDescription": "L2 or L3 HW prefetches that access L2 cache",
560 "CounterHTOff": "0,1,2,3,4,5,6,7"
561 },
562 {
563 "PublicDescription": "This event counts L1D writebacks that access L2 cache.",
564 "EventCode": "0xF0",
565 "Counter": "0,1,2,3",
566 "UMask": "0x10",
567 "EventName": "L2_TRANS.L1D_WB",
568 "SampleAfterValue": "200003",
569 "BriefDescription": "L1D writebacks that access L2 cache",
570 "CounterHTOff": "0,1,2,3,4,5,6,7"
571 },
572 {
573 "PublicDescription": "This event counts L2 fill requests that access L2 cache.",
574 "EventCode": "0xF0",
575 "Counter": "0,1,2,3",
576 "UMask": "0x20",
577 "EventName": "L2_TRANS.L2_FILL",
578 "SampleAfterValue": "200003",
579 "BriefDescription": "L2 fill requests that access L2 cache",
580 "CounterHTOff": "0,1,2,3,4,5,6,7"
581 },
582 {
583 "PublicDescription": "This event counts L2 writebacks that access L2 cache.",
584 "EventCode": "0xF0",
585 "Counter": "0,1,2,3",
586 "UMask": "0x40",
587 "EventName": "L2_TRANS.L2_WB",
588 "SampleAfterValue": "200003",
589 "BriefDescription": "L2 writebacks that access L2 cache",
590 "CounterHTOff": "0,1,2,3,4,5,6,7"
591 },
592 {
593 "PublicDescription": "This event counts transactions that access the L2 pipe including snoops, pagewalks, and so on.",
594 "EventCode": "0xF0",
595 "Counter": "0,1,2,3",
596 "UMask": "0x80",
597 "EventName": "L2_TRANS.ALL_REQUESTS",
598 "SampleAfterValue": "200003",
599 "BriefDescription": "Transactions accessing L2 pipe",
600 "CounterHTOff": "0,1,2,3,4,5,6,7"
601 },
602 {
603 "PublicDescription": "This event counts the number of L2 cache lines in the Invalidate state filling the L2. Counting does not cover rejects.",
604 "EventCode": "0xF1",
605 "Counter": "0,1,2,3",
606 "UMask": "0x1",
607 "EventName": "L2_LINES_IN.I",
608 "SampleAfterValue": "100003",
609 "BriefDescription": "L2 cache lines in I state filling L2",
610 "CounterHTOff": "0,1,2,3,4,5,6,7"
611 },
612 {
613 "PublicDescription": "This event counts the number of L2 cache lines in the Shared state filling the L2. Counting does not cover rejects.",
614 "EventCode": "0xF1",
615 "Counter": "0,1,2,3",
616 "UMask": "0x2",
617 "EventName": "L2_LINES_IN.S",
618 "SampleAfterValue": "100003",
619 "BriefDescription": "L2 cache lines in S state filling L2",
620 "CounterHTOff": "0,1,2,3,4,5,6,7"
621 },
622 {
623 "PublicDescription": "This event counts the number of L2 cache lines in the Exclusive state filling the L2. Counting does not cover rejects.",
624 "EventCode": "0xF1",
625 "Counter": "0,1,2,3",
626 "UMask": "0x4",
627 "EventName": "L2_LINES_IN.E",
628 "SampleAfterValue": "100003",
629 "BriefDescription": "L2 cache lines in E state filling L2",
630 "CounterHTOff": "0,1,2,3,4,5,6,7"
631 },
632 {
633 "PublicDescription": "This event counts the number of L2 cache lines filling the L2. Counting does not cover rejects.",
634 "EventCode": "0xF1",
635 "Counter": "0,1,2,3",
636 "UMask": "0x7",
637 "EventName": "L2_LINES_IN.ALL",
638 "SampleAfterValue": "100003",
639 "BriefDescription": "L2 cache lines filling L2",
640 "CounterHTOff": "0,1,2,3,4,5,6,7"
641 },
642 {
643 "EventCode": "0xF2",
644 "Counter": "0,1,2,3",
645 "UMask": "0x5",
646 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
647 "SampleAfterValue": "100003",
648 "BriefDescription": "Clean L2 cache lines evicted by demand.",
649 "CounterHTOff": "0,1,2,3,4,5,6,7"
650 },
651 {
652 "PublicDescription": "This event counts the number of split locks in the super queue.",
653 "EventCode": "0xf4",
654 "Counter": "0,1,2,3",
655 "UMask": "0x10",
656 "EventName": "SQ_MISC.SPLIT_LOCK",
657 "SampleAfterValue": "100003",
658 "BriefDescription": "Split locks in SQ",
659 "CounterHTOff": "0,1,2,3,4,5,6,7"
660 },
661 {
662 "EventCode": "0x24",
663 "Counter": "0,1,2,3",
664 "UMask": "0x42",
665 "EventName": "L2_RQSTS.RFO_HIT",
666 "SampleAfterValue": "200003",
667 "BriefDescription": "RFO requests that hit L2 cache.",
668 "CounterHTOff": "0,1,2,3,4,5,6,7"
669 },
670 {
671 "EventCode": "0x24",
672 "Counter": "0,1,2,3",
673 "UMask": "0x22",
674 "EventName": "L2_RQSTS.RFO_MISS",
675 "SampleAfterValue": "200003",
676 "BriefDescription": "RFO requests that miss L2 cache.",
677 "CounterHTOff": "0,1,2,3,4,5,6,7"
678 },
679 {
680 "EventCode": "0x24",
681 "Counter": "0,1,2,3",
682 "UMask": "0x44",
683 "EventName": "L2_RQSTS.CODE_RD_HIT",
684 "SampleAfterValue": "200003",
685 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
686 "CounterHTOff": "0,1,2,3,4,5,6,7"
687 },
688 {
689 "EventCode": "0x24",
690 "Counter": "0,1,2,3",
691 "UMask": "0x24",
692 "EventName": "L2_RQSTS.CODE_RD_MISS",
693 "SampleAfterValue": "200003",
694 "BriefDescription": "L2 cache misses when fetching instructions.",
695 "CounterHTOff": "0,1,2,3,4,5,6,7"
696 },
697 {
698 "EventCode": "0x24",
699 "Counter": "0,1,2,3",
700 "UMask": "0x27",
701 "EventName": "L2_RQSTS.ALL_DEMAND_MISS",
702 "SampleAfterValue": "200003",
703 "BriefDescription": "Demand requests that miss L2 cache.",
704 "CounterHTOff": "0,1,2,3,4,5,6,7"
705 },
706 {
707 "EventCode": "0x24",
708 "Counter": "0,1,2,3",
709 "UMask": "0xe7",
710 "EventName": "L2_RQSTS.ALL_DEMAND_REFERENCES",
711 "SampleAfterValue": "200003",
712 "BriefDescription": "Demand requests to L2 cache.",
713 "CounterHTOff": "0,1,2,3,4,5,6,7"
714 },
715 {
716 "EventCode": "0x24",
717 "Counter": "0,1,2,3",
718 "UMask": "0x3f",
719 "EventName": "L2_RQSTS.MISS",
720 "SampleAfterValue": "200003",
721 "BriefDescription": "All requests that miss L2 cache.",
722 "CounterHTOff": "0,1,2,3,4,5,6,7"
723 },
724 {
725 "EventCode": "0x24",
726 "Counter": "0,1,2,3",
727 "UMask": "0xff",
728 "EventName": "L2_RQSTS.REFERENCES",
729 "SampleAfterValue": "200003",
730 "BriefDescription": "All L2 requests.",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "EventCode": "0xB7, 0xBB",
735 "Counter": "0,1,2,3",
736 "UMask": "0x1",
737 "EventName": "OFFCORE_RESPONSE",
738 "SampleAfterValue": "100003",
739 "BriefDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction.",
740 "CounterHTOff": "0,1,2,3"
741 },
742 {
743 "EventCode": "0x60",
744 "Counter": "0,1,2,3",
745 "UMask": "0x1",
746 "Errata": "BDM76",
747 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
748 "SampleAfterValue": "2000003",
749 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
750 "CounterMask": "6",
751 "CounterHTOff": "0,1,2,3,4,5,6,7"
752 },
753 {
754 "EventCode": "0x48",
755 "Counter": "2",
756 "UMask": "0x1",
757 "AnyThread": "1",
758 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
759 "SampleAfterValue": "2000003",
760 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
761 "CounterMask": "1",
762 "CounterHTOff": "2"
763 },
764 {
765 "EventCode": "0x48",
766 "Counter": "0,1,2,3",
767 "UMask": "0x2",
768 "EventName": "L1D_PEND_MISS.FB_FULL",
769 "SampleAfterValue": "2000003",
770 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
771 "CounterMask": "1",
772 "CounterHTOff": "0,1,2,3,4,5,6,7"
773 },
774 {
775 "EventCode": "0xB7, 0xBB",
776 "MSRValue": "0x0000010001 ",
777 "Counter": "0,1,2,3",
778 "UMask": "0x1",
779 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
780 "MSRIndex": "0x1a6,0x1a7",
781 "SampleAfterValue": "100003",
782 "BriefDescription": "Counts demand data reads that have any response type.",
783 "Offcore": "1",
784 "CounterHTOff": "0,1,2,3"
785 },
786 {
787 "EventCode": "0xB7, 0xBB",
788 "MSRValue": "0x0080020001 ",
789 "Counter": "0,1,2,3",
790 "UMask": "0x1",
791 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_NONE",
792 "MSRIndex": "0x1a6,0x1a7",
793 "SampleAfterValue": "100003",
794 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_NONE",
795 "Offcore": "1",
796 "CounterHTOff": "0,1,2,3"
797 },
798 {
799 "EventCode": "0xB7, 0xBB",
800 "MSRValue": "0x0100020001 ",
801 "Counter": "0,1,2,3",
802 "UMask": "0x1",
803 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
804 "MSRIndex": "0x1a6,0x1a7",
805 "SampleAfterValue": "100003",
806 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
807 "Offcore": "1",
808 "CounterHTOff": "0,1,2,3"
809 },
810 {
811 "EventCode": "0xB7, 0xBB",
812 "MSRValue": "0x0200020001 ",
813 "Counter": "0,1,2,3",
814 "UMask": "0x1",
815 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_MISS",
816 "MSRIndex": "0x1a6,0x1a7",
817 "SampleAfterValue": "100003",
818 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_MISS",
819 "Offcore": "1",
820 "CounterHTOff": "0,1,2,3"
821 },
822 {
823 "EventCode": "0xB7, 0xBB",
824 "MSRValue": "0x0400020001 ",
825 "Counter": "0,1,2,3",
826 "UMask": "0x1",
827 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
828 "MSRIndex": "0x1a6,0x1a7",
829 "SampleAfterValue": "100003",
830 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
831 "Offcore": "1",
832 "CounterHTOff": "0,1,2,3"
833 },
834 {
835 "EventCode": "0xB7, 0xBB",
836 "MSRValue": "0x1000020001 ",
837 "Counter": "0,1,2,3",
838 "UMask": "0x1",
839 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_HITM",
840 "MSRIndex": "0x1a6,0x1a7",
841 "SampleAfterValue": "100003",
842 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_HITM",
843 "Offcore": "1",
844 "CounterHTOff": "0,1,2,3"
845 },
846 {
847 "EventCode": "0xB7, 0xBB",
848 "MSRValue": "0x3f80020001 ",
849 "Counter": "0,1,2,3",
850 "UMask": "0x1",
851 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.ANY_SNOOP",
852 "MSRIndex": "0x1a6,0x1a7",
853 "SampleAfterValue": "100003",
854 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & ANY_SNOOP",
855 "Offcore": "1",
856 "CounterHTOff": "0,1,2,3"
857 },
858 {
859 "EventCode": "0xB7, 0xBB",
860 "MSRValue": "0x00803c0001 ",
861 "Counter": "0,1,2,3",
862 "UMask": "0x1",
863 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_NONE",
864 "MSRIndex": "0x1a6,0x1a7",
865 "SampleAfterValue": "100003",
866 "BriefDescription": "Counts demand data reads that hit in the L3 with no details on snoop-related information.",
867 "Offcore": "1",
868 "CounterHTOff": "0,1,2,3"
869 },
870 {
871 "EventCode": "0xB7, 0xBB",
872 "MSRValue": "0x01003c0001 ",
873 "Counter": "0,1,2,3",
874 "UMask": "0x1",
875 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_NOT_NEEDED",
876 "MSRIndex": "0x1a6,0x1a7",
877 "SampleAfterValue": "100003",
878 "BriefDescription": "Counts demand data reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
879 "Offcore": "1",
880 "CounterHTOff": "0,1,2,3"
881 },
882 {
883 "EventCode": "0xB7, 0xBB",
884 "MSRValue": "0x02003c0001 ",
885 "Counter": "0,1,2,3",
886 "UMask": "0x1",
887 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_MISS",
888 "MSRIndex": "0x1a6,0x1a7",
889 "SampleAfterValue": "100003",
890 "BriefDescription": "Counts demand data reads that hit in the L3 with a snoop miss response.",
891 "Offcore": "1",
892 "CounterHTOff": "0,1,2,3"
893 },
894 {
895 "EventCode": "0xB7, 0xBB",
896 "MSRValue": "0x04003c0001 ",
897 "Counter": "0,1,2,3",
898 "UMask": "0x1",
899 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_NO_FWD",
900 "MSRIndex": "0x1a6,0x1a7",
901 "SampleAfterValue": "100003",
902 "BriefDescription": "Counts demand data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
903 "Offcore": "1",
904 "CounterHTOff": "0,1,2,3"
905 },
906 {
907 "EventCode": "0xB7, 0xBB",
908 "MSRValue": "0x10003c0001 ",
909 "Counter": "0,1,2,3",
910 "UMask": "0x1",
911 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM",
912 "MSRIndex": "0x1a6,0x1a7",
913 "SampleAfterValue": "100003",
914 "BriefDescription": "DEMAND_DATA_RD & L3_HIT & SNOOP_HITM",
915 "Offcore": "1",
916 "CounterHTOff": "0,1,2,3"
917 },
918 {
919 "EventCode": "0xB7, 0xBB",
920 "MSRValue": "0x3f803c0001 ",
921 "Counter": "0,1,2,3",
922 "UMask": "0x1",
923 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.ANY_SNOOP",
924 "MSRIndex": "0x1a6,0x1a7",
925 "SampleAfterValue": "100003",
926 "BriefDescription": "Counts demand data reads that hit in the L3.",
927 "Offcore": "1",
928 "CounterHTOff": "0,1,2,3"
929 },
930 {
931 "EventCode": "0xB7, 0xBB",
932 "MSRValue": "0x0000010002 ",
933 "Counter": "0,1,2,3",
934 "UMask": "0x1",
935 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_RESPONSE",
936 "MSRIndex": "0x1a6,0x1a7",
937 "SampleAfterValue": "100003",
938 "BriefDescription": "Counts all demand data writes (RFOs) that have any response type.",
939 "Offcore": "1",
940 "CounterHTOff": "0,1,2,3"
941 },
942 {
943 "EventCode": "0xB7, 0xBB",
944 "MSRValue": "0x00803c0002 ",
945 "Counter": "0,1,2,3",
946 "UMask": "0x1",
947 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_NONE",
948 "MSRIndex": "0x1a6,0x1a7",
949 "SampleAfterValue": "100003",
950 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 with no details on snoop-related information.",
951 "Offcore": "1",
952 "CounterHTOff": "0,1,2,3"
953 },
954 {
955 "EventCode": "0xB7, 0xBB",
956 "MSRValue": "0x01003c0002 ",
957 "Counter": "0,1,2,3",
958 "UMask": "0x1",
959 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_NOT_NEEDED",
960 "MSRIndex": "0x1a6,0x1a7",
961 "SampleAfterValue": "100003",
962 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
963 "Offcore": "1",
964 "CounterHTOff": "0,1,2,3"
965 },
966 {
967 "EventCode": "0xB7, 0xBB",
968 "MSRValue": "0x02003c0002 ",
969 "Counter": "0,1,2,3",
970 "UMask": "0x1",
971 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_MISS",
972 "MSRIndex": "0x1a6,0x1a7",
973 "SampleAfterValue": "100003",
974 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 with a snoop miss response.",
975 "Offcore": "1",
976 "CounterHTOff": "0,1,2,3"
977 },
978 {
979 "EventCode": "0xB7, 0xBB",
980 "MSRValue": "0x04003c0002 ",
981 "Counter": "0,1,2,3",
982 "UMask": "0x1",
983 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HIT_NO_FWD",
984 "MSRIndex": "0x1a6,0x1a7",
985 "SampleAfterValue": "100003",
986 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
987 "Offcore": "1",
988 "CounterHTOff": "0,1,2,3"
989 },
990 {
991 "EventCode": "0xB7, 0xBB",
992 "MSRValue": "0x10003c0002 ",
993 "Counter": "0,1,2,3",
994 "UMask": "0x1",
995 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM",
996 "MSRIndex": "0x1a6,0x1a7",
997 "SampleAfterValue": "100003",
998 "BriefDescription": "DEMAND_RFO & L3_HIT & SNOOP_HITM",
999 "Offcore": "1",
1000 "CounterHTOff": "0,1,2,3"
1001 },
1002 {
1003 "EventCode": "0xB7, 0xBB",
1004 "MSRValue": "0x3f803c0002 ",
1005 "Counter": "0,1,2,3",
1006 "UMask": "0x1",
1007 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.ANY_SNOOP",
1008 "MSRIndex": "0x1a6,0x1a7",
1009 "SampleAfterValue": "100003",
1010 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3.",
1011 "Offcore": "1",
1012 "CounterHTOff": "0,1,2,3"
1013 },
1014 {
1015 "EventCode": "0xB7, 0xBB",
1016 "MSRValue": "0x0000010004 ",
1017 "Counter": "0,1,2,3",
1018 "UMask": "0x1",
1019 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
1020 "MSRIndex": "0x1a6,0x1a7",
1021 "SampleAfterValue": "100003",
1022 "BriefDescription": "Counts all demand code reads that have any response type.",
1023 "Offcore": "1",
1024 "CounterHTOff": "0,1,2,3"
1025 },
1026 {
1027 "EventCode": "0xB7, 0xBB",
1028 "MSRValue": "0x0080020004 ",
1029 "Counter": "0,1,2,3",
1030 "UMask": "0x1",
1031 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_NONE",
1032 "MSRIndex": "0x1a6,0x1a7",
1033 "SampleAfterValue": "100003",
1034 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_NONE",
1035 "Offcore": "1",
1036 "CounterHTOff": "0,1,2,3"
1037 },
1038 {
1039 "EventCode": "0xB7, 0xBB",
1040 "MSRValue": "0x0100020004 ",
1041 "Counter": "0,1,2,3",
1042 "UMask": "0x1",
1043 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1044 "MSRIndex": "0x1a6,0x1a7",
1045 "SampleAfterValue": "100003",
1046 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1047 "Offcore": "1",
1048 "CounterHTOff": "0,1,2,3"
1049 },
1050 {
1051 "EventCode": "0xB7, 0xBB",
1052 "MSRValue": "0x0200020004 ",
1053 "Counter": "0,1,2,3",
1054 "UMask": "0x1",
1055 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_MISS",
1056 "MSRIndex": "0x1a6,0x1a7",
1057 "SampleAfterValue": "100003",
1058 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_MISS",
1059 "Offcore": "1",
1060 "CounterHTOff": "0,1,2,3"
1061 },
1062 {
1063 "EventCode": "0xB7, 0xBB",
1064 "MSRValue": "0x0400020004 ",
1065 "Counter": "0,1,2,3",
1066 "UMask": "0x1",
1067 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1068 "MSRIndex": "0x1a6,0x1a7",
1069 "SampleAfterValue": "100003",
1070 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1071 "Offcore": "1",
1072 "CounterHTOff": "0,1,2,3"
1073 },
1074 {
1075 "EventCode": "0xB7, 0xBB",
1076 "MSRValue": "0x1000020004 ",
1077 "Counter": "0,1,2,3",
1078 "UMask": "0x1",
1079 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_HITM",
1080 "MSRIndex": "0x1a6,0x1a7",
1081 "SampleAfterValue": "100003",
1082 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_HITM",
1083 "Offcore": "1",
1084 "CounterHTOff": "0,1,2,3"
1085 },
1086 {
1087 "EventCode": "0xB7, 0xBB",
1088 "MSRValue": "0x3f80020004 ",
1089 "Counter": "0,1,2,3",
1090 "UMask": "0x1",
1091 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.ANY_SNOOP",
1092 "MSRIndex": "0x1a6,0x1a7",
1093 "SampleAfterValue": "100003",
1094 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & ANY_SNOOP",
1095 "Offcore": "1",
1096 "CounterHTOff": "0,1,2,3"
1097 },
1098 {
1099 "EventCode": "0xB7, 0xBB",
1100 "MSRValue": "0x00803c0004 ",
1101 "Counter": "0,1,2,3",
1102 "UMask": "0x1",
1103 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_NONE",
1104 "MSRIndex": "0x1a6,0x1a7",
1105 "SampleAfterValue": "100003",
1106 "BriefDescription": "Counts all demand code reads that hit in the L3 with no details on snoop-related information.",
1107 "Offcore": "1",
1108 "CounterHTOff": "0,1,2,3"
1109 },
1110 {
1111 "EventCode": "0xB7, 0xBB",
1112 "MSRValue": "0x01003c0004 ",
1113 "Counter": "0,1,2,3",
1114 "UMask": "0x1",
1115 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_NOT_NEEDED",
1116 "MSRIndex": "0x1a6,0x1a7",
1117 "SampleAfterValue": "100003",
1118 "BriefDescription": "Counts all demand code reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1119 "Offcore": "1",
1120 "CounterHTOff": "0,1,2,3"
1121 },
1122 {
1123 "EventCode": "0xB7, 0xBB",
1124 "MSRValue": "0x02003c0004 ",
1125 "Counter": "0,1,2,3",
1126 "UMask": "0x1",
1127 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_MISS",
1128 "MSRIndex": "0x1a6,0x1a7",
1129 "SampleAfterValue": "100003",
1130 "BriefDescription": "Counts all demand code reads that hit in the L3 with a snoop miss response.",
1131 "Offcore": "1",
1132 "CounterHTOff": "0,1,2,3"
1133 },
1134 {
1135 "EventCode": "0xB7, 0xBB",
1136 "MSRValue": "0x04003c0004 ",
1137 "Counter": "0,1,2,3",
1138 "UMask": "0x1",
1139 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_HIT_NO_FWD",
1140 "MSRIndex": "0x1a6,0x1a7",
1141 "SampleAfterValue": "100003",
1142 "BriefDescription": "Counts all demand code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1143 "Offcore": "1",
1144 "CounterHTOff": "0,1,2,3"
1145 },
1146 {
1147 "EventCode": "0xB7, 0xBB",
1148 "MSRValue": "0x10003c0004 ",
1149 "Counter": "0,1,2,3",
1150 "UMask": "0x1",
1151 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_HITM",
1152 "MSRIndex": "0x1a6,0x1a7",
1153 "SampleAfterValue": "100003",
1154 "BriefDescription": "DEMAND_CODE_RD & L3_HIT & SNOOP_HITM",
1155 "Offcore": "1",
1156 "CounterHTOff": "0,1,2,3"
1157 },
1158 {
1159 "EventCode": "0xB7, 0xBB",
1160 "MSRValue": "0x3f803c0004 ",
1161 "Counter": "0,1,2,3",
1162 "UMask": "0x1",
1163 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.ANY_SNOOP",
1164 "MSRIndex": "0x1a6,0x1a7",
1165 "SampleAfterValue": "100003",
1166 "BriefDescription": "Counts all demand code reads that hit in the L3.",
1167 "Offcore": "1",
1168 "CounterHTOff": "0,1,2,3"
1169 },
1170 {
1171 "EventCode": "0xB7, 0xBB",
1172 "MSRValue": "0x0000010008 ",
1173 "Counter": "0,1,2,3",
1174 "UMask": "0x1",
1175 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
1176 "MSRIndex": "0x1a6,0x1a7",
1177 "SampleAfterValue": "100003",
1178 "BriefDescription": "Counts writebacks (modified to exclusive) that have any response type.",
1179 "Offcore": "1",
1180 "CounterHTOff": "0,1,2,3"
1181 },
1182 {
1183 "EventCode": "0xB7, 0xBB",
1184 "MSRValue": "0x0080020008 ",
1185 "Counter": "0,1,2,3",
1186 "UMask": "0x1",
1187 "EventName": "OFFCORE_RESPONSE.COREWB.SUPPLIER_NONE.SNOOP_NONE",
1188 "MSRIndex": "0x1a6,0x1a7",
1189 "SampleAfterValue": "100003",
1190 "BriefDescription": "COREWB & SUPPLIER_NONE & SNOOP_NONE",
1191 "Offcore": "1",
1192 "CounterHTOff": "0,1,2,3"
1193 },
1194 {
1195 "EventCode": "0xB7, 0xBB",
1196 "MSRValue": "0x0100020008 ",
1197 "Counter": "0,1,2,3",
1198 "UMask": "0x1",
1199 "EventName": "OFFCORE_RESPONSE.COREWB.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1200 "MSRIndex": "0x1a6,0x1a7",
1201 "SampleAfterValue": "100003",
1202 "BriefDescription": "COREWB & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1203 "Offcore": "1",
1204 "CounterHTOff": "0,1,2,3"
1205 },
1206 {
1207 "EventCode": "0xB7, 0xBB",
1208 "MSRValue": "0x0200020008 ",
1209 "Counter": "0,1,2,3",
1210 "UMask": "0x1",
1211 "EventName": "OFFCORE_RESPONSE.COREWB.SUPPLIER_NONE.SNOOP_MISS",
1212 "MSRIndex": "0x1a6,0x1a7",
1213 "SampleAfterValue": "100003",
1214 "BriefDescription": "COREWB & SUPPLIER_NONE & SNOOP_MISS",
1215 "Offcore": "1",
1216 "CounterHTOff": "0,1,2,3"
1217 },
1218 {
1219 "EventCode": "0xB7, 0xBB",
1220 "MSRValue": "0x0400020008 ",
1221 "Counter": "0,1,2,3",
1222 "UMask": "0x1",
1223 "EventName": "OFFCORE_RESPONSE.COREWB.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1224 "MSRIndex": "0x1a6,0x1a7",
1225 "SampleAfterValue": "100003",
1226 "BriefDescription": "COREWB & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1227 "Offcore": "1",
1228 "CounterHTOff": "0,1,2,3"
1229 },
1230 {
1231 "EventCode": "0xB7, 0xBB",
1232 "MSRValue": "0x1000020008 ",
1233 "Counter": "0,1,2,3",
1234 "UMask": "0x1",
1235 "EventName": "OFFCORE_RESPONSE.COREWB.SUPPLIER_NONE.SNOOP_HITM",
1236 "MSRIndex": "0x1a6,0x1a7",
1237 "SampleAfterValue": "100003",
1238 "BriefDescription": "COREWB & SUPPLIER_NONE & SNOOP_HITM",
1239 "Offcore": "1",
1240 "CounterHTOff": "0,1,2,3"
1241 },
1242 {
1243 "EventCode": "0xB7, 0xBB",
1244 "MSRValue": "0x3f80020008 ",
1245 "Counter": "0,1,2,3",
1246 "UMask": "0x1",
1247 "EventName": "OFFCORE_RESPONSE.COREWB.SUPPLIER_NONE.ANY_SNOOP",
1248 "MSRIndex": "0x1a6,0x1a7",
1249 "SampleAfterValue": "100003",
1250 "BriefDescription": "COREWB & SUPPLIER_NONE & ANY_SNOOP",
1251 "Offcore": "1",
1252 "CounterHTOff": "0,1,2,3"
1253 },
1254 {
1255 "EventCode": "0xB7, 0xBB",
1256 "MSRValue": "0x00803c0008 ",
1257 "Counter": "0,1,2,3",
1258 "UMask": "0x1",
1259 "EventName": "OFFCORE_RESPONSE.COREWB.L3_HIT.SNOOP_NONE",
1260 "MSRIndex": "0x1a6,0x1a7",
1261 "SampleAfterValue": "100003",
1262 "BriefDescription": "Counts writebacks (modified to exclusive) that hit in the L3 with no details on snoop-related information.",
1263 "Offcore": "1",
1264 "CounterHTOff": "0,1,2,3"
1265 },
1266 {
1267 "EventCode": "0xB7, 0xBB",
1268 "MSRValue": "0x01003c0008 ",
1269 "Counter": "0,1,2,3",
1270 "UMask": "0x1",
1271 "EventName": "OFFCORE_RESPONSE.COREWB.L3_HIT.SNOOP_NOT_NEEDED",
1272 "MSRIndex": "0x1a6,0x1a7",
1273 "SampleAfterValue": "100003",
1274 "BriefDescription": "Counts writebacks (modified to exclusive) that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1275 "Offcore": "1",
1276 "CounterHTOff": "0,1,2,3"
1277 },
1278 {
1279 "EventCode": "0xB7, 0xBB",
1280 "MSRValue": "0x02003c0008 ",
1281 "Counter": "0,1,2,3",
1282 "UMask": "0x1",
1283 "EventName": "OFFCORE_RESPONSE.COREWB.L3_HIT.SNOOP_MISS",
1284 "MSRIndex": "0x1a6,0x1a7",
1285 "SampleAfterValue": "100003",
1286 "BriefDescription": "Counts writebacks (modified to exclusive) that hit in the L3 with a snoop miss response.",
1287 "Offcore": "1",
1288 "CounterHTOff": "0,1,2,3"
1289 },
1290 {
1291 "EventCode": "0xB7, 0xBB",
1292 "MSRValue": "0x04003c0008 ",
1293 "Counter": "0,1,2,3",
1294 "UMask": "0x1",
1295 "EventName": "OFFCORE_RESPONSE.COREWB.L3_HIT.SNOOP_HIT_NO_FWD",
1296 "MSRIndex": "0x1a6,0x1a7",
1297 "SampleAfterValue": "100003",
1298 "BriefDescription": "Counts writebacks (modified to exclusive) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1299 "Offcore": "1",
1300 "CounterHTOff": "0,1,2,3"
1301 },
1302 {
1303 "EventCode": "0xB7, 0xBB",
1304 "MSRValue": "0x10003c0008 ",
1305 "Counter": "0,1,2,3",
1306 "UMask": "0x1",
1307 "EventName": "OFFCORE_RESPONSE.COREWB.L3_HIT.SNOOP_HITM",
1308 "MSRIndex": "0x1a6,0x1a7",
1309 "SampleAfterValue": "100003",
1310 "BriefDescription": "COREWB & L3_HIT & SNOOP_HITM",
1311 "Offcore": "1",
1312 "CounterHTOff": "0,1,2,3"
1313 },
1314 {
1315 "EventCode": "0xB7, 0xBB",
1316 "MSRValue": "0x3f803c0008 ",
1317 "Counter": "0,1,2,3",
1318 "UMask": "0x1",
1319 "EventName": "OFFCORE_RESPONSE.COREWB.L3_HIT.ANY_SNOOP",
1320 "MSRIndex": "0x1a6,0x1a7",
1321 "SampleAfterValue": "100003",
1322 "BriefDescription": "Counts writebacks (modified to exclusive) that hit in the L3.",
1323 "Offcore": "1",
1324 "CounterHTOff": "0,1,2,3"
1325 },
1326 {
1327 "EventCode": "0xB7, 0xBB",
1328 "MSRValue": "0x0000010010 ",
1329 "Counter": "0,1,2,3",
1330 "UMask": "0x1",
1331 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.ANY_RESPONSE",
1332 "MSRIndex": "0x1a6,0x1a7",
1333 "SampleAfterValue": "100003",
1334 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that have any response type.",
1335 "Offcore": "1",
1336 "CounterHTOff": "0,1,2,3"
1337 },
1338 {
1339 "EventCode": "0xB7, 0xBB",
1340 "MSRValue": "0x0080020010 ",
1341 "Counter": "0,1,2,3",
1342 "UMask": "0x1",
1343 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.SUPPLIER_NONE.SNOOP_NONE",
1344 "MSRIndex": "0x1a6,0x1a7",
1345 "SampleAfterValue": "100003",
1346 "BriefDescription": "PF_L2_DATA_RD & SUPPLIER_NONE & SNOOP_NONE",
1347 "Offcore": "1",
1348 "CounterHTOff": "0,1,2,3"
1349 },
1350 {
1351 "EventCode": "0xB7, 0xBB",
1352 "MSRValue": "0x0100020010 ",
1353 "Counter": "0,1,2,3",
1354 "UMask": "0x1",
1355 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1356 "MSRIndex": "0x1a6,0x1a7",
1357 "SampleAfterValue": "100003",
1358 "BriefDescription": "PF_L2_DATA_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1359 "Offcore": "1",
1360 "CounterHTOff": "0,1,2,3"
1361 },
1362 {
1363 "EventCode": "0xB7, 0xBB",
1364 "MSRValue": "0x0200020010 ",
1365 "Counter": "0,1,2,3",
1366 "UMask": "0x1",
1367 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.SUPPLIER_NONE.SNOOP_MISS",
1368 "MSRIndex": "0x1a6,0x1a7",
1369 "SampleAfterValue": "100003",
1370 "BriefDescription": "PF_L2_DATA_RD & SUPPLIER_NONE & SNOOP_MISS",
1371 "Offcore": "1",
1372 "CounterHTOff": "0,1,2,3"
1373 },
1374 {
1375 "EventCode": "0xB7, 0xBB",
1376 "MSRValue": "0x0400020010 ",
1377 "Counter": "0,1,2,3",
1378 "UMask": "0x1",
1379 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1380 "MSRIndex": "0x1a6,0x1a7",
1381 "SampleAfterValue": "100003",
1382 "BriefDescription": "PF_L2_DATA_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1383 "Offcore": "1",
1384 "CounterHTOff": "0,1,2,3"
1385 },
1386 {
1387 "EventCode": "0xB7, 0xBB",
1388 "MSRValue": "0x1000020010 ",
1389 "Counter": "0,1,2,3",
1390 "UMask": "0x1",
1391 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.SUPPLIER_NONE.SNOOP_HITM",
1392 "MSRIndex": "0x1a6,0x1a7",
1393 "SampleAfterValue": "100003",
1394 "BriefDescription": "PF_L2_DATA_RD & SUPPLIER_NONE & SNOOP_HITM",
1395 "Offcore": "1",
1396 "CounterHTOff": "0,1,2,3"
1397 },
1398 {
1399 "EventCode": "0xB7, 0xBB",
1400 "MSRValue": "0x3f80020010 ",
1401 "Counter": "0,1,2,3",
1402 "UMask": "0x1",
1403 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.SUPPLIER_NONE.ANY_SNOOP",
1404 "MSRIndex": "0x1a6,0x1a7",
1405 "SampleAfterValue": "100003",
1406 "BriefDescription": "PF_L2_DATA_RD & SUPPLIER_NONE & ANY_SNOOP",
1407 "Offcore": "1",
1408 "CounterHTOff": "0,1,2,3"
1409 },
1410 {
1411 "EventCode": "0xB7, 0xBB",
1412 "MSRValue": "0x00803c0010 ",
1413 "Counter": "0,1,2,3",
1414 "UMask": "0x1",
1415 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.SNOOP_NONE",
1416 "MSRIndex": "0x1a6,0x1a7",
1417 "SampleAfterValue": "100003",
1418 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3 with no details on snoop-related information.",
1419 "Offcore": "1",
1420 "CounterHTOff": "0,1,2,3"
1421 },
1422 {
1423 "EventCode": "0xB7, 0xBB",
1424 "MSRValue": "0x01003c0010 ",
1425 "Counter": "0,1,2,3",
1426 "UMask": "0x1",
1427 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.SNOOP_NOT_NEEDED",
1428 "MSRIndex": "0x1a6,0x1a7",
1429 "SampleAfterValue": "100003",
1430 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1431 "Offcore": "1",
1432 "CounterHTOff": "0,1,2,3"
1433 },
1434 {
1435 "EventCode": "0xB7, 0xBB",
1436 "MSRValue": "0x02003c0010 ",
1437 "Counter": "0,1,2,3",
1438 "UMask": "0x1",
1439 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.SNOOP_MISS",
1440 "MSRIndex": "0x1a6,0x1a7",
1441 "SampleAfterValue": "100003",
1442 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3 with a snoop miss response.",
1443 "Offcore": "1",
1444 "CounterHTOff": "0,1,2,3"
1445 },
1446 {
1447 "EventCode": "0xB7, 0xBB",
1448 "MSRValue": "0x04003c0010 ",
1449 "Counter": "0,1,2,3",
1450 "UMask": "0x1",
1451 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.SNOOP_HIT_NO_FWD",
1452 "MSRIndex": "0x1a6,0x1a7",
1453 "SampleAfterValue": "100003",
1454 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1455 "Offcore": "1",
1456 "CounterHTOff": "0,1,2,3"
1457 },
1458 {
1459 "EventCode": "0xB7, 0xBB",
1460 "MSRValue": "0x10003c0010 ",
1461 "Counter": "0,1,2,3",
1462 "UMask": "0x1",
1463 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.SNOOP_HITM",
1464 "MSRIndex": "0x1a6,0x1a7",
1465 "SampleAfterValue": "100003",
1466 "BriefDescription": "PF_L2_DATA_RD & L3_HIT & SNOOP_HITM",
1467 "Offcore": "1",
1468 "CounterHTOff": "0,1,2,3"
1469 },
1470 {
1471 "EventCode": "0xB7, 0xBB",
1472 "MSRValue": "0x3f803c0010 ",
1473 "Counter": "0,1,2,3",
1474 "UMask": "0x1",
1475 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.ANY_SNOOP",
1476 "MSRIndex": "0x1a6,0x1a7",
1477 "SampleAfterValue": "100003",
1478 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3.",
1479 "Offcore": "1",
1480 "CounterHTOff": "0,1,2,3"
1481 },
1482 {
1483 "EventCode": "0xB7, 0xBB",
1484 "MSRValue": "0x0000010020 ",
1485 "Counter": "0,1,2,3",
1486 "UMask": "0x1",
1487 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.ANY_RESPONSE",
1488 "MSRIndex": "0x1a6,0x1a7",
1489 "SampleAfterValue": "100003",
1490 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that have any response type.",
1491 "Offcore": "1",
1492 "CounterHTOff": "0,1,2,3"
1493 },
1494 {
1495 "EventCode": "0xB7, 0xBB",
1496 "MSRValue": "0x0080020020 ",
1497 "Counter": "0,1,2,3",
1498 "UMask": "0x1",
1499 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE.SNOOP_NONE",
1500 "MSRIndex": "0x1a6,0x1a7",
1501 "SampleAfterValue": "100003",
1502 "BriefDescription": "PF_L2_RFO & SUPPLIER_NONE & SNOOP_NONE",
1503 "Offcore": "1",
1504 "CounterHTOff": "0,1,2,3"
1505 },
1506 {
1507 "EventCode": "0xB7, 0xBB",
1508 "MSRValue": "0x0100020020 ",
1509 "Counter": "0,1,2,3",
1510 "UMask": "0x1",
1511 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1512 "MSRIndex": "0x1a6,0x1a7",
1513 "SampleAfterValue": "100003",
1514 "BriefDescription": "PF_L2_RFO & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1515 "Offcore": "1",
1516 "CounterHTOff": "0,1,2,3"
1517 },
1518 {
1519 "EventCode": "0xB7, 0xBB",
1520 "MSRValue": "0x0200020020 ",
1521 "Counter": "0,1,2,3",
1522 "UMask": "0x1",
1523 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE.SNOOP_MISS",
1524 "MSRIndex": "0x1a6,0x1a7",
1525 "SampleAfterValue": "100003",
1526 "BriefDescription": "PF_L2_RFO & SUPPLIER_NONE & SNOOP_MISS",
1527 "Offcore": "1",
1528 "CounterHTOff": "0,1,2,3"
1529 },
1530 {
1531 "EventCode": "0xB7, 0xBB",
1532 "MSRValue": "0x0400020020 ",
1533 "Counter": "0,1,2,3",
1534 "UMask": "0x1",
1535 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1536 "MSRIndex": "0x1a6,0x1a7",
1537 "SampleAfterValue": "100003",
1538 "BriefDescription": "PF_L2_RFO & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1539 "Offcore": "1",
1540 "CounterHTOff": "0,1,2,3"
1541 },
1542 {
1543 "EventCode": "0xB7, 0xBB",
1544 "MSRValue": "0x1000020020 ",
1545 "Counter": "0,1,2,3",
1546 "UMask": "0x1",
1547 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE.SNOOP_HITM",
1548 "MSRIndex": "0x1a6,0x1a7",
1549 "SampleAfterValue": "100003",
1550 "BriefDescription": "PF_L2_RFO & SUPPLIER_NONE & SNOOP_HITM",
1551 "Offcore": "1",
1552 "CounterHTOff": "0,1,2,3"
1553 },
1554 {
1555 "EventCode": "0xB7, 0xBB",
1556 "MSRValue": "0x3f80020020 ",
1557 "Counter": "0,1,2,3",
1558 "UMask": "0x1",
1559 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE.ANY_SNOOP",
1560 "MSRIndex": "0x1a6,0x1a7",
1561 "SampleAfterValue": "100003",
1562 "BriefDescription": "PF_L2_RFO & SUPPLIER_NONE & ANY_SNOOP",
1563 "Offcore": "1",
1564 "CounterHTOff": "0,1,2,3"
1565 },
1566 {
1567 "EventCode": "0xB7, 0xBB",
1568 "MSRValue": "0x00803c0020 ",
1569 "Counter": "0,1,2,3",
1570 "UMask": "0x1",
1571 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.SNOOP_NONE",
1572 "MSRIndex": "0x1a6,0x1a7",
1573 "SampleAfterValue": "100003",
1574 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3 with no details on snoop-related information.",
1575 "Offcore": "1",
1576 "CounterHTOff": "0,1,2,3"
1577 },
1578 {
1579 "EventCode": "0xB7, 0xBB",
1580 "MSRValue": "0x01003c0020 ",
1581 "Counter": "0,1,2,3",
1582 "UMask": "0x1",
1583 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.SNOOP_NOT_NEEDED",
1584 "MSRIndex": "0x1a6,0x1a7",
1585 "SampleAfterValue": "100003",
1586 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1587 "Offcore": "1",
1588 "CounterHTOff": "0,1,2,3"
1589 },
1590 {
1591 "EventCode": "0xB7, 0xBB",
1592 "MSRValue": "0x02003c0020 ",
1593 "Counter": "0,1,2,3",
1594 "UMask": "0x1",
1595 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.SNOOP_MISS",
1596 "MSRIndex": "0x1a6,0x1a7",
1597 "SampleAfterValue": "100003",
1598 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3 with a snoop miss response.",
1599 "Offcore": "1",
1600 "CounterHTOff": "0,1,2,3"
1601 },
1602 {
1603 "EventCode": "0xB7, 0xBB",
1604 "MSRValue": "0x04003c0020 ",
1605 "Counter": "0,1,2,3",
1606 "UMask": "0x1",
1607 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.SNOOP_HIT_NO_FWD",
1608 "MSRIndex": "0x1a6,0x1a7",
1609 "SampleAfterValue": "100003",
1610 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1611 "Offcore": "1",
1612 "CounterHTOff": "0,1,2,3"
1613 },
1614 {
1615 "EventCode": "0xB7, 0xBB",
1616 "MSRValue": "0x10003c0020 ",
1617 "Counter": "0,1,2,3",
1618 "UMask": "0x1",
1619 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.SNOOP_HITM",
1620 "MSRIndex": "0x1a6,0x1a7",
1621 "SampleAfterValue": "100003",
1622 "BriefDescription": "PF_L2_RFO & L3_HIT & SNOOP_HITM",
1623 "Offcore": "1",
1624 "CounterHTOff": "0,1,2,3"
1625 },
1626 {
1627 "EventCode": "0xB7, 0xBB",
1628 "MSRValue": "0x3f803c0020 ",
1629 "Counter": "0,1,2,3",
1630 "UMask": "0x1",
1631 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.ANY_SNOOP",
1632 "MSRIndex": "0x1a6,0x1a7",
1633 "SampleAfterValue": "100003",
1634 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3.",
1635 "Offcore": "1",
1636 "CounterHTOff": "0,1,2,3"
1637 },
1638 {
1639 "EventCode": "0xB7, 0xBB",
1640 "MSRValue": "0x0000010040 ",
1641 "Counter": "0,1,2,3",
1642 "UMask": "0x1",
1643 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.ANY_RESPONSE",
1644 "MSRIndex": "0x1a6,0x1a7",
1645 "SampleAfterValue": "100003",
1646 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that have any response type.",
1647 "Offcore": "1",
1648 "CounterHTOff": "0,1,2,3"
1649 },
1650 {
1651 "EventCode": "0xB7, 0xBB",
1652 "MSRValue": "0x0080020040 ",
1653 "Counter": "0,1,2,3",
1654 "UMask": "0x1",
1655 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.SUPPLIER_NONE.SNOOP_NONE",
1656 "MSRIndex": "0x1a6,0x1a7",
1657 "SampleAfterValue": "100003",
1658 "BriefDescription": "PF_L2_CODE_RD & SUPPLIER_NONE & SNOOP_NONE",
1659 "Offcore": "1",
1660 "CounterHTOff": "0,1,2,3"
1661 },
1662 {
1663 "EventCode": "0xB7, 0xBB",
1664 "MSRValue": "0x0100020040 ",
1665 "Counter": "0,1,2,3",
1666 "UMask": "0x1",
1667 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1668 "MSRIndex": "0x1a6,0x1a7",
1669 "SampleAfterValue": "100003",
1670 "BriefDescription": "PF_L2_CODE_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1671 "Offcore": "1",
1672 "CounterHTOff": "0,1,2,3"
1673 },
1674 {
1675 "EventCode": "0xB7, 0xBB",
1676 "MSRValue": "0x0200020040 ",
1677 "Counter": "0,1,2,3",
1678 "UMask": "0x1",
1679 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.SUPPLIER_NONE.SNOOP_MISS",
1680 "MSRIndex": "0x1a6,0x1a7",
1681 "SampleAfterValue": "100003",
1682 "BriefDescription": "PF_L2_CODE_RD & SUPPLIER_NONE & SNOOP_MISS",
1683 "Offcore": "1",
1684 "CounterHTOff": "0,1,2,3"
1685 },
1686 {
1687 "EventCode": "0xB7, 0xBB",
1688 "MSRValue": "0x0400020040 ",
1689 "Counter": "0,1,2,3",
1690 "UMask": "0x1",
1691 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1692 "MSRIndex": "0x1a6,0x1a7",
1693 "SampleAfterValue": "100003",
1694 "BriefDescription": "PF_L2_CODE_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1695 "Offcore": "1",
1696 "CounterHTOff": "0,1,2,3"
1697 },
1698 {
1699 "EventCode": "0xB7, 0xBB",
1700 "MSRValue": "0x1000020040 ",
1701 "Counter": "0,1,2,3",
1702 "UMask": "0x1",
1703 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.SUPPLIER_NONE.SNOOP_HITM",
1704 "MSRIndex": "0x1a6,0x1a7",
1705 "SampleAfterValue": "100003",
1706 "BriefDescription": "PF_L2_CODE_RD & SUPPLIER_NONE & SNOOP_HITM",
1707 "Offcore": "1",
1708 "CounterHTOff": "0,1,2,3"
1709 },
1710 {
1711 "EventCode": "0xB7, 0xBB",
1712 "MSRValue": "0x3f80020040 ",
1713 "Counter": "0,1,2,3",
1714 "UMask": "0x1",
1715 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.SUPPLIER_NONE.ANY_SNOOP",
1716 "MSRIndex": "0x1a6,0x1a7",
1717 "SampleAfterValue": "100003",
1718 "BriefDescription": "PF_L2_CODE_RD & SUPPLIER_NONE & ANY_SNOOP",
1719 "Offcore": "1",
1720 "CounterHTOff": "0,1,2,3"
1721 },
1722 {
1723 "EventCode": "0xB7, 0xBB",
1724 "MSRValue": "0x00803c0040 ",
1725 "Counter": "0,1,2,3",
1726 "UMask": "0x1",
1727 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.SNOOP_NONE",
1728 "MSRIndex": "0x1a6,0x1a7",
1729 "SampleAfterValue": "100003",
1730 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3 with no details on snoop-related information.",
1731 "Offcore": "1",
1732 "CounterHTOff": "0,1,2,3"
1733 },
1734 {
1735 "EventCode": "0xB7, 0xBB",
1736 "MSRValue": "0x01003c0040 ",
1737 "Counter": "0,1,2,3",
1738 "UMask": "0x1",
1739 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.SNOOP_NOT_NEEDED",
1740 "MSRIndex": "0x1a6,0x1a7",
1741 "SampleAfterValue": "100003",
1742 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1743 "Offcore": "1",
1744 "CounterHTOff": "0,1,2,3"
1745 },
1746 {
1747 "EventCode": "0xB7, 0xBB",
1748 "MSRValue": "0x02003c0040 ",
1749 "Counter": "0,1,2,3",
1750 "UMask": "0x1",
1751 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.SNOOP_MISS",
1752 "MSRIndex": "0x1a6,0x1a7",
1753 "SampleAfterValue": "100003",
1754 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3 with a snoop miss response.",
1755 "Offcore": "1",
1756 "CounterHTOff": "0,1,2,3"
1757 },
1758 {
1759 "EventCode": "0xB7, 0xBB",
1760 "MSRValue": "0x04003c0040 ",
1761 "Counter": "0,1,2,3",
1762 "UMask": "0x1",
1763 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.SNOOP_HIT_NO_FWD",
1764 "MSRIndex": "0x1a6,0x1a7",
1765 "SampleAfterValue": "100003",
1766 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1767 "Offcore": "1",
1768 "CounterHTOff": "0,1,2,3"
1769 },
1770 {
1771 "EventCode": "0xB7, 0xBB",
1772 "MSRValue": "0x10003c0040 ",
1773 "Counter": "0,1,2,3",
1774 "UMask": "0x1",
1775 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.SNOOP_HITM",
1776 "MSRIndex": "0x1a6,0x1a7",
1777 "SampleAfterValue": "100003",
1778 "BriefDescription": "PF_L2_CODE_RD & L3_HIT & SNOOP_HITM",
1779 "Offcore": "1",
1780 "CounterHTOff": "0,1,2,3"
1781 },
1782 {
1783 "EventCode": "0xB7, 0xBB",
1784 "MSRValue": "0x3f803c0040 ",
1785 "Counter": "0,1,2,3",
1786 "UMask": "0x1",
1787 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.ANY_SNOOP",
1788 "MSRIndex": "0x1a6,0x1a7",
1789 "SampleAfterValue": "100003",
1790 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3.",
1791 "Offcore": "1",
1792 "CounterHTOff": "0,1,2,3"
1793 },
1794 {
1795 "EventCode": "0xB7, 0xBB",
1796 "MSRValue": "0x0000010080 ",
1797 "Counter": "0,1,2,3",
1798 "UMask": "0x1",
1799 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.ANY_RESPONSE",
1800 "MSRIndex": "0x1a6,0x1a7",
1801 "SampleAfterValue": "100003",
1802 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that have any response type.",
1803 "Offcore": "1",
1804 "CounterHTOff": "0,1,2,3"
1805 },
1806 {
1807 "EventCode": "0xB7, 0xBB",
1808 "MSRValue": "0x0080020080 ",
1809 "Counter": "0,1,2,3",
1810 "UMask": "0x1",
1811 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_NONE",
1812 "MSRIndex": "0x1a6,0x1a7",
1813 "SampleAfterValue": "100003",
1814 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_NONE",
1815 "Offcore": "1",
1816 "CounterHTOff": "0,1,2,3"
1817 },
1818 {
1819 "EventCode": "0xB7, 0xBB",
1820 "MSRValue": "0x0100020080 ",
1821 "Counter": "0,1,2,3",
1822 "UMask": "0x1",
1823 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1824 "MSRIndex": "0x1a6,0x1a7",
1825 "SampleAfterValue": "100003",
1826 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1827 "Offcore": "1",
1828 "CounterHTOff": "0,1,2,3"
1829 },
1830 {
1831 "EventCode": "0xB7, 0xBB",
1832 "MSRValue": "0x0200020080 ",
1833 "Counter": "0,1,2,3",
1834 "UMask": "0x1",
1835 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_MISS",
1836 "MSRIndex": "0x1a6,0x1a7",
1837 "SampleAfterValue": "100003",
1838 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_MISS",
1839 "Offcore": "1",
1840 "CounterHTOff": "0,1,2,3"
1841 },
1842 {
1843 "EventCode": "0xB7, 0xBB",
1844 "MSRValue": "0x0400020080 ",
1845 "Counter": "0,1,2,3",
1846 "UMask": "0x1",
1847 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1848 "MSRIndex": "0x1a6,0x1a7",
1849 "SampleAfterValue": "100003",
1850 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1851 "Offcore": "1",
1852 "CounterHTOff": "0,1,2,3"
1853 },
1854 {
1855 "EventCode": "0xB7, 0xBB",
1856 "MSRValue": "0x1000020080 ",
1857 "Counter": "0,1,2,3",
1858 "UMask": "0x1",
1859 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_HITM",
1860 "MSRIndex": "0x1a6,0x1a7",
1861 "SampleAfterValue": "100003",
1862 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_HITM",
1863 "Offcore": "1",
1864 "CounterHTOff": "0,1,2,3"
1865 },
1866 {
1867 "EventCode": "0xB7, 0xBB",
1868 "MSRValue": "0x3f80020080 ",
1869 "Counter": "0,1,2,3",
1870 "UMask": "0x1",
1871 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.ANY_SNOOP",
1872 "MSRIndex": "0x1a6,0x1a7",
1873 "SampleAfterValue": "100003",
1874 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & ANY_SNOOP",
1875 "Offcore": "1",
1876 "CounterHTOff": "0,1,2,3"
1877 },
1878 {
1879 "EventCode": "0xB7, 0xBB",
1880 "MSRValue": "0x00803c0080 ",
1881 "Counter": "0,1,2,3",
1882 "UMask": "0x1",
1883 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_NONE",
1884 "MSRIndex": "0x1a6,0x1a7",
1885 "SampleAfterValue": "100003",
1886 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 with no details on snoop-related information.",
1887 "Offcore": "1",
1888 "CounterHTOff": "0,1,2,3"
1889 },
1890 {
1891 "EventCode": "0xB7, 0xBB",
1892 "MSRValue": "0x01003c0080 ",
1893 "Counter": "0,1,2,3",
1894 "UMask": "0x1",
1895 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_NOT_NEEDED",
1896 "MSRIndex": "0x1a6,0x1a7",
1897 "SampleAfterValue": "100003",
1898 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1899 "Offcore": "1",
1900 "CounterHTOff": "0,1,2,3"
1901 },
1902 {
1903 "EventCode": "0xB7, 0xBB",
1904 "MSRValue": "0x02003c0080 ",
1905 "Counter": "0,1,2,3",
1906 "UMask": "0x1",
1907 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_MISS",
1908 "MSRIndex": "0x1a6,0x1a7",
1909 "SampleAfterValue": "100003",
1910 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 with a snoop miss response.",
1911 "Offcore": "1",
1912 "CounterHTOff": "0,1,2,3"
1913 },
1914 {
1915 "EventCode": "0xB7, 0xBB",
1916 "MSRValue": "0x04003c0080 ",
1917 "Counter": "0,1,2,3",
1918 "UMask": "0x1",
1919 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_HIT_NO_FWD",
1920 "MSRIndex": "0x1a6,0x1a7",
1921 "SampleAfterValue": "100003",
1922 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1923 "Offcore": "1",
1924 "CounterHTOff": "0,1,2,3"
1925 },
1926 {
1927 "EventCode": "0xB7, 0xBB",
1928 "MSRValue": "0x10003c0080 ",
1929 "Counter": "0,1,2,3",
1930 "UMask": "0x1",
1931 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_HITM",
1932 "MSRIndex": "0x1a6,0x1a7",
1933 "SampleAfterValue": "100003",
1934 "BriefDescription": "PF_L3_DATA_RD & L3_HIT & SNOOP_HITM",
1935 "Offcore": "1",
1936 "CounterHTOff": "0,1,2,3"
1937 },
1938 {
1939 "EventCode": "0xB7, 0xBB",
1940 "MSRValue": "0x3f803c0080 ",
1941 "Counter": "0,1,2,3",
1942 "UMask": "0x1",
1943 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.ANY_SNOOP",
1944 "MSRIndex": "0x1a6,0x1a7",
1945 "SampleAfterValue": "100003",
1946 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3.",
1947 "Offcore": "1",
1948 "CounterHTOff": "0,1,2,3"
1949 },
1950 {
1951 "EventCode": "0xB7, 0xBB",
1952 "MSRValue": "0x0000010100 ",
1953 "Counter": "0,1,2,3",
1954 "UMask": "0x1",
1955 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.ANY_RESPONSE",
1956 "MSRIndex": "0x1a6,0x1a7",
1957 "SampleAfterValue": "100003",
1958 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that have any response type.",
1959 "Offcore": "1",
1960 "CounterHTOff": "0,1,2,3"
1961 },
1962 {
1963 "EventCode": "0xB7, 0xBB",
1964 "MSRValue": "0x0080020100 ",
1965 "Counter": "0,1,2,3",
1966 "UMask": "0x1",
1967 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_NONE",
1968 "MSRIndex": "0x1a6,0x1a7",
1969 "SampleAfterValue": "100003",
1970 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_NONE",
1971 "Offcore": "1",
1972 "CounterHTOff": "0,1,2,3"
1973 },
1974 {
1975 "EventCode": "0xB7, 0xBB",
1976 "MSRValue": "0x0100020100 ",
1977 "Counter": "0,1,2,3",
1978 "UMask": "0x1",
1979 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1980 "MSRIndex": "0x1a6,0x1a7",
1981 "SampleAfterValue": "100003",
1982 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1983 "Offcore": "1",
1984 "CounterHTOff": "0,1,2,3"
1985 },
1986 {
1987 "EventCode": "0xB7, 0xBB",
1988 "MSRValue": "0x0200020100 ",
1989 "Counter": "0,1,2,3",
1990 "UMask": "0x1",
1991 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_MISS",
1992 "MSRIndex": "0x1a6,0x1a7",
1993 "SampleAfterValue": "100003",
1994 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_MISS",
1995 "Offcore": "1",
1996 "CounterHTOff": "0,1,2,3"
1997 },
1998 {
1999 "EventCode": "0xB7, 0xBB",
2000 "MSRValue": "0x0400020100 ",
2001 "Counter": "0,1,2,3",
2002 "UMask": "0x1",
2003 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2004 "MSRIndex": "0x1a6,0x1a7",
2005 "SampleAfterValue": "100003",
2006 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2007 "Offcore": "1",
2008 "CounterHTOff": "0,1,2,3"
2009 },
2010 {
2011 "EventCode": "0xB7, 0xBB",
2012 "MSRValue": "0x1000020100 ",
2013 "Counter": "0,1,2,3",
2014 "UMask": "0x1",
2015 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_HITM",
2016 "MSRIndex": "0x1a6,0x1a7",
2017 "SampleAfterValue": "100003",
2018 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_HITM",
2019 "Offcore": "1",
2020 "CounterHTOff": "0,1,2,3"
2021 },
2022 {
2023 "EventCode": "0xB7, 0xBB",
2024 "MSRValue": "0x3f80020100 ",
2025 "Counter": "0,1,2,3",
2026 "UMask": "0x1",
2027 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.ANY_SNOOP",
2028 "MSRIndex": "0x1a6,0x1a7",
2029 "SampleAfterValue": "100003",
2030 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & ANY_SNOOP",
2031 "Offcore": "1",
2032 "CounterHTOff": "0,1,2,3"
2033 },
2034 {
2035 "EventCode": "0xB7, 0xBB",
2036 "MSRValue": "0x00803c0100 ",
2037 "Counter": "0,1,2,3",
2038 "UMask": "0x1",
2039 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_NONE",
2040 "MSRIndex": "0x1a6,0x1a7",
2041 "SampleAfterValue": "100003",
2042 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 with no details on snoop-related information.",
2043 "Offcore": "1",
2044 "CounterHTOff": "0,1,2,3"
2045 },
2046 {
2047 "EventCode": "0xB7, 0xBB",
2048 "MSRValue": "0x01003c0100 ",
2049 "Counter": "0,1,2,3",
2050 "UMask": "0x1",
2051 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_NOT_NEEDED",
2052 "MSRIndex": "0x1a6,0x1a7",
2053 "SampleAfterValue": "100003",
2054 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2055 "Offcore": "1",
2056 "CounterHTOff": "0,1,2,3"
2057 },
2058 {
2059 "EventCode": "0xB7, 0xBB",
2060 "MSRValue": "0x02003c0100 ",
2061 "Counter": "0,1,2,3",
2062 "UMask": "0x1",
2063 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_MISS",
2064 "MSRIndex": "0x1a6,0x1a7",
2065 "SampleAfterValue": "100003",
2066 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 with a snoop miss response.",
2067 "Offcore": "1",
2068 "CounterHTOff": "0,1,2,3"
2069 },
2070 {
2071 "EventCode": "0xB7, 0xBB",
2072 "MSRValue": "0x04003c0100 ",
2073 "Counter": "0,1,2,3",
2074 "UMask": "0x1",
2075 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_HIT_NO_FWD",
2076 "MSRIndex": "0x1a6,0x1a7",
2077 "SampleAfterValue": "100003",
2078 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2079 "Offcore": "1",
2080 "CounterHTOff": "0,1,2,3"
2081 },
2082 {
2083 "EventCode": "0xB7, 0xBB",
2084 "MSRValue": "0x10003c0100 ",
2085 "Counter": "0,1,2,3",
2086 "UMask": "0x1",
2087 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_HITM",
2088 "MSRIndex": "0x1a6,0x1a7",
2089 "SampleAfterValue": "100003",
2090 "BriefDescription": "PF_L3_RFO & L3_HIT & SNOOP_HITM",
2091 "Offcore": "1",
2092 "CounterHTOff": "0,1,2,3"
2093 },
2094 {
2095 "EventCode": "0xB7, 0xBB",
2096 "MSRValue": "0x3f803c0100 ",
2097 "Counter": "0,1,2,3",
2098 "UMask": "0x1",
2099 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.ANY_SNOOP",
2100 "MSRIndex": "0x1a6,0x1a7",
2101 "SampleAfterValue": "100003",
2102 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3.",
2103 "Offcore": "1",
2104 "CounterHTOff": "0,1,2,3"
2105 },
2106 {
2107 "EventCode": "0xB7, 0xBB",
2108 "MSRValue": "0x0000010200 ",
2109 "Counter": "0,1,2,3",
2110 "UMask": "0x1",
2111 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.ANY_RESPONSE",
2112 "MSRIndex": "0x1a6,0x1a7",
2113 "SampleAfterValue": "100003",
2114 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that have any response type.",
2115 "Offcore": "1",
2116 "CounterHTOff": "0,1,2,3"
2117 },
2118 {
2119 "EventCode": "0xB7, 0xBB",
2120 "MSRValue": "0x0080020200 ",
2121 "Counter": "0,1,2,3",
2122 "UMask": "0x1",
2123 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.SUPPLIER_NONE.SNOOP_NONE",
2124 "MSRIndex": "0x1a6,0x1a7",
2125 "SampleAfterValue": "100003",
2126 "BriefDescription": "PF_L3_CODE_RD & SUPPLIER_NONE & SNOOP_NONE",
2127 "Offcore": "1",
2128 "CounterHTOff": "0,1,2,3"
2129 },
2130 {
2131 "EventCode": "0xB7, 0xBB",
2132 "MSRValue": "0x0100020200 ",
2133 "Counter": "0,1,2,3",
2134 "UMask": "0x1",
2135 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2136 "MSRIndex": "0x1a6,0x1a7",
2137 "SampleAfterValue": "100003",
2138 "BriefDescription": "PF_L3_CODE_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2139 "Offcore": "1",
2140 "CounterHTOff": "0,1,2,3"
2141 },
2142 {
2143 "EventCode": "0xB7, 0xBB",
2144 "MSRValue": "0x0200020200 ",
2145 "Counter": "0,1,2,3",
2146 "UMask": "0x1",
2147 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.SUPPLIER_NONE.SNOOP_MISS",
2148 "MSRIndex": "0x1a6,0x1a7",
2149 "SampleAfterValue": "100003",
2150 "BriefDescription": "PF_L3_CODE_RD & SUPPLIER_NONE & SNOOP_MISS",
2151 "Offcore": "1",
2152 "CounterHTOff": "0,1,2,3"
2153 },
2154 {
2155 "EventCode": "0xB7, 0xBB",
2156 "MSRValue": "0x0400020200 ",
2157 "Counter": "0,1,2,3",
2158 "UMask": "0x1",
2159 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2160 "MSRIndex": "0x1a6,0x1a7",
2161 "SampleAfterValue": "100003",
2162 "BriefDescription": "PF_L3_CODE_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2163 "Offcore": "1",
2164 "CounterHTOff": "0,1,2,3"
2165 },
2166 {
2167 "EventCode": "0xB7, 0xBB",
2168 "MSRValue": "0x1000020200 ",
2169 "Counter": "0,1,2,3",
2170 "UMask": "0x1",
2171 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.SUPPLIER_NONE.SNOOP_HITM",
2172 "MSRIndex": "0x1a6,0x1a7",
2173 "SampleAfterValue": "100003",
2174 "BriefDescription": "PF_L3_CODE_RD & SUPPLIER_NONE & SNOOP_HITM",
2175 "Offcore": "1",
2176 "CounterHTOff": "0,1,2,3"
2177 },
2178 {
2179 "EventCode": "0xB7, 0xBB",
2180 "MSRValue": "0x3f80020200 ",
2181 "Counter": "0,1,2,3",
2182 "UMask": "0x1",
2183 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.SUPPLIER_NONE.ANY_SNOOP",
2184 "MSRIndex": "0x1a6,0x1a7",
2185 "SampleAfterValue": "100003",
2186 "BriefDescription": "PF_L3_CODE_RD & SUPPLIER_NONE & ANY_SNOOP",
2187 "Offcore": "1",
2188 "CounterHTOff": "0,1,2,3"
2189 },
2190 {
2191 "EventCode": "0xB7, 0xBB",
2192 "MSRValue": "0x00803c0200 ",
2193 "Counter": "0,1,2,3",
2194 "UMask": "0x1",
2195 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.SNOOP_NONE",
2196 "MSRIndex": "0x1a6,0x1a7",
2197 "SampleAfterValue": "100003",
2198 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3 with no details on snoop-related information.",
2199 "Offcore": "1",
2200 "CounterHTOff": "0,1,2,3"
2201 },
2202 {
2203 "EventCode": "0xB7, 0xBB",
2204 "MSRValue": "0x01003c0200 ",
2205 "Counter": "0,1,2,3",
2206 "UMask": "0x1",
2207 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.SNOOP_NOT_NEEDED",
2208 "MSRIndex": "0x1a6,0x1a7",
2209 "SampleAfterValue": "100003",
2210 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2211 "Offcore": "1",
2212 "CounterHTOff": "0,1,2,3"
2213 },
2214 {
2215 "EventCode": "0xB7, 0xBB",
2216 "MSRValue": "0x02003c0200 ",
2217 "Counter": "0,1,2,3",
2218 "UMask": "0x1",
2219 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.SNOOP_MISS",
2220 "MSRIndex": "0x1a6,0x1a7",
2221 "SampleAfterValue": "100003",
2222 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3 with a snoop miss response.",
2223 "Offcore": "1",
2224 "CounterHTOff": "0,1,2,3"
2225 },
2226 {
2227 "EventCode": "0xB7, 0xBB",
2228 "MSRValue": "0x04003c0200 ",
2229 "Counter": "0,1,2,3",
2230 "UMask": "0x1",
2231 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.SNOOP_HIT_NO_FWD",
2232 "MSRIndex": "0x1a6,0x1a7",
2233 "SampleAfterValue": "100003",
2234 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2235 "Offcore": "1",
2236 "CounterHTOff": "0,1,2,3"
2237 },
2238 {
2239 "EventCode": "0xB7, 0xBB",
2240 "MSRValue": "0x10003c0200 ",
2241 "Counter": "0,1,2,3",
2242 "UMask": "0x1",
2243 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.SNOOP_HITM",
2244 "MSRIndex": "0x1a6,0x1a7",
2245 "SampleAfterValue": "100003",
2246 "BriefDescription": "PF_L3_CODE_RD & L3_HIT & SNOOP_HITM",
2247 "Offcore": "1",
2248 "CounterHTOff": "0,1,2,3"
2249 },
2250 {
2251 "EventCode": "0xB7, 0xBB",
2252 "MSRValue": "0x3f803c0200 ",
2253 "Counter": "0,1,2,3",
2254 "UMask": "0x1",
2255 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.ANY_SNOOP",
2256 "MSRIndex": "0x1a6,0x1a7",
2257 "SampleAfterValue": "100003",
2258 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3.",
2259 "Offcore": "1",
2260 "CounterHTOff": "0,1,2,3"
2261 },
2262 {
2263 "EventCode": "0xB7, 0xBB",
2264 "MSRValue": "0x0000018000 ",
2265 "Counter": "0,1,2,3",
2266 "UMask": "0x1",
2267 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_RESPONSE",
2268 "MSRIndex": "0x1a6,0x1a7",
2269 "SampleAfterValue": "100003",
2270 "BriefDescription": "Counts any other requests that have any response type.",
2271 "Offcore": "1",
2272 "CounterHTOff": "0,1,2,3"
2273 },
2274 {
2275 "EventCode": "0xB7, 0xBB",
2276 "MSRValue": "0x0080028000 ",
2277 "Counter": "0,1,2,3",
2278 "UMask": "0x1",
2279 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_NONE",
2280 "MSRIndex": "0x1a6,0x1a7",
2281 "SampleAfterValue": "100003",
2282 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_NONE",
2283 "Offcore": "1",
2284 "CounterHTOff": "0,1,2,3"
2285 },
2286 {
2287 "EventCode": "0xB7, 0xBB",
2288 "MSRValue": "0x0100028000 ",
2289 "Counter": "0,1,2,3",
2290 "UMask": "0x1",
2291 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2292 "MSRIndex": "0x1a6,0x1a7",
2293 "SampleAfterValue": "100003",
2294 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2295 "Offcore": "1",
2296 "CounterHTOff": "0,1,2,3"
2297 },
2298 {
2299 "EventCode": "0xB7, 0xBB",
2300 "MSRValue": "0x0200028000 ",
2301 "Counter": "0,1,2,3",
2302 "UMask": "0x1",
2303 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_MISS",
2304 "MSRIndex": "0x1a6,0x1a7",
2305 "SampleAfterValue": "100003",
2306 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_MISS",
2307 "Offcore": "1",
2308 "CounterHTOff": "0,1,2,3"
2309 },
2310 {
2311 "EventCode": "0xB7, 0xBB",
2312 "MSRValue": "0x0400028000 ",
2313 "Counter": "0,1,2,3",
2314 "UMask": "0x1",
2315 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2316 "MSRIndex": "0x1a6,0x1a7",
2317 "SampleAfterValue": "100003",
2318 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2319 "Offcore": "1",
2320 "CounterHTOff": "0,1,2,3"
2321 },
2322 {
2323 "EventCode": "0xB7, 0xBB",
2324 "MSRValue": "0x1000028000 ",
2325 "Counter": "0,1,2,3",
2326 "UMask": "0x1",
2327 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_HITM",
2328 "MSRIndex": "0x1a6,0x1a7",
2329 "SampleAfterValue": "100003",
2330 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_HITM",
2331 "Offcore": "1",
2332 "CounterHTOff": "0,1,2,3"
2333 },
2334 {
2335 "EventCode": "0xB7, 0xBB",
2336 "MSRValue": "0x3f80028000 ",
2337 "Counter": "0,1,2,3",
2338 "UMask": "0x1",
2339 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.ANY_SNOOP",
2340 "MSRIndex": "0x1a6,0x1a7",
2341 "SampleAfterValue": "100003",
2342 "BriefDescription": "OTHER & SUPPLIER_NONE & ANY_SNOOP",
2343 "Offcore": "1",
2344 "CounterHTOff": "0,1,2,3"
2345 },
2346 {
2347 "EventCode": "0xB7, 0xBB",
2348 "MSRValue": "0x00803c8000 ",
2349 "Counter": "0,1,2,3",
2350 "UMask": "0x1",
2351 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_NONE",
2352 "MSRIndex": "0x1a6,0x1a7",
2353 "SampleAfterValue": "100003",
2354 "BriefDescription": "Counts any other requests that hit in the L3 with no details on snoop-related information.",
2355 "Offcore": "1",
2356 "CounterHTOff": "0,1,2,3"
2357 },
2358 {
2359 "EventCode": "0xB7, 0xBB",
2360 "MSRValue": "0x01003c8000 ",
2361 "Counter": "0,1,2,3",
2362 "UMask": "0x1",
2363 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_NOT_NEEDED",
2364 "MSRIndex": "0x1a6,0x1a7",
2365 "SampleAfterValue": "100003",
2366 "BriefDescription": "Counts any other requests that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2367 "Offcore": "1",
2368 "CounterHTOff": "0,1,2,3"
2369 },
2370 {
2371 "EventCode": "0xB7, 0xBB",
2372 "MSRValue": "0x02003c8000 ",
2373 "Counter": "0,1,2,3",
2374 "UMask": "0x1",
2375 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_MISS",
2376 "MSRIndex": "0x1a6,0x1a7",
2377 "SampleAfterValue": "100003",
2378 "BriefDescription": "Counts any other requests that hit in the L3 with a snoop miss response.",
2379 "Offcore": "1",
2380 "CounterHTOff": "0,1,2,3"
2381 },
2382 {
2383 "EventCode": "0xB7, 0xBB",
2384 "MSRValue": "0x04003c8000 ",
2385 "Counter": "0,1,2,3",
2386 "UMask": "0x1",
2387 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_HIT_NO_FWD",
2388 "MSRIndex": "0x1a6,0x1a7",
2389 "SampleAfterValue": "100003",
2390 "BriefDescription": "Counts any other requests that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2391 "Offcore": "1",
2392 "CounterHTOff": "0,1,2,3"
2393 },
2394 {
2395 "EventCode": "0xB7, 0xBB",
2396 "MSRValue": "0x10003c8000 ",
2397 "Counter": "0,1,2,3",
2398 "UMask": "0x1",
2399 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_HITM",
2400 "MSRIndex": "0x1a6,0x1a7",
2401 "SampleAfterValue": "100003",
2402 "BriefDescription": "OTHER & L3_HIT & SNOOP_HITM",
2403 "Offcore": "1",
2404 "CounterHTOff": "0,1,2,3"
2405 },
2406 {
2407 "EventCode": "0xB7, 0xBB",
2408 "MSRValue": "0x3f803c8000 ",
2409 "Counter": "0,1,2,3",
2410 "UMask": "0x1",
2411 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.ANY_SNOOP",
2412 "MSRIndex": "0x1a6,0x1a7",
2413 "SampleAfterValue": "100003",
2414 "BriefDescription": "Counts any other requests that hit in the L3.",
2415 "Offcore": "1",
2416 "CounterHTOff": "0,1,2,3"
2417 },
2418 {
2419 "EventCode": "0xB7, 0xBB",
2420 "MSRValue": "0x0000010090 ",
2421 "Counter": "0,1,2,3",
2422 "UMask": "0x1",
2423 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.ANY_RESPONSE",
2424 "MSRIndex": "0x1a6,0x1a7",
2425 "SampleAfterValue": "100003",
2426 "BriefDescription": "Counts all prefetch data reads that have any response type.",
2427 "Offcore": "1",
2428 "CounterHTOff": "0,1,2,3"
2429 },
2430 {
2431 "EventCode": "0xB7, 0xBB",
2432 "MSRValue": "0x0080020090 ",
2433 "Counter": "0,1,2,3",
2434 "UMask": "0x1",
2435 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.SUPPLIER_NONE.SNOOP_NONE",
2436 "MSRIndex": "0x1a6,0x1a7",
2437 "SampleAfterValue": "100003",
2438 "BriefDescription": "ALL_PF_DATA_RD & SUPPLIER_NONE & SNOOP_NONE",
2439 "Offcore": "1",
2440 "CounterHTOff": "0,1,2,3"
2441 },
2442 {
2443 "EventCode": "0xB7, 0xBB",
2444 "MSRValue": "0x0100020090 ",
2445 "Counter": "0,1,2,3",
2446 "UMask": "0x1",
2447 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2448 "MSRIndex": "0x1a6,0x1a7",
2449 "SampleAfterValue": "100003",
2450 "BriefDescription": "ALL_PF_DATA_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2451 "Offcore": "1",
2452 "CounterHTOff": "0,1,2,3"
2453 },
2454 {
2455 "EventCode": "0xB7, 0xBB",
2456 "MSRValue": "0x0200020090 ",
2457 "Counter": "0,1,2,3",
2458 "UMask": "0x1",
2459 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.SUPPLIER_NONE.SNOOP_MISS",
2460 "MSRIndex": "0x1a6,0x1a7",
2461 "SampleAfterValue": "100003",
2462 "BriefDescription": "ALL_PF_DATA_RD & SUPPLIER_NONE & SNOOP_MISS",
2463 "Offcore": "1",
2464 "CounterHTOff": "0,1,2,3"
2465 },
2466 {
2467 "EventCode": "0xB7, 0xBB",
2468 "MSRValue": "0x0400020090 ",
2469 "Counter": "0,1,2,3",
2470 "UMask": "0x1",
2471 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2472 "MSRIndex": "0x1a6,0x1a7",
2473 "SampleAfterValue": "100003",
2474 "BriefDescription": "ALL_PF_DATA_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2475 "Offcore": "1",
2476 "CounterHTOff": "0,1,2,3"
2477 },
2478 {
2479 "EventCode": "0xB7, 0xBB",
2480 "MSRValue": "0x1000020090 ",
2481 "Counter": "0,1,2,3",
2482 "UMask": "0x1",
2483 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.SUPPLIER_NONE.SNOOP_HITM",
2484 "MSRIndex": "0x1a6,0x1a7",
2485 "SampleAfterValue": "100003",
2486 "BriefDescription": "ALL_PF_DATA_RD & SUPPLIER_NONE & SNOOP_HITM",
2487 "Offcore": "1",
2488 "CounterHTOff": "0,1,2,3"
2489 },
2490 {
2491 "EventCode": "0xB7, 0xBB",
2492 "MSRValue": "0x3f80020090 ",
2493 "Counter": "0,1,2,3",
2494 "UMask": "0x1",
2495 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.SUPPLIER_NONE.ANY_SNOOP",
2496 "MSRIndex": "0x1a6,0x1a7",
2497 "SampleAfterValue": "100003",
2498 "BriefDescription": "ALL_PF_DATA_RD & SUPPLIER_NONE & ANY_SNOOP",
2499 "Offcore": "1",
2500 "CounterHTOff": "0,1,2,3"
2501 },
2502 {
2503 "EventCode": "0xB7, 0xBB",
2504 "MSRValue": "0x00803c0090 ",
2505 "Counter": "0,1,2,3",
2506 "UMask": "0x1",
2507 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_HIT.SNOOP_NONE",
2508 "MSRIndex": "0x1a6,0x1a7",
2509 "SampleAfterValue": "100003",
2510 "BriefDescription": "Counts all prefetch data reads that hit in the L3 with no details on snoop-related information.",
2511 "Offcore": "1",
2512 "CounterHTOff": "0,1,2,3"
2513 },
2514 {
2515 "EventCode": "0xB7, 0xBB",
2516 "MSRValue": "0x01003c0090 ",
2517 "Counter": "0,1,2,3",
2518 "UMask": "0x1",
2519 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_HIT.SNOOP_NOT_NEEDED",
2520 "MSRIndex": "0x1a6,0x1a7",
2521 "SampleAfterValue": "100003",
2522 "BriefDescription": "Counts all prefetch data reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2523 "Offcore": "1",
2524 "CounterHTOff": "0,1,2,3"
2525 },
2526 {
2527 "EventCode": "0xB7, 0xBB",
2528 "MSRValue": "0x02003c0090 ",
2529 "Counter": "0,1,2,3",
2530 "UMask": "0x1",
2531 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_HIT.SNOOP_MISS",
2532 "MSRIndex": "0x1a6,0x1a7",
2533 "SampleAfterValue": "100003",
2534 "BriefDescription": "Counts all prefetch data reads that hit in the L3 with a snoop miss response.",
2535 "Offcore": "1",
2536 "CounterHTOff": "0,1,2,3"
2537 },
2538 {
2539 "EventCode": "0xB7, 0xBB",
2540 "MSRValue": "0x04003c0090 ",
2541 "Counter": "0,1,2,3",
2542 "UMask": "0x1",
2543 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_HIT.SNOOP_HIT_NO_FWD",
2544 "MSRIndex": "0x1a6,0x1a7",
2545 "SampleAfterValue": "100003",
2546 "BriefDescription": "Counts all prefetch data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2547 "Offcore": "1",
2548 "CounterHTOff": "0,1,2,3"
2549 },
2550 {
2551 "EventCode": "0xB7, 0xBB",
2552 "MSRValue": "0x10003c0090 ",
2553 "Counter": "0,1,2,3",
2554 "UMask": "0x1",
2555 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_HIT.SNOOP_HITM",
2556 "MSRIndex": "0x1a6,0x1a7",
2557 "SampleAfterValue": "100003",
2558 "BriefDescription": "ALL_PF_DATA_RD & L3_HIT & SNOOP_HITM",
2559 "Offcore": "1",
2560 "CounterHTOff": "0,1,2,3"
2561 },
2562 {
2563 "EventCode": "0xB7, 0xBB",
2564 "MSRValue": "0x3f803c0090 ",
2565 "Counter": "0,1,2,3",
2566 "UMask": "0x1",
2567 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_HIT.ANY_SNOOP",
2568 "MSRIndex": "0x1a6,0x1a7",
2569 "SampleAfterValue": "100003",
2570 "BriefDescription": "Counts all prefetch data reads that hit in the L3.",
2571 "Offcore": "1",
2572 "CounterHTOff": "0,1,2,3"
2573 },
2574 {
2575 "EventCode": "0xB7, 0xBB",
2576 "MSRValue": "0x0000010120 ",
2577 "Counter": "0,1,2,3",
2578 "UMask": "0x1",
2579 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.ANY_RESPONSE",
2580 "MSRIndex": "0x1a6,0x1a7",
2581 "SampleAfterValue": "100003",
2582 "BriefDescription": "Counts prefetch RFOs that have any response type.",
2583 "Offcore": "1",
2584 "CounterHTOff": "0,1,2,3"
2585 },
2586 {
2587 "EventCode": "0xB7, 0xBB",
2588 "MSRValue": "0x0080020120 ",
2589 "Counter": "0,1,2,3",
2590 "UMask": "0x1",
2591 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.SUPPLIER_NONE.SNOOP_NONE",
2592 "MSRIndex": "0x1a6,0x1a7",
2593 "SampleAfterValue": "100003",
2594 "BriefDescription": "ALL_PF_RFO & SUPPLIER_NONE & SNOOP_NONE",
2595 "Offcore": "1",
2596 "CounterHTOff": "0,1,2,3"
2597 },
2598 {
2599 "EventCode": "0xB7, 0xBB",
2600 "MSRValue": "0x0100020120 ",
2601 "Counter": "0,1,2,3",
2602 "UMask": "0x1",
2603 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2604 "MSRIndex": "0x1a6,0x1a7",
2605 "SampleAfterValue": "100003",
2606 "BriefDescription": "ALL_PF_RFO & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2607 "Offcore": "1",
2608 "CounterHTOff": "0,1,2,3"
2609 },
2610 {
2611 "EventCode": "0xB7, 0xBB",
2612 "MSRValue": "0x0200020120 ",
2613 "Counter": "0,1,2,3",
2614 "UMask": "0x1",
2615 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.SUPPLIER_NONE.SNOOP_MISS",
2616 "MSRIndex": "0x1a6,0x1a7",
2617 "SampleAfterValue": "100003",
2618 "BriefDescription": "ALL_PF_RFO & SUPPLIER_NONE & SNOOP_MISS",
2619 "Offcore": "1",
2620 "CounterHTOff": "0,1,2,3"
2621 },
2622 {
2623 "EventCode": "0xB7, 0xBB",
2624 "MSRValue": "0x0400020120 ",
2625 "Counter": "0,1,2,3",
2626 "UMask": "0x1",
2627 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2628 "MSRIndex": "0x1a6,0x1a7",
2629 "SampleAfterValue": "100003",
2630 "BriefDescription": "ALL_PF_RFO & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2631 "Offcore": "1",
2632 "CounterHTOff": "0,1,2,3"
2633 },
2634 {
2635 "EventCode": "0xB7, 0xBB",
2636 "MSRValue": "0x1000020120 ",
2637 "Counter": "0,1,2,3",
2638 "UMask": "0x1",
2639 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.SUPPLIER_NONE.SNOOP_HITM",
2640 "MSRIndex": "0x1a6,0x1a7",
2641 "SampleAfterValue": "100003",
2642 "BriefDescription": "ALL_PF_RFO & SUPPLIER_NONE & SNOOP_HITM",
2643 "Offcore": "1",
2644 "CounterHTOff": "0,1,2,3"
2645 },
2646 {
2647 "EventCode": "0xB7, 0xBB",
2648 "MSRValue": "0x3f80020120 ",
2649 "Counter": "0,1,2,3",
2650 "UMask": "0x1",
2651 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.SUPPLIER_NONE.ANY_SNOOP",
2652 "MSRIndex": "0x1a6,0x1a7",
2653 "SampleAfterValue": "100003",
2654 "BriefDescription": "ALL_PF_RFO & SUPPLIER_NONE & ANY_SNOOP",
2655 "Offcore": "1",
2656 "CounterHTOff": "0,1,2,3"
2657 },
2658 {
2659 "EventCode": "0xB7, 0xBB",
2660 "MSRValue": "0x00803c0120 ",
2661 "Counter": "0,1,2,3",
2662 "UMask": "0x1",
2663 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_HIT.SNOOP_NONE",
2664 "MSRIndex": "0x1a6,0x1a7",
2665 "SampleAfterValue": "100003",
2666 "BriefDescription": "Counts prefetch RFOs that hit in the L3 with no details on snoop-related information.",
2667 "Offcore": "1",
2668 "CounterHTOff": "0,1,2,3"
2669 },
2670 {
2671 "EventCode": "0xB7, 0xBB",
2672 "MSRValue": "0x01003c0120 ",
2673 "Counter": "0,1,2,3",
2674 "UMask": "0x1",
2675 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_HIT.SNOOP_NOT_NEEDED",
2676 "MSRIndex": "0x1a6,0x1a7",
2677 "SampleAfterValue": "100003",
2678 "BriefDescription": "Counts prefetch RFOs that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2679 "Offcore": "1",
2680 "CounterHTOff": "0,1,2,3"
2681 },
2682 {
2683 "EventCode": "0xB7, 0xBB",
2684 "MSRValue": "0x02003c0120 ",
2685 "Counter": "0,1,2,3",
2686 "UMask": "0x1",
2687 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_HIT.SNOOP_MISS",
2688 "MSRIndex": "0x1a6,0x1a7",
2689 "SampleAfterValue": "100003",
2690 "BriefDescription": "Counts prefetch RFOs that hit in the L3 with a snoop miss response.",
2691 "Offcore": "1",
2692 "CounterHTOff": "0,1,2,3"
2693 },
2694 {
2695 "EventCode": "0xB7, 0xBB",
2696 "MSRValue": "0x04003c0120 ",
2697 "Counter": "0,1,2,3",
2698 "UMask": "0x1",
2699 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_HIT.SNOOP_HIT_NO_FWD",
2700 "MSRIndex": "0x1a6,0x1a7",
2701 "SampleAfterValue": "100003",
2702 "BriefDescription": "Counts prefetch RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2703 "Offcore": "1",
2704 "CounterHTOff": "0,1,2,3"
2705 },
2706 {
2707 "EventCode": "0xB7, 0xBB",
2708 "MSRValue": "0x10003c0120 ",
2709 "Counter": "0,1,2,3",
2710 "UMask": "0x1",
2711 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_HIT.SNOOP_HITM",
2712 "MSRIndex": "0x1a6,0x1a7",
2713 "SampleAfterValue": "100003",
2714 "BriefDescription": "ALL_PF_RFO & L3_HIT & SNOOP_HITM",
2715 "Offcore": "1",
2716 "CounterHTOff": "0,1,2,3"
2717 },
2718 {
2719 "EventCode": "0xB7, 0xBB",
2720 "MSRValue": "0x3f803c0120 ",
2721 "Counter": "0,1,2,3",
2722 "UMask": "0x1",
2723 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_HIT.ANY_SNOOP",
2724 "MSRIndex": "0x1a6,0x1a7",
2725 "SampleAfterValue": "100003",
2726 "BriefDescription": "Counts prefetch RFOs that hit in the L3.",
2727 "Offcore": "1",
2728 "CounterHTOff": "0,1,2,3"
2729 },
2730 {
2731 "EventCode": "0xB7, 0xBB",
2732 "MSRValue": "0x0000010240 ",
2733 "Counter": "0,1,2,3",
2734 "UMask": "0x1",
2735 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.ANY_RESPONSE",
2736 "MSRIndex": "0x1a6,0x1a7",
2737 "SampleAfterValue": "100003",
2738 "BriefDescription": "Counts all prefetch code reads that have any response type.",
2739 "Offcore": "1",
2740 "CounterHTOff": "0,1,2,3"
2741 },
2742 {
2743 "EventCode": "0xB7, 0xBB",
2744 "MSRValue": "0x0080020240 ",
2745 "Counter": "0,1,2,3",
2746 "UMask": "0x1",
2747 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.SUPPLIER_NONE.SNOOP_NONE",
2748 "MSRIndex": "0x1a6,0x1a7",
2749 "SampleAfterValue": "100003",
2750 "BriefDescription": "ALL_PF_CODE_RD & SUPPLIER_NONE & SNOOP_NONE",
2751 "Offcore": "1",
2752 "CounterHTOff": "0,1,2,3"
2753 },
2754 {
2755 "EventCode": "0xB7, 0xBB",
2756 "MSRValue": "0x0100020240 ",
2757 "Counter": "0,1,2,3",
2758 "UMask": "0x1",
2759 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2760 "MSRIndex": "0x1a6,0x1a7",
2761 "SampleAfterValue": "100003",
2762 "BriefDescription": "ALL_PF_CODE_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2763 "Offcore": "1",
2764 "CounterHTOff": "0,1,2,3"
2765 },
2766 {
2767 "EventCode": "0xB7, 0xBB",
2768 "MSRValue": "0x0200020240 ",
2769 "Counter": "0,1,2,3",
2770 "UMask": "0x1",
2771 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.SUPPLIER_NONE.SNOOP_MISS",
2772 "MSRIndex": "0x1a6,0x1a7",
2773 "SampleAfterValue": "100003",
2774 "BriefDescription": "ALL_PF_CODE_RD & SUPPLIER_NONE & SNOOP_MISS",
2775 "Offcore": "1",
2776 "CounterHTOff": "0,1,2,3"
2777 },
2778 {
2779 "EventCode": "0xB7, 0xBB",
2780 "MSRValue": "0x0400020240 ",
2781 "Counter": "0,1,2,3",
2782 "UMask": "0x1",
2783 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2784 "MSRIndex": "0x1a6,0x1a7",
2785 "SampleAfterValue": "100003",
2786 "BriefDescription": "ALL_PF_CODE_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2787 "Offcore": "1",
2788 "CounterHTOff": "0,1,2,3"
2789 },
2790 {
2791 "EventCode": "0xB7, 0xBB",
2792 "MSRValue": "0x1000020240 ",
2793 "Counter": "0,1,2,3",
2794 "UMask": "0x1",
2795 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.SUPPLIER_NONE.SNOOP_HITM",
2796 "MSRIndex": "0x1a6,0x1a7",
2797 "SampleAfterValue": "100003",
2798 "BriefDescription": "ALL_PF_CODE_RD & SUPPLIER_NONE & SNOOP_HITM",
2799 "Offcore": "1",
2800 "CounterHTOff": "0,1,2,3"
2801 },
2802 {
2803 "EventCode": "0xB7, 0xBB",
2804 "MSRValue": "0x3f80020240 ",
2805 "Counter": "0,1,2,3",
2806 "UMask": "0x1",
2807 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.SUPPLIER_NONE.ANY_SNOOP",
2808 "MSRIndex": "0x1a6,0x1a7",
2809 "SampleAfterValue": "100003",
2810 "BriefDescription": "ALL_PF_CODE_RD & SUPPLIER_NONE & ANY_SNOOP",
2811 "Offcore": "1",
2812 "CounterHTOff": "0,1,2,3"
2813 },
2814 {
2815 "EventCode": "0xB7, 0xBB",
2816 "MSRValue": "0x00803c0240 ",
2817 "Counter": "0,1,2,3",
2818 "UMask": "0x1",
2819 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_HIT.SNOOP_NONE",
2820 "MSRIndex": "0x1a6,0x1a7",
2821 "SampleAfterValue": "100003",
2822 "BriefDescription": "Counts all prefetch code reads that hit in the L3 with no details on snoop-related information.",
2823 "Offcore": "1",
2824 "CounterHTOff": "0,1,2,3"
2825 },
2826 {
2827 "EventCode": "0xB7, 0xBB",
2828 "MSRValue": "0x01003c0240 ",
2829 "Counter": "0,1,2,3",
2830 "UMask": "0x1",
2831 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_HIT.SNOOP_NOT_NEEDED",
2832 "MSRIndex": "0x1a6,0x1a7",
2833 "SampleAfterValue": "100003",
2834 "BriefDescription": "Counts all prefetch code reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2835 "Offcore": "1",
2836 "CounterHTOff": "0,1,2,3"
2837 },
2838 {
2839 "EventCode": "0xB7, 0xBB",
2840 "MSRValue": "0x02003c0240 ",
2841 "Counter": "0,1,2,3",
2842 "UMask": "0x1",
2843 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_HIT.SNOOP_MISS",
2844 "MSRIndex": "0x1a6,0x1a7",
2845 "SampleAfterValue": "100003",
2846 "BriefDescription": "Counts all prefetch code reads that hit in the L3 with a snoop miss response.",
2847 "Offcore": "1",
2848 "CounterHTOff": "0,1,2,3"
2849 },
2850 {
2851 "EventCode": "0xB7, 0xBB",
2852 "MSRValue": "0x04003c0240 ",
2853 "Counter": "0,1,2,3",
2854 "UMask": "0x1",
2855 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_HIT.SNOOP_HIT_NO_FWD",
2856 "MSRIndex": "0x1a6,0x1a7",
2857 "SampleAfterValue": "100003",
2858 "BriefDescription": "Counts all prefetch code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2859 "Offcore": "1",
2860 "CounterHTOff": "0,1,2,3"
2861 },
2862 {
2863 "EventCode": "0xB7, 0xBB",
2864 "MSRValue": "0x10003c0240 ",
2865 "Counter": "0,1,2,3",
2866 "UMask": "0x1",
2867 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_HIT.SNOOP_HITM",
2868 "MSRIndex": "0x1a6,0x1a7",
2869 "SampleAfterValue": "100003",
2870 "BriefDescription": "ALL_PF_CODE_RD & L3_HIT & SNOOP_HITM",
2871 "Offcore": "1",
2872 "CounterHTOff": "0,1,2,3"
2873 },
2874 {
2875 "EventCode": "0xB7, 0xBB",
2876 "MSRValue": "0x3f803c0240 ",
2877 "Counter": "0,1,2,3",
2878 "UMask": "0x1",
2879 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_HIT.ANY_SNOOP",
2880 "MSRIndex": "0x1a6,0x1a7",
2881 "SampleAfterValue": "100003",
2882 "BriefDescription": "Counts all prefetch code reads that hit in the L3.",
2883 "Offcore": "1",
2884 "CounterHTOff": "0,1,2,3"
2885 },
2886 {
2887 "EventCode": "0xB7, 0xBB",
2888 "MSRValue": "0x0000010091 ",
2889 "Counter": "0,1,2,3",
2890 "UMask": "0x1",
2891 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.ANY_RESPONSE",
2892 "MSRIndex": "0x1a6,0x1a7",
2893 "SampleAfterValue": "100003",
2894 "BriefDescription": "Counts all demand & prefetch data reads that have any response type.",
2895 "Offcore": "1",
2896 "CounterHTOff": "0,1,2,3"
2897 },
2898 {
2899 "EventCode": "0xB7, 0xBB",
2900 "MSRValue": "0x0080020091 ",
2901 "Counter": "0,1,2,3",
2902 "UMask": "0x1",
2903 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.SUPPLIER_NONE.SNOOP_NONE",
2904 "MSRIndex": "0x1a6,0x1a7",
2905 "SampleAfterValue": "100003",
2906 "BriefDescription": "ALL_DATA_RD & SUPPLIER_NONE & SNOOP_NONE",
2907 "Offcore": "1",
2908 "CounterHTOff": "0,1,2,3"
2909 },
2910 {
2911 "EventCode": "0xB7, 0xBB",
2912 "MSRValue": "0x0100020091 ",
2913 "Counter": "0,1,2,3",
2914 "UMask": "0x1",
2915 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2916 "MSRIndex": "0x1a6,0x1a7",
2917 "SampleAfterValue": "100003",
2918 "BriefDescription": "ALL_DATA_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2919 "Offcore": "1",
2920 "CounterHTOff": "0,1,2,3"
2921 },
2922 {
2923 "EventCode": "0xB7, 0xBB",
2924 "MSRValue": "0x0200020091 ",
2925 "Counter": "0,1,2,3",
2926 "UMask": "0x1",
2927 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.SUPPLIER_NONE.SNOOP_MISS",
2928 "MSRIndex": "0x1a6,0x1a7",
2929 "SampleAfterValue": "100003",
2930 "BriefDescription": "ALL_DATA_RD & SUPPLIER_NONE & SNOOP_MISS",
2931 "Offcore": "1",
2932 "CounterHTOff": "0,1,2,3"
2933 },
2934 {
2935 "EventCode": "0xB7, 0xBB",
2936 "MSRValue": "0x0400020091 ",
2937 "Counter": "0,1,2,3",
2938 "UMask": "0x1",
2939 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2940 "MSRIndex": "0x1a6,0x1a7",
2941 "SampleAfterValue": "100003",
2942 "BriefDescription": "ALL_DATA_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2943 "Offcore": "1",
2944 "CounterHTOff": "0,1,2,3"
2945 },
2946 {
2947 "EventCode": "0xB7, 0xBB",
2948 "MSRValue": "0x1000020091 ",
2949 "Counter": "0,1,2,3",
2950 "UMask": "0x1",
2951 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.SUPPLIER_NONE.SNOOP_HITM",
2952 "MSRIndex": "0x1a6,0x1a7",
2953 "SampleAfterValue": "100003",
2954 "BriefDescription": "ALL_DATA_RD & SUPPLIER_NONE & SNOOP_HITM",
2955 "Offcore": "1",
2956 "CounterHTOff": "0,1,2,3"
2957 },
2958 {
2959 "EventCode": "0xB7, 0xBB",
2960 "MSRValue": "0x3f80020091 ",
2961 "Counter": "0,1,2,3",
2962 "UMask": "0x1",
2963 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.SUPPLIER_NONE.ANY_SNOOP",
2964 "MSRIndex": "0x1a6,0x1a7",
2965 "SampleAfterValue": "100003",
2966 "BriefDescription": "ALL_DATA_RD & SUPPLIER_NONE & ANY_SNOOP",
2967 "Offcore": "1",
2968 "CounterHTOff": "0,1,2,3"
2969 },
2970 {
2971 "EventCode": "0xB7, 0xBB",
2972 "MSRValue": "0x00803c0091 ",
2973 "Counter": "0,1,2,3",
2974 "UMask": "0x1",
2975 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.SNOOP_NONE",
2976 "MSRIndex": "0x1a6,0x1a7",
2977 "SampleAfterValue": "100003",
2978 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 with no details on snoop-related information.",
2979 "Offcore": "1",
2980 "CounterHTOff": "0,1,2,3"
2981 },
2982 {
2983 "EventCode": "0xB7, 0xBB",
2984 "MSRValue": "0x01003c0091 ",
2985 "Counter": "0,1,2,3",
2986 "UMask": "0x1",
2987 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.SNOOP_NOT_NEEDED",
2988 "MSRIndex": "0x1a6,0x1a7",
2989 "SampleAfterValue": "100003",
2990 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2991 "Offcore": "1",
2992 "CounterHTOff": "0,1,2,3"
2993 },
2994 {
2995 "EventCode": "0xB7, 0xBB",
2996 "MSRValue": "0x02003c0091 ",
2997 "Counter": "0,1,2,3",
2998 "UMask": "0x1",
2999 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.SNOOP_MISS",
3000 "MSRIndex": "0x1a6,0x1a7",
3001 "SampleAfterValue": "100003",
3002 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 with a snoop miss response.",
3003 "Offcore": "1",
3004 "CounterHTOff": "0,1,2,3"
3005 },
3006 {
3007 "EventCode": "0xB7, 0xBB",
3008 "MSRValue": "0x04003c0091 ",
3009 "Counter": "0,1,2,3",
3010 "UMask": "0x1",
3011 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.SNOOP_HIT_NO_FWD",
3012 "MSRIndex": "0x1a6,0x1a7",
3013 "SampleAfterValue": "100003",
3014 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
3015 "Offcore": "1",
3016 "CounterHTOff": "0,1,2,3"
3017 },
3018 {
3019 "EventCode": "0xB7, 0xBB",
3020 "MSRValue": "0x10003c0091 ",
3021 "Counter": "0,1,2,3",
3022 "UMask": "0x1",
3023 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.SNOOP_HITM",
3024 "MSRIndex": "0x1a6,0x1a7",
3025 "SampleAfterValue": "100003",
3026 "BriefDescription": "ALL_DATA_RD & L3_HIT & SNOOP_HITM",
3027 "Offcore": "1",
3028 "CounterHTOff": "0,1,2,3"
3029 },
3030 {
3031 "EventCode": "0xB7, 0xBB",
3032 "MSRValue": "0x3f803c0091 ",
3033 "Counter": "0,1,2,3",
3034 "UMask": "0x1",
3035 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.ANY_SNOOP",
3036 "MSRIndex": "0x1a6,0x1a7",
3037 "SampleAfterValue": "100003",
3038 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3.",
3039 "Offcore": "1",
3040 "CounterHTOff": "0,1,2,3"
3041 },
3042 {
3043 "EventCode": "0xB7, 0xBB",
3044 "MSRValue": "0x0000010122 ",
3045 "Counter": "0,1,2,3",
3046 "UMask": "0x1",
3047 "EventName": "OFFCORE_RESPONSE.ALL_RFO.ANY_RESPONSE",
3048 "MSRIndex": "0x1a6,0x1a7",
3049 "SampleAfterValue": "100003",
3050 "BriefDescription": "Counts all demand & prefetch RFOs that have any response type.",
3051 "Offcore": "1",
3052 "CounterHTOff": "0,1,2,3"
3053 },
3054 {
3055 "EventCode": "0xB7, 0xBB",
3056 "MSRValue": "0x0080020122 ",
3057 "Counter": "0,1,2,3",
3058 "UMask": "0x1",
3059 "EventName": "OFFCORE_RESPONSE.ALL_RFO.SUPPLIER_NONE.SNOOP_NONE",
3060 "MSRIndex": "0x1a6,0x1a7",
3061 "SampleAfterValue": "100003",
3062 "BriefDescription": "ALL_RFO & SUPPLIER_NONE & SNOOP_NONE",
3063 "Offcore": "1",
3064 "CounterHTOff": "0,1,2,3"
3065 },
3066 {
3067 "EventCode": "0xB7, 0xBB",
3068 "MSRValue": "0x0100020122 ",
3069 "Counter": "0,1,2,3",
3070 "UMask": "0x1",
3071 "EventName": "OFFCORE_RESPONSE.ALL_RFO.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
3072 "MSRIndex": "0x1a6,0x1a7",
3073 "SampleAfterValue": "100003",
3074 "BriefDescription": "ALL_RFO & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
3075 "Offcore": "1",
3076 "CounterHTOff": "0,1,2,3"
3077 },
3078 {
3079 "EventCode": "0xB7, 0xBB",
3080 "MSRValue": "0x0200020122 ",
3081 "Counter": "0,1,2,3",
3082 "UMask": "0x1",
3083 "EventName": "OFFCORE_RESPONSE.ALL_RFO.SUPPLIER_NONE.SNOOP_MISS",
3084 "MSRIndex": "0x1a6,0x1a7",
3085 "SampleAfterValue": "100003",
3086 "BriefDescription": "ALL_RFO & SUPPLIER_NONE & SNOOP_MISS",
3087 "Offcore": "1",
3088 "CounterHTOff": "0,1,2,3"
3089 },
3090 {
3091 "EventCode": "0xB7, 0xBB",
3092 "MSRValue": "0x0400020122 ",
3093 "Counter": "0,1,2,3",
3094 "UMask": "0x1",
3095 "EventName": "OFFCORE_RESPONSE.ALL_RFO.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
3096 "MSRIndex": "0x1a6,0x1a7",
3097 "SampleAfterValue": "100003",
3098 "BriefDescription": "ALL_RFO & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
3099 "Offcore": "1",
3100 "CounterHTOff": "0,1,2,3"
3101 },
3102 {
3103 "EventCode": "0xB7, 0xBB",
3104 "MSRValue": "0x1000020122 ",
3105 "Counter": "0,1,2,3",
3106 "UMask": "0x1",
3107 "EventName": "OFFCORE_RESPONSE.ALL_RFO.SUPPLIER_NONE.SNOOP_HITM",
3108 "MSRIndex": "0x1a6,0x1a7",
3109 "SampleAfterValue": "100003",
3110 "BriefDescription": "ALL_RFO & SUPPLIER_NONE & SNOOP_HITM",
3111 "Offcore": "1",
3112 "CounterHTOff": "0,1,2,3"
3113 },
3114 {
3115 "EventCode": "0xB7, 0xBB",
3116 "MSRValue": "0x3f80020122 ",
3117 "Counter": "0,1,2,3",
3118 "UMask": "0x1",
3119 "EventName": "OFFCORE_RESPONSE.ALL_RFO.SUPPLIER_NONE.ANY_SNOOP",
3120 "MSRIndex": "0x1a6,0x1a7",
3121 "SampleAfterValue": "100003",
3122 "BriefDescription": "ALL_RFO & SUPPLIER_NONE & ANY_SNOOP",
3123 "Offcore": "1",
3124 "CounterHTOff": "0,1,2,3"
3125 },
3126 {
3127 "EventCode": "0xB7, 0xBB",
3128 "MSRValue": "0x00803c0122 ",
3129 "Counter": "0,1,2,3",
3130 "UMask": "0x1",
3131 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.SNOOP_NONE",
3132 "MSRIndex": "0x1a6,0x1a7",
3133 "SampleAfterValue": "100003",
3134 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 with no details on snoop-related information.",
3135 "Offcore": "1",
3136 "CounterHTOff": "0,1,2,3"
3137 },
3138 {
3139 "EventCode": "0xB7, 0xBB",
3140 "MSRValue": "0x01003c0122 ",
3141 "Counter": "0,1,2,3",
3142 "UMask": "0x1",
3143 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.SNOOP_NOT_NEEDED",
3144 "MSRIndex": "0x1a6,0x1a7",
3145 "SampleAfterValue": "100003",
3146 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
3147 "Offcore": "1",
3148 "CounterHTOff": "0,1,2,3"
3149 },
3150 {
3151 "EventCode": "0xB7, 0xBB",
3152 "MSRValue": "0x02003c0122 ",
3153 "Counter": "0,1,2,3",
3154 "UMask": "0x1",
3155 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.SNOOP_MISS",
3156 "MSRIndex": "0x1a6,0x1a7",
3157 "SampleAfterValue": "100003",
3158 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 with a snoop miss response.",
3159 "Offcore": "1",
3160 "CounterHTOff": "0,1,2,3"
3161 },
3162 {
3163 "EventCode": "0xB7, 0xBB",
3164 "MSRValue": "0x04003c0122 ",
3165 "Counter": "0,1,2,3",
3166 "UMask": "0x1",
3167 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.SNOOP_HIT_NO_FWD",
3168 "MSRIndex": "0x1a6,0x1a7",
3169 "SampleAfterValue": "100003",
3170 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
3171 "Offcore": "1",
3172 "CounterHTOff": "0,1,2,3"
3173 },
3174 {
3175 "EventCode": "0xB7, 0xBB",
3176 "MSRValue": "0x10003c0122 ",
3177 "Counter": "0,1,2,3",
3178 "UMask": "0x1",
3179 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.SNOOP_HITM",
3180 "MSRIndex": "0x1a6,0x1a7",
3181 "SampleAfterValue": "100003",
3182 "BriefDescription": "ALL_RFO & L3_HIT & SNOOP_HITM",
3183 "Offcore": "1",
3184 "CounterHTOff": "0,1,2,3"
3185 },
3186 {
3187 "EventCode": "0xB7, 0xBB",
3188 "MSRValue": "0x3f803c0122 ",
3189 "Counter": "0,1,2,3",
3190 "UMask": "0x1",
3191 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.ANY_SNOOP",
3192 "MSRIndex": "0x1a6,0x1a7",
3193 "SampleAfterValue": "100003",
3194 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3.",
3195 "Offcore": "1",
3196 "CounterHTOff": "0,1,2,3"
3197 }
3198] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwell/floating-point.json b/tools/perf/pmu-events/arch/x86/broadwell/floating-point.json
new file mode 100644
index 000000000000..102bfb808199
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwell/floating-point.json
@@ -0,0 +1,171 @@
1[
2 {
3 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of transitions from AVX-256 to legacy SSE when penalty is applicable.",
4 "EventCode": "0xC1",
5 "Counter": "0,1,2,3",
6 "UMask": "0x8",
7 "Errata": "BDM30",
8 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
9 "SampleAfterValue": "100003",
10 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of transitions from legacy SSE to AVX-256 when penalty is applicable.",
15 "EventCode": "0xC1",
16 "Counter": "0,1,2,3",
17 "UMask": "0x10",
18 "Errata": "BDM30",
19 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
20 "SampleAfterValue": "100003",
21 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "PEBS": "1",
26 "EventCode": "0xC7",
27 "Counter": "0,1,2,3",
28 "UMask": "0x1",
29 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
30 "SampleAfterValue": "2000003",
31 "BriefDescription": "Number of SSE/AVX computational scalar double precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
32 "CounterHTOff": "0,1,2,3"
33 },
34 {
35 "PEBS": "1",
36 "EventCode": "0xC7",
37 "Counter": "0,1,2,3",
38 "UMask": "0x2",
39 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
40 "SampleAfterValue": "2000003",
41 "BriefDescription": "Number of SSE/AVX computational scalar single precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
42 "CounterHTOff": "0,1,2,3"
43 },
44 {
45 "PEBS": "1",
46 "EventCode": "0xC7",
47 "Counter": "0,1,2,3",
48 "UMask": "0x4",
49 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE",
50 "SampleAfterValue": "2000003",
51 "BriefDescription": "Number of SSE/AVX computational 128-bit packed double precision floating-point instructions retired. Each count represents 2 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
52 "CounterHTOff": "0,1,2,3"
53 },
54 {
55 "PEBS": "1",
56 "EventCode": "0xC7",
57 "Counter": "0,1,2,3",
58 "UMask": "0x8",
59 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE",
60 "SampleAfterValue": "2000003",
61 "BriefDescription": "Number of SSE/AVX computational 128-bit packed single precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
62 "CounterHTOff": "0,1,2,3"
63 },
64 {
65 "PEBS": "1",
66 "EventCode": "0xC7",
67 "Counter": "0,1,2,3",
68 "UMask": "0x10",
69 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE",
70 "SampleAfterValue": "2000003",
71 "BriefDescription": "Number of SSE/AVX computational 256-bit packed double precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
72 "CounterHTOff": "0,1,2,3"
73 },
74 {
75 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of x87 floating point (FP) micro-code assist (numeric overflow/underflow, inexact result) when the output value (destination register) is invalid.",
76 "EventCode": "0xCA",
77 "Counter": "0,1,2,3",
78 "UMask": "0x2",
79 "EventName": "FP_ASSIST.X87_OUTPUT",
80 "SampleAfterValue": "100003",
81 "BriefDescription": "Number of X87 assists due to output value.",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts x87 floating point (FP) micro-code assist (invalid operation, denormal operand, SNaN operand) when the input value (one of the source operands to an FP instruction) is invalid.",
86 "EventCode": "0xCA",
87 "Counter": "0,1,2,3",
88 "UMask": "0x4",
89 "EventName": "FP_ASSIST.X87_INPUT",
90 "SampleAfterValue": "100003",
91 "BriefDescription": "Number of X87 assists due to input value.",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of SSE* floating point (FP) micro-code assist (numeric overflow/underflow) when the output value (destination register) is invalid. Counting covers only cases involving penalties that require micro-code assist intervention.",
96 "EventCode": "0xCA",
97 "Counter": "0,1,2,3",
98 "UMask": "0x8",
99 "EventName": "FP_ASSIST.SIMD_OUTPUT",
100 "SampleAfterValue": "100003",
101 "BriefDescription": "Number of SIMD FP assists due to Output values",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts any input SSE* FP assist - invalid operation, denormal operand, dividing by zero, SNaN operand. Counting includes only cases involving penalties that required micro-code assist intervention.",
106 "EventCode": "0xCA",
107 "Counter": "0,1,2,3",
108 "UMask": "0x10",
109 "EventName": "FP_ASSIST.SIMD_INPUT",
110 "SampleAfterValue": "100003",
111 "BriefDescription": "Number of SIMD FP assists due to input values",
112 "CounterHTOff": "0,1,2,3,4,5,6,7"
113 },
114 {
115 "PublicDescription": "This event counts cycles with any input and output SSE or x87 FP assist. If an input and output assist are detected on the same cycle the event increments by 1.",
116 "EventCode": "0xCA",
117 "Counter": "0,1,2,3",
118 "UMask": "0x1e",
119 "EventName": "FP_ASSIST.ANY",
120 "SampleAfterValue": "100003",
121 "BriefDescription": "Cycles with any input/output SSE or FP assist",
122 "CounterMask": "1",
123 "CounterHTOff": "0,1,2,3"
124 },
125 {
126 "PEBS": "1",
127 "EventCode": "0xc7",
128 "Counter": "0,1,2,3",
129 "UMask": "0x20",
130 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE",
131 "SampleAfterValue": "2000003",
132 "BriefDescription": "Number of SSE/AVX computational 256-bit packed single precision floating-point instructions retired. Each count represents 8 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
133 "CounterHTOff": "0,1,2,3"
134 },
135 {
136 "EventCode": "0xC7",
137 "Counter": "0,1,2,3",
138 "UMask": "0x3",
139 "EventName": "FP_ARITH_INST_RETIRED.SCALAR",
140 "SampleAfterValue": "2000003",
141 "BriefDescription": "Number of SSE/AVX computational scalar floating-point instructions retired. Applies to SSE* and AVX* scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RSQRT RCP SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
142 "CounterHTOff": "0,1,2,3"
143 },
144 {
145 "EventCode": "0xC7",
146 "Counter": "0,1,2,3",
147 "UMask": "0x3c",
148 "EventName": "FP_ARITH_INST_RETIRED.PACKED",
149 "SampleAfterValue": "2000004",
150 "BriefDescription": "Number of SSE/AVX computational packed floating-point instructions retired. Applies to SSE* and AVX*, packed, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RSQRT RCP SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
151 "CounterHTOff": "0,1,2,3"
152 },
153 {
154 "EventCode": "0xC7",
155 "Counter": "0,1,2,3",
156 "UMask": "0x2a",
157 "EventName": "FP_ARITH_INST_RETIRED.SINGLE",
158 "SampleAfterValue": "2000005",
159 "BriefDescription": "Number of SSE/AVX computational single precision floating-point instructions retired. Applies to SSE* and AVX*scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element. ?.",
160 "CounterHTOff": "0,1,2,3"
161 },
162 {
163 "EventCode": "0xC7",
164 "Counter": "0,1,2,3",
165 "UMask": "0x15",
166 "EventName": "FP_ARITH_INST_RETIRED.DOUBLE",
167 "SampleAfterValue": "2000006",
168 "BriefDescription": "Number of SSE/AVX computational double precision floating-point instructions retired. Applies to SSE* and AVX*scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element. ?.",
169 "CounterHTOff": "0,1,2,3"
170 }
171] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwell/frontend.json b/tools/perf/pmu-events/arch/x86/broadwell/frontend.json
new file mode 100644
index 000000000000..b0cdf1f097a0
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwell/frontend.json
@@ -0,0 +1,286 @@
1[
2 {
3 "PublicDescription": "This counts the number of cycles that the instruction decoder queue is empty and can indicate that the application may be bound in the front end. It does not determine whether there are uops being delivered to the Alloc stage since uops can be delivered by bypass skipping the Instruction Decode Queue (IDQ) when it is empty.",
4 "EventCode": "0x79",
5 "Counter": "0,1,2,3",
6 "UMask": "0x2",
7 "EventName": "IDQ.EMPTY",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles",
10 "CounterHTOff": "0,1,2,3"
11 },
12 {
13 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
14 "EventCode": "0x79",
15 "Counter": "0,1,2,3",
16 "UMask": "0x4",
17 "EventName": "IDQ.MITE_UOPS",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
24 "EventCode": "0x79",
25 "Counter": "0,1,2,3",
26 "UMask": "0x8",
27 "EventName": "IDQ.DSB_UOPS",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "This event counts the number of uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
34 "EventCode": "0x79",
35 "Counter": "0,1,2,3",
36 "UMask": "0x10",
37 "EventName": "IDQ.MS_DSB_UOPS",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "This event counts the number of uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
44 "EventCode": "0x79",
45 "Counter": "0,1,2,3",
46 "UMask": "0x20",
47 "EventName": "IDQ.MS_MITE_UOPS",
48 "SampleAfterValue": "2000003",
49 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "This event counts the total number of uops delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
54 "EventCode": "0x79",
55 "Counter": "0,1,2,3",
56 "UMask": "0x30",
57 "EventName": "IDQ.MS_UOPS",
58 "SampleAfterValue": "2000003",
59 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
64 "EventCode": "0x79",
65 "Counter": "0,1,2,3",
66 "UMask": "0x30",
67 "EventName": "IDQ.MS_CYCLES",
68 "SampleAfterValue": "2000003",
69 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
70 "CounterMask": "1",
71 "CounterHTOff": "0,1,2,3,4,5,6,7"
72 },
73 {
74 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ.",
75 "EventCode": "0x79",
76 "Counter": "0,1,2,3",
77 "UMask": "0x4",
78 "EventName": "IDQ.MITE_CYCLES",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path",
81 "CounterMask": "1",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
86 "EventCode": "0x79",
87 "Counter": "0,1,2,3",
88 "UMask": "0x8",
89 "EventName": "IDQ.DSB_CYCLES",
90 "SampleAfterValue": "2000003",
91 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
92 "CounterMask": "1",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "PublicDescription": "This event counts cycles during which uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
97 "EventCode": "0x79",
98 "Counter": "0,1,2,3",
99 "UMask": "0x10",
100 "EventName": "IDQ.MS_DSB_CYCLES",
101 "SampleAfterValue": "2000003",
102 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
103 "CounterMask": "1",
104 "CounterHTOff": "0,1,2,3,4,5,6,7"
105 },
106 {
107 "PublicDescription": "This event counts the number of deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
108 "EventCode": "0x79",
109 "Counter": "0,1,2,3",
110 "UMask": "0x10",
111 "EdgeDetect": "1",
112 "EventName": "IDQ.MS_DSB_OCCUR",
113 "SampleAfterValue": "2000003",
114 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy",
115 "CounterMask": "1",
116 "CounterHTOff": "0,1,2,3,4,5,6,7"
117 },
118 {
119 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
120 "EventCode": "0x79",
121 "Counter": "0,1,2,3",
122 "UMask": "0x18",
123 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
124 "SampleAfterValue": "2000003",
125 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
126 "CounterMask": "4",
127 "CounterHTOff": "0,1,2,3,4,5,6,7"
128 },
129 {
130 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
131 "EventCode": "0x79",
132 "Counter": "0,1,2,3",
133 "UMask": "0x18",
134 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
135 "SampleAfterValue": "2000003",
136 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
137 "CounterMask": "1",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
142 "EventCode": "0x79",
143 "Counter": "0,1,2,3",
144 "UMask": "0x24",
145 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
146 "SampleAfterValue": "2000003",
147 "BriefDescription": "Cycles MITE is delivering 4 Uops",
148 "CounterMask": "4",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
153 "EventCode": "0x79",
154 "Counter": "0,1,2,3",
155 "UMask": "0x24",
156 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
157 "SampleAfterValue": "2000003",
158 "BriefDescription": "Cycles MITE is delivering any Uop",
159 "CounterMask": "1",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
164 "EventCode": "0x79",
165 "Counter": "0,1,2,3",
166 "UMask": "0x3c",
167 "EventName": "IDQ.MITE_ALL_UOPS",
168 "SampleAfterValue": "2000003",
169 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "PublicDescription": "This event counts the number of both cacheable and noncacheable Instruction Cache, Streaming Buffer and Victim Cache Reads including UC fetches.",
174 "EventCode": "0x80",
175 "Counter": "0,1,2,3",
176 "UMask": "0x1",
177 "EventName": "ICACHE.HIT",
178 "SampleAfterValue": "2000003",
179 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "PublicDescription": "This event counts the number of instruction cache, streaming buffer and victim cache misses. Counting includes UC accesses.",
184 "EventCode": "0x80",
185 "Counter": "0,1,2,3",
186 "UMask": "0x2",
187 "EventName": "ICACHE.MISSES",
188 "SampleAfterValue": "200003",
189 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes Uncacheable accesses.",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "PublicDescription": "This event counts cycles during which the demand fetch waits for data (wfdM104H) from L2 or iSB (opportunistic hit).",
194 "EventCode": "0x80",
195 "Counter": "0,1,2,3",
196 "UMask": "0x4",
197 "EventName": "ICACHE.IFDATA_STALL",
198 "SampleAfterValue": "2000003",
199 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction-cache miss.",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "PublicDescription": "This event counts the number of uops not delivered to Resource Allocation Table (RAT) per thread adding ?4 ? x? when Resource Allocation Table (RAT) is not stalled and Instruction Decode Queue (IDQ) delivers x uops to Resource Allocation Table (RAT) (where x belongs to {0,1,2,3}). Counting does not cover cases when:\n a. IDQ-Resource Allocation Table (RAT) pipe serves the other thread;\n b. Resource Allocation Table (RAT) is stalled for the thread (including uop drops and clear BE conditions); \n c. Instruction Decode Queue (IDQ) delivers four uops.",
204 "EventCode": "0x9C",
205 "Counter": "0,1,2,3",
206 "UMask": "0x1",
207 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
208 "SampleAfterValue": "2000003",
209 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled",
210 "CounterHTOff": "0,1,2,3"
211 },
212 {
213 "PublicDescription": "This event counts, on the per-thread basis, cycles when no uops are delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core =4.",
214 "EventCode": "0x9C",
215 "Counter": "0,1,2,3",
216 "UMask": "0x1",
217 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
218 "SampleAfterValue": "2000003",
219 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
220 "CounterMask": "4",
221 "CounterHTOff": "0,1,2,3"
222 },
223 {
224 "PublicDescription": "This event counts, on the per-thread basis, cycles when less than 1 uop is delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core >=3.",
225 "EventCode": "0x9C",
226 "Counter": "0,1,2,3",
227 "UMask": "0x1",
228 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
229 "SampleAfterValue": "2000003",
230 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
231 "CounterMask": "3",
232 "CounterHTOff": "0,1,2,3"
233 },
234 {
235 "EventCode": "0x9C",
236 "Counter": "0,1,2,3",
237 "UMask": "0x1",
238 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
239 "SampleAfterValue": "2000003",
240 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
241 "CounterMask": "2",
242 "CounterHTOff": "0,1,2,3"
243 },
244 {
245 "EventCode": "0x9C",
246 "Counter": "0,1,2,3",
247 "UMask": "0x1",
248 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
249 "SampleAfterValue": "2000003",
250 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
251 "CounterMask": "1",
252 "CounterHTOff": "0,1,2,3"
253 },
254 {
255 "EventCode": "0x9C",
256 "Invert": "1",
257 "Counter": "0,1,2,3",
258 "UMask": "0x1",
259 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
260 "SampleAfterValue": "2000003",
261 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
262 "CounterMask": "1",
263 "CounterHTOff": "0,1,2,3"
264 },
265 {
266 "PublicDescription": "This event counts Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles. These cycles do not include uops routed through because of the switch itself, for example, when Instruction Decode Queue (IDQ) pre-allocation is unavailable, or Instruction Decode Queue (IDQ) is full. SBD-to-MITE switch true penalty cycles happen after the merge mux (MM) receives Decode Stream Buffer (DSB) Sync-indication until receiving the first MITE uop. \nMM is placed before Instruction Decode Queue (IDQ) to merge uops being fed from the MITE and Decode Stream Buffer (DSB) paths. Decode Stream Buffer (DSB) inserts the Sync-indication whenever a Decode Stream Buffer (DSB)-to-MITE switch occurs.\nPenalty: A Decode Stream Buffer (DSB) hit followed by a Decode Stream Buffer (DSB) miss can cost up to six cycles in which no uops are delivered to the IDQ. Most often, such switches from the Decode Stream Buffer (DSB) to the legacy pipeline cost 0?2 cycles.",
267 "EventCode": "0xAB",
268 "Counter": "0,1,2,3",
269 "UMask": "0x2",
270 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
271 "SampleAfterValue": "2000003",
272 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
273 "CounterHTOff": "0,1,2,3,4,5,6,7"
274 },
275 {
276 "EventCode": "0x79",
277 "Counter": "0,1,2,3",
278 "UMask": "0x30",
279 "EdgeDetect": "1",
280 "EventName": "IDQ.MS_SWITCHES",
281 "SampleAfterValue": "2000003",
282 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
283 "CounterMask": "1",
284 "CounterHTOff": "0,1,2,3,4,5,6,7"
285 }
286] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwell/memory.json b/tools/perf/pmu-events/arch/x86/broadwell/memory.json
new file mode 100644
index 000000000000..ff5416d29d0d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwell/memory.json
@@ -0,0 +1,2845 @@
1[
2 {
3 "PublicDescription": "This event counts speculative cache-line split load uops dispatched to the L1 cache.",
4 "EventCode": "0x05",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "MISALIGN_MEM_REF.LOADS",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "This event counts speculative cache line split store-address (STA) uops dispatched to the L1 cache.",
14 "EventCode": "0x05",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "MISALIGN_MEM_REF.STORES",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Number of times a TSX line had a cache conflict.",
24 "EventCode": "0x54",
25 "Counter": "0,1,2,3",
26 "UMask": "0x1",
27 "EventName": "TX_MEM.ABORT_CONFLICT",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Number of times a TSX line had a cache conflict",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Number of times a TSX Abort was triggered due to an evicted line caused by a transaction overflow.",
34 "EventCode": "0x54",
35 "Counter": "0,1,2,3",
36 "UMask": "0x2",
37 "EventName": "TX_MEM.ABORT_CAPACITY_WRITE",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Number of times a TSX Abort was triggered due to an evicted line caused by a transaction overflow",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Number of times a TSX Abort was triggered due to a non-release/commit store to lock.",
44 "EventCode": "0x54",
45 "Counter": "0,1,2,3",
46 "UMask": "0x4",
47 "EventName": "TX_MEM.ABORT_HLE_STORE_TO_ELIDED_LOCK",
48 "SampleAfterValue": "2000003",
49 "BriefDescription": "Number of times a TSX Abort was triggered due to a non-release/commit store to lock",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Number of times a TSX Abort was triggered due to commit but Lock Buffer not empty.",
54 "EventCode": "0x54",
55 "Counter": "0,1,2,3",
56 "UMask": "0x8",
57 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_NOT_EMPTY",
58 "SampleAfterValue": "2000003",
59 "BriefDescription": "Number of times a TSX Abort was triggered due to commit but Lock Buffer not empty",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Number of times a TSX Abort was triggered due to release/commit but data and address mismatch.",
64 "EventCode": "0x54",
65 "Counter": "0,1,2,3",
66 "UMask": "0x10",
67 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_MISMATCH",
68 "SampleAfterValue": "2000003",
69 "BriefDescription": "Number of times a TSX Abort was triggered due to release/commit but data and address mismatch",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "PublicDescription": "Number of times a TSX Abort was triggered due to attempting an unsupported alignment from Lock Buffer.",
74 "EventCode": "0x54",
75 "Counter": "0,1,2,3",
76 "UMask": "0x20",
77 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_UNSUPPORTED_ALIGNMENT",
78 "SampleAfterValue": "2000003",
79 "BriefDescription": "Number of times a TSX Abort was triggered due to attempting an unsupported alignment from Lock Buffer",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "PublicDescription": "Number of times we could not allocate Lock Buffer.",
84 "EventCode": "0x54",
85 "Counter": "0,1,2,3",
86 "UMask": "0x40",
87 "EventName": "TX_MEM.HLE_ELISION_BUFFER_FULL",
88 "SampleAfterValue": "2000003",
89 "BriefDescription": "Number of times we could not allocate Lock Buffer",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "PublicDescription": "Unfriendly TSX abort triggered by a flowmarker.",
94 "EventCode": "0x5d",
95 "Counter": "0,1,2,3",
96 "UMask": "0x1",
97 "EventName": "TX_EXEC.MISC1",
98 "SampleAfterValue": "2000003",
99 "BriefDescription": "Counts the number of times a class of instructions that may cause a transactional abort was executed. Since this is the count of execution, it may not always cause a transactional abort.",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "PublicDescription": "Unfriendly TSX abort triggered by a vzeroupper instruction.",
104 "EventCode": "0x5d",
105 "Counter": "0,1,2,3",
106 "UMask": "0x2",
107 "EventName": "TX_EXEC.MISC2",
108 "SampleAfterValue": "2000003",
109 "BriefDescription": "Counts the number of times a class of instructions (e.g., vzeroupper) that may cause a transactional abort was executed inside a transactional region",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "PublicDescription": "Unfriendly TSX abort triggered by a nest count that is too deep.",
114 "EventCode": "0x5d",
115 "Counter": "0,1,2,3",
116 "UMask": "0x4",
117 "EventName": "TX_EXEC.MISC3",
118 "SampleAfterValue": "2000003",
119 "BriefDescription": "Counts the number of times an instruction execution caused the transactional nest count supported to be exceeded",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "PublicDescription": "RTM region detected inside HLE.",
124 "EventCode": "0x5d",
125 "Counter": "0,1,2,3",
126 "UMask": "0x8",
127 "EventName": "TX_EXEC.MISC4",
128 "SampleAfterValue": "2000003",
129 "BriefDescription": "Counts the number of times a XBEGIN instruction was executed inside an HLE transactional region.",
130 "CounterHTOff": "0,1,2,3,4,5,6,7"
131 },
132 {
133 "EventCode": "0x5d",
134 "Counter": "0,1,2,3",
135 "UMask": "0x10",
136 "EventName": "TX_EXEC.MISC5",
137 "SampleAfterValue": "2000003",
138 "BriefDescription": "Counts the number of times an HLE XACQUIRE instruction was executed inside an RTM transactional region.",
139 "CounterHTOff": "0,1,2,3,4,5,6,7"
140 },
141 {
142 "PublicDescription": "This event counts the number of memory ordering Machine Clears detected. Memory Ordering Machine Clears can result from one of the following:\n1. memory disambiguation,\n2. external snoop, or\n3. cross SMT-HW-thread snoop (stores) hitting load buffer.",
143 "EventCode": "0xC3",
144 "Counter": "0,1,2,3",
145 "UMask": "0x2",
146 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
147 "SampleAfterValue": "100003",
148 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "PublicDescription": "Number of times we entered an HLE region\n does not count nested transactions.",
153 "EventCode": "0xc8",
154 "Counter": "0,1,2,3",
155 "UMask": "0x1",
156 "EventName": "HLE_RETIRED.START",
157 "SampleAfterValue": "2000003",
158 "BriefDescription": "Number of times we entered an HLE region; does not count nested transactions",
159 "CounterHTOff": "0,1,2,3,4,5,6,7"
160 },
161 {
162 "PublicDescription": "Number of times HLE commit succeeded.",
163 "EventCode": "0xc8",
164 "Counter": "0,1,2,3",
165 "UMask": "0x2",
166 "EventName": "HLE_RETIRED.COMMIT",
167 "SampleAfterValue": "2000003",
168 "BriefDescription": "Number of times HLE commit succeeded",
169 "CounterHTOff": "0,1,2,3,4,5,6,7"
170 },
171 {
172 "PEBS": "1",
173 "PublicDescription": "Number of times HLE abort was triggered.",
174 "EventCode": "0xc8",
175 "Counter": "0,1,2,3",
176 "UMask": "0x4",
177 "EventName": "HLE_RETIRED.ABORTED",
178 "SampleAfterValue": "2000003",
179 "BriefDescription": "Number of times HLE abort was triggered",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "PublicDescription": "Number of times an HLE abort was attributed to a Memory condition (See TSX_Memory event for additional details).",
184 "EventCode": "0xc8",
185 "Counter": "0,1,2,3",
186 "UMask": "0x8",
187 "EventName": "HLE_RETIRED.ABORTED_MISC1",
188 "SampleAfterValue": "2000003",
189 "BriefDescription": "Number of times an HLE execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "PublicDescription": "Number of times the TSX watchdog signaled an HLE abort.",
194 "EventCode": "0xc8",
195 "Counter": "0,1,2,3",
196 "UMask": "0x10",
197 "EventName": "HLE_RETIRED.ABORTED_MISC2",
198 "SampleAfterValue": "2000003",
199 "BriefDescription": "Number of times an HLE execution aborted due to uncommon conditions",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "PublicDescription": "Number of times a disallowed operation caused an HLE abort.",
204 "EventCode": "0xc8",
205 "Counter": "0,1,2,3",
206 "UMask": "0x20",
207 "EventName": "HLE_RETIRED.ABORTED_MISC3",
208 "SampleAfterValue": "2000003",
209 "BriefDescription": "Number of times an HLE execution aborted due to HLE-unfriendly instructions",
210 "CounterHTOff": "0,1,2,3,4,5,6,7"
211 },
212 {
213 "PublicDescription": "Number of times HLE caused a fault.",
214 "EventCode": "0xc8",
215 "Counter": "0,1,2,3",
216 "UMask": "0x40",
217 "EventName": "HLE_RETIRED.ABORTED_MISC4",
218 "SampleAfterValue": "2000003",
219 "BriefDescription": "Number of times an HLE execution aborted due to incompatible memory type",
220 "CounterHTOff": "0,1,2,3,4,5,6,7"
221 },
222 {
223 "PublicDescription": "Number of times HLE aborted and was not due to the abort conditions in subevents 3-6.",
224 "EventCode": "0xc8",
225 "Counter": "0,1,2,3",
226 "UMask": "0x80",
227 "EventName": "HLE_RETIRED.ABORTED_MISC5",
228 "SampleAfterValue": "2000003",
229 "BriefDescription": "Number of times an HLE execution aborted due to none of the previous 4 categories (e.g. interrupts)",
230 "CounterHTOff": "0,1,2,3,4,5,6,7"
231 },
232 {
233 "PublicDescription": "Number of times we entered an RTM region\n does not count nested transactions.",
234 "EventCode": "0xc9",
235 "Counter": "0,1,2,3",
236 "UMask": "0x1",
237 "EventName": "RTM_RETIRED.START",
238 "SampleAfterValue": "2000003",
239 "BriefDescription": "Number of times we entered an RTM region; does not count nested transactions",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "PublicDescription": "Number of times RTM commit succeeded.",
244 "EventCode": "0xc9",
245 "Counter": "0,1,2,3",
246 "UMask": "0x2",
247 "EventName": "RTM_RETIRED.COMMIT",
248 "SampleAfterValue": "2000003",
249 "BriefDescription": "Number of times RTM commit succeeded",
250 "CounterHTOff": "0,1,2,3"
251 },
252 {
253 "PEBS": "1",
254 "PublicDescription": "Number of times RTM abort was triggered .",
255 "EventCode": "0xc9",
256 "Counter": "0,1,2,3",
257 "UMask": "0x4",
258 "EventName": "RTM_RETIRED.ABORTED",
259 "SampleAfterValue": "2000003",
260 "BriefDescription": "Number of times RTM abort was triggered",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "PublicDescription": "Number of times an RTM abort was attributed to a Memory condition (See TSX_Memory event for additional details).",
265 "EventCode": "0xc9",
266 "Counter": "0,1,2,3",
267 "UMask": "0x8",
268 "EventName": "RTM_RETIRED.ABORTED_MISC1",
269 "SampleAfterValue": "2000003",
270 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts)",
271 "CounterHTOff": "0,1,2,3"
272 },
273 {
274 "PublicDescription": "Number of times the TSX watchdog signaled an RTM abort.",
275 "EventCode": "0xc9",
276 "Counter": "0,1,2,3",
277 "UMask": "0x10",
278 "EventName": "RTM_RETIRED.ABORTED_MISC2",
279 "SampleAfterValue": "2000003",
280 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
281 "CounterHTOff": "0,1,2,3"
282 },
283 {
284 "PublicDescription": "Number of times a disallowed operation caused an RTM abort.",
285 "EventCode": "0xc9",
286 "Counter": "0,1,2,3",
287 "UMask": "0x20",
288 "EventName": "RTM_RETIRED.ABORTED_MISC3",
289 "SampleAfterValue": "2000003",
290 "BriefDescription": "Number of times an RTM execution aborted due to HLE-unfriendly instructions",
291 "CounterHTOff": "0,1,2,3"
292 },
293 {
294 "PublicDescription": "Number of times a RTM caused a fault.",
295 "EventCode": "0xc9",
296 "Counter": "0,1,2,3",
297 "UMask": "0x40",
298 "EventName": "RTM_RETIRED.ABORTED_MISC4",
299 "SampleAfterValue": "2000003",
300 "BriefDescription": "Number of times an RTM execution aborted due to incompatible memory type",
301 "CounterHTOff": "0,1,2,3"
302 },
303 {
304 "PublicDescription": "Number of times RTM aborted and was not due to the abort conditions in subevents 3-6.",
305 "EventCode": "0xc9",
306 "Counter": "0,1,2,3",
307 "UMask": "0x80",
308 "EventName": "RTM_RETIRED.ABORTED_MISC5",
309 "SampleAfterValue": "2000003",
310 "BriefDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt)",
311 "CounterHTOff": "0,1,2,3"
312 },
313 {
314 "PEBS": "2",
315 "PublicDescription": "This event counts loads with latency value being above four.",
316 "EventCode": "0xCD",
317 "MSRValue": "0x4",
318 "Counter": "3",
319 "UMask": "0x1",
320 "Errata": "BDM100, BDM35",
321 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
322 "MSRIndex": "0x3F6",
323 "SampleAfterValue": "100003",
324 "BriefDescription": "Loads with latency value being above 4",
325 "TakenAlone": "1",
326 "CounterHTOff": "3"
327 },
328 {
329 "PEBS": "2",
330 "PublicDescription": "This event counts loads with latency value being above eight.",
331 "EventCode": "0xCD",
332 "MSRValue": "0x8",
333 "Counter": "3",
334 "UMask": "0x1",
335 "Errata": "BDM100, BDM35",
336 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
337 "MSRIndex": "0x3F6",
338 "SampleAfterValue": "50021",
339 "BriefDescription": "Loads with latency value being above 8",
340 "TakenAlone": "1",
341 "CounterHTOff": "3"
342 },
343 {
344 "PEBS": "2",
345 "PublicDescription": "This event counts loads with latency value being above 16.",
346 "EventCode": "0xCD",
347 "MSRValue": "0x10",
348 "Counter": "3",
349 "UMask": "0x1",
350 "Errata": "BDM100, BDM35",
351 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
352 "MSRIndex": "0x3F6",
353 "SampleAfterValue": "20011",
354 "BriefDescription": "Loads with latency value being above 16",
355 "TakenAlone": "1",
356 "CounterHTOff": "3"
357 },
358 {
359 "PEBS": "2",
360 "PublicDescription": "This event counts loads with latency value being above 32.",
361 "EventCode": "0xCD",
362 "MSRValue": "0x20",
363 "Counter": "3",
364 "UMask": "0x1",
365 "Errata": "BDM100, BDM35",
366 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
367 "MSRIndex": "0x3F6",
368 "SampleAfterValue": "100007",
369 "BriefDescription": "Loads with latency value being above 32",
370 "TakenAlone": "1",
371 "CounterHTOff": "3"
372 },
373 {
374 "PEBS": "2",
375 "PublicDescription": "This event counts loads with latency value being above 64.",
376 "EventCode": "0xCD",
377 "MSRValue": "0x40",
378 "Counter": "3",
379 "UMask": "0x1",
380 "Errata": "BDM100, BDM35",
381 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
382 "MSRIndex": "0x3F6",
383 "SampleAfterValue": "2003",
384 "BriefDescription": "Loads with latency value being above 64",
385 "TakenAlone": "1",
386 "CounterHTOff": "3"
387 },
388 {
389 "PEBS": "2",
390 "PublicDescription": "This event counts loads with latency value being above 128.",
391 "EventCode": "0xCD",
392 "MSRValue": "0x80",
393 "Counter": "3",
394 "UMask": "0x1",
395 "Errata": "BDM100, BDM35",
396 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
397 "MSRIndex": "0x3F6",
398 "SampleAfterValue": "1009",
399 "BriefDescription": "Loads with latency value being above 128",
400 "TakenAlone": "1",
401 "CounterHTOff": "3"
402 },
403 {
404 "PEBS": "2",
405 "PublicDescription": "This event counts loads with latency value being above 256.",
406 "EventCode": "0xCD",
407 "MSRValue": "0x100",
408 "Counter": "3",
409 "UMask": "0x1",
410 "Errata": "BDM100, BDM35",
411 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
412 "MSRIndex": "0x3F6",
413 "SampleAfterValue": "503",
414 "BriefDescription": "Loads with latency value being above 256",
415 "TakenAlone": "1",
416 "CounterHTOff": "3"
417 },
418 {
419 "PEBS": "2",
420 "PublicDescription": "This event counts loads with latency value being above 512.",
421 "EventCode": "0xCD",
422 "MSRValue": "0x200",
423 "Counter": "3",
424 "UMask": "0x1",
425 "Errata": "BDM100, BDM35",
426 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
427 "MSRIndex": "0x3F6",
428 "SampleAfterValue": "101",
429 "BriefDescription": "Loads with latency value being above 512",
430 "TakenAlone": "1",
431 "CounterHTOff": "3"
432 },
433 {
434 "EventCode": "0xB7, 0xBB",
435 "MSRValue": "0x2000020001 ",
436 "Counter": "0,1,2,3",
437 "UMask": "0x1",
438 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
439 "MSRIndex": "0x1a6,0x1a7",
440 "SampleAfterValue": "100003",
441 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
442 "Offcore": "1",
443 "CounterHTOff": "0,1,2,3"
444 },
445 {
446 "EventCode": "0xB7, 0xBB",
447 "MSRValue": "0x20003c0001 ",
448 "Counter": "0,1,2,3",
449 "UMask": "0x1",
450 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_NON_DRAM",
451 "MSRIndex": "0x1a6,0x1a7",
452 "SampleAfterValue": "100003",
453 "BriefDescription": "Counts demand data reads that hit in the L3 and the target was non-DRAM system address.",
454 "Offcore": "1",
455 "CounterHTOff": "0,1,2,3"
456 },
457 {
458 "EventCode": "0xB7, 0xBB",
459 "MSRValue": "0x0084000001 ",
460 "Counter": "0,1,2,3",
461 "UMask": "0x1",
462 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
463 "MSRIndex": "0x1a6,0x1a7",
464 "SampleAfterValue": "100003",
465 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
466 "Offcore": "1",
467 "CounterHTOff": "0,1,2,3"
468 },
469 {
470 "EventCode": "0xB7, 0xBB",
471 "MSRValue": "0x0104000001 ",
472 "Counter": "0,1,2,3",
473 "UMask": "0x1",
474 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
475 "MSRIndex": "0x1a6,0x1a7",
476 "SampleAfterValue": "100003",
477 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
478 "Offcore": "1",
479 "CounterHTOff": "0,1,2,3"
480 },
481 {
482 "EventCode": "0xB7, 0xBB",
483 "MSRValue": "0x0204000001 ",
484 "Counter": "0,1,2,3",
485 "UMask": "0x1",
486 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
487 "MSRIndex": "0x1a6,0x1a7",
488 "SampleAfterValue": "100003",
489 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
490 "Offcore": "1",
491 "CounterHTOff": "0,1,2,3"
492 },
493 {
494 "EventCode": "0xB7, 0xBB",
495 "MSRValue": "0x0404000001 ",
496 "Counter": "0,1,2,3",
497 "UMask": "0x1",
498 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
499 "MSRIndex": "0x1a6,0x1a7",
500 "SampleAfterValue": "100003",
501 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
502 "Offcore": "1",
503 "CounterHTOff": "0,1,2,3"
504 },
505 {
506 "EventCode": "0xB7, 0xBB",
507 "MSRValue": "0x1004000001 ",
508 "Counter": "0,1,2,3",
509 "UMask": "0x1",
510 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
511 "MSRIndex": "0x1a6,0x1a7",
512 "SampleAfterValue": "100003",
513 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
514 "Offcore": "1",
515 "CounterHTOff": "0,1,2,3"
516 },
517 {
518 "EventCode": "0xB7, 0xBB",
519 "MSRValue": "0x2004000001 ",
520 "Counter": "0,1,2,3",
521 "UMask": "0x1",
522 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
523 "MSRIndex": "0x1a6,0x1a7",
524 "SampleAfterValue": "100003",
525 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
526 "Offcore": "1",
527 "CounterHTOff": "0,1,2,3"
528 },
529 {
530 "EventCode": "0xB7, 0xBB",
531 "MSRValue": "0x3f84000001 ",
532 "Counter": "0,1,2,3",
533 "UMask": "0x1",
534 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
535 "MSRIndex": "0x1a6,0x1a7",
536 "SampleAfterValue": "100003",
537 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
538 "Offcore": "1",
539 "CounterHTOff": "0,1,2,3"
540 },
541 {
542 "EventCode": "0xB7, 0xBB",
543 "MSRValue": "0x00bc000001 ",
544 "Counter": "0,1,2,3",
545 "UMask": "0x1",
546 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_NONE",
547 "MSRIndex": "0x1a6,0x1a7",
548 "SampleAfterValue": "100003",
549 "BriefDescription": "Counts demand data reads that miss the L3 with no details on snoop-related information.",
550 "Offcore": "1",
551 "CounterHTOff": "0,1,2,3"
552 },
553 {
554 "EventCode": "0xB7, 0xBB",
555 "MSRValue": "0x013c000001 ",
556 "Counter": "0,1,2,3",
557 "UMask": "0x1",
558 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_NOT_NEEDED",
559 "MSRIndex": "0x1a6,0x1a7",
560 "SampleAfterValue": "100003",
561 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_NOT_NEEDED",
562 "Offcore": "1",
563 "CounterHTOff": "0,1,2,3"
564 },
565 {
566 "EventCode": "0xB7, 0xBB",
567 "MSRValue": "0x023c000001 ",
568 "Counter": "0,1,2,3",
569 "UMask": "0x1",
570 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_MISS",
571 "MSRIndex": "0x1a6,0x1a7",
572 "SampleAfterValue": "100003",
573 "BriefDescription": "Counts demand data reads that miss the L3 with a snoop miss response.",
574 "Offcore": "1",
575 "CounterHTOff": "0,1,2,3"
576 },
577 {
578 "EventCode": "0xB7, 0xBB",
579 "MSRValue": "0x043c000001 ",
580 "Counter": "0,1,2,3",
581 "UMask": "0x1",
582 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_HIT_NO_FWD",
583 "MSRIndex": "0x1a6,0x1a7",
584 "SampleAfterValue": "100003",
585 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_HIT_NO_FWD",
586 "Offcore": "1",
587 "CounterHTOff": "0,1,2,3"
588 },
589 {
590 "EventCode": "0xB7, 0xBB",
591 "MSRValue": "0x20003c0002 ",
592 "Counter": "0,1,2,3",
593 "UMask": "0x1",
594 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_NON_DRAM",
595 "MSRIndex": "0x1a6,0x1a7",
596 "SampleAfterValue": "100003",
597 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the target was non-DRAM system address.",
598 "Offcore": "1",
599 "CounterHTOff": "0,1,2,3"
600 },
601 {
602 "EventCode": "0xB7, 0xBB",
603 "MSRValue": "0x3f84000002 ",
604 "Counter": "0,1,2,3",
605 "UMask": "0x1",
606 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
607 "MSRIndex": "0x1a6,0x1a7",
608 "SampleAfterValue": "100003",
609 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
610 "Offcore": "1",
611 "CounterHTOff": "0,1,2,3"
612 },
613 {
614 "EventCode": "0xB7, 0xBB",
615 "MSRValue": "0x00bc000002 ",
616 "Counter": "0,1,2,3",
617 "UMask": "0x1",
618 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_NONE",
619 "MSRIndex": "0x1a6,0x1a7",
620 "SampleAfterValue": "100003",
621 "BriefDescription": "Counts all demand data writes (RFOs) that miss the L3 with no details on snoop-related information.",
622 "Offcore": "1",
623 "CounterHTOff": "0,1,2,3"
624 },
625 {
626 "EventCode": "0xB7, 0xBB",
627 "MSRValue": "0x013c000002 ",
628 "Counter": "0,1,2,3",
629 "UMask": "0x1",
630 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_NOT_NEEDED",
631 "MSRIndex": "0x1a6,0x1a7",
632 "SampleAfterValue": "100003",
633 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_NOT_NEEDED",
634 "Offcore": "1",
635 "CounterHTOff": "0,1,2,3"
636 },
637 {
638 "EventCode": "0xB7, 0xBB",
639 "MSRValue": "0x023c000002 ",
640 "Counter": "0,1,2,3",
641 "UMask": "0x1",
642 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_MISS",
643 "MSRIndex": "0x1a6,0x1a7",
644 "SampleAfterValue": "100003",
645 "BriefDescription": "Counts all demand data writes (RFOs) that miss the L3 with a snoop miss response.",
646 "Offcore": "1",
647 "CounterHTOff": "0,1,2,3"
648 },
649 {
650 "EventCode": "0xB7, 0xBB",
651 "MSRValue": "0x043c000002 ",
652 "Counter": "0,1,2,3",
653 "UMask": "0x1",
654 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_HIT_NO_FWD",
655 "MSRIndex": "0x1a6,0x1a7",
656 "SampleAfterValue": "100003",
657 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_HIT_NO_FWD",
658 "Offcore": "1",
659 "CounterHTOff": "0,1,2,3"
660 },
661 {
662 "EventCode": "0xB7, 0xBB",
663 "MSRValue": "0x2000020004 ",
664 "Counter": "0,1,2,3",
665 "UMask": "0x1",
666 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
667 "MSRIndex": "0x1a6,0x1a7",
668 "SampleAfterValue": "100003",
669 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
670 "Offcore": "1",
671 "CounterHTOff": "0,1,2,3"
672 },
673 {
674 "EventCode": "0xB7, 0xBB",
675 "MSRValue": "0x20003c0004 ",
676 "Counter": "0,1,2,3",
677 "UMask": "0x1",
678 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_NON_DRAM",
679 "MSRIndex": "0x1a6,0x1a7",
680 "SampleAfterValue": "100003",
681 "BriefDescription": "Counts all demand code reads that hit in the L3 and the target was non-DRAM system address.",
682 "Offcore": "1",
683 "CounterHTOff": "0,1,2,3"
684 },
685 {
686 "EventCode": "0xB7, 0xBB",
687 "MSRValue": "0x0084000004 ",
688 "Counter": "0,1,2,3",
689 "UMask": "0x1",
690 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
691 "MSRIndex": "0x1a6,0x1a7",
692 "SampleAfterValue": "100003",
693 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
694 "Offcore": "1",
695 "CounterHTOff": "0,1,2,3"
696 },
697 {
698 "EventCode": "0xB7, 0xBB",
699 "MSRValue": "0x0104000004 ",
700 "Counter": "0,1,2,3",
701 "UMask": "0x1",
702 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
703 "MSRIndex": "0x1a6,0x1a7",
704 "SampleAfterValue": "100003",
705 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
706 "Offcore": "1",
707 "CounterHTOff": "0,1,2,3"
708 },
709 {
710 "EventCode": "0xB7, 0xBB",
711 "MSRValue": "0x0204000004 ",
712 "Counter": "0,1,2,3",
713 "UMask": "0x1",
714 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
715 "MSRIndex": "0x1a6,0x1a7",
716 "SampleAfterValue": "100003",
717 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
718 "Offcore": "1",
719 "CounterHTOff": "0,1,2,3"
720 },
721 {
722 "EventCode": "0xB7, 0xBB",
723 "MSRValue": "0x0404000004 ",
724 "Counter": "0,1,2,3",
725 "UMask": "0x1",
726 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
727 "MSRIndex": "0x1a6,0x1a7",
728 "SampleAfterValue": "100003",
729 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
730 "Offcore": "1",
731 "CounterHTOff": "0,1,2,3"
732 },
733 {
734 "EventCode": "0xB7, 0xBB",
735 "MSRValue": "0x1004000004 ",
736 "Counter": "0,1,2,3",
737 "UMask": "0x1",
738 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
739 "MSRIndex": "0x1a6,0x1a7",
740 "SampleAfterValue": "100003",
741 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
742 "Offcore": "1",
743 "CounterHTOff": "0,1,2,3"
744 },
745 {
746 "EventCode": "0xB7, 0xBB",
747 "MSRValue": "0x2004000004 ",
748 "Counter": "0,1,2,3",
749 "UMask": "0x1",
750 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
751 "MSRIndex": "0x1a6,0x1a7",
752 "SampleAfterValue": "100003",
753 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
754 "Offcore": "1",
755 "CounterHTOff": "0,1,2,3"
756 },
757 {
758 "EventCode": "0xB7, 0xBB",
759 "MSRValue": "0x3f84000004 ",
760 "Counter": "0,1,2,3",
761 "UMask": "0x1",
762 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
763 "MSRIndex": "0x1a6,0x1a7",
764 "SampleAfterValue": "100003",
765 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
766 "Offcore": "1",
767 "CounterHTOff": "0,1,2,3"
768 },
769 {
770 "EventCode": "0xB7, 0xBB",
771 "MSRValue": "0x00bc000004 ",
772 "Counter": "0,1,2,3",
773 "UMask": "0x1",
774 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_NONE",
775 "MSRIndex": "0x1a6,0x1a7",
776 "SampleAfterValue": "100003",
777 "BriefDescription": "Counts all demand code reads that miss the L3 with no details on snoop-related information.",
778 "Offcore": "1",
779 "CounterHTOff": "0,1,2,3"
780 },
781 {
782 "EventCode": "0xB7, 0xBB",
783 "MSRValue": "0x013c000004 ",
784 "Counter": "0,1,2,3",
785 "UMask": "0x1",
786 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_NOT_NEEDED",
787 "MSRIndex": "0x1a6,0x1a7",
788 "SampleAfterValue": "100003",
789 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_NOT_NEEDED",
790 "Offcore": "1",
791 "CounterHTOff": "0,1,2,3"
792 },
793 {
794 "EventCode": "0xB7, 0xBB",
795 "MSRValue": "0x023c000004 ",
796 "Counter": "0,1,2,3",
797 "UMask": "0x1",
798 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_MISS",
799 "MSRIndex": "0x1a6,0x1a7",
800 "SampleAfterValue": "100003",
801 "BriefDescription": "Counts all demand code reads that miss the L3 with a snoop miss response.",
802 "Offcore": "1",
803 "CounterHTOff": "0,1,2,3"
804 },
805 {
806 "EventCode": "0xB7, 0xBB",
807 "MSRValue": "0x043c000004 ",
808 "Counter": "0,1,2,3",
809 "UMask": "0x1",
810 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_HIT_NO_FWD",
811 "MSRIndex": "0x1a6,0x1a7",
812 "SampleAfterValue": "100003",
813 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_HIT_NO_FWD",
814 "Offcore": "1",
815 "CounterHTOff": "0,1,2,3"
816 },
817 {
818 "EventCode": "0xB7, 0xBB",
819 "MSRValue": "0x2000020008 ",
820 "Counter": "0,1,2,3",
821 "UMask": "0x1",
822 "EventName": "OFFCORE_RESPONSE.COREWB.SUPPLIER_NONE.SNOOP_NON_DRAM",
823 "MSRIndex": "0x1a6,0x1a7",
824 "SampleAfterValue": "100003",
825 "BriefDescription": "COREWB & SUPPLIER_NONE & SNOOP_NON_DRAM",
826 "Offcore": "1",
827 "CounterHTOff": "0,1,2,3"
828 },
829 {
830 "EventCode": "0xB7, 0xBB",
831 "MSRValue": "0x20003c0008 ",
832 "Counter": "0,1,2,3",
833 "UMask": "0x1",
834 "EventName": "OFFCORE_RESPONSE.COREWB.L3_HIT.SNOOP_NON_DRAM",
835 "MSRIndex": "0x1a6,0x1a7",
836 "SampleAfterValue": "100003",
837 "BriefDescription": "Counts writebacks (modified to exclusive) that hit in the L3 and the target was non-DRAM system address.",
838 "Offcore": "1",
839 "CounterHTOff": "0,1,2,3"
840 },
841 {
842 "EventCode": "0xB7, 0xBB",
843 "MSRValue": "0x0084000008 ",
844 "Counter": "0,1,2,3",
845 "UMask": "0x1",
846 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
847 "MSRIndex": "0x1a6,0x1a7",
848 "SampleAfterValue": "100003",
849 "BriefDescription": "COREWB & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
850 "Offcore": "1",
851 "CounterHTOff": "0,1,2,3"
852 },
853 {
854 "EventCode": "0xB7, 0xBB",
855 "MSRValue": "0x0104000008 ",
856 "Counter": "0,1,2,3",
857 "UMask": "0x1",
858 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
859 "MSRIndex": "0x1a6,0x1a7",
860 "SampleAfterValue": "100003",
861 "BriefDescription": "COREWB & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
862 "Offcore": "1",
863 "CounterHTOff": "0,1,2,3"
864 },
865 {
866 "EventCode": "0xB7, 0xBB",
867 "MSRValue": "0x0204000008 ",
868 "Counter": "0,1,2,3",
869 "UMask": "0x1",
870 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
871 "MSRIndex": "0x1a6,0x1a7",
872 "SampleAfterValue": "100003",
873 "BriefDescription": "COREWB & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
874 "Offcore": "1",
875 "CounterHTOff": "0,1,2,3"
876 },
877 {
878 "EventCode": "0xB7, 0xBB",
879 "MSRValue": "0x0404000008 ",
880 "Counter": "0,1,2,3",
881 "UMask": "0x1",
882 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
883 "MSRIndex": "0x1a6,0x1a7",
884 "SampleAfterValue": "100003",
885 "BriefDescription": "COREWB & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
886 "Offcore": "1",
887 "CounterHTOff": "0,1,2,3"
888 },
889 {
890 "EventCode": "0xB7, 0xBB",
891 "MSRValue": "0x1004000008 ",
892 "Counter": "0,1,2,3",
893 "UMask": "0x1",
894 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
895 "MSRIndex": "0x1a6,0x1a7",
896 "SampleAfterValue": "100003",
897 "BriefDescription": "COREWB & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
898 "Offcore": "1",
899 "CounterHTOff": "0,1,2,3"
900 },
901 {
902 "EventCode": "0xB7, 0xBB",
903 "MSRValue": "0x2004000008 ",
904 "Counter": "0,1,2,3",
905 "UMask": "0x1",
906 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
907 "MSRIndex": "0x1a6,0x1a7",
908 "SampleAfterValue": "100003",
909 "BriefDescription": "COREWB & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
910 "Offcore": "1",
911 "CounterHTOff": "0,1,2,3"
912 },
913 {
914 "EventCode": "0xB7, 0xBB",
915 "MSRValue": "0x3f84000008 ",
916 "Counter": "0,1,2,3",
917 "UMask": "0x1",
918 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
919 "MSRIndex": "0x1a6,0x1a7",
920 "SampleAfterValue": "100003",
921 "BriefDescription": "COREWB & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
922 "Offcore": "1",
923 "CounterHTOff": "0,1,2,3"
924 },
925 {
926 "EventCode": "0xB7, 0xBB",
927 "MSRValue": "0x00bc000008 ",
928 "Counter": "0,1,2,3",
929 "UMask": "0x1",
930 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS.SNOOP_NONE",
931 "MSRIndex": "0x1a6,0x1a7",
932 "SampleAfterValue": "100003",
933 "BriefDescription": "Counts writebacks (modified to exclusive) that miss the L3 with no details on snoop-related information.",
934 "Offcore": "1",
935 "CounterHTOff": "0,1,2,3"
936 },
937 {
938 "EventCode": "0xB7, 0xBB",
939 "MSRValue": "0x013c000008 ",
940 "Counter": "0,1,2,3",
941 "UMask": "0x1",
942 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS.SNOOP_NOT_NEEDED",
943 "MSRIndex": "0x1a6,0x1a7",
944 "SampleAfterValue": "100003",
945 "BriefDescription": "COREWB & L3_MISS & SNOOP_NOT_NEEDED",
946 "Offcore": "1",
947 "CounterHTOff": "0,1,2,3"
948 },
949 {
950 "EventCode": "0xB7, 0xBB",
951 "MSRValue": "0x023c000008 ",
952 "Counter": "0,1,2,3",
953 "UMask": "0x1",
954 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS.SNOOP_MISS",
955 "MSRIndex": "0x1a6,0x1a7",
956 "SampleAfterValue": "100003",
957 "BriefDescription": "Counts writebacks (modified to exclusive) that miss the L3 with a snoop miss response.",
958 "Offcore": "1",
959 "CounterHTOff": "0,1,2,3"
960 },
961 {
962 "EventCode": "0xB7, 0xBB",
963 "MSRValue": "0x043c000008 ",
964 "Counter": "0,1,2,3",
965 "UMask": "0x1",
966 "EventName": "OFFCORE_RESPONSE.COREWB.L3_MISS.SNOOP_HIT_NO_FWD",
967 "MSRIndex": "0x1a6,0x1a7",
968 "SampleAfterValue": "100003",
969 "BriefDescription": "COREWB & L3_MISS & SNOOP_HIT_NO_FWD",
970 "Offcore": "1",
971 "CounterHTOff": "0,1,2,3"
972 },
973 {
974 "EventCode": "0xB7, 0xBB",
975 "MSRValue": "0x2000020010 ",
976 "Counter": "0,1,2,3",
977 "UMask": "0x1",
978 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
979 "MSRIndex": "0x1a6,0x1a7",
980 "SampleAfterValue": "100003",
981 "BriefDescription": "PF_L2_DATA_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
982 "Offcore": "1",
983 "CounterHTOff": "0,1,2,3"
984 },
985 {
986 "EventCode": "0xB7, 0xBB",
987 "MSRValue": "0x20003c0010 ",
988 "Counter": "0,1,2,3",
989 "UMask": "0x1",
990 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.SNOOP_NON_DRAM",
991 "MSRIndex": "0x1a6,0x1a7",
992 "SampleAfterValue": "100003",
993 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3 and the target was non-DRAM system address.",
994 "Offcore": "1",
995 "CounterHTOff": "0,1,2,3"
996 },
997 {
998 "EventCode": "0xB7, 0xBB",
999 "MSRValue": "0x0084000010 ",
1000 "Counter": "0,1,2,3",
1001 "UMask": "0x1",
1002 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1003 "MSRIndex": "0x1a6,0x1a7",
1004 "SampleAfterValue": "100003",
1005 "BriefDescription": "PF_L2_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1006 "Offcore": "1",
1007 "CounterHTOff": "0,1,2,3"
1008 },
1009 {
1010 "EventCode": "0xB7, 0xBB",
1011 "MSRValue": "0x0104000010 ",
1012 "Counter": "0,1,2,3",
1013 "UMask": "0x1",
1014 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1015 "MSRIndex": "0x1a6,0x1a7",
1016 "SampleAfterValue": "100003",
1017 "BriefDescription": "PF_L2_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1018 "Offcore": "1",
1019 "CounterHTOff": "0,1,2,3"
1020 },
1021 {
1022 "EventCode": "0xB7, 0xBB",
1023 "MSRValue": "0x0204000010 ",
1024 "Counter": "0,1,2,3",
1025 "UMask": "0x1",
1026 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1027 "MSRIndex": "0x1a6,0x1a7",
1028 "SampleAfterValue": "100003",
1029 "BriefDescription": "PF_L2_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1030 "Offcore": "1",
1031 "CounterHTOff": "0,1,2,3"
1032 },
1033 {
1034 "EventCode": "0xB7, 0xBB",
1035 "MSRValue": "0x0404000010 ",
1036 "Counter": "0,1,2,3",
1037 "UMask": "0x1",
1038 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1039 "MSRIndex": "0x1a6,0x1a7",
1040 "SampleAfterValue": "100003",
1041 "BriefDescription": "PF_L2_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1042 "Offcore": "1",
1043 "CounterHTOff": "0,1,2,3"
1044 },
1045 {
1046 "EventCode": "0xB7, 0xBB",
1047 "MSRValue": "0x1004000010 ",
1048 "Counter": "0,1,2,3",
1049 "UMask": "0x1",
1050 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1051 "MSRIndex": "0x1a6,0x1a7",
1052 "SampleAfterValue": "100003",
1053 "BriefDescription": "PF_L2_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1054 "Offcore": "1",
1055 "CounterHTOff": "0,1,2,3"
1056 },
1057 {
1058 "EventCode": "0xB7, 0xBB",
1059 "MSRValue": "0x2004000010 ",
1060 "Counter": "0,1,2,3",
1061 "UMask": "0x1",
1062 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1063 "MSRIndex": "0x1a6,0x1a7",
1064 "SampleAfterValue": "100003",
1065 "BriefDescription": "PF_L2_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1066 "Offcore": "1",
1067 "CounterHTOff": "0,1,2,3"
1068 },
1069 {
1070 "EventCode": "0xB7, 0xBB",
1071 "MSRValue": "0x3f84000010 ",
1072 "Counter": "0,1,2,3",
1073 "UMask": "0x1",
1074 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1075 "MSRIndex": "0x1a6,0x1a7",
1076 "SampleAfterValue": "100003",
1077 "BriefDescription": "PF_L2_DATA_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1078 "Offcore": "1",
1079 "CounterHTOff": "0,1,2,3"
1080 },
1081 {
1082 "EventCode": "0xB7, 0xBB",
1083 "MSRValue": "0x00bc000010 ",
1084 "Counter": "0,1,2,3",
1085 "UMask": "0x1",
1086 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS.SNOOP_NONE",
1087 "MSRIndex": "0x1a6,0x1a7",
1088 "SampleAfterValue": "100003",
1089 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the L3 with no details on snoop-related information.",
1090 "Offcore": "1",
1091 "CounterHTOff": "0,1,2,3"
1092 },
1093 {
1094 "EventCode": "0xB7, 0xBB",
1095 "MSRValue": "0x013c000010 ",
1096 "Counter": "0,1,2,3",
1097 "UMask": "0x1",
1098 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS.SNOOP_NOT_NEEDED",
1099 "MSRIndex": "0x1a6,0x1a7",
1100 "SampleAfterValue": "100003",
1101 "BriefDescription": "PF_L2_DATA_RD & L3_MISS & SNOOP_NOT_NEEDED",
1102 "Offcore": "1",
1103 "CounterHTOff": "0,1,2,3"
1104 },
1105 {
1106 "EventCode": "0xB7, 0xBB",
1107 "MSRValue": "0x023c000010 ",
1108 "Counter": "0,1,2,3",
1109 "UMask": "0x1",
1110 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS.SNOOP_MISS",
1111 "MSRIndex": "0x1a6,0x1a7",
1112 "SampleAfterValue": "100003",
1113 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the L3 with a snoop miss response.",
1114 "Offcore": "1",
1115 "CounterHTOff": "0,1,2,3"
1116 },
1117 {
1118 "EventCode": "0xB7, 0xBB",
1119 "MSRValue": "0x043c000010 ",
1120 "Counter": "0,1,2,3",
1121 "UMask": "0x1",
1122 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS.SNOOP_HIT_NO_FWD",
1123 "MSRIndex": "0x1a6,0x1a7",
1124 "SampleAfterValue": "100003",
1125 "BriefDescription": "PF_L2_DATA_RD & L3_MISS & SNOOP_HIT_NO_FWD",
1126 "Offcore": "1",
1127 "CounterHTOff": "0,1,2,3"
1128 },
1129 {
1130 "EventCode": "0xB7, 0xBB",
1131 "MSRValue": "0x2000020020 ",
1132 "Counter": "0,1,2,3",
1133 "UMask": "0x1",
1134 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE.SNOOP_NON_DRAM",
1135 "MSRIndex": "0x1a6,0x1a7",
1136 "SampleAfterValue": "100003",
1137 "BriefDescription": "PF_L2_RFO & SUPPLIER_NONE & SNOOP_NON_DRAM",
1138 "Offcore": "1",
1139 "CounterHTOff": "0,1,2,3"
1140 },
1141 {
1142 "EventCode": "0xB7, 0xBB",
1143 "MSRValue": "0x20003c0020 ",
1144 "Counter": "0,1,2,3",
1145 "UMask": "0x1",
1146 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.SNOOP_NON_DRAM",
1147 "MSRIndex": "0x1a6,0x1a7",
1148 "SampleAfterValue": "100003",
1149 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3 and the target was non-DRAM system address.",
1150 "Offcore": "1",
1151 "CounterHTOff": "0,1,2,3"
1152 },
1153 {
1154 "EventCode": "0xB7, 0xBB",
1155 "MSRValue": "0x0084000020 ",
1156 "Counter": "0,1,2,3",
1157 "UMask": "0x1",
1158 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1159 "MSRIndex": "0x1a6,0x1a7",
1160 "SampleAfterValue": "100003",
1161 "BriefDescription": "PF_L2_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1162 "Offcore": "1",
1163 "CounterHTOff": "0,1,2,3"
1164 },
1165 {
1166 "EventCode": "0xB7, 0xBB",
1167 "MSRValue": "0x0104000020 ",
1168 "Counter": "0,1,2,3",
1169 "UMask": "0x1",
1170 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1171 "MSRIndex": "0x1a6,0x1a7",
1172 "SampleAfterValue": "100003",
1173 "BriefDescription": "PF_L2_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1174 "Offcore": "1",
1175 "CounterHTOff": "0,1,2,3"
1176 },
1177 {
1178 "EventCode": "0xB7, 0xBB",
1179 "MSRValue": "0x0204000020 ",
1180 "Counter": "0,1,2,3",
1181 "UMask": "0x1",
1182 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1183 "MSRIndex": "0x1a6,0x1a7",
1184 "SampleAfterValue": "100003",
1185 "BriefDescription": "PF_L2_RFO & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1186 "Offcore": "1",
1187 "CounterHTOff": "0,1,2,3"
1188 },
1189 {
1190 "EventCode": "0xB7, 0xBB",
1191 "MSRValue": "0x0404000020 ",
1192 "Counter": "0,1,2,3",
1193 "UMask": "0x1",
1194 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1195 "MSRIndex": "0x1a6,0x1a7",
1196 "SampleAfterValue": "100003",
1197 "BriefDescription": "PF_L2_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1198 "Offcore": "1",
1199 "CounterHTOff": "0,1,2,3"
1200 },
1201 {
1202 "EventCode": "0xB7, 0xBB",
1203 "MSRValue": "0x1004000020 ",
1204 "Counter": "0,1,2,3",
1205 "UMask": "0x1",
1206 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1207 "MSRIndex": "0x1a6,0x1a7",
1208 "SampleAfterValue": "100003",
1209 "BriefDescription": "PF_L2_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1210 "Offcore": "1",
1211 "CounterHTOff": "0,1,2,3"
1212 },
1213 {
1214 "EventCode": "0xB7, 0xBB",
1215 "MSRValue": "0x2004000020 ",
1216 "Counter": "0,1,2,3",
1217 "UMask": "0x1",
1218 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1219 "MSRIndex": "0x1a6,0x1a7",
1220 "SampleAfterValue": "100003",
1221 "BriefDescription": "PF_L2_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1222 "Offcore": "1",
1223 "CounterHTOff": "0,1,2,3"
1224 },
1225 {
1226 "EventCode": "0xB7, 0xBB",
1227 "MSRValue": "0x3f84000020 ",
1228 "Counter": "0,1,2,3",
1229 "UMask": "0x1",
1230 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1231 "MSRIndex": "0x1a6,0x1a7",
1232 "SampleAfterValue": "100003",
1233 "BriefDescription": "PF_L2_RFO & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1234 "Offcore": "1",
1235 "CounterHTOff": "0,1,2,3"
1236 },
1237 {
1238 "EventCode": "0xB7, 0xBB",
1239 "MSRValue": "0x00bc000020 ",
1240 "Counter": "0,1,2,3",
1241 "UMask": "0x1",
1242 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS.SNOOP_NONE",
1243 "MSRIndex": "0x1a6,0x1a7",
1244 "SampleAfterValue": "100003",
1245 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that miss the L3 with no details on snoop-related information.",
1246 "Offcore": "1",
1247 "CounterHTOff": "0,1,2,3"
1248 },
1249 {
1250 "EventCode": "0xB7, 0xBB",
1251 "MSRValue": "0x013c000020 ",
1252 "Counter": "0,1,2,3",
1253 "UMask": "0x1",
1254 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS.SNOOP_NOT_NEEDED",
1255 "MSRIndex": "0x1a6,0x1a7",
1256 "SampleAfterValue": "100003",
1257 "BriefDescription": "PF_L2_RFO & L3_MISS & SNOOP_NOT_NEEDED",
1258 "Offcore": "1",
1259 "CounterHTOff": "0,1,2,3"
1260 },
1261 {
1262 "EventCode": "0xB7, 0xBB",
1263 "MSRValue": "0x023c000020 ",
1264 "Counter": "0,1,2,3",
1265 "UMask": "0x1",
1266 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS.SNOOP_MISS",
1267 "MSRIndex": "0x1a6,0x1a7",
1268 "SampleAfterValue": "100003",
1269 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that miss the L3 with a snoop miss response.",
1270 "Offcore": "1",
1271 "CounterHTOff": "0,1,2,3"
1272 },
1273 {
1274 "EventCode": "0xB7, 0xBB",
1275 "MSRValue": "0x043c000020 ",
1276 "Counter": "0,1,2,3",
1277 "UMask": "0x1",
1278 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS.SNOOP_HIT_NO_FWD",
1279 "MSRIndex": "0x1a6,0x1a7",
1280 "SampleAfterValue": "100003",
1281 "BriefDescription": "PF_L2_RFO & L3_MISS & SNOOP_HIT_NO_FWD",
1282 "Offcore": "1",
1283 "CounterHTOff": "0,1,2,3"
1284 },
1285 {
1286 "EventCode": "0xB7, 0xBB",
1287 "MSRValue": "0x2000020040 ",
1288 "Counter": "0,1,2,3",
1289 "UMask": "0x1",
1290 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
1291 "MSRIndex": "0x1a6,0x1a7",
1292 "SampleAfterValue": "100003",
1293 "BriefDescription": "PF_L2_CODE_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
1294 "Offcore": "1",
1295 "CounterHTOff": "0,1,2,3"
1296 },
1297 {
1298 "EventCode": "0xB7, 0xBB",
1299 "MSRValue": "0x20003c0040 ",
1300 "Counter": "0,1,2,3",
1301 "UMask": "0x1",
1302 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.SNOOP_NON_DRAM",
1303 "MSRIndex": "0x1a6,0x1a7",
1304 "SampleAfterValue": "100003",
1305 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3 and the target was non-DRAM system address.",
1306 "Offcore": "1",
1307 "CounterHTOff": "0,1,2,3"
1308 },
1309 {
1310 "EventCode": "0xB7, 0xBB",
1311 "MSRValue": "0x0084000040 ",
1312 "Counter": "0,1,2,3",
1313 "UMask": "0x1",
1314 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1315 "MSRIndex": "0x1a6,0x1a7",
1316 "SampleAfterValue": "100003",
1317 "BriefDescription": "PF_L2_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1318 "Offcore": "1",
1319 "CounterHTOff": "0,1,2,3"
1320 },
1321 {
1322 "EventCode": "0xB7, 0xBB",
1323 "MSRValue": "0x0104000040 ",
1324 "Counter": "0,1,2,3",
1325 "UMask": "0x1",
1326 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1327 "MSRIndex": "0x1a6,0x1a7",
1328 "SampleAfterValue": "100003",
1329 "BriefDescription": "PF_L2_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1330 "Offcore": "1",
1331 "CounterHTOff": "0,1,2,3"
1332 },
1333 {
1334 "EventCode": "0xB7, 0xBB",
1335 "MSRValue": "0x0204000040 ",
1336 "Counter": "0,1,2,3",
1337 "UMask": "0x1",
1338 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1339 "MSRIndex": "0x1a6,0x1a7",
1340 "SampleAfterValue": "100003",
1341 "BriefDescription": "PF_L2_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1342 "Offcore": "1",
1343 "CounterHTOff": "0,1,2,3"
1344 },
1345 {
1346 "EventCode": "0xB7, 0xBB",
1347 "MSRValue": "0x0404000040 ",
1348 "Counter": "0,1,2,3",
1349 "UMask": "0x1",
1350 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1351 "MSRIndex": "0x1a6,0x1a7",
1352 "SampleAfterValue": "100003",
1353 "BriefDescription": "PF_L2_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1354 "Offcore": "1",
1355 "CounterHTOff": "0,1,2,3"
1356 },
1357 {
1358 "EventCode": "0xB7, 0xBB",
1359 "MSRValue": "0x1004000040 ",
1360 "Counter": "0,1,2,3",
1361 "UMask": "0x1",
1362 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1363 "MSRIndex": "0x1a6,0x1a7",
1364 "SampleAfterValue": "100003",
1365 "BriefDescription": "PF_L2_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1366 "Offcore": "1",
1367 "CounterHTOff": "0,1,2,3"
1368 },
1369 {
1370 "EventCode": "0xB7, 0xBB",
1371 "MSRValue": "0x2004000040 ",
1372 "Counter": "0,1,2,3",
1373 "UMask": "0x1",
1374 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1375 "MSRIndex": "0x1a6,0x1a7",
1376 "SampleAfterValue": "100003",
1377 "BriefDescription": "PF_L2_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1378 "Offcore": "1",
1379 "CounterHTOff": "0,1,2,3"
1380 },
1381 {
1382 "EventCode": "0xB7, 0xBB",
1383 "MSRValue": "0x3f84000040 ",
1384 "Counter": "0,1,2,3",
1385 "UMask": "0x1",
1386 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1387 "MSRIndex": "0x1a6,0x1a7",
1388 "SampleAfterValue": "100003",
1389 "BriefDescription": "PF_L2_CODE_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1390 "Offcore": "1",
1391 "CounterHTOff": "0,1,2,3"
1392 },
1393 {
1394 "EventCode": "0xB7, 0xBB",
1395 "MSRValue": "0x00bc000040 ",
1396 "Counter": "0,1,2,3",
1397 "UMask": "0x1",
1398 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS.SNOOP_NONE",
1399 "MSRIndex": "0x1a6,0x1a7",
1400 "SampleAfterValue": "100003",
1401 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that miss the L3 with no details on snoop-related information.",
1402 "Offcore": "1",
1403 "CounterHTOff": "0,1,2,3"
1404 },
1405 {
1406 "EventCode": "0xB7, 0xBB",
1407 "MSRValue": "0x013c000040 ",
1408 "Counter": "0,1,2,3",
1409 "UMask": "0x1",
1410 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS.SNOOP_NOT_NEEDED",
1411 "MSRIndex": "0x1a6,0x1a7",
1412 "SampleAfterValue": "100003",
1413 "BriefDescription": "PF_L2_CODE_RD & L3_MISS & SNOOP_NOT_NEEDED",
1414 "Offcore": "1",
1415 "CounterHTOff": "0,1,2,3"
1416 },
1417 {
1418 "EventCode": "0xB7, 0xBB",
1419 "MSRValue": "0x023c000040 ",
1420 "Counter": "0,1,2,3",
1421 "UMask": "0x1",
1422 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS.SNOOP_MISS",
1423 "MSRIndex": "0x1a6,0x1a7",
1424 "SampleAfterValue": "100003",
1425 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that miss the L3 with a snoop miss response.",
1426 "Offcore": "1",
1427 "CounterHTOff": "0,1,2,3"
1428 },
1429 {
1430 "EventCode": "0xB7, 0xBB",
1431 "MSRValue": "0x043c000040 ",
1432 "Counter": "0,1,2,3",
1433 "UMask": "0x1",
1434 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS.SNOOP_HIT_NO_FWD",
1435 "MSRIndex": "0x1a6,0x1a7",
1436 "SampleAfterValue": "100003",
1437 "BriefDescription": "PF_L2_CODE_RD & L3_MISS & SNOOP_HIT_NO_FWD",
1438 "Offcore": "1",
1439 "CounterHTOff": "0,1,2,3"
1440 },
1441 {
1442 "EventCode": "0xB7, 0xBB",
1443 "MSRValue": "0x2000020080 ",
1444 "Counter": "0,1,2,3",
1445 "UMask": "0x1",
1446 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
1447 "MSRIndex": "0x1a6,0x1a7",
1448 "SampleAfterValue": "100003",
1449 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
1450 "Offcore": "1",
1451 "CounterHTOff": "0,1,2,3"
1452 },
1453 {
1454 "EventCode": "0xB7, 0xBB",
1455 "MSRValue": "0x20003c0080 ",
1456 "Counter": "0,1,2,3",
1457 "UMask": "0x1",
1458 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_NON_DRAM",
1459 "MSRIndex": "0x1a6,0x1a7",
1460 "SampleAfterValue": "100003",
1461 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 and the target was non-DRAM system address.",
1462 "Offcore": "1",
1463 "CounterHTOff": "0,1,2,3"
1464 },
1465 {
1466 "EventCode": "0xB7, 0xBB",
1467 "MSRValue": "0x0084000080 ",
1468 "Counter": "0,1,2,3",
1469 "UMask": "0x1",
1470 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1471 "MSRIndex": "0x1a6,0x1a7",
1472 "SampleAfterValue": "100003",
1473 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1474 "Offcore": "1",
1475 "CounterHTOff": "0,1,2,3"
1476 },
1477 {
1478 "EventCode": "0xB7, 0xBB",
1479 "MSRValue": "0x0104000080 ",
1480 "Counter": "0,1,2,3",
1481 "UMask": "0x1",
1482 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1483 "MSRIndex": "0x1a6,0x1a7",
1484 "SampleAfterValue": "100003",
1485 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1486 "Offcore": "1",
1487 "CounterHTOff": "0,1,2,3"
1488 },
1489 {
1490 "EventCode": "0xB7, 0xBB",
1491 "MSRValue": "0x0204000080 ",
1492 "Counter": "0,1,2,3",
1493 "UMask": "0x1",
1494 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1495 "MSRIndex": "0x1a6,0x1a7",
1496 "SampleAfterValue": "100003",
1497 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1498 "Offcore": "1",
1499 "CounterHTOff": "0,1,2,3"
1500 },
1501 {
1502 "EventCode": "0xB7, 0xBB",
1503 "MSRValue": "0x0404000080 ",
1504 "Counter": "0,1,2,3",
1505 "UMask": "0x1",
1506 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1507 "MSRIndex": "0x1a6,0x1a7",
1508 "SampleAfterValue": "100003",
1509 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1510 "Offcore": "1",
1511 "CounterHTOff": "0,1,2,3"
1512 },
1513 {
1514 "EventCode": "0xB7, 0xBB",
1515 "MSRValue": "0x1004000080 ",
1516 "Counter": "0,1,2,3",
1517 "UMask": "0x1",
1518 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1519 "MSRIndex": "0x1a6,0x1a7",
1520 "SampleAfterValue": "100003",
1521 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1522 "Offcore": "1",
1523 "CounterHTOff": "0,1,2,3"
1524 },
1525 {
1526 "EventCode": "0xB7, 0xBB",
1527 "MSRValue": "0x2004000080 ",
1528 "Counter": "0,1,2,3",
1529 "UMask": "0x1",
1530 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1531 "MSRIndex": "0x1a6,0x1a7",
1532 "SampleAfterValue": "100003",
1533 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1534 "Offcore": "1",
1535 "CounterHTOff": "0,1,2,3"
1536 },
1537 {
1538 "EventCode": "0xB7, 0xBB",
1539 "MSRValue": "0x3f84000080 ",
1540 "Counter": "0,1,2,3",
1541 "UMask": "0x1",
1542 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1543 "MSRIndex": "0x1a6,0x1a7",
1544 "SampleAfterValue": "100003",
1545 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1546 "Offcore": "1",
1547 "CounterHTOff": "0,1,2,3"
1548 },
1549 {
1550 "EventCode": "0xB7, 0xBB",
1551 "MSRValue": "0x00bc000080 ",
1552 "Counter": "0,1,2,3",
1553 "UMask": "0x1",
1554 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_NONE",
1555 "MSRIndex": "0x1a6,0x1a7",
1556 "SampleAfterValue": "100003",
1557 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that miss the L3 with no details on snoop-related information.",
1558 "Offcore": "1",
1559 "CounterHTOff": "0,1,2,3"
1560 },
1561 {
1562 "EventCode": "0xB7, 0xBB",
1563 "MSRValue": "0x013c000080 ",
1564 "Counter": "0,1,2,3",
1565 "UMask": "0x1",
1566 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_NOT_NEEDED",
1567 "MSRIndex": "0x1a6,0x1a7",
1568 "SampleAfterValue": "100003",
1569 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_NOT_NEEDED",
1570 "Offcore": "1",
1571 "CounterHTOff": "0,1,2,3"
1572 },
1573 {
1574 "EventCode": "0xB7, 0xBB",
1575 "MSRValue": "0x023c000080 ",
1576 "Counter": "0,1,2,3",
1577 "UMask": "0x1",
1578 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_MISS",
1579 "MSRIndex": "0x1a6,0x1a7",
1580 "SampleAfterValue": "100003",
1581 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that miss the L3 with a snoop miss response.",
1582 "Offcore": "1",
1583 "CounterHTOff": "0,1,2,3"
1584 },
1585 {
1586 "EventCode": "0xB7, 0xBB",
1587 "MSRValue": "0x043c000080 ",
1588 "Counter": "0,1,2,3",
1589 "UMask": "0x1",
1590 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_HIT_NO_FWD",
1591 "MSRIndex": "0x1a6,0x1a7",
1592 "SampleAfterValue": "100003",
1593 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_HIT_NO_FWD",
1594 "Offcore": "1",
1595 "CounterHTOff": "0,1,2,3"
1596 },
1597 {
1598 "EventCode": "0xB7, 0xBB",
1599 "MSRValue": "0x2000020100 ",
1600 "Counter": "0,1,2,3",
1601 "UMask": "0x1",
1602 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_NON_DRAM",
1603 "MSRIndex": "0x1a6,0x1a7",
1604 "SampleAfterValue": "100003",
1605 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_NON_DRAM",
1606 "Offcore": "1",
1607 "CounterHTOff": "0,1,2,3"
1608 },
1609 {
1610 "EventCode": "0xB7, 0xBB",
1611 "MSRValue": "0x20003c0100 ",
1612 "Counter": "0,1,2,3",
1613 "UMask": "0x1",
1614 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_NON_DRAM",
1615 "MSRIndex": "0x1a6,0x1a7",
1616 "SampleAfterValue": "100003",
1617 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 and the target was non-DRAM system address.",
1618 "Offcore": "1",
1619 "CounterHTOff": "0,1,2,3"
1620 },
1621 {
1622 "EventCode": "0xB7, 0xBB",
1623 "MSRValue": "0x0084000100 ",
1624 "Counter": "0,1,2,3",
1625 "UMask": "0x1",
1626 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1627 "MSRIndex": "0x1a6,0x1a7",
1628 "SampleAfterValue": "100003",
1629 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1630 "Offcore": "1",
1631 "CounterHTOff": "0,1,2,3"
1632 },
1633 {
1634 "EventCode": "0xB7, 0xBB",
1635 "MSRValue": "0x0104000100 ",
1636 "Counter": "0,1,2,3",
1637 "UMask": "0x1",
1638 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1639 "MSRIndex": "0x1a6,0x1a7",
1640 "SampleAfterValue": "100003",
1641 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1642 "Offcore": "1",
1643 "CounterHTOff": "0,1,2,3"
1644 },
1645 {
1646 "EventCode": "0xB7, 0xBB",
1647 "MSRValue": "0x0204000100 ",
1648 "Counter": "0,1,2,3",
1649 "UMask": "0x1",
1650 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1651 "MSRIndex": "0x1a6,0x1a7",
1652 "SampleAfterValue": "100003",
1653 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1654 "Offcore": "1",
1655 "CounterHTOff": "0,1,2,3"
1656 },
1657 {
1658 "EventCode": "0xB7, 0xBB",
1659 "MSRValue": "0x0404000100 ",
1660 "Counter": "0,1,2,3",
1661 "UMask": "0x1",
1662 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1663 "MSRIndex": "0x1a6,0x1a7",
1664 "SampleAfterValue": "100003",
1665 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1666 "Offcore": "1",
1667 "CounterHTOff": "0,1,2,3"
1668 },
1669 {
1670 "EventCode": "0xB7, 0xBB",
1671 "MSRValue": "0x1004000100 ",
1672 "Counter": "0,1,2,3",
1673 "UMask": "0x1",
1674 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1675 "MSRIndex": "0x1a6,0x1a7",
1676 "SampleAfterValue": "100003",
1677 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1678 "Offcore": "1",
1679 "CounterHTOff": "0,1,2,3"
1680 },
1681 {
1682 "EventCode": "0xB7, 0xBB",
1683 "MSRValue": "0x2004000100 ",
1684 "Counter": "0,1,2,3",
1685 "UMask": "0x1",
1686 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1687 "MSRIndex": "0x1a6,0x1a7",
1688 "SampleAfterValue": "100003",
1689 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1690 "Offcore": "1",
1691 "CounterHTOff": "0,1,2,3"
1692 },
1693 {
1694 "EventCode": "0xB7, 0xBB",
1695 "MSRValue": "0x3f84000100 ",
1696 "Counter": "0,1,2,3",
1697 "UMask": "0x1",
1698 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1699 "MSRIndex": "0x1a6,0x1a7",
1700 "SampleAfterValue": "100003",
1701 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1702 "Offcore": "1",
1703 "CounterHTOff": "0,1,2,3"
1704 },
1705 {
1706 "EventCode": "0xB7, 0xBB",
1707 "MSRValue": "0x00bc000100 ",
1708 "Counter": "0,1,2,3",
1709 "UMask": "0x1",
1710 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_NONE",
1711 "MSRIndex": "0x1a6,0x1a7",
1712 "SampleAfterValue": "100003",
1713 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that miss the L3 with no details on snoop-related information.",
1714 "Offcore": "1",
1715 "CounterHTOff": "0,1,2,3"
1716 },
1717 {
1718 "EventCode": "0xB7, 0xBB",
1719 "MSRValue": "0x013c000100 ",
1720 "Counter": "0,1,2,3",
1721 "UMask": "0x1",
1722 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_NOT_NEEDED",
1723 "MSRIndex": "0x1a6,0x1a7",
1724 "SampleAfterValue": "100003",
1725 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_NOT_NEEDED",
1726 "Offcore": "1",
1727 "CounterHTOff": "0,1,2,3"
1728 },
1729 {
1730 "EventCode": "0xB7, 0xBB",
1731 "MSRValue": "0x023c000100 ",
1732 "Counter": "0,1,2,3",
1733 "UMask": "0x1",
1734 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_MISS",
1735 "MSRIndex": "0x1a6,0x1a7",
1736 "SampleAfterValue": "100003",
1737 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that miss the L3 with a snoop miss response.",
1738 "Offcore": "1",
1739 "CounterHTOff": "0,1,2,3"
1740 },
1741 {
1742 "EventCode": "0xB7, 0xBB",
1743 "MSRValue": "0x043c000100 ",
1744 "Counter": "0,1,2,3",
1745 "UMask": "0x1",
1746 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_HIT_NO_FWD",
1747 "MSRIndex": "0x1a6,0x1a7",
1748 "SampleAfterValue": "100003",
1749 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_HIT_NO_FWD",
1750 "Offcore": "1",
1751 "CounterHTOff": "0,1,2,3"
1752 },
1753 {
1754 "EventCode": "0xB7, 0xBB",
1755 "MSRValue": "0x2000020200 ",
1756 "Counter": "0,1,2,3",
1757 "UMask": "0x1",
1758 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
1759 "MSRIndex": "0x1a6,0x1a7",
1760 "SampleAfterValue": "100003",
1761 "BriefDescription": "PF_L3_CODE_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
1762 "Offcore": "1",
1763 "CounterHTOff": "0,1,2,3"
1764 },
1765 {
1766 "EventCode": "0xB7, 0xBB",
1767 "MSRValue": "0x20003c0200 ",
1768 "Counter": "0,1,2,3",
1769 "UMask": "0x1",
1770 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.SNOOP_NON_DRAM",
1771 "MSRIndex": "0x1a6,0x1a7",
1772 "SampleAfterValue": "100003",
1773 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3 and the target was non-DRAM system address.",
1774 "Offcore": "1",
1775 "CounterHTOff": "0,1,2,3"
1776 },
1777 {
1778 "EventCode": "0xB7, 0xBB",
1779 "MSRValue": "0x0084000200 ",
1780 "Counter": "0,1,2,3",
1781 "UMask": "0x1",
1782 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1783 "MSRIndex": "0x1a6,0x1a7",
1784 "SampleAfterValue": "100003",
1785 "BriefDescription": "PF_L3_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1786 "Offcore": "1",
1787 "CounterHTOff": "0,1,2,3"
1788 },
1789 {
1790 "EventCode": "0xB7, 0xBB",
1791 "MSRValue": "0x0104000200 ",
1792 "Counter": "0,1,2,3",
1793 "UMask": "0x1",
1794 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1795 "MSRIndex": "0x1a6,0x1a7",
1796 "SampleAfterValue": "100003",
1797 "BriefDescription": "PF_L3_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1798 "Offcore": "1",
1799 "CounterHTOff": "0,1,2,3"
1800 },
1801 {
1802 "EventCode": "0xB7, 0xBB",
1803 "MSRValue": "0x0204000200 ",
1804 "Counter": "0,1,2,3",
1805 "UMask": "0x1",
1806 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1807 "MSRIndex": "0x1a6,0x1a7",
1808 "SampleAfterValue": "100003",
1809 "BriefDescription": "PF_L3_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1810 "Offcore": "1",
1811 "CounterHTOff": "0,1,2,3"
1812 },
1813 {
1814 "EventCode": "0xB7, 0xBB",
1815 "MSRValue": "0x0404000200 ",
1816 "Counter": "0,1,2,3",
1817 "UMask": "0x1",
1818 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1819 "MSRIndex": "0x1a6,0x1a7",
1820 "SampleAfterValue": "100003",
1821 "BriefDescription": "PF_L3_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1822 "Offcore": "1",
1823 "CounterHTOff": "0,1,2,3"
1824 },
1825 {
1826 "EventCode": "0xB7, 0xBB",
1827 "MSRValue": "0x1004000200 ",
1828 "Counter": "0,1,2,3",
1829 "UMask": "0x1",
1830 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1831 "MSRIndex": "0x1a6,0x1a7",
1832 "SampleAfterValue": "100003",
1833 "BriefDescription": "PF_L3_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1834 "Offcore": "1",
1835 "CounterHTOff": "0,1,2,3"
1836 },
1837 {
1838 "EventCode": "0xB7, 0xBB",
1839 "MSRValue": "0x2004000200 ",
1840 "Counter": "0,1,2,3",
1841 "UMask": "0x1",
1842 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1843 "MSRIndex": "0x1a6,0x1a7",
1844 "SampleAfterValue": "100003",
1845 "BriefDescription": "PF_L3_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1846 "Offcore": "1",
1847 "CounterHTOff": "0,1,2,3"
1848 },
1849 {
1850 "EventCode": "0xB7, 0xBB",
1851 "MSRValue": "0x3f84000200 ",
1852 "Counter": "0,1,2,3",
1853 "UMask": "0x1",
1854 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1855 "MSRIndex": "0x1a6,0x1a7",
1856 "SampleAfterValue": "100003",
1857 "BriefDescription": "PF_L3_CODE_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1858 "Offcore": "1",
1859 "CounterHTOff": "0,1,2,3"
1860 },
1861 {
1862 "EventCode": "0xB7, 0xBB",
1863 "MSRValue": "0x00bc000200 ",
1864 "Counter": "0,1,2,3",
1865 "UMask": "0x1",
1866 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS.SNOOP_NONE",
1867 "MSRIndex": "0x1a6,0x1a7",
1868 "SampleAfterValue": "100003",
1869 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that miss the L3 with no details on snoop-related information.",
1870 "Offcore": "1",
1871 "CounterHTOff": "0,1,2,3"
1872 },
1873 {
1874 "EventCode": "0xB7, 0xBB",
1875 "MSRValue": "0x013c000200 ",
1876 "Counter": "0,1,2,3",
1877 "UMask": "0x1",
1878 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS.SNOOP_NOT_NEEDED",
1879 "MSRIndex": "0x1a6,0x1a7",
1880 "SampleAfterValue": "100003",
1881 "BriefDescription": "PF_L3_CODE_RD & L3_MISS & SNOOP_NOT_NEEDED",
1882 "Offcore": "1",
1883 "CounterHTOff": "0,1,2,3"
1884 },
1885 {
1886 "EventCode": "0xB7, 0xBB",
1887 "MSRValue": "0x023c000200 ",
1888 "Counter": "0,1,2,3",
1889 "UMask": "0x1",
1890 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS.SNOOP_MISS",
1891 "MSRIndex": "0x1a6,0x1a7",
1892 "SampleAfterValue": "100003",
1893 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that miss the L3 with a snoop miss response.",
1894 "Offcore": "1",
1895 "CounterHTOff": "0,1,2,3"
1896 },
1897 {
1898 "EventCode": "0xB7, 0xBB",
1899 "MSRValue": "0x043c000200 ",
1900 "Counter": "0,1,2,3",
1901 "UMask": "0x1",
1902 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS.SNOOP_HIT_NO_FWD",
1903 "MSRIndex": "0x1a6,0x1a7",
1904 "SampleAfterValue": "100003",
1905 "BriefDescription": "PF_L3_CODE_RD & L3_MISS & SNOOP_HIT_NO_FWD",
1906 "Offcore": "1",
1907 "CounterHTOff": "0,1,2,3"
1908 },
1909 {
1910 "EventCode": "0xB7, 0xBB",
1911 "MSRValue": "0x2000028000 ",
1912 "Counter": "0,1,2,3",
1913 "UMask": "0x1",
1914 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_NON_DRAM",
1915 "MSRIndex": "0x1a6,0x1a7",
1916 "SampleAfterValue": "100003",
1917 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_NON_DRAM",
1918 "Offcore": "1",
1919 "CounterHTOff": "0,1,2,3"
1920 },
1921 {
1922 "EventCode": "0xB7, 0xBB",
1923 "MSRValue": "0x20003c8000 ",
1924 "Counter": "0,1,2,3",
1925 "UMask": "0x1",
1926 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_NON_DRAM",
1927 "MSRIndex": "0x1a6,0x1a7",
1928 "SampleAfterValue": "100003",
1929 "BriefDescription": "Counts any other requests that hit in the L3 and the target was non-DRAM system address.",
1930 "Offcore": "1",
1931 "CounterHTOff": "0,1,2,3"
1932 },
1933 {
1934 "EventCode": "0xB7, 0xBB",
1935 "MSRValue": "0x0084008000 ",
1936 "Counter": "0,1,2,3",
1937 "UMask": "0x1",
1938 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1939 "MSRIndex": "0x1a6,0x1a7",
1940 "SampleAfterValue": "100003",
1941 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1942 "Offcore": "1",
1943 "CounterHTOff": "0,1,2,3"
1944 },
1945 {
1946 "EventCode": "0xB7, 0xBB",
1947 "MSRValue": "0x0104008000 ",
1948 "Counter": "0,1,2,3",
1949 "UMask": "0x1",
1950 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1951 "MSRIndex": "0x1a6,0x1a7",
1952 "SampleAfterValue": "100003",
1953 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1954 "Offcore": "1",
1955 "CounterHTOff": "0,1,2,3"
1956 },
1957 {
1958 "EventCode": "0xB7, 0xBB",
1959 "MSRValue": "0x0204008000 ",
1960 "Counter": "0,1,2,3",
1961 "UMask": "0x1",
1962 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1963 "MSRIndex": "0x1a6,0x1a7",
1964 "SampleAfterValue": "100003",
1965 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1966 "Offcore": "1",
1967 "CounterHTOff": "0,1,2,3"
1968 },
1969 {
1970 "EventCode": "0xB7, 0xBB",
1971 "MSRValue": "0x0404008000 ",
1972 "Counter": "0,1,2,3",
1973 "UMask": "0x1",
1974 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1975 "MSRIndex": "0x1a6,0x1a7",
1976 "SampleAfterValue": "100003",
1977 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1978 "Offcore": "1",
1979 "CounterHTOff": "0,1,2,3"
1980 },
1981 {
1982 "EventCode": "0xB7, 0xBB",
1983 "MSRValue": "0x1004008000 ",
1984 "Counter": "0,1,2,3",
1985 "UMask": "0x1",
1986 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1987 "MSRIndex": "0x1a6,0x1a7",
1988 "SampleAfterValue": "100003",
1989 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1990 "Offcore": "1",
1991 "CounterHTOff": "0,1,2,3"
1992 },
1993 {
1994 "EventCode": "0xB7, 0xBB",
1995 "MSRValue": "0x2004008000 ",
1996 "Counter": "0,1,2,3",
1997 "UMask": "0x1",
1998 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1999 "MSRIndex": "0x1a6,0x1a7",
2000 "SampleAfterValue": "100003",
2001 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
2002 "Offcore": "1",
2003 "CounterHTOff": "0,1,2,3"
2004 },
2005 {
2006 "EventCode": "0xB7, 0xBB",
2007 "MSRValue": "0x3f84008000 ",
2008 "Counter": "0,1,2,3",
2009 "UMask": "0x1",
2010 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
2011 "MSRIndex": "0x1a6,0x1a7",
2012 "SampleAfterValue": "100003",
2013 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
2014 "Offcore": "1",
2015 "CounterHTOff": "0,1,2,3"
2016 },
2017 {
2018 "EventCode": "0xB7, 0xBB",
2019 "MSRValue": "0x00bc008000 ",
2020 "Counter": "0,1,2,3",
2021 "UMask": "0x1",
2022 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_NONE",
2023 "MSRIndex": "0x1a6,0x1a7",
2024 "SampleAfterValue": "100003",
2025 "BriefDescription": "Counts any other requests that miss the L3 with no details on snoop-related information.",
2026 "Offcore": "1",
2027 "CounterHTOff": "0,1,2,3"
2028 },
2029 {
2030 "EventCode": "0xB7, 0xBB",
2031 "MSRValue": "0x013c008000 ",
2032 "Counter": "0,1,2,3",
2033 "UMask": "0x1",
2034 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_NOT_NEEDED",
2035 "MSRIndex": "0x1a6,0x1a7",
2036 "SampleAfterValue": "100003",
2037 "BriefDescription": "OTHER & L3_MISS & SNOOP_NOT_NEEDED",
2038 "Offcore": "1",
2039 "CounterHTOff": "0,1,2,3"
2040 },
2041 {
2042 "EventCode": "0xB7, 0xBB",
2043 "MSRValue": "0x023c008000 ",
2044 "Counter": "0,1,2,3",
2045 "UMask": "0x1",
2046 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_MISS",
2047 "MSRIndex": "0x1a6,0x1a7",
2048 "SampleAfterValue": "100003",
2049 "BriefDescription": "Counts any other requests that miss the L3 with a snoop miss response.",
2050 "Offcore": "1",
2051 "CounterHTOff": "0,1,2,3"
2052 },
2053 {
2054 "EventCode": "0xB7, 0xBB",
2055 "MSRValue": "0x043c008000 ",
2056 "Counter": "0,1,2,3",
2057 "UMask": "0x1",
2058 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_HIT_NO_FWD",
2059 "MSRIndex": "0x1a6,0x1a7",
2060 "SampleAfterValue": "100003",
2061 "BriefDescription": "OTHER & L3_MISS & SNOOP_HIT_NO_FWD",
2062 "Offcore": "1",
2063 "CounterHTOff": "0,1,2,3"
2064 },
2065 {
2066 "EventCode": "0xB7, 0xBB",
2067 "MSRValue": "0x2000020090 ",
2068 "Counter": "0,1,2,3",
2069 "UMask": "0x1",
2070 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
2071 "MSRIndex": "0x1a6,0x1a7",
2072 "SampleAfterValue": "100003",
2073 "BriefDescription": "ALL_PF_DATA_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
2074 "Offcore": "1",
2075 "CounterHTOff": "0,1,2,3"
2076 },
2077 {
2078 "EventCode": "0xB7, 0xBB",
2079 "MSRValue": "0x20003c0090 ",
2080 "Counter": "0,1,2,3",
2081 "UMask": "0x1",
2082 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_HIT.SNOOP_NON_DRAM",
2083 "MSRIndex": "0x1a6,0x1a7",
2084 "SampleAfterValue": "100003",
2085 "BriefDescription": "Counts all prefetch data reads that hit in the L3 and the target was non-DRAM system address.",
2086 "Offcore": "1",
2087 "CounterHTOff": "0,1,2,3"
2088 },
2089 {
2090 "EventCode": "0xB7, 0xBB",
2091 "MSRValue": "0x0084000090 ",
2092 "Counter": "0,1,2,3",
2093 "UMask": "0x1",
2094 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
2095 "MSRIndex": "0x1a6,0x1a7",
2096 "SampleAfterValue": "100003",
2097 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
2098 "Offcore": "1",
2099 "CounterHTOff": "0,1,2,3"
2100 },
2101 {
2102 "EventCode": "0xB7, 0xBB",
2103 "MSRValue": "0x0104000090 ",
2104 "Counter": "0,1,2,3",
2105 "UMask": "0x1",
2106 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
2107 "MSRIndex": "0x1a6,0x1a7",
2108 "SampleAfterValue": "100003",
2109 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
2110 "Offcore": "1",
2111 "CounterHTOff": "0,1,2,3"
2112 },
2113 {
2114 "EventCode": "0xB7, 0xBB",
2115 "MSRValue": "0x0204000090 ",
2116 "Counter": "0,1,2,3",
2117 "UMask": "0x1",
2118 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
2119 "MSRIndex": "0x1a6,0x1a7",
2120 "SampleAfterValue": "100003",
2121 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
2122 "Offcore": "1",
2123 "CounterHTOff": "0,1,2,3"
2124 },
2125 {
2126 "EventCode": "0xB7, 0xBB",
2127 "MSRValue": "0x0404000090 ",
2128 "Counter": "0,1,2,3",
2129 "UMask": "0x1",
2130 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
2131 "MSRIndex": "0x1a6,0x1a7",
2132 "SampleAfterValue": "100003",
2133 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
2134 "Offcore": "1",
2135 "CounterHTOff": "0,1,2,3"
2136 },
2137 {
2138 "EventCode": "0xB7, 0xBB",
2139 "MSRValue": "0x1004000090 ",
2140 "Counter": "0,1,2,3",
2141 "UMask": "0x1",
2142 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
2143 "MSRIndex": "0x1a6,0x1a7",
2144 "SampleAfterValue": "100003",
2145 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
2146 "Offcore": "1",
2147 "CounterHTOff": "0,1,2,3"
2148 },
2149 {
2150 "EventCode": "0xB7, 0xBB",
2151 "MSRValue": "0x2004000090 ",
2152 "Counter": "0,1,2,3",
2153 "UMask": "0x1",
2154 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
2155 "MSRIndex": "0x1a6,0x1a7",
2156 "SampleAfterValue": "100003",
2157 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
2158 "Offcore": "1",
2159 "CounterHTOff": "0,1,2,3"
2160 },
2161 {
2162 "EventCode": "0xB7, 0xBB",
2163 "MSRValue": "0x3f84000090 ",
2164 "Counter": "0,1,2,3",
2165 "UMask": "0x1",
2166 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
2167 "MSRIndex": "0x1a6,0x1a7",
2168 "SampleAfterValue": "100003",
2169 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
2170 "Offcore": "1",
2171 "CounterHTOff": "0,1,2,3"
2172 },
2173 {
2174 "EventCode": "0xB7, 0xBB",
2175 "MSRValue": "0x00bc000090 ",
2176 "Counter": "0,1,2,3",
2177 "UMask": "0x1",
2178 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS.SNOOP_NONE",
2179 "MSRIndex": "0x1a6,0x1a7",
2180 "SampleAfterValue": "100003",
2181 "BriefDescription": "Counts all prefetch data reads that miss the L3 with no details on snoop-related information.",
2182 "Offcore": "1",
2183 "CounterHTOff": "0,1,2,3"
2184 },
2185 {
2186 "EventCode": "0xB7, 0xBB",
2187 "MSRValue": "0x013c000090 ",
2188 "Counter": "0,1,2,3",
2189 "UMask": "0x1",
2190 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS.SNOOP_NOT_NEEDED",
2191 "MSRIndex": "0x1a6,0x1a7",
2192 "SampleAfterValue": "100003",
2193 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS & SNOOP_NOT_NEEDED",
2194 "Offcore": "1",
2195 "CounterHTOff": "0,1,2,3"
2196 },
2197 {
2198 "EventCode": "0xB7, 0xBB",
2199 "MSRValue": "0x023c000090 ",
2200 "Counter": "0,1,2,3",
2201 "UMask": "0x1",
2202 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS.SNOOP_MISS",
2203 "MSRIndex": "0x1a6,0x1a7",
2204 "SampleAfterValue": "100003",
2205 "BriefDescription": "Counts all prefetch data reads that miss the L3 with a snoop miss response.",
2206 "Offcore": "1",
2207 "CounterHTOff": "0,1,2,3"
2208 },
2209 {
2210 "EventCode": "0xB7, 0xBB",
2211 "MSRValue": "0x043c000090 ",
2212 "Counter": "0,1,2,3",
2213 "UMask": "0x1",
2214 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.L3_MISS.SNOOP_HIT_NO_FWD",
2215 "MSRIndex": "0x1a6,0x1a7",
2216 "SampleAfterValue": "100003",
2217 "BriefDescription": "ALL_PF_DATA_RD & L3_MISS & SNOOP_HIT_NO_FWD",
2218 "Offcore": "1",
2219 "CounterHTOff": "0,1,2,3"
2220 },
2221 {
2222 "EventCode": "0xB7, 0xBB",
2223 "MSRValue": "0x2000020120 ",
2224 "Counter": "0,1,2,3",
2225 "UMask": "0x1",
2226 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.SUPPLIER_NONE.SNOOP_NON_DRAM",
2227 "MSRIndex": "0x1a6,0x1a7",
2228 "SampleAfterValue": "100003",
2229 "BriefDescription": "ALL_PF_RFO & SUPPLIER_NONE & SNOOP_NON_DRAM",
2230 "Offcore": "1",
2231 "CounterHTOff": "0,1,2,3"
2232 },
2233 {
2234 "EventCode": "0xB7, 0xBB",
2235 "MSRValue": "0x20003c0120 ",
2236 "Counter": "0,1,2,3",
2237 "UMask": "0x1",
2238 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_HIT.SNOOP_NON_DRAM",
2239 "MSRIndex": "0x1a6,0x1a7",
2240 "SampleAfterValue": "100003",
2241 "BriefDescription": "Counts prefetch RFOs that hit in the L3 and the target was non-DRAM system address.",
2242 "Offcore": "1",
2243 "CounterHTOff": "0,1,2,3"
2244 },
2245 {
2246 "EventCode": "0xB7, 0xBB",
2247 "MSRValue": "0x0084000120 ",
2248 "Counter": "0,1,2,3",
2249 "UMask": "0x1",
2250 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
2251 "MSRIndex": "0x1a6,0x1a7",
2252 "SampleAfterValue": "100003",
2253 "BriefDescription": "ALL_PF_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
2254 "Offcore": "1",
2255 "CounterHTOff": "0,1,2,3"
2256 },
2257 {
2258 "EventCode": "0xB7, 0xBB",
2259 "MSRValue": "0x0104000120 ",
2260 "Counter": "0,1,2,3",
2261 "UMask": "0x1",
2262 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
2263 "MSRIndex": "0x1a6,0x1a7",
2264 "SampleAfterValue": "100003",
2265 "BriefDescription": "ALL_PF_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
2266 "Offcore": "1",
2267 "CounterHTOff": "0,1,2,3"
2268 },
2269 {
2270 "EventCode": "0xB7, 0xBB",
2271 "MSRValue": "0x0204000120 ",
2272 "Counter": "0,1,2,3",
2273 "UMask": "0x1",
2274 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
2275 "MSRIndex": "0x1a6,0x1a7",
2276 "SampleAfterValue": "100003",
2277 "BriefDescription": "ALL_PF_RFO & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
2278 "Offcore": "1",
2279 "CounterHTOff": "0,1,2,3"
2280 },
2281 {
2282 "EventCode": "0xB7, 0xBB",
2283 "MSRValue": "0x0404000120 ",
2284 "Counter": "0,1,2,3",
2285 "UMask": "0x1",
2286 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
2287 "MSRIndex": "0x1a6,0x1a7",
2288 "SampleAfterValue": "100003",
2289 "BriefDescription": "ALL_PF_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
2290 "Offcore": "1",
2291 "CounterHTOff": "0,1,2,3"
2292 },
2293 {
2294 "EventCode": "0xB7, 0xBB",
2295 "MSRValue": "0x1004000120 ",
2296 "Counter": "0,1,2,3",
2297 "UMask": "0x1",
2298 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
2299 "MSRIndex": "0x1a6,0x1a7",
2300 "SampleAfterValue": "100003",
2301 "BriefDescription": "ALL_PF_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
2302 "Offcore": "1",
2303 "CounterHTOff": "0,1,2,3"
2304 },
2305 {
2306 "EventCode": "0xB7, 0xBB",
2307 "MSRValue": "0x2004000120 ",
2308 "Counter": "0,1,2,3",
2309 "UMask": "0x1",
2310 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
2311 "MSRIndex": "0x1a6,0x1a7",
2312 "SampleAfterValue": "100003",
2313 "BriefDescription": "ALL_PF_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
2314 "Offcore": "1",
2315 "CounterHTOff": "0,1,2,3"
2316 },
2317 {
2318 "EventCode": "0xB7, 0xBB",
2319 "MSRValue": "0x3f84000120 ",
2320 "Counter": "0,1,2,3",
2321 "UMask": "0x1",
2322 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
2323 "MSRIndex": "0x1a6,0x1a7",
2324 "SampleAfterValue": "100003",
2325 "BriefDescription": "ALL_PF_RFO & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
2326 "Offcore": "1",
2327 "CounterHTOff": "0,1,2,3"
2328 },
2329 {
2330 "EventCode": "0xB7, 0xBB",
2331 "MSRValue": "0x00bc000120 ",
2332 "Counter": "0,1,2,3",
2333 "UMask": "0x1",
2334 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS.SNOOP_NONE",
2335 "MSRIndex": "0x1a6,0x1a7",
2336 "SampleAfterValue": "100003",
2337 "BriefDescription": "Counts prefetch RFOs that miss the L3 with no details on snoop-related information.",
2338 "Offcore": "1",
2339 "CounterHTOff": "0,1,2,3"
2340 },
2341 {
2342 "EventCode": "0xB7, 0xBB",
2343 "MSRValue": "0x013c000120 ",
2344 "Counter": "0,1,2,3",
2345 "UMask": "0x1",
2346 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS.SNOOP_NOT_NEEDED",
2347 "MSRIndex": "0x1a6,0x1a7",
2348 "SampleAfterValue": "100003",
2349 "BriefDescription": "ALL_PF_RFO & L3_MISS & SNOOP_NOT_NEEDED",
2350 "Offcore": "1",
2351 "CounterHTOff": "0,1,2,3"
2352 },
2353 {
2354 "EventCode": "0xB7, 0xBB",
2355 "MSRValue": "0x023c000120 ",
2356 "Counter": "0,1,2,3",
2357 "UMask": "0x1",
2358 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS.SNOOP_MISS",
2359 "MSRIndex": "0x1a6,0x1a7",
2360 "SampleAfterValue": "100003",
2361 "BriefDescription": "Counts prefetch RFOs that miss the L3 with a snoop miss response.",
2362 "Offcore": "1",
2363 "CounterHTOff": "0,1,2,3"
2364 },
2365 {
2366 "EventCode": "0xB7, 0xBB",
2367 "MSRValue": "0x043c000120 ",
2368 "Counter": "0,1,2,3",
2369 "UMask": "0x1",
2370 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.L3_MISS.SNOOP_HIT_NO_FWD",
2371 "MSRIndex": "0x1a6,0x1a7",
2372 "SampleAfterValue": "100003",
2373 "BriefDescription": "ALL_PF_RFO & L3_MISS & SNOOP_HIT_NO_FWD",
2374 "Offcore": "1",
2375 "CounterHTOff": "0,1,2,3"
2376 },
2377 {
2378 "EventCode": "0xB7, 0xBB",
2379 "MSRValue": "0x2000020240 ",
2380 "Counter": "0,1,2,3",
2381 "UMask": "0x1",
2382 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
2383 "MSRIndex": "0x1a6,0x1a7",
2384 "SampleAfterValue": "100003",
2385 "BriefDescription": "ALL_PF_CODE_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
2386 "Offcore": "1",
2387 "CounterHTOff": "0,1,2,3"
2388 },
2389 {
2390 "EventCode": "0xB7, 0xBB",
2391 "MSRValue": "0x20003c0240 ",
2392 "Counter": "0,1,2,3",
2393 "UMask": "0x1",
2394 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_HIT.SNOOP_NON_DRAM",
2395 "MSRIndex": "0x1a6,0x1a7",
2396 "SampleAfterValue": "100003",
2397 "BriefDescription": "Counts all prefetch code reads that hit in the L3 and the target was non-DRAM system address.",
2398 "Offcore": "1",
2399 "CounterHTOff": "0,1,2,3"
2400 },
2401 {
2402 "EventCode": "0xB7, 0xBB",
2403 "MSRValue": "0x0084000240 ",
2404 "Counter": "0,1,2,3",
2405 "UMask": "0x1",
2406 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
2407 "MSRIndex": "0x1a6,0x1a7",
2408 "SampleAfterValue": "100003",
2409 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
2410 "Offcore": "1",
2411 "CounterHTOff": "0,1,2,3"
2412 },
2413 {
2414 "EventCode": "0xB7, 0xBB",
2415 "MSRValue": "0x0104000240 ",
2416 "Counter": "0,1,2,3",
2417 "UMask": "0x1",
2418 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
2419 "MSRIndex": "0x1a6,0x1a7",
2420 "SampleAfterValue": "100003",
2421 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
2422 "Offcore": "1",
2423 "CounterHTOff": "0,1,2,3"
2424 },
2425 {
2426 "EventCode": "0xB7, 0xBB",
2427 "MSRValue": "0x0204000240 ",
2428 "Counter": "0,1,2,3",
2429 "UMask": "0x1",
2430 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
2431 "MSRIndex": "0x1a6,0x1a7",
2432 "SampleAfterValue": "100003",
2433 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
2434 "Offcore": "1",
2435 "CounterHTOff": "0,1,2,3"
2436 },
2437 {
2438 "EventCode": "0xB7, 0xBB",
2439 "MSRValue": "0x0404000240 ",
2440 "Counter": "0,1,2,3",
2441 "UMask": "0x1",
2442 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
2443 "MSRIndex": "0x1a6,0x1a7",
2444 "SampleAfterValue": "100003",
2445 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
2446 "Offcore": "1",
2447 "CounterHTOff": "0,1,2,3"
2448 },
2449 {
2450 "EventCode": "0xB7, 0xBB",
2451 "MSRValue": "0x1004000240 ",
2452 "Counter": "0,1,2,3",
2453 "UMask": "0x1",
2454 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
2455 "MSRIndex": "0x1a6,0x1a7",
2456 "SampleAfterValue": "100003",
2457 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
2458 "Offcore": "1",
2459 "CounterHTOff": "0,1,2,3"
2460 },
2461 {
2462 "EventCode": "0xB7, 0xBB",
2463 "MSRValue": "0x2004000240 ",
2464 "Counter": "0,1,2,3",
2465 "UMask": "0x1",
2466 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
2467 "MSRIndex": "0x1a6,0x1a7",
2468 "SampleAfterValue": "100003",
2469 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
2470 "Offcore": "1",
2471 "CounterHTOff": "0,1,2,3"
2472 },
2473 {
2474 "EventCode": "0xB7, 0xBB",
2475 "MSRValue": "0x3f84000240 ",
2476 "Counter": "0,1,2,3",
2477 "UMask": "0x1",
2478 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
2479 "MSRIndex": "0x1a6,0x1a7",
2480 "SampleAfterValue": "100003",
2481 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
2482 "Offcore": "1",
2483 "CounterHTOff": "0,1,2,3"
2484 },
2485 {
2486 "EventCode": "0xB7, 0xBB",
2487 "MSRValue": "0x00bc000240 ",
2488 "Counter": "0,1,2,3",
2489 "UMask": "0x1",
2490 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS.SNOOP_NONE",
2491 "MSRIndex": "0x1a6,0x1a7",
2492 "SampleAfterValue": "100003",
2493 "BriefDescription": "Counts all prefetch code reads that miss the L3 with no details on snoop-related information.",
2494 "Offcore": "1",
2495 "CounterHTOff": "0,1,2,3"
2496 },
2497 {
2498 "EventCode": "0xB7, 0xBB",
2499 "MSRValue": "0x013c000240 ",
2500 "Counter": "0,1,2,3",
2501 "UMask": "0x1",
2502 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS.SNOOP_NOT_NEEDED",
2503 "MSRIndex": "0x1a6,0x1a7",
2504 "SampleAfterValue": "100003",
2505 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS & SNOOP_NOT_NEEDED",
2506 "Offcore": "1",
2507 "CounterHTOff": "0,1,2,3"
2508 },
2509 {
2510 "EventCode": "0xB7, 0xBB",
2511 "MSRValue": "0x023c000240 ",
2512 "Counter": "0,1,2,3",
2513 "UMask": "0x1",
2514 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS.SNOOP_MISS",
2515 "MSRIndex": "0x1a6,0x1a7",
2516 "SampleAfterValue": "100003",
2517 "BriefDescription": "Counts all prefetch code reads that miss the L3 with a snoop miss response.",
2518 "Offcore": "1",
2519 "CounterHTOff": "0,1,2,3"
2520 },
2521 {
2522 "EventCode": "0xB7, 0xBB",
2523 "MSRValue": "0x043c000240 ",
2524 "Counter": "0,1,2,3",
2525 "UMask": "0x1",
2526 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.L3_MISS.SNOOP_HIT_NO_FWD",
2527 "MSRIndex": "0x1a6,0x1a7",
2528 "SampleAfterValue": "100003",
2529 "BriefDescription": "ALL_PF_CODE_RD & L3_MISS & SNOOP_HIT_NO_FWD",
2530 "Offcore": "1",
2531 "CounterHTOff": "0,1,2,3"
2532 },
2533 {
2534 "EventCode": "0xB7, 0xBB",
2535 "MSRValue": "0x2000020091 ",
2536 "Counter": "0,1,2,3",
2537 "UMask": "0x1",
2538 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
2539 "MSRIndex": "0x1a6,0x1a7",
2540 "SampleAfterValue": "100003",
2541 "BriefDescription": "ALL_DATA_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
2542 "Offcore": "1",
2543 "CounterHTOff": "0,1,2,3"
2544 },
2545 {
2546 "EventCode": "0xB7, 0xBB",
2547 "MSRValue": "0x20003c0091 ",
2548 "Counter": "0,1,2,3",
2549 "UMask": "0x1",
2550 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.SNOOP_NON_DRAM",
2551 "MSRIndex": "0x1a6,0x1a7",
2552 "SampleAfterValue": "100003",
2553 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the target was non-DRAM system address.",
2554 "Offcore": "1",
2555 "CounterHTOff": "0,1,2,3"
2556 },
2557 {
2558 "EventCode": "0xB7, 0xBB",
2559 "MSRValue": "0x0084000091 ",
2560 "Counter": "0,1,2,3",
2561 "UMask": "0x1",
2562 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
2563 "MSRIndex": "0x1a6,0x1a7",
2564 "SampleAfterValue": "100003",
2565 "BriefDescription": "ALL_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
2566 "Offcore": "1",
2567 "CounterHTOff": "0,1,2,3"
2568 },
2569 {
2570 "EventCode": "0xB7, 0xBB",
2571 "MSRValue": "0x0104000091 ",
2572 "Counter": "0,1,2,3",
2573 "UMask": "0x1",
2574 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
2575 "MSRIndex": "0x1a6,0x1a7",
2576 "SampleAfterValue": "100003",
2577 "BriefDescription": "ALL_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
2578 "Offcore": "1",
2579 "CounterHTOff": "0,1,2,3"
2580 },
2581 {
2582 "EventCode": "0xB7, 0xBB",
2583 "MSRValue": "0x0204000091 ",
2584 "Counter": "0,1,2,3",
2585 "UMask": "0x1",
2586 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
2587 "MSRIndex": "0x1a6,0x1a7",
2588 "SampleAfterValue": "100003",
2589 "BriefDescription": "ALL_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
2590 "Offcore": "1",
2591 "CounterHTOff": "0,1,2,3"
2592 },
2593 {
2594 "EventCode": "0xB7, 0xBB",
2595 "MSRValue": "0x0404000091 ",
2596 "Counter": "0,1,2,3",
2597 "UMask": "0x1",
2598 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
2599 "MSRIndex": "0x1a6,0x1a7",
2600 "SampleAfterValue": "100003",
2601 "BriefDescription": "ALL_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
2602 "Offcore": "1",
2603 "CounterHTOff": "0,1,2,3"
2604 },
2605 {
2606 "EventCode": "0xB7, 0xBB",
2607 "MSRValue": "0x1004000091 ",
2608 "Counter": "0,1,2,3",
2609 "UMask": "0x1",
2610 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
2611 "MSRIndex": "0x1a6,0x1a7",
2612 "SampleAfterValue": "100003",
2613 "BriefDescription": "ALL_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
2614 "Offcore": "1",
2615 "CounterHTOff": "0,1,2,3"
2616 },
2617 {
2618 "EventCode": "0xB7, 0xBB",
2619 "MSRValue": "0x2004000091 ",
2620 "Counter": "0,1,2,3",
2621 "UMask": "0x1",
2622 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
2623 "MSRIndex": "0x1a6,0x1a7",
2624 "SampleAfterValue": "100003",
2625 "BriefDescription": "ALL_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
2626 "Offcore": "1",
2627 "CounterHTOff": "0,1,2,3"
2628 },
2629 {
2630 "EventCode": "0xB7, 0xBB",
2631 "MSRValue": "0x3f84000091 ",
2632 "Counter": "0,1,2,3",
2633 "UMask": "0x1",
2634 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
2635 "MSRIndex": "0x1a6,0x1a7",
2636 "SampleAfterValue": "100003",
2637 "BriefDescription": "ALL_DATA_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
2638 "Offcore": "1",
2639 "CounterHTOff": "0,1,2,3"
2640 },
2641 {
2642 "EventCode": "0xB7, 0xBB",
2643 "MSRValue": "0x00bc000091 ",
2644 "Counter": "0,1,2,3",
2645 "UMask": "0x1",
2646 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS.SNOOP_NONE",
2647 "MSRIndex": "0x1a6,0x1a7",
2648 "SampleAfterValue": "100003",
2649 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 with no details on snoop-related information.",
2650 "Offcore": "1",
2651 "CounterHTOff": "0,1,2,3"
2652 },
2653 {
2654 "EventCode": "0xB7, 0xBB",
2655 "MSRValue": "0x013c000091 ",
2656 "Counter": "0,1,2,3",
2657 "UMask": "0x1",
2658 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS.SNOOP_NOT_NEEDED",
2659 "MSRIndex": "0x1a6,0x1a7",
2660 "SampleAfterValue": "100003",
2661 "BriefDescription": "ALL_DATA_RD & L3_MISS & SNOOP_NOT_NEEDED",
2662 "Offcore": "1",
2663 "CounterHTOff": "0,1,2,3"
2664 },
2665 {
2666 "EventCode": "0xB7, 0xBB",
2667 "MSRValue": "0x023c000091 ",
2668 "Counter": "0,1,2,3",
2669 "UMask": "0x1",
2670 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS.SNOOP_MISS",
2671 "MSRIndex": "0x1a6,0x1a7",
2672 "SampleAfterValue": "100003",
2673 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 with a snoop miss response.",
2674 "Offcore": "1",
2675 "CounterHTOff": "0,1,2,3"
2676 },
2677 {
2678 "EventCode": "0xB7, 0xBB",
2679 "MSRValue": "0x043c000091 ",
2680 "Counter": "0,1,2,3",
2681 "UMask": "0x1",
2682 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS.SNOOP_HIT_NO_FWD",
2683 "MSRIndex": "0x1a6,0x1a7",
2684 "SampleAfterValue": "100003",
2685 "BriefDescription": "ALL_DATA_RD & L3_MISS & SNOOP_HIT_NO_FWD",
2686 "Offcore": "1",
2687 "CounterHTOff": "0,1,2,3"
2688 },
2689 {
2690 "EventCode": "0xB7, 0xBB",
2691 "MSRValue": "0x2000020122 ",
2692 "Counter": "0,1,2,3",
2693 "UMask": "0x1",
2694 "EventName": "OFFCORE_RESPONSE.ALL_RFO.SUPPLIER_NONE.SNOOP_NON_DRAM",
2695 "MSRIndex": "0x1a6,0x1a7",
2696 "SampleAfterValue": "100003",
2697 "BriefDescription": "ALL_RFO & SUPPLIER_NONE & SNOOP_NON_DRAM",
2698 "Offcore": "1",
2699 "CounterHTOff": "0,1,2,3"
2700 },
2701 {
2702 "EventCode": "0xB7, 0xBB",
2703 "MSRValue": "0x20003c0122 ",
2704 "Counter": "0,1,2,3",
2705 "UMask": "0x1",
2706 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.SNOOP_NON_DRAM",
2707 "MSRIndex": "0x1a6,0x1a7",
2708 "SampleAfterValue": "100003",
2709 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the target was non-DRAM system address.",
2710 "Offcore": "1",
2711 "CounterHTOff": "0,1,2,3"
2712 },
2713 {
2714 "EventCode": "0xB7, 0xBB",
2715 "MSRValue": "0x0084000122 ",
2716 "Counter": "0,1,2,3",
2717 "UMask": "0x1",
2718 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
2719 "MSRIndex": "0x1a6,0x1a7",
2720 "SampleAfterValue": "100003",
2721 "BriefDescription": "ALL_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
2722 "Offcore": "1",
2723 "CounterHTOff": "0,1,2,3"
2724 },
2725 {
2726 "EventCode": "0xB7, 0xBB",
2727 "MSRValue": "0x0104000122 ",
2728 "Counter": "0,1,2,3",
2729 "UMask": "0x1",
2730 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
2731 "MSRIndex": "0x1a6,0x1a7",
2732 "SampleAfterValue": "100003",
2733 "BriefDescription": "ALL_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
2734 "Offcore": "1",
2735 "CounterHTOff": "0,1,2,3"
2736 },
2737 {
2738 "EventCode": "0xB7, 0xBB",
2739 "MSRValue": "0x0204000122 ",
2740 "Counter": "0,1,2,3",
2741 "UMask": "0x1",
2742 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
2743 "MSRIndex": "0x1a6,0x1a7",
2744 "SampleAfterValue": "100003",
2745 "BriefDescription": "ALL_RFO & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
2746 "Offcore": "1",
2747 "CounterHTOff": "0,1,2,3"
2748 },
2749 {
2750 "EventCode": "0xB7, 0xBB",
2751 "MSRValue": "0x0404000122 ",
2752 "Counter": "0,1,2,3",
2753 "UMask": "0x1",
2754 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
2755 "MSRIndex": "0x1a6,0x1a7",
2756 "SampleAfterValue": "100003",
2757 "BriefDescription": "ALL_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
2758 "Offcore": "1",
2759 "CounterHTOff": "0,1,2,3"
2760 },
2761 {
2762 "EventCode": "0xB7, 0xBB",
2763 "MSRValue": "0x1004000122 ",
2764 "Counter": "0,1,2,3",
2765 "UMask": "0x1",
2766 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
2767 "MSRIndex": "0x1a6,0x1a7",
2768 "SampleAfterValue": "100003",
2769 "BriefDescription": "ALL_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
2770 "Offcore": "1",
2771 "CounterHTOff": "0,1,2,3"
2772 },
2773 {
2774 "EventCode": "0xB7, 0xBB",
2775 "MSRValue": "0x2004000122 ",
2776 "Counter": "0,1,2,3",
2777 "UMask": "0x1",
2778 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
2779 "MSRIndex": "0x1a6,0x1a7",
2780 "SampleAfterValue": "100003",
2781 "BriefDescription": "ALL_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
2782 "Offcore": "1",
2783 "CounterHTOff": "0,1,2,3"
2784 },
2785 {
2786 "EventCode": "0xB7, 0xBB",
2787 "MSRValue": "0x3f84000122 ",
2788 "Counter": "0,1,2,3",
2789 "UMask": "0x1",
2790 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
2791 "MSRIndex": "0x1a6,0x1a7",
2792 "SampleAfterValue": "100003",
2793 "BriefDescription": "ALL_RFO & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
2794 "Offcore": "1",
2795 "CounterHTOff": "0,1,2,3"
2796 },
2797 {
2798 "EventCode": "0xB7, 0xBB",
2799 "MSRValue": "0x00bc000122 ",
2800 "Counter": "0,1,2,3",
2801 "UMask": "0x1",
2802 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS.SNOOP_NONE",
2803 "MSRIndex": "0x1a6,0x1a7",
2804 "SampleAfterValue": "100003",
2805 "BriefDescription": "Counts all demand & prefetch RFOs that miss the L3 with no details on snoop-related information.",
2806 "Offcore": "1",
2807 "CounterHTOff": "0,1,2,3"
2808 },
2809 {
2810 "EventCode": "0xB7, 0xBB",
2811 "MSRValue": "0x013c000122 ",
2812 "Counter": "0,1,2,3",
2813 "UMask": "0x1",
2814 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS.SNOOP_NOT_NEEDED",
2815 "MSRIndex": "0x1a6,0x1a7",
2816 "SampleAfterValue": "100003",
2817 "BriefDescription": "ALL_RFO & L3_MISS & SNOOP_NOT_NEEDED",
2818 "Offcore": "1",
2819 "CounterHTOff": "0,1,2,3"
2820 },
2821 {
2822 "EventCode": "0xB7, 0xBB",
2823 "MSRValue": "0x023c000122 ",
2824 "Counter": "0,1,2,3",
2825 "UMask": "0x1",
2826 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS.SNOOP_MISS",
2827 "MSRIndex": "0x1a6,0x1a7",
2828 "SampleAfterValue": "100003",
2829 "BriefDescription": "Counts all demand & prefetch RFOs that miss the L3 with a snoop miss response.",
2830 "Offcore": "1",
2831 "CounterHTOff": "0,1,2,3"
2832 },
2833 {
2834 "EventCode": "0xB7, 0xBB",
2835 "MSRValue": "0x043c000122 ",
2836 "Counter": "0,1,2,3",
2837 "UMask": "0x1",
2838 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS.SNOOP_HIT_NO_FWD",
2839 "MSRIndex": "0x1a6,0x1a7",
2840 "SampleAfterValue": "100003",
2841 "BriefDescription": "ALL_RFO & L3_MISS & SNOOP_HIT_NO_FWD",
2842 "Offcore": "1",
2843 "CounterHTOff": "0,1,2,3"
2844 }
2845] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwell/other.json b/tools/perf/pmu-events/arch/x86/broadwell/other.json
new file mode 100644
index 000000000000..edf14f0d0eaf
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwell/other.json
@@ -0,0 +1,44 @@
1[
2 {
3 "PublicDescription": "This event counts the unhalted core cycles during which the thread is in the ring 0 privileged mode.",
4 "EventCode": "0x5C",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "CPL_CYCLES.RING0",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Unhalted core cycles when the thread is in ring 0",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "This event counts unhalted core cycles during which the thread is in rings 1, 2, or 3.",
14 "EventCode": "0x5C",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "CPL_CYCLES.RING123",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "This event counts when there is a transition from ring 1,2 or 3 to ring0.",
24 "EventCode": "0x5C",
25 "Counter": "0,1,2,3",
26 "UMask": "0x1",
27 "EdgeDetect": "1",
28 "EventName": "CPL_CYCLES.RING0_TRANS",
29 "SampleAfterValue": "100007",
30 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0",
31 "CounterMask": "1",
32 "CounterHTOff": "0,1,2,3,4,5,6,7"
33 },
34 {
35 "PublicDescription": "This event counts cycles in which the L1 and L2 are locked due to a UC lock or split lock. A lock is asserted in case of locked memory access, due to noncacheable memory, locked operation that spans two cache lines, or a page walk from the noncacheable page table. L1D and L2 locks have a very high performance penalty and it is highly recommended to avoid such access.",
36 "EventCode": "0x63",
37 "Counter": "0,1,2,3",
38 "UMask": "0x1",
39 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
40 "SampleAfterValue": "2000003",
41 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock",
42 "CounterHTOff": "0,1,2,3,4,5,6,7"
43 }
44] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwell/pipeline.json b/tools/perf/pmu-events/arch/x86/broadwell/pipeline.json
new file mode 100644
index 000000000000..78913ae87703
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwell/pipeline.json
@@ -0,0 +1,1417 @@
1[
2 {
3 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. \nNotes: INST_RETIRED.ANY is counted by a designated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. INST_RETIRED.ANY_P is counted by a programmable counter and it is an architectural performance event. \nCounting: Faulting executions of GETSEC/VM entry/VM Exit/MWait will not count as retired instructions.",
4 "EventCode": "0x00",
5 "Counter": "Fixed counter 1",
6 "UMask": "0x1",
7 "EventName": "INST_RETIRED.ANY",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Instructions retired from execution.",
10 "CounterHTOff": "Fixed counter 1"
11 },
12 {
13 "PublicDescription": "This event counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events.",
14 "EventCode": "0x00",
15 "Counter": "Fixed counter 2",
16 "UMask": "0x2",
17 "EventName": "CPU_CLK_UNHALTED.THREAD",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Core cycles when the thread is not in halt state",
20 "CounterHTOff": "Fixed counter 2"
21 },
22 {
23 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. This event has a constant ratio with the CPU_CLK_UNHALTED.REF_XCLK event. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. \nNote: On all current platforms this event stops counting during 'throttling (TM)' states duty off periods the processor is 'halted'. This event is clocked by base clock (100 Mhz) on Sandy Bridge. The counter update is done at a lower clock rate then the core clock the overflow status bit for this counter may appear 'sticky'. After the counter has overflowed and software clears the overflow status bit and resets the counter to less than MAX. The reset value to the counter is not clocked immediately so the overflow status bit will flip 'high (1)' and generate another PMI (if enabled) after which the reset value gets clocked into the counter. Therefore, software will get the interrupt, read the overflow status bit '1 for bit 34 while the counter value is less than MAX. Software should ignore this case.",
24 "EventCode": "0x00",
25 "Counter": "Fixed counter 3",
26 "UMask": "0x3",
27 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Reference cycles when the core is not in halt state.",
30 "CounterHTOff": "Fixed counter 3"
31 },
32 {
33 "PublicDescription": "This event counts how many times the load operation got the true Block-on-Store blocking code preventing store forwarding. This includes cases when:\n - preceding store conflicts with the load (incomplete overlap);\n - store forwarding is impossible due to u-arch limitations;\n - preceding lock RMW operations are not forwarded;\n - store has the no-forward bit set (uncacheable/page-split/masked stores);\n - all-blocking stores are used (mostly, fences and port I/O);\nand others.\nThe most common case is a load blocked due to its address range overlapping with a preceding smaller uncompleted store. Note: This event does not take into account cases of out-of-SW-control (for example, SbTailHit), unknown physical STA, and cases of blocking loads on store due to being non-WB memory type or a lock. These cases are covered by other events.\nSee the table of not supported store forwards in the Optimization Guide.",
34 "EventCode": "0x03",
35 "Counter": "0,1,2,3",
36 "UMask": "0x2",
37 "EventName": "LD_BLOCKS.STORE_FORWARD",
38 "SampleAfterValue": "100003",
39 "BriefDescription": "Cases when loads get true Block-on-Store blocking code preventing store forwarding",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x03",
44 "Counter": "0,1,2,3",
45 "UMask": "0x8",
46 "EventName": "LD_BLOCKS.NO_SR",
47 "SampleAfterValue": "100003",
48 "BriefDescription": "This event counts the number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "PublicDescription": "This event counts false dependencies in MOB when the partial comparison upon loose net check and dependency was resolved by the Enhanced Loose net mechanism. This may not result in high performance penalties. Loose net checks can fail when loads and stores are 4k aliased.",
53 "EventCode": "0x07",
54 "Counter": "0,1,2,3",
55 "UMask": "0x1",
56 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
57 "SampleAfterValue": "100003",
58 "BriefDescription": "False dependencies in MOB due to partial compare",
59 "CounterHTOff": "0,1,2,3,4,5,6,7"
60 },
61 {
62 "PublicDescription": "This event counts the number of cycles during which Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the current thread. This also includes the cycles during which the Allocator is serving another thread.",
63 "EventCode": "0x0D",
64 "Counter": "0,1,2,3",
65 "UMask": "0x8",
66 "EventName": "INT_MISC.RAT_STALL_CYCLES",
67 "SampleAfterValue": "2000003",
68 "BriefDescription": "Cycles when Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the thread",
69 "CounterHTOff": "0,1,2,3,4,5,6,7"
70 },
71 {
72 "PublicDescription": "Cycles checkpoints in Resource Allocation Table (RAT) are recovering from JEClear or machine clear.",
73 "EventCode": "0x0D",
74 "Counter": "0,1,2,3",
75 "UMask": "0x3",
76 "EventName": "INT_MISC.RECOVERY_CYCLES",
77 "SampleAfterValue": "2000003",
78 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...)",
79 "CounterMask": "1",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "PublicDescription": "This event counts the number of Uops issued by the Resource Allocation Table (RAT) to the reservation station (RS).",
84 "EventCode": "0x0E",
85 "Counter": "0,1,2,3",
86 "UMask": "0x1",
87 "EventName": "UOPS_ISSUED.ANY",
88 "SampleAfterValue": "2000003",
89 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "PublicDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive\n added by GSR u-arch.",
94 "EventCode": "0x0E",
95 "Counter": "0,1,2,3",
96 "UMask": "0x10",
97 "EventName": "UOPS_ISSUED.FLAGS_MERGE",
98 "SampleAfterValue": "2000003",
99 "BriefDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive; added by GSR u-arch.",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "EventCode": "0x0E",
104 "Counter": "0,1,2,3",
105 "UMask": "0x20",
106 "EventName": "UOPS_ISSUED.SLOW_LEA",
107 "SampleAfterValue": "2000003",
108 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
109 "CounterHTOff": "0,1,2,3,4,5,6,7"
110 },
111 {
112 "EventCode": "0x0E",
113 "Counter": "0,1,2,3",
114 "UMask": "0x40",
115 "EventName": "UOPS_ISSUED.SINGLE_MUL",
116 "SampleAfterValue": "2000003",
117 "BriefDescription": "Number of Multiply packed/scalar single precision uops allocated.",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "PublicDescription": "This event counts cycles during which the Resource Allocation Table (RAT) does not issue any Uops to the reservation station (RS) for the current thread.",
122 "EventCode": "0x0E",
123 "Invert": "1",
124 "Counter": "0,1,2,3",
125 "UMask": "0x1",
126 "EventName": "UOPS_ISSUED.STALL_CYCLES",
127 "SampleAfterValue": "2000003",
128 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread",
129 "CounterMask": "1",
130 "CounterHTOff": "0,1,2,3"
131 },
132 {
133 "PublicDescription": "This event counts the number of the divide operations executed. Uses edge-detect and a cmask value of 1 on ARITH.FPU_DIV_ACTIVE to get the number of the divide operations executed.",
134 "EventCode": "0x14",
135 "Counter": "0,1,2,3",
136 "UMask": "0x1",
137 "EventName": "ARITH.FPU_DIV_ACTIVE",
138 "SampleAfterValue": "2000003",
139 "BriefDescription": "Cycles when divider is busy executing divide operations",
140 "CounterHTOff": "0,1,2,3,4,5,6,7"
141 },
142 {
143 "PublicDescription": "This is a fixed-frequency event programmed to general counters. It counts when the core is unhalted at 100 Mhz.",
144 "EventCode": "0x3C",
145 "Counter": "0,1,2,3",
146 "UMask": "0x1",
147 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
148 "SampleAfterValue": "2000003",
149 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
150 "CounterHTOff": "0,1,2,3,4,5,6,7"
151 },
152 {
153 "EventCode": "0x3c",
154 "Counter": "0,1,2,3",
155 "UMask": "0x2",
156 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
157 "SampleAfterValue": "2000003",
158 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
159 "CounterHTOff": "0,1,2,3"
160 },
161 {
162 "PublicDescription": "This event counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the software prefetch. It can also be incremented by some lock instructions. So it should only be used with profiling so that the locks can be excluded by asm inspection of the nearby instructions.",
163 "EventCode": "0x4c",
164 "Counter": "0,1,2,3",
165 "UMask": "0x1",
166 "EventName": "LOAD_HIT_PRE.SW_PF",
167 "SampleAfterValue": "100003",
168 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch",
169 "CounterHTOff": "0,1,2,3,4,5,6,7"
170 },
171 {
172 "PublicDescription": "This event counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the hardware prefetch.",
173 "EventCode": "0x4C",
174 "Counter": "0,1,2,3",
175 "UMask": "0x2",
176 "EventName": "LOAD_HIT_PRE.HW_PF",
177 "SampleAfterValue": "100003",
178 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch",
179 "CounterHTOff": "0,1,2,3,4,5,6,7"
180 },
181 {
182 "EventCode": "0x58",
183 "Counter": "0,1,2,3",
184 "UMask": "0x1",
185 "EventName": "MOVE_ELIMINATION.INT_ELIMINATED",
186 "SampleAfterValue": "1000003",
187 "BriefDescription": "Number of integer Move Elimination candidate uops that were eliminated.",
188 "CounterHTOff": "0,1,2,3,4,5,6,7"
189 },
190 {
191 "EventCode": "0x58",
192 "Counter": "0,1,2,3",
193 "UMask": "0x2",
194 "EventName": "MOVE_ELIMINATION.SIMD_ELIMINATED",
195 "SampleAfterValue": "1000003",
196 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were eliminated.",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "EventCode": "0x58",
201 "Counter": "0,1,2,3",
202 "UMask": "0x4",
203 "EventName": "MOVE_ELIMINATION.INT_NOT_ELIMINATED",
204 "SampleAfterValue": "1000003",
205 "BriefDescription": "Number of integer Move Elimination candidate uops that were not eliminated.",
206 "CounterHTOff": "0,1,2,3,4,5,6,7"
207 },
208 {
209 "EventCode": "0x58",
210 "Counter": "0,1,2,3",
211 "UMask": "0x8",
212 "EventName": "MOVE_ELIMINATION.SIMD_NOT_ELIMINATED",
213 "SampleAfterValue": "1000003",
214 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were not eliminated.",
215 "CounterHTOff": "0,1,2,3,4,5,6,7"
216 },
217 {
218 "PublicDescription": "This event counts cycles during which the reservation station (RS) is empty for the thread.\nNote: In ST-mode, not active thread should drive 0. This is usually caused by severely costly branch mispredictions, or allocator/FE issues.",
219 "EventCode": "0x5E",
220 "Counter": "0,1,2,3",
221 "UMask": "0x1",
222 "EventName": "RS_EVENTS.EMPTY_CYCLES",
223 "SampleAfterValue": "2000003",
224 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
225 "CounterHTOff": "0,1,2,3,4,5,6,7"
226 },
227 {
228 "PublicDescription": "This event counts stalls occured due to changing prefix length (66, 67 or REX.W when they change the length of the decoded instruction). Occurrences counting is proportional to the number of prefixes in a 16B-line. This may result in the following penalties: three-cycle penalty for each LCP in a 16-byte chunk.",
229 "EventCode": "0x87",
230 "Counter": "0,1,2,3",
231 "UMask": "0x1",
232 "EventName": "ILD_STALL.LCP",
233 "SampleAfterValue": "2000003",
234 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
235 "CounterHTOff": "0,1,2,3,4,5,6,7"
236 },
237 {
238 "PublicDescription": "This event counts not taken macro-conditional branch instructions.",
239 "EventCode": "0x88",
240 "Counter": "0,1,2,3",
241 "UMask": "0x41",
242 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
243 "SampleAfterValue": "200003",
244 "BriefDescription": "Not taken macro-conditional branches",
245 "CounterHTOff": "0,1,2,3,4,5,6,7"
246 },
247 {
248 "PublicDescription": "This event counts taken speculative and retired macro-conditional branch instructions.",
249 "EventCode": "0x88",
250 "Counter": "0,1,2,3",
251 "UMask": "0x81",
252 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
253 "SampleAfterValue": "200003",
254 "BriefDescription": "Taken speculative and retired macro-conditional branches",
255 "CounterHTOff": "0,1,2,3,4,5,6,7"
256 },
257 {
258 "PublicDescription": "This event counts taken speculative and retired macro-conditional branch instructions excluding calls and indirect branches.",
259 "EventCode": "0x88",
260 "Counter": "0,1,2,3",
261 "UMask": "0x82",
262 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
263 "SampleAfterValue": "200003",
264 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects",
265 "CounterHTOff": "0,1,2,3,4,5,6,7"
266 },
267 {
268 "PublicDescription": "This event counts taken speculative and retired indirect branches excluding calls and return branches.",
269 "EventCode": "0x88",
270 "Counter": "0,1,2,3",
271 "UMask": "0x84",
272 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
273 "SampleAfterValue": "200003",
274 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns",
275 "CounterHTOff": "0,1,2,3,4,5,6,7"
276 },
277 {
278 "PublicDescription": "This event counts taken speculative and retired indirect branches that have a return mnemonic.",
279 "EventCode": "0x88",
280 "Counter": "0,1,2,3",
281 "UMask": "0x88",
282 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
283 "SampleAfterValue": "200003",
284 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic",
285 "CounterHTOff": "0,1,2,3,4,5,6,7"
286 },
287 {
288 "PublicDescription": "This event counts taken speculative and retired direct near calls.",
289 "EventCode": "0x88",
290 "Counter": "0,1,2,3",
291 "UMask": "0x90",
292 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
293 "SampleAfterValue": "200003",
294 "BriefDescription": "Taken speculative and retired direct near calls",
295 "CounterHTOff": "0,1,2,3,4,5,6,7"
296 },
297 {
298 "PublicDescription": "This event counts taken speculative and retired indirect calls including both register and memory indirect.",
299 "EventCode": "0x88",
300 "Counter": "0,1,2,3",
301 "UMask": "0xa0",
302 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
303 "SampleAfterValue": "200003",
304 "BriefDescription": "Taken speculative and retired indirect calls",
305 "CounterHTOff": "0,1,2,3,4,5,6,7"
306 },
307 {
308 "PublicDescription": "This event counts both taken and not taken speculative and retired macro-conditional branch instructions.",
309 "EventCode": "0x88",
310 "Counter": "0,1,2,3",
311 "UMask": "0xc1",
312 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
313 "SampleAfterValue": "200003",
314 "BriefDescription": "Speculative and retired macro-conditional branches",
315 "CounterHTOff": "0,1,2,3,4,5,6,7"
316 },
317 {
318 "PublicDescription": "This event counts both taken and not taken speculative and retired macro-unconditional branch instructions, excluding calls and indirects.",
319 "EventCode": "0x88",
320 "Counter": "0,1,2,3",
321 "UMask": "0xc2",
322 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
323 "SampleAfterValue": "200003",
324 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects",
325 "CounterHTOff": "0,1,2,3,4,5,6,7"
326 },
327 {
328 "PublicDescription": "This event counts both taken and not taken speculative and retired indirect branches excluding calls and return branches.",
329 "EventCode": "0x88",
330 "Counter": "0,1,2,3",
331 "UMask": "0xc4",
332 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
333 "SampleAfterValue": "200003",
334 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns",
335 "CounterHTOff": "0,1,2,3,4,5,6,7"
336 },
337 {
338 "PublicDescription": "This event counts both taken and not taken speculative and retired indirect branches that have a return mnemonic.",
339 "EventCode": "0x88",
340 "Counter": "0,1,2,3",
341 "UMask": "0xc8",
342 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
343 "SampleAfterValue": "200003",
344 "BriefDescription": "Speculative and retired indirect return branches.",
345 "CounterHTOff": "0,1,2,3,4,5,6,7"
346 },
347 {
348 "PublicDescription": "This event counts both taken and not taken speculative and retired direct near calls.",
349 "EventCode": "0x88",
350 "Counter": "0,1,2,3",
351 "UMask": "0xd0",
352 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
353 "SampleAfterValue": "200003",
354 "BriefDescription": "Speculative and retired direct near calls",
355 "CounterHTOff": "0,1,2,3,4,5,6,7"
356 },
357 {
358 "PublicDescription": "This event counts both taken and not taken speculative and retired branch instructions.",
359 "EventCode": "0x88",
360 "Counter": "0,1,2,3",
361 "UMask": "0xff",
362 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
363 "SampleAfterValue": "200003",
364 "BriefDescription": "Speculative and retired branches",
365 "CounterHTOff": "0,1,2,3,4,5,6,7"
366 },
367 {
368 "PublicDescription": "This event counts not taken speculative and retired mispredicted macro conditional branch instructions.",
369 "EventCode": "0x89",
370 "Counter": "0,1,2,3",
371 "UMask": "0x41",
372 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
373 "SampleAfterValue": "200003",
374 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches",
375 "CounterHTOff": "0,1,2,3,4,5,6,7"
376 },
377 {
378 "PublicDescription": "This event counts taken speculative and retired mispredicted macro conditional branch instructions.",
379 "EventCode": "0x89",
380 "Counter": "0,1,2,3",
381 "UMask": "0x81",
382 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
383 "SampleAfterValue": "200003",
384 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches",
385 "CounterHTOff": "0,1,2,3,4,5,6,7"
386 },
387 {
388 "PublicDescription": "This event counts taken speculative and retired mispredicted indirect branches excluding calls and returns.",
389 "EventCode": "0x89",
390 "Counter": "0,1,2,3",
391 "UMask": "0x84",
392 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
393 "SampleAfterValue": "200003",
394 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns",
395 "CounterHTOff": "0,1,2,3,4,5,6,7"
396 },
397 {
398 "PublicDescription": "This event counts taken speculative and retired mispredicted indirect branches that have a return mnemonic.",
399 "EventCode": "0x89",
400 "Counter": "0,1,2,3",
401 "UMask": "0x88",
402 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
403 "SampleAfterValue": "200003",
404 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic",
405 "CounterHTOff": "0,1,2,3,4,5,6,7"
406 },
407 {
408 "PublicDescription": "This event counts both taken and not taken speculative and retired mispredicted macro conditional branch instructions.",
409 "EventCode": "0x89",
410 "Counter": "0,1,2,3",
411 "UMask": "0xc1",
412 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
413 "SampleAfterValue": "200003",
414 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
415 "CounterHTOff": "0,1,2,3,4,5,6,7"
416 },
417 {
418 "PublicDescription": "This event counts both taken and not taken mispredicted indirect branches excluding calls and returns.",
419 "EventCode": "0x89",
420 "Counter": "0,1,2,3",
421 "UMask": "0xc4",
422 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
423 "SampleAfterValue": "200003",
424 "BriefDescription": "Mispredicted indirect branches excluding calls and returns",
425 "CounterHTOff": "0,1,2,3,4,5,6,7"
426 },
427 {
428 "PublicDescription": "This event counts both taken and not taken speculative and retired mispredicted branch instructions.",
429 "EventCode": "0x89",
430 "Counter": "0,1,2,3",
431 "UMask": "0xff",
432 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
433 "SampleAfterValue": "200003",
434 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
435 "CounterHTOff": "0,1,2,3,4,5,6,7"
436 },
437 {
438 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 0.",
439 "EventCode": "0xA1",
440 "Counter": "0,1,2,3",
441 "UMask": "0x1",
442 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
443 "SampleAfterValue": "2000003",
444 "BriefDescription": "Cycles per thread when uops are executed in port 0",
445 "CounterHTOff": "0,1,2,3,4,5,6,7"
446 },
447 {
448 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 1.",
449 "EventCode": "0xA1",
450 "Counter": "0,1,2,3",
451 "UMask": "0x2",
452 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
453 "SampleAfterValue": "2000003",
454 "BriefDescription": "Cycles per thread when uops are executed in port 1",
455 "CounterHTOff": "0,1,2,3,4,5,6,7"
456 },
457 {
458 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 2.",
459 "EventCode": "0xA1",
460 "Counter": "0,1,2,3",
461 "UMask": "0x4",
462 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
463 "SampleAfterValue": "2000003",
464 "BriefDescription": "Cycles per thread when uops are executed in port 2",
465 "CounterHTOff": "0,1,2,3,4,5,6,7"
466 },
467 {
468 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 3.",
469 "EventCode": "0xA1",
470 "Counter": "0,1,2,3",
471 "UMask": "0x8",
472 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
473 "SampleAfterValue": "2000003",
474 "BriefDescription": "Cycles per thread when uops are executed in port 3",
475 "CounterHTOff": "0,1,2,3,4,5,6,7"
476 },
477 {
478 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 4.",
479 "EventCode": "0xA1",
480 "Counter": "0,1,2,3",
481 "UMask": "0x10",
482 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
483 "SampleAfterValue": "2000003",
484 "BriefDescription": "Cycles per thread when uops are executed in port 4",
485 "CounterHTOff": "0,1,2,3,4,5,6,7"
486 },
487 {
488 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 5.",
489 "EventCode": "0xA1",
490 "Counter": "0,1,2,3",
491 "UMask": "0x20",
492 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
493 "SampleAfterValue": "2000003",
494 "BriefDescription": "Cycles per thread when uops are executed in port 5",
495 "CounterHTOff": "0,1,2,3,4,5,6,7"
496 },
497 {
498 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 6.",
499 "EventCode": "0xA1",
500 "Counter": "0,1,2,3",
501 "UMask": "0x40",
502 "EventName": "UOPS_DISPATCHED_PORT.PORT_6",
503 "SampleAfterValue": "2000003",
504 "BriefDescription": "Cycles per thread when uops are executed in port 6",
505 "CounterHTOff": "0,1,2,3,4,5,6,7"
506 },
507 {
508 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 7.",
509 "EventCode": "0xA1",
510 "Counter": "0,1,2,3",
511 "UMask": "0x80",
512 "EventName": "UOPS_DISPATCHED_PORT.PORT_7",
513 "SampleAfterValue": "2000003",
514 "BriefDescription": "Cycles per thread when uops are executed in port 7",
515 "CounterHTOff": "0,1,2,3,4,5,6,7"
516 },
517 {
518 "PublicDescription": "This event counts resource-related stall cycles. Reasons for stalls can be as follows:\n - *any* u-arch structure got full (LB, SB, RS, ROB, BOB, LM, Physical Register Reclaim Table (PRRT), or Physical History Table (PHT) slots)\n - *any* u-arch structure got empty (like INT/SIMD FreeLists)\n - FPU control word (FPCW), MXCSR\nand others. This counts cycles that the pipeline backend blocked uop delivery from the front end.",
519 "EventCode": "0xA2",
520 "Counter": "0,1,2,3",
521 "UMask": "0x1",
522 "EventName": "RESOURCE_STALLS.ANY",
523 "SampleAfterValue": "2000003",
524 "BriefDescription": "Resource-related stall cycles",
525 "CounterHTOff": "0,1,2,3,4,5,6,7"
526 },
527 {
528 "PublicDescription": "This event counts stall cycles caused by absence of eligible entries in the reservation station (RS). This may result from RS overflow, or from RS deallocation because of the RS array Write Port allocation scheme (each RS entry has two write ports instead of four. As a result, empty entries could not be used, although RS is not really full). This counts cycles that the pipeline backend blocked uop delivery from the front end.",
529 "EventCode": "0xA2",
530 "Counter": "0,1,2,3",
531 "UMask": "0x4",
532 "EventName": "RESOURCE_STALLS.RS",
533 "SampleAfterValue": "2000003",
534 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
535 "CounterHTOff": "0,1,2,3,4,5,6,7"
536 },
537 {
538 "PublicDescription": "This event counts stall cycles caused by the store buffer (SB) overflow (excluding draining from synch). This counts cycles that the pipeline backend blocked uop delivery from the front end.",
539 "EventCode": "0xA2",
540 "Counter": "0,1,2,3",
541 "UMask": "0x8",
542 "EventName": "RESOURCE_STALLS.SB",
543 "SampleAfterValue": "2000003",
544 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "PublicDescription": "This event counts ROB full stall cycles. This counts cycles that the pipeline backend blocked uop delivery from the front end.",
549 "EventCode": "0xA2",
550 "Counter": "0,1,2,3",
551 "UMask": "0x10",
552 "EventName": "RESOURCE_STALLS.ROB",
553 "SampleAfterValue": "2000003",
554 "BriefDescription": "Cycles stalled due to re-order buffer full.",
555 "CounterHTOff": "0,1,2,3,4,5,6,7"
556 },
557 {
558 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand* load request missing the L2 cache.",
559 "EventCode": "0xA3",
560 "Counter": "0,1,2,3",
561 "UMask": "0x1",
562 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
563 "SampleAfterValue": "2000003",
564 "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
565 "CounterMask": "1",
566 "CounterHTOff": "0,1,2,3,4,5,6,7"
567 },
568 {
569 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand load request missing the L1 data cache.",
570 "EventCode": "0xA3",
571 "Counter": "2",
572 "UMask": "0x8",
573 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
574 "SampleAfterValue": "2000003",
575 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
576 "CounterMask": "8",
577 "CounterHTOff": "2"
578 },
579 {
580 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand load request (that is cycles with non-completed load waiting for its data from memory subsystem).",
581 "EventCode": "0xA3",
582 "Counter": "0,1,2,3",
583 "UMask": "0x2",
584 "EventName": "CYCLE_ACTIVITY.CYCLES_LDM_PENDING",
585 "SampleAfterValue": "2000003",
586 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
587 "CounterMask": "2",
588 "CounterHTOff": "0,1,2,3,4,5,6,7"
589 },
590 {
591 "PublicDescription": "Counts number of cycles nothing is executed on any execution port.",
592 "EventCode": "0xA3",
593 "Counter": "0,1,2,3",
594 "UMask": "0x4",
595 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_EXECUTE",
596 "SampleAfterValue": "2000003",
597 "BriefDescription": "Total execution stalls",
598 "CounterMask": "4",
599 "CounterHTOff": "0,1,2,3"
600 },
601 {
602 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand* load request missing the L2 cache.(as a footprint) * includes also L1 HW prefetch requests that may or may not be required by demands.",
603 "EventCode": "0xA3",
604 "Counter": "0,1,2,3",
605 "UMask": "0x5",
606 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
607 "SampleAfterValue": "2000003",
608 "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
609 "CounterMask": "5",
610 "CounterHTOff": "0,1,2,3"
611 },
612 {
613 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand load request.",
614 "EventCode": "0xA3",
615 "Counter": "0,1,2,3",
616 "UMask": "0x6",
617 "EventName": "CYCLE_ACTIVITY.STALLS_LDM_PENDING",
618 "SampleAfterValue": "2000003",
619 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
620 "CounterMask": "6",
621 "CounterHTOff": "0,1,2,3"
622 },
623 {
624 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand load request missing the L1 data cache.",
625 "EventCode": "0xA3",
626 "Counter": "2",
627 "UMask": "0xc",
628 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
629 "SampleAfterValue": "2000003",
630 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
631 "CounterMask": "12",
632 "CounterHTOff": "2"
633 },
634 {
635 "PublicDescription": "Number of Uops delivered by the LSD. ",
636 "EventCode": "0xA8",
637 "Counter": "0,1,2,3",
638 "UMask": "0x1",
639 "EventName": "LSD.UOPS",
640 "SampleAfterValue": "2000003",
641 "BriefDescription": "Number of Uops delivered by the LSD.",
642 "CounterHTOff": "0,1,2,3,4,5,6,7"
643 },
644 {
645 "PublicDescription": "Number of uops to be executed per-thread each cycle.",
646 "EventCode": "0xB1",
647 "Counter": "0,1,2,3",
648 "UMask": "0x1",
649 "EventName": "UOPS_EXECUTED.THREAD",
650 "SampleAfterValue": "2000003",
651 "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
652 "CounterHTOff": "0,1,2,3,4,5,6,7"
653 },
654 {
655 "PublicDescription": "Number of uops executed from any thread.",
656 "EventCode": "0xB1",
657 "Counter": "0,1,2,3",
658 "UMask": "0x2",
659 "EventName": "UOPS_EXECUTED.CORE",
660 "SampleAfterValue": "2000003",
661 "BriefDescription": "Number of uops executed on the core.",
662 "CounterHTOff": "0,1,2,3,4,5,6,7"
663 },
664 {
665 "PublicDescription": "This event counts cycles during which no uops were dispatched from the Reservation Station (RS) per thread.",
666 "EventCode": "0xB1",
667 "Invert": "1",
668 "Counter": "0,1,2,3",
669 "UMask": "0x1",
670 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
671 "SampleAfterValue": "2000003",
672 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
673 "CounterMask": "1",
674 "CounterHTOff": "0,1,2,3"
675 },
676 {
677 "PublicDescription": "This event counts the number of instructions (EOMs) retired. Counting covers macro-fused instructions individually (that is, increments by two).",
678 "EventCode": "0xC0",
679 "Counter": "0,1,2,3",
680 "UMask": "0x0",
681 "Errata": "BDM61",
682 "EventName": "INST_RETIRED.ANY_P",
683 "SampleAfterValue": "2000003",
684 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
685 "CounterHTOff": "0,1,2,3,4,5,6,7"
686 },
687 {
688 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts FP operations retired. For X87 FP operations that have no exceptions counting also includes flows that have several X87, or flows that use X87 uops in the exception handling.",
689 "EventCode": "0xC0",
690 "Counter": "0,1,2,3",
691 "UMask": "0x2",
692 "EventName": "INST_RETIRED.X87",
693 "SampleAfterValue": "2000003",
694 "BriefDescription": "FP operations retired. X87 FP operations that have no exceptions:",
695 "CounterHTOff": "0,1,2,3,4,5,6,7"
696 },
697 {
698 "PEBS": "2",
699 "PublicDescription": "This is a precise version (that is, uses PEBS) of the event that counts instructions retired.",
700 "EventCode": "0xC0",
701 "Counter": "1",
702 "UMask": "0x1",
703 "Errata": "BDM11, BDM55",
704 "EventName": "INST_RETIRED.PREC_DIST",
705 "SampleAfterValue": "2000003",
706 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
707 "CounterHTOff": "1"
708 },
709 {
710 "EventCode": "0xC1",
711 "Counter": "0,1,2,3",
712 "UMask": "0x40",
713 "EventName": "OTHER_ASSISTS.ANY_WB_ASSIST",
714 "SampleAfterValue": "100003",
715 "BriefDescription": "Number of times any microcode assist is invoked by HW upon uop writeback.",
716 "CounterHTOff": "0,1,2,3,4,5,6,7"
717 },
718 {
719 "PEBS": "1",
720 "PublicDescription": "This event counts all actually retired uops. Counting increments by two for micro-fused uops, and by one for macro-fused and other uops. Maximal increment value for one cycle is eight.",
721 "EventCode": "0xC2",
722 "Counter": "0,1,2,3",
723 "UMask": "0x1",
724 "EventName": "UOPS_RETIRED.ALL",
725 "SampleAfterValue": "2000003",
726 "BriefDescription": "Actually retired uops.",
727 "CounterHTOff": "0,1,2,3,4,5,6,7",
728 "Data_LA": "1"
729 },
730 {
731 "PEBS": "1",
732 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of retirement slots used.",
733 "EventCode": "0xC2",
734 "Counter": "0,1,2,3",
735 "UMask": "0x2",
736 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
737 "SampleAfterValue": "2000003",
738 "BriefDescription": "Retirement slots used.",
739 "CounterHTOff": "0,1,2,3,4,5,6,7"
740 },
741 {
742 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts cycles without actually retired uops.",
743 "EventCode": "0xC2",
744 "Invert": "1",
745 "Counter": "0,1,2,3",
746 "UMask": "0x1",
747 "EventName": "UOPS_RETIRED.STALL_CYCLES",
748 "SampleAfterValue": "2000003",
749 "BriefDescription": "Cycles without actually retired uops.",
750 "CounterMask": "1",
751 "CounterHTOff": "0,1,2,3"
752 },
753 {
754 "PublicDescription": "Number of cycles using always true condition (uops_ret < 16) applied to non PEBS uops retired event.",
755 "EventCode": "0xC2",
756 "Invert": "1",
757 "Counter": "0,1,2,3",
758 "UMask": "0x1",
759 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
760 "SampleAfterValue": "2000003",
761 "BriefDescription": "Cycles with less than 10 actually retired uops.",
762 "CounterMask": "10",
763 "CounterHTOff": "0,1,2,3"
764 },
765 {
766 "PublicDescription": "This event counts both thread-specific (TS) and all-thread (AT) nukes.",
767 "EventCode": "0xC3",
768 "Counter": "0,1,2,3",
769 "UMask": "0x1",
770 "EventName": "MACHINE_CLEARS.CYCLES",
771 "SampleAfterValue": "2000003",
772 "BriefDescription": "Cycles there was a Nuke. Account for both thread-specific and All Thread Nukes.",
773 "CounterHTOff": "0,1,2,3,4,5,6,7"
774 },
775 {
776 "PublicDescription": "This event counts self-modifying code (SMC) detected, which causes a machine clear.",
777 "EventCode": "0xC3",
778 "Counter": "0,1,2,3",
779 "UMask": "0x4",
780 "EventName": "MACHINE_CLEARS.SMC",
781 "SampleAfterValue": "100003",
782 "BriefDescription": "Self-modifying code (SMC) detected.",
783 "CounterHTOff": "0,1,2,3,4,5,6,7"
784 },
785 {
786 "PublicDescription": "Maskmov false fault - counts number of time ucode passes through Maskmov flow due to instruction's mask being 0 while the flow was completed without raising a fault.",
787 "EventCode": "0xC3",
788 "Counter": "0,1,2,3",
789 "UMask": "0x20",
790 "EventName": "MACHINE_CLEARS.MASKMOV",
791 "SampleAfterValue": "100003",
792 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
793 "CounterHTOff": "0,1,2,3,4,5,6,7"
794 },
795 {
796 "PEBS": "1",
797 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts conditional branch instructions retired.",
798 "EventCode": "0xC4",
799 "Counter": "0,1,2,3",
800 "UMask": "0x1",
801 "EventName": "BR_INST_RETIRED.CONDITIONAL",
802 "SampleAfterValue": "400009",
803 "BriefDescription": "Conditional branch instructions retired.",
804 "CounterHTOff": "0,1,2,3,4,5,6,7"
805 },
806 {
807 "PEBS": "1",
808 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts both direct and indirect near call instructions retired.",
809 "EventCode": "0xC4",
810 "Counter": "0,1,2,3",
811 "UMask": "0x2",
812 "EventName": "BR_INST_RETIRED.NEAR_CALL",
813 "SampleAfterValue": "100007",
814 "BriefDescription": "Direct and indirect near call instructions retired.",
815 "CounterHTOff": "0,1,2,3,4,5,6,7"
816 },
817 {
818 "PublicDescription": "This event counts all (macro) branch instructions retired.",
819 "EventCode": "0xC4",
820 "Counter": "0,1,2,3",
821 "UMask": "0x0",
822 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
823 "SampleAfterValue": "400009",
824 "BriefDescription": "All (macro) branch instructions retired.",
825 "CounterHTOff": "0,1,2,3,4,5,6,7"
826 },
827 {
828 "PEBS": "1",
829 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts return instructions retired.",
830 "EventCode": "0xC4",
831 "Counter": "0,1,2,3",
832 "UMask": "0x8",
833 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
834 "SampleAfterValue": "100007",
835 "BriefDescription": "Return instructions retired.",
836 "CounterHTOff": "0,1,2,3,4,5,6,7"
837 },
838 {
839 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts not taken branch instructions retired.",
840 "EventCode": "0xC4",
841 "Counter": "0,1,2,3",
842 "UMask": "0x10",
843 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
844 "SampleAfterValue": "400009",
845 "BriefDescription": "Not taken branch instructions retired.",
846 "CounterHTOff": "0,1,2,3,4,5,6,7"
847 },
848 {
849 "PEBS": "1",
850 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts taken branch instructions retired.",
851 "EventCode": "0xC4",
852 "Counter": "0,1,2,3",
853 "UMask": "0x20",
854 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
855 "SampleAfterValue": "400009",
856 "BriefDescription": "Taken branch instructions retired.",
857 "CounterHTOff": "0,1,2,3,4,5,6,7"
858 },
859 {
860 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts far branch instructions retired.",
861 "EventCode": "0xC4",
862 "Counter": "0,1,2,3",
863 "UMask": "0x40",
864 "Errata": "BDW98",
865 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
866 "SampleAfterValue": "100007",
867 "BriefDescription": "Far branch instructions retired.",
868 "CounterHTOff": "0,1,2,3,4,5,6,7"
869 },
870 {
871 "PEBS": "2",
872 "PublicDescription": "This is a precise version of BR_INST_RETIRED.ALL_BRANCHES that counts all (macro) branch instructions retired.",
873 "EventCode": "0xC4",
874 "Counter": "0,1,2,3",
875 "UMask": "0x4",
876 "Errata": "BDW98",
877 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
878 "SampleAfterValue": "400009",
879 "BriefDescription": "All (macro) branch instructions retired. (Precise Event - PEBS)",
880 "CounterHTOff": "0,1,2,3"
881 },
882 {
883 "PEBS": "1",
884 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted conditional branch instructions retired.",
885 "EventCode": "0xC5",
886 "Counter": "0,1,2,3",
887 "UMask": "0x1",
888 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
889 "SampleAfterValue": "400009",
890 "BriefDescription": "Mispredicted conditional branch instructions retired.",
891 "CounterHTOff": "0,1,2,3,4,5,6,7"
892 },
893 {
894 "PublicDescription": "This event counts all mispredicted macro branch instructions retired.",
895 "EventCode": "0xC5",
896 "Counter": "0,1,2,3",
897 "UMask": "0x0",
898 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
899 "SampleAfterValue": "400009",
900 "BriefDescription": "All mispredicted macro branch instructions retired.",
901 "CounterHTOff": "0,1,2,3,4,5,6,7"
902 },
903 {
904 "PEBS": "1",
905 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted return instructions retired.",
906 "EventCode": "0xC5",
907 "Counter": "0,1,2,3",
908 "UMask": "0x8",
909 "EventName": "BR_MISP_RETIRED.RET",
910 "SampleAfterValue": "100007",
911 "BriefDescription": "This event counts the number of mispredicted ret instructions retired. Non PEBS",
912 "CounterHTOff": "0,1,2,3,4,5,6,7"
913 },
914 {
915 "PEBS": "2",
916 "PublicDescription": "This is a precise version of BR_MISP_RETIRED.ALL_BRANCHES that counts all mispredicted macro branch instructions retired.",
917 "EventCode": "0xC5",
918 "Counter": "0,1,2,3",
919 "UMask": "0x4",
920 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
921 "SampleAfterValue": "400009",
922 "BriefDescription": "Mispredicted macro branch instructions retired. (Precise Event - PEBS)",
923 "CounterHTOff": "0,1,2,3"
924 },
925 {
926 "PublicDescription": "This event counts cases of saving new LBR records by hardware. This assumes proper enabling of LBRs and takes into account LBR filtering done by the LBR_SELECT register.",
927 "EventCode": "0xCC",
928 "Counter": "0,1,2,3",
929 "UMask": "0x20",
930 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
931 "SampleAfterValue": "2000003",
932 "BriefDescription": "Count cases of saving new LBR",
933 "CounterHTOff": "0,1,2,3,4,5,6,7"
934 },
935 {
936 "PublicDescription": "This is an architectural event that counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling. For this reason, this event may have a changing ratio with regards to wall clock time.",
937 "EventCode": "0x3C",
938 "Counter": "0,1,2,3",
939 "UMask": "0x0",
940 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
941 "SampleAfterValue": "2000003",
942 "BriefDescription": "Thread cycles when thread is not in halt state",
943 "CounterHTOff": "0,1,2,3,4,5,6,7"
944 },
945 {
946 "EventCode": "0x89",
947 "Counter": "0,1,2,3",
948 "UMask": "0xa0",
949 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
950 "SampleAfterValue": "200003",
951 "BriefDescription": "Taken speculative and retired mispredicted indirect calls.",
952 "CounterHTOff": "0,1,2,3,4,5,6,7"
953 },
954 {
955 "EventCode": "0xA1",
956 "Counter": "0,1,2,3",
957 "UMask": "0x1",
958 "AnyThread": "1",
959 "EventName": "UOPS_EXECUTED_PORT.PORT_0_CORE",
960 "SampleAfterValue": "2000003",
961 "BriefDescription": "Cycles per core when uops are exectuted in port 0.",
962 "CounterHTOff": "0,1,2,3,4,5,6,7"
963 },
964 {
965 "EventCode": "0xA1",
966 "Counter": "0,1,2,3",
967 "UMask": "0x2",
968 "AnyThread": "1",
969 "EventName": "UOPS_EXECUTED_PORT.PORT_1_CORE",
970 "SampleAfterValue": "2000003",
971 "BriefDescription": "Cycles per core when uops are exectuted in port 1.",
972 "CounterHTOff": "0,1,2,3,4,5,6,7"
973 },
974 {
975 "EventCode": "0xA1",
976 "Counter": "0,1,2,3",
977 "UMask": "0x4",
978 "AnyThread": "1",
979 "EventName": "UOPS_EXECUTED_PORT.PORT_2_CORE",
980 "SampleAfterValue": "2000003",
981 "BriefDescription": "Cycles per core when uops are dispatched to port 2.",
982 "CounterHTOff": "0,1,2,3,4,5,6,7"
983 },
984 {
985 "EventCode": "0xA1",
986 "Counter": "0,1,2,3",
987 "UMask": "0x8",
988 "AnyThread": "1",
989 "EventName": "UOPS_EXECUTED_PORT.PORT_3_CORE",
990 "SampleAfterValue": "2000003",
991 "BriefDescription": "Cycles per core when uops are dispatched to port 3.",
992 "CounterHTOff": "0,1,2,3,4,5,6,7"
993 },
994 {
995 "EventCode": "0xA1",
996 "Counter": "0,1,2,3",
997 "UMask": "0x10",
998 "AnyThread": "1",
999 "EventName": "UOPS_EXECUTED_PORT.PORT_4_CORE",
1000 "SampleAfterValue": "2000003",
1001 "BriefDescription": "Cycles per core when uops are exectuted in port 4.",
1002 "CounterHTOff": "0,1,2,3,4,5,6,7"
1003 },
1004 {
1005 "EventCode": "0xA1",
1006 "Counter": "0,1,2,3",
1007 "UMask": "0x20",
1008 "AnyThread": "1",
1009 "EventName": "UOPS_EXECUTED_PORT.PORT_5_CORE",
1010 "SampleAfterValue": "2000003",
1011 "BriefDescription": "Cycles per core when uops are exectuted in port 5.",
1012 "CounterHTOff": "0,1,2,3,4,5,6,7"
1013 },
1014 {
1015 "EventCode": "0xA1",
1016 "Counter": "0,1,2,3",
1017 "UMask": "0x40",
1018 "AnyThread": "1",
1019 "EventName": "UOPS_EXECUTED_PORT.PORT_6_CORE",
1020 "SampleAfterValue": "2000003",
1021 "BriefDescription": "Cycles per core when uops are exectuted in port 6.",
1022 "CounterHTOff": "0,1,2,3,4,5,6,7"
1023 },
1024 {
1025 "EventCode": "0xA1",
1026 "Counter": "0,1,2,3",
1027 "UMask": "0x80",
1028 "AnyThread": "1",
1029 "EventName": "UOPS_EXECUTED_PORT.PORT_7_CORE",
1030 "SampleAfterValue": "2000003",
1031 "BriefDescription": "Cycles per core when uops are dispatched to port 7.",
1032 "CounterHTOff": "0,1,2,3,4,5,6,7"
1033 },
1034 {
1035 "PEBS": "1",
1036 "PublicDescription": "Number of near branch instructions retired that were mispredicted and taken.",
1037 "EventCode": "0xC5",
1038 "Counter": "0,1,2,3",
1039 "UMask": "0x20",
1040 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
1041 "SampleAfterValue": "400009",
1042 "BriefDescription": "number of near branch instructions retired that were mispredicted and taken.",
1043 "CounterHTOff": "0,1,2,3,4,5,6,7"
1044 },
1045 {
1046 "EventCode": "0xB1",
1047 "Counter": "0,1,2,3",
1048 "UMask": "0x1",
1049 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
1050 "SampleAfterValue": "2000003",
1051 "BriefDescription": "Cycles where at least 1 uop was executed per-thread.",
1052 "CounterMask": "1",
1053 "CounterHTOff": "0,1,2,3"
1054 },
1055 {
1056 "EventCode": "0xB1",
1057 "Counter": "0,1,2,3",
1058 "UMask": "0x1",
1059 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
1060 "SampleAfterValue": "2000003",
1061 "BriefDescription": "Cycles where at least 2 uops were executed per-thread.",
1062 "CounterMask": "2",
1063 "CounterHTOff": "0,1,2,3"
1064 },
1065 {
1066 "EventCode": "0xB1",
1067 "Counter": "0,1,2,3",
1068 "UMask": "0x1",
1069 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
1070 "SampleAfterValue": "2000003",
1071 "BriefDescription": "Cycles where at least 3 uops were executed per-thread.",
1072 "CounterMask": "3",
1073 "CounterHTOff": "0,1,2,3"
1074 },
1075 {
1076 "EventCode": "0xB1",
1077 "Counter": "0,1,2,3",
1078 "UMask": "0x1",
1079 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
1080 "SampleAfterValue": "2000003",
1081 "BriefDescription": "Cycles where at least 4 uops were executed per-thread.",
1082 "CounterMask": "4",
1083 "CounterHTOff": "0,1,2,3"
1084 },
1085 {
1086 "EventCode": "0xe6",
1087 "Counter": "0,1,2,3",
1088 "UMask": "0x1f",
1089 "EventName": "BACLEARS.ANY",
1090 "SampleAfterValue": "100003",
1091 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1092 "CounterHTOff": "0,1,2,3,4,5,6,7"
1093 },
1094 {
1095 "EventCode": "0xA3",
1096 "Counter": "2",
1097 "UMask": "0x8",
1098 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
1099 "SampleAfterValue": "2000003",
1100 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
1101 "CounterMask": "8",
1102 "CounterHTOff": "2"
1103 },
1104 {
1105 "EventCode": "0xA3",
1106 "Counter": "0,1,2,3",
1107 "UMask": "0x1",
1108 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
1109 "SampleAfterValue": "2000003",
1110 "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
1111 "CounterMask": "1",
1112 "CounterHTOff": "0,1,2,3,4,5,6,7"
1113 },
1114 {
1115 "EventCode": "0xA3",
1116 "Counter": "0,1,2,3",
1117 "UMask": "0x2",
1118 "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
1119 "SampleAfterValue": "2000003",
1120 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
1121 "CounterMask": "2",
1122 "CounterHTOff": "0,1,2,3"
1123 },
1124 {
1125 "EventCode": "0xA3",
1126 "Counter": "0,1,2,3",
1127 "UMask": "0x4",
1128 "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
1129 "SampleAfterValue": "2000003",
1130 "BriefDescription": "Total execution stalls.",
1131 "CounterMask": "4",
1132 "CounterHTOff": "0,1,2,3,4,5,6,7"
1133 },
1134 {
1135 "EventCode": "0xA3",
1136 "Counter": "2",
1137 "UMask": "0xc",
1138 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
1139 "SampleAfterValue": "2000003",
1140 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
1141 "CounterMask": "12",
1142 "CounterHTOff": "2"
1143 },
1144 {
1145 "EventCode": "0xA3",
1146 "Counter": "0,1,2,3",
1147 "UMask": "0x5",
1148 "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
1149 "SampleAfterValue": "2000003",
1150 "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
1151 "CounterMask": "5",
1152 "CounterHTOff": "0,1,2,3,4,5,6,7"
1153 },
1154 {
1155 "EventCode": "0xA3",
1156 "Counter": "0,1,2,3",
1157 "UMask": "0x6",
1158 "EventName": "CYCLE_ACTIVITY.STALLS_MEM_ANY",
1159 "SampleAfterValue": "2000003",
1160 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
1161 "CounterMask": "6",
1162 "CounterHTOff": "0,1,2,3,4,5,6,7"
1163 },
1164 {
1165 "EventCode": "0xC3",
1166 "Counter": "0,1,2,3",
1167 "UMask": "0x1",
1168 "EdgeDetect": "1",
1169 "EventName": "MACHINE_CLEARS.COUNT",
1170 "SampleAfterValue": "100003",
1171 "BriefDescription": "Number of machine clears (nukes) of any type.",
1172 "CounterMask": "1",
1173 "CounterHTOff": "0,1,2,3,4,5,6,7"
1174 },
1175 {
1176 "EventCode": "0xA8",
1177 "Counter": "0,1,2,3",
1178 "UMask": "0x1",
1179 "EventName": "LSD.CYCLES_4_UOPS",
1180 "SampleAfterValue": "2000003",
1181 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1182 "CounterMask": "4",
1183 "CounterHTOff": "0,1,2,3,4,5,6,7"
1184 },
1185 {
1186 "EventCode": "0x5E",
1187 "Invert": "1",
1188 "Counter": "0,1,2,3",
1189 "UMask": "0x1",
1190 "EdgeDetect": "1",
1191 "EventName": "RS_EVENTS.EMPTY_END",
1192 "SampleAfterValue": "200003",
1193 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1194 "CounterMask": "1",
1195 "CounterHTOff": "0,1,2,3,4,5,6,7"
1196 },
1197 {
1198 "EventCode": "0xA8",
1199 "Counter": "0,1,2,3",
1200 "UMask": "0x1",
1201 "EventName": "LSD.CYCLES_ACTIVE",
1202 "SampleAfterValue": "2000003",
1203 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
1204 "CounterMask": "1",
1205 "CounterHTOff": "0,1,2,3,4,5,6,7"
1206 },
1207 {
1208 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 0.",
1209 "EventCode": "0xA1",
1210 "Counter": "0,1,2,3",
1211 "UMask": "0x1",
1212 "EventName": "UOPS_EXECUTED_PORT.PORT_0",
1213 "SampleAfterValue": "2000003",
1214 "BriefDescription": "Cycles per thread when uops are executed in port 0",
1215 "CounterHTOff": "0,1,2,3,4,5,6,7"
1216 },
1217 {
1218 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 1.",
1219 "EventCode": "0xA1",
1220 "Counter": "0,1,2,3",
1221 "UMask": "0x2",
1222 "EventName": "UOPS_EXECUTED_PORT.PORT_1",
1223 "SampleAfterValue": "2000003",
1224 "BriefDescription": "Cycles per thread when uops are executed in port 1",
1225 "CounterHTOff": "0,1,2,3,4,5,6,7"
1226 },
1227 {
1228 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 2.",
1229 "EventCode": "0xA1",
1230 "Counter": "0,1,2,3",
1231 "UMask": "0x4",
1232 "EventName": "UOPS_EXECUTED_PORT.PORT_2",
1233 "SampleAfterValue": "2000003",
1234 "BriefDescription": "Cycles per thread when uops are executed in port 2",
1235 "CounterHTOff": "0,1,2,3,4,5,6,7"
1236 },
1237 {
1238 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 3.",
1239 "EventCode": "0xA1",
1240 "Counter": "0,1,2,3",
1241 "UMask": "0x8",
1242 "EventName": "UOPS_EXECUTED_PORT.PORT_3",
1243 "SampleAfterValue": "2000003",
1244 "BriefDescription": "Cycles per thread when uops are executed in port 3",
1245 "CounterHTOff": "0,1,2,3,4,5,6,7"
1246 },
1247 {
1248 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 4.",
1249 "EventCode": "0xA1",
1250 "Counter": "0,1,2,3",
1251 "UMask": "0x10",
1252 "EventName": "UOPS_EXECUTED_PORT.PORT_4",
1253 "SampleAfterValue": "2000003",
1254 "BriefDescription": "Cycles per thread when uops are executed in port 4",
1255 "CounterHTOff": "0,1,2,3,4,5,6,7"
1256 },
1257 {
1258 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 5.",
1259 "EventCode": "0xA1",
1260 "Counter": "0,1,2,3",
1261 "UMask": "0x20",
1262 "EventName": "UOPS_EXECUTED_PORT.PORT_5",
1263 "SampleAfterValue": "2000003",
1264 "BriefDescription": "Cycles per thread when uops are executed in port 5",
1265 "CounterHTOff": "0,1,2,3,4,5,6,7"
1266 },
1267 {
1268 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 6.",
1269 "EventCode": "0xA1",
1270 "Counter": "0,1,2,3",
1271 "UMask": "0x40",
1272 "EventName": "UOPS_EXECUTED_PORT.PORT_6",
1273 "SampleAfterValue": "2000003",
1274 "BriefDescription": "Cycles per thread when uops are executed in port 6",
1275 "CounterHTOff": "0,1,2,3,4,5,6,7"
1276 },
1277 {
1278 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 7.",
1279 "EventCode": "0xA1",
1280 "Counter": "0,1,2,3",
1281 "UMask": "0x80",
1282 "EventName": "UOPS_EXECUTED_PORT.PORT_7",
1283 "SampleAfterValue": "2000003",
1284 "BriefDescription": "Cycles per thread when uops are executed in port 7",
1285 "CounterHTOff": "0,1,2,3,4,5,6,7"
1286 },
1287 {
1288 "PublicDescription": "This event counts the number of micro-operations cancelled after they were dispatched from the scheduler to the execution units when the total number of physical register read ports across all dispatch ports exceeds the read bandwidth of the physical register file. The SIMD_PRF subevent applies to the following instructions: VDPPS, DPPS, VPCMPESTRI, PCMPESTRI, VPCMPESTRM, PCMPESTRM, VFMADD*, VFMADDSUB*, VFMSUB*, VMSUBADD*, VFNMADD*, VFNMSUB*. See the Broadwell Optimization Guide for more information.",
1289 "EventCode": "0xA0",
1290 "Counter": "0,1,2,3",
1291 "UMask": "0x3",
1292 "EventName": "UOP_DISPATCHES_CANCELLED.SIMD_PRF",
1293 "SampleAfterValue": "2000003",
1294 "BriefDescription": "Micro-op dispatches cancelled due to insufficient SIMD physical register file read ports",
1295 "CounterHTOff": "0,1,2,3"
1296 },
1297 {
1298 "EventCode": "0x00",
1299 "Counter": "Fixed counter 2",
1300 "UMask": "0x2",
1301 "AnyThread": "1",
1302 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1303 "SampleAfterValue": "2000003",
1304 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1305 "CounterHTOff": "Fixed counter 2"
1306 },
1307 {
1308 "EventCode": "0x3C",
1309 "Counter": "0,1,2,3",
1310 "UMask": "0x0",
1311 "AnyThread": "1",
1312 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1313 "SampleAfterValue": "2000003",
1314 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1315 "CounterHTOff": "0,1,2,3,4,5,6,7"
1316 },
1317 {
1318 "EventCode": "0x3C",
1319 "Counter": "0,1,2,3",
1320 "UMask": "0x1",
1321 "AnyThread": "1",
1322 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1323 "SampleAfterValue": "2000003",
1324 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1325 "CounterHTOff": "0,1,2,3,4,5,6,7"
1326 },
1327 {
1328 "EventCode": "0x0D",
1329 "Counter": "0,1,2,3",
1330 "UMask": "0x3",
1331 "AnyThread": "1",
1332 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1333 "SampleAfterValue": "2000003",
1334 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1335 "CounterMask": "1",
1336 "CounterHTOff": "0,1,2,3,4,5,6,7"
1337 },
1338 {
1339 "EventCode": "0xb1",
1340 "Counter": "0,1,2,3",
1341 "UMask": "0x2",
1342 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1343 "SampleAfterValue": "2000003",
1344 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1345 "CounterMask": "1",
1346 "CounterHTOff": "0,1,2,3,4,5,6,7"
1347 },
1348 {
1349 "EventCode": "0xb1",
1350 "Counter": "0,1,2,3",
1351 "UMask": "0x2",
1352 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1353 "SampleAfterValue": "2000003",
1354 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1355 "CounterMask": "2",
1356 "CounterHTOff": "0,1,2,3,4,5,6,7"
1357 },
1358 {
1359 "EventCode": "0xb1",
1360 "Counter": "0,1,2,3",
1361 "UMask": "0x2",
1362 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1363 "SampleAfterValue": "2000003",
1364 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1365 "CounterMask": "3",
1366 "CounterHTOff": "0,1,2,3,4,5,6,7"
1367 },
1368 {
1369 "EventCode": "0xb1",
1370 "Counter": "0,1,2,3",
1371 "UMask": "0x2",
1372 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1373 "SampleAfterValue": "2000003",
1374 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1375 "CounterMask": "4",
1376 "CounterHTOff": "0,1,2,3,4,5,6,7"
1377 },
1378 {
1379 "EventCode": "0xb1",
1380 "Invert": "1",
1381 "Counter": "0,1,2,3",
1382 "UMask": "0x2",
1383 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1384 "SampleAfterValue": "2000003",
1385 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1386 "CounterHTOff": "0,1,2,3,4,5,6,7"
1387 },
1388 {
1389 "PublicDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate).",
1390 "EventCode": "0x3C",
1391 "Counter": "0,1,2,3",
1392 "UMask": "0x1",
1393 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1394 "SampleAfterValue": "2000003",
1395 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1396 "CounterHTOff": "0,1,2,3,4,5,6,7"
1397 },
1398 {
1399 "EventCode": "0x3C",
1400 "Counter": "0,1,2,3",
1401 "UMask": "0x1",
1402 "AnyThread": "1",
1403 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1404 "SampleAfterValue": "2000003",
1405 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1406 "CounterHTOff": "0,1,2,3,4,5,6,7"
1407 },
1408 {
1409 "EventCode": "0x3C",
1410 "Counter": "0,1,2,3",
1411 "UMask": "0x2",
1412 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1413 "SampleAfterValue": "2000003",
1414 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1415 "CounterHTOff": "0,1,2,3,4,5,6,7"
1416 }
1417] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwell/virtual-memory.json b/tools/perf/pmu-events/arch/x86/broadwell/virtual-memory.json
new file mode 100644
index 000000000000..4301e6fbc5eb
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwell/virtual-memory.json
@@ -0,0 +1,388 @@
1[
2 {
3 "PublicDescription": "This event counts load misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
4 "EventCode": "0x08",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "Errata": "BDM69",
8 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
9 "SampleAfterValue": "100003",
10 "BriefDescription": "Load misses in all DTLB levels that cause page walks",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
15 "EventCode": "0x08",
16 "Counter": "0,1,2,3",
17 "UMask": "0x2",
18 "Errata": "BDM69",
19 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
20 "SampleAfterValue": "2000003",
21 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (4K).",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
26 "EventCode": "0x08",
27 "Counter": "0,1,2,3",
28 "UMask": "0x4",
29 "Errata": "BDM69",
30 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
31 "SampleAfterValue": "2000003",
32 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (2M/4M).",
33 "CounterHTOff": "0,1,2,3,4,5,6,7"
34 },
35 {
36 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
37 "EventCode": "0x08",
38 "Counter": "0,1,2,3",
39 "UMask": "0x8",
40 "Errata": "BDM69",
41 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1G",
42 "SampleAfterValue": "2000003",
43 "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (1G)",
44 "CounterHTOff": "0,1,2,3,4,5,6,7"
45 },
46 {
47 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
48 "EventCode": "0x08",
49 "Counter": "0,1,2,3",
50 "UMask": "0x10",
51 "Errata": "BDM69",
52 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
53 "SampleAfterValue": "2000003",
54 "BriefDescription": "Cycles when PMH is busy with page walks",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "EventCode": "0x08",
59 "Counter": "0,1,2,3",
60 "UMask": "0x20",
61 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_4K",
62 "SampleAfterValue": "2000003",
63 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (4K).",
64 "CounterHTOff": "0,1,2,3,4,5,6,7"
65 },
66 {
67 "EventCode": "0x08",
68 "Counter": "0,1,2,3",
69 "UMask": "0x40",
70 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_2M",
71 "SampleAfterValue": "2000003",
72 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (2M).",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
77 "EventCode": "0x49",
78 "Counter": "0,1,2,3",
79 "UMask": "0x1",
80 "Errata": "BDM69",
81 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
82 "SampleAfterValue": "100003",
83 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
84 "CounterHTOff": "0,1,2,3,4,5,6,7"
85 },
86 {
87 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
88 "EventCode": "0x49",
89 "Counter": "0,1,2,3",
90 "UMask": "0x2",
91 "Errata": "BDM69",
92 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
93 "SampleAfterValue": "100003",
94 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (4K)",
95 "CounterHTOff": "0,1,2,3,4,5,6,7"
96 },
97 {
98 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
99 "EventCode": "0x49",
100 "Counter": "0,1,2,3",
101 "UMask": "0x4",
102 "Errata": "BDM69",
103 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
104 "SampleAfterValue": "100003",
105 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (2M/4M)",
106 "CounterHTOff": "0,1,2,3,4,5,6,7"
107 },
108 {
109 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
110 "EventCode": "0x49",
111 "Counter": "0,1,2,3",
112 "UMask": "0x8",
113 "Errata": "BDM69",
114 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1G",
115 "SampleAfterValue": "100003",
116 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (1G)",
117 "CounterHTOff": "0,1,2,3,4,5,6,7"
118 },
119 {
120 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
121 "EventCode": "0x49",
122 "Counter": "0,1,2,3",
123 "UMask": "0x10",
124 "Errata": "BDM69",
125 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
126 "SampleAfterValue": "100003",
127 "BriefDescription": "Cycles when PMH is busy with page walks",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "EventCode": "0x49",
132 "Counter": "0,1,2,3",
133 "UMask": "0x20",
134 "EventName": "DTLB_STORE_MISSES.STLB_HIT_4K",
135 "SampleAfterValue": "100003",
136 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (4K).",
137 "CounterHTOff": "0,1,2,3,4,5,6,7"
138 },
139 {
140 "EventCode": "0x49",
141 "Counter": "0,1,2,3",
142 "UMask": "0x40",
143 "EventName": "DTLB_STORE_MISSES.STLB_HIT_2M",
144 "SampleAfterValue": "100003",
145 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (2M).",
146 "CounterHTOff": "0,1,2,3,4,5,6,7"
147 },
148 {
149 "PublicDescription": "This event counts cycles for an extended page table walk. The Extended Page directory cache differs from standard TLB caches by the operating system that use it. Virtual machine operating systems use the extended page directory cache, while guest operating systems use the standard TLB caches.",
150 "EventCode": "0x4F",
151 "Counter": "0,1,2,3",
152 "UMask": "0x10",
153 "EventName": "EPT.WALK_CYCLES",
154 "SampleAfterValue": "2000003",
155 "BriefDescription": "Cycle count for an Extended Page table walk.",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
160 "EventCode": "0x85",
161 "Counter": "0,1,2,3",
162 "UMask": "0x1",
163 "Errata": "BDM69",
164 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
165 "SampleAfterValue": "100003",
166 "BriefDescription": "Misses at all ITLB levels that cause page walks",
167 "CounterHTOff": "0,1,2,3,4,5,6,7"
168 },
169 {
170 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
171 "EventCode": "0x85",
172 "Counter": "0,1,2,3",
173 "UMask": "0x2",
174 "Errata": "BDM69",
175 "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
176 "SampleAfterValue": "100003",
177 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (4K)",
178 "CounterHTOff": "0,1,2,3,4,5,6,7"
179 },
180 {
181 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
182 "EventCode": "0x85",
183 "Counter": "0,1,2,3",
184 "UMask": "0x4",
185 "Errata": "BDM69",
186 "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
187 "SampleAfterValue": "100003",
188 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (2M/4M)",
189 "CounterHTOff": "0,1,2,3,4,5,6,7"
190 },
191 {
192 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
193 "EventCode": "0x85",
194 "Counter": "0,1,2,3",
195 "UMask": "0x8",
196 "Errata": "BDM69",
197 "EventName": "ITLB_MISSES.WALK_COMPLETED_1G",
198 "SampleAfterValue": "100003",
199 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (1G)",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
204 "EventCode": "0x85",
205 "Counter": "0,1,2,3",
206 "UMask": "0x10",
207 "Errata": "BDM69",
208 "EventName": "ITLB_MISSES.WALK_DURATION",
209 "SampleAfterValue": "100003",
210 "BriefDescription": "Cycles when PMH is busy with page walks",
211 "CounterHTOff": "0,1,2,3,4,5,6,7"
212 },
213 {
214 "EventCode": "0x85",
215 "Counter": "0,1,2,3",
216 "UMask": "0x20",
217 "EventName": "ITLB_MISSES.STLB_HIT_4K",
218 "SampleAfterValue": "100003",
219 "BriefDescription": "Core misses that miss the DTLB and hit the STLB (4K).",
220 "CounterHTOff": "0,1,2,3,4,5,6,7"
221 },
222 {
223 "EventCode": "0x85",
224 "Counter": "0,1,2,3",
225 "UMask": "0x40",
226 "EventName": "ITLB_MISSES.STLB_HIT_2M",
227 "SampleAfterValue": "100003",
228 "BriefDescription": "Code misses that miss the DTLB and hit the STLB (2M).",
229 "CounterHTOff": "0,1,2,3,4,5,6,7"
230 },
231 {
232 "PublicDescription": "This event counts the number of flushes of the big or small ITLB pages. Counting include both TLB Flush (covering all sets) and TLB Set Clear (set-specific).",
233 "EventCode": "0xAE",
234 "Counter": "0,1,2,3",
235 "UMask": "0x1",
236 "EventName": "ITLB.ITLB_FLUSH",
237 "SampleAfterValue": "100007",
238 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
239 "CounterHTOff": "0,1,2,3,4,5,6,7"
240 },
241 {
242 "EventCode": "0xBC",
243 "Counter": "0,1,2,3",
244 "UMask": "0x11",
245 "Errata": "BDM69, BDM98",
246 "EventName": "PAGE_WALKER_LOADS.DTLB_L1",
247 "SampleAfterValue": "2000003",
248 "BriefDescription": "Number of DTLB page walker hits in the L1+FB.",
249 "CounterHTOff": "0,1,2,3"
250 },
251 {
252 "EventCode": "0xBC",
253 "Counter": "0,1,2,3",
254 "UMask": "0x21",
255 "Errata": "BDM69, BDM98",
256 "EventName": "PAGE_WALKER_LOADS.ITLB_L1",
257 "SampleAfterValue": "2000003",
258 "BriefDescription": "Number of ITLB page walker hits in the L1+FB.",
259 "CounterHTOff": "0,1,2,3"
260 },
261 {
262 "EventCode": "0xBC",
263 "Counter": "0,1,2,3",
264 "UMask": "0x12",
265 "Errata": "BDM69, BDM98",
266 "EventName": "PAGE_WALKER_LOADS.DTLB_L2",
267 "SampleAfterValue": "2000003",
268 "BriefDescription": "Number of DTLB page walker hits in the L2.",
269 "CounterHTOff": "0,1,2,3"
270 },
271 {
272 "EventCode": "0xBC",
273 "Counter": "0,1,2,3",
274 "UMask": "0x22",
275 "Errata": "BDM69, BDM98",
276 "EventName": "PAGE_WALKER_LOADS.ITLB_L2",
277 "SampleAfterValue": "2000003",
278 "BriefDescription": "Number of ITLB page walker hits in the L2.",
279 "CounterHTOff": "0,1,2,3"
280 },
281 {
282 "EventCode": "0xBC",
283 "Counter": "0,1,2,3",
284 "UMask": "0x14",
285 "Errata": "BDM69, BDM98",
286 "EventName": "PAGE_WALKER_LOADS.DTLB_L3",
287 "SampleAfterValue": "2000003",
288 "BriefDescription": "Number of DTLB page walker hits in the L3 + XSNP.",
289 "CounterHTOff": "0,1,2,3"
290 },
291 {
292 "EventCode": "0xBC",
293 "Counter": "0,1,2,3",
294 "UMask": "0x24",
295 "Errata": "BDM69, BDM98",
296 "EventName": "PAGE_WALKER_LOADS.ITLB_L3",
297 "SampleAfterValue": "2000003",
298 "BriefDescription": "Number of ITLB page walker hits in the L3 + XSNP.",
299 "CounterHTOff": "0,1,2,3"
300 },
301 {
302 "EventCode": "0xBC",
303 "Counter": "0,1,2,3",
304 "UMask": "0x18",
305 "Errata": "BDM69, BDM98",
306 "EventName": "PAGE_WALKER_LOADS.DTLB_MEMORY",
307 "SampleAfterValue": "2000003",
308 "BriefDescription": "Number of DTLB page walker hits in Memory.",
309 "CounterHTOff": "0,1,2,3"
310 },
311 {
312 "PublicDescription": "This event counts the number of DTLB flush attempts of the thread-specific entries.",
313 "EventCode": "0xBD",
314 "Counter": "0,1,2,3",
315 "UMask": "0x1",
316 "EventName": "TLB_FLUSH.DTLB_THREAD",
317 "SampleAfterValue": "100007",
318 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
319 "CounterHTOff": "0,1,2,3,4,5,6,7"
320 },
321 {
322 "PublicDescription": "This event counts the number of any STLB flush attempts (such as entire, VPID, PCID, InvPage, CR3 write, and so on).",
323 "EventCode": "0xBD",
324 "Counter": "0,1,2,3",
325 "UMask": "0x20",
326 "EventName": "TLB_FLUSH.STLB_ANY",
327 "SampleAfterValue": "100007",
328 "BriefDescription": "STLB flush attempts",
329 "CounterHTOff": "0,1,2,3,4,5,6,7"
330 },
331 {
332 "EventCode": "0x08",
333 "Counter": "0,1,2,3",
334 "UMask": "0xe",
335 "Errata": "BDM69",
336 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
337 "SampleAfterValue": "100003",
338 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
339 "CounterHTOff": "0,1,2,3,4,5,6,7"
340 },
341 {
342 "EventCode": "0x08",
343 "Counter": "0,1,2,3",
344 "UMask": "0x60",
345 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
346 "SampleAfterValue": "2000003",
347 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks.",
348 "CounterHTOff": "0,1,2,3,4,5,6,7"
349 },
350 {
351 "EventCode": "0x49",
352 "Counter": "0,1,2,3",
353 "UMask": "0xe",
354 "Errata": "BDM69",
355 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
356 "SampleAfterValue": "100003",
357 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks.",
358 "CounterHTOff": "0,1,2,3,4,5,6,7"
359 },
360 {
361 "EventCode": "0x49",
362 "Counter": "0,1,2,3",
363 "UMask": "0x60",
364 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
365 "SampleAfterValue": "100003",
366 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
367 "CounterHTOff": "0,1,2,3,4,5,6,7"
368 },
369 {
370 "EventCode": "0x85",
371 "Counter": "0,1,2,3",
372 "UMask": "0xe",
373 "Errata": "BDM69",
374 "EventName": "ITLB_MISSES.WALK_COMPLETED",
375 "SampleAfterValue": "100003",
376 "BriefDescription": "Misses in all ITLB levels that cause completed page walks.",
377 "CounterHTOff": "0,1,2,3,4,5,6,7"
378 },
379 {
380 "EventCode": "0x85",
381 "Counter": "0,1,2,3",
382 "UMask": "0x60",
383 "EventName": "ITLB_MISSES.STLB_HIT",
384 "SampleAfterValue": "100003",
385 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks.",
386 "CounterHTOff": "0,1,2,3,4,5,6,7"
387 }
388] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/cache.json b/tools/perf/pmu-events/arch/x86/broadwellde/cache.json
new file mode 100644
index 000000000000..36fe398029b9
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/cache.json
@@ -0,0 +1,774 @@
1[
2 {
3 "EventCode": "0x24",
4 "UMask": "0x21",
5 "BriefDescription": "Demand Data Read miss L2, no rejects",
6 "Counter": "0,1,2,3",
7 "EventName": "L2_RQSTS.DEMAND_DATA_RD_MISS",
8 "PublicDescription": "This event counts the number of demand Data Read requests that miss L2 cache. Only not rejected loads are counted.",
9 "SampleAfterValue": "200003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x24",
14 "UMask": "0x41",
15 "BriefDescription": "Demand Data Read requests that hit L2 cache",
16 "Counter": "0,1,2,3",
17 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
18 "PublicDescription": "This event counts the number of demand Data Read requests that hit L2 cache. Only not rejected loads are counted.",
19 "SampleAfterValue": "200003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x24",
24 "UMask": "0x30",
25 "BriefDescription": "L2 prefetch requests that miss L2 cache",
26 "Counter": "0,1,2,3",
27 "EventName": "L2_RQSTS.L2_PF_MISS",
28 "PublicDescription": "This event counts the number of requests from the L2 hardware prefetchers that miss L2 cache.",
29 "SampleAfterValue": "200003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x24",
34 "UMask": "0x50",
35 "BriefDescription": "L2 prefetch requests that hit L2 cache",
36 "Counter": "0,1,2,3",
37 "EventName": "L2_RQSTS.L2_PF_HIT",
38 "PublicDescription": "This event counts the number of requests from the L2 hardware prefetchers that hit L2 cache. L3 prefetch new types.",
39 "SampleAfterValue": "200003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x24",
44 "UMask": "0xe1",
45 "BriefDescription": "Demand Data Read requests",
46 "Counter": "0,1,2,3",
47 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
48 "PublicDescription": "This event counts the number of demand Data Read requests (including requests from L1D hardware prefetchers). These loads may hit or miss L2 cache. Only non rejected loads are counted.",
49 "SampleAfterValue": "200003",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "EventCode": "0x24",
54 "UMask": "0xe2",
55 "BriefDescription": "RFO requests to L2 cache",
56 "Counter": "0,1,2,3",
57 "EventName": "L2_RQSTS.ALL_RFO",
58 "PublicDescription": "This event counts the total number of RFO (read for ownership) requests to L2 cache. L2 RFO requests include both L1D demand RFO misses as well as L1D RFO prefetches.",
59 "SampleAfterValue": "200003",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "EventCode": "0x24",
64 "UMask": "0xe4",
65 "BriefDescription": "L2 code requests",
66 "Counter": "0,1,2,3",
67 "EventName": "L2_RQSTS.ALL_CODE_RD",
68 "PublicDescription": "This event counts the total number of L2 code requests.",
69 "SampleAfterValue": "200003",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "EventCode": "0x24",
74 "UMask": "0xf8",
75 "BriefDescription": "Requests from L2 hardware prefetchers",
76 "Counter": "0,1,2,3",
77 "EventName": "L2_RQSTS.ALL_PF",
78 "PublicDescription": "This event counts the total number of requests from the L2 hardware prefetchers.",
79 "SampleAfterValue": "200003",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0x27",
84 "UMask": "0x50",
85 "BriefDescription": "Not rejected writebacks that hit L2 cache",
86 "Counter": "0,1,2,3",
87 "EventName": "L2_DEMAND_RQSTS.WB_HIT",
88 "PublicDescription": "This event counts the number of WB requests that hit L2 cache.",
89 "SampleAfterValue": "200003",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x2E",
94 "UMask": "0x41",
95 "BriefDescription": "Core-originated cacheable demand requests missed L3",
96 "Counter": "0,1,2,3",
97 "EventName": "LONGEST_LAT_CACHE.MISS",
98 "PublicDescription": "This event counts core-originated cacheable demand requests that miss the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
99 "SampleAfterValue": "100003",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "EventCode": "0x2E",
104 "UMask": "0x4f",
105 "BriefDescription": "Core-originated cacheable demand requests that refer to L3",
106 "Counter": "0,1,2,3",
107 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
108 "PublicDescription": "This event counts core-originated cacheable demand requests that refer to the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
109 "SampleAfterValue": "100003",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "EventCode": "0x48",
114 "UMask": "0x1",
115 "BriefDescription": "L1D miss oustandings duration in cycles",
116 "Counter": "2",
117 "EventName": "L1D_PEND_MISS.PENDING",
118 "PublicDescription": "This event counts duration of L1D miss outstanding, that is each cycle number of Fill Buffers (FB) outstanding required by Demand Reads. FB either is held by demand loads, or it is held by non-demand loads and gets hit at least once by demand. The valid outstanding interval is defined until the FB deallocation by one of the following ways: from FB allocation, if FB is allocated by demand; from the demand Hit FB, if it is allocated by hardware or software prefetch.\nNote: In the L1D, a Demand Read contains cacheable or noncacheable demand loads, including ones causing cache-line splits and reads due to page walks resulted from any request type.",
119 "SampleAfterValue": "2000003",
120 "CounterHTOff": "2"
121 },
122 {
123 "EventCode": "0x48",
124 "UMask": "0x1",
125 "BriefDescription": "Cycles with L1D load Misses outstanding.",
126 "Counter": "2",
127 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
128 "CounterMask": "1",
129 "PublicDescription": "This event counts duration of L1D miss outstanding in cycles.",
130 "SampleAfterValue": "2000003",
131 "CounterHTOff": "2"
132 },
133 {
134 "EventCode": "0x51",
135 "UMask": "0x1",
136 "BriefDescription": "L1D data line replacements",
137 "Counter": "0,1,2,3",
138 "EventName": "L1D.REPLACEMENT",
139 "PublicDescription": "This event counts L1D data line replacements including opportunistic replacements, and replacements that require stall-for-replace or block-for-replace.",
140 "SampleAfterValue": "2000003",
141 "CounterHTOff": "0,1,2,3,4,5,6,7"
142 },
143 {
144 "EventCode": "0x60",
145 "UMask": "0x1",
146 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
147 "Counter": "0,1,2,3",
148 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
149 "Errata": "BDM76",
150 "PublicDescription": "This event counts the number of offcore outstanding Demand Data Read transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor. See the corresponding Umask under OFFCORE_REQUESTS.\nNote: A prefetch promoted to Demand is counted from the promotion point.",
151 "SampleAfterValue": "2000003",
152 "CounterHTOff": "0,1,2,3,4,5,6,7"
153 },
154 {
155 "EventCode": "0x60",
156 "UMask": "0x2",
157 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
158 "Counter": "0,1,2,3",
159 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
160 "Errata": "BDM76",
161 "PublicDescription": "This event counts the number of offcore outstanding Code Reads transactions in the super queue every cycle. The \"Offcore outstanding\" state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
162 "SampleAfterValue": "2000003",
163 "CounterHTOff": "0,1,2,3,4,5,6,7"
164 },
165 {
166 "EventCode": "0x60",
167 "UMask": "0x4",
168 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore",
169 "Counter": "0,1,2,3",
170 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
171 "Errata": "BDM76",
172 "PublicDescription": "This event counts the number of offcore outstanding RFO (store) transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
173 "SampleAfterValue": "2000003",
174 "CounterHTOff": "0,1,2,3,4,5,6,7"
175 },
176 {
177 "EventCode": "0x60",
178 "UMask": "0x8",
179 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
180 "Counter": "0,1,2,3",
181 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
182 "Errata": "BDM76",
183 "PublicDescription": "This event counts the number of offcore outstanding cacheable Core Data Read transactions in the super queue every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
184 "SampleAfterValue": "2000003",
185 "CounterHTOff": "0,1,2,3,4,5,6,7"
186 },
187 {
188 "EventCode": "0x60",
189 "UMask": "0x1",
190 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore",
191 "Counter": "0,1,2,3",
192 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
193 "CounterMask": "1",
194 "Errata": "BDM76",
195 "PublicDescription": "This event counts cycles when offcore outstanding Demand Data Read transactions are present in the super queue (SQ). A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation).",
196 "SampleAfterValue": "2000003",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "EventCode": "0x60",
201 "UMask": "0x8",
202 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore",
203 "Counter": "0,1,2,3",
204 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
205 "CounterMask": "1",
206 "Errata": "BDM76",
207 "PublicDescription": "This event counts cycles when offcore outstanding cacheable Core Data Read transactions are present in the super queue. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
208 "SampleAfterValue": "2000003",
209 "CounterHTOff": "0,1,2,3,4,5,6,7"
210 },
211 {
212 "EventCode": "0x60",
213 "UMask": "0x4",
214 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
215 "Counter": "0,1,2,3",
216 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
217 "CounterMask": "1",
218 "Errata": "BDM76",
219 "PublicDescription": "This event counts the number of offcore outstanding demand rfo Reads transactions in the super queue every cycle. The \"Offcore outstanding\" state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
220 "SampleAfterValue": "2000003",
221 "CounterHTOff": "0,1,2,3,4,5,6,7"
222 },
223 {
224 "EventCode": "0x63",
225 "UMask": "0x2",
226 "BriefDescription": "Cycles when L1D is locked",
227 "Counter": "0,1,2,3",
228 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
229 "PublicDescription": "This event counts the number of cycles when the L1D is locked. It is a superset of the 0x1 mask (BUS_LOCK_CLOCKS.BUS_LOCK_DURATION).",
230 "SampleAfterValue": "2000003",
231 "CounterHTOff": "0,1,2,3,4,5,6,7"
232 },
233 {
234 "EventCode": "0xB0",
235 "UMask": "0x1",
236 "BriefDescription": "Demand Data Read requests sent to uncore",
237 "Counter": "0,1,2,3",
238 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
239 "PublicDescription": "This event counts the Demand Data Read requests sent to uncore. Use it in conjunction with OFFCORE_REQUESTS_OUTSTANDING to determine average latency in the uncore.",
240 "SampleAfterValue": "100003",
241 "CounterHTOff": "0,1,2,3,4,5,6,7"
242 },
243 {
244 "EventCode": "0xB0",
245 "UMask": "0x2",
246 "BriefDescription": "Cacheable and noncachaeble code read requests",
247 "Counter": "0,1,2,3",
248 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
249 "PublicDescription": "This event counts both cacheable and noncachaeble code read requests.",
250 "SampleAfterValue": "100003",
251 "CounterHTOff": "0,1,2,3,4,5,6,7"
252 },
253 {
254 "EventCode": "0xB0",
255 "UMask": "0x4",
256 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
257 "Counter": "0,1,2,3",
258 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
259 "PublicDescription": "This event counts the demand RFO (read for ownership) requests including regular RFOs, locks, ItoM.",
260 "SampleAfterValue": "100003",
261 "CounterHTOff": "0,1,2,3,4,5,6,7"
262 },
263 {
264 "EventCode": "0xB0",
265 "UMask": "0x8",
266 "BriefDescription": "Demand and prefetch data reads",
267 "Counter": "0,1,2,3",
268 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
269 "PublicDescription": "This event counts the demand and prefetch data reads. All Core Data Reads include cacheable \"Demands\" and L2 prefetchers (not L3 prefetchers). Counting also covers reads due to page walks resulted from any request type.",
270 "SampleAfterValue": "100003",
271 "CounterHTOff": "0,1,2,3,4,5,6,7"
272 },
273 {
274 "EventCode": "0xb2",
275 "UMask": "0x1",
276 "BriefDescription": "Offcore requests buffer cannot take more entries for this thread core.",
277 "Counter": "0,1,2,3",
278 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
279 "PublicDescription": "This event counts the number of cases when the offcore requests buffer cannot take more entries for the core. This can happen when the superqueue does not contain eligible entries, or when L1D writeback pending FIFO requests is full.\nNote: Writeback pending FIFO has six entries.",
280 "SampleAfterValue": "2000003",
281 "CounterHTOff": "0,1,2,3,4,5,6,7"
282 },
283 {
284 "EventCode": "0xD0",
285 "UMask": "0x11",
286 "BriefDescription": "Retired load uops that miss the STLB.",
287 "Data_LA": "1",
288 "PEBS": "1",
289 "Counter": "0,1,2,3",
290 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
291 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts load uops with true STLB miss retired to the architected path. True STLB miss is an uop triggering page walk that gets completed without blocks, and later gets retired. This page walk can end up with or without a fault.",
292 "SampleAfterValue": "100003",
293 "CounterHTOff": "0,1,2,3"
294 },
295 {
296 "EventCode": "0xD0",
297 "UMask": "0x12",
298 "BriefDescription": "Retired store uops that miss the STLB.",
299 "Data_LA": "1",
300 "PEBS": "1",
301 "Counter": "0,1,2,3",
302 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
303 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts store uops with true STLB miss retired to the architected path. True STLB miss is an uop triggering page walk that gets completed without blocks, and later gets retired. This page walk can end up with or without a fault.",
304 "SampleAfterValue": "100003",
305 "L1_Hit_Indication": "1",
306 "CounterHTOff": "0,1,2,3"
307 },
308 {
309 "EventCode": "0xD0",
310 "UMask": "0x21",
311 "BriefDescription": "Retired load uops with locked access.",
312 "Data_LA": "1",
313 "PEBS": "1",
314 "Counter": "0,1,2,3",
315 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
316 "Errata": "BDM35",
317 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts load uops with locked access retired to the architected path.",
318 "SampleAfterValue": "100007",
319 "CounterHTOff": "0,1,2,3"
320 },
321 {
322 "EventCode": "0xD0",
323 "UMask": "0x41",
324 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
325 "Data_LA": "1",
326 "PEBS": "1",
327 "Counter": "0,1,2,3",
328 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
329 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts line-splitted load uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
330 "SampleAfterValue": "100003",
331 "CounterHTOff": "0,1,2,3"
332 },
333 {
334 "EventCode": "0xD0",
335 "UMask": "0x42",
336 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
337 "Data_LA": "1",
338 "PEBS": "1",
339 "Counter": "0,1,2,3",
340 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
341 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts line-splitted store uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
342 "SampleAfterValue": "100003",
343 "L1_Hit_Indication": "1",
344 "CounterHTOff": "0,1,2,3"
345 },
346 {
347 "EventCode": "0xD0",
348 "UMask": "0x81",
349 "BriefDescription": "All retired load uops.",
350 "Data_LA": "1",
351 "PEBS": "1",
352 "Counter": "0,1,2,3",
353 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
354 "PublicDescription": "This event counts load uops retired to the architected path with a filter on bits 0 and 1 applied.\nNote: This event counts AVX-256bit load/store double-pump memory uops as a single uop at retirement. This event also counts SW prefetches.",
355 "SampleAfterValue": "2000003",
356 "CounterHTOff": "0,1,2,3"
357 },
358 {
359 "EventCode": "0xD0",
360 "UMask": "0x82",
361 "BriefDescription": "All retired store uops.",
362 "Data_LA": "1",
363 "PEBS": "1",
364 "Counter": "0,1,2,3",
365 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
366 "PublicDescription": "This event counts store uops retired to the architected path with a filter on bits 0 and 1 applied.\nNote: This event counts AVX-256bit load/store double-pump memory uops as a single uop at retirement.",
367 "SampleAfterValue": "2000003",
368 "L1_Hit_Indication": "1",
369 "CounterHTOff": "0,1,2,3"
370 },
371 {
372 "EventCode": "0xD1",
373 "UMask": "0x1",
374 "BriefDescription": "Retired load uops with L1 cache hits as data sources.",
375 "Data_LA": "1",
376 "PEBS": "1",
377 "Counter": "0,1,2,3",
378 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
379 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the nearest-level (L1) cache.\nNote: Only two data-sources of L1/FB are applicable for AVX-256bit even though the corresponding AVX load could be serviced by a deeper level in the memory hierarchy. Data source is reported for the Low-half load. This event also counts SW prefetches independent of the actual data source.",
380 "SampleAfterValue": "2000003",
381 "CounterHTOff": "0,1,2,3"
382 },
383 {
384 "EventCode": "0xD1",
385 "UMask": "0x2",
386 "BriefDescription": "Retired load uops with L2 cache hits as data sources.",
387 "Data_LA": "1",
388 "PEBS": "1",
389 "Counter": "0,1,2,3",
390 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
391 "Errata": "BDM35",
392 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the mid-level (L2) cache.",
393 "SampleAfterValue": "100003",
394 "CounterHTOff": "0,1,2,3"
395 },
396 {
397 "EventCode": "0xD1",
398 "UMask": "0x4",
399 "BriefDescription": "Retired load uops which data sources were data hits in L3 without snoops required.",
400 "Data_LA": "1",
401 "PEBS": "1",
402 "Counter": "0,1,2,3",
403 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_HIT",
404 "Errata": "BDM100",
405 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were data hits in the last-level (L3) cache without snoops required.",
406 "SampleAfterValue": "50021",
407 "CounterHTOff": "0,1,2,3"
408 },
409 {
410 "EventCode": "0xD1",
411 "UMask": "0x8",
412 "BriefDescription": "Retired load uops misses in L1 cache as data sources.",
413 "Data_LA": "1",
414 "PEBS": "1",
415 "Counter": "0,1,2,3",
416 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
417 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were misses in the nearest-level (L1) cache. Counting excludes unknown and UC data source.",
418 "SampleAfterValue": "100003",
419 "CounterHTOff": "0,1,2,3"
420 },
421 {
422 "EventCode": "0xD1",
423 "UMask": "0x10",
424 "BriefDescription": "Miss in mid-level (L2) cache. Excludes Unknown data-source.",
425 "Data_LA": "1",
426 "PEBS": "1",
427 "Counter": "0,1,2,3",
428 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
429 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were misses in the mid-level (L2) cache. Counting excludes unknown and UC data source.",
430 "SampleAfterValue": "50021",
431 "CounterHTOff": "0,1,2,3"
432 },
433 {
434 "EventCode": "0xD1",
435 "UMask": "0x20",
436 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
437 "Data_LA": "1",
438 "PEBS": "1",
439 "Counter": "0,1,2,3",
440 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_MISS",
441 "Errata": "BDM100, BDE70",
442 "SampleAfterValue": "100007",
443 "CounterHTOff": "0,1,2,3"
444 },
445 {
446 "EventCode": "0xD1",
447 "UMask": "0x40",
448 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
449 "Data_LA": "1",
450 "PEBS": "1",
451 "Counter": "0,1,2,3",
452 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
453 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were load uops missed L1 but hit a fill buffer due to a preceding miss to the same cache line with the data not ready.\nNote: Only two data-sources of L1/FB are applicable for AVX-256bit even though the corresponding AVX load could be serviced by a deeper level in the memory hierarchy. Data source is reported for the Low-half load.",
454 "SampleAfterValue": "100003",
455 "CounterHTOff": "0,1,2,3"
456 },
457 {
458 "EventCode": "0xD2",
459 "UMask": "0x1",
460 "BriefDescription": "Retired load uops which data sources were L3 hit and cross-core snoop missed in on-pkg core cache.",
461 "Data_LA": "1",
462 "PEBS": "1",
463 "Counter": "0,1,2,3",
464 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS",
465 "Errata": "BDM100",
466 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were L3 Hit and a cross-core snoop missed in the on-pkg core cache.",
467 "SampleAfterValue": "20011",
468 "CounterHTOff": "0,1,2,3"
469 },
470 {
471 "EventCode": "0xD2",
472 "UMask": "0x2",
473 "BriefDescription": "Retired load uops which data sources were L3 and cross-core snoop hits in on-pkg core cache.",
474 "Data_LA": "1",
475 "PEBS": "1",
476 "Counter": "0,1,2,3",
477 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT",
478 "Errata": "BDM100",
479 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were L3 hit and a cross-core snoop hit in the on-pkg core cache.",
480 "SampleAfterValue": "20011",
481 "CounterHTOff": "0,1,2,3"
482 },
483 {
484 "EventCode": "0xD2",
485 "UMask": "0x4",
486 "BriefDescription": "Retired load uops which data sources were HitM responses from shared L3.",
487 "Data_LA": "1",
488 "PEBS": "1",
489 "Counter": "0,1,2,3",
490 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM",
491 "Errata": "BDM100",
492 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were HitM responses from a core on same socket (shared L3).",
493 "SampleAfterValue": "20011",
494 "CounterHTOff": "0,1,2,3"
495 },
496 {
497 "EventCode": "0xD2",
498 "UMask": "0x8",
499 "BriefDescription": "Retired load uops which data sources were hits in L3 without snoops required.",
500 "Data_LA": "1",
501 "PEBS": "1",
502 "Counter": "0,1,2,3",
503 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_NONE",
504 "Errata": "BDM100",
505 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the last-level (L3) cache without snoops required.",
506 "SampleAfterValue": "100003",
507 "CounterHTOff": "0,1,2,3"
508 },
509 {
510 "EventCode": "0xD3",
511 "UMask": "0x1",
512 "BriefDescription": "Data from local DRAM either Snoop not needed or Snoop Miss (RspI)",
513 "Data_LA": "1",
514 "PEBS": "1",
515 "Counter": "0,1,2,3",
516 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM",
517 "Errata": "BDE70, BDM100",
518 "PublicDescription": "Retired load uop whose Data Source was: local DRAM either Snoop not needed or Snoop Miss (RspI).",
519 "SampleAfterValue": "100007",
520 "CounterHTOff": "0,1,2,3"
521 },
522 {
523 "EventCode": "0xF0",
524 "UMask": "0x1",
525 "BriefDescription": "Demand Data Read requests that access L2 cache",
526 "Counter": "0,1,2,3",
527 "EventName": "L2_TRANS.DEMAND_DATA_RD",
528 "PublicDescription": "This event counts Demand Data Read requests that access L2 cache, including rejects.",
529 "SampleAfterValue": "200003",
530 "CounterHTOff": "0,1,2,3,4,5,6,7"
531 },
532 {
533 "EventCode": "0xF0",
534 "UMask": "0x2",
535 "BriefDescription": "RFO requests that access L2 cache",
536 "Counter": "0,1,2,3",
537 "EventName": "L2_TRANS.RFO",
538 "PublicDescription": "This event counts Read for Ownership (RFO) requests that access L2 cache.",
539 "SampleAfterValue": "200003",
540 "CounterHTOff": "0,1,2,3,4,5,6,7"
541 },
542 {
543 "EventCode": "0xF0",
544 "UMask": "0x4",
545 "BriefDescription": "L2 cache accesses when fetching instructions",
546 "Counter": "0,1,2,3",
547 "EventName": "L2_TRANS.CODE_RD",
548 "PublicDescription": "This event counts the number of L2 cache accesses when fetching instructions.",
549 "SampleAfterValue": "200003",
550 "CounterHTOff": "0,1,2,3,4,5,6,7"
551 },
552 {
553 "EventCode": "0xF0",
554 "UMask": "0x8",
555 "BriefDescription": "L2 or L3 HW prefetches that access L2 cache",
556 "Counter": "0,1,2,3",
557 "EventName": "L2_TRANS.ALL_PF",
558 "PublicDescription": "This event counts L2 or L3 HW prefetches that access L2 cache including rejects.",
559 "SampleAfterValue": "200003",
560 "CounterHTOff": "0,1,2,3,4,5,6,7"
561 },
562 {
563 "EventCode": "0xF0",
564 "UMask": "0x10",
565 "BriefDescription": "L1D writebacks that access L2 cache",
566 "Counter": "0,1,2,3",
567 "EventName": "L2_TRANS.L1D_WB",
568 "PublicDescription": "This event counts L1D writebacks that access L2 cache.",
569 "SampleAfterValue": "200003",
570 "CounterHTOff": "0,1,2,3,4,5,6,7"
571 },
572 {
573 "EventCode": "0xF0",
574 "UMask": "0x20",
575 "BriefDescription": "L2 fill requests that access L2 cache",
576 "Counter": "0,1,2,3",
577 "EventName": "L2_TRANS.L2_FILL",
578 "PublicDescription": "This event counts L2 fill requests that access L2 cache.",
579 "SampleAfterValue": "200003",
580 "CounterHTOff": "0,1,2,3,4,5,6,7"
581 },
582 {
583 "EventCode": "0xF0",
584 "UMask": "0x40",
585 "BriefDescription": "L2 writebacks that access L2 cache",
586 "Counter": "0,1,2,3",
587 "EventName": "L2_TRANS.L2_WB",
588 "PublicDescription": "This event counts L2 writebacks that access L2 cache.",
589 "SampleAfterValue": "200003",
590 "CounterHTOff": "0,1,2,3,4,5,6,7"
591 },
592 {
593 "EventCode": "0xF0",
594 "UMask": "0x80",
595 "BriefDescription": "Transactions accessing L2 pipe",
596 "Counter": "0,1,2,3",
597 "EventName": "L2_TRANS.ALL_REQUESTS",
598 "PublicDescription": "This event counts transactions that access the L2 pipe including snoops, pagewalks, and so on.",
599 "SampleAfterValue": "200003",
600 "CounterHTOff": "0,1,2,3,4,5,6,7"
601 },
602 {
603 "EventCode": "0xF1",
604 "UMask": "0x1",
605 "BriefDescription": "L2 cache lines in I state filling L2",
606 "Counter": "0,1,2,3",
607 "EventName": "L2_LINES_IN.I",
608 "PublicDescription": "This event counts the number of L2 cache lines in the Invalidate state filling the L2. Counting does not cover rejects.",
609 "SampleAfterValue": "100003",
610 "CounterHTOff": "0,1,2,3,4,5,6,7"
611 },
612 {
613 "EventCode": "0xF1",
614 "UMask": "0x2",
615 "BriefDescription": "L2 cache lines in S state filling L2",
616 "Counter": "0,1,2,3",
617 "EventName": "L2_LINES_IN.S",
618 "PublicDescription": "This event counts the number of L2 cache lines in the Shared state filling the L2. Counting does not cover rejects.",
619 "SampleAfterValue": "100003",
620 "CounterHTOff": "0,1,2,3,4,5,6,7"
621 },
622 {
623 "EventCode": "0xF1",
624 "UMask": "0x4",
625 "BriefDescription": "L2 cache lines in E state filling L2",
626 "Counter": "0,1,2,3",
627 "EventName": "L2_LINES_IN.E",
628 "PublicDescription": "This event counts the number of L2 cache lines in the Exclusive state filling the L2. Counting does not cover rejects.",
629 "SampleAfterValue": "100003",
630 "CounterHTOff": "0,1,2,3,4,5,6,7"
631 },
632 {
633 "EventCode": "0xF1",
634 "UMask": "0x7",
635 "BriefDescription": "L2 cache lines filling L2",
636 "Counter": "0,1,2,3",
637 "EventName": "L2_LINES_IN.ALL",
638 "PublicDescription": "This event counts the number of L2 cache lines filling the L2. Counting does not cover rejects.",
639 "SampleAfterValue": "100003",
640 "CounterHTOff": "0,1,2,3,4,5,6,7"
641 },
642 {
643 "EventCode": "0xF2",
644 "UMask": "0x5",
645 "BriefDescription": "Clean L2 cache lines evicted by demand.",
646 "Counter": "0,1,2,3",
647 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
648 "SampleAfterValue": "100003",
649 "CounterHTOff": "0,1,2,3,4,5,6,7"
650 },
651 {
652 "EventCode": "0xf4",
653 "UMask": "0x10",
654 "BriefDescription": "Split locks in SQ",
655 "Counter": "0,1,2,3",
656 "EventName": "SQ_MISC.SPLIT_LOCK",
657 "PublicDescription": "This event counts the number of split locks in the super queue.",
658 "SampleAfterValue": "100003",
659 "CounterHTOff": "0,1,2,3,4,5,6,7"
660 },
661 {
662 "EventCode": "0x24",
663 "UMask": "0x42",
664 "BriefDescription": "RFO requests that hit L2 cache.",
665 "Counter": "0,1,2,3",
666 "EventName": "L2_RQSTS.RFO_HIT",
667 "SampleAfterValue": "200003",
668 "CounterHTOff": "0,1,2,3,4,5,6,7"
669 },
670 {
671 "EventCode": "0x24",
672 "UMask": "0x22",
673 "BriefDescription": "RFO requests that miss L2 cache.",
674 "Counter": "0,1,2,3",
675 "EventName": "L2_RQSTS.RFO_MISS",
676 "SampleAfterValue": "200003",
677 "CounterHTOff": "0,1,2,3,4,5,6,7"
678 },
679 {
680 "EventCode": "0x24",
681 "UMask": "0x44",
682 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
683 "Counter": "0,1,2,3",
684 "EventName": "L2_RQSTS.CODE_RD_HIT",
685 "SampleAfterValue": "200003",
686 "CounterHTOff": "0,1,2,3,4,5,6,7"
687 },
688 {
689 "EventCode": "0x24",
690 "UMask": "0x24",
691 "BriefDescription": "L2 cache misses when fetching instructions.",
692 "Counter": "0,1,2,3",
693 "EventName": "L2_RQSTS.CODE_RD_MISS",
694 "SampleAfterValue": "200003",
695 "CounterHTOff": "0,1,2,3,4,5,6,7"
696 },
697 {
698 "EventCode": "0x24",
699 "UMask": "0x27",
700 "BriefDescription": "Demand requests that miss L2 cache.",
701 "Counter": "0,1,2,3",
702 "EventName": "L2_RQSTS.ALL_DEMAND_MISS",
703 "SampleAfterValue": "200003",
704 "CounterHTOff": "0,1,2,3,4,5,6,7"
705 },
706 {
707 "EventCode": "0x24",
708 "UMask": "0xe7",
709 "BriefDescription": "Demand requests to L2 cache.",
710 "Counter": "0,1,2,3",
711 "EventName": "L2_RQSTS.ALL_DEMAND_REFERENCES",
712 "SampleAfterValue": "200003",
713 "CounterHTOff": "0,1,2,3,4,5,6,7"
714 },
715 {
716 "EventCode": "0x24",
717 "UMask": "0x3f",
718 "BriefDescription": "All requests that miss L2 cache.",
719 "Counter": "0,1,2,3",
720 "EventName": "L2_RQSTS.MISS",
721 "SampleAfterValue": "200003",
722 "CounterHTOff": "0,1,2,3,4,5,6,7"
723 },
724 {
725 "EventCode": "0x24",
726 "UMask": "0xff",
727 "BriefDescription": "All L2 requests.",
728 "Counter": "0,1,2,3",
729 "EventName": "L2_RQSTS.REFERENCES",
730 "SampleAfterValue": "200003",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "EventCode": "0xB7, 0xBB",
735 "UMask": "0x1",
736 "BriefDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction.",
737 "Counter": "0,1,2,3",
738 "EventName": "OFFCORE_RESPONSE",
739 "SampleAfterValue": "100003",
740 "CounterHTOff": "0,1,2,3"
741 },
742 {
743 "EventCode": "0x60",
744 "UMask": "0x1",
745 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
746 "Counter": "0,1,2,3",
747 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
748 "CounterMask": "6",
749 "Errata": "BDM76",
750 "SampleAfterValue": "2000003",
751 "CounterHTOff": "0,1,2,3,4,5,6,7"
752 },
753 {
754 "EventCode": "0x48",
755 "UMask": "0x1",
756 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
757 "Counter": "2",
758 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
759 "AnyThread": "1",
760 "CounterMask": "1",
761 "SampleAfterValue": "2000003",
762 "CounterHTOff": "2"
763 },
764 {
765 "EventCode": "0x48",
766 "UMask": "0x2",
767 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
768 "Counter": "0,1,2,3",
769 "EventName": "L1D_PEND_MISS.FB_FULL",
770 "CounterMask": "1",
771 "SampleAfterValue": "2000003",
772 "CounterHTOff": "0,1,2,3,4,5,6,7"
773 }
774] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/floating-point.json b/tools/perf/pmu-events/arch/x86/broadwellde/floating-point.json
new file mode 100644
index 000000000000..4ae1ea24f22f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/floating-point.json
@@ -0,0 +1,171 @@
1[
2 {
3 "EventCode": "0xC1",
4 "UMask": "0x8",
5 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
6 "Counter": "0,1,2,3",
7 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
8 "Errata": "BDM30",
9 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of transitions from AVX-256 to legacy SSE when penalty is applicable.",
10 "SampleAfterValue": "100003",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "EventCode": "0xC1",
15 "UMask": "0x10",
16 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
17 "Counter": "0,1,2,3",
18 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
19 "Errata": "BDM30",
20 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of transitions from legacy SSE to AVX-256 when penalty is applicable.",
21 "SampleAfterValue": "100003",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "EventCode": "0xC7",
26 "UMask": "0x1",
27 "BriefDescription": "Number of SSE/AVX computational scalar double precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
28 "PEBS": "1",
29 "Counter": "0,1,2,3",
30 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
31 "SampleAfterValue": "2000003",
32 "CounterHTOff": "0,1,2,3"
33 },
34 {
35 "EventCode": "0xC7",
36 "UMask": "0x2",
37 "BriefDescription": "Number of SSE/AVX computational scalar single precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
38 "PEBS": "1",
39 "Counter": "0,1,2,3",
40 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
41 "SampleAfterValue": "2000003",
42 "CounterHTOff": "0,1,2,3"
43 },
44 {
45 "EventCode": "0xC7",
46 "UMask": "0x4",
47 "BriefDescription": "Number of SSE/AVX computational 128-bit packed double precision floating-point instructions retired. Each count represents 2 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
48 "PEBS": "1",
49 "Counter": "0,1,2,3",
50 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE",
51 "SampleAfterValue": "2000003",
52 "CounterHTOff": "0,1,2,3"
53 },
54 {
55 "EventCode": "0xC7",
56 "UMask": "0x8",
57 "BriefDescription": "Number of SSE/AVX computational 128-bit packed single precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
58 "PEBS": "1",
59 "Counter": "0,1,2,3",
60 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE",
61 "SampleAfterValue": "2000003",
62 "CounterHTOff": "0,1,2,3"
63 },
64 {
65 "EventCode": "0xC7",
66 "UMask": "0x10",
67 "BriefDescription": "Number of SSE/AVX computational 256-bit packed double precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
68 "PEBS": "1",
69 "Counter": "0,1,2,3",
70 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE",
71 "SampleAfterValue": "2000003",
72 "CounterHTOff": "0,1,2,3"
73 },
74 {
75 "EventCode": "0xCA",
76 "UMask": "0x2",
77 "BriefDescription": "Number of X87 assists due to output value.",
78 "Counter": "0,1,2,3",
79 "EventName": "FP_ASSIST.X87_OUTPUT",
80 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of x87 floating point (FP) micro-code assist (numeric overflow/underflow, inexact result) when the output value (destination register) is invalid.",
81 "SampleAfterValue": "100003",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "EventCode": "0xCA",
86 "UMask": "0x4",
87 "BriefDescription": "Number of X87 assists due to input value.",
88 "Counter": "0,1,2,3",
89 "EventName": "FP_ASSIST.X87_INPUT",
90 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts x87 floating point (FP) micro-code assist (invalid operation, denormal operand, SNaN operand) when the input value (one of the source operands to an FP instruction) is invalid.",
91 "SampleAfterValue": "100003",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "EventCode": "0xCA",
96 "UMask": "0x8",
97 "BriefDescription": "Number of SIMD FP assists due to Output values",
98 "Counter": "0,1,2,3",
99 "EventName": "FP_ASSIST.SIMD_OUTPUT",
100 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of SSE* floating point (FP) micro-code assist (numeric overflow/underflow) when the output value (destination register) is invalid. Counting covers only cases involving penalties that require micro-code assist intervention.",
101 "SampleAfterValue": "100003",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0xCA",
106 "UMask": "0x10",
107 "BriefDescription": "Number of SIMD FP assists due to input values",
108 "Counter": "0,1,2,3",
109 "EventName": "FP_ASSIST.SIMD_INPUT",
110 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts any input SSE* FP assist - invalid operation, denormal operand, dividing by zero, SNaN operand. Counting includes only cases involving penalties that required micro-code assist intervention.",
111 "SampleAfterValue": "100003",
112 "CounterHTOff": "0,1,2,3,4,5,6,7"
113 },
114 {
115 "EventCode": "0xCA",
116 "UMask": "0x1e",
117 "BriefDescription": "Cycles with any input/output SSE or FP assist",
118 "Counter": "0,1,2,3",
119 "EventName": "FP_ASSIST.ANY",
120 "CounterMask": "1",
121 "PublicDescription": "This event counts cycles with any input and output SSE or x87 FP assist. If an input and output assist are detected on the same cycle the event increments by 1.",
122 "SampleAfterValue": "100003",
123 "CounterHTOff": "0,1,2,3"
124 },
125 {
126 "EventCode": "0xc7",
127 "UMask": "0x20",
128 "BriefDescription": "Number of SSE/AVX computational 256-bit packed single precision floating-point instructions retired. Each count represents 8 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
129 "PEBS": "1",
130 "Counter": "0,1,2,3",
131 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE",
132 "SampleAfterValue": "2000003",
133 "CounterHTOff": "0,1,2,3"
134 },
135 {
136 "EventCode": "0xC7",
137 "UMask": "0x3",
138 "BriefDescription": "Number of SSE/AVX computational scalar floating-point instructions retired. Applies to SSE* and AVX* scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RSQRT RCP SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
139 "Counter": "0,1,2,3",
140 "EventName": "FP_ARITH_INST_RETIRED.SCALAR",
141 "SampleAfterValue": "2000003",
142 "CounterHTOff": "0,1,2,3"
143 },
144 {
145 "EventCode": "0xC7",
146 "UMask": "0x3c",
147 "BriefDescription": "Number of SSE/AVX computational packed floating-point instructions retired. Applies to SSE* and AVX*, packed, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RSQRT RCP SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
148 "Counter": "0,1,2,3",
149 "EventName": "FP_ARITH_INST_RETIRED.PACKED",
150 "SampleAfterValue": "2000004",
151 "CounterHTOff": "0,1,2,3"
152 },
153 {
154 "EventCode": "0xC7",
155 "UMask": "0x2a",
156 "BriefDescription": "Number of SSE/AVX computational single precision floating-point instructions retired. Applies to SSE* and AVX*scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element. ?.",
157 "Counter": "0,1,2,3",
158 "EventName": "FP_ARITH_INST_RETIRED.SINGLE",
159 "SampleAfterValue": "2000005",
160 "CounterHTOff": "0,1,2,3"
161 },
162 {
163 "EventCode": "0xC7",
164 "UMask": "0x15",
165 "BriefDescription": "Number of SSE/AVX computational double precision floating-point instructions retired. Applies to SSE* and AVX*scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element. ?.",
166 "Counter": "0,1,2,3",
167 "EventName": "FP_ARITH_INST_RETIRED.DOUBLE",
168 "SampleAfterValue": "2000006",
169 "CounterHTOff": "0,1,2,3"
170 }
171] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/frontend.json b/tools/perf/pmu-events/arch/x86/broadwellde/frontend.json
new file mode 100644
index 000000000000..06bf0a40e568
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/frontend.json
@@ -0,0 +1,286 @@
1[
2 {
3 "EventCode": "0x79",
4 "UMask": "0x2",
5 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles",
6 "Counter": "0,1,2,3",
7 "EventName": "IDQ.EMPTY",
8 "PublicDescription": "This counts the number of cycles that the instruction decoder queue is empty and can indicate that the application may be bound in the front end. It does not determine whether there are uops being delivered to the Alloc stage since uops can be delivered by bypass skipping the Instruction Decode Queue (IDQ) when it is empty.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3"
11 },
12 {
13 "EventCode": "0x79",
14 "UMask": "0x4",
15 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
16 "Counter": "0,1,2,3",
17 "EventName": "IDQ.MITE_UOPS",
18 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x79",
24 "UMask": "0x8",
25 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
26 "Counter": "0,1,2,3",
27 "EventName": "IDQ.DSB_UOPS",
28 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
29 "SampleAfterValue": "2000003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x79",
34 "UMask": "0x10",
35 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
36 "Counter": "0,1,2,3",
37 "EventName": "IDQ.MS_DSB_UOPS",
38 "PublicDescription": "This event counts the number of uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
39 "SampleAfterValue": "2000003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x79",
44 "UMask": "0x20",
45 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
46 "Counter": "0,1,2,3",
47 "EventName": "IDQ.MS_MITE_UOPS",
48 "PublicDescription": "This event counts the number of uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
49 "SampleAfterValue": "2000003",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "EventCode": "0x79",
54 "UMask": "0x30",
55 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
56 "Counter": "0,1,2,3",
57 "EventName": "IDQ.MS_UOPS",
58 "PublicDescription": "This event counts the total number of uops delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
59 "SampleAfterValue": "2000003",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "EventCode": "0x79",
64 "UMask": "0x30",
65 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
66 "Counter": "0,1,2,3",
67 "EventName": "IDQ.MS_CYCLES",
68 "CounterMask": "1",
69 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
70 "SampleAfterValue": "2000003",
71 "CounterHTOff": "0,1,2,3,4,5,6,7"
72 },
73 {
74 "EventCode": "0x79",
75 "UMask": "0x4",
76 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path",
77 "Counter": "0,1,2,3",
78 "EventName": "IDQ.MITE_CYCLES",
79 "CounterMask": "1",
80 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ.",
81 "SampleAfterValue": "2000003",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "EventCode": "0x79",
86 "UMask": "0x8",
87 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
88 "Counter": "0,1,2,3",
89 "EventName": "IDQ.DSB_CYCLES",
90 "CounterMask": "1",
91 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
92 "SampleAfterValue": "2000003",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "EventCode": "0x79",
97 "UMask": "0x10",
98 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
99 "Counter": "0,1,2,3",
100 "EventName": "IDQ.MS_DSB_CYCLES",
101 "CounterMask": "1",
102 "PublicDescription": "This event counts cycles during which uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
103 "SampleAfterValue": "2000003",
104 "CounterHTOff": "0,1,2,3,4,5,6,7"
105 },
106 {
107 "EdgeDetect": "1",
108 "EventCode": "0x79",
109 "UMask": "0x10",
110 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy",
111 "Counter": "0,1,2,3",
112 "EventName": "IDQ.MS_DSB_OCCUR",
113 "CounterMask": "1",
114 "PublicDescription": "This event counts the number of deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
115 "SampleAfterValue": "2000003",
116 "CounterHTOff": "0,1,2,3,4,5,6,7"
117 },
118 {
119 "EventCode": "0x79",
120 "UMask": "0x18",
121 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
122 "Counter": "0,1,2,3",
123 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
124 "CounterMask": "4",
125 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
126 "SampleAfterValue": "2000003",
127 "CounterHTOff": "0,1,2,3,4,5,6,7"
128 },
129 {
130 "EventCode": "0x79",
131 "UMask": "0x18",
132 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
133 "Counter": "0,1,2,3",
134 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
135 "CounterMask": "1",
136 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
137 "SampleAfterValue": "2000003",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0x79",
142 "UMask": "0x24",
143 "BriefDescription": "Cycles MITE is delivering 4 Uops",
144 "Counter": "0,1,2,3",
145 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
146 "CounterMask": "4",
147 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
148 "SampleAfterValue": "2000003",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "EventCode": "0x79",
153 "UMask": "0x24",
154 "BriefDescription": "Cycles MITE is delivering any Uop",
155 "Counter": "0,1,2,3",
156 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
157 "CounterMask": "1",
158 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
159 "SampleAfterValue": "2000003",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "EventCode": "0x79",
164 "UMask": "0x3c",
165 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
166 "Counter": "0,1,2,3",
167 "EventName": "IDQ.MITE_ALL_UOPS",
168 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
169 "SampleAfterValue": "2000003",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "EventCode": "0x80",
174 "UMask": "0x1",
175 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches",
176 "Counter": "0,1,2,3",
177 "EventName": "ICACHE.HIT",
178 "PublicDescription": "This event counts the number of both cacheable and noncacheable Instruction Cache, Streaming Buffer and Victim Cache Reads including UC fetches.",
179 "SampleAfterValue": "2000003",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "EventCode": "0x80",
184 "UMask": "0x2",
185 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes Uncacheable accesses.",
186 "Counter": "0,1,2,3",
187 "EventName": "ICACHE.MISSES",
188 "PublicDescription": "This event counts the number of instruction cache, streaming buffer and victim cache misses. Counting includes UC accesses.",
189 "SampleAfterValue": "200003",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "EventCode": "0x80",
194 "UMask": "0x4",
195 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction-cache miss.",
196 "Counter": "0,1,2,3",
197 "EventName": "ICACHE.IFDATA_STALL",
198 "PublicDescription": "This event counts cycles during which the demand fetch waits for data (wfdM104H) from L2 or iSB (opportunistic hit).",
199 "SampleAfterValue": "2000003",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "EventCode": "0x9C",
204 "UMask": "0x1",
205 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled",
206 "Counter": "0,1,2,3",
207 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
208 "PublicDescription": "This event counts the number of uops not delivered to Resource Allocation Table (RAT) per thread adding ?4 ? x? when Resource Allocation Table (RAT) is not stalled and Instruction Decode Queue (IDQ) delivers x uops to Resource Allocation Table (RAT) (where x belongs to {0,1,2,3}). Counting does not cover cases when:\n a. IDQ-Resource Allocation Table (RAT) pipe serves the other thread;\n b. Resource Allocation Table (RAT) is stalled for the thread (including uop drops and clear BE conditions); \n c. Instruction Decode Queue (IDQ) delivers four uops.",
209 "SampleAfterValue": "2000003",
210 "CounterHTOff": "0,1,2,3"
211 },
212 {
213 "EventCode": "0x9C",
214 "UMask": "0x1",
215 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
216 "Counter": "0,1,2,3",
217 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
218 "CounterMask": "4",
219 "PublicDescription": "This event counts, on the per-thread basis, cycles when no uops are delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core =4.",
220 "SampleAfterValue": "2000003",
221 "CounterHTOff": "0,1,2,3"
222 },
223 {
224 "EventCode": "0x9C",
225 "UMask": "0x1",
226 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
227 "Counter": "0,1,2,3",
228 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
229 "CounterMask": "3",
230 "PublicDescription": "This event counts, on the per-thread basis, cycles when less than 1 uop is delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core >=3.",
231 "SampleAfterValue": "2000003",
232 "CounterHTOff": "0,1,2,3"
233 },
234 {
235 "EventCode": "0x9C",
236 "UMask": "0x1",
237 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
238 "Counter": "0,1,2,3",
239 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
240 "CounterMask": "2",
241 "SampleAfterValue": "2000003",
242 "CounterHTOff": "0,1,2,3"
243 },
244 {
245 "EventCode": "0x9C",
246 "UMask": "0x1",
247 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
248 "Counter": "0,1,2,3",
249 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
250 "CounterMask": "1",
251 "SampleAfterValue": "2000003",
252 "CounterHTOff": "0,1,2,3"
253 },
254 {
255 "Invert": "1",
256 "EventCode": "0x9C",
257 "UMask": "0x1",
258 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
259 "Counter": "0,1,2,3",
260 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
261 "CounterMask": "1",
262 "SampleAfterValue": "2000003",
263 "CounterHTOff": "0,1,2,3"
264 },
265 {
266 "EventCode": "0xAB",
267 "UMask": "0x2",
268 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
269 "Counter": "0,1,2,3",
270 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
271 "PublicDescription": "This event counts Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles. These cycles do not include uops routed through because of the switch itself, for example, when Instruction Decode Queue (IDQ) pre-allocation is unavailable, or Instruction Decode Queue (IDQ) is full. SBD-to-MITE switch true penalty cycles happen after the merge mux (MM) receives Decode Stream Buffer (DSB) Sync-indication until receiving the first MITE uop. \nMM is placed before Instruction Decode Queue (IDQ) to merge uops being fed from the MITE and Decode Stream Buffer (DSB) paths. Decode Stream Buffer (DSB) inserts the Sync-indication whenever a Decode Stream Buffer (DSB)-to-MITE switch occurs.\nPenalty: A Decode Stream Buffer (DSB) hit followed by a Decode Stream Buffer (DSB) miss can cost up to six cycles in which no uops are delivered to the IDQ. Most often, such switches from the Decode Stream Buffer (DSB) to the legacy pipeline cost 0?2 cycles.",
272 "SampleAfterValue": "2000003",
273 "CounterHTOff": "0,1,2,3,4,5,6,7"
274 },
275 {
276 "EdgeDetect": "1",
277 "EventCode": "0x79",
278 "UMask": "0x30",
279 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
280 "Counter": "0,1,2,3",
281 "EventName": "IDQ.MS_SWITCHES",
282 "CounterMask": "1",
283 "SampleAfterValue": "2000003",
284 "CounterHTOff": "0,1,2,3,4,5,6,7"
285 }
286] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/memory.json b/tools/perf/pmu-events/arch/x86/broadwellde/memory.json
new file mode 100644
index 000000000000..cfa1e5876ec3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/memory.json
@@ -0,0 +1,433 @@
1[
2 {
3 "EventCode": "0x05",
4 "UMask": "0x1",
5 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache",
6 "Counter": "0,1,2,3",
7 "EventName": "MISALIGN_MEM_REF.LOADS",
8 "PublicDescription": "This event counts speculative cache-line split load uops dispatched to the L1 cache.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x05",
14 "UMask": "0x2",
15 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache",
16 "Counter": "0,1,2,3",
17 "EventName": "MISALIGN_MEM_REF.STORES",
18 "PublicDescription": "This event counts speculative cache line split store-address (STA) uops dispatched to the L1 cache.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x54",
24 "UMask": "0x1",
25 "BriefDescription": "Number of times a TSX line had a cache conflict",
26 "Counter": "0,1,2,3",
27 "EventName": "TX_MEM.ABORT_CONFLICT",
28 "PublicDescription": "Number of times a TSX line had a cache conflict.",
29 "SampleAfterValue": "2000003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x54",
34 "UMask": "0x2",
35 "BriefDescription": "Number of times a TSX Abort was triggered due to an evicted line caused by a transaction overflow",
36 "Counter": "0,1,2,3",
37 "EventName": "TX_MEM.ABORT_CAPACITY_WRITE",
38 "PublicDescription": "Number of times a TSX Abort was triggered due to an evicted line caused by a transaction overflow.",
39 "SampleAfterValue": "2000003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x54",
44 "UMask": "0x4",
45 "BriefDescription": "Number of times a TSX Abort was triggered due to a non-release/commit store to lock",
46 "Counter": "0,1,2,3",
47 "EventName": "TX_MEM.ABORT_HLE_STORE_TO_ELIDED_LOCK",
48 "PublicDescription": "Number of times a TSX Abort was triggered due to a non-release/commit store to lock.",
49 "SampleAfterValue": "2000003",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "EventCode": "0x54",
54 "UMask": "0x8",
55 "BriefDescription": "Number of times a TSX Abort was triggered due to commit but Lock Buffer not empty",
56 "Counter": "0,1,2,3",
57 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_NOT_EMPTY",
58 "PublicDescription": "Number of times a TSX Abort was triggered due to commit but Lock Buffer not empty.",
59 "SampleAfterValue": "2000003",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "EventCode": "0x54",
64 "UMask": "0x10",
65 "BriefDescription": "Number of times a TSX Abort was triggered due to release/commit but data and address mismatch",
66 "Counter": "0,1,2,3",
67 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_MISMATCH",
68 "PublicDescription": "Number of times a TSX Abort was triggered due to release/commit but data and address mismatch.",
69 "SampleAfterValue": "2000003",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "EventCode": "0x54",
74 "UMask": "0x20",
75 "BriefDescription": "Number of times a TSX Abort was triggered due to attempting an unsupported alignment from Lock Buffer",
76 "Counter": "0,1,2,3",
77 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_UNSUPPORTED_ALIGNMENT",
78 "PublicDescription": "Number of times a TSX Abort was triggered due to attempting an unsupported alignment from Lock Buffer.",
79 "SampleAfterValue": "2000003",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0x54",
84 "UMask": "0x40",
85 "BriefDescription": "Number of times we could not allocate Lock Buffer",
86 "Counter": "0,1,2,3",
87 "EventName": "TX_MEM.HLE_ELISION_BUFFER_FULL",
88 "PublicDescription": "Number of times we could not allocate Lock Buffer.",
89 "SampleAfterValue": "2000003",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x5d",
94 "UMask": "0x1",
95 "BriefDescription": "Counts the number of times a class of instructions that may cause a transactional abort was executed. Since this is the count of execution, it may not always cause a transactional abort.",
96 "Counter": "0,1,2,3",
97 "EventName": "TX_EXEC.MISC1",
98 "PublicDescription": "Unfriendly TSX abort triggered by a flowmarker.",
99 "SampleAfterValue": "2000003",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "EventCode": "0x5d",
104 "UMask": "0x2",
105 "BriefDescription": "Counts the number of times a class of instructions (e.g., vzeroupper) that may cause a transactional abort was executed inside a transactional region",
106 "Counter": "0,1,2,3",
107 "EventName": "TX_EXEC.MISC2",
108 "PublicDescription": "Unfriendly TSX abort triggered by a vzeroupper instruction.",
109 "SampleAfterValue": "2000003",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "EventCode": "0x5d",
114 "UMask": "0x4",
115 "BriefDescription": "Counts the number of times an instruction execution caused the transactional nest count supported to be exceeded",
116 "Counter": "0,1,2,3",
117 "EventName": "TX_EXEC.MISC3",
118 "PublicDescription": "Unfriendly TSX abort triggered by a nest count that is too deep.",
119 "SampleAfterValue": "2000003",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "EventCode": "0x5d",
124 "UMask": "0x8",
125 "BriefDescription": "Counts the number of times a XBEGIN instruction was executed inside an HLE transactional region.",
126 "Counter": "0,1,2,3",
127 "EventName": "TX_EXEC.MISC4",
128 "PublicDescription": "RTM region detected inside HLE.",
129 "SampleAfterValue": "2000003",
130 "CounterHTOff": "0,1,2,3,4,5,6,7"
131 },
132 {
133 "EventCode": "0x5d",
134 "UMask": "0x10",
135 "BriefDescription": "Counts the number of times an HLE XACQUIRE instruction was executed inside an RTM transactional region.",
136 "Counter": "0,1,2,3",
137 "EventName": "TX_EXEC.MISC5",
138 "SampleAfterValue": "2000003",
139 "CounterHTOff": "0,1,2,3,4,5,6,7"
140 },
141 {
142 "EventCode": "0xC3",
143 "UMask": "0x2",
144 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
145 "Counter": "0,1,2,3",
146 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
147 "PublicDescription": "This event counts the number of memory ordering Machine Clears detected. Memory Ordering Machine Clears can result from one of the following:\n1. memory disambiguation,\n2. external snoop, or\n3. cross SMT-HW-thread snoop (stores) hitting load buffer.",
148 "SampleAfterValue": "100003",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "EventCode": "0xc8",
153 "UMask": "0x1",
154 "BriefDescription": "Number of times we entered an HLE region; does not count nested transactions",
155 "Counter": "0,1,2,3",
156 "EventName": "HLE_RETIRED.START",
157 "PublicDescription": "Number of times we entered an HLE region\n does not count nested transactions.",
158 "SampleAfterValue": "2000003",
159 "CounterHTOff": "0,1,2,3,4,5,6,7"
160 },
161 {
162 "EventCode": "0xc8",
163 "UMask": "0x2",
164 "BriefDescription": "Number of times HLE commit succeeded",
165 "Counter": "0,1,2,3",
166 "EventName": "HLE_RETIRED.COMMIT",
167 "PublicDescription": "Number of times HLE commit succeeded.",
168 "SampleAfterValue": "2000003",
169 "CounterHTOff": "0,1,2,3,4,5,6,7"
170 },
171 {
172 "EventCode": "0xc8",
173 "UMask": "0x4",
174 "BriefDescription": "Number of times HLE abort was triggered",
175 "PEBS": "1",
176 "Counter": "0,1,2,3",
177 "EventName": "HLE_RETIRED.ABORTED",
178 "PublicDescription": "Number of times HLE abort was triggered.",
179 "SampleAfterValue": "2000003",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "EventCode": "0xc8",
184 "UMask": "0x8",
185 "BriefDescription": "Number of times an HLE execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
186 "Counter": "0,1,2,3",
187 "EventName": "HLE_RETIRED.ABORTED_MISC1",
188 "PublicDescription": "Number of times an HLE abort was attributed to a Memory condition (See TSX_Memory event for additional details).",
189 "SampleAfterValue": "2000003",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "EventCode": "0xc8",
194 "UMask": "0x10",
195 "BriefDescription": "Number of times an HLE execution aborted due to uncommon conditions",
196 "Counter": "0,1,2,3",
197 "EventName": "HLE_RETIRED.ABORTED_MISC2",
198 "PublicDescription": "Number of times the TSX watchdog signaled an HLE abort.",
199 "SampleAfterValue": "2000003",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "EventCode": "0xc8",
204 "UMask": "0x20",
205 "BriefDescription": "Number of times an HLE execution aborted due to HLE-unfriendly instructions",
206 "Counter": "0,1,2,3",
207 "EventName": "HLE_RETIRED.ABORTED_MISC3",
208 "PublicDescription": "Number of times a disallowed operation caused an HLE abort.",
209 "SampleAfterValue": "2000003",
210 "CounterHTOff": "0,1,2,3,4,5,6,7"
211 },
212 {
213 "EventCode": "0xc8",
214 "UMask": "0x40",
215 "BriefDescription": "Number of times an HLE execution aborted due to incompatible memory type",
216 "Counter": "0,1,2,3",
217 "EventName": "HLE_RETIRED.ABORTED_MISC4",
218 "PublicDescription": "Number of times HLE caused a fault.",
219 "SampleAfterValue": "2000003",
220 "CounterHTOff": "0,1,2,3,4,5,6,7"
221 },
222 {
223 "EventCode": "0xc8",
224 "UMask": "0x80",
225 "BriefDescription": "Number of times an HLE execution aborted due to none of the previous 4 categories (e.g. interrupts)",
226 "Counter": "0,1,2,3",
227 "EventName": "HLE_RETIRED.ABORTED_MISC5",
228 "PublicDescription": "Number of times HLE aborted and was not due to the abort conditions in subevents 3-6.",
229 "SampleAfterValue": "2000003",
230 "CounterHTOff": "0,1,2,3,4,5,6,7"
231 },
232 {
233 "EventCode": "0xc9",
234 "UMask": "0x1",
235 "BriefDescription": "Number of times we entered an RTM region; does not count nested transactions",
236 "Counter": "0,1,2,3",
237 "EventName": "RTM_RETIRED.START",
238 "PublicDescription": "Number of times we entered an RTM region\n does not count nested transactions.",
239 "SampleAfterValue": "2000003",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "EventCode": "0xc9",
244 "UMask": "0x2",
245 "BriefDescription": "Number of times RTM commit succeeded",
246 "Counter": "0,1,2,3",
247 "EventName": "RTM_RETIRED.COMMIT",
248 "PublicDescription": "Number of times RTM commit succeeded.",
249 "SampleAfterValue": "2000003",
250 "CounterHTOff": "0,1,2,3"
251 },
252 {
253 "EventCode": "0xc9",
254 "UMask": "0x4",
255 "BriefDescription": "Number of times RTM abort was triggered",
256 "PEBS": "1",
257 "Counter": "0,1,2,3",
258 "EventName": "RTM_RETIRED.ABORTED",
259 "PublicDescription": "Number of times RTM abort was triggered .",
260 "SampleAfterValue": "2000003",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "EventCode": "0xc9",
265 "UMask": "0x8",
266 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts)",
267 "Counter": "0,1,2,3",
268 "EventName": "RTM_RETIRED.ABORTED_MISC1",
269 "PublicDescription": "Number of times an RTM abort was attributed to a Memory condition (See TSX_Memory event for additional details).",
270 "SampleAfterValue": "2000003",
271 "CounterHTOff": "0,1,2,3"
272 },
273 {
274 "EventCode": "0xc9",
275 "UMask": "0x10",
276 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
277 "Counter": "0,1,2,3",
278 "EventName": "RTM_RETIRED.ABORTED_MISC2",
279 "PublicDescription": "Number of times the TSX watchdog signaled an RTM abort.",
280 "SampleAfterValue": "2000003",
281 "CounterHTOff": "0,1,2,3"
282 },
283 {
284 "EventCode": "0xc9",
285 "UMask": "0x20",
286 "BriefDescription": "Number of times an RTM execution aborted due to HLE-unfriendly instructions",
287 "Counter": "0,1,2,3",
288 "EventName": "RTM_RETIRED.ABORTED_MISC3",
289 "PublicDescription": "Number of times a disallowed operation caused an RTM abort.",
290 "SampleAfterValue": "2000003",
291 "CounterHTOff": "0,1,2,3"
292 },
293 {
294 "EventCode": "0xc9",
295 "UMask": "0x40",
296 "BriefDescription": "Number of times an RTM execution aborted due to incompatible memory type",
297 "Counter": "0,1,2,3",
298 "EventName": "RTM_RETIRED.ABORTED_MISC4",
299 "PublicDescription": "Number of times a RTM caused a fault.",
300 "SampleAfterValue": "2000003",
301 "CounterHTOff": "0,1,2,3"
302 },
303 {
304 "EventCode": "0xc9",
305 "UMask": "0x80",
306 "BriefDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt)",
307 "Counter": "0,1,2,3",
308 "EventName": "RTM_RETIRED.ABORTED_MISC5",
309 "PublicDescription": "Number of times RTM aborted and was not due to the abort conditions in subevents 3-6.",
310 "SampleAfterValue": "2000003",
311 "CounterHTOff": "0,1,2,3"
312 },
313 {
314 "EventCode": "0xCD",
315 "UMask": "0x1",
316 "BriefDescription": "Loads with latency value being above 4",
317 "PEBS": "2",
318 "MSRValue": "0x4",
319 "Counter": "3",
320 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
321 "MSRIndex": "0x3F6",
322 "Errata": "BDM100, BDM35",
323 "PublicDescription": "This event counts loads with latency value being above four.",
324 "TakenAlone": "1",
325 "SampleAfterValue": "100003",
326 "CounterHTOff": "3"
327 },
328 {
329 "EventCode": "0xCD",
330 "UMask": "0x1",
331 "BriefDescription": "Loads with latency value being above 8",
332 "PEBS": "2",
333 "MSRValue": "0x8",
334 "Counter": "3",
335 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
336 "MSRIndex": "0x3F6",
337 "Errata": "BDM100, BDM35",
338 "PublicDescription": "This event counts loads with latency value being above eight.",
339 "TakenAlone": "1",
340 "SampleAfterValue": "50021",
341 "CounterHTOff": "3"
342 },
343 {
344 "EventCode": "0xCD",
345 "UMask": "0x1",
346 "BriefDescription": "Loads with latency value being above 16",
347 "PEBS": "2",
348 "MSRValue": "0x10",
349 "Counter": "3",
350 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
351 "MSRIndex": "0x3F6",
352 "Errata": "BDM100, BDM35",
353 "PublicDescription": "This event counts loads with latency value being above 16.",
354 "TakenAlone": "1",
355 "SampleAfterValue": "20011",
356 "CounterHTOff": "3"
357 },
358 {
359 "EventCode": "0xCD",
360 "UMask": "0x1",
361 "BriefDescription": "Loads with latency value being above 32",
362 "PEBS": "2",
363 "MSRValue": "0x20",
364 "Counter": "3",
365 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
366 "MSRIndex": "0x3F6",
367 "Errata": "BDM100, BDM35",
368 "PublicDescription": "This event counts loads with latency value being above 32.",
369 "TakenAlone": "1",
370 "SampleAfterValue": "100007",
371 "CounterHTOff": "3"
372 },
373 {
374 "EventCode": "0xCD",
375 "UMask": "0x1",
376 "BriefDescription": "Loads with latency value being above 64",
377 "PEBS": "2",
378 "MSRValue": "0x40",
379 "Counter": "3",
380 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
381 "MSRIndex": "0x3F6",
382 "Errata": "BDM100, BDM35",
383 "PublicDescription": "This event counts loads with latency value being above 64.",
384 "TakenAlone": "1",
385 "SampleAfterValue": "2003",
386 "CounterHTOff": "3"
387 },
388 {
389 "EventCode": "0xCD",
390 "UMask": "0x1",
391 "BriefDescription": "Loads with latency value being above 128",
392 "PEBS": "2",
393 "MSRValue": "0x80",
394 "Counter": "3",
395 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
396 "MSRIndex": "0x3F6",
397 "Errata": "BDM100, BDM35",
398 "PublicDescription": "This event counts loads with latency value being above 128.",
399 "TakenAlone": "1",
400 "SampleAfterValue": "1009",
401 "CounterHTOff": "3"
402 },
403 {
404 "EventCode": "0xCD",
405 "UMask": "0x1",
406 "BriefDescription": "Loads with latency value being above 256",
407 "PEBS": "2",
408 "MSRValue": "0x100",
409 "Counter": "3",
410 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
411 "MSRIndex": "0x3F6",
412 "Errata": "BDM100, BDM35",
413 "PublicDescription": "This event counts loads with latency value being above 256.",
414 "TakenAlone": "1",
415 "SampleAfterValue": "503",
416 "CounterHTOff": "3"
417 },
418 {
419 "EventCode": "0xCD",
420 "UMask": "0x1",
421 "BriefDescription": "Loads with latency value being above 512",
422 "PEBS": "2",
423 "MSRValue": "0x200",
424 "Counter": "3",
425 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
426 "MSRIndex": "0x3F6",
427 "Errata": "BDM100, BDM35",
428 "PublicDescription": "This event counts loads with latency value being above 512.",
429 "TakenAlone": "1",
430 "SampleAfterValue": "101",
431 "CounterHTOff": "3"
432 }
433] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/other.json b/tools/perf/pmu-events/arch/x86/broadwellde/other.json
new file mode 100644
index 000000000000..718fcb1db2ee
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/other.json
@@ -0,0 +1,44 @@
1[
2 {
3 "EventCode": "0x5C",
4 "UMask": "0x1",
5 "BriefDescription": "Unhalted core cycles when the thread is in ring 0",
6 "Counter": "0,1,2,3",
7 "EventName": "CPL_CYCLES.RING0",
8 "PublicDescription": "This event counts the unhalted core cycles during which the thread is in the ring 0 privileged mode.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x5C",
14 "UMask": "0x2",
15 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3",
16 "Counter": "0,1,2,3",
17 "EventName": "CPL_CYCLES.RING123",
18 "PublicDescription": "This event counts unhalted core cycles during which the thread is in rings 1, 2, or 3.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EdgeDetect": "1",
24 "EventCode": "0x5C",
25 "UMask": "0x1",
26 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0",
27 "Counter": "0,1,2,3",
28 "EventName": "CPL_CYCLES.RING0_TRANS",
29 "CounterMask": "1",
30 "PublicDescription": "This event counts when there is a transition from ring 1,2 or 3 to ring0.",
31 "SampleAfterValue": "100007",
32 "CounterHTOff": "0,1,2,3,4,5,6,7"
33 },
34 {
35 "EventCode": "0x63",
36 "UMask": "0x1",
37 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock",
38 "Counter": "0,1,2,3",
39 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
40 "PublicDescription": "This event counts cycles in which the L1 and L2 are locked due to a UC lock or split lock. A lock is asserted in case of locked memory access, due to noncacheable memory, locked operation that spans two cache lines, or a page walk from the noncacheable page table. L1D and L2 locks have a very high performance penalty and it is highly recommended to avoid such access.",
41 "SampleAfterValue": "2000003",
42 "CounterHTOff": "0,1,2,3,4,5,6,7"
43 }
44] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/pipeline.json b/tools/perf/pmu-events/arch/x86/broadwellde/pipeline.json
new file mode 100644
index 000000000000..02b4e1035f2d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/pipeline.json
@@ -0,0 +1,1417 @@
1[
2 {
3 "EventCode": "0x00",
4 "UMask": "0x1",
5 "BriefDescription": "Instructions retired from execution.",
6 "Counter": "Fixed counter 1",
7 "EventName": "INST_RETIRED.ANY",
8 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. \nNotes: INST_RETIRED.ANY is counted by a designated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. INST_RETIRED.ANY_P is counted by a programmable counter and it is an architectural performance event. \nCounting: Faulting executions of GETSEC/VM entry/VM Exit/MWait will not count as retired instructions.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "Fixed counter 1"
11 },
12 {
13 "EventCode": "0x00",
14 "UMask": "0x2",
15 "BriefDescription": "Core cycles when the thread is not in halt state",
16 "Counter": "Fixed counter 2",
17 "EventName": "CPU_CLK_UNHALTED.THREAD",
18 "PublicDescription": "This event counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "Fixed counter 2"
21 },
22 {
23 "EventCode": "0x00",
24 "UMask": "0x3",
25 "BriefDescription": "Reference cycles when the core is not in halt state.",
26 "Counter": "Fixed counter 3",
27 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
28 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. This event has a constant ratio with the CPU_CLK_UNHALTED.REF_XCLK event. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. \nNote: On all current platforms this event stops counting during 'throttling (TM)' states duty off periods the processor is 'halted'. This event is clocked by base clock (100 Mhz) on Sandy Bridge. The counter update is done at a lower clock rate then the core clock the overflow status bit for this counter may appear 'sticky'. After the counter has overflowed and software clears the overflow status bit and resets the counter to less than MAX. The reset value to the counter is not clocked immediately so the overflow status bit will flip 'high (1)' and generate another PMI (if enabled) after which the reset value gets clocked into the counter. Therefore, software will get the interrupt, read the overflow status bit '1 for bit 34 while the counter value is less than MAX. Software should ignore this case.",
29 "SampleAfterValue": "2000003",
30 "CounterHTOff": "Fixed counter 3"
31 },
32 {
33 "EventCode": "0x03",
34 "UMask": "0x2",
35 "BriefDescription": "Cases when loads get true Block-on-Store blocking code preventing store forwarding",
36 "Counter": "0,1,2,3",
37 "EventName": "LD_BLOCKS.STORE_FORWARD",
38 "PublicDescription": "This event counts how many times the load operation got the true Block-on-Store blocking code preventing store forwarding. This includes cases when:\n - preceding store conflicts with the load (incomplete overlap);\n - store forwarding is impossible due to u-arch limitations;\n - preceding lock RMW operations are not forwarded;\n - store has the no-forward bit set (uncacheable/page-split/masked stores);\n - all-blocking stores are used (mostly, fences and port I/O);\nand others.\nThe most common case is a load blocked due to its address range overlapping with a preceding smaller uncompleted store. Note: This event does not take into account cases of out-of-SW-control (for example, SbTailHit), unknown physical STA, and cases of blocking loads on store due to being non-WB memory type or a lock. These cases are covered by other events.\nSee the table of not supported store forwards in the Optimization Guide.",
39 "SampleAfterValue": "100003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x03",
44 "UMask": "0x8",
45 "BriefDescription": "This event counts the number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
46 "Counter": "0,1,2,3",
47 "EventName": "LD_BLOCKS.NO_SR",
48 "SampleAfterValue": "100003",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "EventCode": "0x07",
53 "UMask": "0x1",
54 "BriefDescription": "False dependencies in MOB due to partial compare",
55 "Counter": "0,1,2,3",
56 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
57 "PublicDescription": "This event counts false dependencies in MOB when the partial comparison upon loose net check and dependency was resolved by the Enhanced Loose net mechanism. This may not result in high performance penalties. Loose net checks can fail when loads and stores are 4k aliased.",
58 "SampleAfterValue": "100003",
59 "CounterHTOff": "0,1,2,3,4,5,6,7"
60 },
61 {
62 "EventCode": "0x0D",
63 "UMask": "0x8",
64 "BriefDescription": "Cycles when Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the thread",
65 "Counter": "0,1,2,3",
66 "EventName": "INT_MISC.RAT_STALL_CYCLES",
67 "PublicDescription": "This event counts the number of cycles during which Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the current thread. This also includes the cycles during which the Allocator is serving another thread.",
68 "SampleAfterValue": "2000003",
69 "CounterHTOff": "0,1,2,3,4,5,6,7"
70 },
71 {
72 "EventCode": "0x0D",
73 "UMask": "0x3",
74 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...)",
75 "Counter": "0,1,2,3",
76 "EventName": "INT_MISC.RECOVERY_CYCLES",
77 "CounterMask": "1",
78 "PublicDescription": "Cycles checkpoints in Resource Allocation Table (RAT) are recovering from JEClear or machine clear.",
79 "SampleAfterValue": "2000003",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0x0E",
84 "UMask": "0x1",
85 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
86 "Counter": "0,1,2,3",
87 "EventName": "UOPS_ISSUED.ANY",
88 "PublicDescription": "This event counts the number of Uops issued by the Resource Allocation Table (RAT) to the reservation station (RS).",
89 "SampleAfterValue": "2000003",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x0E",
94 "UMask": "0x10",
95 "BriefDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive; added by GSR u-arch.",
96 "Counter": "0,1,2,3",
97 "EventName": "UOPS_ISSUED.FLAGS_MERGE",
98 "PublicDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive\n added by GSR u-arch.",
99 "SampleAfterValue": "2000003",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "EventCode": "0x0E",
104 "UMask": "0x20",
105 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
106 "Counter": "0,1,2,3",
107 "EventName": "UOPS_ISSUED.SLOW_LEA",
108 "SampleAfterValue": "2000003",
109 "CounterHTOff": "0,1,2,3,4,5,6,7"
110 },
111 {
112 "EventCode": "0x0E",
113 "UMask": "0x40",
114 "BriefDescription": "Number of Multiply packed/scalar single precision uops allocated.",
115 "Counter": "0,1,2,3",
116 "EventName": "UOPS_ISSUED.SINGLE_MUL",
117 "SampleAfterValue": "2000003",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "Invert": "1",
122 "EventCode": "0x0E",
123 "UMask": "0x1",
124 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread",
125 "Counter": "0,1,2,3",
126 "EventName": "UOPS_ISSUED.STALL_CYCLES",
127 "CounterMask": "1",
128 "PublicDescription": "This event counts cycles during which the Resource Allocation Table (RAT) does not issue any Uops to the reservation station (RS) for the current thread.",
129 "SampleAfterValue": "2000003",
130 "CounterHTOff": "0,1,2,3"
131 },
132 {
133 "EventCode": "0x14",
134 "UMask": "0x1",
135 "BriefDescription": "Cycles when divider is busy executing divide operations",
136 "Counter": "0,1,2,3",
137 "EventName": "ARITH.FPU_DIV_ACTIVE",
138 "PublicDescription": "This event counts the number of the divide operations executed. Uses edge-detect and a cmask value of 1 on ARITH.FPU_DIV_ACTIVE to get the number of the divide operations executed.",
139 "SampleAfterValue": "2000003",
140 "CounterHTOff": "0,1,2,3,4,5,6,7"
141 },
142 {
143 "EventCode": "0x3C",
144 "UMask": "0x1",
145 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
146 "Counter": "0,1,2,3",
147 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
148 "PublicDescription": "This is a fixed-frequency event programmed to general counters. It counts when the core is unhalted at 100 Mhz.",
149 "SampleAfterValue": "2000003",
150 "CounterHTOff": "0,1,2,3,4,5,6,7"
151 },
152 {
153 "EventCode": "0x3c",
154 "UMask": "0x2",
155 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
156 "Counter": "0,1,2,3",
157 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
158 "SampleAfterValue": "2000003",
159 "CounterHTOff": "0,1,2,3"
160 },
161 {
162 "EventCode": "0x4c",
163 "UMask": "0x1",
164 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch",
165 "Counter": "0,1,2,3",
166 "EventName": "LOAD_HIT_PRE.SW_PF",
167 "PublicDescription": "This event counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the software prefetch. It can also be incremented by some lock instructions. So it should only be used with profiling so that the locks can be excluded by asm inspection of the nearby instructions.",
168 "SampleAfterValue": "100003",
169 "CounterHTOff": "0,1,2,3,4,5,6,7"
170 },
171 {
172 "EventCode": "0x4C",
173 "UMask": "0x2",
174 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch",
175 "Counter": "0,1,2,3",
176 "EventName": "LOAD_HIT_PRE.HW_PF",
177 "PublicDescription": "This event counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the hardware prefetch.",
178 "SampleAfterValue": "100003",
179 "CounterHTOff": "0,1,2,3,4,5,6,7"
180 },
181 {
182 "EventCode": "0x58",
183 "UMask": "0x1",
184 "BriefDescription": "Number of integer Move Elimination candidate uops that were eliminated.",
185 "Counter": "0,1,2,3",
186 "EventName": "MOVE_ELIMINATION.INT_ELIMINATED",
187 "SampleAfterValue": "1000003",
188 "CounterHTOff": "0,1,2,3,4,5,6,7"
189 },
190 {
191 "EventCode": "0x58",
192 "UMask": "0x2",
193 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were eliminated.",
194 "Counter": "0,1,2,3",
195 "EventName": "MOVE_ELIMINATION.SIMD_ELIMINATED",
196 "SampleAfterValue": "1000003",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "EventCode": "0x58",
201 "UMask": "0x4",
202 "BriefDescription": "Number of integer Move Elimination candidate uops that were not eliminated.",
203 "Counter": "0,1,2,3",
204 "EventName": "MOVE_ELIMINATION.INT_NOT_ELIMINATED",
205 "SampleAfterValue": "1000003",
206 "CounterHTOff": "0,1,2,3,4,5,6,7"
207 },
208 {
209 "EventCode": "0x58",
210 "UMask": "0x8",
211 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were not eliminated.",
212 "Counter": "0,1,2,3",
213 "EventName": "MOVE_ELIMINATION.SIMD_NOT_ELIMINATED",
214 "SampleAfterValue": "1000003",
215 "CounterHTOff": "0,1,2,3,4,5,6,7"
216 },
217 {
218 "EventCode": "0x5E",
219 "UMask": "0x1",
220 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
221 "Counter": "0,1,2,3",
222 "EventName": "RS_EVENTS.EMPTY_CYCLES",
223 "PublicDescription": "This event counts cycles during which the reservation station (RS) is empty for the thread.\nNote: In ST-mode, not active thread should drive 0. This is usually caused by severely costly branch mispredictions, or allocator/FE issues.",
224 "SampleAfterValue": "2000003",
225 "CounterHTOff": "0,1,2,3,4,5,6,7"
226 },
227 {
228 "EventCode": "0x87",
229 "UMask": "0x1",
230 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
231 "Counter": "0,1,2,3",
232 "EventName": "ILD_STALL.LCP",
233 "PublicDescription": "This event counts stalls occured due to changing prefix length (66, 67 or REX.W when they change the length of the decoded instruction). Occurrences counting is proportional to the number of prefixes in a 16B-line. This may result in the following penalties: three-cycle penalty for each LCP in a 16-byte chunk.",
234 "SampleAfterValue": "2000003",
235 "CounterHTOff": "0,1,2,3,4,5,6,7"
236 },
237 {
238 "EventCode": "0x88",
239 "UMask": "0x41",
240 "BriefDescription": "Not taken macro-conditional branches",
241 "Counter": "0,1,2,3",
242 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
243 "PublicDescription": "This event counts not taken macro-conditional branch instructions.",
244 "SampleAfterValue": "200003",
245 "CounterHTOff": "0,1,2,3,4,5,6,7"
246 },
247 {
248 "EventCode": "0x88",
249 "UMask": "0x81",
250 "BriefDescription": "Taken speculative and retired macro-conditional branches",
251 "Counter": "0,1,2,3",
252 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
253 "PublicDescription": "This event counts taken speculative and retired macro-conditional branch instructions.",
254 "SampleAfterValue": "200003",
255 "CounterHTOff": "0,1,2,3,4,5,6,7"
256 },
257 {
258 "EventCode": "0x88",
259 "UMask": "0x82",
260 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects",
261 "Counter": "0,1,2,3",
262 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
263 "PublicDescription": "This event counts taken speculative and retired macro-conditional branch instructions excluding calls and indirect branches.",
264 "SampleAfterValue": "200003",
265 "CounterHTOff": "0,1,2,3,4,5,6,7"
266 },
267 {
268 "EventCode": "0x88",
269 "UMask": "0x84",
270 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns",
271 "Counter": "0,1,2,3",
272 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
273 "PublicDescription": "This event counts taken speculative and retired indirect branches excluding calls and return branches.",
274 "SampleAfterValue": "200003",
275 "CounterHTOff": "0,1,2,3,4,5,6,7"
276 },
277 {
278 "EventCode": "0x88",
279 "UMask": "0x88",
280 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic",
281 "Counter": "0,1,2,3",
282 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
283 "PublicDescription": "This event counts taken speculative and retired indirect branches that have a return mnemonic.",
284 "SampleAfterValue": "200003",
285 "CounterHTOff": "0,1,2,3,4,5,6,7"
286 },
287 {
288 "EventCode": "0x88",
289 "UMask": "0x90",
290 "BriefDescription": "Taken speculative and retired direct near calls",
291 "Counter": "0,1,2,3",
292 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
293 "PublicDescription": "This event counts taken speculative and retired direct near calls.",
294 "SampleAfterValue": "200003",
295 "CounterHTOff": "0,1,2,3,4,5,6,7"
296 },
297 {
298 "EventCode": "0x88",
299 "UMask": "0xa0",
300 "BriefDescription": "Taken speculative and retired indirect calls",
301 "Counter": "0,1,2,3",
302 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
303 "PublicDescription": "This event counts taken speculative and retired indirect calls including both register and memory indirect.",
304 "SampleAfterValue": "200003",
305 "CounterHTOff": "0,1,2,3,4,5,6,7"
306 },
307 {
308 "EventCode": "0x88",
309 "UMask": "0xc1",
310 "BriefDescription": "Speculative and retired macro-conditional branches",
311 "Counter": "0,1,2,3",
312 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
313 "PublicDescription": "This event counts both taken and not taken speculative and retired macro-conditional branch instructions.",
314 "SampleAfterValue": "200003",
315 "CounterHTOff": "0,1,2,3,4,5,6,7"
316 },
317 {
318 "EventCode": "0x88",
319 "UMask": "0xc2",
320 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects",
321 "Counter": "0,1,2,3",
322 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
323 "PublicDescription": "This event counts both taken and not taken speculative and retired macro-unconditional branch instructions, excluding calls and indirects.",
324 "SampleAfterValue": "200003",
325 "CounterHTOff": "0,1,2,3,4,5,6,7"
326 },
327 {
328 "EventCode": "0x88",
329 "UMask": "0xc4",
330 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns",
331 "Counter": "0,1,2,3",
332 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
333 "PublicDescription": "This event counts both taken and not taken speculative and retired indirect branches excluding calls and return branches.",
334 "SampleAfterValue": "200003",
335 "CounterHTOff": "0,1,2,3,4,5,6,7"
336 },
337 {
338 "EventCode": "0x88",
339 "UMask": "0xc8",
340 "BriefDescription": "Speculative and retired indirect return branches.",
341 "Counter": "0,1,2,3",
342 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
343 "PublicDescription": "This event counts both taken and not taken speculative and retired indirect branches that have a return mnemonic.",
344 "SampleAfterValue": "200003",
345 "CounterHTOff": "0,1,2,3,4,5,6,7"
346 },
347 {
348 "EventCode": "0x88",
349 "UMask": "0xd0",
350 "BriefDescription": "Speculative and retired direct near calls",
351 "Counter": "0,1,2,3",
352 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
353 "PublicDescription": "This event counts both taken and not taken speculative and retired direct near calls.",
354 "SampleAfterValue": "200003",
355 "CounterHTOff": "0,1,2,3,4,5,6,7"
356 },
357 {
358 "EventCode": "0x88",
359 "UMask": "0xff",
360 "BriefDescription": "Speculative and retired branches",
361 "Counter": "0,1,2,3",
362 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
363 "PublicDescription": "This event counts both taken and not taken speculative and retired branch instructions.",
364 "SampleAfterValue": "200003",
365 "CounterHTOff": "0,1,2,3,4,5,6,7"
366 },
367 {
368 "EventCode": "0x89",
369 "UMask": "0x41",
370 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches",
371 "Counter": "0,1,2,3",
372 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
373 "PublicDescription": "This event counts not taken speculative and retired mispredicted macro conditional branch instructions.",
374 "SampleAfterValue": "200003",
375 "CounterHTOff": "0,1,2,3,4,5,6,7"
376 },
377 {
378 "EventCode": "0x89",
379 "UMask": "0x81",
380 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches",
381 "Counter": "0,1,2,3",
382 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
383 "PublicDescription": "This event counts taken speculative and retired mispredicted macro conditional branch instructions.",
384 "SampleAfterValue": "200003",
385 "CounterHTOff": "0,1,2,3,4,5,6,7"
386 },
387 {
388 "EventCode": "0x89",
389 "UMask": "0x84",
390 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns",
391 "Counter": "0,1,2,3",
392 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
393 "PublicDescription": "This event counts taken speculative and retired mispredicted indirect branches excluding calls and returns.",
394 "SampleAfterValue": "200003",
395 "CounterHTOff": "0,1,2,3,4,5,6,7"
396 },
397 {
398 "EventCode": "0x89",
399 "UMask": "0x88",
400 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic",
401 "Counter": "0,1,2,3",
402 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
403 "PublicDescription": "This event counts taken speculative and retired mispredicted indirect branches that have a return mnemonic.",
404 "SampleAfterValue": "200003",
405 "CounterHTOff": "0,1,2,3,4,5,6,7"
406 },
407 {
408 "EventCode": "0x89",
409 "UMask": "0xc1",
410 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
411 "Counter": "0,1,2,3",
412 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
413 "PublicDescription": "This event counts both taken and not taken speculative and retired mispredicted macro conditional branch instructions.",
414 "SampleAfterValue": "200003",
415 "CounterHTOff": "0,1,2,3,4,5,6,7"
416 },
417 {
418 "EventCode": "0x89",
419 "UMask": "0xc4",
420 "BriefDescription": "Mispredicted indirect branches excluding calls and returns",
421 "Counter": "0,1,2,3",
422 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
423 "PublicDescription": "This event counts both taken and not taken mispredicted indirect branches excluding calls and returns.",
424 "SampleAfterValue": "200003",
425 "CounterHTOff": "0,1,2,3,4,5,6,7"
426 },
427 {
428 "EventCode": "0x89",
429 "UMask": "0xff",
430 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
431 "Counter": "0,1,2,3",
432 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
433 "PublicDescription": "This event counts both taken and not taken speculative and retired mispredicted branch instructions.",
434 "SampleAfterValue": "200003",
435 "CounterHTOff": "0,1,2,3,4,5,6,7"
436 },
437 {
438 "EventCode": "0xA1",
439 "UMask": "0x1",
440 "BriefDescription": "Cycles per thread when uops are executed in port 0",
441 "Counter": "0,1,2,3",
442 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
443 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 0.",
444 "SampleAfterValue": "2000003",
445 "CounterHTOff": "0,1,2,3,4,5,6,7"
446 },
447 {
448 "EventCode": "0xA1",
449 "UMask": "0x2",
450 "BriefDescription": "Cycles per thread when uops are executed in port 1",
451 "Counter": "0,1,2,3",
452 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
453 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 1.",
454 "SampleAfterValue": "2000003",
455 "CounterHTOff": "0,1,2,3,4,5,6,7"
456 },
457 {
458 "EventCode": "0xA1",
459 "UMask": "0x4",
460 "BriefDescription": "Cycles per thread when uops are executed in port 2",
461 "Counter": "0,1,2,3",
462 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
463 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 2.",
464 "SampleAfterValue": "2000003",
465 "CounterHTOff": "0,1,2,3,4,5,6,7"
466 },
467 {
468 "EventCode": "0xA1",
469 "UMask": "0x8",
470 "BriefDescription": "Cycles per thread when uops are executed in port 3",
471 "Counter": "0,1,2,3",
472 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
473 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 3.",
474 "SampleAfterValue": "2000003",
475 "CounterHTOff": "0,1,2,3,4,5,6,7"
476 },
477 {
478 "EventCode": "0xA1",
479 "UMask": "0x10",
480 "BriefDescription": "Cycles per thread when uops are executed in port 4",
481 "Counter": "0,1,2,3",
482 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
483 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 4.",
484 "SampleAfterValue": "2000003",
485 "CounterHTOff": "0,1,2,3,4,5,6,7"
486 },
487 {
488 "EventCode": "0xA1",
489 "UMask": "0x20",
490 "BriefDescription": "Cycles per thread when uops are executed in port 5",
491 "Counter": "0,1,2,3",
492 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
493 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 5.",
494 "SampleAfterValue": "2000003",
495 "CounterHTOff": "0,1,2,3,4,5,6,7"
496 },
497 {
498 "EventCode": "0xA1",
499 "UMask": "0x40",
500 "BriefDescription": "Cycles per thread when uops are executed in port 6",
501 "Counter": "0,1,2,3",
502 "EventName": "UOPS_DISPATCHED_PORT.PORT_6",
503 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 6.",
504 "SampleAfterValue": "2000003",
505 "CounterHTOff": "0,1,2,3,4,5,6,7"
506 },
507 {
508 "EventCode": "0xA1",
509 "UMask": "0x80",
510 "BriefDescription": "Cycles per thread when uops are executed in port 7",
511 "Counter": "0,1,2,3",
512 "EventName": "UOPS_DISPATCHED_PORT.PORT_7",
513 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 7.",
514 "SampleAfterValue": "2000003",
515 "CounterHTOff": "0,1,2,3,4,5,6,7"
516 },
517 {
518 "EventCode": "0xA2",
519 "UMask": "0x1",
520 "BriefDescription": "Resource-related stall cycles",
521 "Counter": "0,1,2,3",
522 "EventName": "RESOURCE_STALLS.ANY",
523 "PublicDescription": "This event counts resource-related stall cycles. Reasons for stalls can be as follows:\n - *any* u-arch structure got full (LB, SB, RS, ROB, BOB, LM, Physical Register Reclaim Table (PRRT), or Physical History Table (PHT) slots)\n - *any* u-arch structure got empty (like INT/SIMD FreeLists)\n - FPU control word (FPCW), MXCSR\nand others. This counts cycles that the pipeline backend blocked uop delivery from the front end.",
524 "SampleAfterValue": "2000003",
525 "CounterHTOff": "0,1,2,3,4,5,6,7"
526 },
527 {
528 "EventCode": "0xA2",
529 "UMask": "0x4",
530 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
531 "Counter": "0,1,2,3",
532 "EventName": "RESOURCE_STALLS.RS",
533 "PublicDescription": "This event counts stall cycles caused by absence of eligible entries in the reservation station (RS). This may result from RS overflow, or from RS deallocation because of the RS array Write Port allocation scheme (each RS entry has two write ports instead of four. As a result, empty entries could not be used, although RS is not really full). This counts cycles that the pipeline backend blocked uop delivery from the front end.",
534 "SampleAfterValue": "2000003",
535 "CounterHTOff": "0,1,2,3,4,5,6,7"
536 },
537 {
538 "EventCode": "0xA2",
539 "UMask": "0x8",
540 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
541 "Counter": "0,1,2,3",
542 "EventName": "RESOURCE_STALLS.SB",
543 "PublicDescription": "This event counts stall cycles caused by the store buffer (SB) overflow (excluding draining from synch). This counts cycles that the pipeline backend blocked uop delivery from the front end.",
544 "SampleAfterValue": "2000003",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "EventCode": "0xA2",
549 "UMask": "0x10",
550 "BriefDescription": "Cycles stalled due to re-order buffer full.",
551 "Counter": "0,1,2,3",
552 "EventName": "RESOURCE_STALLS.ROB",
553 "PublicDescription": "This event counts ROB full stall cycles. This counts cycles that the pipeline backend blocked uop delivery from the front end.",
554 "SampleAfterValue": "2000003",
555 "CounterHTOff": "0,1,2,3,4,5,6,7"
556 },
557 {
558 "EventCode": "0xA3",
559 "UMask": "0x1",
560 "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
561 "Counter": "0,1,2,3",
562 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
563 "CounterMask": "1",
564 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand* load request missing the L2 cache.",
565 "SampleAfterValue": "2000003",
566 "CounterHTOff": "0,1,2,3,4,5,6,7"
567 },
568 {
569 "EventCode": "0xA3",
570 "UMask": "0x8",
571 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
572 "Counter": "2",
573 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
574 "CounterMask": "8",
575 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand load request missing the L1 data cache.",
576 "SampleAfterValue": "2000003",
577 "CounterHTOff": "2"
578 },
579 {
580 "EventCode": "0xA3",
581 "UMask": "0x2",
582 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
583 "Counter": "0,1,2,3",
584 "EventName": "CYCLE_ACTIVITY.CYCLES_LDM_PENDING",
585 "CounterMask": "2",
586 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand load request (that is cycles with non-completed load waiting for its data from memory subsystem).",
587 "SampleAfterValue": "2000003",
588 "CounterHTOff": "0,1,2,3,4,5,6,7"
589 },
590 {
591 "EventCode": "0xA3",
592 "UMask": "0x4",
593 "BriefDescription": "Total execution stalls",
594 "Counter": "0,1,2,3",
595 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_EXECUTE",
596 "CounterMask": "4",
597 "PublicDescription": "Counts number of cycles nothing is executed on any execution port.",
598 "SampleAfterValue": "2000003",
599 "CounterHTOff": "0,1,2,3"
600 },
601 {
602 "EventCode": "0xA3",
603 "UMask": "0x5",
604 "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
605 "Counter": "0,1,2,3",
606 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
607 "CounterMask": "5",
608 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand* load request missing the L2 cache.(as a footprint) * includes also L1 HW prefetch requests that may or may not be required by demands.",
609 "SampleAfterValue": "2000003",
610 "CounterHTOff": "0,1,2,3"
611 },
612 {
613 "EventCode": "0xA3",
614 "UMask": "0x6",
615 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
616 "Counter": "0,1,2,3",
617 "EventName": "CYCLE_ACTIVITY.STALLS_LDM_PENDING",
618 "CounterMask": "6",
619 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand load request.",
620 "SampleAfterValue": "2000003",
621 "CounterHTOff": "0,1,2,3"
622 },
623 {
624 "EventCode": "0xA3",
625 "UMask": "0xc",
626 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
627 "Counter": "2",
628 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
629 "CounterMask": "12",
630 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand load request missing the L1 data cache.",
631 "SampleAfterValue": "2000003",
632 "CounterHTOff": "2"
633 },
634 {
635 "EventCode": "0xA8",
636 "UMask": "0x1",
637 "BriefDescription": "Number of Uops delivered by the LSD.",
638 "Counter": "0,1,2,3",
639 "EventName": "LSD.UOPS",
640 "PublicDescription": "Number of Uops delivered by the LSD. ",
641 "SampleAfterValue": "2000003",
642 "CounterHTOff": "0,1,2,3,4,5,6,7"
643 },
644 {
645 "EventCode": "0xB1",
646 "UMask": "0x1",
647 "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
648 "Counter": "0,1,2,3",
649 "EventName": "UOPS_EXECUTED.THREAD",
650 "PublicDescription": "Number of uops to be executed per-thread each cycle.",
651 "SampleAfterValue": "2000003",
652 "CounterHTOff": "0,1,2,3,4,5,6,7"
653 },
654 {
655 "EventCode": "0xB1",
656 "UMask": "0x2",
657 "BriefDescription": "Number of uops executed on the core.",
658 "Counter": "0,1,2,3",
659 "EventName": "UOPS_EXECUTED.CORE",
660 "PublicDescription": "Number of uops executed from any thread.",
661 "SampleAfterValue": "2000003",
662 "CounterHTOff": "0,1,2,3,4,5,6,7"
663 },
664 {
665 "Invert": "1",
666 "EventCode": "0xB1",
667 "UMask": "0x1",
668 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
669 "Counter": "0,1,2,3",
670 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
671 "CounterMask": "1",
672 "PublicDescription": "This event counts cycles during which no uops were dispatched from the Reservation Station (RS) per thread.",
673 "SampleAfterValue": "2000003",
674 "CounterHTOff": "0,1,2,3"
675 },
676 {
677 "EventCode": "0xC0",
678 "UMask": "0x0",
679 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
680 "Counter": "0,1,2,3",
681 "EventName": "INST_RETIRED.ANY_P",
682 "Errata": "BDM61",
683 "PublicDescription": "This event counts the number of instructions (EOMs) retired. Counting covers macro-fused instructions individually (that is, increments by two).",
684 "SampleAfterValue": "2000003",
685 "CounterHTOff": "0,1,2,3,4,5,6,7"
686 },
687 {
688 "EventCode": "0xC0",
689 "UMask": "0x2",
690 "BriefDescription": "FP operations retired. X87 FP operations that have no exceptions:",
691 "Counter": "0,1,2,3",
692 "EventName": "INST_RETIRED.X87",
693 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts FP operations retired. For X87 FP operations that have no exceptions counting also includes flows that have several X87, or flows that use X87 uops in the exception handling.",
694 "SampleAfterValue": "2000003",
695 "CounterHTOff": "0,1,2,3,4,5,6,7"
696 },
697 {
698 "EventCode": "0xC0",
699 "UMask": "0x1",
700 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
701 "PEBS": "2",
702 "Counter": "1",
703 "EventName": "INST_RETIRED.PREC_DIST",
704 "Errata": "BDM11, BDM55",
705 "PublicDescription": "This is a precise version (that is, uses PEBS) of the event that counts instructions retired.",
706 "SampleAfterValue": "2000003",
707 "CounterHTOff": "1"
708 },
709 {
710 "EventCode": "0xC1",
711 "UMask": "0x40",
712 "BriefDescription": "Number of times any microcode assist is invoked by HW upon uop writeback.",
713 "Counter": "0,1,2,3",
714 "EventName": "OTHER_ASSISTS.ANY_WB_ASSIST",
715 "SampleAfterValue": "100003",
716 "CounterHTOff": "0,1,2,3,4,5,6,7"
717 },
718 {
719 "EventCode": "0xC2",
720 "UMask": "0x1",
721 "BriefDescription": "Actually retired uops.",
722 "Data_LA": "1",
723 "PEBS": "1",
724 "Counter": "0,1,2,3",
725 "EventName": "UOPS_RETIRED.ALL",
726 "PublicDescription": "This event counts all actually retired uops. Counting increments by two for micro-fused uops, and by one for macro-fused and other uops. Maximal increment value for one cycle is eight.",
727 "SampleAfterValue": "2000003",
728 "CounterHTOff": "0,1,2,3,4,5,6,7"
729 },
730 {
731 "EventCode": "0xC2",
732 "UMask": "0x2",
733 "BriefDescription": "Retirement slots used.",
734 "PEBS": "1",
735 "Counter": "0,1,2,3",
736 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
737 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of retirement slots used.",
738 "SampleAfterValue": "2000003",
739 "CounterHTOff": "0,1,2,3,4,5,6,7"
740 },
741 {
742 "Invert": "1",
743 "EventCode": "0xC2",
744 "UMask": "0x1",
745 "BriefDescription": "Cycles without actually retired uops.",
746 "Counter": "0,1,2,3",
747 "EventName": "UOPS_RETIRED.STALL_CYCLES",
748 "CounterMask": "1",
749 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts cycles without actually retired uops.",
750 "SampleAfterValue": "2000003",
751 "CounterHTOff": "0,1,2,3"
752 },
753 {
754 "Invert": "1",
755 "EventCode": "0xC2",
756 "UMask": "0x1",
757 "BriefDescription": "Cycles with less than 10 actually retired uops.",
758 "Counter": "0,1,2,3",
759 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
760 "CounterMask": "10",
761 "PublicDescription": "Number of cycles using always true condition (uops_ret < 16) applied to non PEBS uops retired event.",
762 "SampleAfterValue": "2000003",
763 "CounterHTOff": "0,1,2,3"
764 },
765 {
766 "EventCode": "0xC3",
767 "UMask": "0x1",
768 "BriefDescription": "Cycles there was a Nuke. Account for both thread-specific and All Thread Nukes.",
769 "Counter": "0,1,2,3",
770 "EventName": "MACHINE_CLEARS.CYCLES",
771 "PublicDescription": "This event counts both thread-specific (TS) and all-thread (AT) nukes.",
772 "SampleAfterValue": "2000003",
773 "CounterHTOff": "0,1,2,3,4,5,6,7"
774 },
775 {
776 "EventCode": "0xC3",
777 "UMask": "0x4",
778 "BriefDescription": "Self-modifying code (SMC) detected.",
779 "Counter": "0,1,2,3",
780 "EventName": "MACHINE_CLEARS.SMC",
781 "PublicDescription": "This event counts self-modifying code (SMC) detected, which causes a machine clear.",
782 "SampleAfterValue": "100003",
783 "CounterHTOff": "0,1,2,3,4,5,6,7"
784 },
785 {
786 "EventCode": "0xC3",
787 "UMask": "0x20",
788 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
789 "Counter": "0,1,2,3",
790 "EventName": "MACHINE_CLEARS.MASKMOV",
791 "PublicDescription": "Maskmov false fault - counts number of time ucode passes through Maskmov flow due to instruction's mask being 0 while the flow was completed without raising a fault.",
792 "SampleAfterValue": "100003",
793 "CounterHTOff": "0,1,2,3,4,5,6,7"
794 },
795 {
796 "EventCode": "0xC4",
797 "UMask": "0x1",
798 "BriefDescription": "Conditional branch instructions retired.",
799 "PEBS": "1",
800 "Counter": "0,1,2,3",
801 "EventName": "BR_INST_RETIRED.CONDITIONAL",
802 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts conditional branch instructions retired.",
803 "SampleAfterValue": "400009",
804 "CounterHTOff": "0,1,2,3,4,5,6,7"
805 },
806 {
807 "EventCode": "0xC4",
808 "UMask": "0x2",
809 "BriefDescription": "Direct and indirect near call instructions retired.",
810 "PEBS": "1",
811 "Counter": "0,1,2,3",
812 "EventName": "BR_INST_RETIRED.NEAR_CALL",
813 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts both direct and indirect near call instructions retired.",
814 "SampleAfterValue": "100007",
815 "CounterHTOff": "0,1,2,3,4,5,6,7"
816 },
817 {
818 "EventCode": "0xC4",
819 "UMask": "0x0",
820 "BriefDescription": "All (macro) branch instructions retired.",
821 "Counter": "0,1,2,3",
822 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
823 "PublicDescription": "This event counts all (macro) branch instructions retired.",
824 "SampleAfterValue": "400009",
825 "CounterHTOff": "0,1,2,3,4,5,6,7"
826 },
827 {
828 "EventCode": "0xC4",
829 "UMask": "0x8",
830 "BriefDescription": "Return instructions retired.",
831 "PEBS": "1",
832 "Counter": "0,1,2,3",
833 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
834 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts return instructions retired.",
835 "SampleAfterValue": "100007",
836 "CounterHTOff": "0,1,2,3,4,5,6,7"
837 },
838 {
839 "EventCode": "0xC4",
840 "UMask": "0x10",
841 "BriefDescription": "Not taken branch instructions retired.",
842 "Counter": "0,1,2,3",
843 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
844 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts not taken branch instructions retired.",
845 "SampleAfterValue": "400009",
846 "CounterHTOff": "0,1,2,3,4,5,6,7"
847 },
848 {
849 "EventCode": "0xC4",
850 "UMask": "0x20",
851 "BriefDescription": "Taken branch instructions retired.",
852 "PEBS": "1",
853 "Counter": "0,1,2,3",
854 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
855 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts taken branch instructions retired.",
856 "SampleAfterValue": "400009",
857 "CounterHTOff": "0,1,2,3,4,5,6,7"
858 },
859 {
860 "EventCode": "0xC4",
861 "UMask": "0x40",
862 "BriefDescription": "Far branch instructions retired.",
863 "Counter": "0,1,2,3",
864 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
865 "Errata": "BDW98",
866 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts far branch instructions retired.",
867 "SampleAfterValue": "100007",
868 "CounterHTOff": "0,1,2,3,4,5,6,7"
869 },
870 {
871 "EventCode": "0xC4",
872 "UMask": "0x4",
873 "BriefDescription": "All (macro) branch instructions retired. (Precise Event - PEBS)",
874 "PEBS": "2",
875 "Counter": "0,1,2,3",
876 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
877 "Errata": "BDW98",
878 "PublicDescription": "This is a precise version of BR_INST_RETIRED.ALL_BRANCHES that counts all (macro) branch instructions retired.",
879 "SampleAfterValue": "400009",
880 "CounterHTOff": "0,1,2,3"
881 },
882 {
883 "EventCode": "0xC5",
884 "UMask": "0x1",
885 "BriefDescription": "Mispredicted conditional branch instructions retired.",
886 "PEBS": "1",
887 "Counter": "0,1,2,3",
888 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
889 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted conditional branch instructions retired.",
890 "SampleAfterValue": "400009",
891 "CounterHTOff": "0,1,2,3,4,5,6,7"
892 },
893 {
894 "EventCode": "0xC5",
895 "UMask": "0x0",
896 "BriefDescription": "All mispredicted macro branch instructions retired.",
897 "Counter": "0,1,2,3",
898 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
899 "PublicDescription": "This event counts all mispredicted macro branch instructions retired.",
900 "SampleAfterValue": "400009",
901 "CounterHTOff": "0,1,2,3,4,5,6,7"
902 },
903 {
904 "EventCode": "0xC5",
905 "UMask": "0x8",
906 "BriefDescription": "This event counts the number of mispredicted ret instructions retired. Non PEBS",
907 "PEBS": "1",
908 "Counter": "0,1,2,3",
909 "EventName": "BR_MISP_RETIRED.RET",
910 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted return instructions retired.",
911 "SampleAfterValue": "100007",
912 "CounterHTOff": "0,1,2,3,4,5,6,7"
913 },
914 {
915 "EventCode": "0xC5",
916 "UMask": "0x4",
917 "BriefDescription": "Mispredicted macro branch instructions retired. (Precise Event - PEBS)",
918 "PEBS": "2",
919 "Counter": "0,1,2,3",
920 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
921 "PublicDescription": "This is a precise version of BR_MISP_RETIRED.ALL_BRANCHES that counts all mispredicted macro branch instructions retired.",
922 "SampleAfterValue": "400009",
923 "CounterHTOff": "0,1,2,3"
924 },
925 {
926 "EventCode": "0xCC",
927 "UMask": "0x20",
928 "BriefDescription": "Count cases of saving new LBR",
929 "Counter": "0,1,2,3",
930 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
931 "PublicDescription": "This event counts cases of saving new LBR records by hardware. This assumes proper enabling of LBRs and takes into account LBR filtering done by the LBR_SELECT register.",
932 "SampleAfterValue": "2000003",
933 "CounterHTOff": "0,1,2,3,4,5,6,7"
934 },
935 {
936 "EventCode": "0x3C",
937 "UMask": "0x0",
938 "BriefDescription": "Thread cycles when thread is not in halt state",
939 "Counter": "0,1,2,3",
940 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
941 "PublicDescription": "This is an architectural event that counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling. For this reason, this event may have a changing ratio with regards to wall clock time.",
942 "SampleAfterValue": "2000003",
943 "CounterHTOff": "0,1,2,3,4,5,6,7"
944 },
945 {
946 "EventCode": "0x89",
947 "UMask": "0xa0",
948 "BriefDescription": "Taken speculative and retired mispredicted indirect calls.",
949 "Counter": "0,1,2,3",
950 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
951 "SampleAfterValue": "200003",
952 "CounterHTOff": "0,1,2,3,4,5,6,7"
953 },
954 {
955 "EventCode": "0xA1",
956 "UMask": "0x1",
957 "BriefDescription": "Cycles per core when uops are exectuted in port 0.",
958 "Counter": "0,1,2,3",
959 "EventName": "UOPS_EXECUTED_PORT.PORT_0_CORE",
960 "AnyThread": "1",
961 "SampleAfterValue": "2000003",
962 "CounterHTOff": "0,1,2,3,4,5,6,7"
963 },
964 {
965 "EventCode": "0xA1",
966 "UMask": "0x2",
967 "BriefDescription": "Cycles per core when uops are exectuted in port 1.",
968 "Counter": "0,1,2,3",
969 "EventName": "UOPS_EXECUTED_PORT.PORT_1_CORE",
970 "AnyThread": "1",
971 "SampleAfterValue": "2000003",
972 "CounterHTOff": "0,1,2,3,4,5,6,7"
973 },
974 {
975 "EventCode": "0xA1",
976 "UMask": "0x4",
977 "BriefDescription": "Cycles per core when uops are dispatched to port 2.",
978 "Counter": "0,1,2,3",
979 "EventName": "UOPS_EXECUTED_PORT.PORT_2_CORE",
980 "AnyThread": "1",
981 "SampleAfterValue": "2000003",
982 "CounterHTOff": "0,1,2,3,4,5,6,7"
983 },
984 {
985 "EventCode": "0xA1",
986 "UMask": "0x8",
987 "BriefDescription": "Cycles per core when uops are dispatched to port 3.",
988 "Counter": "0,1,2,3",
989 "EventName": "UOPS_EXECUTED_PORT.PORT_3_CORE",
990 "AnyThread": "1",
991 "SampleAfterValue": "2000003",
992 "CounterHTOff": "0,1,2,3,4,5,6,7"
993 },
994 {
995 "EventCode": "0xA1",
996 "UMask": "0x10",
997 "BriefDescription": "Cycles per core when uops are exectuted in port 4.",
998 "Counter": "0,1,2,3",
999 "EventName": "UOPS_EXECUTED_PORT.PORT_4_CORE",
1000 "AnyThread": "1",
1001 "SampleAfterValue": "2000003",
1002 "CounterHTOff": "0,1,2,3,4,5,6,7"
1003 },
1004 {
1005 "EventCode": "0xA1",
1006 "UMask": "0x20",
1007 "BriefDescription": "Cycles per core when uops are exectuted in port 5.",
1008 "Counter": "0,1,2,3",
1009 "EventName": "UOPS_EXECUTED_PORT.PORT_5_CORE",
1010 "AnyThread": "1",
1011 "SampleAfterValue": "2000003",
1012 "CounterHTOff": "0,1,2,3,4,5,6,7"
1013 },
1014 {
1015 "EventCode": "0xA1",
1016 "UMask": "0x40",
1017 "BriefDescription": "Cycles per core when uops are exectuted in port 6.",
1018 "Counter": "0,1,2,3",
1019 "EventName": "UOPS_EXECUTED_PORT.PORT_6_CORE",
1020 "AnyThread": "1",
1021 "SampleAfterValue": "2000003",
1022 "CounterHTOff": "0,1,2,3,4,5,6,7"
1023 },
1024 {
1025 "EventCode": "0xA1",
1026 "UMask": "0x80",
1027 "BriefDescription": "Cycles per core when uops are dispatched to port 7.",
1028 "Counter": "0,1,2,3",
1029 "EventName": "UOPS_EXECUTED_PORT.PORT_7_CORE",
1030 "AnyThread": "1",
1031 "SampleAfterValue": "2000003",
1032 "CounterHTOff": "0,1,2,3,4,5,6,7"
1033 },
1034 {
1035 "EventCode": "0xC5",
1036 "UMask": "0x20",
1037 "BriefDescription": "number of near branch instructions retired that were mispredicted and taken.",
1038 "PEBS": "1",
1039 "Counter": "0,1,2,3",
1040 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
1041 "PublicDescription": "Number of near branch instructions retired that were mispredicted and taken.",
1042 "SampleAfterValue": "400009",
1043 "CounterHTOff": "0,1,2,3,4,5,6,7"
1044 },
1045 {
1046 "EventCode": "0xB1",
1047 "UMask": "0x1",
1048 "BriefDescription": "Cycles where at least 1 uop was executed per-thread.",
1049 "Counter": "0,1,2,3",
1050 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
1051 "CounterMask": "1",
1052 "SampleAfterValue": "2000003",
1053 "CounterHTOff": "0,1,2,3"
1054 },
1055 {
1056 "EventCode": "0xB1",
1057 "UMask": "0x1",
1058 "BriefDescription": "Cycles where at least 2 uops were executed per-thread.",
1059 "Counter": "0,1,2,3",
1060 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
1061 "CounterMask": "2",
1062 "SampleAfterValue": "2000003",
1063 "CounterHTOff": "0,1,2,3"
1064 },
1065 {
1066 "EventCode": "0xB1",
1067 "UMask": "0x1",
1068 "BriefDescription": "Cycles where at least 3 uops were executed per-thread.",
1069 "Counter": "0,1,2,3",
1070 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
1071 "CounterMask": "3",
1072 "SampleAfterValue": "2000003",
1073 "CounterHTOff": "0,1,2,3"
1074 },
1075 {
1076 "EventCode": "0xB1",
1077 "UMask": "0x1",
1078 "BriefDescription": "Cycles where at least 4 uops were executed per-thread.",
1079 "Counter": "0,1,2,3",
1080 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
1081 "CounterMask": "4",
1082 "SampleAfterValue": "2000003",
1083 "CounterHTOff": "0,1,2,3"
1084 },
1085 {
1086 "EventCode": "0xe6",
1087 "UMask": "0x1f",
1088 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1089 "Counter": "0,1,2,3",
1090 "EventName": "BACLEARS.ANY",
1091 "SampleAfterValue": "100003",
1092 "CounterHTOff": "0,1,2,3,4,5,6,7"
1093 },
1094 {
1095 "EventCode": "0xA3",
1096 "UMask": "0x8",
1097 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
1098 "Counter": "2",
1099 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
1100 "CounterMask": "8",
1101 "SampleAfterValue": "2000003",
1102 "CounterHTOff": "2"
1103 },
1104 {
1105 "EventCode": "0xA3",
1106 "UMask": "0x1",
1107 "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
1108 "Counter": "0,1,2,3",
1109 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
1110 "CounterMask": "1",
1111 "SampleAfterValue": "2000003",
1112 "CounterHTOff": "0,1,2,3,4,5,6,7"
1113 },
1114 {
1115 "EventCode": "0xA3",
1116 "UMask": "0x2",
1117 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
1118 "Counter": "0,1,2,3",
1119 "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
1120 "CounterMask": "2",
1121 "SampleAfterValue": "2000003",
1122 "CounterHTOff": "0,1,2,3"
1123 },
1124 {
1125 "EventCode": "0xA3",
1126 "UMask": "0x4",
1127 "BriefDescription": "Total execution stalls.",
1128 "Counter": "0,1,2,3",
1129 "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
1130 "CounterMask": "4",
1131 "SampleAfterValue": "2000003",
1132 "CounterHTOff": "0,1,2,3,4,5,6,7"
1133 },
1134 {
1135 "EventCode": "0xA3",
1136 "UMask": "0xc",
1137 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
1138 "Counter": "2",
1139 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
1140 "CounterMask": "12",
1141 "SampleAfterValue": "2000003",
1142 "CounterHTOff": "2"
1143 },
1144 {
1145 "EventCode": "0xA3",
1146 "UMask": "0x5",
1147 "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
1148 "Counter": "0,1,2,3",
1149 "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
1150 "CounterMask": "5",
1151 "SampleAfterValue": "2000003",
1152 "CounterHTOff": "0,1,2,3,4,5,6,7"
1153 },
1154 {
1155 "EventCode": "0xA3",
1156 "UMask": "0x6",
1157 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
1158 "Counter": "0,1,2,3",
1159 "EventName": "CYCLE_ACTIVITY.STALLS_MEM_ANY",
1160 "CounterMask": "6",
1161 "SampleAfterValue": "2000003",
1162 "CounterHTOff": "0,1,2,3,4,5,6,7"
1163 },
1164 {
1165 "EdgeDetect": "1",
1166 "EventCode": "0xC3",
1167 "UMask": "0x1",
1168 "BriefDescription": "Number of machine clears (nukes) of any type.",
1169 "Counter": "0,1,2,3",
1170 "EventName": "MACHINE_CLEARS.COUNT",
1171 "CounterMask": "1",
1172 "SampleAfterValue": "100003",
1173 "CounterHTOff": "0,1,2,3,4,5,6,7"
1174 },
1175 {
1176 "EventCode": "0xA8",
1177 "UMask": "0x1",
1178 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1179 "Counter": "0,1,2,3",
1180 "EventName": "LSD.CYCLES_4_UOPS",
1181 "CounterMask": "4",
1182 "SampleAfterValue": "2000003",
1183 "CounterHTOff": "0,1,2,3,4,5,6,7"
1184 },
1185 {
1186 "EdgeDetect": "1",
1187 "Invert": "1",
1188 "EventCode": "0x5E",
1189 "UMask": "0x1",
1190 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1191 "Counter": "0,1,2,3",
1192 "EventName": "RS_EVENTS.EMPTY_END",
1193 "CounterMask": "1",
1194 "SampleAfterValue": "200003",
1195 "CounterHTOff": "0,1,2,3,4,5,6,7"
1196 },
1197 {
1198 "EventCode": "0xA8",
1199 "UMask": "0x1",
1200 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
1201 "Counter": "0,1,2,3",
1202 "EventName": "LSD.CYCLES_ACTIVE",
1203 "CounterMask": "1",
1204 "SampleAfterValue": "2000003",
1205 "CounterHTOff": "0,1,2,3,4,5,6,7"
1206 },
1207 {
1208 "EventCode": "0xA1",
1209 "UMask": "0x1",
1210 "BriefDescription": "Cycles per thread when uops are executed in port 0",
1211 "Counter": "0,1,2,3",
1212 "EventName": "UOPS_EXECUTED_PORT.PORT_0",
1213 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 0.",
1214 "SampleAfterValue": "2000003",
1215 "CounterHTOff": "0,1,2,3,4,5,6,7"
1216 },
1217 {
1218 "EventCode": "0xA1",
1219 "UMask": "0x2",
1220 "BriefDescription": "Cycles per thread when uops are executed in port 1",
1221 "Counter": "0,1,2,3",
1222 "EventName": "UOPS_EXECUTED_PORT.PORT_1",
1223 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 1.",
1224 "SampleAfterValue": "2000003",
1225 "CounterHTOff": "0,1,2,3,4,5,6,7"
1226 },
1227 {
1228 "EventCode": "0xA1",
1229 "UMask": "0x4",
1230 "BriefDescription": "Cycles per thread when uops are executed in port 2",
1231 "Counter": "0,1,2,3",
1232 "EventName": "UOPS_EXECUTED_PORT.PORT_2",
1233 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 2.",
1234 "SampleAfterValue": "2000003",
1235 "CounterHTOff": "0,1,2,3,4,5,6,7"
1236 },
1237 {
1238 "EventCode": "0xA1",
1239 "UMask": "0x8",
1240 "BriefDescription": "Cycles per thread when uops are executed in port 3",
1241 "Counter": "0,1,2,3",
1242 "EventName": "UOPS_EXECUTED_PORT.PORT_3",
1243 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 3.",
1244 "SampleAfterValue": "2000003",
1245 "CounterHTOff": "0,1,2,3,4,5,6,7"
1246 },
1247 {
1248 "EventCode": "0xA1",
1249 "UMask": "0x10",
1250 "BriefDescription": "Cycles per thread when uops are executed in port 4",
1251 "Counter": "0,1,2,3",
1252 "EventName": "UOPS_EXECUTED_PORT.PORT_4",
1253 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 4.",
1254 "SampleAfterValue": "2000003",
1255 "CounterHTOff": "0,1,2,3,4,5,6,7"
1256 },
1257 {
1258 "EventCode": "0xA1",
1259 "UMask": "0x20",
1260 "BriefDescription": "Cycles per thread when uops are executed in port 5",
1261 "Counter": "0,1,2,3",
1262 "EventName": "UOPS_EXECUTED_PORT.PORT_5",
1263 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 5.",
1264 "SampleAfterValue": "2000003",
1265 "CounterHTOff": "0,1,2,3,4,5,6,7"
1266 },
1267 {
1268 "EventCode": "0xA1",
1269 "UMask": "0x40",
1270 "BriefDescription": "Cycles per thread when uops are executed in port 6",
1271 "Counter": "0,1,2,3",
1272 "EventName": "UOPS_EXECUTED_PORT.PORT_6",
1273 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 6.",
1274 "SampleAfterValue": "2000003",
1275 "CounterHTOff": "0,1,2,3,4,5,6,7"
1276 },
1277 {
1278 "EventCode": "0xA1",
1279 "UMask": "0x80",
1280 "BriefDescription": "Cycles per thread when uops are executed in port 7",
1281 "Counter": "0,1,2,3",
1282 "EventName": "UOPS_EXECUTED_PORT.PORT_7",
1283 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 7.",
1284 "SampleAfterValue": "2000003",
1285 "CounterHTOff": "0,1,2,3,4,5,6,7"
1286 },
1287 {
1288 "EventCode": "0xA0",
1289 "UMask": "0x3",
1290 "BriefDescription": "Micro-op dispatches cancelled due to insufficient SIMD physical register file read ports",
1291 "Counter": "0,1,2,3",
1292 "EventName": "UOP_DISPATCHES_CANCELLED.SIMD_PRF",
1293 "PublicDescription": "This event counts the number of micro-operations cancelled after they were dispatched from the scheduler to the execution units when the total number of physical register read ports across all dispatch ports exceeds the read bandwidth of the physical register file. The SIMD_PRF subevent applies to the following instructions: VDPPS, DPPS, VPCMPESTRI, PCMPESTRI, VPCMPESTRM, PCMPESTRM, VFMADD*, VFMADDSUB*, VFMSUB*, VMSUBADD*, VFNMADD*, VFNMSUB*. See the Broadwell Optimization Guide for more information.",
1294 "SampleAfterValue": "2000003",
1295 "CounterHTOff": "0,1,2,3"
1296 },
1297 {
1298 "EventCode": "0x00",
1299 "UMask": "0x2",
1300 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1301 "Counter": "Fixed counter 2",
1302 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1303 "AnyThread": "1",
1304 "SampleAfterValue": "2000003",
1305 "CounterHTOff": "Fixed counter 2"
1306 },
1307 {
1308 "EventCode": "0x3C",
1309 "UMask": "0x0",
1310 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1311 "Counter": "0,1,2,3",
1312 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1313 "AnyThread": "1",
1314 "SampleAfterValue": "2000003",
1315 "CounterHTOff": "0,1,2,3,4,5,6,7"
1316 },
1317 {
1318 "EventCode": "0x3C",
1319 "UMask": "0x1",
1320 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1321 "Counter": "0,1,2,3",
1322 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1323 "AnyThread": "1",
1324 "SampleAfterValue": "2000003",
1325 "CounterHTOff": "0,1,2,3,4,5,6,7"
1326 },
1327 {
1328 "EventCode": "0x0D",
1329 "UMask": "0x3",
1330 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1331 "Counter": "0,1,2,3",
1332 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1333 "AnyThread": "1",
1334 "CounterMask": "1",
1335 "SampleAfterValue": "2000003",
1336 "CounterHTOff": "0,1,2,3,4,5,6,7"
1337 },
1338 {
1339 "EventCode": "0xb1",
1340 "UMask": "0x2",
1341 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1342 "Counter": "0,1,2,3",
1343 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1344 "CounterMask": "1",
1345 "SampleAfterValue": "2000003",
1346 "CounterHTOff": "0,1,2,3,4,5,6,7"
1347 },
1348 {
1349 "EventCode": "0xb1",
1350 "UMask": "0x2",
1351 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1352 "Counter": "0,1,2,3",
1353 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1354 "CounterMask": "2",
1355 "SampleAfterValue": "2000003",
1356 "CounterHTOff": "0,1,2,3,4,5,6,7"
1357 },
1358 {
1359 "EventCode": "0xb1",
1360 "UMask": "0x2",
1361 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1362 "Counter": "0,1,2,3",
1363 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1364 "CounterMask": "3",
1365 "SampleAfterValue": "2000003",
1366 "CounterHTOff": "0,1,2,3,4,5,6,7"
1367 },
1368 {
1369 "EventCode": "0xb1",
1370 "UMask": "0x2",
1371 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1372 "Counter": "0,1,2,3",
1373 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1374 "CounterMask": "4",
1375 "SampleAfterValue": "2000003",
1376 "CounterHTOff": "0,1,2,3,4,5,6,7"
1377 },
1378 {
1379 "Invert": "1",
1380 "EventCode": "0xb1",
1381 "UMask": "0x2",
1382 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1383 "Counter": "0,1,2,3",
1384 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1385 "SampleAfterValue": "2000003",
1386 "CounterHTOff": "0,1,2,3,4,5,6,7"
1387 },
1388 {
1389 "EventCode": "0x3C",
1390 "UMask": "0x1",
1391 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1392 "Counter": "0,1,2,3",
1393 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1394 "PublicDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate).",
1395 "SampleAfterValue": "2000003",
1396 "CounterHTOff": "0,1,2,3,4,5,6,7"
1397 },
1398 {
1399 "EventCode": "0x3C",
1400 "UMask": "0x1",
1401 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1402 "Counter": "0,1,2,3",
1403 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1404 "AnyThread": "1",
1405 "SampleAfterValue": "2000003",
1406 "CounterHTOff": "0,1,2,3,4,5,6,7"
1407 },
1408 {
1409 "EventCode": "0x3C",
1410 "UMask": "0x2",
1411 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1412 "Counter": "0,1,2,3",
1413 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1414 "SampleAfterValue": "2000003",
1415 "CounterHTOff": "0,1,2,3,4,5,6,7"
1416 }
1417] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/virtual-memory.json b/tools/perf/pmu-events/arch/x86/broadwellde/virtual-memory.json
new file mode 100644
index 000000000000..5ce8b67ba076
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/virtual-memory.json
@@ -0,0 +1,388 @@
1[
2 {
3 "EventCode": "0x08",
4 "UMask": "0x1",
5 "BriefDescription": "Load misses in all DTLB levels that cause page walks",
6 "Counter": "0,1,2,3",
7 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
8 "Errata": "BDM69",
9 "PublicDescription": "This event counts load misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
10 "SampleAfterValue": "100003",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "EventCode": "0x08",
15 "UMask": "0x2",
16 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (4K).",
17 "Counter": "0,1,2,3",
18 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
19 "Errata": "BDM69",
20 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
21 "SampleAfterValue": "2000003",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "EventCode": "0x08",
26 "UMask": "0x4",
27 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (2M/4M).",
28 "Counter": "0,1,2,3",
29 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
30 "Errata": "BDM69",
31 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
32 "SampleAfterValue": "2000003",
33 "CounterHTOff": "0,1,2,3,4,5,6,7"
34 },
35 {
36 "EventCode": "0x08",
37 "UMask": "0x8",
38 "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (1G)",
39 "Counter": "0,1,2,3",
40 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1G",
41 "Errata": "BDM69",
42 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
43 "SampleAfterValue": "2000003",
44 "CounterHTOff": "0,1,2,3,4,5,6,7"
45 },
46 {
47 "EventCode": "0x08",
48 "UMask": "0x10",
49 "BriefDescription": "Cycles when PMH is busy with page walks",
50 "Counter": "0,1,2,3",
51 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
52 "Errata": "BDM69",
53 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
54 "SampleAfterValue": "2000003",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "EventCode": "0x08",
59 "UMask": "0x20",
60 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (4K).",
61 "Counter": "0,1,2,3",
62 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_4K",
63 "SampleAfterValue": "2000003",
64 "CounterHTOff": "0,1,2,3,4,5,6,7"
65 },
66 {
67 "EventCode": "0x08",
68 "UMask": "0x40",
69 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (2M).",
70 "Counter": "0,1,2,3",
71 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_2M",
72 "SampleAfterValue": "2000003",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "EventCode": "0x49",
77 "UMask": "0x1",
78 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
79 "Counter": "0,1,2,3",
80 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
81 "Errata": "BDM69",
82 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
83 "SampleAfterValue": "100003",
84 "CounterHTOff": "0,1,2,3,4,5,6,7"
85 },
86 {
87 "EventCode": "0x49",
88 "UMask": "0x2",
89 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (4K)",
90 "Counter": "0,1,2,3",
91 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
92 "Errata": "BDM69",
93 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
94 "SampleAfterValue": "100003",
95 "CounterHTOff": "0,1,2,3,4,5,6,7"
96 },
97 {
98 "EventCode": "0x49",
99 "UMask": "0x4",
100 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (2M/4M)",
101 "Counter": "0,1,2,3",
102 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
103 "Errata": "BDM69",
104 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
105 "SampleAfterValue": "100003",
106 "CounterHTOff": "0,1,2,3,4,5,6,7"
107 },
108 {
109 "EventCode": "0x49",
110 "UMask": "0x8",
111 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (1G)",
112 "Counter": "0,1,2,3",
113 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1G",
114 "Errata": "BDM69",
115 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
116 "SampleAfterValue": "100003",
117 "CounterHTOff": "0,1,2,3,4,5,6,7"
118 },
119 {
120 "EventCode": "0x49",
121 "UMask": "0x10",
122 "BriefDescription": "Cycles when PMH is busy with page walks",
123 "Counter": "0,1,2,3",
124 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
125 "Errata": "BDM69",
126 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
127 "SampleAfterValue": "100003",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "EventCode": "0x49",
132 "UMask": "0x20",
133 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (4K).",
134 "Counter": "0,1,2,3",
135 "EventName": "DTLB_STORE_MISSES.STLB_HIT_4K",
136 "SampleAfterValue": "100003",
137 "CounterHTOff": "0,1,2,3,4,5,6,7"
138 },
139 {
140 "EventCode": "0x49",
141 "UMask": "0x40",
142 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (2M).",
143 "Counter": "0,1,2,3",
144 "EventName": "DTLB_STORE_MISSES.STLB_HIT_2M",
145 "SampleAfterValue": "100003",
146 "CounterHTOff": "0,1,2,3,4,5,6,7"
147 },
148 {
149 "EventCode": "0x4F",
150 "UMask": "0x10",
151 "BriefDescription": "Cycle count for an Extended Page table walk.",
152 "Counter": "0,1,2,3",
153 "EventName": "EPT.WALK_CYCLES",
154 "PublicDescription": "This event counts cycles for an extended page table walk. The Extended Page directory cache differs from standard TLB caches by the operating system that use it. Virtual machine operating systems use the extended page directory cache, while guest operating systems use the standard TLB caches.",
155 "SampleAfterValue": "2000003",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "EventCode": "0x85",
160 "UMask": "0x1",
161 "BriefDescription": "Misses at all ITLB levels that cause page walks",
162 "Counter": "0,1,2,3",
163 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
164 "Errata": "BDM69",
165 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
166 "SampleAfterValue": "100003",
167 "CounterHTOff": "0,1,2,3,4,5,6,7"
168 },
169 {
170 "EventCode": "0x85",
171 "UMask": "0x2",
172 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (4K)",
173 "Counter": "0,1,2,3",
174 "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
175 "Errata": "BDM69",
176 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
177 "SampleAfterValue": "100003",
178 "CounterHTOff": "0,1,2,3,4,5,6,7"
179 },
180 {
181 "EventCode": "0x85",
182 "UMask": "0x4",
183 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (2M/4M)",
184 "Counter": "0,1,2,3",
185 "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
186 "Errata": "BDM69",
187 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
188 "SampleAfterValue": "100003",
189 "CounterHTOff": "0,1,2,3,4,5,6,7"
190 },
191 {
192 "EventCode": "0x85",
193 "UMask": "0x8",
194 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (1G)",
195 "Counter": "0,1,2,3",
196 "EventName": "ITLB_MISSES.WALK_COMPLETED_1G",
197 "Errata": "BDM69",
198 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
199 "SampleAfterValue": "100003",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "EventCode": "0x85",
204 "UMask": "0x10",
205 "BriefDescription": "Cycles when PMH is busy with page walks",
206 "Counter": "0,1,2,3",
207 "EventName": "ITLB_MISSES.WALK_DURATION",
208 "Errata": "BDM69",
209 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
210 "SampleAfterValue": "100003",
211 "CounterHTOff": "0,1,2,3,4,5,6,7"
212 },
213 {
214 "EventCode": "0x85",
215 "UMask": "0x20",
216 "BriefDescription": "Core misses that miss the DTLB and hit the STLB (4K).",
217 "Counter": "0,1,2,3",
218 "EventName": "ITLB_MISSES.STLB_HIT_4K",
219 "SampleAfterValue": "100003",
220 "CounterHTOff": "0,1,2,3,4,5,6,7"
221 },
222 {
223 "EventCode": "0x85",
224 "UMask": "0x40",
225 "BriefDescription": "Code misses that miss the DTLB and hit the STLB (2M).",
226 "Counter": "0,1,2,3",
227 "EventName": "ITLB_MISSES.STLB_HIT_2M",
228 "SampleAfterValue": "100003",
229 "CounterHTOff": "0,1,2,3,4,5,6,7"
230 },
231 {
232 "EventCode": "0xAE",
233 "UMask": "0x1",
234 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
235 "Counter": "0,1,2,3",
236 "EventName": "ITLB.ITLB_FLUSH",
237 "PublicDescription": "This event counts the number of flushes of the big or small ITLB pages. Counting include both TLB Flush (covering all sets) and TLB Set Clear (set-specific).",
238 "SampleAfterValue": "100007",
239 "CounterHTOff": "0,1,2,3,4,5,6,7"
240 },
241 {
242 "EventCode": "0xBC",
243 "UMask": "0x11",
244 "BriefDescription": "Number of DTLB page walker hits in the L1+FB.",
245 "Counter": "0,1,2,3",
246 "EventName": "PAGE_WALKER_LOADS.DTLB_L1",
247 "Errata": "BDM69, BDM98",
248 "SampleAfterValue": "2000003",
249 "CounterHTOff": "0,1,2,3"
250 },
251 {
252 "EventCode": "0xBC",
253 "UMask": "0x21",
254 "BriefDescription": "Number of ITLB page walker hits in the L1+FB.",
255 "Counter": "0,1,2,3",
256 "EventName": "PAGE_WALKER_LOADS.ITLB_L1",
257 "Errata": "BDM69, BDM98",
258 "SampleAfterValue": "2000003",
259 "CounterHTOff": "0,1,2,3"
260 },
261 {
262 "EventCode": "0xBC",
263 "UMask": "0x12",
264 "BriefDescription": "Number of DTLB page walker hits in the L2.",
265 "Counter": "0,1,2,3",
266 "EventName": "PAGE_WALKER_LOADS.DTLB_L2",
267 "Errata": "BDM69, BDM98",
268 "SampleAfterValue": "2000003",
269 "CounterHTOff": "0,1,2,3"
270 },
271 {
272 "EventCode": "0xBC",
273 "UMask": "0x22",
274 "BriefDescription": "Number of ITLB page walker hits in the L2.",
275 "Counter": "0,1,2,3",
276 "EventName": "PAGE_WALKER_LOADS.ITLB_L2",
277 "Errata": "BDM69, BDM98",
278 "SampleAfterValue": "2000003",
279 "CounterHTOff": "0,1,2,3"
280 },
281 {
282 "EventCode": "0xBC",
283 "UMask": "0x14",
284 "BriefDescription": "Number of DTLB page walker hits in the L3 + XSNP.",
285 "Counter": "0,1,2,3",
286 "EventName": "PAGE_WALKER_LOADS.DTLB_L3",
287 "Errata": "BDM69, BDM98",
288 "SampleAfterValue": "2000003",
289 "CounterHTOff": "0,1,2,3"
290 },
291 {
292 "EventCode": "0xBC",
293 "UMask": "0x24",
294 "BriefDescription": "Number of ITLB page walker hits in the L3 + XSNP.",
295 "Counter": "0,1,2,3",
296 "EventName": "PAGE_WALKER_LOADS.ITLB_L3",
297 "Errata": "BDM69, BDM98",
298 "SampleAfterValue": "2000003",
299 "CounterHTOff": "0,1,2,3"
300 },
301 {
302 "EventCode": "0xBC",
303 "UMask": "0x18",
304 "BriefDescription": "Number of DTLB page walker hits in Memory.",
305 "Counter": "0,1,2,3",
306 "EventName": "PAGE_WALKER_LOADS.DTLB_MEMORY",
307 "Errata": "BDM69, BDM98",
308 "SampleAfterValue": "2000003",
309 "CounterHTOff": "0,1,2,3"
310 },
311 {
312 "EventCode": "0xBD",
313 "UMask": "0x1",
314 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
315 "Counter": "0,1,2,3",
316 "EventName": "TLB_FLUSH.DTLB_THREAD",
317 "PublicDescription": "This event counts the number of DTLB flush attempts of the thread-specific entries.",
318 "SampleAfterValue": "100007",
319 "CounterHTOff": "0,1,2,3,4,5,6,7"
320 },
321 {
322 "EventCode": "0xBD",
323 "UMask": "0x20",
324 "BriefDescription": "STLB flush attempts",
325 "Counter": "0,1,2,3",
326 "EventName": "TLB_FLUSH.STLB_ANY",
327 "PublicDescription": "This event counts the number of any STLB flush attempts (such as entire, VPID, PCID, InvPage, CR3 write, and so on).",
328 "SampleAfterValue": "100007",
329 "CounterHTOff": "0,1,2,3,4,5,6,7"
330 },
331 {
332 "EventCode": "0x08",
333 "UMask": "0xe",
334 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
335 "Counter": "0,1,2,3",
336 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
337 "Errata": "BDM69",
338 "SampleAfterValue": "100003",
339 "CounterHTOff": "0,1,2,3,4,5,6,7"
340 },
341 {
342 "EventCode": "0x08",
343 "UMask": "0x60",
344 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks.",
345 "Counter": "0,1,2,3",
346 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
347 "SampleAfterValue": "2000003",
348 "CounterHTOff": "0,1,2,3,4,5,6,7"
349 },
350 {
351 "EventCode": "0x49",
352 "UMask": "0xe",
353 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks.",
354 "Counter": "0,1,2,3",
355 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
356 "Errata": "BDM69",
357 "SampleAfterValue": "100003",
358 "CounterHTOff": "0,1,2,3,4,5,6,7"
359 },
360 {
361 "EventCode": "0x49",
362 "UMask": "0x60",
363 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
364 "Counter": "0,1,2,3",
365 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
366 "SampleAfterValue": "100003",
367 "CounterHTOff": "0,1,2,3,4,5,6,7"
368 },
369 {
370 "EventCode": "0x85",
371 "UMask": "0xe",
372 "BriefDescription": "Misses in all ITLB levels that cause completed page walks.",
373 "Counter": "0,1,2,3",
374 "EventName": "ITLB_MISSES.WALK_COMPLETED",
375 "Errata": "BDM69",
376 "SampleAfterValue": "100003",
377 "CounterHTOff": "0,1,2,3,4,5,6,7"
378 },
379 {
380 "EventCode": "0x85",
381 "UMask": "0x60",
382 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks.",
383 "Counter": "0,1,2,3",
384 "EventName": "ITLB_MISSES.STLB_HIT",
385 "SampleAfterValue": "100003",
386 "CounterHTOff": "0,1,2,3,4,5,6,7"
387 }
388] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/cache.json b/tools/perf/pmu-events/arch/x86/broadwellx/cache.json
new file mode 100644
index 000000000000..d1d043829b95
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/cache.json
@@ -0,0 +1,942 @@
1[
2 {
3 "EventCode": "0x24",
4 "UMask": "0x21",
5 "BriefDescription": "Demand Data Read miss L2, no rejects",
6 "Counter": "0,1,2,3",
7 "EventName": "L2_RQSTS.DEMAND_DATA_RD_MISS",
8 "PublicDescription": "This event counts the number of demand Data Read requests that miss L2 cache. Only not rejected loads are counted.",
9 "SampleAfterValue": "200003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x24",
14 "UMask": "0x41",
15 "BriefDescription": "Demand Data Read requests that hit L2 cache",
16 "Counter": "0,1,2,3",
17 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
18 "PublicDescription": "This event counts the number of demand Data Read requests that hit L2 cache. Only not rejected loads are counted.",
19 "SampleAfterValue": "200003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x24",
24 "UMask": "0x30",
25 "BriefDescription": "L2 prefetch requests that miss L2 cache",
26 "Counter": "0,1,2,3",
27 "EventName": "L2_RQSTS.L2_PF_MISS",
28 "PublicDescription": "This event counts the number of requests from the L2 hardware prefetchers that miss L2 cache.",
29 "SampleAfterValue": "200003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x24",
34 "UMask": "0x50",
35 "BriefDescription": "L2 prefetch requests that hit L2 cache",
36 "Counter": "0,1,2,3",
37 "EventName": "L2_RQSTS.L2_PF_HIT",
38 "PublicDescription": "This event counts the number of requests from the L2 hardware prefetchers that hit L2 cache. L3 prefetch new types.",
39 "SampleAfterValue": "200003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x24",
44 "UMask": "0xe1",
45 "BriefDescription": "Demand Data Read requests",
46 "Counter": "0,1,2,3",
47 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
48 "PublicDescription": "This event counts the number of demand Data Read requests (including requests from L1D hardware prefetchers). These loads may hit or miss L2 cache. Only non rejected loads are counted.",
49 "SampleAfterValue": "200003",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "EventCode": "0x24",
54 "UMask": "0xe2",
55 "BriefDescription": "RFO requests to L2 cache",
56 "Counter": "0,1,2,3",
57 "EventName": "L2_RQSTS.ALL_RFO",
58 "PublicDescription": "This event counts the total number of RFO (read for ownership) requests to L2 cache. L2 RFO requests include both L1D demand RFO misses as well as L1D RFO prefetches.",
59 "SampleAfterValue": "200003",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "EventCode": "0x24",
64 "UMask": "0xe4",
65 "BriefDescription": "L2 code requests",
66 "Counter": "0,1,2,3",
67 "EventName": "L2_RQSTS.ALL_CODE_RD",
68 "PublicDescription": "This event counts the total number of L2 code requests.",
69 "SampleAfterValue": "200003",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "EventCode": "0x24",
74 "UMask": "0xf8",
75 "BriefDescription": "Requests from L2 hardware prefetchers",
76 "Counter": "0,1,2,3",
77 "EventName": "L2_RQSTS.ALL_PF",
78 "PublicDescription": "This event counts the total number of requests from the L2 hardware prefetchers.",
79 "SampleAfterValue": "200003",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0x27",
84 "UMask": "0x50",
85 "BriefDescription": "Not rejected writebacks that hit L2 cache",
86 "Counter": "0,1,2,3",
87 "EventName": "L2_DEMAND_RQSTS.WB_HIT",
88 "PublicDescription": "This event counts the number of WB requests that hit L2 cache.",
89 "SampleAfterValue": "200003",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x2E",
94 "UMask": "0x41",
95 "BriefDescription": "Core-originated cacheable demand requests missed L3",
96 "Counter": "0,1,2,3",
97 "EventName": "LONGEST_LAT_CACHE.MISS",
98 "PublicDescription": "This event counts core-originated cacheable demand requests that miss the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
99 "SampleAfterValue": "100003",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "EventCode": "0x2E",
104 "UMask": "0x4f",
105 "BriefDescription": "Core-originated cacheable demand requests that refer to L3",
106 "Counter": "0,1,2,3",
107 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
108 "PublicDescription": "This event counts core-originated cacheable demand requests that refer to the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
109 "SampleAfterValue": "100003",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "EventCode": "0x48",
114 "UMask": "0x1",
115 "BriefDescription": "L1D miss oustandings duration in cycles",
116 "Counter": "2",
117 "EventName": "L1D_PEND_MISS.PENDING",
118 "PublicDescription": "This event counts duration of L1D miss outstanding, that is each cycle number of Fill Buffers (FB) outstanding required by Demand Reads. FB either is held by demand loads, or it is held by non-demand loads and gets hit at least once by demand. The valid outstanding interval is defined until the FB deallocation by one of the following ways: from FB allocation, if FB is allocated by demand; from the demand Hit FB, if it is allocated by hardware or software prefetch.\nNote: In the L1D, a Demand Read contains cacheable or noncacheable demand loads, including ones causing cache-line splits and reads due to page walks resulted from any request type.",
119 "SampleAfterValue": "2000003",
120 "CounterHTOff": "2"
121 },
122 {
123 "EventCode": "0x48",
124 "UMask": "0x1",
125 "BriefDescription": "Cycles with L1D load Misses outstanding.",
126 "Counter": "2",
127 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
128 "CounterMask": "1",
129 "PublicDescription": "This event counts duration of L1D miss outstanding in cycles.",
130 "SampleAfterValue": "2000003",
131 "CounterHTOff": "2"
132 },
133 {
134 "EventCode": "0x51",
135 "UMask": "0x1",
136 "BriefDescription": "L1D data line replacements",
137 "Counter": "0,1,2,3",
138 "EventName": "L1D.REPLACEMENT",
139 "PublicDescription": "This event counts L1D data line replacements including opportunistic replacements, and replacements that require stall-for-replace or block-for-replace.",
140 "SampleAfterValue": "2000003",
141 "CounterHTOff": "0,1,2,3,4,5,6,7"
142 },
143 {
144 "EventCode": "0x60",
145 "UMask": "0x1",
146 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
147 "Counter": "0,1,2,3",
148 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
149 "Errata": "BDM76",
150 "PublicDescription": "This event counts the number of offcore outstanding Demand Data Read transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor. See the corresponding Umask under OFFCORE_REQUESTS.\nNote: A prefetch promoted to Demand is counted from the promotion point.",
151 "SampleAfterValue": "2000003",
152 "CounterHTOff": "0,1,2,3,4,5,6,7"
153 },
154 {
155 "EventCode": "0x60",
156 "UMask": "0x2",
157 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
158 "Counter": "0,1,2,3",
159 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
160 "Errata": "BDM76",
161 "PublicDescription": "This event counts the number of offcore outstanding Code Reads transactions in the super queue every cycle. The \"Offcore outstanding\" state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
162 "SampleAfterValue": "2000003",
163 "CounterHTOff": "0,1,2,3,4,5,6,7"
164 },
165 {
166 "EventCode": "0x60",
167 "UMask": "0x4",
168 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore",
169 "Counter": "0,1,2,3",
170 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
171 "Errata": "BDM76",
172 "PublicDescription": "This event counts the number of offcore outstanding RFO (store) transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
173 "SampleAfterValue": "2000003",
174 "CounterHTOff": "0,1,2,3,4,5,6,7"
175 },
176 {
177 "EventCode": "0x60",
178 "UMask": "0x8",
179 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
180 "Counter": "0,1,2,3",
181 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
182 "Errata": "BDM76",
183 "PublicDescription": "This event counts the number of offcore outstanding cacheable Core Data Read transactions in the super queue every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
184 "SampleAfterValue": "2000003",
185 "CounterHTOff": "0,1,2,3,4,5,6,7"
186 },
187 {
188 "EventCode": "0x60",
189 "UMask": "0x1",
190 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore",
191 "Counter": "0,1,2,3",
192 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
193 "CounterMask": "1",
194 "Errata": "BDM76",
195 "PublicDescription": "This event counts cycles when offcore outstanding Demand Data Read transactions are present in the super queue (SQ). A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation).",
196 "SampleAfterValue": "2000003",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "EventCode": "0x60",
201 "UMask": "0x8",
202 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore",
203 "Counter": "0,1,2,3",
204 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
205 "CounterMask": "1",
206 "Errata": "BDM76",
207 "PublicDescription": "This event counts cycles when offcore outstanding cacheable Core Data Read transactions are present in the super queue. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
208 "SampleAfterValue": "2000003",
209 "CounterHTOff": "0,1,2,3,4,5,6,7"
210 },
211 {
212 "EventCode": "0x60",
213 "UMask": "0x4",
214 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
215 "Counter": "0,1,2,3",
216 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
217 "CounterMask": "1",
218 "Errata": "BDM76",
219 "PublicDescription": "This event counts the number of offcore outstanding demand rfo Reads transactions in the super queue every cycle. The \"Offcore outstanding\" state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
220 "SampleAfterValue": "2000003",
221 "CounterHTOff": "0,1,2,3,4,5,6,7"
222 },
223 {
224 "EventCode": "0x63",
225 "UMask": "0x2",
226 "BriefDescription": "Cycles when L1D is locked",
227 "Counter": "0,1,2,3",
228 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
229 "PublicDescription": "This event counts the number of cycles when the L1D is locked. It is a superset of the 0x1 mask (BUS_LOCK_CLOCKS.BUS_LOCK_DURATION).",
230 "SampleAfterValue": "2000003",
231 "CounterHTOff": "0,1,2,3,4,5,6,7"
232 },
233 {
234 "EventCode": "0xB0",
235 "UMask": "0x1",
236 "BriefDescription": "Demand Data Read requests sent to uncore",
237 "Counter": "0,1,2,3",
238 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
239 "PublicDescription": "This event counts the Demand Data Read requests sent to uncore. Use it in conjunction with OFFCORE_REQUESTS_OUTSTANDING to determine average latency in the uncore.",
240 "SampleAfterValue": "100003",
241 "CounterHTOff": "0,1,2,3,4,5,6,7"
242 },
243 {
244 "EventCode": "0xB0",
245 "UMask": "0x2",
246 "BriefDescription": "Cacheable and noncachaeble code read requests",
247 "Counter": "0,1,2,3",
248 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
249 "PublicDescription": "This event counts both cacheable and noncachaeble code read requests.",
250 "SampleAfterValue": "100003",
251 "CounterHTOff": "0,1,2,3,4,5,6,7"
252 },
253 {
254 "EventCode": "0xB0",
255 "UMask": "0x4",
256 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
257 "Counter": "0,1,2,3",
258 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
259 "PublicDescription": "This event counts the demand RFO (read for ownership) requests including regular RFOs, locks, ItoM.",
260 "SampleAfterValue": "100003",
261 "CounterHTOff": "0,1,2,3,4,5,6,7"
262 },
263 {
264 "EventCode": "0xB0",
265 "UMask": "0x8",
266 "BriefDescription": "Demand and prefetch data reads",
267 "Counter": "0,1,2,3",
268 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
269 "PublicDescription": "This event counts the demand and prefetch data reads. All Core Data Reads include cacheable \"Demands\" and L2 prefetchers (not L3 prefetchers). Counting also covers reads due to page walks resulted from any request type.",
270 "SampleAfterValue": "100003",
271 "CounterHTOff": "0,1,2,3,4,5,6,7"
272 },
273 {
274 "EventCode": "0xb2",
275 "UMask": "0x1",
276 "BriefDescription": "Offcore requests buffer cannot take more entries for this thread core.",
277 "Counter": "0,1,2,3",
278 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
279 "PublicDescription": "This event counts the number of cases when the offcore requests buffer cannot take more entries for the core. This can happen when the superqueue does not contain eligible entries, or when L1D writeback pending FIFO requests is full.\nNote: Writeback pending FIFO has six entries.",
280 "SampleAfterValue": "2000003",
281 "CounterHTOff": "0,1,2,3,4,5,6,7"
282 },
283 {
284 "EventCode": "0xD0",
285 "UMask": "0x11",
286 "BriefDescription": "Retired load uops that miss the STLB.",
287 "Data_LA": "1",
288 "PEBS": "1",
289 "Counter": "0,1,2,3",
290 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
291 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts load uops with true STLB miss retired to the architected path. True STLB miss is an uop triggering page walk that gets completed without blocks, and later gets retired. This page walk can end up with or without a fault.",
292 "SampleAfterValue": "100003",
293 "CounterHTOff": "0,1,2,3"
294 },
295 {
296 "EventCode": "0xD0",
297 "UMask": "0x12",
298 "BriefDescription": "Retired store uops that miss the STLB.",
299 "Data_LA": "1",
300 "PEBS": "1",
301 "Counter": "0,1,2,3",
302 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
303 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts store uops with true STLB miss retired to the architected path. True STLB miss is an uop triggering page walk that gets completed without blocks, and later gets retired. This page walk can end up with or without a fault.",
304 "SampleAfterValue": "100003",
305 "L1_Hit_Indication": "1",
306 "CounterHTOff": "0,1,2,3"
307 },
308 {
309 "EventCode": "0xD0",
310 "UMask": "0x21",
311 "BriefDescription": "Retired load uops with locked access.",
312 "Data_LA": "1",
313 "PEBS": "1",
314 "Counter": "0,1,2,3",
315 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
316 "Errata": "BDM35",
317 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts load uops with locked access retired to the architected path.",
318 "SampleAfterValue": "100007",
319 "CounterHTOff": "0,1,2,3"
320 },
321 {
322 "EventCode": "0xD0",
323 "UMask": "0x41",
324 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
325 "Data_LA": "1",
326 "PEBS": "1",
327 "Counter": "0,1,2,3",
328 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
329 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts line-splitted load uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
330 "SampleAfterValue": "100003",
331 "CounterHTOff": "0,1,2,3"
332 },
333 {
334 "EventCode": "0xD0",
335 "UMask": "0x42",
336 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
337 "Data_LA": "1",
338 "PEBS": "1",
339 "Counter": "0,1,2,3",
340 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
341 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts line-splitted store uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
342 "SampleAfterValue": "100003",
343 "L1_Hit_Indication": "1",
344 "CounterHTOff": "0,1,2,3"
345 },
346 {
347 "EventCode": "0xD0",
348 "UMask": "0x81",
349 "BriefDescription": "All retired load uops.",
350 "Data_LA": "1",
351 "PEBS": "1",
352 "Counter": "0,1,2,3",
353 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
354 "PublicDescription": "This event counts load uops retired to the architected path with a filter on bits 0 and 1 applied.\nNote: This event counts AVX-256bit load/store double-pump memory uops as a single uop at retirement. This event also counts SW prefetches.",
355 "SampleAfterValue": "2000003",
356 "CounterHTOff": "0,1,2,3"
357 },
358 {
359 "EventCode": "0xD0",
360 "UMask": "0x82",
361 "BriefDescription": "All retired store uops.",
362 "Data_LA": "1",
363 "PEBS": "1",
364 "Counter": "0,1,2,3",
365 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
366 "PublicDescription": "This event counts store uops retired to the architected path with a filter on bits 0 and 1 applied.\nNote: This event counts AVX-256bit load/store double-pump memory uops as a single uop at retirement.",
367 "SampleAfterValue": "2000003",
368 "L1_Hit_Indication": "1",
369 "CounterHTOff": "0,1,2,3"
370 },
371 {
372 "EventCode": "0xD1",
373 "UMask": "0x1",
374 "BriefDescription": "Retired load uops with L1 cache hits as data sources.",
375 "Data_LA": "1",
376 "PEBS": "1",
377 "Counter": "0,1,2,3",
378 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
379 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the nearest-level (L1) cache.\nNote: Only two data-sources of L1/FB are applicable for AVX-256bit even though the corresponding AVX load could be serviced by a deeper level in the memory hierarchy. Data source is reported for the Low-half load. This event also counts SW prefetches independent of the actual data source.",
380 "SampleAfterValue": "2000003",
381 "CounterHTOff": "0,1,2,3"
382 },
383 {
384 "EventCode": "0xD1",
385 "UMask": "0x2",
386 "BriefDescription": "Retired load uops with L2 cache hits as data sources.",
387 "Data_LA": "1",
388 "PEBS": "1",
389 "Counter": "0,1,2,3",
390 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
391 "Errata": "BDM35",
392 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the mid-level (L2) cache.",
393 "SampleAfterValue": "100003",
394 "CounterHTOff": "0,1,2,3"
395 },
396 {
397 "EventCode": "0xD1",
398 "UMask": "0x4",
399 "BriefDescription": "Retired load uops which data sources were data hits in L3 without snoops required.",
400 "Data_LA": "1",
401 "PEBS": "1",
402 "Counter": "0,1,2,3",
403 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_HIT",
404 "Errata": "BDM100",
405 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were data hits in the last-level (L3) cache without snoops required.",
406 "SampleAfterValue": "50021",
407 "CounterHTOff": "0,1,2,3"
408 },
409 {
410 "EventCode": "0xD1",
411 "UMask": "0x8",
412 "BriefDescription": "Retired load uops misses in L1 cache as data sources.",
413 "Data_LA": "1",
414 "PEBS": "1",
415 "Counter": "0,1,2,3",
416 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
417 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were misses in the nearest-level (L1) cache. Counting excludes unknown and UC data source.",
418 "SampleAfterValue": "100003",
419 "CounterHTOff": "0,1,2,3"
420 },
421 {
422 "EventCode": "0xD1",
423 "UMask": "0x10",
424 "BriefDescription": "Miss in mid-level (L2) cache. Excludes Unknown data-source.",
425 "Data_LA": "1",
426 "PEBS": "1",
427 "Counter": "0,1,2,3",
428 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
429 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were misses in the mid-level (L2) cache. Counting excludes unknown and UC data source.",
430 "SampleAfterValue": "50021",
431 "CounterHTOff": "0,1,2,3"
432 },
433 {
434 "EventCode": "0xD1",
435 "UMask": "0x20",
436 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
437 "Data_LA": "1",
438 "PEBS": "1",
439 "Counter": "0,1,2,3",
440 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_MISS",
441 "Errata": "BDM100, BDE70",
442 "SampleAfterValue": "100007",
443 "CounterHTOff": "0,1,2,3"
444 },
445 {
446 "EventCode": "0xD1",
447 "UMask": "0x40",
448 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
449 "Data_LA": "1",
450 "PEBS": "1",
451 "Counter": "0,1,2,3",
452 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
453 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were load uops missed L1 but hit a fill buffer due to a preceding miss to the same cache line with the data not ready.\nNote: Only two data-sources of L1/FB are applicable for AVX-256bit even though the corresponding AVX load could be serviced by a deeper level in the memory hierarchy. Data source is reported for the Low-half load.",
454 "SampleAfterValue": "100003",
455 "CounterHTOff": "0,1,2,3"
456 },
457 {
458 "EventCode": "0xD2",
459 "UMask": "0x1",
460 "BriefDescription": "Retired load uops which data sources were L3 hit and cross-core snoop missed in on-pkg core cache.",
461 "Data_LA": "1",
462 "PEBS": "1",
463 "Counter": "0,1,2,3",
464 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS",
465 "Errata": "BDM100",
466 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were L3 Hit and a cross-core snoop missed in the on-pkg core cache.",
467 "SampleAfterValue": "20011",
468 "CounterHTOff": "0,1,2,3"
469 },
470 {
471 "EventCode": "0xD2",
472 "UMask": "0x2",
473 "BriefDescription": "Retired load uops which data sources were L3 and cross-core snoop hits in on-pkg core cache.",
474 "Data_LA": "1",
475 "PEBS": "1",
476 "Counter": "0,1,2,3",
477 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT",
478 "Errata": "BDM100",
479 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were L3 hit and a cross-core snoop hit in the on-pkg core cache.",
480 "SampleAfterValue": "20011",
481 "CounterHTOff": "0,1,2,3"
482 },
483 {
484 "EventCode": "0xD2",
485 "UMask": "0x4",
486 "BriefDescription": "Retired load uops which data sources were HitM responses from shared L3.",
487 "Data_LA": "1",
488 "PEBS": "1",
489 "Counter": "0,1,2,3",
490 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM",
491 "Errata": "BDM100",
492 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were HitM responses from a core on same socket (shared L3).",
493 "SampleAfterValue": "20011",
494 "CounterHTOff": "0,1,2,3"
495 },
496 {
497 "EventCode": "0xD2",
498 "UMask": "0x8",
499 "BriefDescription": "Retired load uops which data sources were hits in L3 without snoops required.",
500 "Data_LA": "1",
501 "PEBS": "1",
502 "Counter": "0,1,2,3",
503 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_NONE",
504 "Errata": "BDM100",
505 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts retired load uops which data sources were hits in the last-level (L3) cache without snoops required.",
506 "SampleAfterValue": "100003",
507 "CounterHTOff": "0,1,2,3"
508 },
509 {
510 "EventCode": "0xD3",
511 "UMask": "0x1",
512 "BriefDescription": "Data from local DRAM either Snoop not needed or Snoop Miss (RspI)",
513 "Data_LA": "1",
514 "PEBS": "1",
515 "Counter": "0,1,2,3",
516 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM",
517 "Errata": "BDE70, BDM100",
518 "PublicDescription": "Retired load uop whose Data Source was: local DRAM either Snoop not needed or Snoop Miss (RspI).",
519 "SampleAfterValue": "100007",
520 "CounterHTOff": "0,1,2,3"
521 },
522 {
523 "EventCode": "0xD3",
524 "UMask": "0x4",
525 "BriefDescription": "Retired load uop whose Data Source was: remote DRAM either Snoop not needed or Snoop Miss (RspI)",
526 "Data_LA": "1",
527 "PEBS": "1",
528 "Counter": "0,1,2,3",
529 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM",
530 "Errata": "BDE70",
531 "SampleAfterValue": "100007",
532 "CounterHTOff": "0,1,2,3"
533 },
534 {
535 "EventCode": "0xD3",
536 "UMask": "0x10",
537 "BriefDescription": "Retired load uop whose Data Source was: Remote cache HITM",
538 "Data_LA": "1",
539 "PEBS": "1",
540 "Counter": "0,1,2,3",
541 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM",
542 "Errata": "BDE70",
543 "SampleAfterValue": "100007",
544 "CounterHTOff": "0,1,2,3"
545 },
546 {
547 "EventCode": "0xD3",
548 "UMask": "0x20",
549 "BriefDescription": "Retired load uop whose Data Source was: forwarded from remote cache",
550 "Data_LA": "1",
551 "PEBS": "1",
552 "Counter": "0,1,2,3",
553 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD",
554 "Errata": "BDE70",
555 "SampleAfterValue": "100007",
556 "CounterHTOff": "0,1,2,3"
557 },
558 {
559 "EventCode": "0xF0",
560 "UMask": "0x1",
561 "BriefDescription": "Demand Data Read requests that access L2 cache",
562 "Counter": "0,1,2,3",
563 "EventName": "L2_TRANS.DEMAND_DATA_RD",
564 "PublicDescription": "This event counts Demand Data Read requests that access L2 cache, including rejects.",
565 "SampleAfterValue": "200003",
566 "CounterHTOff": "0,1,2,3,4,5,6,7"
567 },
568 {
569 "EventCode": "0xF0",
570 "UMask": "0x2",
571 "BriefDescription": "RFO requests that access L2 cache",
572 "Counter": "0,1,2,3",
573 "EventName": "L2_TRANS.RFO",
574 "PublicDescription": "This event counts Read for Ownership (RFO) requests that access L2 cache.",
575 "SampleAfterValue": "200003",
576 "CounterHTOff": "0,1,2,3,4,5,6,7"
577 },
578 {
579 "EventCode": "0xF0",
580 "UMask": "0x4",
581 "BriefDescription": "L2 cache accesses when fetching instructions",
582 "Counter": "0,1,2,3",
583 "EventName": "L2_TRANS.CODE_RD",
584 "PublicDescription": "This event counts the number of L2 cache accesses when fetching instructions.",
585 "SampleAfterValue": "200003",
586 "CounterHTOff": "0,1,2,3,4,5,6,7"
587 },
588 {
589 "EventCode": "0xF0",
590 "UMask": "0x8",
591 "BriefDescription": "L2 or L3 HW prefetches that access L2 cache",
592 "Counter": "0,1,2,3",
593 "EventName": "L2_TRANS.ALL_PF",
594 "PublicDescription": "This event counts L2 or L3 HW prefetches that access L2 cache including rejects.",
595 "SampleAfterValue": "200003",
596 "CounterHTOff": "0,1,2,3,4,5,6,7"
597 },
598 {
599 "EventCode": "0xF0",
600 "UMask": "0x10",
601 "BriefDescription": "L1D writebacks that access L2 cache",
602 "Counter": "0,1,2,3",
603 "EventName": "L2_TRANS.L1D_WB",
604 "PublicDescription": "This event counts L1D writebacks that access L2 cache.",
605 "SampleAfterValue": "200003",
606 "CounterHTOff": "0,1,2,3,4,5,6,7"
607 },
608 {
609 "EventCode": "0xF0",
610 "UMask": "0x20",
611 "BriefDescription": "L2 fill requests that access L2 cache",
612 "Counter": "0,1,2,3",
613 "EventName": "L2_TRANS.L2_FILL",
614 "PublicDescription": "This event counts L2 fill requests that access L2 cache.",
615 "SampleAfterValue": "200003",
616 "CounterHTOff": "0,1,2,3,4,5,6,7"
617 },
618 {
619 "EventCode": "0xF0",
620 "UMask": "0x40",
621 "BriefDescription": "L2 writebacks that access L2 cache",
622 "Counter": "0,1,2,3",
623 "EventName": "L2_TRANS.L2_WB",
624 "PublicDescription": "This event counts L2 writebacks that access L2 cache.",
625 "SampleAfterValue": "200003",
626 "CounterHTOff": "0,1,2,3,4,5,6,7"
627 },
628 {
629 "EventCode": "0xF0",
630 "UMask": "0x80",
631 "BriefDescription": "Transactions accessing L2 pipe",
632 "Counter": "0,1,2,3",
633 "EventName": "L2_TRANS.ALL_REQUESTS",
634 "PublicDescription": "This event counts transactions that access the L2 pipe including snoops, pagewalks, and so on.",
635 "SampleAfterValue": "200003",
636 "CounterHTOff": "0,1,2,3,4,5,6,7"
637 },
638 {
639 "EventCode": "0xF1",
640 "UMask": "0x1",
641 "BriefDescription": "L2 cache lines in I state filling L2",
642 "Counter": "0,1,2,3",
643 "EventName": "L2_LINES_IN.I",
644 "PublicDescription": "This event counts the number of L2 cache lines in the Invalidate state filling the L2. Counting does not cover rejects.",
645 "SampleAfterValue": "100003",
646 "CounterHTOff": "0,1,2,3,4,5,6,7"
647 },
648 {
649 "EventCode": "0xF1",
650 "UMask": "0x2",
651 "BriefDescription": "L2 cache lines in S state filling L2",
652 "Counter": "0,1,2,3",
653 "EventName": "L2_LINES_IN.S",
654 "PublicDescription": "This event counts the number of L2 cache lines in the Shared state filling the L2. Counting does not cover rejects.",
655 "SampleAfterValue": "100003",
656 "CounterHTOff": "0,1,2,3,4,5,6,7"
657 },
658 {
659 "EventCode": "0xF1",
660 "UMask": "0x4",
661 "BriefDescription": "L2 cache lines in E state filling L2",
662 "Counter": "0,1,2,3",
663 "EventName": "L2_LINES_IN.E",
664 "PublicDescription": "This event counts the number of L2 cache lines in the Exclusive state filling the L2. Counting does not cover rejects.",
665 "SampleAfterValue": "100003",
666 "CounterHTOff": "0,1,2,3,4,5,6,7"
667 },
668 {
669 "EventCode": "0xF1",
670 "UMask": "0x7",
671 "BriefDescription": "L2 cache lines filling L2",
672 "Counter": "0,1,2,3",
673 "EventName": "L2_LINES_IN.ALL",
674 "PublicDescription": "This event counts the number of L2 cache lines filling the L2. Counting does not cover rejects.",
675 "SampleAfterValue": "100003",
676 "CounterHTOff": "0,1,2,3,4,5,6,7"
677 },
678 {
679 "EventCode": "0xF2",
680 "UMask": "0x5",
681 "BriefDescription": "Clean L2 cache lines evicted by demand.",
682 "Counter": "0,1,2,3",
683 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
684 "SampleAfterValue": "100003",
685 "CounterHTOff": "0,1,2,3,4,5,6,7"
686 },
687 {
688 "EventCode": "0xf4",
689 "UMask": "0x10",
690 "BriefDescription": "Split locks in SQ",
691 "Counter": "0,1,2,3",
692 "EventName": "SQ_MISC.SPLIT_LOCK",
693 "PublicDescription": "This event counts the number of split locks in the super queue.",
694 "SampleAfterValue": "100003",
695 "CounterHTOff": "0,1,2,3,4,5,6,7"
696 },
697 {
698 "EventCode": "0x24",
699 "UMask": "0x42",
700 "BriefDescription": "RFO requests that hit L2 cache.",
701 "Counter": "0,1,2,3",
702 "EventName": "L2_RQSTS.RFO_HIT",
703 "SampleAfterValue": "200003",
704 "CounterHTOff": "0,1,2,3,4,5,6,7"
705 },
706 {
707 "EventCode": "0x24",
708 "UMask": "0x22",
709 "BriefDescription": "RFO requests that miss L2 cache.",
710 "Counter": "0,1,2,3",
711 "EventName": "L2_RQSTS.RFO_MISS",
712 "SampleAfterValue": "200003",
713 "CounterHTOff": "0,1,2,3,4,5,6,7"
714 },
715 {
716 "EventCode": "0x24",
717 "UMask": "0x44",
718 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
719 "Counter": "0,1,2,3",
720 "EventName": "L2_RQSTS.CODE_RD_HIT",
721 "SampleAfterValue": "200003",
722 "CounterHTOff": "0,1,2,3,4,5,6,7"
723 },
724 {
725 "EventCode": "0x24",
726 "UMask": "0x24",
727 "BriefDescription": "L2 cache misses when fetching instructions.",
728 "Counter": "0,1,2,3",
729 "EventName": "L2_RQSTS.CODE_RD_MISS",
730 "SampleAfterValue": "200003",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "EventCode": "0x24",
735 "UMask": "0x27",
736 "BriefDescription": "Demand requests that miss L2 cache.",
737 "Counter": "0,1,2,3",
738 "EventName": "L2_RQSTS.ALL_DEMAND_MISS",
739 "SampleAfterValue": "200003",
740 "CounterHTOff": "0,1,2,3,4,5,6,7"
741 },
742 {
743 "EventCode": "0x24",
744 "UMask": "0xe7",
745 "BriefDescription": "Demand requests to L2 cache.",
746 "Counter": "0,1,2,3",
747 "EventName": "L2_RQSTS.ALL_DEMAND_REFERENCES",
748 "SampleAfterValue": "200003",
749 "CounterHTOff": "0,1,2,3,4,5,6,7"
750 },
751 {
752 "EventCode": "0x24",
753 "UMask": "0x3f",
754 "BriefDescription": "All requests that miss L2 cache.",
755 "Counter": "0,1,2,3",
756 "EventName": "L2_RQSTS.MISS",
757 "SampleAfterValue": "200003",
758 "CounterHTOff": "0,1,2,3,4,5,6,7"
759 },
760 {
761 "EventCode": "0x24",
762 "UMask": "0xff",
763 "BriefDescription": "All L2 requests.",
764 "Counter": "0,1,2,3",
765 "EventName": "L2_RQSTS.REFERENCES",
766 "SampleAfterValue": "200003",
767 "CounterHTOff": "0,1,2,3,4,5,6,7"
768 },
769 {
770 "EventCode": "0xB7, 0xBB",
771 "UMask": "0x1",
772 "BriefDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction.",
773 "Counter": "0,1,2,3",
774 "EventName": "OFFCORE_RESPONSE",
775 "SampleAfterValue": "100003",
776 "CounterHTOff": "0,1,2,3"
777 },
778 {
779 "EventCode": "0x60",
780 "UMask": "0x1",
781 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
782 "Counter": "0,1,2,3",
783 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
784 "CounterMask": "6",
785 "Errata": "BDM76",
786 "SampleAfterValue": "2000003",
787 "CounterHTOff": "0,1,2,3,4,5,6,7"
788 },
789 {
790 "EventCode": "0x48",
791 "UMask": "0x1",
792 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
793 "Counter": "2",
794 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
795 "AnyThread": "1",
796 "CounterMask": "1",
797 "SampleAfterValue": "2000003",
798 "CounterHTOff": "2"
799 },
800 {
801 "EventCode": "0x48",
802 "UMask": "0x2",
803 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
804 "Counter": "0,1,2,3",
805 "EventName": "L1D_PEND_MISS.FB_FULL",
806 "CounterMask": "1",
807 "SampleAfterValue": "2000003",
808 "CounterHTOff": "0,1,2,3,4,5,6,7"
809 },
810 {
811 "Offcore": "1",
812 "EventCode": "0xB7, 0xBB",
813 "UMask": "0x1",
814 "BriefDescription": "Counts all requests that hit in the L3",
815 "MSRValue": "0x3f803c8fff",
816 "Counter": "0,1,2,3",
817 "EventName": "OFFCORE_RESPONSE.ALL_REQUESTS.LLC_HIT.ANY_RESPONSE",
818 "MSRIndex": "0x1a6,0x1a7",
819 "SampleAfterValue": "100003",
820 "CounterHTOff": "0,1,2,3"
821 },
822 {
823 "Offcore": "1",
824 "EventCode": "0xB7, 0xBB",
825 "UMask": "0x1",
826 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
827 "MSRValue": "0x10003c07f7",
828 "Counter": "0,1,2,3",
829 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HITM_OTHER_CORE",
830 "MSRIndex": "0x1a6,0x1a7",
831 "SampleAfterValue": "100003",
832 "CounterHTOff": "0,1,2,3"
833 },
834 {
835 "Offcore": "1",
836 "EventCode": "0xB7, 0xBB",
837 "UMask": "0x1",
838 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
839 "MSRValue": "0x04003c07f7",
840 "Counter": "0,1,2,3",
841 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
842 "MSRIndex": "0x1a6,0x1a7",
843 "SampleAfterValue": "100003",
844 "CounterHTOff": "0,1,2,3"
845 },
846 {
847 "Offcore": "1",
848 "EventCode": "0xB7, 0xBB",
849 "UMask": "0x1",
850 "BriefDescription": "Counts all demand & prefetch code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
851 "MSRValue": "0x04003c0244",
852 "Counter": "0,1,2,3",
853 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
854 "MSRIndex": "0x1a6,0x1a7",
855 "SampleAfterValue": "100003",
856 "CounterHTOff": "0,1,2,3"
857 },
858 {
859 "Offcore": "1",
860 "EventCode": "0xB7, 0xBB",
861 "UMask": "0x1",
862 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
863 "MSRValue": "0x10003c0122",
864 "Counter": "0,1,2,3",
865 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.HITM_OTHER_CORE",
866 "MSRIndex": "0x1a6,0x1a7",
867 "SampleAfterValue": "100003",
868 "CounterHTOff": "0,1,2,3"
869 },
870 {
871 "Offcore": "1",
872 "EventCode": "0xB7, 0xBB",
873 "UMask": "0x1",
874 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
875 "MSRValue": "0x04003c0122",
876 "Counter": "0,1,2,3",
877 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
878 "MSRIndex": "0x1a6,0x1a7",
879 "SampleAfterValue": "100003",
880 "CounterHTOff": "0,1,2,3"
881 },
882 {
883 "Offcore": "1",
884 "EventCode": "0xB7, 0xBB",
885 "UMask": "0x1",
886 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
887 "MSRValue": "0x10003c0091",
888 "Counter": "0,1,2,3",
889 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
890 "MSRIndex": "0x1a6,0x1a7",
891 "SampleAfterValue": "100003",
892 "CounterHTOff": "0,1,2,3"
893 },
894 {
895 "Offcore": "1",
896 "EventCode": "0xB7, 0xBB",
897 "UMask": "0x1",
898 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
899 "MSRValue": "0x04003c0091",
900 "Counter": "0,1,2,3",
901 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
902 "MSRIndex": "0x1a6,0x1a7",
903 "SampleAfterValue": "100003",
904 "CounterHTOff": "0,1,2,3"
905 },
906 {
907 "Offcore": "1",
908 "EventCode": "0xB7, 0xBB",
909 "UMask": "0x1",
910 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3",
911 "MSRValue": "0x3f803c0200",
912 "Counter": "0,1,2,3",
913 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.ANY_RESPONSE",
914 "MSRIndex": "0x1a6,0x1a7",
915 "SampleAfterValue": "100003",
916 "CounterHTOff": "0,1,2,3"
917 },
918 {
919 "Offcore": "1",
920 "EventCode": "0xB7, 0xBB",
921 "UMask": "0x1",
922 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3",
923 "MSRValue": "0x3f803c0100",
924 "Counter": "0,1,2,3",
925 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_HIT.ANY_RESPONSE",
926 "MSRIndex": "0x1a6,0x1a7",
927 "SampleAfterValue": "100003",
928 "CounterHTOff": "0,1,2,3"
929 },
930 {
931 "Offcore": "1",
932 "EventCode": "0xB7, 0xBB",
933 "UMask": "0x1",
934 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
935 "MSRValue": "0x10003c0002",
936 "Counter": "0,1,2,3",
937 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE",
938 "MSRIndex": "0x1a6,0x1a7",
939 "SampleAfterValue": "100003",
940 "CounterHTOff": "0,1,2,3"
941 }
942] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/floating-point.json b/tools/perf/pmu-events/arch/x86/broadwellx/floating-point.json
new file mode 100644
index 000000000000..4ae1ea24f22f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/floating-point.json
@@ -0,0 +1,171 @@
1[
2 {
3 "EventCode": "0xC1",
4 "UMask": "0x8",
5 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
6 "Counter": "0,1,2,3",
7 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
8 "Errata": "BDM30",
9 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of transitions from AVX-256 to legacy SSE when penalty is applicable.",
10 "SampleAfterValue": "100003",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "EventCode": "0xC1",
15 "UMask": "0x10",
16 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
17 "Counter": "0,1,2,3",
18 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
19 "Errata": "BDM30",
20 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of transitions from legacy SSE to AVX-256 when penalty is applicable.",
21 "SampleAfterValue": "100003",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "EventCode": "0xC7",
26 "UMask": "0x1",
27 "BriefDescription": "Number of SSE/AVX computational scalar double precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
28 "PEBS": "1",
29 "Counter": "0,1,2,3",
30 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
31 "SampleAfterValue": "2000003",
32 "CounterHTOff": "0,1,2,3"
33 },
34 {
35 "EventCode": "0xC7",
36 "UMask": "0x2",
37 "BriefDescription": "Number of SSE/AVX computational scalar single precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
38 "PEBS": "1",
39 "Counter": "0,1,2,3",
40 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
41 "SampleAfterValue": "2000003",
42 "CounterHTOff": "0,1,2,3"
43 },
44 {
45 "EventCode": "0xC7",
46 "UMask": "0x4",
47 "BriefDescription": "Number of SSE/AVX computational 128-bit packed double precision floating-point instructions retired. Each count represents 2 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
48 "PEBS": "1",
49 "Counter": "0,1,2,3",
50 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE",
51 "SampleAfterValue": "2000003",
52 "CounterHTOff": "0,1,2,3"
53 },
54 {
55 "EventCode": "0xC7",
56 "UMask": "0x8",
57 "BriefDescription": "Number of SSE/AVX computational 128-bit packed single precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
58 "PEBS": "1",
59 "Counter": "0,1,2,3",
60 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE",
61 "SampleAfterValue": "2000003",
62 "CounterHTOff": "0,1,2,3"
63 },
64 {
65 "EventCode": "0xC7",
66 "UMask": "0x10",
67 "BriefDescription": "Number of SSE/AVX computational 256-bit packed double precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
68 "PEBS": "1",
69 "Counter": "0,1,2,3",
70 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE",
71 "SampleAfterValue": "2000003",
72 "CounterHTOff": "0,1,2,3"
73 },
74 {
75 "EventCode": "0xCA",
76 "UMask": "0x2",
77 "BriefDescription": "Number of X87 assists due to output value.",
78 "Counter": "0,1,2,3",
79 "EventName": "FP_ASSIST.X87_OUTPUT",
80 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of x87 floating point (FP) micro-code assist (numeric overflow/underflow, inexact result) when the output value (destination register) is invalid.",
81 "SampleAfterValue": "100003",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "EventCode": "0xCA",
86 "UMask": "0x4",
87 "BriefDescription": "Number of X87 assists due to input value.",
88 "Counter": "0,1,2,3",
89 "EventName": "FP_ASSIST.X87_INPUT",
90 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts x87 floating point (FP) micro-code assist (invalid operation, denormal operand, SNaN operand) when the input value (one of the source operands to an FP instruction) is invalid.",
91 "SampleAfterValue": "100003",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "EventCode": "0xCA",
96 "UMask": "0x8",
97 "BriefDescription": "Number of SIMD FP assists due to Output values",
98 "Counter": "0,1,2,3",
99 "EventName": "FP_ASSIST.SIMD_OUTPUT",
100 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of SSE* floating point (FP) micro-code assist (numeric overflow/underflow) when the output value (destination register) is invalid. Counting covers only cases involving penalties that require micro-code assist intervention.",
101 "SampleAfterValue": "100003",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0xCA",
106 "UMask": "0x10",
107 "BriefDescription": "Number of SIMD FP assists due to input values",
108 "Counter": "0,1,2,3",
109 "EventName": "FP_ASSIST.SIMD_INPUT",
110 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts any input SSE* FP assist - invalid operation, denormal operand, dividing by zero, SNaN operand. Counting includes only cases involving penalties that required micro-code assist intervention.",
111 "SampleAfterValue": "100003",
112 "CounterHTOff": "0,1,2,3,4,5,6,7"
113 },
114 {
115 "EventCode": "0xCA",
116 "UMask": "0x1e",
117 "BriefDescription": "Cycles with any input/output SSE or FP assist",
118 "Counter": "0,1,2,3",
119 "EventName": "FP_ASSIST.ANY",
120 "CounterMask": "1",
121 "PublicDescription": "This event counts cycles with any input and output SSE or x87 FP assist. If an input and output assist are detected on the same cycle the event increments by 1.",
122 "SampleAfterValue": "100003",
123 "CounterHTOff": "0,1,2,3"
124 },
125 {
126 "EventCode": "0xc7",
127 "UMask": "0x20",
128 "BriefDescription": "Number of SSE/AVX computational 256-bit packed single precision floating-point instructions retired. Each count represents 8 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
129 "PEBS": "1",
130 "Counter": "0,1,2,3",
131 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE",
132 "SampleAfterValue": "2000003",
133 "CounterHTOff": "0,1,2,3"
134 },
135 {
136 "EventCode": "0xC7",
137 "UMask": "0x3",
138 "BriefDescription": "Number of SSE/AVX computational scalar floating-point instructions retired. Applies to SSE* and AVX* scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RSQRT RCP SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
139 "Counter": "0,1,2,3",
140 "EventName": "FP_ARITH_INST_RETIRED.SCALAR",
141 "SampleAfterValue": "2000003",
142 "CounterHTOff": "0,1,2,3"
143 },
144 {
145 "EventCode": "0xC7",
146 "UMask": "0x3c",
147 "BriefDescription": "Number of SSE/AVX computational packed floating-point instructions retired. Applies to SSE* and AVX*, packed, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RSQRT RCP SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
148 "Counter": "0,1,2,3",
149 "EventName": "FP_ARITH_INST_RETIRED.PACKED",
150 "SampleAfterValue": "2000004",
151 "CounterHTOff": "0,1,2,3"
152 },
153 {
154 "EventCode": "0xC7",
155 "UMask": "0x2a",
156 "BriefDescription": "Number of SSE/AVX computational single precision floating-point instructions retired. Applies to SSE* and AVX*scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element. ?.",
157 "Counter": "0,1,2,3",
158 "EventName": "FP_ARITH_INST_RETIRED.SINGLE",
159 "SampleAfterValue": "2000005",
160 "CounterHTOff": "0,1,2,3"
161 },
162 {
163 "EventCode": "0xC7",
164 "UMask": "0x15",
165 "BriefDescription": "Number of SSE/AVX computational double precision floating-point instructions retired. Applies to SSE* and AVX*scalar, double and single precision floating-point: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element. ?.",
166 "Counter": "0,1,2,3",
167 "EventName": "FP_ARITH_INST_RETIRED.DOUBLE",
168 "SampleAfterValue": "2000006",
169 "CounterHTOff": "0,1,2,3"
170 }
171] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/frontend.json b/tools/perf/pmu-events/arch/x86/broadwellx/frontend.json
new file mode 100644
index 000000000000..06bf0a40e568
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/frontend.json
@@ -0,0 +1,286 @@
1[
2 {
3 "EventCode": "0x79",
4 "UMask": "0x2",
5 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles",
6 "Counter": "0,1,2,3",
7 "EventName": "IDQ.EMPTY",
8 "PublicDescription": "This counts the number of cycles that the instruction decoder queue is empty and can indicate that the application may be bound in the front end. It does not determine whether there are uops being delivered to the Alloc stage since uops can be delivered by bypass skipping the Instruction Decode Queue (IDQ) when it is empty.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3"
11 },
12 {
13 "EventCode": "0x79",
14 "UMask": "0x4",
15 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
16 "Counter": "0,1,2,3",
17 "EventName": "IDQ.MITE_UOPS",
18 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x79",
24 "UMask": "0x8",
25 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
26 "Counter": "0,1,2,3",
27 "EventName": "IDQ.DSB_UOPS",
28 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
29 "SampleAfterValue": "2000003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x79",
34 "UMask": "0x10",
35 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
36 "Counter": "0,1,2,3",
37 "EventName": "IDQ.MS_DSB_UOPS",
38 "PublicDescription": "This event counts the number of uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
39 "SampleAfterValue": "2000003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x79",
44 "UMask": "0x20",
45 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
46 "Counter": "0,1,2,3",
47 "EventName": "IDQ.MS_MITE_UOPS",
48 "PublicDescription": "This event counts the number of uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
49 "SampleAfterValue": "2000003",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "EventCode": "0x79",
54 "UMask": "0x30",
55 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
56 "Counter": "0,1,2,3",
57 "EventName": "IDQ.MS_UOPS",
58 "PublicDescription": "This event counts the total number of uops delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
59 "SampleAfterValue": "2000003",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "EventCode": "0x79",
64 "UMask": "0x30",
65 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
66 "Counter": "0,1,2,3",
67 "EventName": "IDQ.MS_CYCLES",
68 "CounterMask": "1",
69 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may \"bypass\" the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
70 "SampleAfterValue": "2000003",
71 "CounterHTOff": "0,1,2,3,4,5,6,7"
72 },
73 {
74 "EventCode": "0x79",
75 "UMask": "0x4",
76 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path",
77 "Counter": "0,1,2,3",
78 "EventName": "IDQ.MITE_CYCLES",
79 "CounterMask": "1",
80 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ.",
81 "SampleAfterValue": "2000003",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "EventCode": "0x79",
86 "UMask": "0x8",
87 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
88 "Counter": "0,1,2,3",
89 "EventName": "IDQ.DSB_CYCLES",
90 "CounterMask": "1",
91 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
92 "SampleAfterValue": "2000003",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "EventCode": "0x79",
97 "UMask": "0x10",
98 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
99 "Counter": "0,1,2,3",
100 "EventName": "IDQ.MS_DSB_CYCLES",
101 "CounterMask": "1",
102 "PublicDescription": "This event counts cycles during which uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
103 "SampleAfterValue": "2000003",
104 "CounterHTOff": "0,1,2,3,4,5,6,7"
105 },
106 {
107 "EdgeDetect": "1",
108 "EventCode": "0x79",
109 "UMask": "0x10",
110 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy",
111 "Counter": "0,1,2,3",
112 "EventName": "IDQ.MS_DSB_OCCUR",
113 "CounterMask": "1",
114 "PublicDescription": "This event counts the number of deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while the Microcode Sequencer (MS) is busy. Counting includes uops that may \"bypass\" the IDQ.",
115 "SampleAfterValue": "2000003",
116 "CounterHTOff": "0,1,2,3,4,5,6,7"
117 },
118 {
119 "EventCode": "0x79",
120 "UMask": "0x18",
121 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
122 "Counter": "0,1,2,3",
123 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
124 "CounterMask": "4",
125 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
126 "SampleAfterValue": "2000003",
127 "CounterHTOff": "0,1,2,3,4,5,6,7"
128 },
129 {
130 "EventCode": "0x79",
131 "UMask": "0x18",
132 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
133 "Counter": "0,1,2,3",
134 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
135 "CounterMask": "1",
136 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may \"bypass\" the IDQ.",
137 "SampleAfterValue": "2000003",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0x79",
142 "UMask": "0x24",
143 "BriefDescription": "Cycles MITE is delivering 4 Uops",
144 "Counter": "0,1,2,3",
145 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
146 "CounterMask": "4",
147 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
148 "SampleAfterValue": "2000003",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "EventCode": "0x79",
153 "UMask": "0x24",
154 "BriefDescription": "Cycles MITE is delivering any Uop",
155 "Counter": "0,1,2,3",
156 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
157 "CounterMask": "1",
158 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
159 "SampleAfterValue": "2000003",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "EventCode": "0x79",
164 "UMask": "0x3c",
165 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
166 "Counter": "0,1,2,3",
167 "EventName": "IDQ.MITE_ALL_UOPS",
168 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may \"bypass\" the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
169 "SampleAfterValue": "2000003",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "EventCode": "0x80",
174 "UMask": "0x1",
175 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches",
176 "Counter": "0,1,2,3",
177 "EventName": "ICACHE.HIT",
178 "PublicDescription": "This event counts the number of both cacheable and noncacheable Instruction Cache, Streaming Buffer and Victim Cache Reads including UC fetches.",
179 "SampleAfterValue": "2000003",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "EventCode": "0x80",
184 "UMask": "0x2",
185 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes Uncacheable accesses.",
186 "Counter": "0,1,2,3",
187 "EventName": "ICACHE.MISSES",
188 "PublicDescription": "This event counts the number of instruction cache, streaming buffer and victim cache misses. Counting includes UC accesses.",
189 "SampleAfterValue": "200003",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "EventCode": "0x80",
194 "UMask": "0x4",
195 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction-cache miss.",
196 "Counter": "0,1,2,3",
197 "EventName": "ICACHE.IFDATA_STALL",
198 "PublicDescription": "This event counts cycles during which the demand fetch waits for data (wfdM104H) from L2 or iSB (opportunistic hit).",
199 "SampleAfterValue": "2000003",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "EventCode": "0x9C",
204 "UMask": "0x1",
205 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled",
206 "Counter": "0,1,2,3",
207 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
208 "PublicDescription": "This event counts the number of uops not delivered to Resource Allocation Table (RAT) per thread adding ?4 ? x? when Resource Allocation Table (RAT) is not stalled and Instruction Decode Queue (IDQ) delivers x uops to Resource Allocation Table (RAT) (where x belongs to {0,1,2,3}). Counting does not cover cases when:\n a. IDQ-Resource Allocation Table (RAT) pipe serves the other thread;\n b. Resource Allocation Table (RAT) is stalled for the thread (including uop drops and clear BE conditions); \n c. Instruction Decode Queue (IDQ) delivers four uops.",
209 "SampleAfterValue": "2000003",
210 "CounterHTOff": "0,1,2,3"
211 },
212 {
213 "EventCode": "0x9C",
214 "UMask": "0x1",
215 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
216 "Counter": "0,1,2,3",
217 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
218 "CounterMask": "4",
219 "PublicDescription": "This event counts, on the per-thread basis, cycles when no uops are delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core =4.",
220 "SampleAfterValue": "2000003",
221 "CounterHTOff": "0,1,2,3"
222 },
223 {
224 "EventCode": "0x9C",
225 "UMask": "0x1",
226 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
227 "Counter": "0,1,2,3",
228 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
229 "CounterMask": "3",
230 "PublicDescription": "This event counts, on the per-thread basis, cycles when less than 1 uop is delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core >=3.",
231 "SampleAfterValue": "2000003",
232 "CounterHTOff": "0,1,2,3"
233 },
234 {
235 "EventCode": "0x9C",
236 "UMask": "0x1",
237 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
238 "Counter": "0,1,2,3",
239 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
240 "CounterMask": "2",
241 "SampleAfterValue": "2000003",
242 "CounterHTOff": "0,1,2,3"
243 },
244 {
245 "EventCode": "0x9C",
246 "UMask": "0x1",
247 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
248 "Counter": "0,1,2,3",
249 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
250 "CounterMask": "1",
251 "SampleAfterValue": "2000003",
252 "CounterHTOff": "0,1,2,3"
253 },
254 {
255 "Invert": "1",
256 "EventCode": "0x9C",
257 "UMask": "0x1",
258 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
259 "Counter": "0,1,2,3",
260 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
261 "CounterMask": "1",
262 "SampleAfterValue": "2000003",
263 "CounterHTOff": "0,1,2,3"
264 },
265 {
266 "EventCode": "0xAB",
267 "UMask": "0x2",
268 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
269 "Counter": "0,1,2,3",
270 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
271 "PublicDescription": "This event counts Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles. These cycles do not include uops routed through because of the switch itself, for example, when Instruction Decode Queue (IDQ) pre-allocation is unavailable, or Instruction Decode Queue (IDQ) is full. SBD-to-MITE switch true penalty cycles happen after the merge mux (MM) receives Decode Stream Buffer (DSB) Sync-indication until receiving the first MITE uop. \nMM is placed before Instruction Decode Queue (IDQ) to merge uops being fed from the MITE and Decode Stream Buffer (DSB) paths. Decode Stream Buffer (DSB) inserts the Sync-indication whenever a Decode Stream Buffer (DSB)-to-MITE switch occurs.\nPenalty: A Decode Stream Buffer (DSB) hit followed by a Decode Stream Buffer (DSB) miss can cost up to six cycles in which no uops are delivered to the IDQ. Most often, such switches from the Decode Stream Buffer (DSB) to the legacy pipeline cost 0?2 cycles.",
272 "SampleAfterValue": "2000003",
273 "CounterHTOff": "0,1,2,3,4,5,6,7"
274 },
275 {
276 "EdgeDetect": "1",
277 "EventCode": "0x79",
278 "UMask": "0x30",
279 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
280 "Counter": "0,1,2,3",
281 "EventName": "IDQ.MS_SWITCHES",
282 "CounterMask": "1",
283 "SampleAfterValue": "2000003",
284 "CounterHTOff": "0,1,2,3,4,5,6,7"
285 }
286] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/memory.json b/tools/perf/pmu-events/arch/x86/broadwellx/memory.json
new file mode 100644
index 000000000000..1204ea8ff30d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/memory.json
@@ -0,0 +1,649 @@
1[
2 {
3 "EventCode": "0x05",
4 "UMask": "0x1",
5 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache",
6 "Counter": "0,1,2,3",
7 "EventName": "MISALIGN_MEM_REF.LOADS",
8 "PublicDescription": "This event counts speculative cache-line split load uops dispatched to the L1 cache.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x05",
14 "UMask": "0x2",
15 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache",
16 "Counter": "0,1,2,3",
17 "EventName": "MISALIGN_MEM_REF.STORES",
18 "PublicDescription": "This event counts speculative cache line split store-address (STA) uops dispatched to the L1 cache.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x54",
24 "UMask": "0x1",
25 "BriefDescription": "Number of times a TSX line had a cache conflict",
26 "Counter": "0,1,2,3",
27 "EventName": "TX_MEM.ABORT_CONFLICT",
28 "PublicDescription": "Number of times a TSX line had a cache conflict.",
29 "SampleAfterValue": "2000003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x54",
34 "UMask": "0x2",
35 "BriefDescription": "Number of times a TSX Abort was triggered due to an evicted line caused by a transaction overflow",
36 "Counter": "0,1,2,3",
37 "EventName": "TX_MEM.ABORT_CAPACITY_WRITE",
38 "PublicDescription": "Number of times a TSX Abort was triggered due to an evicted line caused by a transaction overflow.",
39 "SampleAfterValue": "2000003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x54",
44 "UMask": "0x4",
45 "BriefDescription": "Number of times a TSX Abort was triggered due to a non-release/commit store to lock",
46 "Counter": "0,1,2,3",
47 "EventName": "TX_MEM.ABORT_HLE_STORE_TO_ELIDED_LOCK",
48 "PublicDescription": "Number of times a TSX Abort was triggered due to a non-release/commit store to lock.",
49 "SampleAfterValue": "2000003",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "EventCode": "0x54",
54 "UMask": "0x8",
55 "BriefDescription": "Number of times a TSX Abort was triggered due to commit but Lock Buffer not empty",
56 "Counter": "0,1,2,3",
57 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_NOT_EMPTY",
58 "PublicDescription": "Number of times a TSX Abort was triggered due to commit but Lock Buffer not empty.",
59 "SampleAfterValue": "2000003",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "EventCode": "0x54",
64 "UMask": "0x10",
65 "BriefDescription": "Number of times a TSX Abort was triggered due to release/commit but data and address mismatch",
66 "Counter": "0,1,2,3",
67 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_MISMATCH",
68 "PublicDescription": "Number of times a TSX Abort was triggered due to release/commit but data and address mismatch.",
69 "SampleAfterValue": "2000003",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "EventCode": "0x54",
74 "UMask": "0x20",
75 "BriefDescription": "Number of times a TSX Abort was triggered due to attempting an unsupported alignment from Lock Buffer",
76 "Counter": "0,1,2,3",
77 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_UNSUPPORTED_ALIGNMENT",
78 "PublicDescription": "Number of times a TSX Abort was triggered due to attempting an unsupported alignment from Lock Buffer.",
79 "SampleAfterValue": "2000003",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0x54",
84 "UMask": "0x40",
85 "BriefDescription": "Number of times we could not allocate Lock Buffer",
86 "Counter": "0,1,2,3",
87 "EventName": "TX_MEM.HLE_ELISION_BUFFER_FULL",
88 "PublicDescription": "Number of times we could not allocate Lock Buffer.",
89 "SampleAfterValue": "2000003",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x5d",
94 "UMask": "0x1",
95 "BriefDescription": "Counts the number of times a class of instructions that may cause a transactional abort was executed. Since this is the count of execution, it may not always cause a transactional abort.",
96 "Counter": "0,1,2,3",
97 "EventName": "TX_EXEC.MISC1",
98 "PublicDescription": "Unfriendly TSX abort triggered by a flowmarker.",
99 "SampleAfterValue": "2000003",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "EventCode": "0x5d",
104 "UMask": "0x2",
105 "BriefDescription": "Counts the number of times a class of instructions (e.g., vzeroupper) that may cause a transactional abort was executed inside a transactional region",
106 "Counter": "0,1,2,3",
107 "EventName": "TX_EXEC.MISC2",
108 "PublicDescription": "Unfriendly TSX abort triggered by a vzeroupper instruction.",
109 "SampleAfterValue": "2000003",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "EventCode": "0x5d",
114 "UMask": "0x4",
115 "BriefDescription": "Counts the number of times an instruction execution caused the transactional nest count supported to be exceeded",
116 "Counter": "0,1,2,3",
117 "EventName": "TX_EXEC.MISC3",
118 "PublicDescription": "Unfriendly TSX abort triggered by a nest count that is too deep.",
119 "SampleAfterValue": "2000003",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "EventCode": "0x5d",
124 "UMask": "0x8",
125 "BriefDescription": "Counts the number of times a XBEGIN instruction was executed inside an HLE transactional region.",
126 "Counter": "0,1,2,3",
127 "EventName": "TX_EXEC.MISC4",
128 "PublicDescription": "RTM region detected inside HLE.",
129 "SampleAfterValue": "2000003",
130 "CounterHTOff": "0,1,2,3,4,5,6,7"
131 },
132 {
133 "EventCode": "0x5d",
134 "UMask": "0x10",
135 "BriefDescription": "Counts the number of times an HLE XACQUIRE instruction was executed inside an RTM transactional region.",
136 "Counter": "0,1,2,3",
137 "EventName": "TX_EXEC.MISC5",
138 "SampleAfterValue": "2000003",
139 "CounterHTOff": "0,1,2,3,4,5,6,7"
140 },
141 {
142 "EventCode": "0xC3",
143 "UMask": "0x2",
144 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
145 "Counter": "0,1,2,3",
146 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
147 "PublicDescription": "This event counts the number of memory ordering Machine Clears detected. Memory Ordering Machine Clears can result from one of the following:\n1. memory disambiguation,\n2. external snoop, or\n3. cross SMT-HW-thread snoop (stores) hitting load buffer.",
148 "SampleAfterValue": "100003",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "EventCode": "0xc8",
153 "UMask": "0x1",
154 "BriefDescription": "Number of times we entered an HLE region; does not count nested transactions",
155 "Counter": "0,1,2,3",
156 "EventName": "HLE_RETIRED.START",
157 "PublicDescription": "Number of times we entered an HLE region\n does not count nested transactions.",
158 "SampleAfterValue": "2000003",
159 "CounterHTOff": "0,1,2,3,4,5,6,7"
160 },
161 {
162 "EventCode": "0xc8",
163 "UMask": "0x2",
164 "BriefDescription": "Number of times HLE commit succeeded",
165 "Counter": "0,1,2,3",
166 "EventName": "HLE_RETIRED.COMMIT",
167 "PublicDescription": "Number of times HLE commit succeeded.",
168 "SampleAfterValue": "2000003",
169 "CounterHTOff": "0,1,2,3,4,5,6,7"
170 },
171 {
172 "EventCode": "0xc8",
173 "UMask": "0x4",
174 "BriefDescription": "Number of times HLE abort was triggered",
175 "PEBS": "1",
176 "Counter": "0,1,2,3",
177 "EventName": "HLE_RETIRED.ABORTED",
178 "PublicDescription": "Number of times HLE abort was triggered.",
179 "SampleAfterValue": "2000003",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "EventCode": "0xc8",
184 "UMask": "0x8",
185 "BriefDescription": "Number of times an HLE execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
186 "Counter": "0,1,2,3",
187 "EventName": "HLE_RETIRED.ABORTED_MISC1",
188 "PublicDescription": "Number of times an HLE abort was attributed to a Memory condition (See TSX_Memory event for additional details).",
189 "SampleAfterValue": "2000003",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "EventCode": "0xc8",
194 "UMask": "0x10",
195 "BriefDescription": "Number of times an HLE execution aborted due to uncommon conditions",
196 "Counter": "0,1,2,3",
197 "EventName": "HLE_RETIRED.ABORTED_MISC2",
198 "PublicDescription": "Number of times the TSX watchdog signaled an HLE abort.",
199 "SampleAfterValue": "2000003",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "EventCode": "0xc8",
204 "UMask": "0x20",
205 "BriefDescription": "Number of times an HLE execution aborted due to HLE-unfriendly instructions",
206 "Counter": "0,1,2,3",
207 "EventName": "HLE_RETIRED.ABORTED_MISC3",
208 "PublicDescription": "Number of times a disallowed operation caused an HLE abort.",
209 "SampleAfterValue": "2000003",
210 "CounterHTOff": "0,1,2,3,4,5,6,7"
211 },
212 {
213 "EventCode": "0xc8",
214 "UMask": "0x40",
215 "BriefDescription": "Number of times an HLE execution aborted due to incompatible memory type",
216 "Counter": "0,1,2,3",
217 "EventName": "HLE_RETIRED.ABORTED_MISC4",
218 "PublicDescription": "Number of times HLE caused a fault.",
219 "SampleAfterValue": "2000003",
220 "CounterHTOff": "0,1,2,3,4,5,6,7"
221 },
222 {
223 "EventCode": "0xc8",
224 "UMask": "0x80",
225 "BriefDescription": "Number of times an HLE execution aborted due to none of the previous 4 categories (e.g. interrupts)",
226 "Counter": "0,1,2,3",
227 "EventName": "HLE_RETIRED.ABORTED_MISC5",
228 "PublicDescription": "Number of times HLE aborted and was not due to the abort conditions in subevents 3-6.",
229 "SampleAfterValue": "2000003",
230 "CounterHTOff": "0,1,2,3,4,5,6,7"
231 },
232 {
233 "EventCode": "0xc9",
234 "UMask": "0x1",
235 "BriefDescription": "Number of times we entered an RTM region; does not count nested transactions",
236 "Counter": "0,1,2,3",
237 "EventName": "RTM_RETIRED.START",
238 "PublicDescription": "Number of times we entered an RTM region\n does not count nested transactions.",
239 "SampleAfterValue": "2000003",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "EventCode": "0xc9",
244 "UMask": "0x2",
245 "BriefDescription": "Number of times RTM commit succeeded",
246 "Counter": "0,1,2,3",
247 "EventName": "RTM_RETIRED.COMMIT",
248 "PublicDescription": "Number of times RTM commit succeeded.",
249 "SampleAfterValue": "2000003",
250 "CounterHTOff": "0,1,2,3"
251 },
252 {
253 "EventCode": "0xc9",
254 "UMask": "0x4",
255 "BriefDescription": "Number of times RTM abort was triggered",
256 "PEBS": "1",
257 "Counter": "0,1,2,3",
258 "EventName": "RTM_RETIRED.ABORTED",
259 "PublicDescription": "Number of times RTM abort was triggered .",
260 "SampleAfterValue": "2000003",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "EventCode": "0xc9",
265 "UMask": "0x8",
266 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts)",
267 "Counter": "0,1,2,3",
268 "EventName": "RTM_RETIRED.ABORTED_MISC1",
269 "PublicDescription": "Number of times an RTM abort was attributed to a Memory condition (See TSX_Memory event for additional details).",
270 "SampleAfterValue": "2000003",
271 "CounterHTOff": "0,1,2,3"
272 },
273 {
274 "EventCode": "0xc9",
275 "UMask": "0x10",
276 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
277 "Counter": "0,1,2,3",
278 "EventName": "RTM_RETIRED.ABORTED_MISC2",
279 "PublicDescription": "Number of times the TSX watchdog signaled an RTM abort.",
280 "SampleAfterValue": "2000003",
281 "CounterHTOff": "0,1,2,3"
282 },
283 {
284 "EventCode": "0xc9",
285 "UMask": "0x20",
286 "BriefDescription": "Number of times an RTM execution aborted due to HLE-unfriendly instructions",
287 "Counter": "0,1,2,3",
288 "EventName": "RTM_RETIRED.ABORTED_MISC3",
289 "PublicDescription": "Number of times a disallowed operation caused an RTM abort.",
290 "SampleAfterValue": "2000003",
291 "CounterHTOff": "0,1,2,3"
292 },
293 {
294 "EventCode": "0xc9",
295 "UMask": "0x40",
296 "BriefDescription": "Number of times an RTM execution aborted due to incompatible memory type",
297 "Counter": "0,1,2,3",
298 "EventName": "RTM_RETIRED.ABORTED_MISC4",
299 "PublicDescription": "Number of times a RTM caused a fault.",
300 "SampleAfterValue": "2000003",
301 "CounterHTOff": "0,1,2,3"
302 },
303 {
304 "EventCode": "0xc9",
305 "UMask": "0x80",
306 "BriefDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt)",
307 "Counter": "0,1,2,3",
308 "EventName": "RTM_RETIRED.ABORTED_MISC5",
309 "PublicDescription": "Number of times RTM aborted and was not due to the abort conditions in subevents 3-6.",
310 "SampleAfterValue": "2000003",
311 "CounterHTOff": "0,1,2,3"
312 },
313 {
314 "EventCode": "0xCD",
315 "UMask": "0x1",
316 "BriefDescription": "Loads with latency value being above 4",
317 "PEBS": "2",
318 "MSRValue": "0x4",
319 "Counter": "3",
320 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
321 "MSRIndex": "0x3F6",
322 "Errata": "BDM100, BDM35",
323 "PublicDescription": "This event counts loads with latency value being above four.",
324 "TakenAlone": "1",
325 "SampleAfterValue": "100003",
326 "CounterHTOff": "3"
327 },
328 {
329 "EventCode": "0xCD",
330 "UMask": "0x1",
331 "BriefDescription": "Loads with latency value being above 8",
332 "PEBS": "2",
333 "MSRValue": "0x8",
334 "Counter": "3",
335 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
336 "MSRIndex": "0x3F6",
337 "Errata": "BDM100, BDM35",
338 "PublicDescription": "This event counts loads with latency value being above eight.",
339 "TakenAlone": "1",
340 "SampleAfterValue": "50021",
341 "CounterHTOff": "3"
342 },
343 {
344 "EventCode": "0xCD",
345 "UMask": "0x1",
346 "BriefDescription": "Loads with latency value being above 16",
347 "PEBS": "2",
348 "MSRValue": "0x10",
349 "Counter": "3",
350 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
351 "MSRIndex": "0x3F6",
352 "Errata": "BDM100, BDM35",
353 "PublicDescription": "This event counts loads with latency value being above 16.",
354 "TakenAlone": "1",
355 "SampleAfterValue": "20011",
356 "CounterHTOff": "3"
357 },
358 {
359 "EventCode": "0xCD",
360 "UMask": "0x1",
361 "BriefDescription": "Loads with latency value being above 32",
362 "PEBS": "2",
363 "MSRValue": "0x20",
364 "Counter": "3",
365 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
366 "MSRIndex": "0x3F6",
367 "Errata": "BDM100, BDM35",
368 "PublicDescription": "This event counts loads with latency value being above 32.",
369 "TakenAlone": "1",
370 "SampleAfterValue": "100007",
371 "CounterHTOff": "3"
372 },
373 {
374 "EventCode": "0xCD",
375 "UMask": "0x1",
376 "BriefDescription": "Loads with latency value being above 64",
377 "PEBS": "2",
378 "MSRValue": "0x40",
379 "Counter": "3",
380 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
381 "MSRIndex": "0x3F6",
382 "Errata": "BDM100, BDM35",
383 "PublicDescription": "This event counts loads with latency value being above 64.",
384 "TakenAlone": "1",
385 "SampleAfterValue": "2003",
386 "CounterHTOff": "3"
387 },
388 {
389 "EventCode": "0xCD",
390 "UMask": "0x1",
391 "BriefDescription": "Loads with latency value being above 128",
392 "PEBS": "2",
393 "MSRValue": "0x80",
394 "Counter": "3",
395 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
396 "MSRIndex": "0x3F6",
397 "Errata": "BDM100, BDM35",
398 "PublicDescription": "This event counts loads with latency value being above 128.",
399 "TakenAlone": "1",
400 "SampleAfterValue": "1009",
401 "CounterHTOff": "3"
402 },
403 {
404 "EventCode": "0xCD",
405 "UMask": "0x1",
406 "BriefDescription": "Loads with latency value being above 256",
407 "PEBS": "2",
408 "MSRValue": "0x100",
409 "Counter": "3",
410 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
411 "MSRIndex": "0x3F6",
412 "Errata": "BDM100, BDM35",
413 "PublicDescription": "This event counts loads with latency value being above 256.",
414 "TakenAlone": "1",
415 "SampleAfterValue": "503",
416 "CounterHTOff": "3"
417 },
418 {
419 "EventCode": "0xCD",
420 "UMask": "0x1",
421 "BriefDescription": "Loads with latency value being above 512",
422 "PEBS": "2",
423 "MSRValue": "0x200",
424 "Counter": "3",
425 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
426 "MSRIndex": "0x3F6",
427 "Errata": "BDM100, BDM35",
428 "PublicDescription": "This event counts loads with latency value being above 512.",
429 "TakenAlone": "1",
430 "SampleAfterValue": "101",
431 "CounterHTOff": "3"
432 },
433 {
434 "Offcore": "1",
435 "EventCode": "0xB7, 0xBB",
436 "UMask": "0x1",
437 "BriefDescription": "Counts all requests that miss in the L3",
438 "MSRValue": "0x3fbfc08fff",
439 "Counter": "0,1,2,3",
440 "EventName": "OFFCORE_RESPONSE.ALL_REQUESTS.LLC_MISS.ANY_RESPONSE",
441 "MSRIndex": "0x1a6,0x1a7",
442 "SampleAfterValue": "100003",
443 "CounterHTOff": "0,1,2,3"
444 },
445 {
446 "Offcore": "1",
447 "EventCode": "0xB7, 0xBB",
448 "UMask": "0x1",
449 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and clean or shared data is transferred from remote cache",
450 "MSRValue": "0x087fc007f7",
451 "Counter": "0,1,2,3",
452 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_HIT_FORWARD",
453 "MSRIndex": "0x1a6,0x1a7",
454 "SampleAfterValue": "100003",
455 "CounterHTOff": "0,1,2,3"
456 },
457 {
458 "Offcore": "1",
459 "EventCode": "0xB7, 0xBB",
460 "UMask": "0x1",
461 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and the modified data is transferred from remote cache",
462 "MSRValue": "0x103fc007f7",
463 "Counter": "0,1,2,3",
464 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_HITM",
465 "MSRIndex": "0x1a6,0x1a7",
466 "SampleAfterValue": "100003",
467 "CounterHTOff": "0,1,2,3"
468 },
469 {
470 "Offcore": "1",
471 "EventCode": "0xB7, 0xBB",
472 "UMask": "0x1",
473 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and the data is returned from remote dram",
474 "MSRValue": "0x063bc007f7",
475 "Counter": "0,1,2,3",
476 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_DRAM",
477 "MSRIndex": "0x1a6,0x1a7",
478 "SampleAfterValue": "100003",
479 "CounterHTOff": "0,1,2,3"
480 },
481 {
482 "Offcore": "1",
483 "EventCode": "0xB7, 0xBB",
484 "UMask": "0x1",
485 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and the data is returned from local dram",
486 "MSRValue": "0x06040007f7",
487 "Counter": "0,1,2,3",
488 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.LOCAL_DRAM",
489 "MSRIndex": "0x1a6,0x1a7",
490 "SampleAfterValue": "100003",
491 "CounterHTOff": "0,1,2,3"
492 },
493 {
494 "Offcore": "1",
495 "EventCode": "0xB7, 0xBB",
496 "UMask": "0x1",
497 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss in the L3",
498 "MSRValue": "0x3fbfc007f7",
499 "Counter": "0,1,2,3",
500 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.ANY_RESPONSE",
501 "MSRIndex": "0x1a6,0x1a7",
502 "SampleAfterValue": "100003",
503 "CounterHTOff": "0,1,2,3"
504 },
505 {
506 "Offcore": "1",
507 "EventCode": "0xB7, 0xBB",
508 "UMask": "0x1",
509 "BriefDescription": "Counts all demand & prefetch code reads that miss the L3 and the data is returned from local dram",
510 "MSRValue": "0x0604000244",
511 "Counter": "0,1,2,3",
512 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.LOCAL_DRAM",
513 "MSRIndex": "0x1a6,0x1a7",
514 "SampleAfterValue": "100003",
515 "CounterHTOff": "0,1,2,3"
516 },
517 {
518 "Offcore": "1",
519 "EventCode": "0xB7, 0xBB",
520 "UMask": "0x1",
521 "BriefDescription": "Counts all demand & prefetch code reads that miss in the L3",
522 "MSRValue": "0x3fbfc00244",
523 "Counter": "0,1,2,3",
524 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.ANY_RESPONSE",
525 "MSRIndex": "0x1a6,0x1a7",
526 "SampleAfterValue": "100003",
527 "CounterHTOff": "0,1,2,3"
528 },
529 {
530 "Offcore": "1",
531 "EventCode": "0xB7, 0xBB",
532 "UMask": "0x1",
533 "BriefDescription": "Counts all demand & prefetch RFOs that miss the L3 and the data is returned from local dram",
534 "MSRValue": "0x0604000122",
535 "Counter": "0,1,2,3",
536 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_MISS.LOCAL_DRAM",
537 "MSRIndex": "0x1a6,0x1a7",
538 "SampleAfterValue": "100003",
539 "CounterHTOff": "0,1,2,3"
540 },
541 {
542 "Offcore": "1",
543 "EventCode": "0xB7, 0xBB",
544 "UMask": "0x1",
545 "BriefDescription": "Counts all demand & prefetch RFOs that miss in the L3",
546 "MSRValue": "0x3fbfc00122",
547 "Counter": "0,1,2,3",
548 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_MISS.ANY_RESPONSE",
549 "MSRIndex": "0x1a6,0x1a7",
550 "SampleAfterValue": "100003",
551 "CounterHTOff": "0,1,2,3"
552 },
553 {
554 "Offcore": "1",
555 "EventCode": "0xB7, 0xBB",
556 "UMask": "0x1",
557 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and clean or shared data is transferred from remote cache",
558 "MSRValue": "0x087fc00091",
559 "Counter": "0,1,2,3",
560 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.REMOTE_HIT_FORWARD",
561 "MSRIndex": "0x1a6,0x1a7",
562 "SampleAfterValue": "100003",
563 "CounterHTOff": "0,1,2,3"
564 },
565 {
566 "Offcore": "1",
567 "EventCode": "0xB7, 0xBB",
568 "UMask": "0x1",
569 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and the modified data is transferred from remote cache",
570 "MSRValue": "0x103fc00091",
571 "Counter": "0,1,2,3",
572 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.REMOTE_HITM",
573 "MSRIndex": "0x1a6,0x1a7",
574 "SampleAfterValue": "100003",
575 "CounterHTOff": "0,1,2,3"
576 },
577 {
578 "Offcore": "1",
579 "EventCode": "0xB7, 0xBB",
580 "UMask": "0x1",
581 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and the data is returned from remote dram",
582 "MSRValue": "0x063bc00091",
583 "Counter": "0,1,2,3",
584 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.REMOTE_DRAM",
585 "MSRIndex": "0x1a6,0x1a7",
586 "SampleAfterValue": "100003",
587 "CounterHTOff": "0,1,2,3"
588 },
589 {
590 "Offcore": "1",
591 "EventCode": "0xB7, 0xBB",
592 "UMask": "0x1",
593 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and the data is returned from local dram",
594 "MSRValue": "0x0604000091",
595 "Counter": "0,1,2,3",
596 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.LOCAL_DRAM",
597 "MSRIndex": "0x1a6,0x1a7",
598 "SampleAfterValue": "100003",
599 "CounterHTOff": "0,1,2,3"
600 },
601 {
602 "Offcore": "1",
603 "EventCode": "0xB7, 0xBB",
604 "UMask": "0x1",
605 "BriefDescription": "Counts all demand & prefetch data reads that miss in the L3",
606 "MSRValue": "0x3fbfc00091",
607 "Counter": "0,1,2,3",
608 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.ANY_RESPONSE",
609 "MSRIndex": "0x1a6,0x1a7",
610 "SampleAfterValue": "100003",
611 "CounterHTOff": "0,1,2,3"
612 },
613 {
614 "Offcore": "1",
615 "EventCode": "0xB7, 0xBB",
616 "UMask": "0x1",
617 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that miss in the L3",
618 "MSRValue": "0x3fbfc00200",
619 "Counter": "0,1,2,3",
620 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_MISS.ANY_RESPONSE",
621 "MSRIndex": "0x1a6,0x1a7",
622 "SampleAfterValue": "100003",
623 "CounterHTOff": "0,1,2,3"
624 },
625 {
626 "Offcore": "1",
627 "EventCode": "0xB7, 0xBB",
628 "UMask": "0x1",
629 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that miss in the L3",
630 "MSRValue": "0x3fbfc00100",
631 "Counter": "0,1,2,3",
632 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_MISS.ANY_RESPONSE",
633 "MSRIndex": "0x1a6,0x1a7",
634 "SampleAfterValue": "100003",
635 "CounterHTOff": "0,1,2,3"
636 },
637 {
638 "Offcore": "1",
639 "EventCode": "0xB7, 0xBB",
640 "UMask": "0x1",
641 "BriefDescription": "Counts all demand data writes (RFOs) that miss the L3 and the modified data is transferred from remote cache",
642 "MSRValue": "0x103fc00002",
643 "Counter": "0,1,2,3",
644 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM",
645 "MSRIndex": "0x1a6,0x1a7",
646 "SampleAfterValue": "100003",
647 "CounterHTOff": "0,1,2,3"
648 }
649] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/other.json b/tools/perf/pmu-events/arch/x86/broadwellx/other.json
new file mode 100644
index 000000000000..718fcb1db2ee
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/other.json
@@ -0,0 +1,44 @@
1[
2 {
3 "EventCode": "0x5C",
4 "UMask": "0x1",
5 "BriefDescription": "Unhalted core cycles when the thread is in ring 0",
6 "Counter": "0,1,2,3",
7 "EventName": "CPL_CYCLES.RING0",
8 "PublicDescription": "This event counts the unhalted core cycles during which the thread is in the ring 0 privileged mode.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x5C",
14 "UMask": "0x2",
15 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3",
16 "Counter": "0,1,2,3",
17 "EventName": "CPL_CYCLES.RING123",
18 "PublicDescription": "This event counts unhalted core cycles during which the thread is in rings 1, 2, or 3.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EdgeDetect": "1",
24 "EventCode": "0x5C",
25 "UMask": "0x1",
26 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0",
27 "Counter": "0,1,2,3",
28 "EventName": "CPL_CYCLES.RING0_TRANS",
29 "CounterMask": "1",
30 "PublicDescription": "This event counts when there is a transition from ring 1,2 or 3 to ring0.",
31 "SampleAfterValue": "100007",
32 "CounterHTOff": "0,1,2,3,4,5,6,7"
33 },
34 {
35 "EventCode": "0x63",
36 "UMask": "0x1",
37 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock",
38 "Counter": "0,1,2,3",
39 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
40 "PublicDescription": "This event counts cycles in which the L1 and L2 are locked due to a UC lock or split lock. A lock is asserted in case of locked memory access, due to noncacheable memory, locked operation that spans two cache lines, or a page walk from the noncacheable page table. L1D and L2 locks have a very high performance penalty and it is highly recommended to avoid such access.",
41 "SampleAfterValue": "2000003",
42 "CounterHTOff": "0,1,2,3,4,5,6,7"
43 }
44] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/pipeline.json b/tools/perf/pmu-events/arch/x86/broadwellx/pipeline.json
new file mode 100644
index 000000000000..02b4e1035f2d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/pipeline.json
@@ -0,0 +1,1417 @@
1[
2 {
3 "EventCode": "0x00",
4 "UMask": "0x1",
5 "BriefDescription": "Instructions retired from execution.",
6 "Counter": "Fixed counter 1",
7 "EventName": "INST_RETIRED.ANY",
8 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. \nNotes: INST_RETIRED.ANY is counted by a designated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. INST_RETIRED.ANY_P is counted by a programmable counter and it is an architectural performance event. \nCounting: Faulting executions of GETSEC/VM entry/VM Exit/MWait will not count as retired instructions.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "Fixed counter 1"
11 },
12 {
13 "EventCode": "0x00",
14 "UMask": "0x2",
15 "BriefDescription": "Core cycles when the thread is not in halt state",
16 "Counter": "Fixed counter 2",
17 "EventName": "CPU_CLK_UNHALTED.THREAD",
18 "PublicDescription": "This event counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "Fixed counter 2"
21 },
22 {
23 "EventCode": "0x00",
24 "UMask": "0x3",
25 "BriefDescription": "Reference cycles when the core is not in halt state.",
26 "Counter": "Fixed counter 3",
27 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
28 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. This event has a constant ratio with the CPU_CLK_UNHALTED.REF_XCLK event. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. \nNote: On all current platforms this event stops counting during 'throttling (TM)' states duty off periods the processor is 'halted'. This event is clocked by base clock (100 Mhz) on Sandy Bridge. The counter update is done at a lower clock rate then the core clock the overflow status bit for this counter may appear 'sticky'. After the counter has overflowed and software clears the overflow status bit and resets the counter to less than MAX. The reset value to the counter is not clocked immediately so the overflow status bit will flip 'high (1)' and generate another PMI (if enabled) after which the reset value gets clocked into the counter. Therefore, software will get the interrupt, read the overflow status bit '1 for bit 34 while the counter value is less than MAX. Software should ignore this case.",
29 "SampleAfterValue": "2000003",
30 "CounterHTOff": "Fixed counter 3"
31 },
32 {
33 "EventCode": "0x03",
34 "UMask": "0x2",
35 "BriefDescription": "Cases when loads get true Block-on-Store blocking code preventing store forwarding",
36 "Counter": "0,1,2,3",
37 "EventName": "LD_BLOCKS.STORE_FORWARD",
38 "PublicDescription": "This event counts how many times the load operation got the true Block-on-Store blocking code preventing store forwarding. This includes cases when:\n - preceding store conflicts with the load (incomplete overlap);\n - store forwarding is impossible due to u-arch limitations;\n - preceding lock RMW operations are not forwarded;\n - store has the no-forward bit set (uncacheable/page-split/masked stores);\n - all-blocking stores are used (mostly, fences and port I/O);\nand others.\nThe most common case is a load blocked due to its address range overlapping with a preceding smaller uncompleted store. Note: This event does not take into account cases of out-of-SW-control (for example, SbTailHit), unknown physical STA, and cases of blocking loads on store due to being non-WB memory type or a lock. These cases are covered by other events.\nSee the table of not supported store forwards in the Optimization Guide.",
39 "SampleAfterValue": "100003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0x03",
44 "UMask": "0x8",
45 "BriefDescription": "This event counts the number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
46 "Counter": "0,1,2,3",
47 "EventName": "LD_BLOCKS.NO_SR",
48 "SampleAfterValue": "100003",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "EventCode": "0x07",
53 "UMask": "0x1",
54 "BriefDescription": "False dependencies in MOB due to partial compare",
55 "Counter": "0,1,2,3",
56 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
57 "PublicDescription": "This event counts false dependencies in MOB when the partial comparison upon loose net check and dependency was resolved by the Enhanced Loose net mechanism. This may not result in high performance penalties. Loose net checks can fail when loads and stores are 4k aliased.",
58 "SampleAfterValue": "100003",
59 "CounterHTOff": "0,1,2,3,4,5,6,7"
60 },
61 {
62 "EventCode": "0x0D",
63 "UMask": "0x8",
64 "BriefDescription": "Cycles when Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the thread",
65 "Counter": "0,1,2,3",
66 "EventName": "INT_MISC.RAT_STALL_CYCLES",
67 "PublicDescription": "This event counts the number of cycles during which Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the current thread. This also includes the cycles during which the Allocator is serving another thread.",
68 "SampleAfterValue": "2000003",
69 "CounterHTOff": "0,1,2,3,4,5,6,7"
70 },
71 {
72 "EventCode": "0x0D",
73 "UMask": "0x3",
74 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...)",
75 "Counter": "0,1,2,3",
76 "EventName": "INT_MISC.RECOVERY_CYCLES",
77 "CounterMask": "1",
78 "PublicDescription": "Cycles checkpoints in Resource Allocation Table (RAT) are recovering from JEClear or machine clear.",
79 "SampleAfterValue": "2000003",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0x0E",
84 "UMask": "0x1",
85 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
86 "Counter": "0,1,2,3",
87 "EventName": "UOPS_ISSUED.ANY",
88 "PublicDescription": "This event counts the number of Uops issued by the Resource Allocation Table (RAT) to the reservation station (RS).",
89 "SampleAfterValue": "2000003",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x0E",
94 "UMask": "0x10",
95 "BriefDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive; added by GSR u-arch.",
96 "Counter": "0,1,2,3",
97 "EventName": "UOPS_ISSUED.FLAGS_MERGE",
98 "PublicDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive\n added by GSR u-arch.",
99 "SampleAfterValue": "2000003",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "EventCode": "0x0E",
104 "UMask": "0x20",
105 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
106 "Counter": "0,1,2,3",
107 "EventName": "UOPS_ISSUED.SLOW_LEA",
108 "SampleAfterValue": "2000003",
109 "CounterHTOff": "0,1,2,3,4,5,6,7"
110 },
111 {
112 "EventCode": "0x0E",
113 "UMask": "0x40",
114 "BriefDescription": "Number of Multiply packed/scalar single precision uops allocated.",
115 "Counter": "0,1,2,3",
116 "EventName": "UOPS_ISSUED.SINGLE_MUL",
117 "SampleAfterValue": "2000003",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "Invert": "1",
122 "EventCode": "0x0E",
123 "UMask": "0x1",
124 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread",
125 "Counter": "0,1,2,3",
126 "EventName": "UOPS_ISSUED.STALL_CYCLES",
127 "CounterMask": "1",
128 "PublicDescription": "This event counts cycles during which the Resource Allocation Table (RAT) does not issue any Uops to the reservation station (RS) for the current thread.",
129 "SampleAfterValue": "2000003",
130 "CounterHTOff": "0,1,2,3"
131 },
132 {
133 "EventCode": "0x14",
134 "UMask": "0x1",
135 "BriefDescription": "Cycles when divider is busy executing divide operations",
136 "Counter": "0,1,2,3",
137 "EventName": "ARITH.FPU_DIV_ACTIVE",
138 "PublicDescription": "This event counts the number of the divide operations executed. Uses edge-detect and a cmask value of 1 on ARITH.FPU_DIV_ACTIVE to get the number of the divide operations executed.",
139 "SampleAfterValue": "2000003",
140 "CounterHTOff": "0,1,2,3,4,5,6,7"
141 },
142 {
143 "EventCode": "0x3C",
144 "UMask": "0x1",
145 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
146 "Counter": "0,1,2,3",
147 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
148 "PublicDescription": "This is a fixed-frequency event programmed to general counters. It counts when the core is unhalted at 100 Mhz.",
149 "SampleAfterValue": "2000003",
150 "CounterHTOff": "0,1,2,3,4,5,6,7"
151 },
152 {
153 "EventCode": "0x3c",
154 "UMask": "0x2",
155 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
156 "Counter": "0,1,2,3",
157 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
158 "SampleAfterValue": "2000003",
159 "CounterHTOff": "0,1,2,3"
160 },
161 {
162 "EventCode": "0x4c",
163 "UMask": "0x1",
164 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch",
165 "Counter": "0,1,2,3",
166 "EventName": "LOAD_HIT_PRE.SW_PF",
167 "PublicDescription": "This event counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the software prefetch. It can also be incremented by some lock instructions. So it should only be used with profiling so that the locks can be excluded by asm inspection of the nearby instructions.",
168 "SampleAfterValue": "100003",
169 "CounterHTOff": "0,1,2,3,4,5,6,7"
170 },
171 {
172 "EventCode": "0x4C",
173 "UMask": "0x2",
174 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch",
175 "Counter": "0,1,2,3",
176 "EventName": "LOAD_HIT_PRE.HW_PF",
177 "PublicDescription": "This event counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the hardware prefetch.",
178 "SampleAfterValue": "100003",
179 "CounterHTOff": "0,1,2,3,4,5,6,7"
180 },
181 {
182 "EventCode": "0x58",
183 "UMask": "0x1",
184 "BriefDescription": "Number of integer Move Elimination candidate uops that were eliminated.",
185 "Counter": "0,1,2,3",
186 "EventName": "MOVE_ELIMINATION.INT_ELIMINATED",
187 "SampleAfterValue": "1000003",
188 "CounterHTOff": "0,1,2,3,4,5,6,7"
189 },
190 {
191 "EventCode": "0x58",
192 "UMask": "0x2",
193 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were eliminated.",
194 "Counter": "0,1,2,3",
195 "EventName": "MOVE_ELIMINATION.SIMD_ELIMINATED",
196 "SampleAfterValue": "1000003",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "EventCode": "0x58",
201 "UMask": "0x4",
202 "BriefDescription": "Number of integer Move Elimination candidate uops that were not eliminated.",
203 "Counter": "0,1,2,3",
204 "EventName": "MOVE_ELIMINATION.INT_NOT_ELIMINATED",
205 "SampleAfterValue": "1000003",
206 "CounterHTOff": "0,1,2,3,4,5,6,7"
207 },
208 {
209 "EventCode": "0x58",
210 "UMask": "0x8",
211 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were not eliminated.",
212 "Counter": "0,1,2,3",
213 "EventName": "MOVE_ELIMINATION.SIMD_NOT_ELIMINATED",
214 "SampleAfterValue": "1000003",
215 "CounterHTOff": "0,1,2,3,4,5,6,7"
216 },
217 {
218 "EventCode": "0x5E",
219 "UMask": "0x1",
220 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
221 "Counter": "0,1,2,3",
222 "EventName": "RS_EVENTS.EMPTY_CYCLES",
223 "PublicDescription": "This event counts cycles during which the reservation station (RS) is empty for the thread.\nNote: In ST-mode, not active thread should drive 0. This is usually caused by severely costly branch mispredictions, or allocator/FE issues.",
224 "SampleAfterValue": "2000003",
225 "CounterHTOff": "0,1,2,3,4,5,6,7"
226 },
227 {
228 "EventCode": "0x87",
229 "UMask": "0x1",
230 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
231 "Counter": "0,1,2,3",
232 "EventName": "ILD_STALL.LCP",
233 "PublicDescription": "This event counts stalls occured due to changing prefix length (66, 67 or REX.W when they change the length of the decoded instruction). Occurrences counting is proportional to the number of prefixes in a 16B-line. This may result in the following penalties: three-cycle penalty for each LCP in a 16-byte chunk.",
234 "SampleAfterValue": "2000003",
235 "CounterHTOff": "0,1,2,3,4,5,6,7"
236 },
237 {
238 "EventCode": "0x88",
239 "UMask": "0x41",
240 "BriefDescription": "Not taken macro-conditional branches",
241 "Counter": "0,1,2,3",
242 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
243 "PublicDescription": "This event counts not taken macro-conditional branch instructions.",
244 "SampleAfterValue": "200003",
245 "CounterHTOff": "0,1,2,3,4,5,6,7"
246 },
247 {
248 "EventCode": "0x88",
249 "UMask": "0x81",
250 "BriefDescription": "Taken speculative and retired macro-conditional branches",
251 "Counter": "0,1,2,3",
252 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
253 "PublicDescription": "This event counts taken speculative and retired macro-conditional branch instructions.",
254 "SampleAfterValue": "200003",
255 "CounterHTOff": "0,1,2,3,4,5,6,7"
256 },
257 {
258 "EventCode": "0x88",
259 "UMask": "0x82",
260 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects",
261 "Counter": "0,1,2,3",
262 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
263 "PublicDescription": "This event counts taken speculative and retired macro-conditional branch instructions excluding calls and indirect branches.",
264 "SampleAfterValue": "200003",
265 "CounterHTOff": "0,1,2,3,4,5,6,7"
266 },
267 {
268 "EventCode": "0x88",
269 "UMask": "0x84",
270 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns",
271 "Counter": "0,1,2,3",
272 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
273 "PublicDescription": "This event counts taken speculative and retired indirect branches excluding calls and return branches.",
274 "SampleAfterValue": "200003",
275 "CounterHTOff": "0,1,2,3,4,5,6,7"
276 },
277 {
278 "EventCode": "0x88",
279 "UMask": "0x88",
280 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic",
281 "Counter": "0,1,2,3",
282 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
283 "PublicDescription": "This event counts taken speculative and retired indirect branches that have a return mnemonic.",
284 "SampleAfterValue": "200003",
285 "CounterHTOff": "0,1,2,3,4,5,6,7"
286 },
287 {
288 "EventCode": "0x88",
289 "UMask": "0x90",
290 "BriefDescription": "Taken speculative and retired direct near calls",
291 "Counter": "0,1,2,3",
292 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
293 "PublicDescription": "This event counts taken speculative and retired direct near calls.",
294 "SampleAfterValue": "200003",
295 "CounterHTOff": "0,1,2,3,4,5,6,7"
296 },
297 {
298 "EventCode": "0x88",
299 "UMask": "0xa0",
300 "BriefDescription": "Taken speculative and retired indirect calls",
301 "Counter": "0,1,2,3",
302 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
303 "PublicDescription": "This event counts taken speculative and retired indirect calls including both register and memory indirect.",
304 "SampleAfterValue": "200003",
305 "CounterHTOff": "0,1,2,3,4,5,6,7"
306 },
307 {
308 "EventCode": "0x88",
309 "UMask": "0xc1",
310 "BriefDescription": "Speculative and retired macro-conditional branches",
311 "Counter": "0,1,2,3",
312 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
313 "PublicDescription": "This event counts both taken and not taken speculative and retired macro-conditional branch instructions.",
314 "SampleAfterValue": "200003",
315 "CounterHTOff": "0,1,2,3,4,5,6,7"
316 },
317 {
318 "EventCode": "0x88",
319 "UMask": "0xc2",
320 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects",
321 "Counter": "0,1,2,3",
322 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
323 "PublicDescription": "This event counts both taken and not taken speculative and retired macro-unconditional branch instructions, excluding calls and indirects.",
324 "SampleAfterValue": "200003",
325 "CounterHTOff": "0,1,2,3,4,5,6,7"
326 },
327 {
328 "EventCode": "0x88",
329 "UMask": "0xc4",
330 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns",
331 "Counter": "0,1,2,3",
332 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
333 "PublicDescription": "This event counts both taken and not taken speculative and retired indirect branches excluding calls and return branches.",
334 "SampleAfterValue": "200003",
335 "CounterHTOff": "0,1,2,3,4,5,6,7"
336 },
337 {
338 "EventCode": "0x88",
339 "UMask": "0xc8",
340 "BriefDescription": "Speculative and retired indirect return branches.",
341 "Counter": "0,1,2,3",
342 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
343 "PublicDescription": "This event counts both taken and not taken speculative and retired indirect branches that have a return mnemonic.",
344 "SampleAfterValue": "200003",
345 "CounterHTOff": "0,1,2,3,4,5,6,7"
346 },
347 {
348 "EventCode": "0x88",
349 "UMask": "0xd0",
350 "BriefDescription": "Speculative and retired direct near calls",
351 "Counter": "0,1,2,3",
352 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
353 "PublicDescription": "This event counts both taken and not taken speculative and retired direct near calls.",
354 "SampleAfterValue": "200003",
355 "CounterHTOff": "0,1,2,3,4,5,6,7"
356 },
357 {
358 "EventCode": "0x88",
359 "UMask": "0xff",
360 "BriefDescription": "Speculative and retired branches",
361 "Counter": "0,1,2,3",
362 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
363 "PublicDescription": "This event counts both taken and not taken speculative and retired branch instructions.",
364 "SampleAfterValue": "200003",
365 "CounterHTOff": "0,1,2,3,4,5,6,7"
366 },
367 {
368 "EventCode": "0x89",
369 "UMask": "0x41",
370 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches",
371 "Counter": "0,1,2,3",
372 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
373 "PublicDescription": "This event counts not taken speculative and retired mispredicted macro conditional branch instructions.",
374 "SampleAfterValue": "200003",
375 "CounterHTOff": "0,1,2,3,4,5,6,7"
376 },
377 {
378 "EventCode": "0x89",
379 "UMask": "0x81",
380 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches",
381 "Counter": "0,1,2,3",
382 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
383 "PublicDescription": "This event counts taken speculative and retired mispredicted macro conditional branch instructions.",
384 "SampleAfterValue": "200003",
385 "CounterHTOff": "0,1,2,3,4,5,6,7"
386 },
387 {
388 "EventCode": "0x89",
389 "UMask": "0x84",
390 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns",
391 "Counter": "0,1,2,3",
392 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
393 "PublicDescription": "This event counts taken speculative and retired mispredicted indirect branches excluding calls and returns.",
394 "SampleAfterValue": "200003",
395 "CounterHTOff": "0,1,2,3,4,5,6,7"
396 },
397 {
398 "EventCode": "0x89",
399 "UMask": "0x88",
400 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic",
401 "Counter": "0,1,2,3",
402 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
403 "PublicDescription": "This event counts taken speculative and retired mispredicted indirect branches that have a return mnemonic.",
404 "SampleAfterValue": "200003",
405 "CounterHTOff": "0,1,2,3,4,5,6,7"
406 },
407 {
408 "EventCode": "0x89",
409 "UMask": "0xc1",
410 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
411 "Counter": "0,1,2,3",
412 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
413 "PublicDescription": "This event counts both taken and not taken speculative and retired mispredicted macro conditional branch instructions.",
414 "SampleAfterValue": "200003",
415 "CounterHTOff": "0,1,2,3,4,5,6,7"
416 },
417 {
418 "EventCode": "0x89",
419 "UMask": "0xc4",
420 "BriefDescription": "Mispredicted indirect branches excluding calls and returns",
421 "Counter": "0,1,2,3",
422 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
423 "PublicDescription": "This event counts both taken and not taken mispredicted indirect branches excluding calls and returns.",
424 "SampleAfterValue": "200003",
425 "CounterHTOff": "0,1,2,3,4,5,6,7"
426 },
427 {
428 "EventCode": "0x89",
429 "UMask": "0xff",
430 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
431 "Counter": "0,1,2,3",
432 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
433 "PublicDescription": "This event counts both taken and not taken speculative and retired mispredicted branch instructions.",
434 "SampleAfterValue": "200003",
435 "CounterHTOff": "0,1,2,3,4,5,6,7"
436 },
437 {
438 "EventCode": "0xA1",
439 "UMask": "0x1",
440 "BriefDescription": "Cycles per thread when uops are executed in port 0",
441 "Counter": "0,1,2,3",
442 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
443 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 0.",
444 "SampleAfterValue": "2000003",
445 "CounterHTOff": "0,1,2,3,4,5,6,7"
446 },
447 {
448 "EventCode": "0xA1",
449 "UMask": "0x2",
450 "BriefDescription": "Cycles per thread when uops are executed in port 1",
451 "Counter": "0,1,2,3",
452 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
453 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 1.",
454 "SampleAfterValue": "2000003",
455 "CounterHTOff": "0,1,2,3,4,5,6,7"
456 },
457 {
458 "EventCode": "0xA1",
459 "UMask": "0x4",
460 "BriefDescription": "Cycles per thread when uops are executed in port 2",
461 "Counter": "0,1,2,3",
462 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
463 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 2.",
464 "SampleAfterValue": "2000003",
465 "CounterHTOff": "0,1,2,3,4,5,6,7"
466 },
467 {
468 "EventCode": "0xA1",
469 "UMask": "0x8",
470 "BriefDescription": "Cycles per thread when uops are executed in port 3",
471 "Counter": "0,1,2,3",
472 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
473 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 3.",
474 "SampleAfterValue": "2000003",
475 "CounterHTOff": "0,1,2,3,4,5,6,7"
476 },
477 {
478 "EventCode": "0xA1",
479 "UMask": "0x10",
480 "BriefDescription": "Cycles per thread when uops are executed in port 4",
481 "Counter": "0,1,2,3",
482 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
483 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 4.",
484 "SampleAfterValue": "2000003",
485 "CounterHTOff": "0,1,2,3,4,5,6,7"
486 },
487 {
488 "EventCode": "0xA1",
489 "UMask": "0x20",
490 "BriefDescription": "Cycles per thread when uops are executed in port 5",
491 "Counter": "0,1,2,3",
492 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
493 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 5.",
494 "SampleAfterValue": "2000003",
495 "CounterHTOff": "0,1,2,3,4,5,6,7"
496 },
497 {
498 "EventCode": "0xA1",
499 "UMask": "0x40",
500 "BriefDescription": "Cycles per thread when uops are executed in port 6",
501 "Counter": "0,1,2,3",
502 "EventName": "UOPS_DISPATCHED_PORT.PORT_6",
503 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 6.",
504 "SampleAfterValue": "2000003",
505 "CounterHTOff": "0,1,2,3,4,5,6,7"
506 },
507 {
508 "EventCode": "0xA1",
509 "UMask": "0x80",
510 "BriefDescription": "Cycles per thread when uops are executed in port 7",
511 "Counter": "0,1,2,3",
512 "EventName": "UOPS_DISPATCHED_PORT.PORT_7",
513 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 7.",
514 "SampleAfterValue": "2000003",
515 "CounterHTOff": "0,1,2,3,4,5,6,7"
516 },
517 {
518 "EventCode": "0xA2",
519 "UMask": "0x1",
520 "BriefDescription": "Resource-related stall cycles",
521 "Counter": "0,1,2,3",
522 "EventName": "RESOURCE_STALLS.ANY",
523 "PublicDescription": "This event counts resource-related stall cycles. Reasons for stalls can be as follows:\n - *any* u-arch structure got full (LB, SB, RS, ROB, BOB, LM, Physical Register Reclaim Table (PRRT), or Physical History Table (PHT) slots)\n - *any* u-arch structure got empty (like INT/SIMD FreeLists)\n - FPU control word (FPCW), MXCSR\nand others. This counts cycles that the pipeline backend blocked uop delivery from the front end.",
524 "SampleAfterValue": "2000003",
525 "CounterHTOff": "0,1,2,3,4,5,6,7"
526 },
527 {
528 "EventCode": "0xA2",
529 "UMask": "0x4",
530 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
531 "Counter": "0,1,2,3",
532 "EventName": "RESOURCE_STALLS.RS",
533 "PublicDescription": "This event counts stall cycles caused by absence of eligible entries in the reservation station (RS). This may result from RS overflow, or from RS deallocation because of the RS array Write Port allocation scheme (each RS entry has two write ports instead of four. As a result, empty entries could not be used, although RS is not really full). This counts cycles that the pipeline backend blocked uop delivery from the front end.",
534 "SampleAfterValue": "2000003",
535 "CounterHTOff": "0,1,2,3,4,5,6,7"
536 },
537 {
538 "EventCode": "0xA2",
539 "UMask": "0x8",
540 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
541 "Counter": "0,1,2,3",
542 "EventName": "RESOURCE_STALLS.SB",
543 "PublicDescription": "This event counts stall cycles caused by the store buffer (SB) overflow (excluding draining from synch). This counts cycles that the pipeline backend blocked uop delivery from the front end.",
544 "SampleAfterValue": "2000003",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "EventCode": "0xA2",
549 "UMask": "0x10",
550 "BriefDescription": "Cycles stalled due to re-order buffer full.",
551 "Counter": "0,1,2,3",
552 "EventName": "RESOURCE_STALLS.ROB",
553 "PublicDescription": "This event counts ROB full stall cycles. This counts cycles that the pipeline backend blocked uop delivery from the front end.",
554 "SampleAfterValue": "2000003",
555 "CounterHTOff": "0,1,2,3,4,5,6,7"
556 },
557 {
558 "EventCode": "0xA3",
559 "UMask": "0x1",
560 "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
561 "Counter": "0,1,2,3",
562 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
563 "CounterMask": "1",
564 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand* load request missing the L2 cache.",
565 "SampleAfterValue": "2000003",
566 "CounterHTOff": "0,1,2,3,4,5,6,7"
567 },
568 {
569 "EventCode": "0xA3",
570 "UMask": "0x8",
571 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
572 "Counter": "2",
573 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
574 "CounterMask": "8",
575 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand load request missing the L1 data cache.",
576 "SampleAfterValue": "2000003",
577 "CounterHTOff": "2"
578 },
579 {
580 "EventCode": "0xA3",
581 "UMask": "0x2",
582 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
583 "Counter": "0,1,2,3",
584 "EventName": "CYCLE_ACTIVITY.CYCLES_LDM_PENDING",
585 "CounterMask": "2",
586 "PublicDescription": "Counts number of cycles the CPU has at least one pending demand load request (that is cycles with non-completed load waiting for its data from memory subsystem).",
587 "SampleAfterValue": "2000003",
588 "CounterHTOff": "0,1,2,3,4,5,6,7"
589 },
590 {
591 "EventCode": "0xA3",
592 "UMask": "0x4",
593 "BriefDescription": "Total execution stalls",
594 "Counter": "0,1,2,3",
595 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_EXECUTE",
596 "CounterMask": "4",
597 "PublicDescription": "Counts number of cycles nothing is executed on any execution port.",
598 "SampleAfterValue": "2000003",
599 "CounterHTOff": "0,1,2,3"
600 },
601 {
602 "EventCode": "0xA3",
603 "UMask": "0x5",
604 "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
605 "Counter": "0,1,2,3",
606 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
607 "CounterMask": "5",
608 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand* load request missing the L2 cache.(as a footprint) * includes also L1 HW prefetch requests that may or may not be required by demands.",
609 "SampleAfterValue": "2000003",
610 "CounterHTOff": "0,1,2,3"
611 },
612 {
613 "EventCode": "0xA3",
614 "UMask": "0x6",
615 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
616 "Counter": "0,1,2,3",
617 "EventName": "CYCLE_ACTIVITY.STALLS_LDM_PENDING",
618 "CounterMask": "6",
619 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand load request.",
620 "SampleAfterValue": "2000003",
621 "CounterHTOff": "0,1,2,3"
622 },
623 {
624 "EventCode": "0xA3",
625 "UMask": "0xc",
626 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
627 "Counter": "2",
628 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
629 "CounterMask": "12",
630 "PublicDescription": "Counts number of cycles nothing is executed on any execution port, while there was at least one pending demand load request missing the L1 data cache.",
631 "SampleAfterValue": "2000003",
632 "CounterHTOff": "2"
633 },
634 {
635 "EventCode": "0xA8",
636 "UMask": "0x1",
637 "BriefDescription": "Number of Uops delivered by the LSD.",
638 "Counter": "0,1,2,3",
639 "EventName": "LSD.UOPS",
640 "PublicDescription": "Number of Uops delivered by the LSD. ",
641 "SampleAfterValue": "2000003",
642 "CounterHTOff": "0,1,2,3,4,5,6,7"
643 },
644 {
645 "EventCode": "0xB1",
646 "UMask": "0x1",
647 "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
648 "Counter": "0,1,2,3",
649 "EventName": "UOPS_EXECUTED.THREAD",
650 "PublicDescription": "Number of uops to be executed per-thread each cycle.",
651 "SampleAfterValue": "2000003",
652 "CounterHTOff": "0,1,2,3,4,5,6,7"
653 },
654 {
655 "EventCode": "0xB1",
656 "UMask": "0x2",
657 "BriefDescription": "Number of uops executed on the core.",
658 "Counter": "0,1,2,3",
659 "EventName": "UOPS_EXECUTED.CORE",
660 "PublicDescription": "Number of uops executed from any thread.",
661 "SampleAfterValue": "2000003",
662 "CounterHTOff": "0,1,2,3,4,5,6,7"
663 },
664 {
665 "Invert": "1",
666 "EventCode": "0xB1",
667 "UMask": "0x1",
668 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
669 "Counter": "0,1,2,3",
670 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
671 "CounterMask": "1",
672 "PublicDescription": "This event counts cycles during which no uops were dispatched from the Reservation Station (RS) per thread.",
673 "SampleAfterValue": "2000003",
674 "CounterHTOff": "0,1,2,3"
675 },
676 {
677 "EventCode": "0xC0",
678 "UMask": "0x0",
679 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
680 "Counter": "0,1,2,3",
681 "EventName": "INST_RETIRED.ANY_P",
682 "Errata": "BDM61",
683 "PublicDescription": "This event counts the number of instructions (EOMs) retired. Counting covers macro-fused instructions individually (that is, increments by two).",
684 "SampleAfterValue": "2000003",
685 "CounterHTOff": "0,1,2,3,4,5,6,7"
686 },
687 {
688 "EventCode": "0xC0",
689 "UMask": "0x2",
690 "BriefDescription": "FP operations retired. X87 FP operations that have no exceptions:",
691 "Counter": "0,1,2,3",
692 "EventName": "INST_RETIRED.X87",
693 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts FP operations retired. For X87 FP operations that have no exceptions counting also includes flows that have several X87, or flows that use X87 uops in the exception handling.",
694 "SampleAfterValue": "2000003",
695 "CounterHTOff": "0,1,2,3,4,5,6,7"
696 },
697 {
698 "EventCode": "0xC0",
699 "UMask": "0x1",
700 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
701 "PEBS": "2",
702 "Counter": "1",
703 "EventName": "INST_RETIRED.PREC_DIST",
704 "Errata": "BDM11, BDM55",
705 "PublicDescription": "This is a precise version (that is, uses PEBS) of the event that counts instructions retired.",
706 "SampleAfterValue": "2000003",
707 "CounterHTOff": "1"
708 },
709 {
710 "EventCode": "0xC1",
711 "UMask": "0x40",
712 "BriefDescription": "Number of times any microcode assist is invoked by HW upon uop writeback.",
713 "Counter": "0,1,2,3",
714 "EventName": "OTHER_ASSISTS.ANY_WB_ASSIST",
715 "SampleAfterValue": "100003",
716 "CounterHTOff": "0,1,2,3,4,5,6,7"
717 },
718 {
719 "EventCode": "0xC2",
720 "UMask": "0x1",
721 "BriefDescription": "Actually retired uops.",
722 "Data_LA": "1",
723 "PEBS": "1",
724 "Counter": "0,1,2,3",
725 "EventName": "UOPS_RETIRED.ALL",
726 "PublicDescription": "This event counts all actually retired uops. Counting increments by two for micro-fused uops, and by one for macro-fused and other uops. Maximal increment value for one cycle is eight.",
727 "SampleAfterValue": "2000003",
728 "CounterHTOff": "0,1,2,3,4,5,6,7"
729 },
730 {
731 "EventCode": "0xC2",
732 "UMask": "0x2",
733 "BriefDescription": "Retirement slots used.",
734 "PEBS": "1",
735 "Counter": "0,1,2,3",
736 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
737 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of retirement slots used.",
738 "SampleAfterValue": "2000003",
739 "CounterHTOff": "0,1,2,3,4,5,6,7"
740 },
741 {
742 "Invert": "1",
743 "EventCode": "0xC2",
744 "UMask": "0x1",
745 "BriefDescription": "Cycles without actually retired uops.",
746 "Counter": "0,1,2,3",
747 "EventName": "UOPS_RETIRED.STALL_CYCLES",
748 "CounterMask": "1",
749 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts cycles without actually retired uops.",
750 "SampleAfterValue": "2000003",
751 "CounterHTOff": "0,1,2,3"
752 },
753 {
754 "Invert": "1",
755 "EventCode": "0xC2",
756 "UMask": "0x1",
757 "BriefDescription": "Cycles with less than 10 actually retired uops.",
758 "Counter": "0,1,2,3",
759 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
760 "CounterMask": "10",
761 "PublicDescription": "Number of cycles using always true condition (uops_ret < 16) applied to non PEBS uops retired event.",
762 "SampleAfterValue": "2000003",
763 "CounterHTOff": "0,1,2,3"
764 },
765 {
766 "EventCode": "0xC3",
767 "UMask": "0x1",
768 "BriefDescription": "Cycles there was a Nuke. Account for both thread-specific and All Thread Nukes.",
769 "Counter": "0,1,2,3",
770 "EventName": "MACHINE_CLEARS.CYCLES",
771 "PublicDescription": "This event counts both thread-specific (TS) and all-thread (AT) nukes.",
772 "SampleAfterValue": "2000003",
773 "CounterHTOff": "0,1,2,3,4,5,6,7"
774 },
775 {
776 "EventCode": "0xC3",
777 "UMask": "0x4",
778 "BriefDescription": "Self-modifying code (SMC) detected.",
779 "Counter": "0,1,2,3",
780 "EventName": "MACHINE_CLEARS.SMC",
781 "PublicDescription": "This event counts self-modifying code (SMC) detected, which causes a machine clear.",
782 "SampleAfterValue": "100003",
783 "CounterHTOff": "0,1,2,3,4,5,6,7"
784 },
785 {
786 "EventCode": "0xC3",
787 "UMask": "0x20",
788 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
789 "Counter": "0,1,2,3",
790 "EventName": "MACHINE_CLEARS.MASKMOV",
791 "PublicDescription": "Maskmov false fault - counts number of time ucode passes through Maskmov flow due to instruction's mask being 0 while the flow was completed without raising a fault.",
792 "SampleAfterValue": "100003",
793 "CounterHTOff": "0,1,2,3,4,5,6,7"
794 },
795 {
796 "EventCode": "0xC4",
797 "UMask": "0x1",
798 "BriefDescription": "Conditional branch instructions retired.",
799 "PEBS": "1",
800 "Counter": "0,1,2,3",
801 "EventName": "BR_INST_RETIRED.CONDITIONAL",
802 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts conditional branch instructions retired.",
803 "SampleAfterValue": "400009",
804 "CounterHTOff": "0,1,2,3,4,5,6,7"
805 },
806 {
807 "EventCode": "0xC4",
808 "UMask": "0x2",
809 "BriefDescription": "Direct and indirect near call instructions retired.",
810 "PEBS": "1",
811 "Counter": "0,1,2,3",
812 "EventName": "BR_INST_RETIRED.NEAR_CALL",
813 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts both direct and indirect near call instructions retired.",
814 "SampleAfterValue": "100007",
815 "CounterHTOff": "0,1,2,3,4,5,6,7"
816 },
817 {
818 "EventCode": "0xC4",
819 "UMask": "0x0",
820 "BriefDescription": "All (macro) branch instructions retired.",
821 "Counter": "0,1,2,3",
822 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
823 "PublicDescription": "This event counts all (macro) branch instructions retired.",
824 "SampleAfterValue": "400009",
825 "CounterHTOff": "0,1,2,3,4,5,6,7"
826 },
827 {
828 "EventCode": "0xC4",
829 "UMask": "0x8",
830 "BriefDescription": "Return instructions retired.",
831 "PEBS": "1",
832 "Counter": "0,1,2,3",
833 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
834 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts return instructions retired.",
835 "SampleAfterValue": "100007",
836 "CounterHTOff": "0,1,2,3,4,5,6,7"
837 },
838 {
839 "EventCode": "0xC4",
840 "UMask": "0x10",
841 "BriefDescription": "Not taken branch instructions retired.",
842 "Counter": "0,1,2,3",
843 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
844 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts not taken branch instructions retired.",
845 "SampleAfterValue": "400009",
846 "CounterHTOff": "0,1,2,3,4,5,6,7"
847 },
848 {
849 "EventCode": "0xC4",
850 "UMask": "0x20",
851 "BriefDescription": "Taken branch instructions retired.",
852 "PEBS": "1",
853 "Counter": "0,1,2,3",
854 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
855 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts taken branch instructions retired.",
856 "SampleAfterValue": "400009",
857 "CounterHTOff": "0,1,2,3,4,5,6,7"
858 },
859 {
860 "EventCode": "0xC4",
861 "UMask": "0x40",
862 "BriefDescription": "Far branch instructions retired.",
863 "Counter": "0,1,2,3",
864 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
865 "Errata": "BDW98",
866 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts far branch instructions retired.",
867 "SampleAfterValue": "100007",
868 "CounterHTOff": "0,1,2,3,4,5,6,7"
869 },
870 {
871 "EventCode": "0xC4",
872 "UMask": "0x4",
873 "BriefDescription": "All (macro) branch instructions retired. (Precise Event - PEBS)",
874 "PEBS": "2",
875 "Counter": "0,1,2,3",
876 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
877 "Errata": "BDW98",
878 "PublicDescription": "This is a precise version of BR_INST_RETIRED.ALL_BRANCHES that counts all (macro) branch instructions retired.",
879 "SampleAfterValue": "400009",
880 "CounterHTOff": "0,1,2,3"
881 },
882 {
883 "EventCode": "0xC5",
884 "UMask": "0x1",
885 "BriefDescription": "Mispredicted conditional branch instructions retired.",
886 "PEBS": "1",
887 "Counter": "0,1,2,3",
888 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
889 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted conditional branch instructions retired.",
890 "SampleAfterValue": "400009",
891 "CounterHTOff": "0,1,2,3,4,5,6,7"
892 },
893 {
894 "EventCode": "0xC5",
895 "UMask": "0x0",
896 "BriefDescription": "All mispredicted macro branch instructions retired.",
897 "Counter": "0,1,2,3",
898 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
899 "PublicDescription": "This event counts all mispredicted macro branch instructions retired.",
900 "SampleAfterValue": "400009",
901 "CounterHTOff": "0,1,2,3,4,5,6,7"
902 },
903 {
904 "EventCode": "0xC5",
905 "UMask": "0x8",
906 "BriefDescription": "This event counts the number of mispredicted ret instructions retired. Non PEBS",
907 "PEBS": "1",
908 "Counter": "0,1,2,3",
909 "EventName": "BR_MISP_RETIRED.RET",
910 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted return instructions retired.",
911 "SampleAfterValue": "100007",
912 "CounterHTOff": "0,1,2,3,4,5,6,7"
913 },
914 {
915 "EventCode": "0xC5",
916 "UMask": "0x4",
917 "BriefDescription": "Mispredicted macro branch instructions retired. (Precise Event - PEBS)",
918 "PEBS": "2",
919 "Counter": "0,1,2,3",
920 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
921 "PublicDescription": "This is a precise version of BR_MISP_RETIRED.ALL_BRANCHES that counts all mispredicted macro branch instructions retired.",
922 "SampleAfterValue": "400009",
923 "CounterHTOff": "0,1,2,3"
924 },
925 {
926 "EventCode": "0xCC",
927 "UMask": "0x20",
928 "BriefDescription": "Count cases of saving new LBR",
929 "Counter": "0,1,2,3",
930 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
931 "PublicDescription": "This event counts cases of saving new LBR records by hardware. This assumes proper enabling of LBRs and takes into account LBR filtering done by the LBR_SELECT register.",
932 "SampleAfterValue": "2000003",
933 "CounterHTOff": "0,1,2,3,4,5,6,7"
934 },
935 {
936 "EventCode": "0x3C",
937 "UMask": "0x0",
938 "BriefDescription": "Thread cycles when thread is not in halt state",
939 "Counter": "0,1,2,3",
940 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
941 "PublicDescription": "This is an architectural event that counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling. For this reason, this event may have a changing ratio with regards to wall clock time.",
942 "SampleAfterValue": "2000003",
943 "CounterHTOff": "0,1,2,3,4,5,6,7"
944 },
945 {
946 "EventCode": "0x89",
947 "UMask": "0xa0",
948 "BriefDescription": "Taken speculative and retired mispredicted indirect calls.",
949 "Counter": "0,1,2,3",
950 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
951 "SampleAfterValue": "200003",
952 "CounterHTOff": "0,1,2,3,4,5,6,7"
953 },
954 {
955 "EventCode": "0xA1",
956 "UMask": "0x1",
957 "BriefDescription": "Cycles per core when uops are exectuted in port 0.",
958 "Counter": "0,1,2,3",
959 "EventName": "UOPS_EXECUTED_PORT.PORT_0_CORE",
960 "AnyThread": "1",
961 "SampleAfterValue": "2000003",
962 "CounterHTOff": "0,1,2,3,4,5,6,7"
963 },
964 {
965 "EventCode": "0xA1",
966 "UMask": "0x2",
967 "BriefDescription": "Cycles per core when uops are exectuted in port 1.",
968 "Counter": "0,1,2,3",
969 "EventName": "UOPS_EXECUTED_PORT.PORT_1_CORE",
970 "AnyThread": "1",
971 "SampleAfterValue": "2000003",
972 "CounterHTOff": "0,1,2,3,4,5,6,7"
973 },
974 {
975 "EventCode": "0xA1",
976 "UMask": "0x4",
977 "BriefDescription": "Cycles per core when uops are dispatched to port 2.",
978 "Counter": "0,1,2,3",
979 "EventName": "UOPS_EXECUTED_PORT.PORT_2_CORE",
980 "AnyThread": "1",
981 "SampleAfterValue": "2000003",
982 "CounterHTOff": "0,1,2,3,4,5,6,7"
983 },
984 {
985 "EventCode": "0xA1",
986 "UMask": "0x8",
987 "BriefDescription": "Cycles per core when uops are dispatched to port 3.",
988 "Counter": "0,1,2,3",
989 "EventName": "UOPS_EXECUTED_PORT.PORT_3_CORE",
990 "AnyThread": "1",
991 "SampleAfterValue": "2000003",
992 "CounterHTOff": "0,1,2,3,4,5,6,7"
993 },
994 {
995 "EventCode": "0xA1",
996 "UMask": "0x10",
997 "BriefDescription": "Cycles per core when uops are exectuted in port 4.",
998 "Counter": "0,1,2,3",
999 "EventName": "UOPS_EXECUTED_PORT.PORT_4_CORE",
1000 "AnyThread": "1",
1001 "SampleAfterValue": "2000003",
1002 "CounterHTOff": "0,1,2,3,4,5,6,7"
1003 },
1004 {
1005 "EventCode": "0xA1",
1006 "UMask": "0x20",
1007 "BriefDescription": "Cycles per core when uops are exectuted in port 5.",
1008 "Counter": "0,1,2,3",
1009 "EventName": "UOPS_EXECUTED_PORT.PORT_5_CORE",
1010 "AnyThread": "1",
1011 "SampleAfterValue": "2000003",
1012 "CounterHTOff": "0,1,2,3,4,5,6,7"
1013 },
1014 {
1015 "EventCode": "0xA1",
1016 "UMask": "0x40",
1017 "BriefDescription": "Cycles per core when uops are exectuted in port 6.",
1018 "Counter": "0,1,2,3",
1019 "EventName": "UOPS_EXECUTED_PORT.PORT_6_CORE",
1020 "AnyThread": "1",
1021 "SampleAfterValue": "2000003",
1022 "CounterHTOff": "0,1,2,3,4,5,6,7"
1023 },
1024 {
1025 "EventCode": "0xA1",
1026 "UMask": "0x80",
1027 "BriefDescription": "Cycles per core when uops are dispatched to port 7.",
1028 "Counter": "0,1,2,3",
1029 "EventName": "UOPS_EXECUTED_PORT.PORT_7_CORE",
1030 "AnyThread": "1",
1031 "SampleAfterValue": "2000003",
1032 "CounterHTOff": "0,1,2,3,4,5,6,7"
1033 },
1034 {
1035 "EventCode": "0xC5",
1036 "UMask": "0x20",
1037 "BriefDescription": "number of near branch instructions retired that were mispredicted and taken.",
1038 "PEBS": "1",
1039 "Counter": "0,1,2,3",
1040 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
1041 "PublicDescription": "Number of near branch instructions retired that were mispredicted and taken.",
1042 "SampleAfterValue": "400009",
1043 "CounterHTOff": "0,1,2,3,4,5,6,7"
1044 },
1045 {
1046 "EventCode": "0xB1",
1047 "UMask": "0x1",
1048 "BriefDescription": "Cycles where at least 1 uop was executed per-thread.",
1049 "Counter": "0,1,2,3",
1050 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
1051 "CounterMask": "1",
1052 "SampleAfterValue": "2000003",
1053 "CounterHTOff": "0,1,2,3"
1054 },
1055 {
1056 "EventCode": "0xB1",
1057 "UMask": "0x1",
1058 "BriefDescription": "Cycles where at least 2 uops were executed per-thread.",
1059 "Counter": "0,1,2,3",
1060 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
1061 "CounterMask": "2",
1062 "SampleAfterValue": "2000003",
1063 "CounterHTOff": "0,1,2,3"
1064 },
1065 {
1066 "EventCode": "0xB1",
1067 "UMask": "0x1",
1068 "BriefDescription": "Cycles where at least 3 uops were executed per-thread.",
1069 "Counter": "0,1,2,3",
1070 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
1071 "CounterMask": "3",
1072 "SampleAfterValue": "2000003",
1073 "CounterHTOff": "0,1,2,3"
1074 },
1075 {
1076 "EventCode": "0xB1",
1077 "UMask": "0x1",
1078 "BriefDescription": "Cycles where at least 4 uops were executed per-thread.",
1079 "Counter": "0,1,2,3",
1080 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
1081 "CounterMask": "4",
1082 "SampleAfterValue": "2000003",
1083 "CounterHTOff": "0,1,2,3"
1084 },
1085 {
1086 "EventCode": "0xe6",
1087 "UMask": "0x1f",
1088 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1089 "Counter": "0,1,2,3",
1090 "EventName": "BACLEARS.ANY",
1091 "SampleAfterValue": "100003",
1092 "CounterHTOff": "0,1,2,3,4,5,6,7"
1093 },
1094 {
1095 "EventCode": "0xA3",
1096 "UMask": "0x8",
1097 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
1098 "Counter": "2",
1099 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
1100 "CounterMask": "8",
1101 "SampleAfterValue": "2000003",
1102 "CounterHTOff": "2"
1103 },
1104 {
1105 "EventCode": "0xA3",
1106 "UMask": "0x1",
1107 "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
1108 "Counter": "0,1,2,3",
1109 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
1110 "CounterMask": "1",
1111 "SampleAfterValue": "2000003",
1112 "CounterHTOff": "0,1,2,3,4,5,6,7"
1113 },
1114 {
1115 "EventCode": "0xA3",
1116 "UMask": "0x2",
1117 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
1118 "Counter": "0,1,2,3",
1119 "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
1120 "CounterMask": "2",
1121 "SampleAfterValue": "2000003",
1122 "CounterHTOff": "0,1,2,3"
1123 },
1124 {
1125 "EventCode": "0xA3",
1126 "UMask": "0x4",
1127 "BriefDescription": "Total execution stalls.",
1128 "Counter": "0,1,2,3",
1129 "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
1130 "CounterMask": "4",
1131 "SampleAfterValue": "2000003",
1132 "CounterHTOff": "0,1,2,3,4,5,6,7"
1133 },
1134 {
1135 "EventCode": "0xA3",
1136 "UMask": "0xc",
1137 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
1138 "Counter": "2",
1139 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
1140 "CounterMask": "12",
1141 "SampleAfterValue": "2000003",
1142 "CounterHTOff": "2"
1143 },
1144 {
1145 "EventCode": "0xA3",
1146 "UMask": "0x5",
1147 "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
1148 "Counter": "0,1,2,3",
1149 "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
1150 "CounterMask": "5",
1151 "SampleAfterValue": "2000003",
1152 "CounterHTOff": "0,1,2,3,4,5,6,7"
1153 },
1154 {
1155 "EventCode": "0xA3",
1156 "UMask": "0x6",
1157 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
1158 "Counter": "0,1,2,3",
1159 "EventName": "CYCLE_ACTIVITY.STALLS_MEM_ANY",
1160 "CounterMask": "6",
1161 "SampleAfterValue": "2000003",
1162 "CounterHTOff": "0,1,2,3,4,5,6,7"
1163 },
1164 {
1165 "EdgeDetect": "1",
1166 "EventCode": "0xC3",
1167 "UMask": "0x1",
1168 "BriefDescription": "Number of machine clears (nukes) of any type.",
1169 "Counter": "0,1,2,3",
1170 "EventName": "MACHINE_CLEARS.COUNT",
1171 "CounterMask": "1",
1172 "SampleAfterValue": "100003",
1173 "CounterHTOff": "0,1,2,3,4,5,6,7"
1174 },
1175 {
1176 "EventCode": "0xA8",
1177 "UMask": "0x1",
1178 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1179 "Counter": "0,1,2,3",
1180 "EventName": "LSD.CYCLES_4_UOPS",
1181 "CounterMask": "4",
1182 "SampleAfterValue": "2000003",
1183 "CounterHTOff": "0,1,2,3,4,5,6,7"
1184 },
1185 {
1186 "EdgeDetect": "1",
1187 "Invert": "1",
1188 "EventCode": "0x5E",
1189 "UMask": "0x1",
1190 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1191 "Counter": "0,1,2,3",
1192 "EventName": "RS_EVENTS.EMPTY_END",
1193 "CounterMask": "1",
1194 "SampleAfterValue": "200003",
1195 "CounterHTOff": "0,1,2,3,4,5,6,7"
1196 },
1197 {
1198 "EventCode": "0xA8",
1199 "UMask": "0x1",
1200 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
1201 "Counter": "0,1,2,3",
1202 "EventName": "LSD.CYCLES_ACTIVE",
1203 "CounterMask": "1",
1204 "SampleAfterValue": "2000003",
1205 "CounterHTOff": "0,1,2,3,4,5,6,7"
1206 },
1207 {
1208 "EventCode": "0xA1",
1209 "UMask": "0x1",
1210 "BriefDescription": "Cycles per thread when uops are executed in port 0",
1211 "Counter": "0,1,2,3",
1212 "EventName": "UOPS_EXECUTED_PORT.PORT_0",
1213 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 0.",
1214 "SampleAfterValue": "2000003",
1215 "CounterHTOff": "0,1,2,3,4,5,6,7"
1216 },
1217 {
1218 "EventCode": "0xA1",
1219 "UMask": "0x2",
1220 "BriefDescription": "Cycles per thread when uops are executed in port 1",
1221 "Counter": "0,1,2,3",
1222 "EventName": "UOPS_EXECUTED_PORT.PORT_1",
1223 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 1.",
1224 "SampleAfterValue": "2000003",
1225 "CounterHTOff": "0,1,2,3,4,5,6,7"
1226 },
1227 {
1228 "EventCode": "0xA1",
1229 "UMask": "0x4",
1230 "BriefDescription": "Cycles per thread when uops are executed in port 2",
1231 "Counter": "0,1,2,3",
1232 "EventName": "UOPS_EXECUTED_PORT.PORT_2",
1233 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 2.",
1234 "SampleAfterValue": "2000003",
1235 "CounterHTOff": "0,1,2,3,4,5,6,7"
1236 },
1237 {
1238 "EventCode": "0xA1",
1239 "UMask": "0x8",
1240 "BriefDescription": "Cycles per thread when uops are executed in port 3",
1241 "Counter": "0,1,2,3",
1242 "EventName": "UOPS_EXECUTED_PORT.PORT_3",
1243 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 3.",
1244 "SampleAfterValue": "2000003",
1245 "CounterHTOff": "0,1,2,3,4,5,6,7"
1246 },
1247 {
1248 "EventCode": "0xA1",
1249 "UMask": "0x10",
1250 "BriefDescription": "Cycles per thread when uops are executed in port 4",
1251 "Counter": "0,1,2,3",
1252 "EventName": "UOPS_EXECUTED_PORT.PORT_4",
1253 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 4.",
1254 "SampleAfterValue": "2000003",
1255 "CounterHTOff": "0,1,2,3,4,5,6,7"
1256 },
1257 {
1258 "EventCode": "0xA1",
1259 "UMask": "0x20",
1260 "BriefDescription": "Cycles per thread when uops are executed in port 5",
1261 "Counter": "0,1,2,3",
1262 "EventName": "UOPS_EXECUTED_PORT.PORT_5",
1263 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 5.",
1264 "SampleAfterValue": "2000003",
1265 "CounterHTOff": "0,1,2,3,4,5,6,7"
1266 },
1267 {
1268 "EventCode": "0xA1",
1269 "UMask": "0x40",
1270 "BriefDescription": "Cycles per thread when uops are executed in port 6",
1271 "Counter": "0,1,2,3",
1272 "EventName": "UOPS_EXECUTED_PORT.PORT_6",
1273 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 6.",
1274 "SampleAfterValue": "2000003",
1275 "CounterHTOff": "0,1,2,3,4,5,6,7"
1276 },
1277 {
1278 "EventCode": "0xA1",
1279 "UMask": "0x80",
1280 "BriefDescription": "Cycles per thread when uops are executed in port 7",
1281 "Counter": "0,1,2,3",
1282 "EventName": "UOPS_EXECUTED_PORT.PORT_7",
1283 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 7.",
1284 "SampleAfterValue": "2000003",
1285 "CounterHTOff": "0,1,2,3,4,5,6,7"
1286 },
1287 {
1288 "EventCode": "0xA0",
1289 "UMask": "0x3",
1290 "BriefDescription": "Micro-op dispatches cancelled due to insufficient SIMD physical register file read ports",
1291 "Counter": "0,1,2,3",
1292 "EventName": "UOP_DISPATCHES_CANCELLED.SIMD_PRF",
1293 "PublicDescription": "This event counts the number of micro-operations cancelled after they were dispatched from the scheduler to the execution units when the total number of physical register read ports across all dispatch ports exceeds the read bandwidth of the physical register file. The SIMD_PRF subevent applies to the following instructions: VDPPS, DPPS, VPCMPESTRI, PCMPESTRI, VPCMPESTRM, PCMPESTRM, VFMADD*, VFMADDSUB*, VFMSUB*, VMSUBADD*, VFNMADD*, VFNMSUB*. See the Broadwell Optimization Guide for more information.",
1294 "SampleAfterValue": "2000003",
1295 "CounterHTOff": "0,1,2,3"
1296 },
1297 {
1298 "EventCode": "0x00",
1299 "UMask": "0x2",
1300 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1301 "Counter": "Fixed counter 2",
1302 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1303 "AnyThread": "1",
1304 "SampleAfterValue": "2000003",
1305 "CounterHTOff": "Fixed counter 2"
1306 },
1307 {
1308 "EventCode": "0x3C",
1309 "UMask": "0x0",
1310 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1311 "Counter": "0,1,2,3",
1312 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1313 "AnyThread": "1",
1314 "SampleAfterValue": "2000003",
1315 "CounterHTOff": "0,1,2,3,4,5,6,7"
1316 },
1317 {
1318 "EventCode": "0x3C",
1319 "UMask": "0x1",
1320 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1321 "Counter": "0,1,2,3",
1322 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1323 "AnyThread": "1",
1324 "SampleAfterValue": "2000003",
1325 "CounterHTOff": "0,1,2,3,4,5,6,7"
1326 },
1327 {
1328 "EventCode": "0x0D",
1329 "UMask": "0x3",
1330 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1331 "Counter": "0,1,2,3",
1332 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1333 "AnyThread": "1",
1334 "CounterMask": "1",
1335 "SampleAfterValue": "2000003",
1336 "CounterHTOff": "0,1,2,3,4,5,6,7"
1337 },
1338 {
1339 "EventCode": "0xb1",
1340 "UMask": "0x2",
1341 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1342 "Counter": "0,1,2,3",
1343 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1344 "CounterMask": "1",
1345 "SampleAfterValue": "2000003",
1346 "CounterHTOff": "0,1,2,3,4,5,6,7"
1347 },
1348 {
1349 "EventCode": "0xb1",
1350 "UMask": "0x2",
1351 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1352 "Counter": "0,1,2,3",
1353 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1354 "CounterMask": "2",
1355 "SampleAfterValue": "2000003",
1356 "CounterHTOff": "0,1,2,3,4,5,6,7"
1357 },
1358 {
1359 "EventCode": "0xb1",
1360 "UMask": "0x2",
1361 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1362 "Counter": "0,1,2,3",
1363 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1364 "CounterMask": "3",
1365 "SampleAfterValue": "2000003",
1366 "CounterHTOff": "0,1,2,3,4,5,6,7"
1367 },
1368 {
1369 "EventCode": "0xb1",
1370 "UMask": "0x2",
1371 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1372 "Counter": "0,1,2,3",
1373 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1374 "CounterMask": "4",
1375 "SampleAfterValue": "2000003",
1376 "CounterHTOff": "0,1,2,3,4,5,6,7"
1377 },
1378 {
1379 "Invert": "1",
1380 "EventCode": "0xb1",
1381 "UMask": "0x2",
1382 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1383 "Counter": "0,1,2,3",
1384 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1385 "SampleAfterValue": "2000003",
1386 "CounterHTOff": "0,1,2,3,4,5,6,7"
1387 },
1388 {
1389 "EventCode": "0x3C",
1390 "UMask": "0x1",
1391 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1392 "Counter": "0,1,2,3",
1393 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1394 "PublicDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate).",
1395 "SampleAfterValue": "2000003",
1396 "CounterHTOff": "0,1,2,3,4,5,6,7"
1397 },
1398 {
1399 "EventCode": "0x3C",
1400 "UMask": "0x1",
1401 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1402 "Counter": "0,1,2,3",
1403 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1404 "AnyThread": "1",
1405 "SampleAfterValue": "2000003",
1406 "CounterHTOff": "0,1,2,3,4,5,6,7"
1407 },
1408 {
1409 "EventCode": "0x3C",
1410 "UMask": "0x2",
1411 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1412 "Counter": "0,1,2,3",
1413 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1414 "SampleAfterValue": "2000003",
1415 "CounterHTOff": "0,1,2,3,4,5,6,7"
1416 }
1417] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/virtual-memory.json b/tools/perf/pmu-events/arch/x86/broadwellx/virtual-memory.json
new file mode 100644
index 000000000000..5ce8b67ba076
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/virtual-memory.json
@@ -0,0 +1,388 @@
1[
2 {
3 "EventCode": "0x08",
4 "UMask": "0x1",
5 "BriefDescription": "Load misses in all DTLB levels that cause page walks",
6 "Counter": "0,1,2,3",
7 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
8 "Errata": "BDM69",
9 "PublicDescription": "This event counts load misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
10 "SampleAfterValue": "100003",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "EventCode": "0x08",
15 "UMask": "0x2",
16 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (4K).",
17 "Counter": "0,1,2,3",
18 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
19 "Errata": "BDM69",
20 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
21 "SampleAfterValue": "2000003",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "EventCode": "0x08",
26 "UMask": "0x4",
27 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (2M/4M).",
28 "Counter": "0,1,2,3",
29 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
30 "Errata": "BDM69",
31 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
32 "SampleAfterValue": "2000003",
33 "CounterHTOff": "0,1,2,3,4,5,6,7"
34 },
35 {
36 "EventCode": "0x08",
37 "UMask": "0x8",
38 "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (1G)",
39 "Counter": "0,1,2,3",
40 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1G",
41 "Errata": "BDM69",
42 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
43 "SampleAfterValue": "2000003",
44 "CounterHTOff": "0,1,2,3,4,5,6,7"
45 },
46 {
47 "EventCode": "0x08",
48 "UMask": "0x10",
49 "BriefDescription": "Cycles when PMH is busy with page walks",
50 "Counter": "0,1,2,3",
51 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
52 "Errata": "BDM69",
53 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
54 "SampleAfterValue": "2000003",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "EventCode": "0x08",
59 "UMask": "0x20",
60 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (4K).",
61 "Counter": "0,1,2,3",
62 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_4K",
63 "SampleAfterValue": "2000003",
64 "CounterHTOff": "0,1,2,3,4,5,6,7"
65 },
66 {
67 "EventCode": "0x08",
68 "UMask": "0x40",
69 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (2M).",
70 "Counter": "0,1,2,3",
71 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_2M",
72 "SampleAfterValue": "2000003",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "EventCode": "0x49",
77 "UMask": "0x1",
78 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
79 "Counter": "0,1,2,3",
80 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
81 "Errata": "BDM69",
82 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
83 "SampleAfterValue": "100003",
84 "CounterHTOff": "0,1,2,3,4,5,6,7"
85 },
86 {
87 "EventCode": "0x49",
88 "UMask": "0x2",
89 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (4K)",
90 "Counter": "0,1,2,3",
91 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
92 "Errata": "BDM69",
93 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
94 "SampleAfterValue": "100003",
95 "CounterHTOff": "0,1,2,3,4,5,6,7"
96 },
97 {
98 "EventCode": "0x49",
99 "UMask": "0x4",
100 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (2M/4M)",
101 "Counter": "0,1,2,3",
102 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
103 "Errata": "BDM69",
104 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
105 "SampleAfterValue": "100003",
106 "CounterHTOff": "0,1,2,3,4,5,6,7"
107 },
108 {
109 "EventCode": "0x49",
110 "UMask": "0x8",
111 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (1G)",
112 "Counter": "0,1,2,3",
113 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1G",
114 "Errata": "BDM69",
115 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
116 "SampleAfterValue": "100003",
117 "CounterHTOff": "0,1,2,3,4,5,6,7"
118 },
119 {
120 "EventCode": "0x49",
121 "UMask": "0x10",
122 "BriefDescription": "Cycles when PMH is busy with page walks",
123 "Counter": "0,1,2,3",
124 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
125 "Errata": "BDM69",
126 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
127 "SampleAfterValue": "100003",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "EventCode": "0x49",
132 "UMask": "0x20",
133 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (4K).",
134 "Counter": "0,1,2,3",
135 "EventName": "DTLB_STORE_MISSES.STLB_HIT_4K",
136 "SampleAfterValue": "100003",
137 "CounterHTOff": "0,1,2,3,4,5,6,7"
138 },
139 {
140 "EventCode": "0x49",
141 "UMask": "0x40",
142 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (2M).",
143 "Counter": "0,1,2,3",
144 "EventName": "DTLB_STORE_MISSES.STLB_HIT_2M",
145 "SampleAfterValue": "100003",
146 "CounterHTOff": "0,1,2,3,4,5,6,7"
147 },
148 {
149 "EventCode": "0x4F",
150 "UMask": "0x10",
151 "BriefDescription": "Cycle count for an Extended Page table walk.",
152 "Counter": "0,1,2,3",
153 "EventName": "EPT.WALK_CYCLES",
154 "PublicDescription": "This event counts cycles for an extended page table walk. The Extended Page directory cache differs from standard TLB caches by the operating system that use it. Virtual machine operating systems use the extended page directory cache, while guest operating systems use the standard TLB caches.",
155 "SampleAfterValue": "2000003",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "EventCode": "0x85",
160 "UMask": "0x1",
161 "BriefDescription": "Misses at all ITLB levels that cause page walks",
162 "Counter": "0,1,2,3",
163 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
164 "Errata": "BDM69",
165 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
166 "SampleAfterValue": "100003",
167 "CounterHTOff": "0,1,2,3,4,5,6,7"
168 },
169 {
170 "EventCode": "0x85",
171 "UMask": "0x2",
172 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (4K)",
173 "Counter": "0,1,2,3",
174 "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
175 "Errata": "BDM69",
176 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
177 "SampleAfterValue": "100003",
178 "CounterHTOff": "0,1,2,3,4,5,6,7"
179 },
180 {
181 "EventCode": "0x85",
182 "UMask": "0x4",
183 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (2M/4M)",
184 "Counter": "0,1,2,3",
185 "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
186 "Errata": "BDM69",
187 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
188 "SampleAfterValue": "100003",
189 "CounterHTOff": "0,1,2,3,4,5,6,7"
190 },
191 {
192 "EventCode": "0x85",
193 "UMask": "0x8",
194 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (1G)",
195 "Counter": "0,1,2,3",
196 "EventName": "ITLB_MISSES.WALK_COMPLETED_1G",
197 "Errata": "BDM69",
198 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
199 "SampleAfterValue": "100003",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "EventCode": "0x85",
204 "UMask": "0x10",
205 "BriefDescription": "Cycles when PMH is busy with page walks",
206 "Counter": "0,1,2,3",
207 "EventName": "ITLB_MISSES.WALK_DURATION",
208 "Errata": "BDM69",
209 "PublicDescription": "This event counts the number of cycles while PMH is busy with the page walk.",
210 "SampleAfterValue": "100003",
211 "CounterHTOff": "0,1,2,3,4,5,6,7"
212 },
213 {
214 "EventCode": "0x85",
215 "UMask": "0x20",
216 "BriefDescription": "Core misses that miss the DTLB and hit the STLB (4K).",
217 "Counter": "0,1,2,3",
218 "EventName": "ITLB_MISSES.STLB_HIT_4K",
219 "SampleAfterValue": "100003",
220 "CounterHTOff": "0,1,2,3,4,5,6,7"
221 },
222 {
223 "EventCode": "0x85",
224 "UMask": "0x40",
225 "BriefDescription": "Code misses that miss the DTLB and hit the STLB (2M).",
226 "Counter": "0,1,2,3",
227 "EventName": "ITLB_MISSES.STLB_HIT_2M",
228 "SampleAfterValue": "100003",
229 "CounterHTOff": "0,1,2,3,4,5,6,7"
230 },
231 {
232 "EventCode": "0xAE",
233 "UMask": "0x1",
234 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
235 "Counter": "0,1,2,3",
236 "EventName": "ITLB.ITLB_FLUSH",
237 "PublicDescription": "This event counts the number of flushes of the big or small ITLB pages. Counting include both TLB Flush (covering all sets) and TLB Set Clear (set-specific).",
238 "SampleAfterValue": "100007",
239 "CounterHTOff": "0,1,2,3,4,5,6,7"
240 },
241 {
242 "EventCode": "0xBC",
243 "UMask": "0x11",
244 "BriefDescription": "Number of DTLB page walker hits in the L1+FB.",
245 "Counter": "0,1,2,3",
246 "EventName": "PAGE_WALKER_LOADS.DTLB_L1",
247 "Errata": "BDM69, BDM98",
248 "SampleAfterValue": "2000003",
249 "CounterHTOff": "0,1,2,3"
250 },
251 {
252 "EventCode": "0xBC",
253 "UMask": "0x21",
254 "BriefDescription": "Number of ITLB page walker hits in the L1+FB.",
255 "Counter": "0,1,2,3",
256 "EventName": "PAGE_WALKER_LOADS.ITLB_L1",
257 "Errata": "BDM69, BDM98",
258 "SampleAfterValue": "2000003",
259 "CounterHTOff": "0,1,2,3"
260 },
261 {
262 "EventCode": "0xBC",
263 "UMask": "0x12",
264 "BriefDescription": "Number of DTLB page walker hits in the L2.",
265 "Counter": "0,1,2,3",
266 "EventName": "PAGE_WALKER_LOADS.DTLB_L2",
267 "Errata": "BDM69, BDM98",
268 "SampleAfterValue": "2000003",
269 "CounterHTOff": "0,1,2,3"
270 },
271 {
272 "EventCode": "0xBC",
273 "UMask": "0x22",
274 "BriefDescription": "Number of ITLB page walker hits in the L2.",
275 "Counter": "0,1,2,3",
276 "EventName": "PAGE_WALKER_LOADS.ITLB_L2",
277 "Errata": "BDM69, BDM98",
278 "SampleAfterValue": "2000003",
279 "CounterHTOff": "0,1,2,3"
280 },
281 {
282 "EventCode": "0xBC",
283 "UMask": "0x14",
284 "BriefDescription": "Number of DTLB page walker hits in the L3 + XSNP.",
285 "Counter": "0,1,2,3",
286 "EventName": "PAGE_WALKER_LOADS.DTLB_L3",
287 "Errata": "BDM69, BDM98",
288 "SampleAfterValue": "2000003",
289 "CounterHTOff": "0,1,2,3"
290 },
291 {
292 "EventCode": "0xBC",
293 "UMask": "0x24",
294 "BriefDescription": "Number of ITLB page walker hits in the L3 + XSNP.",
295 "Counter": "0,1,2,3",
296 "EventName": "PAGE_WALKER_LOADS.ITLB_L3",
297 "Errata": "BDM69, BDM98",
298 "SampleAfterValue": "2000003",
299 "CounterHTOff": "0,1,2,3"
300 },
301 {
302 "EventCode": "0xBC",
303 "UMask": "0x18",
304 "BriefDescription": "Number of DTLB page walker hits in Memory.",
305 "Counter": "0,1,2,3",
306 "EventName": "PAGE_WALKER_LOADS.DTLB_MEMORY",
307 "Errata": "BDM69, BDM98",
308 "SampleAfterValue": "2000003",
309 "CounterHTOff": "0,1,2,3"
310 },
311 {
312 "EventCode": "0xBD",
313 "UMask": "0x1",
314 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
315 "Counter": "0,1,2,3",
316 "EventName": "TLB_FLUSH.DTLB_THREAD",
317 "PublicDescription": "This event counts the number of DTLB flush attempts of the thread-specific entries.",
318 "SampleAfterValue": "100007",
319 "CounterHTOff": "0,1,2,3,4,5,6,7"
320 },
321 {
322 "EventCode": "0xBD",
323 "UMask": "0x20",
324 "BriefDescription": "STLB flush attempts",
325 "Counter": "0,1,2,3",
326 "EventName": "TLB_FLUSH.STLB_ANY",
327 "PublicDescription": "This event counts the number of any STLB flush attempts (such as entire, VPID, PCID, InvPage, CR3 write, and so on).",
328 "SampleAfterValue": "100007",
329 "CounterHTOff": "0,1,2,3,4,5,6,7"
330 },
331 {
332 "EventCode": "0x08",
333 "UMask": "0xe",
334 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
335 "Counter": "0,1,2,3",
336 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
337 "Errata": "BDM69",
338 "SampleAfterValue": "100003",
339 "CounterHTOff": "0,1,2,3,4,5,6,7"
340 },
341 {
342 "EventCode": "0x08",
343 "UMask": "0x60",
344 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks.",
345 "Counter": "0,1,2,3",
346 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
347 "SampleAfterValue": "2000003",
348 "CounterHTOff": "0,1,2,3,4,5,6,7"
349 },
350 {
351 "EventCode": "0x49",
352 "UMask": "0xe",
353 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks.",
354 "Counter": "0,1,2,3",
355 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
356 "Errata": "BDM69",
357 "SampleAfterValue": "100003",
358 "CounterHTOff": "0,1,2,3,4,5,6,7"
359 },
360 {
361 "EventCode": "0x49",
362 "UMask": "0x60",
363 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
364 "Counter": "0,1,2,3",
365 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
366 "SampleAfterValue": "100003",
367 "CounterHTOff": "0,1,2,3,4,5,6,7"
368 },
369 {
370 "EventCode": "0x85",
371 "UMask": "0xe",
372 "BriefDescription": "Misses in all ITLB levels that cause completed page walks.",
373 "Counter": "0,1,2,3",
374 "EventName": "ITLB_MISSES.WALK_COMPLETED",
375 "Errata": "BDM69",
376 "SampleAfterValue": "100003",
377 "CounterHTOff": "0,1,2,3,4,5,6,7"
378 },
379 {
380 "EventCode": "0x85",
381 "UMask": "0x60",
382 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks.",
383 "Counter": "0,1,2,3",
384 "EventName": "ITLB_MISSES.STLB_HIT",
385 "SampleAfterValue": "100003",
386 "CounterHTOff": "0,1,2,3,4,5,6,7"
387 }
388] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/goldmont/cache.json b/tools/perf/pmu-events/arch/x86/goldmont/cache.json
new file mode 100644
index 000000000000..4e02e1e5e70d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/goldmont/cache.json
@@ -0,0 +1,1127 @@
1[
2 {
3 "CollectPEBSRecord": "1",
4 "PublicDescription": "Counts the number of demand and prefetch transactions that the L2 XQ rejects due to a full or near full condition which likely indicates back pressure from the intra-die interconnect (IDI) fabric. The XQ may reject transactions from the L2Q (non-cacheable requests), L2 misses and L2 write-back victims.",
5 "EventCode": "0x30",
6 "Counter": "0,1,2,3",
7 "UMask": "0x0",
8 "EventName": "L2_REJECT_XQ.ALL",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "Requests rejected by the XQ"
11 },
12 {
13 "CollectPEBSRecord": "1",
14 "PublicDescription": "Counts the number of demand and L1 prefetcher requests rejected by the L2Q due to a full or nearly full condition which likely indicates back pressure from L2Q. It also counts requests that would have gone directly to the XQ, but are rejected due to a full or nearly full condition, indicating back pressure from the IDI link. The L2Q may also reject transactions from a core to insure fairness between cores, or to delay a core's dirty eviction when the address conflicts with incoming external snoops.",
15 "EventCode": "0x31",
16 "Counter": "0,1,2,3",
17 "UMask": "0x0",
18 "EventName": "CORE_REJECT_L2Q.ALL",
19 "SampleAfterValue": "200003",
20 "BriefDescription": "Requests rejected by the L2Q "
21 },
22 {
23 "CollectPEBSRecord": "1",
24 "PublicDescription": "Counts memory requests originating from the core that reference a cache line in the L2 cache.",
25 "EventCode": "0x2E",
26 "Counter": "0,1,2,3",
27 "UMask": "0x4f",
28 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
29 "SampleAfterValue": "200003",
30 "BriefDescription": "L2 cache requests"
31 },
32 {
33 "CollectPEBSRecord": "1",
34 "PublicDescription": "Counts memory requests originating from the core that miss in the L2 cache.",
35 "EventCode": "0x2E",
36 "Counter": "0,1,2,3",
37 "UMask": "0x41",
38 "EventName": "LONGEST_LAT_CACHE.MISS",
39 "SampleAfterValue": "200003",
40 "BriefDescription": "L2 cache request misses"
41 },
42 {
43 "CollectPEBSRecord": "1",
44 "PublicDescription": "Counts cycles that an ICache miss is outstanding, and instruction fetch is stalled. That is, the decoder queue is able to accept bytes, but the fetch unit is unable to provide bytes, while an Icache miss outstanding. Note this event is not the same as cycles to retrieve an instruction due to an Icache miss. Rather, it is the part of the Instruction Cache (ICache) miss time where no bytes are available for the decoder.",
45 "EventCode": "0x86",
46 "Counter": "0,1,2,3",
47 "UMask": "0x2",
48 "EventName": "FETCH_STALL.ICACHE_FILL_PENDING_CYCLES",
49 "SampleAfterValue": "200003",
50 "BriefDescription": "Cycles where code-fetch is stalled and an ICache miss is outstanding. This is not the same as an ICache Miss."
51 },
52 {
53 "PEBS": "2",
54 "CollectPEBSRecord": "2",
55 "PublicDescription": "Counts the number of load uops retired.",
56 "EventCode": "0xD0",
57 "Counter": "0,1,2,3",
58 "UMask": "0x81",
59 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
60 "SampleAfterValue": "200003",
61 "BriefDescription": "Load uops retired (Precise event capable)"
62 },
63 {
64 "PEBS": "2",
65 "CollectPEBSRecord": "2",
66 "PublicDescription": "Counts the number of store uops retired.",
67 "EventCode": "0xD0",
68 "Counter": "0,1,2,3",
69 "UMask": "0x82",
70 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
71 "SampleAfterValue": "200003",
72 "BriefDescription": "Store uops retired (Precise event capable)"
73 },
74 {
75 "PEBS": "2",
76 "CollectPEBSRecord": "2",
77 "PublicDescription": "Counts the number of memory uops retired that is either a loads or a store or both.",
78 "EventCode": "0xD0",
79 "Counter": "0,1,2,3",
80 "UMask": "0x83",
81 "EventName": "MEM_UOPS_RETIRED.ALL",
82 "SampleAfterValue": "200003",
83 "BriefDescription": "Memory uops retired (Precise event capable)"
84 },
85 {
86 "PEBS": "2",
87 "CollectPEBSRecord": "2",
88 "PublicDescription": "Counts locked memory uops retired. This includes \"regular\" locks and bus locks. (To specifically count bus locks only, see the Offcore response event.) A locked access is one with a lock prefix, or an exchange to memory. See the SDM for a complete description of which memory load accesses are locks.",
89 "EventCode": "0xD0",
90 "Counter": "0,1,2,3",
91 "UMask": "0x21",
92 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
93 "SampleAfterValue": "200003",
94 "BriefDescription": "Locked load uops retired (Precise event capable)"
95 },
96 {
97 "PEBS": "2",
98 "CollectPEBSRecord": "2",
99 "PublicDescription": "Counts load uops retired where the data requested spans a 64 byte cache line boundary.",
100 "EventCode": "0xD0",
101 "Counter": "0,1,2,3",
102 "UMask": "0x41",
103 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
104 "SampleAfterValue": "200003",
105 "BriefDescription": "Load uops retired that split a cache-line (Precise event capable)"
106 },
107 {
108 "PEBS": "2",
109 "CollectPEBSRecord": "2",
110 "PublicDescription": "Counts store uops retired where the data requested spans a 64 byte cache line boundary.",
111 "EventCode": "0xD0",
112 "Counter": "0,1,2,3",
113 "UMask": "0x42",
114 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
115 "SampleAfterValue": "200003",
116 "BriefDescription": "Stores uops retired that split a cache-line (Precise event capable)"
117 },
118 {
119 "PEBS": "2",
120 "CollectPEBSRecord": "2",
121 "PublicDescription": "Counts memory uops retired where the data requested spans a 64 byte cache line boundary.",
122 "EventCode": "0xD0",
123 "Counter": "0,1,2,3",
124 "UMask": "0x43",
125 "EventName": "MEM_UOPS_RETIRED.SPLIT",
126 "SampleAfterValue": "200003",
127 "BriefDescription": "Memory uops retired that split a cache-line (Precise event capable)"
128 },
129 {
130 "PEBS": "2",
131 "CollectPEBSRecord": "2",
132 "PublicDescription": "Counts load uops retired that hit the L1 data cache.",
133 "EventCode": "0xD1",
134 "Counter": "0,1,2,3",
135 "UMask": "0x1",
136 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
137 "SampleAfterValue": "200003",
138 "BriefDescription": "Load uops retired that hit L1 data cache (Precise event capable)"
139 },
140 {
141 "PEBS": "2",
142 "CollectPEBSRecord": "2",
143 "PublicDescription": "Counts load uops retired that miss the L1 data cache.",
144 "EventCode": "0xD1",
145 "Counter": "0,1,2,3",
146 "UMask": "0x8",
147 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
148 "SampleAfterValue": "200003",
149 "BriefDescription": "Load uops retired that missed L1 data cache (Precise event capable)"
150 },
151 {
152 "PEBS": "2",
153 "CollectPEBSRecord": "2",
154 "PublicDescription": "Counts load uops retired that hit in the L2 cache.",
155 "EventCode": "0xD1",
156 "Counter": "0,1,2,3",
157 "UMask": "0x2",
158 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
159 "SampleAfterValue": "200003",
160 "BriefDescription": "Load uops retired that hit L2 (Precise event capable)"
161 },
162 {
163 "PEBS": "2",
164 "CollectPEBSRecord": "2",
165 "PublicDescription": "Counts load uops retired that miss in the L2 cache.",
166 "EventCode": "0xD1",
167 "Counter": "0,1,2,3",
168 "UMask": "0x10",
169 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
170 "SampleAfterValue": "200003",
171 "BriefDescription": "Load uops retired that missed L2 (Precise event capable)"
172 },
173 {
174 "PEBS": "2",
175 "CollectPEBSRecord": "2",
176 "PublicDescription": "Counts load uops retired where the cache line containing the data was in the modified state of another core or modules cache (HITM). More specifically, this means that when the load address was checked by other caching agents (typically another processor) in the system, one of those caching agents indicated that they had a dirty copy of the data. Loads that obtain a HITM response incur greater latency than most is typical for a load. In addition, since HITM indicates that some other processor had this data in its cache, it implies that the data was shared between processors, or potentially was a lock or semaphore value. This event is useful for locating sharing, false sharing, and contended locks.",
177 "EventCode": "0xD1",
178 "Counter": "0,1,2,3",
179 "UMask": "0x20",
180 "EventName": "MEM_LOAD_UOPS_RETIRED.HITM",
181 "SampleAfterValue": "200003",
182 "BriefDescription": "Memory uop retired where cross core or cross module HITM occurred (Precise event capable)"
183 },
184 {
185 "PEBS": "2",
186 "CollectPEBSRecord": "2",
187 "PublicDescription": "Counts memory load uops retired where the data is retrieved from the WCB (or fill buffer), indicating that the load found its data while that data was in the process of being brought into the L1 cache. Typically a load will receive this indication when some other load or prefetch missed the L1 cache and was in the process of retrieving the cache line containing the data, but that process had not yet finished (and written the data back to the cache). For example, consider load X and Y, both referencing the same cache line that is not in the L1 cache. If load X misses cache first, it obtains and WCB (or fill buffer) and begins the process of requesting the data. When load Y requests the data, it will either hit the WCB, or the L1 cache, depending on exactly what time the request to Y occurs.",
188 "EventCode": "0xD1",
189 "Counter": "0,1,2,3",
190 "UMask": "0x40",
191 "EventName": "MEM_LOAD_UOPS_RETIRED.WCB_HIT",
192 "SampleAfterValue": "200003",
193 "BriefDescription": "Loads retired that hit WCB (Precise event capable)"
194 },
195 {
196 "PEBS": "2",
197 "CollectPEBSRecord": "2",
198 "PublicDescription": "Counts memory load uops retired where the data is retrieved from DRAM. Event is counted at retirement, so the speculative loads are ignored. A memory load can hit (or miss) the L1 cache, hit (or miss) the L2 cache, hit DRAM, hit in the WCB or receive a HITM response.",
199 "EventCode": "0xD1",
200 "Counter": "0,1,2,3",
201 "UMask": "0x80",
202 "EventName": "MEM_LOAD_UOPS_RETIRED.DRAM_HIT",
203 "SampleAfterValue": "200003",
204 "BriefDescription": "Loads retired that came from DRAM (Precise event capable)"
205 },
206 {
207 "CollectPEBSRecord": "1",
208 "PublicDescription": "Counts when a modified (dirty) cache line is evicted from the data L1 cache and needs to be written back to memory. No count will occur if the evicted line is clean, and hence does not require a writeback.",
209 "EventCode": "0x51",
210 "Counter": "0,1,2,3",
211 "UMask": "0x1",
212 "EventName": "DL1.DIRTY_EVICTION",
213 "SampleAfterValue": "200003",
214 "BriefDescription": "L1 Cache evictions for dirty data"
215 },
216 {
217 "CollectPEBSRecord": "1",
218 "EventCode": "0xB7",
219 "Counter": "0,1,2,3",
220 "UMask": "0x1",
221 "EventName": "OFFCORE_RESPONSE",
222 "SampleAfterValue": "100007",
223 "BriefDescription": "Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for both MSRs)"
224 },
225 {
226 "EventCode": "0xB7",
227 "MSRValue": "0x36000032b7 ",
228 "Counter": "0,1,2,3",
229 "UMask": "0x1",
230 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_MISS.ANY",
231 "MSRIndex": "0x1a6,0x1a7",
232 "SampleAfterValue": "100007",
233 "BriefDescription": "Counts data read, code read, and read for ownership (RFO) requests (demand & prefetch) that miss the L2 cache.",
234 "Offcore": "1"
235 },
236 {
237 "EventCode": "0xB7",
238 "MSRValue": "0x10000032b7 ",
239 "Counter": "0,1,2,3",
240 "UMask": "0x1",
241 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_MISS.HITM_OTHER_CORE",
242 "MSRIndex": "0x1a6,0x1a7",
243 "SampleAfterValue": "100007",
244 "BriefDescription": "Counts data read, code read, and read for ownership (RFO) requests (demand & prefetch) that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
245 "Offcore": "1"
246 },
247 {
248 "EventCode": "0xB7",
249 "MSRValue": "0x04000032b7 ",
250 "Counter": "0,1,2,3",
251 "UMask": "0x1",
252 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_MISS.HIT_OTHER_CORE_NO_FWD",
253 "MSRIndex": "0x1a6,0x1a7",
254 "SampleAfterValue": "100007",
255 "BriefDescription": "Counts data read, code read, and read for ownership (RFO) requests (demand & prefetch) that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
256 "Offcore": "1"
257 },
258 {
259 "EventCode": "0xB7",
260 "MSRValue": "0x02000032b7 ",
261 "Counter": "0,1,2,3",
262 "UMask": "0x1",
263 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
264 "MSRIndex": "0x1a6,0x1a7",
265 "SampleAfterValue": "100007",
266 "BriefDescription": "Counts data read, code read, and read for ownership (RFO) requests (demand & prefetch) that true miss for the L2 cache with a snoop miss in the other processor module. ",
267 "Offcore": "1"
268 },
269 {
270 "EventCode": "0xB7",
271 "MSRValue": "0x00000432b7 ",
272 "Counter": "0,1,2,3",
273 "UMask": "0x1",
274 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT",
275 "MSRIndex": "0x1a6,0x1a7",
276 "SampleAfterValue": "100007",
277 "BriefDescription": "Counts data read, code read, and read for ownership (RFO) requests (demand & prefetch) that hit the L2 cache.",
278 "Offcore": "1"
279 },
280 {
281 "EventCode": "0xB7",
282 "MSRValue": "0x3600000022 ",
283 "Counter": "0,1,2,3",
284 "UMask": "0x1",
285 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.ANY",
286 "MSRIndex": "0x1a6,0x1a7",
287 "SampleAfterValue": "100007",
288 "BriefDescription": "Counts reads for ownership (RFO) requests (demand & prefetch) that miss the L2 cache.",
289 "Offcore": "1"
290 },
291 {
292 "EventCode": "0xB7",
293 "MSRValue": "0x1000000022 ",
294 "Counter": "0,1,2,3",
295 "UMask": "0x1",
296 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.HITM_OTHER_CORE",
297 "MSRIndex": "0x1a6,0x1a7",
298 "SampleAfterValue": "100007",
299 "BriefDescription": "Counts reads for ownership (RFO) requests (demand & prefetch) that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
300 "Offcore": "1"
301 },
302 {
303 "EventCode": "0xB7",
304 "MSRValue": "0x0400000022 ",
305 "Counter": "0,1,2,3",
306 "UMask": "0x1",
307 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.HIT_OTHER_CORE_NO_FWD",
308 "MSRIndex": "0x1a6,0x1a7",
309 "SampleAfterValue": "100007",
310 "BriefDescription": "Counts reads for ownership (RFO) requests (demand & prefetch) that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
311 "Offcore": "1"
312 },
313 {
314 "EventCode": "0xB7",
315 "MSRValue": "0x0200000022 ",
316 "Counter": "0,1,2,3",
317 "UMask": "0x1",
318 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
319 "MSRIndex": "0x1a6,0x1a7",
320 "SampleAfterValue": "100007",
321 "BriefDescription": "Counts reads for ownership (RFO) requests (demand & prefetch) that true miss for the L2 cache with a snoop miss in the other processor module. ",
322 "Offcore": "1"
323 },
324 {
325 "EventCode": "0xB7",
326 "MSRValue": "0x0000040022 ",
327 "Counter": "0,1,2,3",
328 "UMask": "0x1",
329 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT",
330 "MSRIndex": "0x1a6,0x1a7",
331 "SampleAfterValue": "100007",
332 "BriefDescription": "Counts reads for ownership (RFO) requests (demand & prefetch) that hit the L2 cache.",
333 "Offcore": "1"
334 },
335 {
336 "EventCode": "0xB7",
337 "MSRValue": "0x3600003091",
338 "Counter": "0,1,2,3",
339 "UMask": "0x1",
340 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.ANY",
341 "MSRIndex": "0x1a6,0x1a7",
342 "SampleAfterValue": "100007",
343 "BriefDescription": "Counts data reads (demand & prefetch) that miss the L2 cache.",
344 "Offcore": "1"
345 },
346 {
347 "EventCode": "0xB7",
348 "MSRValue": "0x1000003091",
349 "Counter": "0,1,2,3",
350 "UMask": "0x1",
351 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.HITM_OTHER_CORE",
352 "MSRIndex": "0x1a6,0x1a7",
353 "SampleAfterValue": "100007",
354 "BriefDescription": "Counts data reads (demand & prefetch) that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
355 "Offcore": "1"
356 },
357 {
358 "EventCode": "0xB7",
359 "MSRValue": "0x0400003091",
360 "Counter": "0,1,2,3",
361 "UMask": "0x1",
362 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
363 "MSRIndex": "0x1a6,0x1a7",
364 "SampleAfterValue": "100007",
365 "BriefDescription": "Counts data reads (demand & prefetch) that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
366 "Offcore": "1"
367 },
368 {
369 "EventCode": "0xB7",
370 "MSRValue": "0x0200003091",
371 "Counter": "0,1,2,3",
372 "UMask": "0x1",
373 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
374 "MSRIndex": "0x1a6,0x1a7",
375 "SampleAfterValue": "100007",
376 "BriefDescription": "Counts data reads (demand & prefetch) that true miss for the L2 cache with a snoop miss in the other processor module. ",
377 "Offcore": "1"
378 },
379 {
380 "EventCode": "0xB7",
381 "MSRValue": "0x0000043091",
382 "Counter": "0,1,2,3",
383 "UMask": "0x1",
384 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT",
385 "MSRIndex": "0x1a6,0x1a7",
386 "SampleAfterValue": "100007",
387 "BriefDescription": "Counts data reads (demand & prefetch) that hit the L2 cache.",
388 "Offcore": "1"
389 },
390 {
391 "EventCode": "0xB7",
392 "MSRValue": "0x3600003010 ",
393 "Counter": "0,1,2,3",
394 "UMask": "0x1",
395 "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_MISS.ANY",
396 "MSRIndex": "0x1a6,0x1a7",
397 "SampleAfterValue": "100007",
398 "BriefDescription": "Counts data reads generated by L1 or L2 prefetchers that miss the L2 cache.",
399 "Offcore": "1"
400 },
401 {
402 "EventCode": "0xB7",
403 "MSRValue": "0x1000003010 ",
404 "Counter": "0,1,2,3",
405 "UMask": "0x1",
406 "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_MISS.HITM_OTHER_CORE",
407 "MSRIndex": "0x1a6,0x1a7",
408 "SampleAfterValue": "100007",
409 "BriefDescription": "Counts data reads generated by L1 or L2 prefetchers that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
410 "Offcore": "1"
411 },
412 {
413 "EventCode": "0xB7",
414 "MSRValue": "0x0400003010 ",
415 "Counter": "0,1,2,3",
416 "UMask": "0x1",
417 "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
418 "MSRIndex": "0x1a6,0x1a7",
419 "SampleAfterValue": "100007",
420 "BriefDescription": "Counts data reads generated by L1 or L2 prefetchers that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
421 "Offcore": "1"
422 },
423 {
424 "EventCode": "0xB7",
425 "MSRValue": "0x0200003010 ",
426 "Counter": "0,1,2,3",
427 "UMask": "0x1",
428 "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
429 "MSRIndex": "0x1a6,0x1a7",
430 "SampleAfterValue": "100007",
431 "BriefDescription": "Counts data reads generated by L1 or L2 prefetchers that true miss for the L2 cache with a snoop miss in the other processor module. ",
432 "Offcore": "1"
433 },
434 {
435 "EventCode": "0xB7",
436 "MSRValue": "0x0000043010 ",
437 "Counter": "0,1,2,3",
438 "UMask": "0x1",
439 "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_HIT",
440 "MSRIndex": "0x1a6,0x1a7",
441 "SampleAfterValue": "100007",
442 "BriefDescription": "Counts data reads generated by L1 or L2 prefetchers that hit the L2 cache.",
443 "Offcore": "1"
444 },
445 {
446 "EventCode": "0xB7",
447 "MSRValue": "0x1000008000 ",
448 "Counter": "0,1,2,3",
449 "UMask": "0x1",
450 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.HITM_OTHER_CORE",
451 "MSRIndex": "0x1a6,0x1a7",
452 "SampleAfterValue": "100007",
453 "BriefDescription": "Counts requests to the uncore subsystem that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
454 "Offcore": "1"
455 },
456 {
457 "EventCode": "0xB7",
458 "MSRValue": "0x0400008000 ",
459 "Counter": "0,1,2,3",
460 "UMask": "0x1",
461 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.HIT_OTHER_CORE_NO_FWD",
462 "MSRIndex": "0x1a6,0x1a7",
463 "SampleAfterValue": "100007",
464 "BriefDescription": "Counts requests to the uncore subsystem that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
465 "Offcore": "1"
466 },
467 {
468 "EventCode": "0xB7",
469 "MSRValue": "0x0200008000 ",
470 "Counter": "0,1,2,3",
471 "UMask": "0x1",
472 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
473 "MSRIndex": "0x1a6,0x1a7",
474 "SampleAfterValue": "100007",
475 "BriefDescription": "Counts requests to the uncore subsystem that true miss for the L2 cache with a snoop miss in the other processor module. ",
476 "Offcore": "1"
477 },
478 {
479 "EventCode": "0xB7",
480 "MSRValue": "0x0000048000 ",
481 "Counter": "0,1,2,3",
482 "UMask": "0x1",
483 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT",
484 "MSRIndex": "0x1a6,0x1a7",
485 "SampleAfterValue": "100007",
486 "BriefDescription": "Counts requests to the uncore subsystem that hit the L2 cache.",
487 "Offcore": "1"
488 },
489 {
490 "EventCode": "0xB7",
491 "MSRValue": "0x0000018000 ",
492 "Counter": "0,1,2,3",
493 "UMask": "0x1",
494 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_RESPONSE",
495 "MSRIndex": "0x1a6,0x1a7",
496 "SampleAfterValue": "100007",
497 "BriefDescription": "Counts requests to the uncore subsystem that have any transaction responses from the uncore subsystem.",
498 "Offcore": "1"
499 },
500 {
501 "EventCode": "0xB7",
502 "MSRValue": "0x3600004800 ",
503 "Counter": "0,1,2,3",
504 "UMask": "0x1",
505 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L2_MISS.ANY",
506 "MSRIndex": "0x1a6,0x1a7",
507 "SampleAfterValue": "100007",
508 "BriefDescription": "Counts any data writes to uncacheable write combining (USWC) memory region that miss the L2 cache.",
509 "Offcore": "1"
510 },
511 {
512 "EventCode": "0xB7",
513 "MSRValue": "0x0000044800 ",
514 "Counter": "0,1,2,3",
515 "UMask": "0x1",
516 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L2_HIT",
517 "MSRIndex": "0x1a6,0x1a7",
518 "SampleAfterValue": "100007",
519 "BriefDescription": "Counts any data writes to uncacheable write combining (USWC) memory region that hit the L2 cache.",
520 "Offcore": "1"
521 },
522 {
523 "EventCode": "0xB7",
524 "MSRValue": "0x3600004000 ",
525 "Counter": "0,1,2,3",
526 "UMask": "0x1",
527 "EventName": "OFFCORE_RESPONSE.PARTIAL_STREAMING_STORES.L2_MISS.ANY",
528 "MSRIndex": "0x1a6,0x1a7",
529 "SampleAfterValue": "100007",
530 "BriefDescription": "Counts partial cache line data writes to uncacheable write combining (USWC) memory region that miss the L2 cache.",
531 "Offcore": "1"
532 },
533 {
534 "EventCode": "0xB7",
535 "MSRValue": "0x1000004000 ",
536 "Counter": "0,1,2,3",
537 "UMask": "0x1",
538 "EventName": "OFFCORE_RESPONSE.PARTIAL_STREAMING_STORES.L2_MISS.HITM_OTHER_CORE",
539 "MSRIndex": "0x1a6,0x1a7",
540 "SampleAfterValue": "100007",
541 "BriefDescription": "Counts partial cache line data writes to uncacheable write combining (USWC) memory region that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
542 "Offcore": "1"
543 },
544 {
545 "EventCode": "0xB7",
546 "MSRValue": "0x0400004000 ",
547 "Counter": "0,1,2,3",
548 "UMask": "0x1",
549 "EventName": "OFFCORE_RESPONSE.PARTIAL_STREAMING_STORES.L2_MISS.HIT_OTHER_CORE_NO_FWD",
550 "MSRIndex": "0x1a6,0x1a7",
551 "SampleAfterValue": "100007",
552 "BriefDescription": "Counts partial cache line data writes to uncacheable write combining (USWC) memory region that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
553 "Offcore": "1"
554 },
555 {
556 "EventCode": "0xB7",
557 "MSRValue": "0x0200004000 ",
558 "Counter": "0,1,2,3",
559 "UMask": "0x1",
560 "EventName": "OFFCORE_RESPONSE.PARTIAL_STREAMING_STORES.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
561 "MSRIndex": "0x1a6,0x1a7",
562 "SampleAfterValue": "100007",
563 "BriefDescription": "Counts partial cache line data writes to uncacheable write combining (USWC) memory region that true miss for the L2 cache with a snoop miss in the other processor module. ",
564 "Offcore": "1"
565 },
566 {
567 "EventCode": "0xB7",
568 "MSRValue": "0x0000044000 ",
569 "Counter": "0,1,2,3",
570 "UMask": "0x1",
571 "EventName": "OFFCORE_RESPONSE.PARTIAL_STREAMING_STORES.L2_HIT",
572 "MSRIndex": "0x1a6,0x1a7",
573 "SampleAfterValue": "100007",
574 "BriefDescription": "Counts partial cache line data writes to uncacheable write combining (USWC) memory region that hit the L2 cache.",
575 "Offcore": "1"
576 },
577 {
578 "EventCode": "0xB7",
579 "MSRValue": "0x3600002000 ",
580 "Counter": "0,1,2,3",
581 "UMask": "0x1",
582 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.ANY",
583 "MSRIndex": "0x1a6,0x1a7",
584 "SampleAfterValue": "100007",
585 "BriefDescription": "Counts data cache line reads generated by hardware L1 data cache prefetcher that miss the L2 cache.",
586 "Offcore": "1"
587 },
588 {
589 "EventCode": "0xB7",
590 "MSRValue": "0x1000002000 ",
591 "Counter": "0,1,2,3",
592 "UMask": "0x1",
593 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.HITM_OTHER_CORE",
594 "MSRIndex": "0x1a6,0x1a7",
595 "SampleAfterValue": "100007",
596 "BriefDescription": "Counts data cache line reads generated by hardware L1 data cache prefetcher that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
597 "Offcore": "1"
598 },
599 {
600 "EventCode": "0xB7",
601 "MSRValue": "0x0400002000 ",
602 "Counter": "0,1,2,3",
603 "UMask": "0x1",
604 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
605 "MSRIndex": "0x1a6,0x1a7",
606 "SampleAfterValue": "100007",
607 "BriefDescription": "Counts data cache line reads generated by hardware L1 data cache prefetcher that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
608 "Offcore": "1"
609 },
610 {
611 "EventCode": "0xB7",
612 "MSRValue": "0x0200002000 ",
613 "Counter": "0,1,2,3",
614 "UMask": "0x1",
615 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
616 "MSRIndex": "0x1a6,0x1a7",
617 "SampleAfterValue": "100007",
618 "BriefDescription": "Counts data cache line reads generated by hardware L1 data cache prefetcher that true miss for the L2 cache with a snoop miss in the other processor module. ",
619 "Offcore": "1"
620 },
621 {
622 "EventCode": "0xB7",
623 "MSRValue": "0x0000042000 ",
624 "Counter": "0,1,2,3",
625 "UMask": "0x1",
626 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT",
627 "MSRIndex": "0x1a6,0x1a7",
628 "SampleAfterValue": "100007",
629 "BriefDescription": "Counts data cache line reads generated by hardware L1 data cache prefetcher that hit the L2 cache.",
630 "Offcore": "1"
631 },
632 {
633 "EventCode": "0xB7",
634 "MSRValue": "0x3600001000 ",
635 "Counter": "0,1,2,3",
636 "UMask": "0x1",
637 "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.L2_MISS.ANY",
638 "MSRIndex": "0x1a6,0x1a7",
639 "SampleAfterValue": "100007",
640 "BriefDescription": "Counts data cache lines requests by software prefetch instructions that miss the L2 cache.",
641 "Offcore": "1"
642 },
643 {
644 "EventCode": "0xB7",
645 "MSRValue": "0x1000001000 ",
646 "Counter": "0,1,2,3",
647 "UMask": "0x1",
648 "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.L2_MISS.HITM_OTHER_CORE",
649 "MSRIndex": "0x1a6,0x1a7",
650 "SampleAfterValue": "100007",
651 "BriefDescription": "Counts data cache lines requests by software prefetch instructions that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
652 "Offcore": "1"
653 },
654 {
655 "EventCode": "0xB7",
656 "MSRValue": "0x0400001000 ",
657 "Counter": "0,1,2,3",
658 "UMask": "0x1",
659 "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.L2_MISS.HIT_OTHER_CORE_NO_FWD",
660 "MSRIndex": "0x1a6,0x1a7",
661 "SampleAfterValue": "100007",
662 "BriefDescription": "Counts data cache lines requests by software prefetch instructions that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
663 "Offcore": "1"
664 },
665 {
666 "EventCode": "0xB7",
667 "MSRValue": "0x0200001000 ",
668 "Counter": "0,1,2,3",
669 "UMask": "0x1",
670 "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
671 "MSRIndex": "0x1a6,0x1a7",
672 "SampleAfterValue": "100007",
673 "BriefDescription": "Counts data cache lines requests by software prefetch instructions that true miss for the L2 cache with a snoop miss in the other processor module. ",
674 "Offcore": "1"
675 },
676 {
677 "EventCode": "0xB7",
678 "MSRValue": "0x0000041000 ",
679 "Counter": "0,1,2,3",
680 "UMask": "0x1",
681 "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.L2_HIT",
682 "MSRIndex": "0x1a6,0x1a7",
683 "SampleAfterValue": "100007",
684 "BriefDescription": "Counts data cache lines requests by software prefetch instructions that hit the L2 cache.",
685 "Offcore": "1"
686 },
687 {
688 "EventCode": "0xB7",
689 "MSRValue": "0x3600000800 ",
690 "Counter": "0,1,2,3",
691 "UMask": "0x1",
692 "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_MISS.ANY",
693 "MSRIndex": "0x1a6,0x1a7",
694 "SampleAfterValue": "100007",
695 "BriefDescription": "Counts full cache line data writes to uncacheable write combining (USWC) memory region and full cache-line non-temporal writes that miss the L2 cache.",
696 "Offcore": "1"
697 },
698 {
699 "EventCode": "0xB7",
700 "MSRValue": "0x1000000800 ",
701 "Counter": "0,1,2,3",
702 "UMask": "0x1",
703 "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_MISS.HITM_OTHER_CORE",
704 "MSRIndex": "0x1a6,0x1a7",
705 "SampleAfterValue": "100007",
706 "BriefDescription": "Counts full cache line data writes to uncacheable write combining (USWC) memory region and full cache-line non-temporal writes that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
707 "Offcore": "1"
708 },
709 {
710 "EventCode": "0xB7",
711 "MSRValue": "0x0400000800 ",
712 "Counter": "0,1,2,3",
713 "UMask": "0x1",
714 "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_MISS.HIT_OTHER_CORE_NO_FWD",
715 "MSRIndex": "0x1a6,0x1a7",
716 "SampleAfterValue": "100007",
717 "BriefDescription": "Counts full cache line data writes to uncacheable write combining (USWC) memory region and full cache-line non-temporal writes that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
718 "Offcore": "1"
719 },
720 {
721 "EventCode": "0xB7",
722 "MSRValue": "0x0200000800 ",
723 "Counter": "0,1,2,3",
724 "UMask": "0x1",
725 "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
726 "MSRIndex": "0x1a6,0x1a7",
727 "SampleAfterValue": "100007",
728 "BriefDescription": "Counts full cache line data writes to uncacheable write combining (USWC) memory region and full cache-line non-temporal writes that true miss for the L2 cache with a snoop miss in the other processor module. ",
729 "Offcore": "1"
730 },
731 {
732 "EventCode": "0xB7",
733 "MSRValue": "0x0000040800 ",
734 "Counter": "0,1,2,3",
735 "UMask": "0x1",
736 "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_HIT",
737 "MSRIndex": "0x1a6,0x1a7",
738 "SampleAfterValue": "100007",
739 "BriefDescription": "Counts full cache line data writes to uncacheable write combining (USWC) memory region and full cache-line non-temporal writes that hit the L2 cache.",
740 "Offcore": "1"
741 },
742 {
743 "EventCode": "0xB7",
744 "MSRValue": "0x0000010400 ",
745 "Counter": "0,1,2,3",
746 "UMask": "0x1",
747 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.ANY_RESPONSE",
748 "MSRIndex": "0x1a6,0x1a7",
749 "SampleAfterValue": "100007",
750 "BriefDescription": "Counts bus lock and split lock requests that have any transaction responses from the uncore subsystem.",
751 "Offcore": "1"
752 },
753 {
754 "EventCode": "0xB7",
755 "MSRValue": "0x3600000100 ",
756 "Counter": "0,1,2,3",
757 "UMask": "0x1",
758 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_MISS.ANY",
759 "MSRIndex": "0x1a6,0x1a7",
760 "SampleAfterValue": "100007",
761 "BriefDescription": "Counts the number of demand write requests (RFO) generated by a write to partial data cache line, including the writes to uncacheable (UC) and write through (WT), and write protected (WP) types of memory that miss the L2 cache.",
762 "Offcore": "1"
763 },
764 {
765 "EventCode": "0xB7",
766 "MSRValue": "0x3600000080 ",
767 "Counter": "0,1,2,3",
768 "UMask": "0x1",
769 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_MISS.ANY",
770 "MSRIndex": "0x1a6,0x1a7",
771 "SampleAfterValue": "100007",
772 "BriefDescription": "Counts demand data partial reads, including data in uncacheable (UC) or uncacheable write combining (USWC) memory types that miss the L2 cache.",
773 "Offcore": "1"
774 },
775 {
776 "EventCode": "0xB7",
777 "MSRValue": "0x3600000020 ",
778 "Counter": "0,1,2,3",
779 "UMask": "0x1",
780 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.ANY",
781 "MSRIndex": "0x1a6,0x1a7",
782 "SampleAfterValue": "100007",
783 "BriefDescription": "Counts reads for ownership (RFO) requests generated by L2 prefetcher that miss the L2 cache.",
784 "Offcore": "1"
785 },
786 {
787 "EventCode": "0xB7",
788 "MSRValue": "0x1000000020 ",
789 "Counter": "0,1,2,3",
790 "UMask": "0x1",
791 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.HITM_OTHER_CORE",
792 "MSRIndex": "0x1a6,0x1a7",
793 "SampleAfterValue": "100007",
794 "BriefDescription": "Counts reads for ownership (RFO) requests generated by L2 prefetcher that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
795 "Offcore": "1"
796 },
797 {
798 "EventCode": "0xB7",
799 "MSRValue": "0x0400000020 ",
800 "Counter": "0,1,2,3",
801 "UMask": "0x1",
802 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.HIT_OTHER_CORE_NO_FWD",
803 "MSRIndex": "0x1a6,0x1a7",
804 "SampleAfterValue": "100007",
805 "BriefDescription": "Counts reads for ownership (RFO) requests generated by L2 prefetcher that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
806 "Offcore": "1"
807 },
808 {
809 "EventCode": "0xB7",
810 "MSRValue": "0x0200000020 ",
811 "Counter": "0,1,2,3",
812 "UMask": "0x1",
813 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
814 "MSRIndex": "0x1a6,0x1a7",
815 "SampleAfterValue": "100007",
816 "BriefDescription": "Counts reads for ownership (RFO) requests generated by L2 prefetcher that true miss for the L2 cache with a snoop miss in the other processor module. ",
817 "Offcore": "1"
818 },
819 {
820 "EventCode": "0xB7",
821 "MSRValue": "0x0000040020 ",
822 "Counter": "0,1,2,3",
823 "UMask": "0x1",
824 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT",
825 "MSRIndex": "0x1a6,0x1a7",
826 "SampleAfterValue": "100007",
827 "BriefDescription": "Counts reads for ownership (RFO) requests generated by L2 prefetcher that hit the L2 cache.",
828 "Offcore": "1"
829 },
830 {
831 "EventCode": "0xB7",
832 "MSRValue": "0x3600000010 ",
833 "Counter": "0,1,2,3",
834 "UMask": "0x1",
835 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.ANY",
836 "MSRIndex": "0x1a6,0x1a7",
837 "SampleAfterValue": "100007",
838 "BriefDescription": "Counts data cacheline reads generated by hardware L2 cache prefetcher that miss the L2 cache.",
839 "Offcore": "1"
840 },
841 {
842 "EventCode": "0xB7",
843 "MSRValue": "0x1000000010 ",
844 "Counter": "0,1,2,3",
845 "UMask": "0x1",
846 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.HITM_OTHER_CORE",
847 "MSRIndex": "0x1a6,0x1a7",
848 "SampleAfterValue": "100007",
849 "BriefDescription": "Counts data cacheline reads generated by hardware L2 cache prefetcher that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
850 "Offcore": "1"
851 },
852 {
853 "EventCode": "0xB7",
854 "MSRValue": "0x0400000010 ",
855 "Counter": "0,1,2,3",
856 "UMask": "0x1",
857 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
858 "MSRIndex": "0x1a6,0x1a7",
859 "SampleAfterValue": "100007",
860 "BriefDescription": "Counts data cacheline reads generated by hardware L2 cache prefetcher that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
861 "Offcore": "1"
862 },
863 {
864 "EventCode": "0xB7",
865 "MSRValue": "0x0200000010 ",
866 "Counter": "0,1,2,3",
867 "UMask": "0x1",
868 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
869 "MSRIndex": "0x1a6,0x1a7",
870 "SampleAfterValue": "100007",
871 "BriefDescription": "Counts data cacheline reads generated by hardware L2 cache prefetcher that true miss for the L2 cache with a snoop miss in the other processor module. ",
872 "Offcore": "1"
873 },
874 {
875 "EventCode": "0xB7",
876 "MSRValue": "0x0000040010 ",
877 "Counter": "0,1,2,3",
878 "UMask": "0x1",
879 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_HIT",
880 "MSRIndex": "0x1a6,0x1a7",
881 "SampleAfterValue": "100007",
882 "BriefDescription": "Counts data cacheline reads generated by hardware L2 cache prefetcher that hit the L2 cache.",
883 "Offcore": "1"
884 },
885 {
886 "EventCode": "0xB7",
887 "MSRValue": "0x3600000008 ",
888 "Counter": "0,1,2,3",
889 "UMask": "0x1",
890 "EventName": "OFFCORE_RESPONSE.COREWB.L2_MISS.ANY",
891 "MSRIndex": "0x1a6",
892 "SampleAfterValue": "100007",
893 "BriefDescription": "Counts the number of writeback transactions caused by L1 or L2 cache evictions that miss the L2 cache.",
894 "Offcore": "1"
895 },
896 {
897 "EventCode": "0xB7",
898 "MSRValue": "0x1000000008 ",
899 "Counter": "0,1,2,3",
900 "UMask": "0x1",
901 "EventName": "OFFCORE_RESPONSE.COREWB.L2_MISS.HITM_OTHER_CORE",
902 "MSRIndex": "0x1a6",
903 "SampleAfterValue": "100007",
904 "BriefDescription": "Counts the number of writeback transactions caused by L1 or L2 cache evictions that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
905 "Offcore": "1"
906 },
907 {
908 "EventCode": "0xB7",
909 "MSRValue": "0x0400000008 ",
910 "Counter": "0,1,2,3",
911 "UMask": "0x1",
912 "EventName": "OFFCORE_RESPONSE.COREWB.L2_MISS.HIT_OTHER_CORE_NO_FWD",
913 "MSRIndex": "0x1a6",
914 "SampleAfterValue": "100007",
915 "BriefDescription": "Counts the number of writeback transactions caused by L1 or L2 cache evictions that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
916 "Offcore": "1"
917 },
918 {
919 "EventCode": "0xB7",
920 "MSRValue": "0x0200000008 ",
921 "Counter": "0,1,2,3",
922 "UMask": "0x1",
923 "EventName": "OFFCORE_RESPONSE.COREWB.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
924 "MSRIndex": "0x1a6",
925 "SampleAfterValue": "100007",
926 "BriefDescription": "Counts the number of writeback transactions caused by L1 or L2 cache evictions that true miss for the L2 cache with a snoop miss in the other processor module. ",
927 "Offcore": "1"
928 },
929 {
930 "EventCode": "0xB7",
931 "MSRValue": "0x0000040008 ",
932 "Counter": "0,1,2,3",
933 "UMask": "0x1",
934 "EventName": "OFFCORE_RESPONSE.COREWB.L2_HIT",
935 "MSRIndex": "0x1a6",
936 "SampleAfterValue": "100007",
937 "BriefDescription": "Counts the number of writeback transactions caused by L1 or L2 cache evictions that hit the L2 cache.",
938 "Offcore": "1"
939 },
940 {
941 "EventCode": "0xB7",
942 "MSRValue": "0x4000000004 ",
943 "Counter": "0,1,2,3",
944 "UMask": "0x1",
945 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.OUTSTANDING",
946 "MSRIndex": "0x1a6",
947 "SampleAfterValue": "100007",
948 "BriefDescription": "Counts demand instruction cacheline and I-side prefetch requests that miss the instruction cache that are outstanding, per cycle, from the time of the L2 miss to when any response is received.",
949 "Offcore": "1"
950 },
951 {
952 "EventCode": "0xB7",
953 "MSRValue": "0x3600000004 ",
954 "Counter": "0,1,2,3",
955 "UMask": "0x1",
956 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.ANY",
957 "MSRIndex": "0x1a6,0x1a7",
958 "SampleAfterValue": "100007",
959 "BriefDescription": "Counts demand instruction cacheline and I-side prefetch requests that miss the instruction cache that miss the L2 cache.",
960 "Offcore": "1"
961 },
962 {
963 "EventCode": "0xB7",
964 "MSRValue": "0x0400000004 ",
965 "Counter": "0,1,2,3",
966 "UMask": "0x1",
967 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
968 "MSRIndex": "0x1a6,0x1a7",
969 "SampleAfterValue": "100007",
970 "BriefDescription": "Counts demand instruction cacheline and I-side prefetch requests that miss the instruction cache that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
971 "Offcore": "1"
972 },
973 {
974 "EventCode": "0xB7",
975 "MSRValue": "0x0200000004 ",
976 "Counter": "0,1,2,3",
977 "UMask": "0x1",
978 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
979 "MSRIndex": "0x1a6,0x1a7",
980 "SampleAfterValue": "100007",
981 "BriefDescription": "Counts demand instruction cacheline and I-side prefetch requests that miss the instruction cache that true miss for the L2 cache with a snoop miss in the other processor module. ",
982 "Offcore": "1"
983 },
984 {
985 "EventCode": "0xB7",
986 "MSRValue": "0x0000040004 ",
987 "Counter": "0,1,2,3",
988 "UMask": "0x1",
989 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT",
990 "MSRIndex": "0x1a6,0x1a7",
991 "SampleAfterValue": "100007",
992 "BriefDescription": "Counts demand instruction cacheline and I-side prefetch requests that miss the instruction cache that hit the L2 cache.",
993 "Offcore": "1"
994 },
995 {
996 "EventCode": "0xB7",
997 "MSRValue": "0x4000000002 ",
998 "Counter": "0,1,2,3",
999 "UMask": "0x1",
1000 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.OUTSTANDING",
1001 "MSRIndex": "0x1a6",
1002 "SampleAfterValue": "100007",
1003 "BriefDescription": "Counts demand reads for ownership (RFO) requests generated by a write to full data cache line that are outstanding, per cycle, from the time of the L2 miss to when any response is received.",
1004 "Offcore": "1"
1005 },
1006 {
1007 "EventCode": "0xB7",
1008 "MSRValue": "0x3600000002 ",
1009 "Counter": "0,1,2,3",
1010 "UMask": "0x1",
1011 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.ANY",
1012 "MSRIndex": "0x1a6,0x1a7",
1013 "SampleAfterValue": "100007",
1014 "BriefDescription": "Counts demand reads for ownership (RFO) requests generated by a write to full data cache line that miss the L2 cache.",
1015 "Offcore": "1"
1016 },
1017 {
1018 "EventCode": "0xB7",
1019 "MSRValue": "0x1000000002 ",
1020 "Counter": "0,1,2,3",
1021 "UMask": "0x1",
1022 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.HITM_OTHER_CORE",
1023 "MSRIndex": "0x1a6,0x1a7",
1024 "SampleAfterValue": "100007",
1025 "BriefDescription": "Counts demand reads for ownership (RFO) requests generated by a write to full data cache line that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
1026 "Offcore": "1"
1027 },
1028 {
1029 "EventCode": "0xB7",
1030 "MSRValue": "0x0400000002 ",
1031 "Counter": "0,1,2,3",
1032 "UMask": "0x1",
1033 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.HIT_OTHER_CORE_NO_FWD",
1034 "MSRIndex": "0x1a6,0x1a7",
1035 "SampleAfterValue": "100007",
1036 "BriefDescription": "Counts demand reads for ownership (RFO) requests generated by a write to full data cache line that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
1037 "Offcore": "1"
1038 },
1039 {
1040 "EventCode": "0xB7",
1041 "MSRValue": "0x0200000002 ",
1042 "Counter": "0,1,2,3",
1043 "UMask": "0x1",
1044 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
1045 "MSRIndex": "0x1a6,0x1a7",
1046 "SampleAfterValue": "100007",
1047 "BriefDescription": "Counts demand reads for ownership (RFO) requests generated by a write to full data cache line that true miss for the L2 cache with a snoop miss in the other processor module. ",
1048 "Offcore": "1"
1049 },
1050 {
1051 "EventCode": "0xB7",
1052 "MSRValue": "0x0000040002 ",
1053 "Counter": "0,1,2,3",
1054 "UMask": "0x1",
1055 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT",
1056 "MSRIndex": "0x1a6,0x1a7",
1057 "SampleAfterValue": "100007",
1058 "BriefDescription": "Counts demand reads for ownership (RFO) requests generated by a write to full data cache line that hit the L2 cache.",
1059 "Offcore": "1"
1060 },
1061 {
1062 "EventCode": "0xB7",
1063 "MSRValue": "0x4000000001 ",
1064 "Counter": "0,1,2,3",
1065 "UMask": "0x1",
1066 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.OUTSTANDING",
1067 "MSRIndex": "0x1a6",
1068 "SampleAfterValue": "100007",
1069 "BriefDescription": "Counts demand cacheable data reads of full cache lines that are outstanding, per cycle, from the time of the L2 miss to when any response is received.",
1070 "Offcore": "1"
1071 },
1072 {
1073 "EventCode": "0xB7",
1074 "MSRValue": "0x3600000001 ",
1075 "Counter": "0,1,2,3",
1076 "UMask": "0x1",
1077 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.ANY",
1078 "MSRIndex": "0x1a6,0x1a7",
1079 "SampleAfterValue": "100007",
1080 "BriefDescription": "Counts demand cacheable data reads of full cache lines that miss the L2 cache.",
1081 "Offcore": "1"
1082 },
1083 {
1084 "EventCode": "0xB7",
1085 "MSRValue": "0x1000000001 ",
1086 "Counter": "0,1,2,3",
1087 "UMask": "0x1",
1088 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.HITM_OTHER_CORE",
1089 "MSRIndex": "0x1a6,0x1a7",
1090 "SampleAfterValue": "100007",
1091 "BriefDescription": "Counts demand cacheable data reads of full cache lines that miss the L2 cache with a snoop hit in the other processor module, data forwarding is required.",
1092 "Offcore": "1"
1093 },
1094 {
1095 "EventCode": "0xB7",
1096 "MSRValue": "0x0400000001 ",
1097 "Counter": "0,1,2,3",
1098 "UMask": "0x1",
1099 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
1100 "MSRIndex": "0x1a6,0x1a7",
1101 "SampleAfterValue": "100007",
1102 "BriefDescription": "Counts demand cacheable data reads of full cache lines that miss the L2 cache with a snoop hit in the other processor module, no data forwarding is required.",
1103 "Offcore": "1"
1104 },
1105 {
1106 "EventCode": "0xB7",
1107 "MSRValue": "0x0200000001 ",
1108 "Counter": "0,1,2,3",
1109 "UMask": "0x1",
1110 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
1111 "MSRIndex": "0x1a6,0x1a7",
1112 "SampleAfterValue": "100007",
1113 "BriefDescription": "Counts demand cacheable data reads of full cache lines that true miss for the L2 cache with a snoop miss in the other processor module. ",
1114 "Offcore": "1"
1115 },
1116 {
1117 "EventCode": "0xB7",
1118 "MSRValue": "0x0000040001 ",
1119 "Counter": "0,1,2,3",
1120 "UMask": "0x1",
1121 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT",
1122 "MSRIndex": "0x1a6,0x1a7",
1123 "SampleAfterValue": "100007",
1124 "BriefDescription": "Counts demand cacheable data reads of full cache lines that hit the L2 cache.",
1125 "Offcore": "1"
1126 }
1127] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/goldmont/frontend.json b/tools/perf/pmu-events/arch/x86/goldmont/frontend.json
new file mode 100644
index 000000000000..9ba08518649e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/goldmont/frontend.json
@@ -0,0 +1,52 @@
1[
2 {
3 "CollectPEBSRecord": "1",
4 "PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line and that cache line is in the ICache (hit). The event strives to count on a cache line basis, so that multiple accesses which hit in a single cache line count as one ICACHE.HIT. Specifically, the event counts when straight line code crosses the cache line boundary, or when a branch target is to a new line, and that cache line is in the ICache. This event counts differently than Intel processors based on Silvermont microarchitecture.",
5 "EventCode": "0x80",
6 "Counter": "0,1,2,3",
7 "UMask": "0x1",
8 "EventName": "ICACHE.HIT",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "References per ICache line that are available in the ICache (hit). This event counts differently than Intel processors based on Silvermont microarchitecture"
11 },
12 {
13 "CollectPEBSRecord": "1",
14 "PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line and that cache line is not in the ICache (miss). The event strives to count on a cache line basis, so that multiple accesses which miss in a single cache line count as one ICACHE.MISS. Specifically, the event counts when straight line code crosses the cache line boundary, or when a branch target is to a new line, and that cache line is not in the ICache. This event counts differently than Intel processors based on Silvermont microarchitecture.",
15 "EventCode": "0x80",
16 "Counter": "0,1,2,3",
17 "UMask": "0x2",
18 "EventName": "ICACHE.MISSES",
19 "SampleAfterValue": "200003",
20 "BriefDescription": "References per ICache line that are not available in the ICache (miss). This event counts differently than Intel processors based on Silvermont microarchitecture"
21 },
22 {
23 "CollectPEBSRecord": "1",
24 "PublicDescription": "Counts requests to the Instruction Cache (ICache) for one or more bytes in an ICache Line. The event strives to count on a cache line basis, so that multiple fetches to a single cache line count as one ICACHE.ACCESS. Specifically, the event counts when accesses from straight line code crosses the cache line boundary, or when a branch target is to a new line.\r\nThis event counts differently than Intel processors based on Silvermont microarchitecture.",
25 "EventCode": "0x80",
26 "Counter": "0,1,2,3",
27 "UMask": "0x3",
28 "EventName": "ICACHE.ACCESSES",
29 "SampleAfterValue": "200003",
30 "BriefDescription": "References per ICache line. This event counts differently than Intel processors based on Silvermont microarchitecture"
31 },
32 {
33 "CollectPEBSRecord": "1",
34 "PublicDescription": "Counts the number of times the Microcode Sequencer (MS) starts a flow of uops from the MSROM. It does not count every time a uop is read from the MSROM. The most common case that this counts is when a micro-coded instruction is encountered by the front end of the machine. Other cases include when an instruction encounters a fault, trap, or microcode assist of any sort that initiates a flow of uops. The event will count MS startups for uops that are speculative, and subsequently cleared by branch mispredict or a machine clear.",
35 "EventCode": "0xE7",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "MS_DECODED.MS_ENTRY",
39 "SampleAfterValue": "200003",
40 "BriefDescription": "MS decode starts"
41 },
42 {
43 "CollectPEBSRecord": "1",
44 "PublicDescription": "Counts the number of times the prediction (from the predecode cache) for instruction length is incorrect.",
45 "EventCode": "0xE9",
46 "Counter": "0,1,2,3",
47 "UMask": "0x1",
48 "EventName": "DECODE_RESTRICTION.PREDECODE_WRONG",
49 "SampleAfterValue": "200003",
50 "BriefDescription": "Decode restrictions due to predicting wrong instruction length"
51 }
52] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/goldmont/memory.json b/tools/perf/pmu-events/arch/x86/goldmont/memory.json
new file mode 100644
index 000000000000..ac8b0d365a19
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/goldmont/memory.json
@@ -0,0 +1,34 @@
1[
2 {
3 "CollectPEBSRecord": "1",
4 "PublicDescription": "Counts machine clears due to memory ordering issues. This occurs when a snoop request happens and the machine is uncertain if memory ordering will be preserved - as another core is in the process of modifying the data.",
5 "EventCode": "0xC3",
6 "Counter": "0,1,2,3",
7 "UMask": "0x2",
8 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "Machine clears due to memory ordering issue"
11 },
12 {
13 "PEBS": "2",
14 "CollectPEBSRecord": "2",
15 "PublicDescription": "Counts when a memory load of a uop spans a page boundary (a split) is retired.",
16 "EventCode": "0x13",
17 "Counter": "0,1,2,3",
18 "UMask": "0x2",
19 "EventName": "MISALIGN_MEM_REF.LOAD_PAGE_SPLIT",
20 "SampleAfterValue": "200003",
21 "BriefDescription": "Load uops that split a page (Precise event capable)"
22 },
23 {
24 "PEBS": "2",
25 "CollectPEBSRecord": "2",
26 "PublicDescription": "Counts when a memory store of a uop spans a page boundary (a split) is retired.",
27 "EventCode": "0x13",
28 "Counter": "0,1,2,3",
29 "UMask": "0x4",
30 "EventName": "MISALIGN_MEM_REF.STORE_PAGE_SPLIT",
31 "SampleAfterValue": "200003",
32 "BriefDescription": "Store uops that split a page (Precise event capable)"
33 }
34] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/goldmont/other.json b/tools/perf/pmu-events/arch/x86/goldmont/other.json
new file mode 100644
index 000000000000..df25ca9542f1
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/goldmont/other.json
@@ -0,0 +1,52 @@
1[
2 {
3 "CollectPEBSRecord": "1",
4 "PublicDescription": "Counts the number of issue slots per core cycle that were not consumed because of a full resource in the backend. Including but not limited to resources such as the Re-order Buffer (ROB), reservation stations (RS), load/store buffers, physical registers, or any other needed machine resource that is currently unavailable. Note that uops must be available for consumption in order for this event to fire. If a uop is not available (Instruction Queue is empty), this event will not count.",
5 "EventCode": "0xCA",
6 "Counter": "0,1,2,3",
7 "UMask": "0x1",
8 "EventName": "ISSUE_SLOTS_NOT_CONSUMED.RESOURCE_FULL",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "Unfilled issue slots per cycle because of a full resource in the backend"
11 },
12 {
13 "CollectPEBSRecord": "1",
14 "PublicDescription": "Counts the number of issue slots per core cycle that were not consumed by the backend because allocation is stalled waiting for a mispredicted jump to retire or other branch-like conditions (e.g. the event is relevant during certain microcode flows). Counts all issue slots blocked while within this window including slots where uops were not available in the Instruction Queue.",
15 "EventCode": "0xCA",
16 "Counter": "0,1,2,3",
17 "UMask": "0x2",
18 "EventName": "ISSUE_SLOTS_NOT_CONSUMED.RECOVERY",
19 "SampleAfterValue": "200003",
20 "BriefDescription": "Unfilled issue slots per cycle to recover"
21 },
22 {
23 "CollectPEBSRecord": "1",
24 "PublicDescription": "Counts the number of issue slots per core cycle that were not consumed by the backend due to either a full resource in the backend (RESOURCE_FULL) or due to the processor recovering from some event (RECOVERY).",
25 "EventCode": "0xCA",
26 "Counter": "0,1,2,3",
27 "UMask": "0x0",
28 "EventName": "ISSUE_SLOTS_NOT_CONSUMED.ANY",
29 "SampleAfterValue": "200003",
30 "BriefDescription": "Unfilled issue slots per cycle"
31 },
32 {
33 "CollectPEBSRecord": "2",
34 "PublicDescription": "Counts hardware interrupts received by the processor.",
35 "EventCode": "0xCB",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "HW_INTERRUPTS.RECEIVED",
39 "SampleAfterValue": "200003",
40 "BriefDescription": "Hardware interrupts received (Precise event capable)"
41 },
42 {
43 "CollectPEBSRecord": "2",
44 "PublicDescription": "Counts core cycles during which there are pending interrupts, but interrupts are masked (EFLAGS.IF = 0).",
45 "EventCode": "0xCB",
46 "Counter": "0,1,2,3",
47 "UMask": "0x4",
48 "EventName": "HW_INTERRUPTS.PENDING_AND_MASKED",
49 "SampleAfterValue": "200003",
50 "BriefDescription": "Cycles pending interrupts are masked (Precise event capable)"
51 }
52] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/goldmont/pipeline.json b/tools/perf/pmu-events/arch/x86/goldmont/pipeline.json
new file mode 100644
index 000000000000..07f00041f56f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/goldmont/pipeline.json
@@ -0,0 +1,433 @@
1[
2 {
3 "PEBS": "2",
4 "CollectPEBSRecord": "2",
5 "PublicDescription": "Counts branch instructions retired for all branch types. This is an architectural performance event.",
6 "EventCode": "0xC4",
7 "Counter": "0,1,2,3",
8 "UMask": "0x0",
9 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
10 "SampleAfterValue": "200003",
11 "BriefDescription": "Retired branch instructions (Precise event capable)"
12 },
13 {
14 "PEBS": "2",
15 "CollectPEBSRecord": "2",
16 "PublicDescription": "Counts retired Jcc (Jump on Conditional Code/Jump if Condition is Met) branch instructions retired, including both when the branch was taken and when it was not taken.",
17 "EventCode": "0xC4",
18 "Counter": "0,1,2,3",
19 "UMask": "0x7e",
20 "EventName": "BR_INST_RETIRED.JCC",
21 "SampleAfterValue": "200003",
22 "BriefDescription": "Retired conditional branch instructions (Precise event capable)"
23 },
24 {
25 "PEBS": "2",
26 "CollectPEBSRecord": "2",
27 "PublicDescription": "Counts Jcc (Jump on Conditional Code/Jump if Condition is Met) branch instructions retired that were taken and does not count when the Jcc branch instruction were not taken.",
28 "EventCode": "0xC4",
29 "Counter": "0,1,2,3",
30 "UMask": "0xfe",
31 "EventName": "BR_INST_RETIRED.TAKEN_JCC",
32 "SampleAfterValue": "200003",
33 "BriefDescription": "Retired conditional branch instructions that were taken (Precise event capable)"
34 },
35 {
36 "PEBS": "2",
37 "CollectPEBSRecord": "2",
38 "PublicDescription": "Counts near CALL branch instructions retired.",
39 "EventCode": "0xC4",
40 "Counter": "0,1,2,3",
41 "UMask": "0xf9",
42 "EventName": "BR_INST_RETIRED.CALL",
43 "SampleAfterValue": "200003",
44 "BriefDescription": "Retired near call instructions (Precise event capable)"
45 },
46 {
47 "PEBS": "2",
48 "CollectPEBSRecord": "2",
49 "PublicDescription": "Counts near relative CALL branch instructions retired.",
50 "EventCode": "0xC4",
51 "Counter": "0,1,2,3",
52 "UMask": "0xfd",
53 "EventName": "BR_INST_RETIRED.REL_CALL",
54 "SampleAfterValue": "200003",
55 "BriefDescription": "Retired near relative call instructions (Precise event capable)"
56 },
57 {
58 "PEBS": "2",
59 "CollectPEBSRecord": "2",
60 "PublicDescription": "Counts near indirect CALL branch instructions retired.",
61 "EventCode": "0xC4",
62 "Counter": "0,1,2,3",
63 "UMask": "0xfb",
64 "EventName": "BR_INST_RETIRED.IND_CALL",
65 "SampleAfterValue": "200003",
66 "BriefDescription": "Retired near indirect call instructions (Precise event capable)"
67 },
68 {
69 "PEBS": "2",
70 "CollectPEBSRecord": "2",
71 "PublicDescription": "Counts near return branch instructions retired.",
72 "EventCode": "0xC4",
73 "Counter": "0,1,2,3",
74 "UMask": "0xf7",
75 "EventName": "BR_INST_RETIRED.RETURN",
76 "SampleAfterValue": "200003",
77 "BriefDescription": "Retired near return instructions (Precise event capable)"
78 },
79 {
80 "PEBS": "2",
81 "CollectPEBSRecord": "2",
82 "PublicDescription": "Counts near indirect call or near indirect jmp branch instructions retired.",
83 "EventCode": "0xC4",
84 "Counter": "0,1,2,3",
85 "UMask": "0xeb",
86 "EventName": "BR_INST_RETIRED.NON_RETURN_IND",
87 "SampleAfterValue": "200003",
88 "BriefDescription": "Retired instructions of near indirect Jmp or call (Precise event capable)"
89 },
90 {
91 "PEBS": "2",
92 "CollectPEBSRecord": "2",
93 "PublicDescription": "Counts far branch instructions retired. This includes far jump, far call and return, and Interrupt call and return.",
94 "EventCode": "0xC4",
95 "Counter": "0,1,2,3",
96 "UMask": "0xbf",
97 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
98 "SampleAfterValue": "200003",
99 "BriefDescription": "Retired far branch instructions (Precise event capable)"
100 },
101 {
102 "PEBS": "2",
103 "CollectPEBSRecord": "2",
104 "PublicDescription": "Counts mispredicted branch instructions retired including all branch types.",
105 "EventCode": "0xC5",
106 "Counter": "0,1,2,3",
107 "UMask": "0x0",
108 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
109 "SampleAfterValue": "200003",
110 "BriefDescription": "Retired mispredicted branch instructions (Precise event capable)"
111 },
112 {
113 "PEBS": "2",
114 "CollectPEBSRecord": "2",
115 "PublicDescription": "Counts mispredicted retired Jcc (Jump on Conditional Code/Jump if Condition is Met) branch instructions retired, including both when the branch was supposed to be taken and when it was not supposed to be taken (but the processor predicted the opposite condition).",
116 "EventCode": "0xC5",
117 "Counter": "0,1,2,3",
118 "UMask": "0x7e",
119 "EventName": "BR_MISP_RETIRED.JCC",
120 "SampleAfterValue": "200003",
121 "BriefDescription": "Retired mispredicted conditional branch instructions (Precise event capable)"
122 },
123 {
124 "PEBS": "2",
125 "CollectPEBSRecord": "2",
126 "PublicDescription": "Counts mispredicted retired Jcc (Jump on Conditional Code/Jump if Condition is Met) branch instructions retired that were supposed to be taken but the processor predicted that it would not be taken.",
127 "EventCode": "0xC5",
128 "Counter": "0,1,2,3",
129 "UMask": "0xfe",
130 "EventName": "BR_MISP_RETIRED.TAKEN_JCC",
131 "SampleAfterValue": "200003",
132 "BriefDescription": "Retired mispredicted conditional branch instructions that were taken (Precise event capable)"
133 },
134 {
135 "PEBS": "2",
136 "CollectPEBSRecord": "2",
137 "PublicDescription": "Counts mispredicted near indirect CALL branch instructions retired, where the target address taken was not what the processor predicted.",
138 "EventCode": "0xC5",
139 "Counter": "0,1,2,3",
140 "UMask": "0xfb",
141 "EventName": "BR_MISP_RETIRED.IND_CALL",
142 "SampleAfterValue": "200003",
143 "BriefDescription": "Retired mispredicted near indirect call instructions (Precise event capable)"
144 },
145 {
146 "PEBS": "2",
147 "CollectPEBSRecord": "2",
148 "PublicDescription": "Counts mispredicted near RET branch instructions retired, where the return address taken was not what the processor predicted.",
149 "EventCode": "0xC5",
150 "Counter": "0,1,2,3",
151 "UMask": "0xf7",
152 "EventName": "BR_MISP_RETIRED.RETURN",
153 "SampleAfterValue": "200003",
154 "BriefDescription": "Retired mispredicted near return instructions (Precise event capable)"
155 },
156 {
157 "PEBS": "2",
158 "CollectPEBSRecord": "2",
159 "PublicDescription": "Counts mispredicted branch instructions retired that were near indirect call or near indirect jmp, where the target address taken was not what the processor predicted.",
160 "EventCode": "0xC5",
161 "Counter": "0,1,2,3",
162 "UMask": "0xeb",
163 "EventName": "BR_MISP_RETIRED.NON_RETURN_IND",
164 "SampleAfterValue": "200003",
165 "BriefDescription": "Retired mispredicted instructions of near indirect Jmp or near indirect call. (Precise event capable)"
166 },
167 {
168 "PEBS": "2",
169 "CollectPEBSRecord": "2",
170 "PublicDescription": "Counts uops which retired.",
171 "EventCode": "0xC2",
172 "Counter": "0,1,2,3",
173 "UMask": "0x0",
174 "EventName": "UOPS_RETIRED.ANY",
175 "SampleAfterValue": "2000003",
176 "BriefDescription": "Uops retired (Precise event capable)"
177 },
178 {
179 "PEBS": "2",
180 "CollectPEBSRecord": "2",
181 "PublicDescription": "Counts uops retired that are from the complex flows issued by the micro-sequencer (MS). Counts both the uops from a micro-coded instruction, and the uops that might be generated from a micro-coded assist.",
182 "EventCode": "0xC2",
183 "Counter": "0,1,2,3",
184 "UMask": "0x1",
185 "EventName": "UOPS_RETIRED.MS",
186 "SampleAfterValue": "2000003",
187 "BriefDescription": "MS uops retired (Precise event capable)"
188 },
189 {
190 "CollectPEBSRecord": "1",
191 "PublicDescription": "Counts the number of times that the processor detects that a program is writing to a code section and has to perform a machine clear because of that modification. Self-modifying code (SMC) causes a severe penalty in all Intel? architecture processors.",
192 "EventCode": "0xC3",
193 "Counter": "0,1,2,3",
194 "UMask": "0x1",
195 "EventName": "MACHINE_CLEARS.SMC",
196 "SampleAfterValue": "200003",
197 "BriefDescription": "Self-Modifying Code detected"
198 },
199 {
200 "CollectPEBSRecord": "1",
201 "PublicDescription": "Counts machine clears due to floating point (FP) operations needing assists. For instance, if the result was a floating point denormal, the hardware clears the pipeline and reissues uops to produce the correct IEEE compliant denormal result.",
202 "EventCode": "0xC3",
203 "Counter": "0,1,2,3",
204 "UMask": "0x4",
205 "EventName": "MACHINE_CLEARS.FP_ASSIST",
206 "SampleAfterValue": "200003",
207 "BriefDescription": "Machine clears due to FP assists"
208 },
209 {
210 "CollectPEBSRecord": "1",
211 "PublicDescription": "Counts machine clears due to memory disambiguation. Memory disambiguation happens when a load which has been issued conflicts with a previous unretired store in the pipeline whose address was not known at issue time, but is later resolved to be the same as the load address.",
212 "EventCode": "0xC3",
213 "Counter": "0,1,2,3",
214 "UMask": "0x8",
215 "EventName": "MACHINE_CLEARS.DISAMBIGUATION",
216 "SampleAfterValue": "200003",
217 "BriefDescription": "Machine clears due to memory disambiguation"
218 },
219 {
220 "CollectPEBSRecord": "1",
221 "PublicDescription": "Counts machine clears for any reason.",
222 "EventCode": "0xC3",
223 "Counter": "0,1,2,3",
224 "UMask": "0x0",
225 "EventName": "MACHINE_CLEARS.ALL",
226 "SampleAfterValue": "200003",
227 "BriefDescription": "All machine clears"
228 },
229 {
230 "PEBS": "2",
231 "CollectPEBSRecord": "1",
232 "PublicDescription": "Counts the number of instructions that retire execution. For instructions that consist of multiple uops, this event counts the retirement of the last uop of the instruction. The event continues counting during hardware interrupts, traps, and inside interrupt handlers. This is an architectural performance event. This event uses a (_P)rogrammable general purpose performance counter. *This event is Precise Event capable: The EventingRIP field in the PEBS record is precise to the address of the instruction which caused the event. Note: Because PEBS records can be collected only on IA32_PMC0, only one event can use the PEBS facility at a time.",
233 "EventCode": "0xC0",
234 "Counter": "0,1,2,3",
235 "UMask": "0x0",
236 "EventName": "INST_RETIRED.ANY_P",
237 "SampleAfterValue": "2000003",
238 "BriefDescription": "Instructions retired (Precise event capable)"
239 },
240 {
241 "CollectPEBSRecord": "1",
242 "PublicDescription": "This event used to measure front-end inefficiencies. I.e. when front-end of the machine is not delivering uops to the back-end and the back-end has is not stalled. This event can be used to identify if the machine is truly front-end bound. When this event occurs, it is an indication that the front-end of the machine is operating at less than its theoretical peak performance. Background: We can think of the processor pipeline as being divided into 2 broader parts: Front-end and Back-end. Front-end is responsible for fetching the instruction, decoding into uops in machine understandable format and putting them into a uop queue to be consumed by back end. The back-end then takes these uops, allocates the required resources. When all resources are ready, uops are executed. If the back-end is not ready to accept uops from the front-end, then we do not want to count these as front-end bottlenecks. However, whenever we have bottlenecks in the back-end, we will have allocation unit stalls and eventually forcing the front-end to wait until the back-end is ready to receive more uops. This event counts only when back-end is requesting more uops and front-end is not able to provide them. When 3 uops are requested and no uops are delivered, the event counts 3. When 3 are requested, and only 1 is delivered, the event counts 2. When only 2 are delivered, the event counts 1. Alternatively stated, the event will not count if 3 uops are delivered, or if the back end is stalled and not requesting any uops at all. Counts indicate missed opportunities for the front-end to deliver a uop to the back end. Some examples of conditions that cause front-end efficiencies are: ICache misses, ITLB misses, and decoder restrictions that limit the front-end bandwidth. Known Issues: Some uops require multiple allocation slots. These uops will not be charged as a front end 'not delivered' opportunity, and will be regarded as a back end problem. For example, the INC instruction has one uop that requires 2 issue slots. A stream of INC instructions will not count as UOPS_NOT_DELIVERED, even though only one instruction can be issued per clock. The low uop issue rate for a stream of INC instructions is considered to be a back end issue.",
243 "EventCode": "0x9C",
244 "Counter": "0,1,2,3",
245 "UMask": "0x0",
246 "EventName": "UOPS_NOT_DELIVERED.ANY",
247 "SampleAfterValue": "200003",
248 "BriefDescription": "Uops requested but not-delivered to the back-end per cycle"
249 },
250 {
251 "CollectPEBSRecord": "1",
252 "PublicDescription": "Counts uops issued by the front end and allocated into the back end of the machine. This event counts uops that retire as well as uops that were speculatively executed but didn't retire. The sort of speculative uops that might be counted includes, but is not limited to those uops issued in the shadow of a miss-predicted branch, those uops that are inserted during an assist (such as for a denormal floating point result), and (previously allocated) uops that might be canceled during a machine clear.",
253 "EventCode": "0x0E",
254 "Counter": "0,1,2,3",
255 "UMask": "0x0",
256 "EventName": "UOPS_ISSUED.ANY",
257 "SampleAfterValue": "200003",
258 "BriefDescription": "Uops issued to the back end per cycle"
259 },
260 {
261 "CollectPEBSRecord": "1",
262 "PublicDescription": "Counts core cycles if either divide unit is busy.",
263 "EventCode": "0xCD",
264 "Counter": "0,1,2,3",
265 "UMask": "0x0",
266 "EventName": "CYCLES_DIV_BUSY.ALL",
267 "SampleAfterValue": "2000003",
268 "BriefDescription": "Cycles a divider is busy"
269 },
270 {
271 "CollectPEBSRecord": "1",
272 "PublicDescription": "Counts core cycles the integer divide unit is busy.",
273 "EventCode": "0xCD",
274 "Counter": "0,1,2,3",
275 "UMask": "0x1",
276 "EventName": "CYCLES_DIV_BUSY.IDIV",
277 "SampleAfterValue": "200003",
278 "BriefDescription": "Cycles the integer divide unit is busy"
279 },
280 {
281 "CollectPEBSRecord": "1",
282 "PublicDescription": "Counts core cycles the floating point divide unit is busy.",
283 "EventCode": "0xCD",
284 "Counter": "0,1,2,3",
285 "UMask": "0x2",
286 "EventName": "CYCLES_DIV_BUSY.FPDIV",
287 "SampleAfterValue": "200003",
288 "BriefDescription": "Cycles the FP divide unit is busy"
289 },
290 {
291 "PublicDescription": "Counts the number of instructions that retire execution. For instructions that consist of multiple uops, this event counts the retirement of the last uop of the instruction. The counter continues counting during hardware interrupts, traps, and inside interrupt handlers. This event uses fixed counter 0. You cannot collect a PEBs record for this event.",
292 "EventCode": "0x00",
293 "Counter": "Fixed counter 1",
294 "UMask": "0x1",
295 "EventName": "INST_RETIRED.ANY",
296 "SampleAfterValue": "2000003",
297 "BriefDescription": "Instructions retired (Fixed event)"
298 },
299 {
300 "PublicDescription": "Counts the number of core cycles while the core is not in a halt state. The core enters the halt state when it is running the HLT instruction. In mobile systems the core frequency may change from time to time. For this reason this event may have a changing ratio with regards to time. This event uses fixed counter 1. You cannot collect a PEBs record for this event.",
301 "EventCode": "0x00",
302 "Counter": "Fixed counter 2",
303 "UMask": "0x2",
304 "EventName": "CPU_CLK_UNHALTED.CORE",
305 "SampleAfterValue": "2000003",
306 "BriefDescription": "Core cycles when core is not halted (Fixed event)"
307 },
308 {
309 "PublicDescription": "Counts the number of reference cycles that the core is not in a halt state. The core enters the halt state when it is running the HLT instruction. In mobile systems the core frequency may change from time. This event is not affected by core frequency changes but counts as if the core is running at the maximum frequency all the time. This event uses fixed counter 2. You cannot collect a PEBs record for this event.",
310 "EventCode": "0x00",
311 "Counter": "Fixed counter 3",
312 "UMask": "0x3",
313 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
314 "SampleAfterValue": "2000003",
315 "BriefDescription": "Reference cycles when core is not halted (Fixed event)"
316 },
317 {
318 "CollectPEBSRecord": "1",
319 "PublicDescription": "Core cycles when core is not halted. This event uses a (_P)rogrammable general purpose performance counter.",
320 "EventCode": "0x3C",
321 "Counter": "0,1,2,3",
322 "UMask": "0x0",
323 "EventName": "CPU_CLK_UNHALTED.CORE_P",
324 "SampleAfterValue": "2000003",
325 "BriefDescription": "Core cycles when core is not halted"
326 },
327 {
328 "CollectPEBSRecord": "1",
329 "PublicDescription": "Reference cycles when core is not halted. This event uses a (_P)rogrammable general purpose performance counter.",
330 "EventCode": "0x3C",
331 "Counter": "0,1,2,3",
332 "UMask": "0x1",
333 "EventName": "CPU_CLK_UNHALTED.REF",
334 "SampleAfterValue": "2000003",
335 "BriefDescription": "Reference cycles when core is not halted"
336 },
337 {
338 "CollectPEBSRecord": "1",
339 "PublicDescription": "Counts the number of times a BACLEAR is signaled for any reason, including, but not limited to indirect branch/call, Jcc (Jump on Conditional Code/Jump if Condition is Met) branch, unconditional branch/call, and returns.",
340 "EventCode": "0xE6",
341 "Counter": "0,1,2,3",
342 "UMask": "0x1",
343 "EventName": "BACLEARS.ALL",
344 "SampleAfterValue": "200003",
345 "BriefDescription": "BACLEARs asserted for any branch type"
346 },
347 {
348 "CollectPEBSRecord": "1",
349 "PublicDescription": "Counts BACLEARS on return instructions.",
350 "EventCode": "0xE6",
351 "Counter": "0,1,2,3",
352 "UMask": "0x8",
353 "EventName": "BACLEARS.RETURN",
354 "SampleAfterValue": "200003",
355 "BriefDescription": "BACLEARs asserted for return branch"
356 },
357 {
358 "CollectPEBSRecord": "1",
359 "PublicDescription": "Counts BACLEARS on Jcc (Jump on Conditional Code/Jump if Condition is Met) branches.",
360 "EventCode": "0xE6",
361 "Counter": "0,1,2,3",
362 "UMask": "0x10",
363 "EventName": "BACLEARS.COND",
364 "SampleAfterValue": "200003",
365 "BriefDescription": "BACLEARs asserted for conditional branch"
366 },
367 {
368 "PEBS": "2",
369 "CollectPEBSRecord": "2",
370 "PublicDescription": "Counts anytime a load that retires is blocked for any reason.",
371 "EventCode": "0x03",
372 "Counter": "0,1,2,3",
373 "UMask": "0x10",
374 "EventName": "LD_BLOCKS.ALL_BLOCK",
375 "SampleAfterValue": "200003",
376 "BriefDescription": "Loads blocked (Precise event capable)"
377 },
378 {
379 "PEBS": "2",
380 "CollectPEBSRecord": "2",
381 "PublicDescription": "Counts loads blocked because they are unable to find their physical address in the micro TLB (UTLB).",
382 "EventCode": "0x03",
383 "Counter": "0,1,2,3",
384 "UMask": "0x8",
385 "EventName": "LD_BLOCKS.UTLB_MISS",
386 "SampleAfterValue": "200003",
387 "BriefDescription": "Loads blocked because address in not in the UTLB (Precise event capable)"
388 },
389 {
390 "PEBS": "2",
391 "CollectPEBSRecord": "2",
392 "PublicDescription": "Counts a load blocked from using a store forward because of an address/size mismatch, only one of the loads blocked from each store will be counted.",
393 "EventCode": "0x03",
394 "Counter": "0,1,2,3",
395 "UMask": "0x2",
396 "EventName": "LD_BLOCKS.STORE_FORWARD",
397 "SampleAfterValue": "200003",
398 "BriefDescription": "Loads blocked due to store forward restriction (Precise event capable)"
399 },
400 {
401 "PEBS": "2",
402 "CollectPEBSRecord": "2",
403 "PublicDescription": "Counts a load blocked from using a store forward, but did not occur because the store data was not available at the right time. The forward might occur subsequently when the data is available.",
404 "EventCode": "0x03",
405 "Counter": "0,1,2,3",
406 "UMask": "0x1",
407 "EventName": "LD_BLOCKS.DATA_UNKNOWN",
408 "SampleAfterValue": "200003",
409 "BriefDescription": "Loads blocked due to store data not ready (Precise event capable)"
410 },
411 {
412 "PEBS": "2",
413 "CollectPEBSRecord": "2",
414 "PublicDescription": "Counts loads that block because their address modulo 4K matches a pending store.",
415 "EventCode": "0x03",
416 "Counter": "0,1,2,3",
417 "UMask": "0x4",
418 "EventName": "LD_BLOCKS.4K_ALIAS",
419 "SampleAfterValue": "200003",
420 "BriefDescription": "Loads blocked because address has 4k partial address false dependence (Precise event capable)"
421 },
422 {
423 "PEBS": "2",
424 "CollectPEBSRecord": "1",
425 "PublicDescription": "Counts the number of taken branch instructions retired.",
426 "EventCode": "0xC4",
427 "Counter": "0,1,2,3",
428 "UMask": "0x80",
429 "EventName": "BR_INST_RETIRED.ALL_TAKEN_BRANCHES",
430 "SampleAfterValue": "200003",
431 "BriefDescription": "Retired taken branch instructions (Precise event capable)"
432 }
433] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/goldmont/virtual-memory.json b/tools/perf/pmu-events/arch/x86/goldmont/virtual-memory.json
new file mode 100644
index 000000000000..3202c4478836
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/goldmont/virtual-memory.json
@@ -0,0 +1,75 @@
1[
2 {
3 "CollectPEBSRecord": "1",
4 "PublicDescription": "Counts the number of times the machine was unable to find a translation in the Instruction Translation Lookaside Buffer (ITLB) for a linear address of an instruction fetch. It counts when new translation are filled into the ITLB. The event is speculative in nature, but will not count translations (page walks) that are begun and not finished, or translations that are finished but not filled into the ITLB.",
5 "EventCode": "0x81",
6 "Counter": "0,1,2,3",
7 "UMask": "0x4",
8 "EventName": "ITLB.MISS",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "ITLB misses"
11 },
12 {
13 "PEBS": "2",
14 "CollectPEBSRecord": "2",
15 "PublicDescription": "Counts load uops retired that caused a DTLB miss.",
16 "EventCode": "0xD0",
17 "Counter": "0,1,2,3",
18 "UMask": "0x11",
19 "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_LOADS",
20 "SampleAfterValue": "200003",
21 "BriefDescription": "Load uops retired that missed the DTLB (Precise event capable)"
22 },
23 {
24 "PEBS": "2",
25 "CollectPEBSRecord": "2",
26 "PublicDescription": "Counts store uops retired that caused a DTLB miss.",
27 "EventCode": "0xD0",
28 "Counter": "0,1,2,3",
29 "UMask": "0x12",
30 "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_STORES",
31 "SampleAfterValue": "200003",
32 "BriefDescription": "Store uops retired that missed the DTLB (Precise event capable)"
33 },
34 {
35 "PEBS": "2",
36 "CollectPEBSRecord": "2",
37 "PublicDescription": "Counts uops retired that had a DTLB miss on load, store or either. Note that when two distinct memory operations to the same page miss the DTLB, only one of them will be recorded as a DTLB miss.",
38 "EventCode": "0xD0",
39 "Counter": "0,1,2,3",
40 "UMask": "0x13",
41 "EventName": "MEM_UOPS_RETIRED.DTLB_MISS",
42 "SampleAfterValue": "200003",
43 "BriefDescription": "Memory uops retired that missed the DTLB (Precise event capable)"
44 },
45 {
46 "CollectPEBSRecord": "1",
47 "PublicDescription": "Counts every core cycle when a Data-side (walks due to a data operation) page walk is in progress.",
48 "EventCode": "0x05",
49 "Counter": "0,1,2,3",
50 "UMask": "0x1",
51 "EventName": "PAGE_WALKS.D_SIDE_CYCLES",
52 "SampleAfterValue": "200003",
53 "BriefDescription": "Duration of D-side page-walks in cycles"
54 },
55 {
56 "CollectPEBSRecord": "1",
57 "PublicDescription": "Counts every core cycle when a Instruction-side (walks due to an instruction fetch) page walk is in progress.",
58 "EventCode": "0x05",
59 "Counter": "0,1,2,3",
60 "UMask": "0x2",
61 "EventName": "PAGE_WALKS.I_SIDE_CYCLES",
62 "SampleAfterValue": "200003",
63 "BriefDescription": "Duration of I-side pagewalks in cycles"
64 },
65 {
66 "CollectPEBSRecord": "1",
67 "PublicDescription": "Counts every core cycle a page-walk is in progress due to either a data memory operation or an instruction fetch.",
68 "EventCode": "0x05",
69 "Counter": "0,1,2,3",
70 "UMask": "0x3",
71 "EventName": "PAGE_WALKS.CYCLES",
72 "SampleAfterValue": "200003",
73 "BriefDescription": "Duration of page-walks in cycles"
74 }
75] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswell/cache.json b/tools/perf/pmu-events/arch/x86/haswell/cache.json
new file mode 100644
index 000000000000..bfb5ebf48c54
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswell/cache.json
@@ -0,0 +1,1041 @@
1[
2 {
3 "PublicDescription": "Demand data read requests that missed L2, no rejects.",
4 "EventCode": "0x24",
5 "Counter": "0,1,2,3",
6 "UMask": "0x21",
7 "Errata": "HSD78",
8 "EventName": "L2_RQSTS.DEMAND_DATA_RD_MISS",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "Demand Data Read miss L2, no rejects",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "PublicDescription": "Demand data read requests that hit L2 cache.",
15 "EventCode": "0x24",
16 "Counter": "0,1,2,3",
17 "UMask": "0x41",
18 "Errata": "HSD78",
19 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
20 "SampleAfterValue": "200003",
21 "BriefDescription": "Demand Data Read requests that hit L2 cache",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "PublicDescription": "Counts all L2 HW prefetcher requests that missed L2.",
26 "EventCode": "0x24",
27 "Counter": "0,1,2,3",
28 "UMask": "0x30",
29 "EventName": "L2_RQSTS.L2_PF_MISS",
30 "SampleAfterValue": "200003",
31 "BriefDescription": "L2 prefetch requests that miss L2 cache",
32 "CounterHTOff": "0,1,2,3,4,5,6,7"
33 },
34 {
35 "PublicDescription": "Counts all L2 HW prefetcher requests that hit L2.",
36 "EventCode": "0x24",
37 "Counter": "0,1,2,3",
38 "UMask": "0x50",
39 "EventName": "L2_RQSTS.L2_PF_HIT",
40 "SampleAfterValue": "200003",
41 "BriefDescription": "L2 prefetch requests that hit L2 cache",
42 "CounterHTOff": "0,1,2,3,4,5,6,7"
43 },
44 {
45 "PublicDescription": "Counts any demand and L1 HW prefetch data load requests to L2.",
46 "EventCode": "0x24",
47 "Counter": "0,1,2,3",
48 "UMask": "0xe1",
49 "Errata": "HSD78",
50 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
51 "SampleAfterValue": "200003",
52 "BriefDescription": "Demand Data Read requests",
53 "CounterHTOff": "0,1,2,3,4,5,6,7"
54 },
55 {
56 "PublicDescription": "Counts all L2 store RFO requests.",
57 "EventCode": "0x24",
58 "Counter": "0,1,2,3",
59 "UMask": "0xe2",
60 "EventName": "L2_RQSTS.ALL_RFO",
61 "SampleAfterValue": "200003",
62 "BriefDescription": "RFO requests to L2 cache",
63 "CounterHTOff": "0,1,2,3,4,5,6,7"
64 },
65 {
66 "PublicDescription": "Counts all L2 code requests.",
67 "EventCode": "0x24",
68 "Counter": "0,1,2,3",
69 "UMask": "0xe4",
70 "EventName": "L2_RQSTS.ALL_CODE_RD",
71 "SampleAfterValue": "200003",
72 "BriefDescription": "L2 code requests",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "PublicDescription": "Counts all L2 HW prefetcher requests.",
77 "EventCode": "0x24",
78 "Counter": "0,1,2,3",
79 "UMask": "0xf8",
80 "EventName": "L2_RQSTS.ALL_PF",
81 "SampleAfterValue": "200003",
82 "BriefDescription": "Requests from L2 hardware prefetchers",
83 "CounterHTOff": "0,1,2,3,4,5,6,7"
84 },
85 {
86 "PublicDescription": "Not rejected writebacks that hit L2 cache.",
87 "EventCode": "0x27",
88 "Counter": "0,1,2,3",
89 "UMask": "0x50",
90 "EventName": "L2_DEMAND_RQSTS.WB_HIT",
91 "SampleAfterValue": "200003",
92 "BriefDescription": "Not rejected writebacks that hit L2 cache",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "PublicDescription": "This event counts each cache miss condition for references to the last level cache.",
97 "EventCode": "0x2E",
98 "Counter": "0,1,2,3",
99 "UMask": "0x41",
100 "EventName": "LONGEST_LAT_CACHE.MISS",
101 "SampleAfterValue": "100003",
102 "BriefDescription": "Core-originated cacheable demand requests missed L3",
103 "CounterHTOff": "0,1,2,3,4,5,6,7"
104 },
105 {
106 "PublicDescription": "This event counts requests originating from the core that reference a cache line in the last level cache.",
107 "EventCode": "0x2E",
108 "Counter": "0,1,2,3",
109 "UMask": "0x4f",
110 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
111 "SampleAfterValue": "100003",
112 "BriefDescription": "Core-originated cacheable demand requests that refer to L3",
113 "CounterHTOff": "0,1,2,3,4,5,6,7"
114 },
115 {
116 "PublicDescription": "Increments the number of outstanding L1D misses every cycle. Set Cmask = 1 and Edge =1 to count occurrences.",
117 "EventCode": "0x48",
118 "Counter": "2",
119 "UMask": "0x1",
120 "EventName": "L1D_PEND_MISS.PENDING",
121 "SampleAfterValue": "2000003",
122 "BriefDescription": "L1D miss oustandings duration in cycles",
123 "CounterHTOff": "2"
124 },
125 {
126 "EventCode": "0x48",
127 "Counter": "0,1,2,3",
128 "UMask": "0x2",
129 "EventName": "L1D_PEND_MISS.REQUEST_FB_FULL",
130 "SampleAfterValue": "2000003",
131 "BriefDescription": "Number of times a request needed a FB entry but there was no entry available for it. That is the FB unavailability was dominant reason for blocking the request. A request includes cacheable/uncacheable demands that is load, store or SW prefetch. HWP are e.",
132 "CounterHTOff": "0,1,2,3,4,5,6,7"
133 },
134 {
135 "EventCode": "0x48",
136 "Counter": "2",
137 "UMask": "0x1",
138 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
139 "SampleAfterValue": "2000003",
140 "BriefDescription": "Cycles with L1D load Misses outstanding.",
141 "CounterMask": "1",
142 "CounterHTOff": "2"
143 },
144 {
145 "PublicDescription": "This event counts when new data lines are brought into the L1 Data cache, which cause other lines to be evicted from the cache.",
146 "EventCode": "0x51",
147 "Counter": "0,1,2,3",
148 "UMask": "0x1",
149 "EventName": "L1D.REPLACEMENT",
150 "SampleAfterValue": "2000003",
151 "BriefDescription": "L1D data line replacements",
152 "CounterHTOff": "0,1,2,3,4,5,6,7"
153 },
154 {
155 "PublicDescription": "Offcore outstanding demand data read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
156 "EventCode": "0x60",
157 "Counter": "0,1,2,3",
158 "UMask": "0x1",
159 "Errata": "HSD78, HSD62, HSD61",
160 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
161 "SampleAfterValue": "2000003",
162 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
163 "CounterHTOff": "0,1,2,3,4,5,6,7"
164 },
165 {
166 "PublicDescription": "Offcore outstanding Demand code Read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
167 "EventCode": "0x60",
168 "Counter": "0,1,2,3",
169 "UMask": "0x2",
170 "Errata": "HSD62, HSD61",
171 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
172 "SampleAfterValue": "2000003",
173 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
174 "CounterHTOff": "0,1,2,3,4,5,6,7"
175 },
176 {
177 "PublicDescription": "Offcore outstanding RFO store transactions in SQ to uncore. Set Cmask=1 to count cycles.",
178 "EventCode": "0x60",
179 "Counter": "0,1,2,3",
180 "UMask": "0x4",
181 "Errata": "HSD62, HSD61",
182 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
183 "SampleAfterValue": "2000003",
184 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore",
185 "CounterHTOff": "0,1,2,3,4,5,6,7"
186 },
187 {
188 "PublicDescription": "Offcore outstanding cacheable data read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
189 "EventCode": "0x60",
190 "Counter": "0,1,2,3",
191 "UMask": "0x8",
192 "Errata": "HSD62, HSD61",
193 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
194 "SampleAfterValue": "2000003",
195 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
196 "CounterHTOff": "0,1,2,3,4,5,6,7"
197 },
198 {
199 "EventCode": "0x60",
200 "Counter": "0,1,2,3",
201 "UMask": "0x1",
202 "Errata": "HSD78, HSD62, HSD61",
203 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
204 "SampleAfterValue": "2000003",
205 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
206 "CounterMask": "1",
207 "CounterHTOff": "0,1,2,3,4,5,6,7"
208 },
209 {
210 "EventCode": "0x60",
211 "Counter": "0,1,2,3",
212 "UMask": "0x8",
213 "Errata": "HSD62, HSD61",
214 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
215 "SampleAfterValue": "2000003",
216 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
217 "CounterMask": "1",
218 "CounterHTOff": "0,1,2,3,4,5,6,7"
219 },
220 {
221 "EventCode": "0x60",
222 "Counter": "0,1,2,3",
223 "UMask": "0x4",
224 "Errata": "HSD62, HSD61",
225 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
226 "SampleAfterValue": "2000003",
227 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
228 "CounterMask": "1",
229 "CounterHTOff": "0,1,2,3,4,5,6,7"
230 },
231 {
232 "PublicDescription": "Cycles in which the L1D is locked.",
233 "EventCode": "0x63",
234 "Counter": "0,1,2,3",
235 "UMask": "0x2",
236 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
237 "SampleAfterValue": "2000003",
238 "BriefDescription": "Cycles when L1D is locked",
239 "CounterHTOff": "0,1,2,3,4,5,6,7"
240 },
241 {
242 "PublicDescription": "Demand data read requests sent to uncore.",
243 "EventCode": "0xB0",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "Errata": "HSD78",
247 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
248 "SampleAfterValue": "100003",
249 "BriefDescription": "Demand Data Read requests sent to uncore",
250 "CounterHTOff": "0,1,2,3,4,5,6,7"
251 },
252 {
253 "PublicDescription": "Demand code read requests sent to uncore.",
254 "EventCode": "0xB0",
255 "Counter": "0,1,2,3",
256 "UMask": "0x2",
257 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
258 "SampleAfterValue": "100003",
259 "BriefDescription": "Cacheable and noncachaeble code read requests",
260 "CounterHTOff": "0,1,2,3,4,5,6,7"
261 },
262 {
263 "PublicDescription": "Demand RFO read requests sent to uncore, including regular RFOs, locks, ItoM.",
264 "EventCode": "0xB0",
265 "Counter": "0,1,2,3",
266 "UMask": "0x4",
267 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
268 "SampleAfterValue": "100003",
269 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
270 "CounterHTOff": "0,1,2,3,4,5,6,7"
271 },
272 {
273 "PublicDescription": "Data read requests sent to uncore (demand and prefetch).",
274 "EventCode": "0xB0",
275 "Counter": "0,1,2,3",
276 "UMask": "0x8",
277 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
278 "SampleAfterValue": "100003",
279 "BriefDescription": "Demand and prefetch data reads",
280 "CounterHTOff": "0,1,2,3,4,5,6,7"
281 },
282 {
283 "EventCode": "0xb2",
284 "Counter": "0,1,2,3",
285 "UMask": "0x1",
286 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
287 "SampleAfterValue": "2000003",
288 "BriefDescription": "Offcore requests buffer cannot take more entries for this thread core.",
289 "CounterHTOff": "0,1,2,3,4,5,6,7"
290 },
291 {
292 "PEBS": "1",
293 "EventCode": "0xD0",
294 "Counter": "0,1,2,3",
295 "UMask": "0x11",
296 "Errata": "HSD29, HSM30",
297 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
298 "SampleAfterValue": "100003",
299 "BriefDescription": "Retired load uops that miss the STLB.",
300 "CounterHTOff": "0,1,2,3",
301 "Data_LA": "1"
302 },
303 {
304 "PEBS": "1",
305 "EventCode": "0xD0",
306 "Counter": "0,1,2,3",
307 "UMask": "0x12",
308 "Errata": "HSD29, HSM30",
309 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
310 "SampleAfterValue": "100003",
311 "BriefDescription": "Retired store uops that miss the STLB.",
312 "CounterHTOff": "0,1,2,3",
313 "Data_LA": "1",
314 "L1_Hit_Indication": "1"
315 },
316 {
317 "PEBS": "1",
318 "EventCode": "0xD0",
319 "Counter": "0,1,2,3",
320 "UMask": "0x21",
321 "Errata": "HSD76, HSD29, HSM30",
322 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
323 "SampleAfterValue": "100003",
324 "BriefDescription": "Retired load uops with locked access.",
325 "CounterHTOff": "0,1,2,3",
326 "Data_LA": "1"
327 },
328 {
329 "PEBS": "1",
330 "EventCode": "0xD0",
331 "Counter": "0,1,2,3",
332 "UMask": "0x41",
333 "Errata": "HSD29, HSM30",
334 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
335 "SampleAfterValue": "100003",
336 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
337 "CounterHTOff": "0,1,2,3",
338 "Data_LA": "1"
339 },
340 {
341 "PEBS": "1",
342 "EventCode": "0xD0",
343 "Counter": "0,1,2,3",
344 "UMask": "0x42",
345 "Errata": "HSD29, HSM30",
346 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
347 "SampleAfterValue": "100003",
348 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
349 "CounterHTOff": "0,1,2,3",
350 "Data_LA": "1",
351 "L1_Hit_Indication": "1"
352 },
353 {
354 "PEBS": "1",
355 "EventCode": "0xD0",
356 "Counter": "0,1,2,3",
357 "UMask": "0x81",
358 "Errata": "HSD29, HSM30",
359 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
360 "SampleAfterValue": "2000003",
361 "BriefDescription": "All retired load uops.",
362 "CounterHTOff": "0,1,2,3",
363 "Data_LA": "1"
364 },
365 {
366 "PEBS": "1",
367 "EventCode": "0xD0",
368 "Counter": "0,1,2,3",
369 "UMask": "0x82",
370 "Errata": "HSD29, HSM30",
371 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
372 "SampleAfterValue": "2000003",
373 "BriefDescription": "All retired store uops.",
374 "CounterHTOff": "0,1,2,3",
375 "Data_LA": "1",
376 "L1_Hit_Indication": "1"
377 },
378 {
379 "PEBS": "1",
380 "EventCode": "0xD1",
381 "Counter": "0,1,2,3",
382 "UMask": "0x1",
383 "Errata": "HSD29, HSM30",
384 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
385 "SampleAfterValue": "2000003",
386 "BriefDescription": "Retired load uops with L1 cache hits as data sources.",
387 "CounterHTOff": "0,1,2,3",
388 "Data_LA": "1"
389 },
390 {
391 "PEBS": "1",
392 "EventCode": "0xD1",
393 "Counter": "0,1,2,3",
394 "UMask": "0x2",
395 "Errata": "HSD76, HSD29, HSM30",
396 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
397 "SampleAfterValue": "100003",
398 "BriefDescription": "Retired load uops with L2 cache hits as data sources.",
399 "CounterHTOff": "0,1,2,3",
400 "Data_LA": "1"
401 },
402 {
403 "PEBS": "1",
404 "PublicDescription": "Retired load uops with L3 cache hits as data sources.",
405 "EventCode": "0xD1",
406 "Counter": "0,1,2,3",
407 "UMask": "0x4",
408 "Errata": "HSD74, HSD29, HSD25, HSM26, HSM30",
409 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_HIT",
410 "SampleAfterValue": "50021",
411 "BriefDescription": "Retired load uops which data sources were data hits in L3 without snoops required.",
412 "CounterHTOff": "0,1,2,3",
413 "Data_LA": "1"
414 },
415 {
416 "PEBS": "1",
417 "PublicDescription": "Retired load uops missed L1 cache as data sources.",
418 "EventCode": "0xD1",
419 "Counter": "0,1,2,3",
420 "UMask": "0x8",
421 "Errata": "HSM30",
422 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
423 "SampleAfterValue": "100003",
424 "BriefDescription": "Retired load uops misses in L1 cache as data sources.",
425 "CounterHTOff": "0,1,2,3",
426 "Data_LA": "1"
427 },
428 {
429 "PEBS": "1",
430 "PublicDescription": "Retired load uops missed L2. Unknown data source excluded.",
431 "EventCode": "0xD1",
432 "Counter": "0,1,2,3",
433 "UMask": "0x10",
434 "Errata": "HSD29, HSM30",
435 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
436 "SampleAfterValue": "50021",
437 "BriefDescription": "Miss in mid-level (L2) cache. Excludes Unknown data-source.",
438 "CounterHTOff": "0,1,2,3",
439 "Data_LA": "1"
440 },
441 {
442 "PEBS": "1",
443 "PublicDescription": "Retired load uops missed L3. Excludes unknown data source .",
444 "EventCode": "0xD1",
445 "Counter": "0,1,2,3",
446 "UMask": "0x20",
447 "Errata": "HSD74, HSD29, HSD25, HSM26, HSM30",
448 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_MISS",
449 "SampleAfterValue": "100003",
450 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
451 "CounterHTOff": "0,1,2,3",
452 "Data_LA": "1"
453 },
454 {
455 "PEBS": "1",
456 "EventCode": "0xD1",
457 "Counter": "0,1,2,3",
458 "UMask": "0x40",
459 "Errata": "HSM30",
460 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
461 "SampleAfterValue": "100003",
462 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
463 "CounterHTOff": "0,1,2,3",
464 "Data_LA": "1"
465 },
466 {
467 "PEBS": "1",
468 "EventCode": "0xD2",
469 "Counter": "0,1,2,3",
470 "UMask": "0x1",
471 "Errata": "HSD29, HSD25, HSM26, HSM30",
472 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS",
473 "SampleAfterValue": "20011",
474 "BriefDescription": "Retired load uops which data sources were L3 hit and cross-core snoop missed in on-pkg core cache.",
475 "CounterHTOff": "0,1,2,3",
476 "Data_LA": "1"
477 },
478 {
479 "PEBS": "1",
480 "EventCode": "0xD2",
481 "Counter": "0,1,2,3",
482 "UMask": "0x2",
483 "Errata": "HSD29, HSD25, HSM26, HSM30",
484 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT",
485 "SampleAfterValue": "20011",
486 "BriefDescription": "Retired load uops which data sources were L3 and cross-core snoop hits in on-pkg core cache.",
487 "CounterHTOff": "0,1,2,3",
488 "Data_LA": "1"
489 },
490 {
491 "PEBS": "1",
492 "EventCode": "0xD2",
493 "Counter": "0,1,2,3",
494 "UMask": "0x4",
495 "Errata": "HSD29, HSD25, HSM26, HSM30",
496 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM",
497 "SampleAfterValue": "20011",
498 "BriefDescription": "Retired load uops which data sources were HitM responses from shared L3.",
499 "CounterHTOff": "0,1,2,3",
500 "Data_LA": "1"
501 },
502 {
503 "PEBS": "1",
504 "EventCode": "0xD2",
505 "Counter": "0,1,2,3",
506 "UMask": "0x8",
507 "Errata": "HSD74, HSD29, HSD25, HSM26, HSM30",
508 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_NONE",
509 "SampleAfterValue": "100003",
510 "BriefDescription": "Retired load uops which data sources were hits in L3 without snoops required.",
511 "CounterHTOff": "0,1,2,3",
512 "Data_LA": "1"
513 },
514 {
515 "PEBS": "1",
516 "PublicDescription": "This event counts retired load uops where the data came from local DRAM. This does not include hardware prefetches.",
517 "EventCode": "0xD3",
518 "Counter": "0,1,2,3",
519 "UMask": "0x1",
520 "Errata": "HSD74, HSD29, HSD25, HSM30",
521 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM",
522 "SampleAfterValue": "100003",
523 "BriefDescription": "Data from local DRAM either Snoop not needed or Snoop Miss (RspI)",
524 "CounterHTOff": "0,1,2,3",
525 "Data_LA": "1"
526 },
527 {
528 "PublicDescription": "Demand data read requests that access L2 cache.",
529 "EventCode": "0xf0",
530 "Counter": "0,1,2,3",
531 "UMask": "0x1",
532 "EventName": "L2_TRANS.DEMAND_DATA_RD",
533 "SampleAfterValue": "200003",
534 "BriefDescription": "Demand Data Read requests that access L2 cache",
535 "CounterHTOff": "0,1,2,3,4,5,6,7"
536 },
537 {
538 "PublicDescription": "RFO requests that access L2 cache.",
539 "EventCode": "0xf0",
540 "Counter": "0,1,2,3",
541 "UMask": "0x2",
542 "EventName": "L2_TRANS.RFO",
543 "SampleAfterValue": "200003",
544 "BriefDescription": "RFO requests that access L2 cache",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "PublicDescription": "L2 cache accesses when fetching instructions.",
549 "EventCode": "0xf0",
550 "Counter": "0,1,2,3",
551 "UMask": "0x4",
552 "EventName": "L2_TRANS.CODE_RD",
553 "SampleAfterValue": "200003",
554 "BriefDescription": "L2 cache accesses when fetching instructions",
555 "CounterHTOff": "0,1,2,3,4,5,6,7"
556 },
557 {
558 "PublicDescription": "Any MLC or L3 HW prefetch accessing L2, including rejects.",
559 "EventCode": "0xf0",
560 "Counter": "0,1,2,3",
561 "UMask": "0x8",
562 "EventName": "L2_TRANS.ALL_PF",
563 "SampleAfterValue": "200003",
564 "BriefDescription": "L2 or L3 HW prefetches that access L2 cache",
565 "CounterHTOff": "0,1,2,3,4,5,6,7"
566 },
567 {
568 "PublicDescription": "L1D writebacks that access L2 cache.",
569 "EventCode": "0xf0",
570 "Counter": "0,1,2,3",
571 "UMask": "0x10",
572 "EventName": "L2_TRANS.L1D_WB",
573 "SampleAfterValue": "200003",
574 "BriefDescription": "L1D writebacks that access L2 cache",
575 "CounterHTOff": "0,1,2,3,4,5,6,7"
576 },
577 {
578 "PublicDescription": "L2 fill requests that access L2 cache.",
579 "EventCode": "0xf0",
580 "Counter": "0,1,2,3",
581 "UMask": "0x20",
582 "EventName": "L2_TRANS.L2_FILL",
583 "SampleAfterValue": "200003",
584 "BriefDescription": "L2 fill requests that access L2 cache",
585 "CounterHTOff": "0,1,2,3,4,5,6,7"
586 },
587 {
588 "PublicDescription": "L2 writebacks that access L2 cache.",
589 "EventCode": "0xf0",
590 "Counter": "0,1,2,3",
591 "UMask": "0x40",
592 "EventName": "L2_TRANS.L2_WB",
593 "SampleAfterValue": "200003",
594 "BriefDescription": "L2 writebacks that access L2 cache",
595 "CounterHTOff": "0,1,2,3,4,5,6,7"
596 },
597 {
598 "PublicDescription": "Transactions accessing L2 pipe.",
599 "EventCode": "0xf0",
600 "Counter": "0,1,2,3",
601 "UMask": "0x80",
602 "EventName": "L2_TRANS.ALL_REQUESTS",
603 "SampleAfterValue": "200003",
604 "BriefDescription": "Transactions accessing L2 pipe",
605 "CounterHTOff": "0,1,2,3,4,5,6,7"
606 },
607 {
608 "PublicDescription": "L2 cache lines in I state filling L2.",
609 "EventCode": "0xF1",
610 "Counter": "0,1,2,3",
611 "UMask": "0x1",
612 "EventName": "L2_LINES_IN.I",
613 "SampleAfterValue": "100003",
614 "BriefDescription": "L2 cache lines in I state filling L2",
615 "CounterHTOff": "0,1,2,3,4,5,6,7"
616 },
617 {
618 "PublicDescription": "L2 cache lines in S state filling L2.",
619 "EventCode": "0xF1",
620 "Counter": "0,1,2,3",
621 "UMask": "0x2",
622 "EventName": "L2_LINES_IN.S",
623 "SampleAfterValue": "100003",
624 "BriefDescription": "L2 cache lines in S state filling L2",
625 "CounterHTOff": "0,1,2,3,4,5,6,7"
626 },
627 {
628 "PublicDescription": "L2 cache lines in E state filling L2.",
629 "EventCode": "0xF1",
630 "Counter": "0,1,2,3",
631 "UMask": "0x4",
632 "EventName": "L2_LINES_IN.E",
633 "SampleAfterValue": "100003",
634 "BriefDescription": "L2 cache lines in E state filling L2",
635 "CounterHTOff": "0,1,2,3,4,5,6,7"
636 },
637 {
638 "PublicDescription": "This event counts the number of L2 cache lines brought into the L2 cache. Lines are filled into the L2 cache when there was an L2 miss.",
639 "EventCode": "0xF1",
640 "Counter": "0,1,2,3",
641 "UMask": "0x7",
642 "EventName": "L2_LINES_IN.ALL",
643 "SampleAfterValue": "100003",
644 "BriefDescription": "L2 cache lines filling L2",
645 "CounterHTOff": "0,1,2,3,4,5,6,7"
646 },
647 {
648 "PublicDescription": "Clean L2 cache lines evicted by demand.",
649 "EventCode": "0xF2",
650 "Counter": "0,1,2,3",
651 "UMask": "0x5",
652 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
653 "SampleAfterValue": "100003",
654 "BriefDescription": "Clean L2 cache lines evicted by demand",
655 "CounterHTOff": "0,1,2,3,4,5,6,7"
656 },
657 {
658 "PublicDescription": "Dirty L2 cache lines evicted by demand.",
659 "EventCode": "0xF2",
660 "Counter": "0,1,2,3",
661 "UMask": "0x6",
662 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
663 "SampleAfterValue": "100003",
664 "BriefDescription": "Dirty L2 cache lines evicted by demand",
665 "CounterHTOff": "0,1,2,3,4,5,6,7"
666 },
667 {
668 "EventCode": "0xf4",
669 "Counter": "0,1,2,3",
670 "UMask": "0x10",
671 "EventName": "SQ_MISC.SPLIT_LOCK",
672 "SampleAfterValue": "100003",
673 "BriefDescription": "Split locks in SQ",
674 "CounterHTOff": "0,1,2,3,4,5,6,7"
675 },
676 {
677 "PublicDescription": "Counts the number of store RFO requests that hit the L2 cache.",
678 "EventCode": "0x24",
679 "Counter": "0,1,2,3",
680 "UMask": "0x42",
681 "EventName": "L2_RQSTS.RFO_HIT",
682 "SampleAfterValue": "200003",
683 "BriefDescription": "RFO requests that hit L2 cache",
684 "CounterHTOff": "0,1,2,3,4,5,6,7"
685 },
686 {
687 "PublicDescription": "Counts the number of store RFO requests that miss the L2 cache.",
688 "EventCode": "0x24",
689 "Counter": "0,1,2,3",
690 "UMask": "0x22",
691 "EventName": "L2_RQSTS.RFO_MISS",
692 "SampleAfterValue": "200003",
693 "BriefDescription": "RFO requests that miss L2 cache",
694 "CounterHTOff": "0,1,2,3,4,5,6,7"
695 },
696 {
697 "PublicDescription": "Number of instruction fetches that hit the L2 cache.",
698 "EventCode": "0x24",
699 "Counter": "0,1,2,3",
700 "UMask": "0x44",
701 "EventName": "L2_RQSTS.CODE_RD_HIT",
702 "SampleAfterValue": "200003",
703 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
704 "CounterHTOff": "0,1,2,3,4,5,6,7"
705 },
706 {
707 "PublicDescription": "Number of instruction fetches that missed the L2 cache.",
708 "EventCode": "0x24",
709 "Counter": "0,1,2,3",
710 "UMask": "0x24",
711 "EventName": "L2_RQSTS.CODE_RD_MISS",
712 "SampleAfterValue": "200003",
713 "BriefDescription": "L2 cache misses when fetching instructions",
714 "CounterHTOff": "0,1,2,3,4,5,6,7"
715 },
716 {
717 "PublicDescription": "Demand requests that miss L2 cache.",
718 "EventCode": "0x24",
719 "Counter": "0,1,2,3",
720 "UMask": "0x27",
721 "Errata": "HSD78",
722 "EventName": "L2_RQSTS.ALL_DEMAND_MISS",
723 "SampleAfterValue": "200003",
724 "BriefDescription": "Demand requests that miss L2 cache",
725 "CounterHTOff": "0,1,2,3,4,5,6,7"
726 },
727 {
728 "PublicDescription": "Demand requests to L2 cache.",
729 "EventCode": "0x24",
730 "Counter": "0,1,2,3",
731 "UMask": "0xe7",
732 "Errata": "HSD78",
733 "EventName": "L2_RQSTS.ALL_DEMAND_REFERENCES",
734 "SampleAfterValue": "200003",
735 "BriefDescription": "Demand requests to L2 cache",
736 "CounterHTOff": "0,1,2,3,4,5,6,7"
737 },
738 {
739 "PublicDescription": "All requests that missed L2.",
740 "EventCode": "0x24",
741 "Counter": "0,1,2,3",
742 "UMask": "0x3f",
743 "Errata": "HSD78",
744 "EventName": "L2_RQSTS.MISS",
745 "SampleAfterValue": "200003",
746 "BriefDescription": "All requests that miss L2 cache",
747 "CounterHTOff": "0,1,2,3,4,5,6,7"
748 },
749 {
750 "PublicDescription": "All requests to L2 cache.",
751 "EventCode": "0x24",
752 "Counter": "0,1,2,3",
753 "UMask": "0xff",
754 "Errata": "HSD78",
755 "EventName": "L2_RQSTS.REFERENCES",
756 "SampleAfterValue": "200003",
757 "BriefDescription": "All L2 requests",
758 "CounterHTOff": "0,1,2,3,4,5,6,7"
759 },
760 {
761 "EventCode": "0xB7, 0xBB",
762 "Counter": "0,1,2,3",
763 "UMask": "0x1",
764 "EventName": "OFFCORE_RESPONSE",
765 "SampleAfterValue": "100003",
766 "BriefDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction.",
767 "CounterHTOff": "0,1,2,3"
768 },
769 {
770 "EventCode": "0x60",
771 "Counter": "0,1,2,3",
772 "UMask": "0x1",
773 "Errata": "HSD78, HSD62, HSD61",
774 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
775 "SampleAfterValue": "2000003",
776 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
777 "CounterMask": "6",
778 "CounterHTOff": "0,1,2,3,4,5,6,7"
779 },
780 {
781 "EventCode": "0x48",
782 "Counter": "2",
783 "UMask": "0x1",
784 "AnyThread": "1",
785 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
786 "SampleAfterValue": "2000003",
787 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
788 "CounterMask": "1",
789 "CounterHTOff": "2"
790 },
791 {
792 "EventCode": "0x48",
793 "Counter": "0,1,2,3",
794 "UMask": "0x2",
795 "EventName": "L1D_PEND_MISS.FB_FULL",
796 "SampleAfterValue": "2000003",
797 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
798 "CounterMask": "1",
799 "CounterHTOff": "0,1,2,3,4,5,6,7"
800 },
801 {
802 "EventCode": "0xB7, 0xBB",
803 "MSRValue": "0x3f803c8fff",
804 "Counter": "0,1,2,3",
805 "UMask": "0x1",
806 "EventName": "OFFCORE_RESPONSE.ALL_REQUESTS.L3_HIT.ANY_RESPONSE",
807 "MSRIndex": "0x1a6,0x1a7",
808 "SampleAfterValue": "100003",
809 "BriefDescription": "Counts all requests that hit in the L3",
810 "Offcore": "1",
811 "CounterHTOff": "0,1,2,3"
812 },
813 {
814 "EventCode": "0xB7, 0xBB",
815 "MSRValue": "0x10003c07f7",
816 "Counter": "0,1,2,3",
817 "UMask": "0x1",
818 "EventName": "OFFCORE_RESPONSE.ALL_READS.L3_HIT.HITM_OTHER_CORE",
819 "MSRIndex": "0x1a6,0x1a7",
820 "SampleAfterValue": "100003",
821 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
822 "Offcore": "1",
823 "CounterHTOff": "0,1,2,3"
824 },
825 {
826 "EventCode": "0xB7, 0xBB",
827 "MSRValue": "0x04003c07f7",
828 "Counter": "0,1,2,3",
829 "UMask": "0x1",
830 "EventName": "OFFCORE_RESPONSE.ALL_READS.L3_HIT.HIT_OTHER_CORE_NO_FWD",
831 "MSRIndex": "0x1a6,0x1a7",
832 "SampleAfterValue": "100003",
833 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
834 "Offcore": "1",
835 "CounterHTOff": "0,1,2,3"
836 },
837 {
838 "EventCode": "0xB7, 0xBB",
839 "MSRValue": "0x04003c0244",
840 "Counter": "0,1,2,3",
841 "UMask": "0x1",
842 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.L3_HIT.HIT_OTHER_CORE_NO_FWD",
843 "MSRIndex": "0x1a6,0x1a7",
844 "SampleAfterValue": "100003",
845 "BriefDescription": "Counts all demand & prefetch code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
846 "Offcore": "1",
847 "CounterHTOff": "0,1,2,3"
848 },
849 {
850 "EventCode": "0xB7, 0xBB",
851 "MSRValue": "0x10003c0122",
852 "Counter": "0,1,2,3",
853 "UMask": "0x1",
854 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.HITM_OTHER_CORE",
855 "MSRIndex": "0x1a6,0x1a7",
856 "SampleAfterValue": "100003",
857 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
858 "Offcore": "1",
859 "CounterHTOff": "0,1,2,3"
860 },
861 {
862 "EventCode": "0xB7, 0xBB",
863 "MSRValue": "0x04003c0122",
864 "Counter": "0,1,2,3",
865 "UMask": "0x1",
866 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_HIT.HIT_OTHER_CORE_NO_FWD",
867 "MSRIndex": "0x1a6,0x1a7",
868 "SampleAfterValue": "100003",
869 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
870 "Offcore": "1",
871 "CounterHTOff": "0,1,2,3"
872 },
873 {
874 "EventCode": "0xB7, 0xBB",
875 "MSRValue": "0x10003c0091",
876 "Counter": "0,1,2,3",
877 "UMask": "0x1",
878 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.HITM_OTHER_CORE",
879 "MSRIndex": "0x1a6,0x1a7",
880 "SampleAfterValue": "100003",
881 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
882 "Offcore": "1",
883 "CounterHTOff": "0,1,2,3"
884 },
885 {
886 "EventCode": "0xB7, 0xBB",
887 "MSRValue": "0x04003c0091",
888 "Counter": "0,1,2,3",
889 "UMask": "0x1",
890 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_HIT.HIT_OTHER_CORE_NO_FWD",
891 "MSRIndex": "0x1a6,0x1a7",
892 "SampleAfterValue": "100003",
893 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
894 "Offcore": "1",
895 "CounterHTOff": "0,1,2,3"
896 },
897 {
898 "EventCode": "0xB7, 0xBB",
899 "MSRValue": "0x3f803c0200",
900 "Counter": "0,1,2,3",
901 "UMask": "0x1",
902 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_HIT.ANY_RESPONSE",
903 "MSRIndex": "0x1a6,0x1a7",
904 "SampleAfterValue": "100003",
905 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3",
906 "Offcore": "1",
907 "CounterHTOff": "0,1,2,3"
908 },
909 {
910 "EventCode": "0xB7, 0xBB",
911 "MSRValue": "0x3f803c0100",
912 "Counter": "0,1,2,3",
913 "UMask": "0x1",
914 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.ANY_RESPONSE",
915 "MSRIndex": "0x1a6,0x1a7",
916 "SampleAfterValue": "100003",
917 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3",
918 "Offcore": "1",
919 "CounterHTOff": "0,1,2,3"
920 },
921 {
922 "EventCode": "0xB7, 0xBB",
923 "MSRValue": "0x3f803c0080",
924 "Counter": "0,1,2,3",
925 "UMask": "0x1",
926 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.ANY_RESPONSE",
927 "MSRIndex": "0x1a6,0x1a7",
928 "SampleAfterValue": "100003",
929 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3",
930 "Offcore": "1",
931 "CounterHTOff": "0,1,2,3"
932 },
933 {
934 "EventCode": "0xB7, 0xBB",
935 "MSRValue": "0x3f803c0040",
936 "Counter": "0,1,2,3",
937 "UMask": "0x1",
938 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_HIT.ANY_RESPONSE",
939 "MSRIndex": "0x1a6,0x1a7",
940 "SampleAfterValue": "100003",
941 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3",
942 "Offcore": "1",
943 "CounterHTOff": "0,1,2,3"
944 },
945 {
946 "EventCode": "0xB7, 0xBB",
947 "MSRValue": "0x3f803c0020",
948 "Counter": "0,1,2,3",
949 "UMask": "0x1",
950 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.ANY_RESPONSE",
951 "MSRIndex": "0x1a6,0x1a7",
952 "SampleAfterValue": "100003",
953 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3",
954 "Offcore": "1",
955 "CounterHTOff": "0,1,2,3"
956 },
957 {
958 "EventCode": "0xB7, 0xBB",
959 "MSRValue": "0x3f803c0010",
960 "Counter": "0,1,2,3",
961 "UMask": "0x1",
962 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_HIT.ANY_RESPONSE",
963 "MSRIndex": "0x1a6,0x1a7",
964 "SampleAfterValue": "100003",
965 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3",
966 "Offcore": "1",
967 "CounterHTOff": "0,1,2,3"
968 },
969 {
970 "EventCode": "0xB7, 0xBB",
971 "MSRValue": "0x10003c0004",
972 "Counter": "0,1,2,3",
973 "UMask": "0x1",
974 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.HITM_OTHER_CORE",
975 "MSRIndex": "0x1a6,0x1a7",
976 "SampleAfterValue": "100003",
977 "BriefDescription": "Counts all demand code reads that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
978 "Offcore": "1",
979 "CounterHTOff": "0,1,2,3"
980 },
981 {
982 "EventCode": "0xB7, 0xBB",
983 "MSRValue": "0x04003c0004",
984 "Counter": "0,1,2,3",
985 "UMask": "0x1",
986 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.HIT_OTHER_CORE_NO_FWD",
987 "MSRIndex": "0x1a6,0x1a7",
988 "SampleAfterValue": "100003",
989 "BriefDescription": "Counts all demand code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
990 "Offcore": "1",
991 "CounterHTOff": "0,1,2,3"
992 },
993 {
994 "EventCode": "0xB7, 0xBB",
995 "MSRValue": "0x10003c0002",
996 "Counter": "0,1,2,3",
997 "UMask": "0x1",
998 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE",
999 "MSRIndex": "0x1a6,0x1a7",
1000 "SampleAfterValue": "100003",
1001 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1002 "Offcore": "1",
1003 "CounterHTOff": "0,1,2,3"
1004 },
1005 {
1006 "EventCode": "0xB7, 0xBB",
1007 "MSRValue": "0x04003c0002",
1008 "Counter": "0,1,2,3",
1009 "UMask": "0x1",
1010 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HIT_OTHER_CORE_NO_FWD",
1011 "MSRIndex": "0x1a6,0x1a7",
1012 "SampleAfterValue": "100003",
1013 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1014 "Offcore": "1",
1015 "CounterHTOff": "0,1,2,3"
1016 },
1017 {
1018 "EventCode": "0xB7, 0xBB",
1019 "MSRValue": "0x10003c0001",
1020 "Counter": "0,1,2,3",
1021 "UMask": "0x1",
1022 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE",
1023 "MSRIndex": "0x1a6,0x1a7",
1024 "SampleAfterValue": "100003",
1025 "BriefDescription": "Counts demand data reads that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1026 "Offcore": "1",
1027 "CounterHTOff": "0,1,2,3"
1028 },
1029 {
1030 "EventCode": "0xB7, 0xBB",
1031 "MSRValue": "0x04003c0001",
1032 "Counter": "0,1,2,3",
1033 "UMask": "0x1",
1034 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.HIT_OTHER_CORE_NO_FWD",
1035 "MSRIndex": "0x1a6,0x1a7",
1036 "SampleAfterValue": "100003",
1037 "BriefDescription": "Counts demand data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1038 "Offcore": "1",
1039 "CounterHTOff": "0,1,2,3"
1040 }
1041] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswell/floating-point.json b/tools/perf/pmu-events/arch/x86/haswell/floating-point.json
new file mode 100644
index 000000000000..1732fa49c6d2
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswell/floating-point.json
@@ -0,0 +1,83 @@
1[
2 {
3 "EventCode": "0xC1",
4 "Counter": "0,1,2,3",
5 "UMask": "0x8",
6 "Errata": "HSD56, HSM57",
7 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0xC1",
14 "Counter": "0,1,2,3",
15 "UMask": "0x10",
16 "Errata": "HSD56, HSM57",
17 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
18 "SampleAfterValue": "100003",
19 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Number of X87 FP assists due to output values.",
24 "EventCode": "0xCA",
25 "Counter": "0,1,2,3",
26 "UMask": "0x2",
27 "EventName": "FP_ASSIST.X87_OUTPUT",
28 "SampleAfterValue": "100003",
29 "BriefDescription": "Number of X87 assists due to output value.",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Number of X87 FP assists due to input values.",
34 "EventCode": "0xCA",
35 "Counter": "0,1,2,3",
36 "UMask": "0x4",
37 "EventName": "FP_ASSIST.X87_INPUT",
38 "SampleAfterValue": "100003",
39 "BriefDescription": "Number of X87 assists due to input value.",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Number of SIMD FP assists due to output values.",
44 "EventCode": "0xCA",
45 "Counter": "0,1,2,3",
46 "UMask": "0x8",
47 "EventName": "FP_ASSIST.SIMD_OUTPUT",
48 "SampleAfterValue": "100003",
49 "BriefDescription": "Number of SIMD FP assists due to Output values",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Number of SIMD FP assists due to input values.",
54 "EventCode": "0xCA",
55 "Counter": "0,1,2,3",
56 "UMask": "0x10",
57 "EventName": "FP_ASSIST.SIMD_INPUT",
58 "SampleAfterValue": "100003",
59 "BriefDescription": "Number of SIMD FP assists due to input values",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Cycles with any input/output SSE* or FP assists.",
64 "EventCode": "0xCA",
65 "Counter": "0,1,2,3",
66 "UMask": "0x1e",
67 "EventName": "FP_ASSIST.ANY",
68 "SampleAfterValue": "100003",
69 "BriefDescription": "Cycles with any input/output SSE or FP assist",
70 "CounterMask": "1",
71 "CounterHTOff": "0,1,2,3"
72 },
73 {
74 "PublicDescription": "Note that a whole rep string only counts AVX_INST.ALL once.",
75 "EventCode": "0xC6",
76 "Counter": "0,1,2,3",
77 "UMask": "0x7",
78 "EventName": "AVX_INSTS.ALL",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Approximate counts of AVX & AVX2 256-bit instructions, including non-arithmetic instructions, loads, and stores. May count non-AVX instructions that employ 256-bit operations, including (but not necessarily limited to) rep string instructions that use 256-bit loads and stores for optimized performance, XSAVE* and XRSTOR*, and operations that transition the x87 FPU data registers between x87 and MMX.",
81 "CounterHTOff": "0,1,2,3,4,5,6,7"
82 }
83] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswell/frontend.json b/tools/perf/pmu-events/arch/x86/haswell/frontend.json
new file mode 100644
index 000000000000..57a1ce46971f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswell/frontend.json
@@ -0,0 +1,294 @@
1[
2 {
3 "PublicDescription": "Counts cycles the IDQ is empty.",
4 "EventCode": "0x79",
5 "Counter": "0,1,2,3",
6 "UMask": "0x2",
7 "Errata": "HSD135",
8 "EventName": "IDQ.EMPTY",
9 "SampleAfterValue": "2000003",
10 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles",
11 "CounterHTOff": "0,1,2,3"
12 },
13 {
14 "PublicDescription": "Increment each cycle # of uops delivered to IDQ from MITE path. Set Cmask = 1 to count cycles.",
15 "EventCode": "0x79",
16 "Counter": "0,1,2,3",
17 "UMask": "0x4",
18 "EventName": "IDQ.MITE_UOPS",
19 "SampleAfterValue": "2000003",
20 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
21 "CounterHTOff": "0,1,2,3,4,5,6,7"
22 },
23 {
24 "PublicDescription": "Increment each cycle. # of uops delivered to IDQ from DSB path. Set Cmask = 1 to count cycles.",
25 "EventCode": "0x79",
26 "Counter": "0,1,2,3",
27 "UMask": "0x8",
28 "EventName": "IDQ.DSB_UOPS",
29 "SampleAfterValue": "2000003",
30 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
31 "CounterHTOff": "0,1,2,3,4,5,6,7"
32 },
33 {
34 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by DSB. Set Cmask = 1 to count cycles. Add Edge=1 to count # of delivery.",
35 "EventCode": "0x79",
36 "Counter": "0,1,2,3",
37 "UMask": "0x10",
38 "EventName": "IDQ.MS_DSB_UOPS",
39 "SampleAfterValue": "2000003",
40 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
41 "CounterHTOff": "0,1,2,3,4,5,6,7"
42 },
43 {
44 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by MITE. Set Cmask = 1 to count cycles.",
45 "EventCode": "0x79",
46 "Counter": "0,1,2,3",
47 "UMask": "0x20",
48 "EventName": "IDQ.MS_MITE_UOPS",
49 "SampleAfterValue": "2000003",
50 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
51 "CounterHTOff": "0,1,2,3,4,5,6,7"
52 },
53 {
54 "PublicDescription": "This event counts uops delivered by the Front-end with the assistance of the microcode sequencer. Microcode assists are used for complex instructions or scenarios that can't be handled by the standard decoder. Using other instructions, if possible, will usually improve performance.",
55 "EventCode": "0x79",
56 "Counter": "0,1,2,3",
57 "UMask": "0x30",
58 "EventName": "IDQ.MS_UOPS",
59 "SampleAfterValue": "2000003",
60 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
61 "CounterHTOff": "0,1,2,3,4,5,6,7"
62 },
63 {
64 "PublicDescription": "This event counts cycles during which the microcode sequencer assisted the Front-end in delivering uops. Microcode assists are used for complex instructions or scenarios that can't be handled by the standard decoder. Using other instructions, if possible, will usually improve performance.",
65 "EventCode": "0x79",
66 "Counter": "0,1,2,3",
67 "UMask": "0x30",
68 "EventName": "IDQ.MS_CYCLES",
69 "SampleAfterValue": "2000003",
70 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
71 "CounterMask": "1",
72 "CounterHTOff": "0,1,2,3,4,5,6,7"
73 },
74 {
75 "EventCode": "0x79",
76 "Counter": "0,1,2,3",
77 "UMask": "0x4",
78 "EventName": "IDQ.MITE_CYCLES",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path.",
81 "CounterMask": "1",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "EventCode": "0x79",
86 "Counter": "0,1,2,3",
87 "UMask": "0x8",
88 "EventName": "IDQ.DSB_CYCLES",
89 "SampleAfterValue": "2000003",
90 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path.",
91 "CounterMask": "1",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "EventCode": "0x79",
96 "Counter": "0,1,2,3",
97 "UMask": "0x10",
98 "EventName": "IDQ.MS_DSB_CYCLES",
99 "SampleAfterValue": "2000003",
100 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
101 "CounterMask": "1",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0x79",
106 "Counter": "0,1,2,3",
107 "UMask": "0x10",
108 "EdgeDetect": "1",
109 "EventName": "IDQ.MS_DSB_OCCUR",
110 "SampleAfterValue": "2000003",
111 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy.",
112 "CounterMask": "1",
113 "CounterHTOff": "0,1,2,3,4,5,6,7"
114 },
115 {
116 "PublicDescription": "Counts cycles DSB is delivered four uops. Set Cmask = 4.",
117 "EventCode": "0x79",
118 "Counter": "0,1,2,3",
119 "UMask": "0x18",
120 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
121 "SampleAfterValue": "2000003",
122 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
123 "CounterMask": "4",
124 "CounterHTOff": "0,1,2,3,4,5,6,7"
125 },
126 {
127 "PublicDescription": "Counts cycles DSB is delivered at least one uops. Set Cmask = 1.",
128 "EventCode": "0x79",
129 "Counter": "0,1,2,3",
130 "UMask": "0x18",
131 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
132 "SampleAfterValue": "2000003",
133 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
134 "CounterMask": "1",
135 "CounterHTOff": "0,1,2,3,4,5,6,7"
136 },
137 {
138 "PublicDescription": "Counts cycles MITE is delivered four uops. Set Cmask = 4.",
139 "EventCode": "0x79",
140 "Counter": "0,1,2,3",
141 "UMask": "0x24",
142 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
143 "SampleAfterValue": "2000003",
144 "BriefDescription": "Cycles MITE is delivering 4 Uops",
145 "CounterMask": "4",
146 "CounterHTOff": "0,1,2,3,4,5,6,7"
147 },
148 {
149 "PublicDescription": "Counts cycles MITE is delivered at least one uop. Set Cmask = 1.",
150 "EventCode": "0x79",
151 "Counter": "0,1,2,3",
152 "UMask": "0x24",
153 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
154 "SampleAfterValue": "2000003",
155 "BriefDescription": "Cycles MITE is delivering any Uop",
156 "CounterMask": "1",
157 "CounterHTOff": "0,1,2,3,4,5,6,7"
158 },
159 {
160 "PublicDescription": "Number of uops delivered to IDQ from any path.",
161 "EventCode": "0x79",
162 "Counter": "0,1,2,3",
163 "UMask": "0x3c",
164 "EventName": "IDQ.MITE_ALL_UOPS",
165 "SampleAfterValue": "2000003",
166 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
167 "CounterHTOff": "0,1,2,3,4,5,6,7"
168 },
169 {
170 "EventCode": "0x80",
171 "Counter": "0,1,2,3",
172 "UMask": "0x1",
173 "EventName": "ICACHE.HIT",
174 "SampleAfterValue": "2000003",
175 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches.",
176 "CounterHTOff": "0,1,2,3,4,5,6,7"
177 },
178 {
179 "PublicDescription": "This event counts Instruction Cache (ICACHE) misses.",
180 "EventCode": "0x80",
181 "Counter": "0,1,2,3",
182 "UMask": "0x2",
183 "EventName": "ICACHE.MISSES",
184 "SampleAfterValue": "200003",
185 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes Uncacheable accesses.",
186 "CounterHTOff": "0,1,2,3,4,5,6,7"
187 },
188 {
189 "EventCode": "0x80",
190 "Counter": "0,1,2,3",
191 "UMask": "0x4",
192 "EventName": "ICACHE.IFETCH_STALL",
193 "SampleAfterValue": "2000003",
194 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction-cache miss.",
195 "CounterHTOff": "0,1,2,3,4,5,6,7"
196 },
197 {
198 "PublicDescription": "This event count the number of undelivered (unallocated) uops from the Front-end to the Resource Allocation Table (RAT) while the Back-end of the processor is not stalled. The Front-end can allocate up to 4 uops per cycle so this event can increment 0-4 times per cycle depending on the number of unallocated uops. This event is counted on a per-core basis.",
199 "EventCode": "0x9C",
200 "Counter": "0,1,2,3",
201 "UMask": "0x1",
202 "Errata": "HSD135",
203 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
204 "SampleAfterValue": "2000003",
205 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled",
206 "CounterHTOff": "0,1,2,3"
207 },
208 {
209 "PublicDescription": "This event counts the number cycles during which the Front-end allocated exactly zero uops to the Resource Allocation Table (RAT) while the Back-end of the processor is not stalled. This event is counted on a per-core basis.",
210 "EventCode": "0x9C",
211 "Counter": "0,1,2,3",
212 "UMask": "0x1",
213 "Errata": "HSD135",
214 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
215 "SampleAfterValue": "2000003",
216 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
217 "CounterMask": "4",
218 "CounterHTOff": "0,1,2,3"
219 },
220 {
221 "EventCode": "0x9C",
222 "Counter": "0,1,2,3",
223 "UMask": "0x1",
224 "Errata": "HSD135",
225 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
226 "SampleAfterValue": "2000003",
227 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
228 "CounterMask": "3",
229 "CounterHTOff": "0,1,2,3"
230 },
231 {
232 "EventCode": "0x9C",
233 "Counter": "0,1,2,3",
234 "UMask": "0x1",
235 "Errata": "HSD135",
236 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
237 "SampleAfterValue": "2000003",
238 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
239 "CounterMask": "2",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "EventCode": "0x9C",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "Errata": "HSD135",
247 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
248 "SampleAfterValue": "2000003",
249 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
250 "CounterMask": "1",
251 "CounterHTOff": "0,1,2,3"
252 },
253 {
254 "EventCode": "0x9C",
255 "Invert": "1",
256 "Counter": "0,1,2,3",
257 "UMask": "0x1",
258 "Errata": "HSD135",
259 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
260 "SampleAfterValue": "2000003",
261 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
262 "CounterMask": "1",
263 "CounterHTOff": "0,1,2,3"
264 },
265 {
266 "EventCode": "0xAB",
267 "Counter": "0,1,2,3",
268 "UMask": "0x2",
269 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
270 "SampleAfterValue": "2000003",
271 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
272 "CounterHTOff": "0,1,2,3,4,5,6,7"
273 },
274 {
275 "EventCode": "0x79",
276 "Counter": "0,1,2,3",
277 "UMask": "0x30",
278 "EdgeDetect": "1",
279 "EventName": "IDQ.MS_SWITCHES",
280 "SampleAfterValue": "2000003",
281 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
282 "CounterMask": "1",
283 "CounterHTOff": "0,1,2,3,4,5,6,7"
284 },
285 {
286 "EventCode": "0x80",
287 "Counter": "0,1,2,3",
288 "UMask": "0x4",
289 "EventName": "ICACHE.IFDATA_STALL",
290 "SampleAfterValue": "2000003",
291 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction-cache miss.",
292 "CounterHTOff": "0,1,2,3,4,5,6,7"
293 }
294] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswell/memory.json b/tools/perf/pmu-events/arch/x86/haswell/memory.json
new file mode 100644
index 000000000000..aab981b42339
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswell/memory.json
@@ -0,0 +1,655 @@
1[
2 {
3 "PublicDescription": "Speculative cache-line split load uops dispatched to L1D.",
4 "EventCode": "0x05",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "MISALIGN_MEM_REF.LOADS",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Speculative cache-line split store-address uops dispatched to L1D.",
14 "EventCode": "0x05",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "MISALIGN_MEM_REF.STORES",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x54",
24 "Counter": "0,1,2,3",
25 "UMask": "0x1",
26 "EventName": "TX_MEM.ABORT_CONFLICT",
27 "SampleAfterValue": "2000003",
28 "BriefDescription": "Number of times a transactional abort was signaled due to a data conflict on a transactionally accessed address.",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "EventCode": "0x54",
33 "Counter": "0,1,2,3",
34 "UMask": "0x2",
35 "EventName": "TX_MEM.ABORT_CAPACITY_WRITE",
36 "SampleAfterValue": "2000003",
37 "BriefDescription": "Number of times a transactional abort was signaled due to a data capacity limitation for transactional writes.",
38 "CounterHTOff": "0,1,2,3,4,5,6,7"
39 },
40 {
41 "EventCode": "0x54",
42 "Counter": "0,1,2,3",
43 "UMask": "0x4",
44 "EventName": "TX_MEM.ABORT_HLE_STORE_TO_ELIDED_LOCK",
45 "SampleAfterValue": "2000003",
46 "BriefDescription": "Number of times a HLE transactional region aborted due to a non XRELEASE prefixed instruction writing to an elided lock in the elision buffer.",
47 "CounterHTOff": "0,1,2,3,4,5,6,7"
48 },
49 {
50 "EventCode": "0x54",
51 "Counter": "0,1,2,3",
52 "UMask": "0x8",
53 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_NOT_EMPTY",
54 "SampleAfterValue": "2000003",
55 "BriefDescription": "Number of times an HLE transactional execution aborted due to NoAllocatedElisionBuffer being non-zero.",
56 "CounterHTOff": "0,1,2,3,4,5,6,7"
57 },
58 {
59 "EventCode": "0x54",
60 "Counter": "0,1,2,3",
61 "UMask": "0x10",
62 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_MISMATCH",
63 "SampleAfterValue": "2000003",
64 "BriefDescription": "Number of times an HLE transactional execution aborted due to XRELEASE lock not satisfying the address and value requirements in the elision buffer.",
65 "CounterHTOff": "0,1,2,3,4,5,6,7"
66 },
67 {
68 "EventCode": "0x54",
69 "Counter": "0,1,2,3",
70 "UMask": "0x20",
71 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_UNSUPPORTED_ALIGNMENT",
72 "SampleAfterValue": "2000003",
73 "BriefDescription": "Number of times an HLE transactional execution aborted due to an unsupported read alignment from the elision buffer.",
74 "CounterHTOff": "0,1,2,3,4,5,6,7"
75 },
76 {
77 "EventCode": "0x54",
78 "Counter": "0,1,2,3",
79 "UMask": "0x40",
80 "EventName": "TX_MEM.HLE_ELISION_BUFFER_FULL",
81 "SampleAfterValue": "2000003",
82 "BriefDescription": "Number of times HLE lock could not be elided due to ElisionBufferAvailable being zero.",
83 "CounterHTOff": "0,1,2,3,4,5,6,7"
84 },
85 {
86 "EventCode": "0x5d",
87 "Counter": "0,1,2,3",
88 "UMask": "0x1",
89 "EventName": "TX_EXEC.MISC1",
90 "SampleAfterValue": "2000003",
91 "BriefDescription": "Counts the number of times a class of instructions that may cause a transactional abort was executed. Since this is the count of execution, it may not always cause a transactional abort.",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "EventCode": "0x5d",
96 "Counter": "0,1,2,3",
97 "UMask": "0x2",
98 "EventName": "TX_EXEC.MISC2",
99 "SampleAfterValue": "2000003",
100 "BriefDescription": "Counts the number of times a class of instructions (e.g., vzeroupper) that may cause a transactional abort was executed inside a transactional region.",
101 "CounterHTOff": "0,1,2,3,4,5,6,7"
102 },
103 {
104 "EventCode": "0x5d",
105 "Counter": "0,1,2,3",
106 "UMask": "0x4",
107 "EventName": "TX_EXEC.MISC3",
108 "SampleAfterValue": "2000003",
109 "BriefDescription": "Counts the number of times an instruction execution caused the transactional nest count supported to be exceeded.",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "EventCode": "0x5d",
114 "Counter": "0,1,2,3",
115 "UMask": "0x8",
116 "EventName": "TX_EXEC.MISC4",
117 "SampleAfterValue": "2000003",
118 "BriefDescription": "Counts the number of times a XBEGIN instruction was executed inside an HLE transactional region.",
119 "CounterHTOff": "0,1,2,3,4,5,6,7"
120 },
121 {
122 "EventCode": "0x5d",
123 "Counter": "0,1,2,3",
124 "UMask": "0x10",
125 "EventName": "TX_EXEC.MISC5",
126 "SampleAfterValue": "2000003",
127 "BriefDescription": "Counts the number of times an HLE XACQUIRE instruction was executed inside an RTM transactional region.",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "PublicDescription": "This event counts the number of memory ordering machine clears detected. Memory ordering machine clears can result from memory address aliasing or snoops from another hardware thread or core to data inflight in the pipeline. Machine clears can have a significant performance impact if they are happening frequently.",
132 "EventCode": "0xC3",
133 "Counter": "0,1,2,3",
134 "UMask": "0x2",
135 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
136 "SampleAfterValue": "100003",
137 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0xC8",
142 "Counter": "0,1,2,3",
143 "UMask": "0x1",
144 "EventName": "HLE_RETIRED.START",
145 "SampleAfterValue": "2000003",
146 "BriefDescription": "Number of times an HLE execution started.",
147 "CounterHTOff": "0,1,2,3,4,5,6,7"
148 },
149 {
150 "EventCode": "0xc8",
151 "Counter": "0,1,2,3",
152 "UMask": "0x2",
153 "EventName": "HLE_RETIRED.COMMIT",
154 "SampleAfterValue": "2000003",
155 "BriefDescription": "Number of times an HLE execution successfully committed.",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "PEBS": "1",
160 "EventCode": "0xc8",
161 "Counter": "0,1,2,3",
162 "UMask": "0x4",
163 "EventName": "HLE_RETIRED.ABORTED",
164 "SampleAfterValue": "2000003",
165 "BriefDescription": "Number of times an HLE execution aborted due to any reasons (multiple categories may count as one).",
166 "CounterHTOff": "0,1,2,3,4,5,6,7"
167 },
168 {
169 "EventCode": "0xc8",
170 "Counter": "0,1,2,3",
171 "UMask": "0x8",
172 "EventName": "HLE_RETIRED.ABORTED_MISC1",
173 "SampleAfterValue": "2000003",
174 "BriefDescription": "Number of times an HLE execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
175 "CounterHTOff": "0,1,2,3,4,5,6,7"
176 },
177 {
178 "EventCode": "0xc8",
179 "Counter": "0,1,2,3",
180 "UMask": "0x10",
181 "EventName": "HLE_RETIRED.ABORTED_MISC2",
182 "SampleAfterValue": "2000003",
183 "BriefDescription": "Number of times an HLE execution aborted due to uncommon conditions.",
184 "CounterHTOff": "0,1,2,3,4,5,6,7"
185 },
186 {
187 "EventCode": "0xc8",
188 "Counter": "0,1,2,3",
189 "UMask": "0x20",
190 "EventName": "HLE_RETIRED.ABORTED_MISC3",
191 "SampleAfterValue": "2000003",
192 "BriefDescription": "Number of times an HLE execution aborted due to HLE-unfriendly instructions.",
193 "CounterHTOff": "0,1,2,3,4,5,6,7"
194 },
195 {
196 "EventCode": "0xc8",
197 "Counter": "0,1,2,3",
198 "UMask": "0x40",
199 "Errata": "HSD65",
200 "EventName": "HLE_RETIRED.ABORTED_MISC4",
201 "SampleAfterValue": "2000003",
202 "BriefDescription": "Number of times an HLE execution aborted due to incompatible memory type.",
203 "CounterHTOff": "0,1,2,3,4,5,6,7"
204 },
205 {
206 "PublicDescription": "Number of times an HLE execution aborted due to none of the previous 4 categories (e.g. interrupts).",
207 "EventCode": "0xc8",
208 "Counter": "0,1,2,3",
209 "UMask": "0x80",
210 "EventName": "HLE_RETIRED.ABORTED_MISC5",
211 "SampleAfterValue": "2000003",
212 "BriefDescription": "Number of times an HLE execution aborted due to none of the previous 4 categories (e.g. interrupts)",
213 "CounterHTOff": "0,1,2,3,4,5,6,7"
214 },
215 {
216 "EventCode": "0xC9",
217 "Counter": "0,1,2,3",
218 "UMask": "0x1",
219 "EventName": "RTM_RETIRED.START",
220 "SampleAfterValue": "2000003",
221 "BriefDescription": "Number of times an RTM execution started.",
222 "CounterHTOff": "0,1,2,3"
223 },
224 {
225 "EventCode": "0xc9",
226 "Counter": "0,1,2,3",
227 "UMask": "0x2",
228 "EventName": "RTM_RETIRED.COMMIT",
229 "SampleAfterValue": "2000003",
230 "BriefDescription": "Number of times an RTM execution successfully committed.",
231 "CounterHTOff": "0,1,2,3"
232 },
233 {
234 "PEBS": "1",
235 "EventCode": "0xc9",
236 "Counter": "0,1,2,3",
237 "UMask": "0x4",
238 "EventName": "RTM_RETIRED.ABORTED",
239 "SampleAfterValue": "2000003",
240 "BriefDescription": "Number of times an RTM execution aborted due to any reasons (multiple categories may count as one).",
241 "CounterHTOff": "0,1,2,3"
242 },
243 {
244 "PublicDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts).",
245 "EventCode": "0xc9",
246 "Counter": "0,1,2,3",
247 "UMask": "0x8",
248 "EventName": "RTM_RETIRED.ABORTED_MISC1",
249 "SampleAfterValue": "2000003",
250 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts)",
251 "CounterHTOff": "0,1,2,3"
252 },
253 {
254 "EventCode": "0xc9",
255 "Counter": "0,1,2,3",
256 "UMask": "0x10",
257 "EventName": "RTM_RETIRED.ABORTED_MISC2",
258 "SampleAfterValue": "2000003",
259 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
260 "CounterHTOff": "0,1,2,3"
261 },
262 {
263 "EventCode": "0xc9",
264 "Counter": "0,1,2,3",
265 "UMask": "0x20",
266 "EventName": "RTM_RETIRED.ABORTED_MISC3",
267 "SampleAfterValue": "2000003",
268 "BriefDescription": "Number of times an RTM execution aborted due to HLE-unfriendly instructions.",
269 "CounterHTOff": "0,1,2,3"
270 },
271 {
272 "EventCode": "0xc9",
273 "Counter": "0,1,2,3",
274 "UMask": "0x40",
275 "Errata": "HSD65",
276 "EventName": "RTM_RETIRED.ABORTED_MISC4",
277 "SampleAfterValue": "2000003",
278 "BriefDescription": "Number of times an RTM execution aborted due to incompatible memory type.",
279 "CounterHTOff": "0,1,2,3"
280 },
281 {
282 "PublicDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt).",
283 "EventCode": "0xc9",
284 "Counter": "0,1,2,3",
285 "UMask": "0x80",
286 "EventName": "RTM_RETIRED.ABORTED_MISC5",
287 "SampleAfterValue": "2000003",
288 "BriefDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt)",
289 "CounterHTOff": "0,1,2,3"
290 },
291 {
292 "PEBS": "2",
293 "EventCode": "0xCD",
294 "MSRValue": "0x4",
295 "Counter": "3",
296 "UMask": "0x1",
297 "Errata": "HSD76, HSD25, HSM26",
298 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
299 "MSRIndex": "0x3F6",
300 "SampleAfterValue": "100003",
301 "BriefDescription": "Loads with latency value being above 4.",
302 "TakenAlone": "1",
303 "CounterHTOff": "3"
304 },
305 {
306 "PEBS": "2",
307 "EventCode": "0xCD",
308 "MSRValue": "0x8",
309 "Counter": "3",
310 "UMask": "0x1",
311 "Errata": "HSD76, HSD25, HSM26",
312 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
313 "MSRIndex": "0x3F6",
314 "SampleAfterValue": "50021",
315 "BriefDescription": "Loads with latency value being above 8.",
316 "TakenAlone": "1",
317 "CounterHTOff": "3"
318 },
319 {
320 "PEBS": "2",
321 "EventCode": "0xCD",
322 "MSRValue": "0x10",
323 "Counter": "3",
324 "UMask": "0x1",
325 "Errata": "HSD76, HSD25, HSM26",
326 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
327 "MSRIndex": "0x3F6",
328 "SampleAfterValue": "20011",
329 "BriefDescription": "Loads with latency value being above 16.",
330 "TakenAlone": "1",
331 "CounterHTOff": "3"
332 },
333 {
334 "PEBS": "2",
335 "EventCode": "0xCD",
336 "MSRValue": "0x20",
337 "Counter": "3",
338 "UMask": "0x1",
339 "Errata": "HSD76, HSD25, HSM26",
340 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
341 "MSRIndex": "0x3F6",
342 "SampleAfterValue": "100003",
343 "BriefDescription": "Loads with latency value being above 32.",
344 "TakenAlone": "1",
345 "CounterHTOff": "3"
346 },
347 {
348 "PEBS": "2",
349 "EventCode": "0xCD",
350 "MSRValue": "0x40",
351 "Counter": "3",
352 "UMask": "0x1",
353 "Errata": "HSD76, HSD25, HSM26",
354 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
355 "MSRIndex": "0x3F6",
356 "SampleAfterValue": "2003",
357 "BriefDescription": "Loads with latency value being above 64.",
358 "TakenAlone": "1",
359 "CounterHTOff": "3"
360 },
361 {
362 "PEBS": "2",
363 "EventCode": "0xCD",
364 "MSRValue": "0x80",
365 "Counter": "3",
366 "UMask": "0x1",
367 "Errata": "HSD76, HSD25, HSM26",
368 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
369 "MSRIndex": "0x3F6",
370 "SampleAfterValue": "1009",
371 "BriefDescription": "Loads with latency value being above 128.",
372 "TakenAlone": "1",
373 "CounterHTOff": "3"
374 },
375 {
376 "PEBS": "2",
377 "EventCode": "0xCD",
378 "MSRValue": "0x100",
379 "Counter": "3",
380 "UMask": "0x1",
381 "Errata": "HSD76, HSD25, HSM26",
382 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
383 "MSRIndex": "0x3F6",
384 "SampleAfterValue": "503",
385 "BriefDescription": "Loads with latency value being above 256.",
386 "TakenAlone": "1",
387 "CounterHTOff": "3"
388 },
389 {
390 "PEBS": "2",
391 "EventCode": "0xCD",
392 "MSRValue": "0x200",
393 "Counter": "3",
394 "UMask": "0x1",
395 "Errata": "HSD76, HSD25, HSM26",
396 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
397 "MSRIndex": "0x3F6",
398 "SampleAfterValue": "101",
399 "BriefDescription": "Loads with latency value being above 512.",
400 "TakenAlone": "1",
401 "CounterHTOff": "3"
402 },
403 {
404 "EventCode": "0xB7, 0xBB",
405 "MSRValue": "0x3fffc08fff",
406 "Counter": "0,1,2,3",
407 "UMask": "0x1",
408 "EventName": "OFFCORE_RESPONSE.ALL_REQUESTS.L3_MISS.ANY_RESPONSE",
409 "MSRIndex": "0x1a6,0x1a7",
410 "SampleAfterValue": "100003",
411 "BriefDescription": "Counts all requests that miss in the L3",
412 "Offcore": "1",
413 "CounterHTOff": "0,1,2,3"
414 },
415 {
416 "EventCode": "0xB7, 0xBB",
417 "MSRValue": "0x01004007f7",
418 "Counter": "0,1,2,3",
419 "UMask": "0x1",
420 "EventName": "OFFCORE_RESPONSE.ALL_READS.L3_MISS.LOCAL_DRAM",
421 "MSRIndex": "0x1a6,0x1a7",
422 "SampleAfterValue": "100003",
423 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and the data is returned from local dram",
424 "Offcore": "1",
425 "CounterHTOff": "0,1,2,3"
426 },
427 {
428 "EventCode": "0xB7, 0xBB",
429 "MSRValue": "0x3fffc007f7",
430 "Counter": "0,1,2,3",
431 "UMask": "0x1",
432 "EventName": "OFFCORE_RESPONSE.ALL_READS.L3_MISS.ANY_RESPONSE",
433 "MSRIndex": "0x1a6,0x1a7",
434 "SampleAfterValue": "100003",
435 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss in the L3",
436 "Offcore": "1",
437 "CounterHTOff": "0,1,2,3"
438 },
439 {
440 "EventCode": "0xB7, 0xBB",
441 "MSRValue": "0x0100400244",
442 "Counter": "0,1,2,3",
443 "UMask": "0x1",
444 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.L3_MISS.LOCAL_DRAM",
445 "MSRIndex": "0x1a6,0x1a7",
446 "SampleAfterValue": "100003",
447 "BriefDescription": "Counts all demand & prefetch code reads that miss the L3 and the data is returned from local dram",
448 "Offcore": "1",
449 "CounterHTOff": "0,1,2,3"
450 },
451 {
452 "EventCode": "0xB7, 0xBB",
453 "MSRValue": "0x3fffc00244",
454 "Counter": "0,1,2,3",
455 "UMask": "0x1",
456 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.L3_MISS.ANY_RESPONSE",
457 "MSRIndex": "0x1a6,0x1a7",
458 "SampleAfterValue": "100003",
459 "BriefDescription": "Counts all demand & prefetch code reads that miss in the L3",
460 "Offcore": "1",
461 "CounterHTOff": "0,1,2,3"
462 },
463 {
464 "EventCode": "0xB7, 0xBB",
465 "MSRValue": "0x0100400122",
466 "Counter": "0,1,2,3",
467 "UMask": "0x1",
468 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS.LOCAL_DRAM",
469 "MSRIndex": "0x1a6,0x1a7",
470 "SampleAfterValue": "100003",
471 "BriefDescription": "Counts all demand & prefetch RFOs that miss the L3 and the data is returned from local dram",
472 "Offcore": "1",
473 "CounterHTOff": "0,1,2,3"
474 },
475 {
476 "EventCode": "0xB7, 0xBB",
477 "MSRValue": "0x3fffc00122",
478 "Counter": "0,1,2,3",
479 "UMask": "0x1",
480 "EventName": "OFFCORE_RESPONSE.ALL_RFO.L3_MISS.ANY_RESPONSE",
481 "MSRIndex": "0x1a6,0x1a7",
482 "SampleAfterValue": "100003",
483 "BriefDescription": "Counts all demand & prefetch RFOs that miss in the L3",
484 "Offcore": "1",
485 "CounterHTOff": "0,1,2,3"
486 },
487 {
488 "EventCode": "0xB7, 0xBB",
489 "MSRValue": "0x0100400091",
490 "Counter": "0,1,2,3",
491 "UMask": "0x1",
492 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS.LOCAL_DRAM",
493 "MSRIndex": "0x1a6,0x1a7",
494 "SampleAfterValue": "100003",
495 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and the data is returned from local dram",
496 "Offcore": "1",
497 "CounterHTOff": "0,1,2,3"
498 },
499 {
500 "EventCode": "0xB7, 0xBB",
501 "MSRValue": "0x3fffc00091",
502 "Counter": "0,1,2,3",
503 "UMask": "0x1",
504 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.L3_MISS.ANY_RESPONSE",
505 "MSRIndex": "0x1a6,0x1a7",
506 "SampleAfterValue": "100003",
507 "BriefDescription": "Counts all demand & prefetch data reads that miss in the L3",
508 "Offcore": "1",
509 "CounterHTOff": "0,1,2,3"
510 },
511 {
512 "EventCode": "0xB7, 0xBB",
513 "MSRValue": "0x3fffc00200",
514 "Counter": "0,1,2,3",
515 "UMask": "0x1",
516 "EventName": "OFFCORE_RESPONSE.PF_L3_CODE_RD.L3_MISS.ANY_RESPONSE",
517 "MSRIndex": "0x1a6,0x1a7",
518 "SampleAfterValue": "100003",
519 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that miss in the L3",
520 "Offcore": "1",
521 "CounterHTOff": "0,1,2,3"
522 },
523 {
524 "EventCode": "0xB7, 0xBB",
525 "MSRValue": "0x3fffc00100",
526 "Counter": "0,1,2,3",
527 "UMask": "0x1",
528 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.ANY_RESPONSE",
529 "MSRIndex": "0x1a6,0x1a7",
530 "SampleAfterValue": "100003",
531 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that miss in the L3",
532 "Offcore": "1",
533 "CounterHTOff": "0,1,2,3"
534 },
535 {
536 "EventCode": "0xB7, 0xBB",
537 "MSRValue": "0x3fffc00080",
538 "Counter": "0,1,2,3",
539 "UMask": "0x1",
540 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.ANY_RESPONSE",
541 "MSRIndex": "0x1a6,0x1a7",
542 "SampleAfterValue": "100003",
543 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that miss in the L3",
544 "Offcore": "1",
545 "CounterHTOff": "0,1,2,3"
546 },
547 {
548 "EventCode": "0xB7, 0xBB",
549 "MSRValue": "0x3fffc00040",
550 "Counter": "0,1,2,3",
551 "UMask": "0x1",
552 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L3_MISS.ANY_RESPONSE",
553 "MSRIndex": "0x1a6,0x1a7",
554 "SampleAfterValue": "100003",
555 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that miss in the L3",
556 "Offcore": "1",
557 "CounterHTOff": "0,1,2,3"
558 },
559 {
560 "EventCode": "0xB7, 0xBB",
561 "MSRValue": "0x3fffc00020",
562 "Counter": "0,1,2,3",
563 "UMask": "0x1",
564 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS.ANY_RESPONSE",
565 "MSRIndex": "0x1a6,0x1a7",
566 "SampleAfterValue": "100003",
567 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that miss in the L3",
568 "Offcore": "1",
569 "CounterHTOff": "0,1,2,3"
570 },
571 {
572 "EventCode": "0xB7, 0xBB",
573 "MSRValue": "0x3fffc00010",
574 "Counter": "0,1,2,3",
575 "UMask": "0x1",
576 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L3_MISS.ANY_RESPONSE",
577 "MSRIndex": "0x1a6,0x1a7",
578 "SampleAfterValue": "100003",
579 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss in the L3",
580 "Offcore": "1",
581 "CounterHTOff": "0,1,2,3"
582 },
583 {
584 "EventCode": "0xB7, 0xBB",
585 "MSRValue": "0x0100400004",
586 "Counter": "0,1,2,3",
587 "UMask": "0x1",
588 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.LOCAL_DRAM",
589 "MSRIndex": "0x1a6,0x1a7",
590 "SampleAfterValue": "100003",
591 "BriefDescription": "Counts all demand code reads that miss the L3 and the data is returned from local dram",
592 "Offcore": "1",
593 "CounterHTOff": "0,1,2,3"
594 },
595 {
596 "EventCode": "0xB7, 0xBB",
597 "MSRValue": "0x3fffc00004",
598 "Counter": "0,1,2,3",
599 "UMask": "0x1",
600 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.ANY_RESPONSE",
601 "MSRIndex": "0x1a6,0x1a7",
602 "SampleAfterValue": "100003",
603 "BriefDescription": "Counts all demand code reads that miss in the L3",
604 "Offcore": "1",
605 "CounterHTOff": "0,1,2,3"
606 },
607 {
608 "EventCode": "0xB7, 0xBB",
609 "MSRValue": "0x0100400002",
610 "Counter": "0,1,2,3",
611 "UMask": "0x1",
612 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.LOCAL_DRAM",
613 "MSRIndex": "0x1a6,0x1a7",
614 "SampleAfterValue": "100003",
615 "BriefDescription": "Counts all demand data writes (RFOs) that miss the L3 and the data is returned from local dram",
616 "Offcore": "1",
617 "CounterHTOff": "0,1,2,3"
618 },
619 {
620 "EventCode": "0xB7, 0xBB",
621 "MSRValue": "0x3fffc00002",
622 "Counter": "0,1,2,3",
623 "UMask": "0x1",
624 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.ANY_RESPONSE",
625 "MSRIndex": "0x1a6,0x1a7",
626 "SampleAfterValue": "100003",
627 "BriefDescription": "Counts all demand data writes (RFOs) that miss in the L3",
628 "Offcore": "1",
629 "CounterHTOff": "0,1,2,3"
630 },
631 {
632 "EventCode": "0xB7, 0xBB",
633 "MSRValue": "0x0100400001",
634 "Counter": "0,1,2,3",
635 "UMask": "0x1",
636 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.LOCAL_DRAM",
637 "MSRIndex": "0x1a6,0x1a7",
638 "SampleAfterValue": "100003",
639 "BriefDescription": "Counts demand data reads that miss the L3 and the data is returned from local dram",
640 "Offcore": "1",
641 "CounterHTOff": "0,1,2,3"
642 },
643 {
644 "EventCode": "0xB7, 0xBB",
645 "MSRValue": "0x3fffc00001",
646 "Counter": "0,1,2,3",
647 "UMask": "0x1",
648 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.ANY_RESPONSE",
649 "MSRIndex": "0x1a6,0x1a7",
650 "SampleAfterValue": "100003",
651 "BriefDescription": "Counts demand data reads that miss in the L3",
652 "Offcore": "1",
653 "CounterHTOff": "0,1,2,3"
654 }
655] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswell/other.json b/tools/perf/pmu-events/arch/x86/haswell/other.json
new file mode 100644
index 000000000000..85d6a14baf9d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswell/other.json
@@ -0,0 +1,43 @@
1[
2 {
3 "PublicDescription": "Unhalted core cycles when the thread is in ring 0.",
4 "EventCode": "0x5C",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "CPL_CYCLES.RING0",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Unhalted core cycles when the thread is in ring 0",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Unhalted core cycles when the thread is not in ring 0.",
14 "EventCode": "0x5C",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "CPL_CYCLES.RING123",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x5C",
24 "Counter": "0,1,2,3",
25 "UMask": "0x1",
26 "EdgeDetect": "1",
27 "EventName": "CPL_CYCLES.RING0_TRANS",
28 "SampleAfterValue": "100003",
29 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0.",
30 "CounterMask": "1",
31 "CounterHTOff": "0,1,2,3,4,5,6,7"
32 },
33 {
34 "PublicDescription": "Cycles in which the L1D and L2 are locked, due to a UC lock or split lock.",
35 "EventCode": "0x63",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
39 "SampleAfterValue": "2000003",
40 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock",
41 "CounterHTOff": "0,1,2,3,4,5,6,7"
42 }
43] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswell/pipeline.json b/tools/perf/pmu-events/arch/x86/haswell/pipeline.json
new file mode 100644
index 000000000000..0099848607ad
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswell/pipeline.json
@@ -0,0 +1,1329 @@
1[
2 {
3 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. INST_RETIRED.ANY is counted by a designated fixed counter, leaving the programmable counters available for other events. Faulting executions of GETSEC/VM entry/VM Exit/MWait will not count as retired instructions.",
4 "EventCode": "0x00",
5 "Counter": "Fixed counter 1",
6 "UMask": "0x1",
7 "Errata": "HSD140, HSD143",
8 "EventName": "INST_RETIRED.ANY",
9 "SampleAfterValue": "2000003",
10 "BriefDescription": "Instructions retired from execution.",
11 "CounterHTOff": "Fixed counter 1"
12 },
13 {
14 "PublicDescription": "This event counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling.",
15 "EventCode": "0x00",
16 "Counter": "Fixed counter 2",
17 "UMask": "0x2",
18 "EventName": "CPU_CLK_UNHALTED.THREAD",
19 "SampleAfterValue": "2000003",
20 "BriefDescription": "Core cycles when the thread is not in halt state.",
21 "CounterHTOff": "Fixed counter 2"
22 },
23 {
24 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state.",
25 "EventCode": "0x00",
26 "Counter": "Fixed counter 3",
27 "UMask": "0x3",
28 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
29 "SampleAfterValue": "2000003",
30 "BriefDescription": "Reference cycles when the core is not in halt state.",
31 "CounterHTOff": "Fixed counter 3"
32 },
33 {
34 "PublicDescription": "This event counts loads that followed a store to the same address, where the data could not be forwarded inside the pipeline from the store to the load. The most common reason why store forwarding would be blocked is when a load's address range overlaps with a preceding smaller uncompleted store. The penalty for blocked store forwarding is that the load must wait for the store to write its value to the cache before it can be issued.",
35 "EventCode": "0x03",
36 "Counter": "0,1,2,3",
37 "UMask": "0x2",
38 "EventName": "LD_BLOCKS.STORE_FORWARD",
39 "SampleAfterValue": "100003",
40 "BriefDescription": "loads blocked by overlapping with store buffer that cannot be forwarded",
41 "CounterHTOff": "0,1,2,3,4,5,6,7"
42 },
43 {
44 "PublicDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
45 "EventCode": "0x03",
46 "Counter": "0,1,2,3",
47 "UMask": "0x8",
48 "EventName": "LD_BLOCKS.NO_SR",
49 "SampleAfterValue": "100003",
50 "BriefDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use",
51 "CounterHTOff": "0,1,2,3,4,5,6,7"
52 },
53 {
54 "PublicDescription": "Aliasing occurs when a load is issued after a store and their memory addresses are offset by 4K. This event counts the number of loads that aliased with a preceding store, resulting in an extended address check in the pipeline which can have a performance impact.",
55 "EventCode": "0x07",
56 "Counter": "0,1,2,3",
57 "UMask": "0x1",
58 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
59 "SampleAfterValue": "100003",
60 "BriefDescription": "False dependencies in MOB due to partial compare on address.",
61 "CounterHTOff": "0,1,2,3,4,5,6,7"
62 },
63 {
64 "PublicDescription": "This event counts the number of cycles spent waiting for a recovery after an event such as a processor nuke, JEClear, assist, hle/rtm abort etc.",
65 "EventCode": "0x0D",
66 "Counter": "0,1,2,3",
67 "UMask": "0x3",
68 "EventName": "INT_MISC.RECOVERY_CYCLES",
69 "SampleAfterValue": "2000003",
70 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...)",
71 "CounterMask": "1",
72 "CounterHTOff": "0,1,2,3,4,5,6,7"
73 },
74 {
75 "PublicDescription": "This event counts the number of uops issued by the Front-end of the pipeline to the Back-end. This event is counted at the allocation stage and will count both retired and non-retired uops.",
76 "EventCode": "0x0E",
77 "Counter": "0,1,2,3",
78 "UMask": "0x1",
79 "EventName": "UOPS_ISSUED.ANY",
80 "SampleAfterValue": "2000003",
81 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "PublicDescription": "Number of flags-merge uops allocated. Such uops add delay.",
86 "EventCode": "0x0E",
87 "Counter": "0,1,2,3",
88 "UMask": "0x10",
89 "EventName": "UOPS_ISSUED.FLAGS_MERGE",
90 "SampleAfterValue": "2000003",
91 "BriefDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive; added by GSR u-arch.",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "PublicDescription": "Number of slow LEA or similar uops allocated. Such uop has 3 sources (for example, 2 sources + immediate) regardless of whether it is a result of LEA instruction or not.",
96 "EventCode": "0x0E",
97 "Counter": "0,1,2,3",
98 "UMask": "0x20",
99 "EventName": "UOPS_ISSUED.SLOW_LEA",
100 "SampleAfterValue": "2000003",
101 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "PublicDescription": "Number of multiply packed/scalar single precision uops allocated.",
106 "EventCode": "0x0E",
107 "Counter": "0,1,2,3",
108 "UMask": "0x40",
109 "EventName": "UOPS_ISSUED.SINGLE_MUL",
110 "SampleAfterValue": "2000003",
111 "BriefDescription": "Number of Multiply packed/scalar single precision uops allocated",
112 "CounterHTOff": "0,1,2,3,4,5,6,7"
113 },
114 {
115 "EventCode": "0x0E",
116 "Invert": "1",
117 "Counter": "0,1,2,3",
118 "UMask": "0x1",
119 "EventName": "UOPS_ISSUED.STALL_CYCLES",
120 "SampleAfterValue": "2000003",
121 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread.",
122 "CounterMask": "1",
123 "CounterHTOff": "0,1,2,3"
124 },
125 {
126 "EventCode": "0x0E",
127 "Invert": "1",
128 "Counter": "0,1,2,3",
129 "UMask": "0x1",
130 "AnyThread": "1",
131 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
132 "SampleAfterValue": "2000003",
133 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads.",
134 "CounterMask": "1",
135 "CounterHTOff": "0,1,2,3"
136 },
137 {
138 "EventCode": "0x14",
139 "Counter": "0,1,2,3",
140 "UMask": "0x2",
141 "EventName": "ARITH.DIVIDER_UOPS",
142 "SampleAfterValue": "2000003",
143 "BriefDescription": "Any uop executed by the Divider. (This includes all divide uops, sqrt, ...)",
144 "CounterHTOff": "0,1,2,3,4,5,6,7"
145 },
146 {
147 "PublicDescription": "Increments at the frequency of XCLK (100 MHz) when not halted.",
148 "EventCode": "0x3C",
149 "Counter": "0,1,2,3",
150 "UMask": "0x1",
151 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
152 "SampleAfterValue": "2000003",
153 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
154 "CounterHTOff": "0,1,2,3,4,5,6,7"
155 },
156 {
157 "EventCode": "0x3c",
158 "Counter": "0,1,2,3",
159 "UMask": "0x2",
160 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
161 "SampleAfterValue": "2000003",
162 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
163 "CounterHTOff": "0,1,2,3"
164 },
165 {
166 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for S/W prefetch.",
167 "EventCode": "0x4c",
168 "Counter": "0,1,2,3",
169 "UMask": "0x1",
170 "EventName": "LOAD_HIT_PRE.SW_PF",
171 "SampleAfterValue": "100003",
172 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch",
173 "CounterHTOff": "0,1,2,3,4,5,6,7"
174 },
175 {
176 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for H/W prefetch.",
177 "EventCode": "0x4c",
178 "Counter": "0,1,2,3",
179 "UMask": "0x2",
180 "EventName": "LOAD_HIT_PRE.HW_PF",
181 "SampleAfterValue": "100003",
182 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch",
183 "CounterHTOff": "0,1,2,3,4,5,6,7"
184 },
185 {
186 "PublicDescription": "Number of integer move elimination candidate uops that were eliminated.",
187 "EventCode": "0x58",
188 "Counter": "0,1,2,3",
189 "UMask": "0x1",
190 "EventName": "MOVE_ELIMINATION.INT_ELIMINATED",
191 "SampleAfterValue": "1000003",
192 "BriefDescription": "Number of integer Move Elimination candidate uops that were eliminated.",
193 "CounterHTOff": "0,1,2,3,4,5,6,7"
194 },
195 {
196 "PublicDescription": "Number of SIMD move elimination candidate uops that were eliminated.",
197 "EventCode": "0x58",
198 "Counter": "0,1,2,3",
199 "UMask": "0x2",
200 "EventName": "MOVE_ELIMINATION.SIMD_ELIMINATED",
201 "SampleAfterValue": "1000003",
202 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were eliminated.",
203 "CounterHTOff": "0,1,2,3,4,5,6,7"
204 },
205 {
206 "PublicDescription": "Number of integer move elimination candidate uops that were not eliminated.",
207 "EventCode": "0x58",
208 "Counter": "0,1,2,3",
209 "UMask": "0x4",
210 "EventName": "MOVE_ELIMINATION.INT_NOT_ELIMINATED",
211 "SampleAfterValue": "1000003",
212 "BriefDescription": "Number of integer Move Elimination candidate uops that were not eliminated.",
213 "CounterHTOff": "0,1,2,3,4,5,6,7"
214 },
215 {
216 "PublicDescription": "Number of SIMD move elimination candidate uops that were not eliminated.",
217 "EventCode": "0x58",
218 "Counter": "0,1,2,3",
219 "UMask": "0x8",
220 "EventName": "MOVE_ELIMINATION.SIMD_NOT_ELIMINATED",
221 "SampleAfterValue": "1000003",
222 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were not eliminated.",
223 "CounterHTOff": "0,1,2,3,4,5,6,7"
224 },
225 {
226 "PublicDescription": "This event counts cycles when the Reservation Station ( RS ) is empty for the thread. The RS is a structure that buffers allocated micro-ops from the Front-end. If there are many cycles when the RS is empty, it may represent an underflow of instructions delivered from the Front-end.",
227 "EventCode": "0x5E",
228 "Counter": "0,1,2,3",
229 "UMask": "0x1",
230 "EventName": "RS_EVENTS.EMPTY_CYCLES",
231 "SampleAfterValue": "2000003",
232 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
233 "CounterHTOff": "0,1,2,3,4,5,6,7"
234 },
235 {
236 "PublicDescription": "This event counts cycles where the decoder is stalled on an instruction with a length changing prefix (LCP).",
237 "EventCode": "0x87",
238 "Counter": "0,1,2,3",
239 "UMask": "0x1",
240 "EventName": "ILD_STALL.LCP",
241 "SampleAfterValue": "2000003",
242 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
243 "CounterHTOff": "0,1,2,3,4,5,6,7"
244 },
245 {
246 "PublicDescription": "Stall cycles due to IQ is full.",
247 "EventCode": "0x87",
248 "Counter": "0,1,2,3",
249 "UMask": "0x4",
250 "EventName": "ILD_STALL.IQ_FULL",
251 "SampleAfterValue": "2000003",
252 "BriefDescription": "Stall cycles because IQ is full",
253 "CounterHTOff": "0,1,2,3,4,5,6,7"
254 },
255 {
256 "EventCode": "0x88",
257 "Counter": "0,1,2,3",
258 "UMask": "0x41",
259 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
260 "SampleAfterValue": "200003",
261 "BriefDescription": "Not taken macro-conditional branches.",
262 "CounterHTOff": "0,1,2,3,4,5,6,7"
263 },
264 {
265 "EventCode": "0x88",
266 "Counter": "0,1,2,3",
267 "UMask": "0x81",
268 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
269 "SampleAfterValue": "200003",
270 "BriefDescription": "Taken speculative and retired macro-conditional branches.",
271 "CounterHTOff": "0,1,2,3,4,5,6,7"
272 },
273 {
274 "EventCode": "0x88",
275 "Counter": "0,1,2,3",
276 "UMask": "0x82",
277 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
278 "SampleAfterValue": "200003",
279 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects.",
280 "CounterHTOff": "0,1,2,3,4,5,6,7"
281 },
282 {
283 "EventCode": "0x88",
284 "Counter": "0,1,2,3",
285 "UMask": "0x84",
286 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
287 "SampleAfterValue": "200003",
288 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns.",
289 "CounterHTOff": "0,1,2,3,4,5,6,7"
290 },
291 {
292 "EventCode": "0x88",
293 "Counter": "0,1,2,3",
294 "UMask": "0x88",
295 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
296 "SampleAfterValue": "200003",
297 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic.",
298 "CounterHTOff": "0,1,2,3,4,5,6,7"
299 },
300 {
301 "EventCode": "0x88",
302 "Counter": "0,1,2,3",
303 "UMask": "0x90",
304 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
305 "SampleAfterValue": "200003",
306 "BriefDescription": "Taken speculative and retired direct near calls.",
307 "CounterHTOff": "0,1,2,3,4,5,6,7"
308 },
309 {
310 "EventCode": "0x88",
311 "Counter": "0,1,2,3",
312 "UMask": "0xa0",
313 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
314 "SampleAfterValue": "200003",
315 "BriefDescription": "Taken speculative and retired indirect calls.",
316 "CounterHTOff": "0,1,2,3,4,5,6,7"
317 },
318 {
319 "EventCode": "0x88",
320 "Counter": "0,1,2,3",
321 "UMask": "0xc1",
322 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
323 "SampleAfterValue": "200003",
324 "BriefDescription": "Speculative and retired macro-conditional branches.",
325 "CounterHTOff": "0,1,2,3,4,5,6,7"
326 },
327 {
328 "EventCode": "0x88",
329 "Counter": "0,1,2,3",
330 "UMask": "0xc2",
331 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
332 "SampleAfterValue": "200003",
333 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects.",
334 "CounterHTOff": "0,1,2,3,4,5,6,7"
335 },
336 {
337 "EventCode": "0x88",
338 "Counter": "0,1,2,3",
339 "UMask": "0xc4",
340 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
341 "SampleAfterValue": "200003",
342 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns.",
343 "CounterHTOff": "0,1,2,3,4,5,6,7"
344 },
345 {
346 "EventCode": "0x88",
347 "Counter": "0,1,2,3",
348 "UMask": "0xc8",
349 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
350 "SampleAfterValue": "200003",
351 "BriefDescription": "Speculative and retired indirect return branches.",
352 "CounterHTOff": "0,1,2,3,4,5,6,7"
353 },
354 {
355 "EventCode": "0x88",
356 "Counter": "0,1,2,3",
357 "UMask": "0xd0",
358 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
359 "SampleAfterValue": "200003",
360 "BriefDescription": "Speculative and retired direct near calls.",
361 "CounterHTOff": "0,1,2,3,4,5,6,7"
362 },
363 {
364 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
365 "EventCode": "0x88",
366 "Counter": "0,1,2,3",
367 "UMask": "0xff",
368 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
369 "SampleAfterValue": "200003",
370 "BriefDescription": "Speculative and retired branches",
371 "CounterHTOff": "0,1,2,3,4,5,6,7"
372 },
373 {
374 "EventCode": "0x89",
375 "Counter": "0,1,2,3",
376 "UMask": "0x41",
377 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
378 "SampleAfterValue": "200003",
379 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches.",
380 "CounterHTOff": "0,1,2,3,4,5,6,7"
381 },
382 {
383 "EventCode": "0x89",
384 "Counter": "0,1,2,3",
385 "UMask": "0x81",
386 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
387 "SampleAfterValue": "200003",
388 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches.",
389 "CounterHTOff": "0,1,2,3,4,5,6,7"
390 },
391 {
392 "EventCode": "0x89",
393 "Counter": "0,1,2,3",
394 "UMask": "0x84",
395 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
396 "SampleAfterValue": "200003",
397 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns.",
398 "CounterHTOff": "0,1,2,3,4,5,6,7"
399 },
400 {
401 "EventCode": "0x89",
402 "Counter": "0,1,2,3",
403 "UMask": "0x88",
404 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
405 "SampleAfterValue": "200003",
406 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic.",
407 "CounterHTOff": "0,1,2,3,4,5,6,7"
408 },
409 {
410 "EventCode": "0x89",
411 "Counter": "0,1,2,3",
412 "UMask": "0xc1",
413 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
414 "SampleAfterValue": "200003",
415 "BriefDescription": "Speculative and retired mispredicted macro conditional branches.",
416 "CounterHTOff": "0,1,2,3,4,5,6,7"
417 },
418 {
419 "EventCode": "0x89",
420 "Counter": "0,1,2,3",
421 "UMask": "0xc4",
422 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
423 "SampleAfterValue": "200003",
424 "BriefDescription": "Mispredicted indirect branches excluding calls and returns.",
425 "CounterHTOff": "0,1,2,3,4,5,6,7"
426 },
427 {
428 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
429 "EventCode": "0x89",
430 "Counter": "0,1,2,3",
431 "UMask": "0xff",
432 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
433 "SampleAfterValue": "200003",
434 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
435 "CounterHTOff": "0,1,2,3,4,5,6,7"
436 },
437 {
438 "PublicDescription": "Cycles which a uop is dispatched on port 0 in this thread.",
439 "EventCode": "0xA1",
440 "Counter": "0,1,2,3",
441 "UMask": "0x1",
442 "EventName": "UOPS_EXECUTED_PORT.PORT_0",
443 "SampleAfterValue": "2000003",
444 "BriefDescription": "Cycles per thread when uops are executed in port 0",
445 "CounterHTOff": "0,1,2,3,4,5,6,7"
446 },
447 {
448 "PublicDescription": "Cycles which a uop is dispatched on port 1 in this thread.",
449 "EventCode": "0xA1",
450 "Counter": "0,1,2,3",
451 "UMask": "0x2",
452 "EventName": "UOPS_EXECUTED_PORT.PORT_1",
453 "SampleAfterValue": "2000003",
454 "BriefDescription": "Cycles per thread when uops are executed in port 1",
455 "CounterHTOff": "0,1,2,3,4,5,6,7"
456 },
457 {
458 "PublicDescription": "Cycles which a uop is dispatched on port 2 in this thread.",
459 "EventCode": "0xA1",
460 "Counter": "0,1,2,3",
461 "UMask": "0x4",
462 "EventName": "UOPS_EXECUTED_PORT.PORT_2",
463 "SampleAfterValue": "2000003",
464 "BriefDescription": "Cycles per thread when uops are executed in port 2",
465 "CounterHTOff": "0,1,2,3,4,5,6,7"
466 },
467 {
468 "PublicDescription": "Cycles which a uop is dispatched on port 3 in this thread.",
469 "EventCode": "0xA1",
470 "Counter": "0,1,2,3",
471 "UMask": "0x8",
472 "EventName": "UOPS_EXECUTED_PORT.PORT_3",
473 "SampleAfterValue": "2000003",
474 "BriefDescription": "Cycles per thread when uops are executed in port 3",
475 "CounterHTOff": "0,1,2,3,4,5,6,7"
476 },
477 {
478 "PublicDescription": "Cycles which a uop is dispatched on port 4 in this thread.",
479 "EventCode": "0xA1",
480 "Counter": "0,1,2,3",
481 "UMask": "0x10",
482 "EventName": "UOPS_EXECUTED_PORT.PORT_4",
483 "SampleAfterValue": "2000003",
484 "BriefDescription": "Cycles per thread when uops are executed in port 4",
485 "CounterHTOff": "0,1,2,3,4,5,6,7"
486 },
487 {
488 "PublicDescription": "Cycles which a uop is dispatched on port 5 in this thread.",
489 "EventCode": "0xA1",
490 "Counter": "0,1,2,3",
491 "UMask": "0x20",
492 "EventName": "UOPS_EXECUTED_PORT.PORT_5",
493 "SampleAfterValue": "2000003",
494 "BriefDescription": "Cycles per thread when uops are executed in port 5",
495 "CounterHTOff": "0,1,2,3,4,5,6,7"
496 },
497 {
498 "PublicDescription": "Cycles which a uop is dispatched on port 6 in this thread.",
499 "EventCode": "0xA1",
500 "Counter": "0,1,2,3",
501 "UMask": "0x40",
502 "EventName": "UOPS_EXECUTED_PORT.PORT_6",
503 "SampleAfterValue": "2000003",
504 "BriefDescription": "Cycles per thread when uops are executed in port 6",
505 "CounterHTOff": "0,1,2,3,4,5,6,7"
506 },
507 {
508 "PublicDescription": "Cycles which a uop is dispatched on port 7 in this thread.",
509 "EventCode": "0xA1",
510 "Counter": "0,1,2,3",
511 "UMask": "0x80",
512 "EventName": "UOPS_EXECUTED_PORT.PORT_7",
513 "SampleAfterValue": "2000003",
514 "BriefDescription": "Cycles per thread when uops are executed in port 7",
515 "CounterHTOff": "0,1,2,3,4,5,6,7"
516 },
517 {
518 "PublicDescription": "Cycles allocation is stalled due to resource related reason.",
519 "EventCode": "0xA2",
520 "Counter": "0,1,2,3",
521 "UMask": "0x1",
522 "Errata": "HSD135",
523 "EventName": "RESOURCE_STALLS.ANY",
524 "SampleAfterValue": "2000003",
525 "BriefDescription": "Resource-related stall cycles",
526 "CounterHTOff": "0,1,2,3,4,5,6,7"
527 },
528 {
529 "EventCode": "0xA2",
530 "Counter": "0,1,2,3",
531 "UMask": "0x4",
532 "EventName": "RESOURCE_STALLS.RS",
533 "SampleAfterValue": "2000003",
534 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
535 "CounterHTOff": "0,1,2,3,4,5,6,7"
536 },
537 {
538 "PublicDescription": "This event counts cycles during which no instructions were allocated because no Store Buffers (SB) were available.",
539 "EventCode": "0xA2",
540 "Counter": "0,1,2,3",
541 "UMask": "0x8",
542 "EventName": "RESOURCE_STALLS.SB",
543 "SampleAfterValue": "2000003",
544 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "EventCode": "0xA2",
549 "Counter": "0,1,2,3",
550 "UMask": "0x10",
551 "EventName": "RESOURCE_STALLS.ROB",
552 "SampleAfterValue": "2000003",
553 "BriefDescription": "Cycles stalled due to re-order buffer full.",
554 "CounterHTOff": "0,1,2,3,4,5,6,7"
555 },
556 {
557 "PublicDescription": "Cycles with pending L2 miss loads. Set Cmask=2 to count cycle.",
558 "EventCode": "0xA3",
559 "Counter": "0,1,2,3",
560 "UMask": "0x1",
561 "Errata": "HSD78",
562 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
563 "SampleAfterValue": "2000003",
564 "BriefDescription": "Cycles with pending L2 cache miss loads.",
565 "CounterMask": "1",
566 "CounterHTOff": "0,1,2,3,4,5,6,7"
567 },
568 {
569 "PublicDescription": "Cycles with pending L1 data cache miss loads. Set Cmask=8 to count cycle.",
570 "EventCode": "0xA3",
571 "Counter": "2",
572 "UMask": "0x8",
573 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
574 "SampleAfterValue": "2000003",
575 "BriefDescription": "Cycles with pending L1 cache miss loads.",
576 "CounterMask": "8",
577 "CounterHTOff": "2"
578 },
579 {
580 "PublicDescription": "Cycles with pending memory loads. Set Cmask=2 to count cycle.",
581 "EventCode": "0xA3",
582 "Counter": "0,1,2,3",
583 "UMask": "0x2",
584 "EventName": "CYCLE_ACTIVITY.CYCLES_LDM_PENDING",
585 "SampleAfterValue": "2000003",
586 "BriefDescription": "Cycles with pending memory loads.",
587 "CounterMask": "2",
588 "CounterHTOff": "0,1,2,3"
589 },
590 {
591 "PublicDescription": "This event counts cycles during which no instructions were executed in the execution stage of the pipeline.",
592 "EventCode": "0xA3",
593 "Counter": "0,1,2,3",
594 "UMask": "0x4",
595 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_EXECUTE",
596 "SampleAfterValue": "2000003",
597 "BriefDescription": "Total execution stalls",
598 "CounterMask": "4",
599 "CounterHTOff": "0,1,2,3"
600 },
601 {
602 "PublicDescription": "Number of loads missed L2.",
603 "EventCode": "0xA3",
604 "Counter": "0,1,2,3",
605 "UMask": "0x5",
606 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
607 "SampleAfterValue": "2000003",
608 "BriefDescription": "Execution stalls due to L2 cache misses.",
609 "CounterMask": "5",
610 "CounterHTOff": "0,1,2,3"
611 },
612 {
613 "PublicDescription": "This event counts cycles during which no instructions were executed in the execution stage of the pipeline and there were memory instructions pending (waiting for data).",
614 "EventCode": "0xA3",
615 "Counter": "0,1,2,3",
616 "UMask": "0x6",
617 "EventName": "CYCLE_ACTIVITY.STALLS_LDM_PENDING",
618 "SampleAfterValue": "2000003",
619 "BriefDescription": "Execution stalls due to memory subsystem.",
620 "CounterMask": "6",
621 "CounterHTOff": "0,1,2,3"
622 },
623 {
624 "PublicDescription": "Execution stalls due to L1 data cache miss loads. Set Cmask=0CH.",
625 "EventCode": "0xA3",
626 "Counter": "2",
627 "UMask": "0xc",
628 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
629 "SampleAfterValue": "2000003",
630 "BriefDescription": "Execution stalls due to L1 data cache misses",
631 "CounterMask": "12",
632 "CounterHTOff": "2"
633 },
634 {
635 "PublicDescription": "Number of uops delivered by the LSD.",
636 "EventCode": "0xa8",
637 "Counter": "0,1,2,3",
638 "UMask": "0x1",
639 "EventName": "LSD.UOPS",
640 "SampleAfterValue": "2000003",
641 "BriefDescription": "Number of Uops delivered by the LSD.",
642 "CounterHTOff": "0,1,2,3,4,5,6,7"
643 },
644 {
645 "PublicDescription": "Counts total number of uops to be executed per-core each cycle.",
646 "EventCode": "0xB1",
647 "Counter": "0,1,2,3",
648 "UMask": "0x2",
649 "Errata": "HSD30, HSM31",
650 "EventName": "UOPS_EXECUTED.CORE",
651 "SampleAfterValue": "2000003",
652 "BriefDescription": "Number of uops executed on the core.",
653 "CounterHTOff": "0,1,2,3,4,5,6,7"
654 },
655 {
656 "EventCode": "0xB1",
657 "Invert": "1",
658 "Counter": "0,1,2,3",
659 "UMask": "0x1",
660 "Errata": "HSD144, HSD30, HSM31",
661 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
662 "SampleAfterValue": "2000003",
663 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
664 "CounterMask": "1",
665 "CounterHTOff": "0,1,2,3"
666 },
667 {
668 "PublicDescription": "Number of instructions at retirement.",
669 "EventCode": "0xC0",
670 "Counter": "0,1,2,3",
671 "UMask": "0x0",
672 "Errata": "HSD11, HSD140",
673 "EventName": "INST_RETIRED.ANY_P",
674 "SampleAfterValue": "2000003",
675 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
676 "CounterHTOff": "0,1,2,3,4,5,6,7"
677 },
678 {
679 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts FP operations retired. For X87 FP operations that have no exceptions counting also includes flows that have several X87, or flows that use X87 uops in the exception handling.",
680 "EventCode": "0xC0",
681 "Counter": "0,1,2,3",
682 "UMask": "0x2",
683 "EventName": "INST_RETIRED.X87",
684 "SampleAfterValue": "2000003",
685 "BriefDescription": "FP operations retired. X87 FP operations that have no exceptions: Counts also flows that have several X87 or flows that use X87 uops in the exception handling.",
686 "CounterHTOff": "0,1,2,3,4,5,6,7"
687 },
688 {
689 "PEBS": "2",
690 "PublicDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution.",
691 "EventCode": "0xC0",
692 "Counter": "1",
693 "UMask": "0x1",
694 "Errata": "HSD140",
695 "EventName": "INST_RETIRED.PREC_DIST",
696 "SampleAfterValue": "2000003",
697 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
698 "CounterHTOff": "1"
699 },
700 {
701 "PublicDescription": "Number of microcode assists invoked by HW upon uop writeback.",
702 "EventCode": "0xC1",
703 "Counter": "0,1,2,3",
704 "UMask": "0x40",
705 "EventName": "OTHER_ASSISTS.ANY_WB_ASSIST",
706 "SampleAfterValue": "100003",
707 "BriefDescription": "Number of times any microcode assist is invoked by HW upon uop writeback.",
708 "CounterHTOff": "0,1,2,3,4,5,6,7"
709 },
710 {
711 "PEBS": "1",
712 "PublicDescription": "Counts the number of micro-ops retired. Use Cmask=1 and invert to count active cycles or stalled cycles.",
713 "EventCode": "0xC2",
714 "Counter": "0,1,2,3",
715 "UMask": "0x1",
716 "EventName": "UOPS_RETIRED.ALL",
717 "SampleAfterValue": "2000003",
718 "BriefDescription": "Actually retired uops.",
719 "CounterHTOff": "0,1,2,3,4,5,6,7",
720 "Data_LA": "1"
721 },
722 {
723 "PEBS": "1",
724 "PublicDescription": "This event counts the number of retirement slots used each cycle. There are potentially 4 slots that can be used each cycle - meaning, 4 uops or 4 instructions could retire each cycle.",
725 "EventCode": "0xC2",
726 "Counter": "0,1,2,3",
727 "UMask": "0x2",
728 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
729 "SampleAfterValue": "2000003",
730 "BriefDescription": "Retirement slots used.",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "EventCode": "0xC2",
735 "Invert": "1",
736 "Counter": "0,1,2,3",
737 "UMask": "0x1",
738 "EventName": "UOPS_RETIRED.STALL_CYCLES",
739 "SampleAfterValue": "2000003",
740 "BriefDescription": "Cycles without actually retired uops.",
741 "CounterMask": "1",
742 "CounterHTOff": "0,1,2,3"
743 },
744 {
745 "EventCode": "0xC2",
746 "Invert": "1",
747 "Counter": "0,1,2,3",
748 "UMask": "0x1",
749 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
750 "SampleAfterValue": "2000003",
751 "BriefDescription": "Cycles with less than 10 actually retired uops.",
752 "CounterMask": "10",
753 "CounterHTOff": "0,1,2,3"
754 },
755 {
756 "EventCode": "0xC2",
757 "Invert": "1",
758 "Counter": "0,1,2,3",
759 "UMask": "0x1",
760 "AnyThread": "1",
761 "EventName": "UOPS_RETIRED.CORE_STALL_CYCLES",
762 "SampleAfterValue": "2000003",
763 "BriefDescription": "Cycles without actually retired uops.",
764 "CounterMask": "1",
765 "CounterHTOff": "0,1,2,3"
766 },
767 {
768 "EventCode": "0xC3",
769 "Counter": "0,1,2,3",
770 "UMask": "0x1",
771 "EventName": "MACHINE_CLEARS.CYCLES",
772 "SampleAfterValue": "2000003",
773 "BriefDescription": "Cycles there was a Nuke. Account for both thread-specific and All Thread Nukes.",
774 "CounterHTOff": "0,1,2,3,4,5,6,7"
775 },
776 {
777 "PublicDescription": "This event is incremented when self-modifying code (SMC) is detected, which causes a machine clear. Machine clears can have a significant performance impact if they are happening frequently.",
778 "EventCode": "0xC3",
779 "Counter": "0,1,2,3",
780 "UMask": "0x4",
781 "EventName": "MACHINE_CLEARS.SMC",
782 "SampleAfterValue": "100003",
783 "BriefDescription": "Self-modifying code (SMC) detected.",
784 "CounterHTOff": "0,1,2,3,4,5,6,7"
785 },
786 {
787 "EventCode": "0xC3",
788 "Counter": "0,1,2,3",
789 "UMask": "0x20",
790 "EventName": "MACHINE_CLEARS.MASKMOV",
791 "SampleAfterValue": "100003",
792 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
793 "CounterHTOff": "0,1,2,3,4,5,6,7"
794 },
795 {
796 "PEBS": "1",
797 "PublicDescription": "Counts the number of conditional branch instructions retired.",
798 "EventCode": "0xC4",
799 "Counter": "0,1,2,3",
800 "UMask": "0x1",
801 "EventName": "BR_INST_RETIRED.CONDITIONAL",
802 "SampleAfterValue": "400009",
803 "BriefDescription": "Conditional branch instructions retired.",
804 "CounterHTOff": "0,1,2,3,4,5,6,7"
805 },
806 {
807 "PEBS": "1",
808 "EventCode": "0xC4",
809 "Counter": "0,1,2,3",
810 "UMask": "0x2",
811 "EventName": "BR_INST_RETIRED.NEAR_CALL",
812 "SampleAfterValue": "100003",
813 "BriefDescription": "Direct and indirect near call instructions retired.",
814 "CounterHTOff": "0,1,2,3,4,5,6,7"
815 },
816 {
817 "PublicDescription": "Branch instructions at retirement.",
818 "EventCode": "0xC4",
819 "Counter": "0,1,2,3",
820 "UMask": "0x0",
821 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
822 "SampleAfterValue": "400009",
823 "BriefDescription": "All (macro) branch instructions retired.",
824 "CounterHTOff": "0,1,2,3,4,5,6,7"
825 },
826 {
827 "PEBS": "1",
828 "PublicDescription": "Counts the number of near return instructions retired.",
829 "EventCode": "0xC4",
830 "Counter": "0,1,2,3",
831 "UMask": "0x8",
832 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
833 "SampleAfterValue": "100003",
834 "BriefDescription": "Return instructions retired.",
835 "CounterHTOff": "0,1,2,3,4,5,6,7"
836 },
837 {
838 "PublicDescription": "Counts the number of not taken branch instructions retired.",
839 "EventCode": "0xC4",
840 "Counter": "0,1,2,3",
841 "UMask": "0x10",
842 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
843 "SampleAfterValue": "400009",
844 "BriefDescription": "Not taken branch instructions retired.",
845 "CounterHTOff": "0,1,2,3,4,5,6,7"
846 },
847 {
848 "PEBS": "1",
849 "PublicDescription": "Number of near taken branches retired.",
850 "EventCode": "0xC4",
851 "Counter": "0,1,2,3",
852 "UMask": "0x20",
853 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
854 "SampleAfterValue": "400009",
855 "BriefDescription": "Taken branch instructions retired.",
856 "CounterHTOff": "0,1,2,3,4,5,6,7"
857 },
858 {
859 "PublicDescription": "Number of far branches retired.",
860 "EventCode": "0xC4",
861 "Counter": "0,1,2,3",
862 "UMask": "0x40",
863 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
864 "SampleAfterValue": "100003",
865 "BriefDescription": "Far branch instructions retired.",
866 "CounterHTOff": "0,1,2,3,4,5,6,7"
867 },
868 {
869 "PEBS": "2",
870 "EventCode": "0xC4",
871 "Counter": "0,1,2,3",
872 "UMask": "0x4",
873 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
874 "SampleAfterValue": "400009",
875 "BriefDescription": "All (macro) branch instructions retired.",
876 "CounterHTOff": "0,1,2,3"
877 },
878 {
879 "PEBS": "1",
880 "EventCode": "0xC5",
881 "Counter": "0,1,2,3",
882 "UMask": "0x1",
883 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
884 "SampleAfterValue": "400009",
885 "BriefDescription": "Mispredicted conditional branch instructions retired.",
886 "CounterHTOff": "0,1,2,3,4,5,6,7"
887 },
888 {
889 "PublicDescription": "Mispredicted branch instructions at retirement.",
890 "EventCode": "0xC5",
891 "Counter": "0,1,2,3",
892 "UMask": "0x0",
893 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
894 "SampleAfterValue": "400009",
895 "BriefDescription": "All mispredicted macro branch instructions retired.",
896 "CounterHTOff": "0,1,2,3,4,5,6,7"
897 },
898 {
899 "PEBS": "2",
900 "PublicDescription": "This event counts all mispredicted branch instructions retired. This is a precise event.",
901 "EventCode": "0xC5",
902 "Counter": "0,1,2,3",
903 "UMask": "0x4",
904 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
905 "SampleAfterValue": "400009",
906 "BriefDescription": "Mispredicted macro branch instructions retired. ",
907 "CounterHTOff": "0,1,2,3"
908 },
909 {
910 "PublicDescription": "Count cases of saving new LBR records by hardware.",
911 "EventCode": "0xCC",
912 "Counter": "0,1,2,3",
913 "UMask": "0x20",
914 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
915 "SampleAfterValue": "2000003",
916 "BriefDescription": "Count cases of saving new LBR",
917 "CounterHTOff": "0,1,2,3,4,5,6,7"
918 },
919 {
920 "PublicDescription": "Counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling.",
921 "EventCode": "0x3C",
922 "Counter": "0,1,2,3",
923 "UMask": "0x0",
924 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
925 "SampleAfterValue": "2000003",
926 "BriefDescription": "Thread cycles when thread is not in halt state",
927 "CounterHTOff": "0,1,2,3,4,5,6,7"
928 },
929 {
930 "EventCode": "0x89",
931 "Counter": "0,1,2,3",
932 "UMask": "0xa0",
933 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
934 "SampleAfterValue": "200003",
935 "BriefDescription": "Taken speculative and retired mispredicted indirect calls.",
936 "CounterHTOff": "0,1,2,3,4,5,6,7"
937 },
938 {
939 "EventCode": "0xA1",
940 "Counter": "0,1,2,3",
941 "UMask": "0x1",
942 "AnyThread": "1",
943 "EventName": "UOPS_EXECUTED_PORT.PORT_0_CORE",
944 "SampleAfterValue": "2000003",
945 "BriefDescription": "Cycles per core when uops are exectuted in port 0.",
946 "CounterHTOff": "0,1,2,3,4,5,6,7"
947 },
948 {
949 "EventCode": "0xA1",
950 "Counter": "0,1,2,3",
951 "UMask": "0x2",
952 "AnyThread": "1",
953 "EventName": "UOPS_EXECUTED_PORT.PORT_1_CORE",
954 "SampleAfterValue": "2000003",
955 "BriefDescription": "Cycles per core when uops are exectuted in port 1.",
956 "CounterHTOff": "0,1,2,3,4,5,6,7"
957 },
958 {
959 "EventCode": "0xA1",
960 "Counter": "0,1,2,3",
961 "UMask": "0x4",
962 "AnyThread": "1",
963 "EventName": "UOPS_EXECUTED_PORT.PORT_2_CORE",
964 "SampleAfterValue": "2000003",
965 "BriefDescription": "Cycles per core when uops are dispatched to port 2.",
966 "CounterHTOff": "0,1,2,3,4,5,6,7"
967 },
968 {
969 "EventCode": "0xA1",
970 "Counter": "0,1,2,3",
971 "UMask": "0x8",
972 "AnyThread": "1",
973 "EventName": "UOPS_EXECUTED_PORT.PORT_3_CORE",
974 "SampleAfterValue": "2000003",
975 "BriefDescription": "Cycles per core when uops are dispatched to port 3.",
976 "CounterHTOff": "0,1,2,3,4,5,6,7"
977 },
978 {
979 "EventCode": "0xA1",
980 "Counter": "0,1,2,3",
981 "UMask": "0x10",
982 "AnyThread": "1",
983 "EventName": "UOPS_EXECUTED_PORT.PORT_4_CORE",
984 "SampleAfterValue": "2000003",
985 "BriefDescription": "Cycles per core when uops are exectuted in port 4.",
986 "CounterHTOff": "0,1,2,3,4,5,6,7"
987 },
988 {
989 "EventCode": "0xA1",
990 "Counter": "0,1,2,3",
991 "UMask": "0x20",
992 "AnyThread": "1",
993 "EventName": "UOPS_EXECUTED_PORT.PORT_5_CORE",
994 "SampleAfterValue": "2000003",
995 "BriefDescription": "Cycles per core when uops are exectuted in port 5.",
996 "CounterHTOff": "0,1,2,3,4,5,6,7"
997 },
998 {
999 "EventCode": "0xA1",
1000 "Counter": "0,1,2,3",
1001 "UMask": "0x40",
1002 "AnyThread": "1",
1003 "EventName": "UOPS_EXECUTED_PORT.PORT_6_CORE",
1004 "SampleAfterValue": "2000003",
1005 "BriefDescription": "Cycles per core when uops are exectuted in port 6.",
1006 "CounterHTOff": "0,1,2,3,4,5,6,7"
1007 },
1008 {
1009 "EventCode": "0xA1",
1010 "Counter": "0,1,2,3",
1011 "UMask": "0x80",
1012 "AnyThread": "1",
1013 "EventName": "UOPS_EXECUTED_PORT.PORT_7_CORE",
1014 "SampleAfterValue": "2000003",
1015 "BriefDescription": "Cycles per core when uops are dispatched to port 7.",
1016 "CounterHTOff": "0,1,2,3,4,5,6,7"
1017 },
1018 {
1019 "PEBS": "1",
1020 "PublicDescription": "Number of near branch instructions retired that were taken but mispredicted.",
1021 "EventCode": "0xC5",
1022 "Counter": "0,1,2,3",
1023 "UMask": "0x20",
1024 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
1025 "SampleAfterValue": "400009",
1026 "BriefDescription": "number of near branch instructions retired that were mispredicted and taken.",
1027 "CounterHTOff": "0,1,2,3,4,5,6,7"
1028 },
1029 {
1030 "PublicDescription": "This events counts the cycles where at least one uop was executed. It is counted per thread.",
1031 "EventCode": "0xB1",
1032 "Counter": "0,1,2,3",
1033 "UMask": "0x1",
1034 "Errata": "HSD144, HSD30, HSM31",
1035 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
1036 "SampleAfterValue": "2000003",
1037 "BriefDescription": "Cycles where at least 1 uop was executed per-thread",
1038 "CounterMask": "1",
1039 "CounterHTOff": "0,1,2,3"
1040 },
1041 {
1042 "PublicDescription": "This events counts the cycles where at least two uop were executed. It is counted per thread.",
1043 "EventCode": "0xB1",
1044 "Counter": "0,1,2,3",
1045 "UMask": "0x1",
1046 "Errata": "HSD144, HSD30, HSM31",
1047 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
1048 "SampleAfterValue": "2000003",
1049 "BriefDescription": "Cycles where at least 2 uops were executed per-thread",
1050 "CounterMask": "2",
1051 "CounterHTOff": "0,1,2,3"
1052 },
1053 {
1054 "PublicDescription": "This events counts the cycles where at least three uop were executed. It is counted per thread.",
1055 "EventCode": "0xB1",
1056 "Counter": "0,1,2,3",
1057 "UMask": "0x1",
1058 "Errata": "HSD144, HSD30, HSM31",
1059 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
1060 "SampleAfterValue": "2000003",
1061 "BriefDescription": "Cycles where at least 3 uops were executed per-thread",
1062 "CounterMask": "3",
1063 "CounterHTOff": "0,1,2,3"
1064 },
1065 {
1066 "EventCode": "0xB1",
1067 "Counter": "0,1,2,3",
1068 "UMask": "0x1",
1069 "Errata": "HSD144, HSD30, HSM31",
1070 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
1071 "SampleAfterValue": "2000003",
1072 "BriefDescription": "Cycles where at least 4 uops were executed per-thread.",
1073 "CounterMask": "4",
1074 "CounterHTOff": "0,1,2,3"
1075 },
1076 {
1077 "PublicDescription": "Number of front end re-steers due to BPU misprediction.",
1078 "EventCode": "0xe6",
1079 "Counter": "0,1,2,3",
1080 "UMask": "0x1f",
1081 "EventName": "BACLEARS.ANY",
1082 "SampleAfterValue": "100003",
1083 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1084 "CounterHTOff": "0,1,2,3,4,5,6,7"
1085 },
1086 {
1087 "EventCode": "0xC3",
1088 "Counter": "0,1,2,3",
1089 "UMask": "0x1",
1090 "EdgeDetect": "1",
1091 "EventName": "MACHINE_CLEARS.COUNT",
1092 "SampleAfterValue": "100003",
1093 "BriefDescription": "Number of machine clears (nukes) of any type.",
1094 "CounterMask": "1",
1095 "CounterHTOff": "0,1,2,3,4,5,6,7"
1096 },
1097 {
1098 "EventCode": "0xA8",
1099 "Counter": "0,1,2,3",
1100 "UMask": "0x1",
1101 "EventName": "LSD.CYCLES_ACTIVE",
1102 "SampleAfterValue": "2000003",
1103 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
1104 "CounterMask": "1",
1105 "CounterHTOff": "0,1,2,3,4,5,6,7"
1106 },
1107 {
1108 "EventCode": "0xA8",
1109 "Counter": "0,1,2,3",
1110 "UMask": "0x1",
1111 "EventName": "LSD.CYCLES_4_UOPS",
1112 "SampleAfterValue": "2000003",
1113 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1114 "CounterMask": "4",
1115 "CounterHTOff": "0,1,2,3,4,5,6,7"
1116 },
1117 {
1118 "EventCode": "0x5E",
1119 "Invert": "1",
1120 "Counter": "0,1,2,3",
1121 "UMask": "0x1",
1122 "EdgeDetect": "1",
1123 "EventName": "RS_EVENTS.EMPTY_END",
1124 "SampleAfterValue": "200003",
1125 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1126 "CounterMask": "1",
1127 "CounterHTOff": "0,1,2,3,4,5,6,7"
1128 },
1129 {
1130 "EventCode": "0xA1",
1131 "Counter": "0,1,2,3",
1132 "UMask": "0x1",
1133 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
1134 "SampleAfterValue": "2000003",
1135 "BriefDescription": "Cycles per thread when uops are executed in port 0.",
1136 "CounterHTOff": "0,1,2,3,4,5,6,7"
1137 },
1138 {
1139 "EventCode": "0xA1",
1140 "Counter": "0,1,2,3",
1141 "UMask": "0x2",
1142 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
1143 "SampleAfterValue": "2000003",
1144 "BriefDescription": "Cycles per thread when uops are executed in port 1.",
1145 "CounterHTOff": "0,1,2,3,4,5,6,7"
1146 },
1147 {
1148 "EventCode": "0xA1",
1149 "Counter": "0,1,2,3",
1150 "UMask": "0x4",
1151 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
1152 "SampleAfterValue": "2000003",
1153 "BriefDescription": "Cycles per thread when uops are executed in port 2.",
1154 "CounterHTOff": "0,1,2,3,4,5,6,7"
1155 },
1156 {
1157 "EventCode": "0xA1",
1158 "Counter": "0,1,2,3",
1159 "UMask": "0x8",
1160 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
1161 "SampleAfterValue": "2000003",
1162 "BriefDescription": "Cycles per thread when uops are executed in port 3.",
1163 "CounterHTOff": "0,1,2,3,4,5,6,7"
1164 },
1165 {
1166 "EventCode": "0xA1",
1167 "Counter": "0,1,2,3",
1168 "UMask": "0x10",
1169 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
1170 "SampleAfterValue": "2000003",
1171 "BriefDescription": "Cycles per thread when uops are executed in port 4.",
1172 "CounterHTOff": "0,1,2,3,4,5,6,7"
1173 },
1174 {
1175 "EventCode": "0xA1",
1176 "Counter": "0,1,2,3",
1177 "UMask": "0x20",
1178 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
1179 "SampleAfterValue": "2000003",
1180 "BriefDescription": "Cycles per thread when uops are executed in port 5.",
1181 "CounterHTOff": "0,1,2,3,4,5,6,7"
1182 },
1183 {
1184 "EventCode": "0xA1",
1185 "Counter": "0,1,2,3",
1186 "UMask": "0x40",
1187 "EventName": "UOPS_DISPATCHED_PORT.PORT_6",
1188 "SampleAfterValue": "2000003",
1189 "BriefDescription": "Cycles per thread when uops are executed in port 6.",
1190 "CounterHTOff": "0,1,2,3,4,5,6,7"
1191 },
1192 {
1193 "EventCode": "0xA1",
1194 "Counter": "0,1,2,3",
1195 "UMask": "0x80",
1196 "EventName": "UOPS_DISPATCHED_PORT.PORT_7",
1197 "SampleAfterValue": "2000003",
1198 "BriefDescription": "Cycles per thread when uops are executed in port 7.",
1199 "CounterHTOff": "0,1,2,3,4,5,6,7"
1200 },
1201 {
1202 "EventCode": "0x00",
1203 "Counter": "Fixed counter 2",
1204 "UMask": "0x2",
1205 "AnyThread": "1",
1206 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1207 "SampleAfterValue": "2000003",
1208 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1209 "CounterHTOff": "Fixed counter 2"
1210 },
1211 {
1212 "EventCode": "0x3C",
1213 "Counter": "0,1,2,3",
1214 "UMask": "0x0",
1215 "AnyThread": "1",
1216 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1217 "SampleAfterValue": "2000003",
1218 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1219 "CounterHTOff": "0,1,2,3,4,5,6,7"
1220 },
1221 {
1222 "PublicDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1223 "EventCode": "0x3C",
1224 "Counter": "0,1,2,3",
1225 "UMask": "0x1",
1226 "AnyThread": "1",
1227 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1228 "SampleAfterValue": "2000003",
1229 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate)",
1230 "CounterHTOff": "0,1,2,3,4,5,6,7"
1231 },
1232 {
1233 "PublicDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1234 "EventCode": "0x0D",
1235 "Counter": "0,1,2,3",
1236 "UMask": "0x3",
1237 "AnyThread": "1",
1238 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1239 "SampleAfterValue": "2000003",
1240 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke)",
1241 "CounterMask": "1",
1242 "CounterHTOff": "0,1,2,3,4,5,6,7"
1243 },
1244 {
1245 "EventCode": "0xb1",
1246 "Counter": "0,1,2,3",
1247 "UMask": "0x2",
1248 "Errata": "HSD30, HSM31",
1249 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1250 "SampleAfterValue": "2000003",
1251 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1252 "CounterMask": "1",
1253 "CounterHTOff": "0,1,2,3,4,5,6,7"
1254 },
1255 {
1256 "EventCode": "0xb1",
1257 "Counter": "0,1,2,3",
1258 "UMask": "0x2",
1259 "Errata": "HSD30, HSM31",
1260 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1261 "SampleAfterValue": "2000003",
1262 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1263 "CounterMask": "2",
1264 "CounterHTOff": "0,1,2,3,4,5,6,7"
1265 },
1266 {
1267 "EventCode": "0xb1",
1268 "Counter": "0,1,2,3",
1269 "UMask": "0x2",
1270 "Errata": "HSD30, HSM31",
1271 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1272 "SampleAfterValue": "2000003",
1273 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1274 "CounterMask": "3",
1275 "CounterHTOff": "0,1,2,3,4,5,6,7"
1276 },
1277 {
1278 "EventCode": "0xb1",
1279 "Counter": "0,1,2,3",
1280 "UMask": "0x2",
1281 "Errata": "HSD30, HSM31",
1282 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1283 "SampleAfterValue": "2000003",
1284 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1285 "CounterMask": "4",
1286 "CounterHTOff": "0,1,2,3,4,5,6,7"
1287 },
1288 {
1289 "EventCode": "0xb1",
1290 "Invert": "1",
1291 "Counter": "0,1,2,3",
1292 "UMask": "0x2",
1293 "Errata": "HSD30, HSM31",
1294 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1295 "SampleAfterValue": "2000003",
1296 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1297 "CounterHTOff": "0,1,2,3,4,5,6,7"
1298 },
1299 {
1300 "PublicDescription": "Reference cycles when the thread is unhalted. (counts at 100 MHz rate)",
1301 "EventCode": "0x3C",
1302 "Counter": "0,1,2,3",
1303 "UMask": "0x1",
1304 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1305 "SampleAfterValue": "2000003",
1306 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1307 "CounterHTOff": "0,1,2,3,4,5,6,7"
1308 },
1309 {
1310 "PublicDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1311 "EventCode": "0x3C",
1312 "Counter": "0,1,2,3",
1313 "UMask": "0x1",
1314 "AnyThread": "1",
1315 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1316 "SampleAfterValue": "2000003",
1317 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate)",
1318 "CounterHTOff": "0,1,2,3,4,5,6,7"
1319 },
1320 {
1321 "EventCode": "0x3C",
1322 "Counter": "0,1,2,3",
1323 "UMask": "0x2",
1324 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1325 "SampleAfterValue": "2000003",
1326 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1327 "CounterHTOff": "0,1,2,3,4,5,6,7"
1328 }
1329] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswell/virtual-memory.json b/tools/perf/pmu-events/arch/x86/haswell/virtual-memory.json
new file mode 100644
index 000000000000..ce80a08d0f08
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswell/virtual-memory.json
@@ -0,0 +1,484 @@
1[
2 {
3 "PublicDescription": "Misses in all TLB levels that cause a page walk of any page size.",
4 "EventCode": "0x08",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Load misses in all DTLB levels that cause page walks",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Completed page walks due to demand load misses that caused 4K page walks in any TLB levels.",
14 "EventCode": "0x08",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (4K).",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Completed page walks due to demand load misses that caused 2M/4M page walks in any TLB levels.",
24 "EventCode": "0x08",
25 "Counter": "0,1,2,3",
26 "UMask": "0x4",
27 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (2M/4M).",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x08",
34 "Counter": "0,1,2,3",
35 "UMask": "0x8",
36 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1G",
37 "SampleAfterValue": "2000003",
38 "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (1G)",
39 "CounterHTOff": "0,1,2,3,4,5,6,7"
40 },
41 {
42 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by DTLB load misses.",
43 "EventCode": "0x08",
44 "Counter": "0,1,2,3",
45 "UMask": "0x10",
46 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
47 "SampleAfterValue": "2000003",
48 "BriefDescription": "Cycles when PMH is busy with page walks",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "PublicDescription": "This event counts load operations from a 4K page that miss the first DTLB level but hit the second and do not cause page walks.",
53 "EventCode": "0x08",
54 "Counter": "0,1,2,3",
55 "UMask": "0x20",
56 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_4K",
57 "SampleAfterValue": "2000003",
58 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (4K)",
59 "CounterHTOff": "0,1,2,3,4,5,6,7"
60 },
61 {
62 "PublicDescription": "This event counts load operations from a 2M page that miss the first DTLB level but hit the second and do not cause page walks.",
63 "EventCode": "0x08",
64 "Counter": "0,1,2,3",
65 "UMask": "0x40",
66 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_2M",
67 "SampleAfterValue": "2000003",
68 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (2M)",
69 "CounterHTOff": "0,1,2,3,4,5,6,7"
70 },
71 {
72 "PublicDescription": "DTLB demand load misses with low part of linear-to-physical address translation missed.",
73 "EventCode": "0x08",
74 "Counter": "0,1,2,3",
75 "UMask": "0x80",
76 "EventName": "DTLB_LOAD_MISSES.PDE_CACHE_MISS",
77 "SampleAfterValue": "100003",
78 "BriefDescription": "DTLB demand load misses with low part of linear-to-physical address translation missed",
79 "CounterHTOff": "0,1,2,3,4,5,6,7"
80 },
81 {
82 "PublicDescription": "Miss in all TLB levels causes a page walk of any page size (4K/2M/4M/1G).",
83 "EventCode": "0x49",
84 "Counter": "0,1,2,3",
85 "UMask": "0x1",
86 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
87 "SampleAfterValue": "100003",
88 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
89 "CounterHTOff": "0,1,2,3,4,5,6,7"
90 },
91 {
92 "PublicDescription": "Completed page walks due to store misses in one or more TLB levels of 4K page structure.",
93 "EventCode": "0x49",
94 "Counter": "0,1,2,3",
95 "UMask": "0x2",
96 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
97 "SampleAfterValue": "100003",
98 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (4K)",
99 "CounterHTOff": "0,1,2,3,4,5,6,7"
100 },
101 {
102 "PublicDescription": "Completed page walks due to store misses in one or more TLB levels of 2M/4M page structure.",
103 "EventCode": "0x49",
104 "Counter": "0,1,2,3",
105 "UMask": "0x4",
106 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
107 "SampleAfterValue": "100003",
108 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (2M/4M)",
109 "CounterHTOff": "0,1,2,3,4,5,6,7"
110 },
111 {
112 "EventCode": "0x49",
113 "Counter": "0,1,2,3",
114 "UMask": "0x8",
115 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1G",
116 "SampleAfterValue": "100003",
117 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks. (1G)",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by DTLB store misses.",
122 "EventCode": "0x49",
123 "Counter": "0,1,2,3",
124 "UMask": "0x10",
125 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
126 "SampleAfterValue": "100003",
127 "BriefDescription": "Cycles when PMH is busy with page walks",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "PublicDescription": "This event counts store operations from a 4K page that miss the first DTLB level but hit the second and do not cause page walks.",
132 "EventCode": "0x49",
133 "Counter": "0,1,2,3",
134 "UMask": "0x20",
135 "EventName": "DTLB_STORE_MISSES.STLB_HIT_4K",
136 "SampleAfterValue": "100003",
137 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (4K)",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "This event counts store operations from a 2M page that miss the first DTLB level but hit the second and do not cause page walks.",
142 "EventCode": "0x49",
143 "Counter": "0,1,2,3",
144 "UMask": "0x40",
145 "EventName": "DTLB_STORE_MISSES.STLB_HIT_2M",
146 "SampleAfterValue": "100003",
147 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (2M)",
148 "CounterHTOff": "0,1,2,3,4,5,6,7"
149 },
150 {
151 "PublicDescription": "DTLB store misses with low part of linear-to-physical address translation missed.",
152 "EventCode": "0x49",
153 "Counter": "0,1,2,3",
154 "UMask": "0x80",
155 "EventName": "DTLB_STORE_MISSES.PDE_CACHE_MISS",
156 "SampleAfterValue": "100003",
157 "BriefDescription": "DTLB store misses with low part of linear-to-physical address translation missed",
158 "CounterHTOff": "0,1,2,3,4,5,6,7"
159 },
160 {
161 "EventCode": "0x4f",
162 "Counter": "0,1,2,3",
163 "UMask": "0x10",
164 "EventName": "EPT.WALK_CYCLES",
165 "SampleAfterValue": "2000003",
166 "BriefDescription": "Cycle count for an Extended Page table walk.",
167 "CounterHTOff": "0,1,2,3,4,5,6,7"
168 },
169 {
170 "PublicDescription": "Misses in ITLB that causes a page walk of any page size.",
171 "EventCode": "0x85",
172 "Counter": "0,1,2,3",
173 "UMask": "0x1",
174 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
175 "SampleAfterValue": "100003",
176 "BriefDescription": "Misses at all ITLB levels that cause page walks",
177 "CounterHTOff": "0,1,2,3,4,5,6,7"
178 },
179 {
180 "PublicDescription": "Completed page walks due to misses in ITLB 4K page entries.",
181 "EventCode": "0x85",
182 "Counter": "0,1,2,3",
183 "UMask": "0x2",
184 "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
185 "SampleAfterValue": "100003",
186 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (4K)",
187 "CounterHTOff": "0,1,2,3,4,5,6,7"
188 },
189 {
190 "PublicDescription": "Completed page walks due to misses in ITLB 2M/4M page entries.",
191 "EventCode": "0x85",
192 "Counter": "0,1,2,3",
193 "UMask": "0x4",
194 "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
195 "SampleAfterValue": "100003",
196 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (2M/4M)",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "EventCode": "0x85",
201 "Counter": "0,1,2,3",
202 "UMask": "0x8",
203 "EventName": "ITLB_MISSES.WALK_COMPLETED_1G",
204 "SampleAfterValue": "100003",
205 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (1G)",
206 "CounterHTOff": "0,1,2,3,4,5,6,7"
207 },
208 {
209 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by ITLB misses.",
210 "EventCode": "0x85",
211 "Counter": "0,1,2,3",
212 "UMask": "0x10",
213 "EventName": "ITLB_MISSES.WALK_DURATION",
214 "SampleAfterValue": "100003",
215 "BriefDescription": "Cycles when PMH is busy with page walks",
216 "CounterHTOff": "0,1,2,3,4,5,6,7"
217 },
218 {
219 "PublicDescription": "ITLB misses that hit STLB (4K).",
220 "EventCode": "0x85",
221 "Counter": "0,1,2,3",
222 "UMask": "0x20",
223 "EventName": "ITLB_MISSES.STLB_HIT_4K",
224 "SampleAfterValue": "100003",
225 "BriefDescription": "Core misses that miss the DTLB and hit the STLB (4K)",
226 "CounterHTOff": "0,1,2,3,4,5,6,7"
227 },
228 {
229 "PublicDescription": "ITLB misses that hit STLB (2M).",
230 "EventCode": "0x85",
231 "Counter": "0,1,2,3",
232 "UMask": "0x40",
233 "EventName": "ITLB_MISSES.STLB_HIT_2M",
234 "SampleAfterValue": "100003",
235 "BriefDescription": "Code misses that miss the DTLB and hit the STLB (2M)",
236 "CounterHTOff": "0,1,2,3,4,5,6,7"
237 },
238 {
239 "PublicDescription": "Counts the number of ITLB flushes, includes 4k/2M/4M pages.",
240 "EventCode": "0xae",
241 "Counter": "0,1,2,3",
242 "UMask": "0x1",
243 "EventName": "ITLB.ITLB_FLUSH",
244 "SampleAfterValue": "100003",
245 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
246 "CounterHTOff": "0,1,2,3,4,5,6,7"
247 },
248 {
249 "PublicDescription": "Number of DTLB page walker loads that hit in the L1+FB.",
250 "EventCode": "0xBC",
251 "Counter": "0,1,2,3",
252 "UMask": "0x11",
253 "EventName": "PAGE_WALKER_LOADS.DTLB_L1",
254 "SampleAfterValue": "2000003",
255 "BriefDescription": "Number of DTLB page walker hits in the L1+FB",
256 "CounterHTOff": "0,1,2,3"
257 },
258 {
259 "PublicDescription": "Number of ITLB page walker loads that hit in the L1+FB.",
260 "EventCode": "0xBC",
261 "Counter": "0,1,2,3",
262 "UMask": "0x21",
263 "EventName": "PAGE_WALKER_LOADS.ITLB_L1",
264 "SampleAfterValue": "2000003",
265 "BriefDescription": "Number of ITLB page walker hits in the L1+FB",
266 "CounterHTOff": "0,1,2,3"
267 },
268 {
269 "EventCode": "0xBC",
270 "Counter": "0,1,2,3",
271 "UMask": "0x41",
272 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_L1",
273 "SampleAfterValue": "2000003",
274 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in the L1 and FB.",
275 "CounterHTOff": "0,1,2,3"
276 },
277 {
278 "EventCode": "0xBC",
279 "Counter": "0,1,2,3",
280 "UMask": "0x81",
281 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_L1",
282 "SampleAfterValue": "2000003",
283 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in the L1 and FB.",
284 "CounterHTOff": "0,1,2,3"
285 },
286 {
287 "PublicDescription": "Number of DTLB page walker loads that hit in the L2.",
288 "EventCode": "0xBC",
289 "Counter": "0,1,2,3",
290 "UMask": "0x12",
291 "EventName": "PAGE_WALKER_LOADS.DTLB_L2",
292 "SampleAfterValue": "2000003",
293 "BriefDescription": "Number of DTLB page walker hits in the L2",
294 "CounterHTOff": "0,1,2,3"
295 },
296 {
297 "PublicDescription": "Number of ITLB page walker loads that hit in the L2.",
298 "EventCode": "0xBC",
299 "Counter": "0,1,2,3",
300 "UMask": "0x22",
301 "EventName": "PAGE_WALKER_LOADS.ITLB_L2",
302 "SampleAfterValue": "2000003",
303 "BriefDescription": "Number of ITLB page walker hits in the L2",
304 "CounterHTOff": "0,1,2,3"
305 },
306 {
307 "EventCode": "0xBC",
308 "Counter": "0,1,2,3",
309 "UMask": "0x42",
310 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_L2",
311 "SampleAfterValue": "2000003",
312 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in the L2.",
313 "CounterHTOff": "0,1,2,3"
314 },
315 {
316 "EventCode": "0xBC",
317 "Counter": "0,1,2,3",
318 "UMask": "0x82",
319 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_L2",
320 "SampleAfterValue": "2000003",
321 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in the L2.",
322 "CounterHTOff": "0,1,2,3"
323 },
324 {
325 "PublicDescription": "Number of DTLB page walker loads that hit in the L3.",
326 "EventCode": "0xBC",
327 "Counter": "0,1,2,3",
328 "UMask": "0x14",
329 "Errata": "HSD25",
330 "EventName": "PAGE_WALKER_LOADS.DTLB_L3",
331 "SampleAfterValue": "2000003",
332 "BriefDescription": "Number of DTLB page walker hits in the L3 + XSNP",
333 "CounterHTOff": "0,1,2,3"
334 },
335 {
336 "PublicDescription": "Number of ITLB page walker loads that hit in the L3.",
337 "EventCode": "0xBC",
338 "Counter": "0,1,2,3",
339 "UMask": "0x24",
340 "Errata": "HSD25",
341 "EventName": "PAGE_WALKER_LOADS.ITLB_L3",
342 "SampleAfterValue": "2000003",
343 "BriefDescription": "Number of ITLB page walker hits in the L3 + XSNP",
344 "CounterHTOff": "0,1,2,3"
345 },
346 {
347 "EventCode": "0xBC",
348 "Counter": "0,1,2,3",
349 "UMask": "0x44",
350 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_L3",
351 "SampleAfterValue": "2000003",
352 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in the L3.",
353 "CounterHTOff": "0,1,2,3"
354 },
355 {
356 "EventCode": "0xBC",
357 "Counter": "0,1,2,3",
358 "UMask": "0x84",
359 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_L3",
360 "SampleAfterValue": "2000003",
361 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in the L2.",
362 "CounterHTOff": "0,1,2,3"
363 },
364 {
365 "PublicDescription": "Number of DTLB page walker loads from memory.",
366 "EventCode": "0xBC",
367 "Counter": "0,1,2,3",
368 "UMask": "0x18",
369 "Errata": "HSD25",
370 "EventName": "PAGE_WALKER_LOADS.DTLB_MEMORY",
371 "SampleAfterValue": "2000003",
372 "BriefDescription": "Number of DTLB page walker hits in Memory",
373 "CounterHTOff": "0,1,2,3"
374 },
375 {
376 "PublicDescription": "Number of ITLB page walker loads from memory.",
377 "EventCode": "0xBC",
378 "Counter": "0,1,2,3",
379 "UMask": "0x28",
380 "Errata": "HSD25",
381 "EventName": "PAGE_WALKER_LOADS.ITLB_MEMORY",
382 "SampleAfterValue": "2000003",
383 "BriefDescription": "Number of ITLB page walker hits in Memory",
384 "CounterHTOff": "0,1,2,3"
385 },
386 {
387 "EventCode": "0xBC",
388 "Counter": "0,1,2,3",
389 "UMask": "0x48",
390 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_MEMORY",
391 "SampleAfterValue": "2000003",
392 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in memory.",
393 "CounterHTOff": "0,1,2,3"
394 },
395 {
396 "EventCode": "0xBC",
397 "Counter": "0,1,2,3",
398 "UMask": "0x88",
399 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_MEMORY",
400 "SampleAfterValue": "2000003",
401 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in memory.",
402 "CounterHTOff": "0,1,2,3"
403 },
404 {
405 "PublicDescription": "DTLB flush attempts of the thread-specific entries.",
406 "EventCode": "0xBD",
407 "Counter": "0,1,2,3",
408 "UMask": "0x1",
409 "EventName": "TLB_FLUSH.DTLB_THREAD",
410 "SampleAfterValue": "100003",
411 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
412 "CounterHTOff": "0,1,2,3,4,5,6,7"
413 },
414 {
415 "PublicDescription": "Count number of STLB flush attempts.",
416 "EventCode": "0xBD",
417 "Counter": "0,1,2,3",
418 "UMask": "0x20",
419 "EventName": "TLB_FLUSH.STLB_ANY",
420 "SampleAfterValue": "100003",
421 "BriefDescription": "STLB flush attempts",
422 "CounterHTOff": "0,1,2,3,4,5,6,7"
423 },
424 {
425 "PublicDescription": "Completed page walks in any TLB of any page size due to demand load misses.",
426 "EventCode": "0x08",
427 "Counter": "0,1,2,3",
428 "UMask": "0xe",
429 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
430 "SampleAfterValue": "100003",
431 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
432 "CounterHTOff": "0,1,2,3,4,5,6,7"
433 },
434 {
435 "PublicDescription": "Number of cache load STLB hits. No page walk.",
436 "EventCode": "0x08",
437 "Counter": "0,1,2,3",
438 "UMask": "0x60",
439 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
440 "SampleAfterValue": "2000003",
441 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks",
442 "CounterHTOff": "0,1,2,3,4,5,6,7"
443 },
444 {
445 "PublicDescription": "Completed page walks due to store miss in any TLB levels of any page size (4K/2M/4M/1G).",
446 "EventCode": "0x49",
447 "Counter": "0,1,2,3",
448 "UMask": "0xe",
449 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
450 "SampleAfterValue": "100003",
451 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks",
452 "CounterHTOff": "0,1,2,3,4,5,6,7"
453 },
454 {
455 "PublicDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
456 "EventCode": "0x49",
457 "Counter": "0,1,2,3",
458 "UMask": "0x60",
459 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
460 "SampleAfterValue": "100003",
461 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks",
462 "CounterHTOff": "0,1,2,3,4,5,6,7"
463 },
464 {
465 "PublicDescription": "Completed page walks in ITLB of any page size.",
466 "EventCode": "0x85",
467 "Counter": "0,1,2,3",
468 "UMask": "0xe",
469 "EventName": "ITLB_MISSES.WALK_COMPLETED",
470 "SampleAfterValue": "100003",
471 "BriefDescription": "Misses in all ITLB levels that cause completed page walks",
472 "CounterHTOff": "0,1,2,3,4,5,6,7"
473 },
474 {
475 "PublicDescription": "ITLB misses that hit STLB. No page walk.",
476 "EventCode": "0x85",
477 "Counter": "0,1,2,3",
478 "UMask": "0x60",
479 "EventName": "ITLB_MISSES.STLB_HIT",
480 "SampleAfterValue": "100003",
481 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks",
482 "CounterHTOff": "0,1,2,3,4,5,6,7"
483 }
484] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/cache.json b/tools/perf/pmu-events/arch/x86/haswellx/cache.json
new file mode 100644
index 000000000000..f1bae0817a6f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/cache.json
@@ -0,0 +1,1077 @@
1[
2 {
3 "EventCode": "0x24",
4 "UMask": "0x21",
5 "BriefDescription": "Demand Data Read miss L2, no rejects",
6 "Counter": "0,1,2,3",
7 "EventName": "L2_RQSTS.DEMAND_DATA_RD_MISS",
8 "Errata": "HSD78",
9 "PublicDescription": "Demand data read requests that missed L2, no rejects.",
10 "SampleAfterValue": "200003",
11 "CounterHTOff": "0,1,2,3,4,5,6,7"
12 },
13 {
14 "EventCode": "0x24",
15 "UMask": "0x41",
16 "BriefDescription": "Demand Data Read requests that hit L2 cache",
17 "Counter": "0,1,2,3",
18 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
19 "Errata": "HSD78",
20 "PublicDescription": "Demand data read requests that hit L2 cache.",
21 "SampleAfterValue": "200003",
22 "CounterHTOff": "0,1,2,3,4,5,6,7"
23 },
24 {
25 "EventCode": "0x24",
26 "UMask": "0x30",
27 "BriefDescription": "L2 prefetch requests that miss L2 cache",
28 "Counter": "0,1,2,3",
29 "EventName": "L2_RQSTS.L2_PF_MISS",
30 "PublicDescription": "Counts all L2 HW prefetcher requests that missed L2.",
31 "SampleAfterValue": "200003",
32 "CounterHTOff": "0,1,2,3,4,5,6,7"
33 },
34 {
35 "EventCode": "0x24",
36 "UMask": "0x50",
37 "BriefDescription": "L2 prefetch requests that hit L2 cache",
38 "Counter": "0,1,2,3",
39 "EventName": "L2_RQSTS.L2_PF_HIT",
40 "PublicDescription": "Counts all L2 HW prefetcher requests that hit L2.",
41 "SampleAfterValue": "200003",
42 "CounterHTOff": "0,1,2,3,4,5,6,7"
43 },
44 {
45 "EventCode": "0x24",
46 "UMask": "0xe1",
47 "BriefDescription": "Demand Data Read requests",
48 "Counter": "0,1,2,3",
49 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
50 "Errata": "HSD78",
51 "PublicDescription": "Counts any demand and L1 HW prefetch data load requests to L2.",
52 "SampleAfterValue": "200003",
53 "CounterHTOff": "0,1,2,3,4,5,6,7"
54 },
55 {
56 "EventCode": "0x24",
57 "UMask": "0xe2",
58 "BriefDescription": "RFO requests to L2 cache",
59 "Counter": "0,1,2,3",
60 "EventName": "L2_RQSTS.ALL_RFO",
61 "PublicDescription": "Counts all L2 store RFO requests.",
62 "SampleAfterValue": "200003",
63 "CounterHTOff": "0,1,2,3,4,5,6,7"
64 },
65 {
66 "EventCode": "0x24",
67 "UMask": "0xe4",
68 "BriefDescription": "L2 code requests",
69 "Counter": "0,1,2,3",
70 "EventName": "L2_RQSTS.ALL_CODE_RD",
71 "PublicDescription": "Counts all L2 code requests.",
72 "SampleAfterValue": "200003",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "EventCode": "0x24",
77 "UMask": "0xf8",
78 "BriefDescription": "Requests from L2 hardware prefetchers",
79 "Counter": "0,1,2,3",
80 "EventName": "L2_RQSTS.ALL_PF",
81 "PublicDescription": "Counts all L2 HW prefetcher requests.",
82 "SampleAfterValue": "200003",
83 "CounterHTOff": "0,1,2,3,4,5,6,7"
84 },
85 {
86 "EventCode": "0x27",
87 "UMask": "0x50",
88 "BriefDescription": "Not rejected writebacks that hit L2 cache",
89 "Counter": "0,1,2,3",
90 "EventName": "L2_DEMAND_RQSTS.WB_HIT",
91 "PublicDescription": "Not rejected writebacks that hit L2 cache.",
92 "SampleAfterValue": "200003",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "EventCode": "0x2E",
97 "UMask": "0x41",
98 "BriefDescription": "Core-originated cacheable demand requests missed L3",
99 "Counter": "0,1,2,3",
100 "EventName": "LONGEST_LAT_CACHE.MISS",
101 "PublicDescription": "This event counts each cache miss condition for references to the last level cache.",
102 "SampleAfterValue": "100003",
103 "CounterHTOff": "0,1,2,3,4,5,6,7"
104 },
105 {
106 "EventCode": "0x2E",
107 "UMask": "0x4f",
108 "BriefDescription": "Core-originated cacheable demand requests that refer to L3",
109 "Counter": "0,1,2,3",
110 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
111 "PublicDescription": "This event counts requests originating from the core that reference a cache line in the last level cache.",
112 "SampleAfterValue": "100003",
113 "CounterHTOff": "0,1,2,3,4,5,6,7"
114 },
115 {
116 "EventCode": "0x48",
117 "UMask": "0x1",
118 "BriefDescription": "L1D miss oustandings duration in cycles",
119 "Counter": "2",
120 "EventName": "L1D_PEND_MISS.PENDING",
121 "PublicDescription": "Increments the number of outstanding L1D misses every cycle. Set Cmask = 1 and Edge =1 to count occurrences.",
122 "SampleAfterValue": "2000003",
123 "CounterHTOff": "2"
124 },
125 {
126 "EventCode": "0x48",
127 "UMask": "0x2",
128 "BriefDescription": "Number of times a request needed a FB entry but there was no entry available for it. That is the FB unavailability was dominant reason for blocking the request. A request includes cacheable/uncacheable demands that is load, store or SW prefetch. HWP are e.",
129 "Counter": "0,1,2,3",
130 "EventName": "L1D_PEND_MISS.REQUEST_FB_FULL",
131 "SampleAfterValue": "2000003",
132 "CounterHTOff": "0,1,2,3,4,5,6,7"
133 },
134 {
135 "EventCode": "0x48",
136 "UMask": "0x1",
137 "BriefDescription": "Cycles with L1D load Misses outstanding.",
138 "Counter": "2",
139 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
140 "CounterMask": "1",
141 "SampleAfterValue": "2000003",
142 "CounterHTOff": "2"
143 },
144 {
145 "EventCode": "0x51",
146 "UMask": "0x1",
147 "BriefDescription": "L1D data line replacements",
148 "Counter": "0,1,2,3",
149 "EventName": "L1D.REPLACEMENT",
150 "PublicDescription": "This event counts when new data lines are brought into the L1 Data cache, which cause other lines to be evicted from the cache.",
151 "SampleAfterValue": "2000003",
152 "CounterHTOff": "0,1,2,3,4,5,6,7"
153 },
154 {
155 "EventCode": "0x60",
156 "UMask": "0x1",
157 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
158 "Counter": "0,1,2,3",
159 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
160 "Errata": "HSD78, HSD62, HSD61",
161 "PublicDescription": "Offcore outstanding demand data read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
162 "SampleAfterValue": "2000003",
163 "CounterHTOff": "0,1,2,3,4,5,6,7"
164 },
165 {
166 "EventCode": "0x60",
167 "UMask": "0x2",
168 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
169 "Counter": "0,1,2,3",
170 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
171 "Errata": "HSD62, HSD61",
172 "PublicDescription": "Offcore outstanding Demand code Read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
173 "SampleAfterValue": "2000003",
174 "CounterHTOff": "0,1,2,3,4,5,6,7"
175 },
176 {
177 "EventCode": "0x60",
178 "UMask": "0x4",
179 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore",
180 "Counter": "0,1,2,3",
181 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
182 "Errata": "HSD62, HSD61",
183 "PublicDescription": "Offcore outstanding RFO store transactions in SQ to uncore. Set Cmask=1 to count cycles.",
184 "SampleAfterValue": "2000003",
185 "CounterHTOff": "0,1,2,3,4,5,6,7"
186 },
187 {
188 "EventCode": "0x60",
189 "UMask": "0x8",
190 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
191 "Counter": "0,1,2,3",
192 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
193 "Errata": "HSD62, HSD61",
194 "PublicDescription": "Offcore outstanding cacheable data read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
195 "SampleAfterValue": "2000003",
196 "CounterHTOff": "0,1,2,3,4,5,6,7"
197 },
198 {
199 "EventCode": "0x60",
200 "UMask": "0x1",
201 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
202 "Counter": "0,1,2,3",
203 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
204 "CounterMask": "1",
205 "Errata": "HSD78, HSD62, HSD61",
206 "SampleAfterValue": "2000003",
207 "CounterHTOff": "0,1,2,3,4,5,6,7"
208 },
209 {
210 "EventCode": "0x60",
211 "UMask": "0x8",
212 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
213 "Counter": "0,1,2,3",
214 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
215 "CounterMask": "1",
216 "Errata": "HSD62, HSD61",
217 "SampleAfterValue": "2000003",
218 "CounterHTOff": "0,1,2,3,4,5,6,7"
219 },
220 {
221 "EventCode": "0x60",
222 "UMask": "0x4",
223 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
224 "Counter": "0,1,2,3",
225 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
226 "CounterMask": "1",
227 "Errata": "HSD62, HSD61",
228 "SampleAfterValue": "2000003",
229 "CounterHTOff": "0,1,2,3,4,5,6,7"
230 },
231 {
232 "EventCode": "0x63",
233 "UMask": "0x2",
234 "BriefDescription": "Cycles when L1D is locked",
235 "Counter": "0,1,2,3",
236 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
237 "PublicDescription": "Cycles in which the L1D is locked.",
238 "SampleAfterValue": "2000003",
239 "CounterHTOff": "0,1,2,3,4,5,6,7"
240 },
241 {
242 "EventCode": "0xB0",
243 "UMask": "0x1",
244 "BriefDescription": "Demand Data Read requests sent to uncore",
245 "Counter": "0,1,2,3",
246 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
247 "Errata": "HSD78",
248 "PublicDescription": "Demand data read requests sent to uncore.",
249 "SampleAfterValue": "100003",
250 "CounterHTOff": "0,1,2,3,4,5,6,7"
251 },
252 {
253 "EventCode": "0xB0",
254 "UMask": "0x2",
255 "BriefDescription": "Cacheable and noncachaeble code read requests",
256 "Counter": "0,1,2,3",
257 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
258 "PublicDescription": "Demand code read requests sent to uncore.",
259 "SampleAfterValue": "100003",
260 "CounterHTOff": "0,1,2,3,4,5,6,7"
261 },
262 {
263 "EventCode": "0xB0",
264 "UMask": "0x4",
265 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
266 "Counter": "0,1,2,3",
267 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
268 "PublicDescription": "Demand RFO read requests sent to uncore, including regular RFOs, locks, ItoM.",
269 "SampleAfterValue": "100003",
270 "CounterHTOff": "0,1,2,3,4,5,6,7"
271 },
272 {
273 "EventCode": "0xB0",
274 "UMask": "0x8",
275 "BriefDescription": "Demand and prefetch data reads",
276 "Counter": "0,1,2,3",
277 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
278 "PublicDescription": "Data read requests sent to uncore (demand and prefetch).",
279 "SampleAfterValue": "100003",
280 "CounterHTOff": "0,1,2,3,4,5,6,7"
281 },
282 {
283 "EventCode": "0xb2",
284 "UMask": "0x1",
285 "BriefDescription": "Offcore requests buffer cannot take more entries for this thread core.",
286 "Counter": "0,1,2,3",
287 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
288 "SampleAfterValue": "2000003",
289 "CounterHTOff": "0,1,2,3,4,5,6,7"
290 },
291 {
292 "EventCode": "0xD0",
293 "UMask": "0x11",
294 "BriefDescription": "Retired load uops that miss the STLB.",
295 "Data_LA": "1",
296 "PEBS": "1",
297 "Counter": "0,1,2,3",
298 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
299 "Errata": "HSD29, HSM30",
300 "SampleAfterValue": "100003",
301 "CounterHTOff": "0,1,2,3"
302 },
303 {
304 "EventCode": "0xD0",
305 "UMask": "0x12",
306 "BriefDescription": "Retired store uops that miss the STLB.",
307 "Data_LA": "1",
308 "PEBS": "1",
309 "Counter": "0,1,2,3",
310 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
311 "Errata": "HSD29, HSM30",
312 "SampleAfterValue": "100003",
313 "L1_Hit_Indication": "1",
314 "CounterHTOff": "0,1,2,3"
315 },
316 {
317 "EventCode": "0xD0",
318 "UMask": "0x21",
319 "BriefDescription": "Retired load uops with locked access.",
320 "Data_LA": "1",
321 "PEBS": "1",
322 "Counter": "0,1,2,3",
323 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
324 "Errata": "HSD76, HSD29, HSM30",
325 "SampleAfterValue": "100003",
326 "CounterHTOff": "0,1,2,3"
327 },
328 {
329 "EventCode": "0xD0",
330 "UMask": "0x41",
331 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
332 "Data_LA": "1",
333 "PEBS": "1",
334 "Counter": "0,1,2,3",
335 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
336 "Errata": "HSD29, HSM30",
337 "SampleAfterValue": "100003",
338 "CounterHTOff": "0,1,2,3"
339 },
340 {
341 "EventCode": "0xD0",
342 "UMask": "0x42",
343 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
344 "Data_LA": "1",
345 "PEBS": "1",
346 "Counter": "0,1,2,3",
347 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
348 "Errata": "HSD29, HSM30",
349 "SampleAfterValue": "100003",
350 "L1_Hit_Indication": "1",
351 "CounterHTOff": "0,1,2,3"
352 },
353 {
354 "EventCode": "0xD0",
355 "UMask": "0x81",
356 "BriefDescription": "All retired load uops.",
357 "Data_LA": "1",
358 "PEBS": "1",
359 "Counter": "0,1,2,3",
360 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
361 "Errata": "HSD29, HSM30",
362 "SampleAfterValue": "2000003",
363 "CounterHTOff": "0,1,2,3"
364 },
365 {
366 "EventCode": "0xD0",
367 "UMask": "0x82",
368 "BriefDescription": "All retired store uops.",
369 "Data_LA": "1",
370 "PEBS": "1",
371 "Counter": "0,1,2,3",
372 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
373 "Errata": "HSD29, HSM30",
374 "SampleAfterValue": "2000003",
375 "L1_Hit_Indication": "1",
376 "CounterHTOff": "0,1,2,3"
377 },
378 {
379 "EventCode": "0xD1",
380 "UMask": "0x1",
381 "BriefDescription": "Retired load uops with L1 cache hits as data sources.",
382 "Data_LA": "1",
383 "PEBS": "1",
384 "Counter": "0,1,2,3",
385 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
386 "Errata": "HSD29, HSM30",
387 "SampleAfterValue": "2000003",
388 "CounterHTOff": "0,1,2,3"
389 },
390 {
391 "EventCode": "0xD1",
392 "UMask": "0x2",
393 "BriefDescription": "Retired load uops with L2 cache hits as data sources.",
394 "Data_LA": "1",
395 "PEBS": "1",
396 "Counter": "0,1,2,3",
397 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
398 "Errata": "HSD76, HSD29, HSM30",
399 "SampleAfterValue": "100003",
400 "CounterHTOff": "0,1,2,3"
401 },
402 {
403 "EventCode": "0xD1",
404 "UMask": "0x4",
405 "BriefDescription": "Retired load uops which data sources were data hits in L3 without snoops required.",
406 "Data_LA": "1",
407 "PEBS": "1",
408 "Counter": "0,1,2,3",
409 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_HIT",
410 "Errata": "HSD74, HSD29, HSD25, HSM26, HSM30",
411 "PublicDescription": "Retired load uops with L3 cache hits as data sources.",
412 "SampleAfterValue": "50021",
413 "CounterHTOff": "0,1,2,3"
414 },
415 {
416 "EventCode": "0xD1",
417 "UMask": "0x8",
418 "BriefDescription": "Retired load uops misses in L1 cache as data sources.",
419 "Data_LA": "1",
420 "PEBS": "1",
421 "Counter": "0,1,2,3",
422 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
423 "Errata": "HSM30",
424 "PublicDescription": "Retired load uops missed L1 cache as data sources.",
425 "SampleAfterValue": "100003",
426 "CounterHTOff": "0,1,2,3"
427 },
428 {
429 "EventCode": "0xD1",
430 "UMask": "0x10",
431 "BriefDescription": "Miss in mid-level (L2) cache. Excludes Unknown data-source.",
432 "Data_LA": "1",
433 "PEBS": "1",
434 "Counter": "0,1,2,3",
435 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
436 "Errata": "HSD29, HSM30",
437 "PublicDescription": "Retired load uops missed L2. Unknown data source excluded.",
438 "SampleAfterValue": "50021",
439 "CounterHTOff": "0,1,2,3"
440 },
441 {
442 "EventCode": "0xD1",
443 "UMask": "0x20",
444 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
445 "Data_LA": "1",
446 "PEBS": "1",
447 "Counter": "0,1,2,3",
448 "EventName": "MEM_LOAD_UOPS_RETIRED.L3_MISS",
449 "Errata": "HSD74, HSD29, HSD25, HSM26, HSM30",
450 "PublicDescription": "Retired load uops missed L3. Excludes unknown data source .",
451 "SampleAfterValue": "100003",
452 "CounterHTOff": "0,1,2,3"
453 },
454 {
455 "EventCode": "0xD1",
456 "UMask": "0x40",
457 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
458 "Data_LA": "1",
459 "PEBS": "1",
460 "Counter": "0,1,2,3",
461 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
462 "Errata": "HSM30",
463 "SampleAfterValue": "100003",
464 "CounterHTOff": "0,1,2,3"
465 },
466 {
467 "EventCode": "0xD2",
468 "UMask": "0x1",
469 "BriefDescription": "Retired load uops which data sources were L3 hit and cross-core snoop missed in on-pkg core cache.",
470 "Data_LA": "1",
471 "PEBS": "1",
472 "Counter": "0,1,2,3",
473 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS",
474 "Errata": "HSD29, HSD25, HSM26, HSM30",
475 "SampleAfterValue": "20011",
476 "CounterHTOff": "0,1,2,3"
477 },
478 {
479 "EventCode": "0xD2",
480 "UMask": "0x2",
481 "BriefDescription": "Retired load uops which data sources were L3 and cross-core snoop hits in on-pkg core cache.",
482 "Data_LA": "1",
483 "PEBS": "1",
484 "Counter": "0,1,2,3",
485 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT",
486 "Errata": "HSD29, HSD25, HSM26, HSM30",
487 "SampleAfterValue": "20011",
488 "CounterHTOff": "0,1,2,3"
489 },
490 {
491 "EventCode": "0xD2",
492 "UMask": "0x4",
493 "BriefDescription": "Retired load uops which data sources were HitM responses from shared L3.",
494 "Data_LA": "1",
495 "PEBS": "1",
496 "Counter": "0,1,2,3",
497 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM",
498 "Errata": "HSD29, HSD25, HSM26, HSM30",
499 "SampleAfterValue": "20011",
500 "CounterHTOff": "0,1,2,3"
501 },
502 {
503 "EventCode": "0xD2",
504 "UMask": "0x8",
505 "BriefDescription": "Retired load uops which data sources were hits in L3 without snoops required.",
506 "Data_LA": "1",
507 "PEBS": "1",
508 "Counter": "0,1,2,3",
509 "EventName": "MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_NONE",
510 "Errata": "HSD74, HSD29, HSD25, HSM26, HSM30",
511 "SampleAfterValue": "100003",
512 "CounterHTOff": "0,1,2,3"
513 },
514 {
515 "EventCode": "0xD3",
516 "UMask": "0x1",
517 "BriefDescription": "Data from local DRAM either Snoop not needed or Snoop Miss (RspI)",
518 "Data_LA": "1",
519 "PEBS": "1",
520 "Counter": "0,1,2,3",
521 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM",
522 "Errata": "HSD74, HSD29, HSD25, HSM30",
523 "PublicDescription": "This event counts retired load uops where the data came from local DRAM. This does not include hardware prefetches.",
524 "SampleAfterValue": "100003",
525 "CounterHTOff": "0,1,2,3"
526 },
527 {
528 "EventCode": "0xD3",
529 "UMask": "0x4",
530 "BriefDescription": "Retired load uop whose Data Source was: remote DRAM either Snoop not needed or Snoop Miss (RspI)",
531 "Data_LA": "1",
532 "PEBS": "1",
533 "Counter": "0,1,2,3",
534 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM",
535 "Errata": "HSD29, HSM30",
536 "SampleAfterValue": "100003",
537 "CounterHTOff": "0,1,2,3"
538 },
539 {
540 "EventCode": "0xD3",
541 "UMask": "0x10",
542 "BriefDescription": "Retired load uop whose Data Source was: Remote cache HITM",
543 "Data_LA": "1",
544 "PEBS": "1",
545 "Counter": "0,1,2,3",
546 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM",
547 "Errata": "HSM30",
548 "SampleAfterValue": "100003",
549 "CounterHTOff": "0,1,2,3"
550 },
551 {
552 "EventCode": "0xD3",
553 "UMask": "0x20",
554 "BriefDescription": "Retired load uop whose Data Source was: forwarded from remote cache",
555 "Data_LA": "1",
556 "PEBS": "1",
557 "Counter": "0,1,2,3",
558 "EventName": "MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD",
559 "Errata": "HSM30",
560 "SampleAfterValue": "100003",
561 "CounterHTOff": "0,1,2,3"
562 },
563 {
564 "EventCode": "0xf0",
565 "UMask": "0x1",
566 "BriefDescription": "Demand Data Read requests that access L2 cache",
567 "Counter": "0,1,2,3",
568 "EventName": "L2_TRANS.DEMAND_DATA_RD",
569 "PublicDescription": "Demand data read requests that access L2 cache.",
570 "SampleAfterValue": "200003",
571 "CounterHTOff": "0,1,2,3,4,5,6,7"
572 },
573 {
574 "EventCode": "0xf0",
575 "UMask": "0x2",
576 "BriefDescription": "RFO requests that access L2 cache",
577 "Counter": "0,1,2,3",
578 "EventName": "L2_TRANS.RFO",
579 "PublicDescription": "RFO requests that access L2 cache.",
580 "SampleAfterValue": "200003",
581 "CounterHTOff": "0,1,2,3,4,5,6,7"
582 },
583 {
584 "EventCode": "0xf0",
585 "UMask": "0x4",
586 "BriefDescription": "L2 cache accesses when fetching instructions",
587 "Counter": "0,1,2,3",
588 "EventName": "L2_TRANS.CODE_RD",
589 "PublicDescription": "L2 cache accesses when fetching instructions.",
590 "SampleAfterValue": "200003",
591 "CounterHTOff": "0,1,2,3,4,5,6,7"
592 },
593 {
594 "EventCode": "0xf0",
595 "UMask": "0x8",
596 "BriefDescription": "L2 or L3 HW prefetches that access L2 cache",
597 "Counter": "0,1,2,3",
598 "EventName": "L2_TRANS.ALL_PF",
599 "PublicDescription": "Any MLC or L3 HW prefetch accessing L2, including rejects.",
600 "SampleAfterValue": "200003",
601 "CounterHTOff": "0,1,2,3,4,5,6,7"
602 },
603 {
604 "EventCode": "0xf0",
605 "UMask": "0x10",
606 "BriefDescription": "L1D writebacks that access L2 cache",
607 "Counter": "0,1,2,3",
608 "EventName": "L2_TRANS.L1D_WB",
609 "PublicDescription": "L1D writebacks that access L2 cache.",
610 "SampleAfterValue": "200003",
611 "CounterHTOff": "0,1,2,3,4,5,6,7"
612 },
613 {
614 "EventCode": "0xf0",
615 "UMask": "0x20",
616 "BriefDescription": "L2 fill requests that access L2 cache",
617 "Counter": "0,1,2,3",
618 "EventName": "L2_TRANS.L2_FILL",
619 "PublicDescription": "L2 fill requests that access L2 cache.",
620 "SampleAfterValue": "200003",
621 "CounterHTOff": "0,1,2,3,4,5,6,7"
622 },
623 {
624 "EventCode": "0xf0",
625 "UMask": "0x40",
626 "BriefDescription": "L2 writebacks that access L2 cache",
627 "Counter": "0,1,2,3",
628 "EventName": "L2_TRANS.L2_WB",
629 "PublicDescription": "L2 writebacks that access L2 cache.",
630 "SampleAfterValue": "200003",
631 "CounterHTOff": "0,1,2,3,4,5,6,7"
632 },
633 {
634 "EventCode": "0xf0",
635 "UMask": "0x80",
636 "BriefDescription": "Transactions accessing L2 pipe",
637 "Counter": "0,1,2,3",
638 "EventName": "L2_TRANS.ALL_REQUESTS",
639 "PublicDescription": "Transactions accessing L2 pipe.",
640 "SampleAfterValue": "200003",
641 "CounterHTOff": "0,1,2,3,4,5,6,7"
642 },
643 {
644 "EventCode": "0xF1",
645 "UMask": "0x1",
646 "BriefDescription": "L2 cache lines in I state filling L2",
647 "Counter": "0,1,2,3",
648 "EventName": "L2_LINES_IN.I",
649 "PublicDescription": "L2 cache lines in I state filling L2.",
650 "SampleAfterValue": "100003",
651 "CounterHTOff": "0,1,2,3,4,5,6,7"
652 },
653 {
654 "EventCode": "0xF1",
655 "UMask": "0x2",
656 "BriefDescription": "L2 cache lines in S state filling L2",
657 "Counter": "0,1,2,3",
658 "EventName": "L2_LINES_IN.S",
659 "PublicDescription": "L2 cache lines in S state filling L2.",
660 "SampleAfterValue": "100003",
661 "CounterHTOff": "0,1,2,3,4,5,6,7"
662 },
663 {
664 "EventCode": "0xF1",
665 "UMask": "0x4",
666 "BriefDescription": "L2 cache lines in E state filling L2",
667 "Counter": "0,1,2,3",
668 "EventName": "L2_LINES_IN.E",
669 "PublicDescription": "L2 cache lines in E state filling L2.",
670 "SampleAfterValue": "100003",
671 "CounterHTOff": "0,1,2,3,4,5,6,7"
672 },
673 {
674 "EventCode": "0xF1",
675 "UMask": "0x7",
676 "BriefDescription": "L2 cache lines filling L2",
677 "Counter": "0,1,2,3",
678 "EventName": "L2_LINES_IN.ALL",
679 "PublicDescription": "This event counts the number of L2 cache lines brought into the L2 cache. Lines are filled into the L2 cache when there was an L2 miss.",
680 "SampleAfterValue": "100003",
681 "CounterHTOff": "0,1,2,3,4,5,6,7"
682 },
683 {
684 "EventCode": "0xF2",
685 "UMask": "0x5",
686 "BriefDescription": "Clean L2 cache lines evicted by demand",
687 "Counter": "0,1,2,3",
688 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
689 "PublicDescription": "Clean L2 cache lines evicted by demand.",
690 "SampleAfterValue": "100003",
691 "CounterHTOff": "0,1,2,3,4,5,6,7"
692 },
693 {
694 "EventCode": "0xF2",
695 "UMask": "0x6",
696 "BriefDescription": "Dirty L2 cache lines evicted by demand",
697 "Counter": "0,1,2,3",
698 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
699 "PublicDescription": "Dirty L2 cache lines evicted by demand.",
700 "SampleAfterValue": "100003",
701 "CounterHTOff": "0,1,2,3,4,5,6,7"
702 },
703 {
704 "EventCode": "0xf4",
705 "UMask": "0x10",
706 "BriefDescription": "Split locks in SQ",
707 "Counter": "0,1,2,3",
708 "EventName": "SQ_MISC.SPLIT_LOCK",
709 "SampleAfterValue": "100003",
710 "CounterHTOff": "0,1,2,3,4,5,6,7"
711 },
712 {
713 "EventCode": "0x24",
714 "UMask": "0x42",
715 "BriefDescription": "RFO requests that hit L2 cache",
716 "Counter": "0,1,2,3",
717 "EventName": "L2_RQSTS.RFO_HIT",
718 "PublicDescription": "Counts the number of store RFO requests that hit the L2 cache.",
719 "SampleAfterValue": "200003",
720 "CounterHTOff": "0,1,2,3,4,5,6,7"
721 },
722 {
723 "EventCode": "0x24",
724 "UMask": "0x22",
725 "BriefDescription": "RFO requests that miss L2 cache",
726 "Counter": "0,1,2,3",
727 "EventName": "L2_RQSTS.RFO_MISS",
728 "PublicDescription": "Counts the number of store RFO requests that miss the L2 cache.",
729 "SampleAfterValue": "200003",
730 "CounterHTOff": "0,1,2,3,4,5,6,7"
731 },
732 {
733 "EventCode": "0x24",
734 "UMask": "0x44",
735 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
736 "Counter": "0,1,2,3",
737 "EventName": "L2_RQSTS.CODE_RD_HIT",
738 "PublicDescription": "Number of instruction fetches that hit the L2 cache.",
739 "SampleAfterValue": "200003",
740 "CounterHTOff": "0,1,2,3,4,5,6,7"
741 },
742 {
743 "EventCode": "0x24",
744 "UMask": "0x24",
745 "BriefDescription": "L2 cache misses when fetching instructions",
746 "Counter": "0,1,2,3",
747 "EventName": "L2_RQSTS.CODE_RD_MISS",
748 "PublicDescription": "Number of instruction fetches that missed the L2 cache.",
749 "SampleAfterValue": "200003",
750 "CounterHTOff": "0,1,2,3,4,5,6,7"
751 },
752 {
753 "EventCode": "0x24",
754 "UMask": "0x27",
755 "BriefDescription": "Demand requests that miss L2 cache",
756 "Counter": "0,1,2,3",
757 "EventName": "L2_RQSTS.ALL_DEMAND_MISS",
758 "Errata": "HSD78",
759 "PublicDescription": "Demand requests that miss L2 cache.",
760 "SampleAfterValue": "200003",
761 "CounterHTOff": "0,1,2,3,4,5,6,7"
762 },
763 {
764 "EventCode": "0x24",
765 "UMask": "0xe7",
766 "BriefDescription": "Demand requests to L2 cache",
767 "Counter": "0,1,2,3",
768 "EventName": "L2_RQSTS.ALL_DEMAND_REFERENCES",
769 "Errata": "HSD78",
770 "PublicDescription": "Demand requests to L2 cache.",
771 "SampleAfterValue": "200003",
772 "CounterHTOff": "0,1,2,3,4,5,6,7"
773 },
774 {
775 "EventCode": "0x24",
776 "UMask": "0x3f",
777 "BriefDescription": "All requests that miss L2 cache",
778 "Counter": "0,1,2,3",
779 "EventName": "L2_RQSTS.MISS",
780 "Errata": "HSD78",
781 "PublicDescription": "All requests that missed L2.",
782 "SampleAfterValue": "200003",
783 "CounterHTOff": "0,1,2,3,4,5,6,7"
784 },
785 {
786 "EventCode": "0x24",
787 "UMask": "0xff",
788 "BriefDescription": "All L2 requests",
789 "Counter": "0,1,2,3",
790 "EventName": "L2_RQSTS.REFERENCES",
791 "Errata": "HSD78",
792 "PublicDescription": "All requests to L2 cache.",
793 "SampleAfterValue": "200003",
794 "CounterHTOff": "0,1,2,3,4,5,6,7"
795 },
796 {
797 "EventCode": "0xB7, 0xBB",
798 "UMask": "0x1",
799 "BriefDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction.",
800 "Counter": "0,1,2,3",
801 "EventName": "OFFCORE_RESPONSE",
802 "SampleAfterValue": "100003",
803 "CounterHTOff": "0,1,2,3"
804 },
805 {
806 "EventCode": "0x60",
807 "UMask": "0x1",
808 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
809 "Counter": "0,1,2,3",
810 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
811 "CounterMask": "6",
812 "Errata": "HSD78, HSD62, HSD61",
813 "SampleAfterValue": "2000003",
814 "CounterHTOff": "0,1,2,3,4,5,6,7"
815 },
816 {
817 "EventCode": "0x48",
818 "UMask": "0x1",
819 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
820 "Counter": "2",
821 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
822 "AnyThread": "1",
823 "CounterMask": "1",
824 "SampleAfterValue": "2000003",
825 "CounterHTOff": "2"
826 },
827 {
828 "EventCode": "0x48",
829 "UMask": "0x2",
830 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
831 "Counter": "0,1,2,3",
832 "EventName": "L1D_PEND_MISS.FB_FULL",
833 "CounterMask": "1",
834 "SampleAfterValue": "2000003",
835 "CounterHTOff": "0,1,2,3,4,5,6,7"
836 },
837 {
838 "Offcore": "1",
839 "EventCode": "0xB7, 0xBB",
840 "UMask": "0x1",
841 "BriefDescription": "Counts demand data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
842 "MSRValue": "0x04003c0001",
843 "Counter": "0,1,2,3",
844 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
845 "MSRIndex": "0x1a6,0x1a7",
846 "SampleAfterValue": "100003",
847 "CounterHTOff": "0,1,2,3"
848 },
849 {
850 "Offcore": "1",
851 "EventCode": "0xB7, 0xBB",
852 "UMask": "0x1",
853 "BriefDescription": "Counts demand data reads that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
854 "MSRValue": "0x10003c0001",
855 "Counter": "0,1,2,3",
856 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
857 "MSRIndex": "0x1a6,0x1a7",
858 "SampleAfterValue": "100003",
859 "CounterHTOff": "0,1,2,3"
860 },
861 {
862 "Offcore": "1",
863 "EventCode": "0xB7, 0xBB",
864 "UMask": "0x1",
865 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
866 "MSRValue": "0x04003c0002",
867 "Counter": "0,1,2,3",
868 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
869 "MSRIndex": "0x1a6,0x1a7",
870 "SampleAfterValue": "100003",
871 "CounterHTOff": "0,1,2,3"
872 },
873 {
874 "Offcore": "1",
875 "EventCode": "0xB7, 0xBB",
876 "UMask": "0x1",
877 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
878 "MSRValue": "0x10003c0002",
879 "Counter": "0,1,2,3",
880 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE",
881 "MSRIndex": "0x1a6,0x1a7",
882 "SampleAfterValue": "100003",
883 "CounterHTOff": "0,1,2,3"
884 },
885 {
886 "Offcore": "1",
887 "EventCode": "0xB7, 0xBB",
888 "UMask": "0x1",
889 "BriefDescription": "Counts all demand code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
890 "MSRValue": "0x04003c0004",
891 "Counter": "0,1,2,3",
892 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
893 "MSRIndex": "0x1a6,0x1a7",
894 "SampleAfterValue": "100003",
895 "CounterHTOff": "0,1,2,3"
896 },
897 {
898 "Offcore": "1",
899 "EventCode": "0xB7, 0xBB",
900 "UMask": "0x1",
901 "BriefDescription": "Counts all demand code reads that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
902 "MSRValue": "0x10003c0004",
903 "Counter": "0,1,2,3",
904 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.HITM_OTHER_CORE",
905 "MSRIndex": "0x1a6,0x1a7",
906 "SampleAfterValue": "100003",
907 "CounterHTOff": "0,1,2,3"
908 },
909 {
910 "Offcore": "1",
911 "EventCode": "0xB7, 0xBB",
912 "UMask": "0x1",
913 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the L3",
914 "MSRValue": "0x3f803c0010",
915 "Counter": "0,1,2,3",
916 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.ANY_RESPONSE",
917 "MSRIndex": "0x1a6,0x1a7",
918 "SampleAfterValue": "100003",
919 "CounterHTOff": "0,1,2,3"
920 },
921 {
922 "Offcore": "1",
923 "EventCode": "0xB7, 0xBB",
924 "UMask": "0x1",
925 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the L3",
926 "MSRValue": "0x3f803c0020",
927 "Counter": "0,1,2,3",
928 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_HIT.ANY_RESPONSE",
929 "MSRIndex": "0x1a6,0x1a7",
930 "SampleAfterValue": "100003",
931 "CounterHTOff": "0,1,2,3"
932 },
933 {
934 "Offcore": "1",
935 "EventCode": "0xB7, 0xBB",
936 "UMask": "0x1",
937 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the L3",
938 "MSRValue": "0x3f803c0040",
939 "Counter": "0,1,2,3",
940 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.ANY_RESPONSE",
941 "MSRIndex": "0x1a6,0x1a7",
942 "SampleAfterValue": "100003",
943 "CounterHTOff": "0,1,2,3"
944 },
945 {
946 "Offcore": "1",
947 "EventCode": "0xB7, 0xBB",
948 "UMask": "0x1",
949 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3",
950 "MSRValue": "0x3f803c0080",
951 "Counter": "0,1,2,3",
952 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.ANY_RESPONSE",
953 "MSRIndex": "0x1a6,0x1a7",
954 "SampleAfterValue": "100003",
955 "CounterHTOff": "0,1,2,3"
956 },
957 {
958 "Offcore": "1",
959 "EventCode": "0xB7, 0xBB",
960 "UMask": "0x1",
961 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3",
962 "MSRValue": "0x3f803c0100",
963 "Counter": "0,1,2,3",
964 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_HIT.ANY_RESPONSE",
965 "MSRIndex": "0x1a6,0x1a7",
966 "SampleAfterValue": "100003",
967 "CounterHTOff": "0,1,2,3"
968 },
969 {
970 "Offcore": "1",
971 "EventCode": "0xB7, 0xBB",
972 "UMask": "0x1",
973 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the L3",
974 "MSRValue": "0x3f803c0200",
975 "Counter": "0,1,2,3",
976 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.ANY_RESPONSE",
977 "MSRIndex": "0x1a6,0x1a7",
978 "SampleAfterValue": "100003",
979 "CounterHTOff": "0,1,2,3"
980 },
981 {
982 "Offcore": "1",
983 "EventCode": "0xB7, 0xBB",
984 "UMask": "0x1",
985 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
986 "MSRValue": "0x04003c0091",
987 "Counter": "0,1,2,3",
988 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
989 "MSRIndex": "0x1a6,0x1a7",
990 "SampleAfterValue": "100003",
991 "CounterHTOff": "0,1,2,3"
992 },
993 {
994 "Offcore": "1",
995 "EventCode": "0xB7, 0xBB",
996 "UMask": "0x1",
997 "BriefDescription": "Counts all demand & prefetch data reads that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
998 "MSRValue": "0x10003c0091",
999 "Counter": "0,1,2,3",
1000 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1001 "MSRIndex": "0x1a6,0x1a7",
1002 "SampleAfterValue": "100003",
1003 "CounterHTOff": "0,1,2,3"
1004 },
1005 {
1006 "Offcore": "1",
1007 "EventCode": "0xB7, 0xBB",
1008 "UMask": "0x1",
1009 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1010 "MSRValue": "0x04003c0122",
1011 "Counter": "0,1,2,3",
1012 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1013 "MSRIndex": "0x1a6,0x1a7",
1014 "SampleAfterValue": "100003",
1015 "CounterHTOff": "0,1,2,3"
1016 },
1017 {
1018 "Offcore": "1",
1019 "EventCode": "0xB7, 0xBB",
1020 "UMask": "0x1",
1021 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1022 "MSRValue": "0x10003c0122",
1023 "Counter": "0,1,2,3",
1024 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.HITM_OTHER_CORE",
1025 "MSRIndex": "0x1a6,0x1a7",
1026 "SampleAfterValue": "100003",
1027 "CounterHTOff": "0,1,2,3"
1028 },
1029 {
1030 "Offcore": "1",
1031 "EventCode": "0xB7, 0xBB",
1032 "UMask": "0x1",
1033 "BriefDescription": "Counts all demand & prefetch code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1034 "MSRValue": "0x04003c0244",
1035 "Counter": "0,1,2,3",
1036 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1037 "MSRIndex": "0x1a6,0x1a7",
1038 "SampleAfterValue": "100003",
1039 "CounterHTOff": "0,1,2,3"
1040 },
1041 {
1042 "Offcore": "1",
1043 "EventCode": "0xB7, 0xBB",
1044 "UMask": "0x1",
1045 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1046 "MSRValue": "0x04003c07f7",
1047 "Counter": "0,1,2,3",
1048 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1049 "MSRIndex": "0x1a6,0x1a7",
1050 "SampleAfterValue": "100003",
1051 "CounterHTOff": "0,1,2,3"
1052 },
1053 {
1054 "Offcore": "1",
1055 "EventCode": "0xB7, 0xBB",
1056 "UMask": "0x1",
1057 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the L3 and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1058 "MSRValue": "0x10003c07f7",
1059 "Counter": "0,1,2,3",
1060 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HITM_OTHER_CORE",
1061 "MSRIndex": "0x1a6,0x1a7",
1062 "SampleAfterValue": "100003",
1063 "CounterHTOff": "0,1,2,3"
1064 },
1065 {
1066 "Offcore": "1",
1067 "EventCode": "0xB7, 0xBB",
1068 "UMask": "0x1",
1069 "BriefDescription": "Counts all requests that hit in the L3",
1070 "MSRValue": "0x3f803c8fff",
1071 "Counter": "0,1,2,3",
1072 "EventName": "OFFCORE_RESPONSE.ALL_REQUESTS.LLC_HIT.ANY_RESPONSE",
1073 "MSRIndex": "0x1a6,0x1a7",
1074 "SampleAfterValue": "100003",
1075 "CounterHTOff": "0,1,2,3"
1076 }
1077] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/floating-point.json b/tools/perf/pmu-events/arch/x86/haswellx/floating-point.json
new file mode 100644
index 000000000000..6282aed6e090
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/floating-point.json
@@ -0,0 +1,83 @@
1[
2 {
3 "EventCode": "0xC1",
4 "UMask": "0x8",
5 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
6 "Counter": "0,1,2,3",
7 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
8 "Errata": "HSD56, HSM57",
9 "SampleAfterValue": "100003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0xC1",
14 "UMask": "0x10",
15 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
16 "Counter": "0,1,2,3",
17 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
18 "Errata": "HSD56, HSM57",
19 "SampleAfterValue": "100003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0xCA",
24 "UMask": "0x2",
25 "BriefDescription": "Number of X87 assists due to output value.",
26 "Counter": "0,1,2,3",
27 "EventName": "FP_ASSIST.X87_OUTPUT",
28 "PublicDescription": "Number of X87 FP assists due to output values.",
29 "SampleAfterValue": "100003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0xCA",
34 "UMask": "0x4",
35 "BriefDescription": "Number of X87 assists due to input value.",
36 "Counter": "0,1,2,3",
37 "EventName": "FP_ASSIST.X87_INPUT",
38 "PublicDescription": "Number of X87 FP assists due to input values.",
39 "SampleAfterValue": "100003",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0xCA",
44 "UMask": "0x8",
45 "BriefDescription": "Number of SIMD FP assists due to Output values",
46 "Counter": "0,1,2,3",
47 "EventName": "FP_ASSIST.SIMD_OUTPUT",
48 "PublicDescription": "Number of SIMD FP assists due to output values.",
49 "SampleAfterValue": "100003",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "EventCode": "0xCA",
54 "UMask": "0x10",
55 "BriefDescription": "Number of SIMD FP assists due to input values",
56 "Counter": "0,1,2,3",
57 "EventName": "FP_ASSIST.SIMD_INPUT",
58 "PublicDescription": "Number of SIMD FP assists due to input values.",
59 "SampleAfterValue": "100003",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "EventCode": "0xCA",
64 "UMask": "0x1e",
65 "BriefDescription": "Cycles with any input/output SSE or FP assist",
66 "Counter": "0,1,2,3",
67 "EventName": "FP_ASSIST.ANY",
68 "CounterMask": "1",
69 "PublicDescription": "Cycles with any input/output SSE* or FP assists.",
70 "SampleAfterValue": "100003",
71 "CounterHTOff": "0,1,2,3"
72 },
73 {
74 "EventCode": "0xC6",
75 "UMask": "0x7",
76 "BriefDescription": "Approximate counts of AVX & AVX2 256-bit instructions, including non-arithmetic instructions, loads, and stores. May count non-AVX instructions that employ 256-bit operations, including (but not necessarily limited to) rep string instructions that use 256-bit loads and stores for optimized performance, XSAVE* and XRSTOR*, and operations that transition the x87 FPU data registers between x87 and MMX.",
77 "Counter": "0,1,2,3",
78 "EventName": "AVX_INSTS.ALL",
79 "PublicDescription": "Note that a whole rep string only counts AVX_INST.ALL once.",
80 "SampleAfterValue": "2000003",
81 "CounterHTOff": "0,1,2,3,4,5,6,7"
82 }
83] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/frontend.json b/tools/perf/pmu-events/arch/x86/haswellx/frontend.json
new file mode 100644
index 000000000000..2d0c7aac1e61
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/frontend.json
@@ -0,0 +1,294 @@
1[
2 {
3 "EventCode": "0x79",
4 "UMask": "0x2",
5 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles",
6 "Counter": "0,1,2,3",
7 "EventName": "IDQ.EMPTY",
8 "Errata": "HSD135",
9 "PublicDescription": "Counts cycles the IDQ is empty.",
10 "SampleAfterValue": "2000003",
11 "CounterHTOff": "0,1,2,3"
12 },
13 {
14 "EventCode": "0x79",
15 "UMask": "0x4",
16 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
17 "Counter": "0,1,2,3",
18 "EventName": "IDQ.MITE_UOPS",
19 "PublicDescription": "Increment each cycle # of uops delivered to IDQ from MITE path. Set Cmask = 1 to count cycles.",
20 "SampleAfterValue": "2000003",
21 "CounterHTOff": "0,1,2,3,4,5,6,7"
22 },
23 {
24 "EventCode": "0x79",
25 "UMask": "0x8",
26 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
27 "Counter": "0,1,2,3",
28 "EventName": "IDQ.DSB_UOPS",
29 "PublicDescription": "Increment each cycle. # of uops delivered to IDQ from DSB path. Set Cmask = 1 to count cycles.",
30 "SampleAfterValue": "2000003",
31 "CounterHTOff": "0,1,2,3,4,5,6,7"
32 },
33 {
34 "EventCode": "0x79",
35 "UMask": "0x10",
36 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
37 "Counter": "0,1,2,3",
38 "EventName": "IDQ.MS_DSB_UOPS",
39 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by DSB. Set Cmask = 1 to count cycles. Add Edge=1 to count # of delivery.",
40 "SampleAfterValue": "2000003",
41 "CounterHTOff": "0,1,2,3,4,5,6,7"
42 },
43 {
44 "EventCode": "0x79",
45 "UMask": "0x20",
46 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
47 "Counter": "0,1,2,3",
48 "EventName": "IDQ.MS_MITE_UOPS",
49 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by MITE. Set Cmask = 1 to count cycles.",
50 "SampleAfterValue": "2000003",
51 "CounterHTOff": "0,1,2,3,4,5,6,7"
52 },
53 {
54 "EventCode": "0x79",
55 "UMask": "0x30",
56 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
57 "Counter": "0,1,2,3",
58 "EventName": "IDQ.MS_UOPS",
59 "PublicDescription": "This event counts uops delivered by the Front-end with the assistance of the microcode sequencer. Microcode assists are used for complex instructions or scenarios that can't be handled by the standard decoder. Using other instructions, if possible, will usually improve performance.",
60 "SampleAfterValue": "2000003",
61 "CounterHTOff": "0,1,2,3,4,5,6,7"
62 },
63 {
64 "EventCode": "0x79",
65 "UMask": "0x30",
66 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
67 "Counter": "0,1,2,3",
68 "EventName": "IDQ.MS_CYCLES",
69 "CounterMask": "1",
70 "PublicDescription": "This event counts cycles during which the microcode sequencer assisted the Front-end in delivering uops. Microcode assists are used for complex instructions or scenarios that can't be handled by the standard decoder. Using other instructions, if possible, will usually improve performance.",
71 "SampleAfterValue": "2000003",
72 "CounterHTOff": "0,1,2,3,4,5,6,7"
73 },
74 {
75 "EventCode": "0x79",
76 "UMask": "0x4",
77 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path.",
78 "Counter": "0,1,2,3",
79 "EventName": "IDQ.MITE_CYCLES",
80 "CounterMask": "1",
81 "SampleAfterValue": "2000003",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "EventCode": "0x79",
86 "UMask": "0x8",
87 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path.",
88 "Counter": "0,1,2,3",
89 "EventName": "IDQ.DSB_CYCLES",
90 "CounterMask": "1",
91 "SampleAfterValue": "2000003",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "EventCode": "0x79",
96 "UMask": "0x10",
97 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
98 "Counter": "0,1,2,3",
99 "EventName": "IDQ.MS_DSB_CYCLES",
100 "CounterMask": "1",
101 "SampleAfterValue": "2000003",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EdgeDetect": "1",
106 "EventCode": "0x79",
107 "UMask": "0x10",
108 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy.",
109 "Counter": "0,1,2,3",
110 "EventName": "IDQ.MS_DSB_OCCUR",
111 "CounterMask": "1",
112 "SampleAfterValue": "2000003",
113 "CounterHTOff": "0,1,2,3,4,5,6,7"
114 },
115 {
116 "EventCode": "0x79",
117 "UMask": "0x18",
118 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
119 "Counter": "0,1,2,3",
120 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
121 "CounterMask": "4",
122 "PublicDescription": "Counts cycles DSB is delivered four uops. Set Cmask = 4.",
123 "SampleAfterValue": "2000003",
124 "CounterHTOff": "0,1,2,3,4,5,6,7"
125 },
126 {
127 "EventCode": "0x79",
128 "UMask": "0x18",
129 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
130 "Counter": "0,1,2,3",
131 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
132 "CounterMask": "1",
133 "PublicDescription": "Counts cycles DSB is delivered at least one uops. Set Cmask = 1.",
134 "SampleAfterValue": "2000003",
135 "CounterHTOff": "0,1,2,3,4,5,6,7"
136 },
137 {
138 "EventCode": "0x79",
139 "UMask": "0x24",
140 "BriefDescription": "Cycles MITE is delivering 4 Uops",
141 "Counter": "0,1,2,3",
142 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
143 "CounterMask": "4",
144 "PublicDescription": "Counts cycles MITE is delivered four uops. Set Cmask = 4.",
145 "SampleAfterValue": "2000003",
146 "CounterHTOff": "0,1,2,3,4,5,6,7"
147 },
148 {
149 "EventCode": "0x79",
150 "UMask": "0x24",
151 "BriefDescription": "Cycles MITE is delivering any Uop",
152 "Counter": "0,1,2,3",
153 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
154 "CounterMask": "1",
155 "PublicDescription": "Counts cycles MITE is delivered at least one uop. Set Cmask = 1.",
156 "SampleAfterValue": "2000003",
157 "CounterHTOff": "0,1,2,3,4,5,6,7"
158 },
159 {
160 "EventCode": "0x79",
161 "UMask": "0x3c",
162 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
163 "Counter": "0,1,2,3",
164 "EventName": "IDQ.MITE_ALL_UOPS",
165 "PublicDescription": "Number of uops delivered to IDQ from any path.",
166 "SampleAfterValue": "2000003",
167 "CounterHTOff": "0,1,2,3,4,5,6,7"
168 },
169 {
170 "EventCode": "0x80",
171 "UMask": "0x1",
172 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches.",
173 "Counter": "0,1,2,3",
174 "EventName": "ICACHE.HIT",
175 "SampleAfterValue": "2000003",
176 "CounterHTOff": "0,1,2,3,4,5,6,7"
177 },
178 {
179 "EventCode": "0x80",
180 "UMask": "0x2",
181 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes Uncacheable accesses.",
182 "Counter": "0,1,2,3",
183 "EventName": "ICACHE.MISSES",
184 "PublicDescription": "This event counts Instruction Cache (ICACHE) misses.",
185 "SampleAfterValue": "200003",
186 "CounterHTOff": "0,1,2,3,4,5,6,7"
187 },
188 {
189 "EventCode": "0x80",
190 "UMask": "0x4",
191 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction-cache miss.",
192 "Counter": "0,1,2,3",
193 "EventName": "ICACHE.IFETCH_STALL",
194 "SampleAfterValue": "2000003",
195 "CounterHTOff": "0,1,2,3,4,5,6,7"
196 },
197 {
198 "EventCode": "0x9C",
199 "UMask": "0x1",
200 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled",
201 "Counter": "0,1,2,3",
202 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
203 "Errata": "HSD135",
204 "PublicDescription": "This event count the number of undelivered (unallocated) uops from the Front-end to the Resource Allocation Table (RAT) while the Back-end of the processor is not stalled. The Front-end can allocate up to 4 uops per cycle so this event can increment 0-4 times per cycle depending on the number of unallocated uops. This event is counted on a per-core basis.",
205 "SampleAfterValue": "2000003",
206 "CounterHTOff": "0,1,2,3"
207 },
208 {
209 "EventCode": "0x9C",
210 "UMask": "0x1",
211 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
212 "Counter": "0,1,2,3",
213 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
214 "CounterMask": "4",
215 "Errata": "HSD135",
216 "PublicDescription": "This event counts the number cycles during which the Front-end allocated exactly zero uops to the Resource Allocation Table (RAT) while the Back-end of the processor is not stalled. This event is counted on a per-core basis.",
217 "SampleAfterValue": "2000003",
218 "CounterHTOff": "0,1,2,3"
219 },
220 {
221 "EventCode": "0x9C",
222 "UMask": "0x1",
223 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
224 "Counter": "0,1,2,3",
225 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
226 "CounterMask": "3",
227 "Errata": "HSD135",
228 "SampleAfterValue": "2000003",
229 "CounterHTOff": "0,1,2,3"
230 },
231 {
232 "EventCode": "0x9C",
233 "UMask": "0x1",
234 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
235 "Counter": "0,1,2,3",
236 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
237 "CounterMask": "2",
238 "Errata": "HSD135",
239 "SampleAfterValue": "2000003",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "EventCode": "0x9C",
244 "UMask": "0x1",
245 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
246 "Counter": "0,1,2,3",
247 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
248 "CounterMask": "1",
249 "Errata": "HSD135",
250 "SampleAfterValue": "2000003",
251 "CounterHTOff": "0,1,2,3"
252 },
253 {
254 "Invert": "1",
255 "EventCode": "0x9C",
256 "UMask": "0x1",
257 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
258 "Counter": "0,1,2,3",
259 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
260 "CounterMask": "1",
261 "Errata": "HSD135",
262 "SampleAfterValue": "2000003",
263 "CounterHTOff": "0,1,2,3"
264 },
265 {
266 "EventCode": "0xAB",
267 "UMask": "0x2",
268 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
269 "Counter": "0,1,2,3",
270 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
271 "SampleAfterValue": "2000003",
272 "CounterHTOff": "0,1,2,3,4,5,6,7"
273 },
274 {
275 "EdgeDetect": "1",
276 "EventCode": "0x79",
277 "UMask": "0x30",
278 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
279 "Counter": "0,1,2,3",
280 "EventName": "IDQ.MS_SWITCHES",
281 "CounterMask": "1",
282 "SampleAfterValue": "2000003",
283 "CounterHTOff": "0,1,2,3,4,5,6,7"
284 },
285 {
286 "EventCode": "0x80",
287 "UMask": "0x4",
288 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction-cache miss.",
289 "Counter": "0,1,2,3",
290 "EventName": "ICACHE.IFDATA_STALL",
291 "SampleAfterValue": "2000003",
292 "CounterHTOff": "0,1,2,3,4,5,6,7"
293 }
294] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/memory.json b/tools/perf/pmu-events/arch/x86/haswellx/memory.json
new file mode 100644
index 000000000000..0886cc000d22
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/memory.json
@@ -0,0 +1,739 @@
1[
2 {
3 "EventCode": "0x05",
4 "UMask": "0x1",
5 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache",
6 "Counter": "0,1,2,3",
7 "EventName": "MISALIGN_MEM_REF.LOADS",
8 "PublicDescription": "Speculative cache-line split load uops dispatched to L1D.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x05",
14 "UMask": "0x2",
15 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache",
16 "Counter": "0,1,2,3",
17 "EventName": "MISALIGN_MEM_REF.STORES",
18 "PublicDescription": "Speculative cache-line split store-address uops dispatched to L1D.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x54",
24 "UMask": "0x1",
25 "BriefDescription": "Number of times a transactional abort was signaled due to a data conflict on a transactionally accessed address.",
26 "Counter": "0,1,2,3",
27 "EventName": "TX_MEM.ABORT_CONFLICT",
28 "SampleAfterValue": "2000003",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "EventCode": "0x54",
33 "UMask": "0x2",
34 "BriefDescription": "Number of times a transactional abort was signaled due to a data capacity limitation for transactional writes.",
35 "Counter": "0,1,2,3",
36 "EventName": "TX_MEM.ABORT_CAPACITY_WRITE",
37 "SampleAfterValue": "2000003",
38 "CounterHTOff": "0,1,2,3,4,5,6,7"
39 },
40 {
41 "EventCode": "0x54",
42 "UMask": "0x4",
43 "BriefDescription": "Number of times a HLE transactional region aborted due to a non XRELEASE prefixed instruction writing to an elided lock in the elision buffer.",
44 "Counter": "0,1,2,3",
45 "EventName": "TX_MEM.ABORT_HLE_STORE_TO_ELIDED_LOCK",
46 "SampleAfterValue": "2000003",
47 "CounterHTOff": "0,1,2,3,4,5,6,7"
48 },
49 {
50 "EventCode": "0x54",
51 "UMask": "0x8",
52 "BriefDescription": "Number of times an HLE transactional execution aborted due to NoAllocatedElisionBuffer being non-zero.",
53 "Counter": "0,1,2,3",
54 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_NOT_EMPTY",
55 "SampleAfterValue": "2000003",
56 "CounterHTOff": "0,1,2,3,4,5,6,7"
57 },
58 {
59 "EventCode": "0x54",
60 "UMask": "0x10",
61 "BriefDescription": "Number of times an HLE transactional execution aborted due to XRELEASE lock not satisfying the address and value requirements in the elision buffer.",
62 "Counter": "0,1,2,3",
63 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_MISMATCH",
64 "SampleAfterValue": "2000003",
65 "CounterHTOff": "0,1,2,3,4,5,6,7"
66 },
67 {
68 "EventCode": "0x54",
69 "UMask": "0x20",
70 "BriefDescription": "Number of times an HLE transactional execution aborted due to an unsupported read alignment from the elision buffer.",
71 "Counter": "0,1,2,3",
72 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_UNSUPPORTED_ALIGNMENT",
73 "SampleAfterValue": "2000003",
74 "CounterHTOff": "0,1,2,3,4,5,6,7"
75 },
76 {
77 "EventCode": "0x54",
78 "UMask": "0x40",
79 "BriefDescription": "Number of times HLE lock could not be elided due to ElisionBufferAvailable being zero.",
80 "Counter": "0,1,2,3",
81 "EventName": "TX_MEM.HLE_ELISION_BUFFER_FULL",
82 "SampleAfterValue": "2000003",
83 "CounterHTOff": "0,1,2,3,4,5,6,7"
84 },
85 {
86 "EventCode": "0x5d",
87 "UMask": "0x1",
88 "BriefDescription": "Counts the number of times a class of instructions that may cause a transactional abort was executed. Since this is the count of execution, it may not always cause a transactional abort.",
89 "Counter": "0,1,2,3",
90 "EventName": "TX_EXEC.MISC1",
91 "SampleAfterValue": "2000003",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "EventCode": "0x5d",
96 "UMask": "0x2",
97 "BriefDescription": "Counts the number of times a class of instructions (e.g., vzeroupper) that may cause a transactional abort was executed inside a transactional region.",
98 "Counter": "0,1,2,3",
99 "EventName": "TX_EXEC.MISC2",
100 "SampleAfterValue": "2000003",
101 "CounterHTOff": "0,1,2,3,4,5,6,7"
102 },
103 {
104 "EventCode": "0x5d",
105 "UMask": "0x4",
106 "BriefDescription": "Counts the number of times an instruction execution caused the transactional nest count supported to be exceeded.",
107 "Counter": "0,1,2,3",
108 "EventName": "TX_EXEC.MISC3",
109 "SampleAfterValue": "2000003",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "EventCode": "0x5d",
114 "UMask": "0x8",
115 "BriefDescription": "Counts the number of times a XBEGIN instruction was executed inside an HLE transactional region.",
116 "Counter": "0,1,2,3",
117 "EventName": "TX_EXEC.MISC4",
118 "SampleAfterValue": "2000003",
119 "CounterHTOff": "0,1,2,3,4,5,6,7"
120 },
121 {
122 "EventCode": "0x5d",
123 "UMask": "0x10",
124 "BriefDescription": "Counts the number of times an HLE XACQUIRE instruction was executed inside an RTM transactional region.",
125 "Counter": "0,1,2,3",
126 "EventName": "TX_EXEC.MISC5",
127 "SampleAfterValue": "2000003",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "EventCode": "0xC3",
132 "UMask": "0x2",
133 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
134 "Counter": "0,1,2,3",
135 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
136 "PublicDescription": "This event counts the number of memory ordering machine clears detected. Memory ordering machine clears can result from memory address aliasing or snoops from another hardware thread or core to data inflight in the pipeline. Machine clears can have a significant performance impact if they are happening frequently.",
137 "SampleAfterValue": "100003",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0xC8",
142 "UMask": "0x1",
143 "BriefDescription": "Number of times an HLE execution started.",
144 "Counter": "0,1,2,3",
145 "EventName": "HLE_RETIRED.START",
146 "SampleAfterValue": "2000003",
147 "CounterHTOff": "0,1,2,3,4,5,6,7"
148 },
149 {
150 "EventCode": "0xc8",
151 "UMask": "0x2",
152 "BriefDescription": "Number of times an HLE execution successfully committed.",
153 "Counter": "0,1,2,3",
154 "EventName": "HLE_RETIRED.COMMIT",
155 "SampleAfterValue": "2000003",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "EventCode": "0xc8",
160 "UMask": "0x4",
161 "BriefDescription": "Number of times an HLE execution aborted due to any reasons (multiple categories may count as one).",
162 "PEBS": "1",
163 "Counter": "0,1,2,3",
164 "EventName": "HLE_RETIRED.ABORTED",
165 "SampleAfterValue": "2000003",
166 "CounterHTOff": "0,1,2,3,4,5,6,7"
167 },
168 {
169 "EventCode": "0xc8",
170 "UMask": "0x8",
171 "BriefDescription": "Number of times an HLE execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
172 "Counter": "0,1,2,3",
173 "EventName": "HLE_RETIRED.ABORTED_MISC1",
174 "SampleAfterValue": "2000003",
175 "CounterHTOff": "0,1,2,3,4,5,6,7"
176 },
177 {
178 "EventCode": "0xc8",
179 "UMask": "0x10",
180 "BriefDescription": "Number of times an HLE execution aborted due to uncommon conditions.",
181 "Counter": "0,1,2,3",
182 "EventName": "HLE_RETIRED.ABORTED_MISC2",
183 "SampleAfterValue": "2000003",
184 "CounterHTOff": "0,1,2,3,4,5,6,7"
185 },
186 {
187 "EventCode": "0xc8",
188 "UMask": "0x20",
189 "BriefDescription": "Number of times an HLE execution aborted due to HLE-unfriendly instructions.",
190 "Counter": "0,1,2,3",
191 "EventName": "HLE_RETIRED.ABORTED_MISC3",
192 "SampleAfterValue": "2000003",
193 "CounterHTOff": "0,1,2,3,4,5,6,7"
194 },
195 {
196 "EventCode": "0xc8",
197 "UMask": "0x40",
198 "BriefDescription": "Number of times an HLE execution aborted due to incompatible memory type.",
199 "Counter": "0,1,2,3",
200 "EventName": "HLE_RETIRED.ABORTED_MISC4",
201 "Errata": "HSD65",
202 "SampleAfterValue": "2000003",
203 "CounterHTOff": "0,1,2,3,4,5,6,7"
204 },
205 {
206 "EventCode": "0xc8",
207 "UMask": "0x80",
208 "BriefDescription": "Number of times an HLE execution aborted due to none of the previous 4 categories (e.g. interrupts)",
209 "Counter": "0,1,2,3",
210 "EventName": "HLE_RETIRED.ABORTED_MISC5",
211 "PublicDescription": "Number of times an HLE execution aborted due to none of the previous 4 categories (e.g. interrupts).",
212 "SampleAfterValue": "2000003",
213 "CounterHTOff": "0,1,2,3,4,5,6,7"
214 },
215 {
216 "EventCode": "0xC9",
217 "UMask": "0x1",
218 "BriefDescription": "Number of times an RTM execution started.",
219 "Counter": "0,1,2,3",
220 "EventName": "RTM_RETIRED.START",
221 "SampleAfterValue": "2000003",
222 "CounterHTOff": "0,1,2,3"
223 },
224 {
225 "EventCode": "0xc9",
226 "UMask": "0x2",
227 "BriefDescription": "Number of times an RTM execution successfully committed.",
228 "Counter": "0,1,2,3",
229 "EventName": "RTM_RETIRED.COMMIT",
230 "SampleAfterValue": "2000003",
231 "CounterHTOff": "0,1,2,3"
232 },
233 {
234 "EventCode": "0xc9",
235 "UMask": "0x4",
236 "BriefDescription": "Number of times an RTM execution aborted due to any reasons (multiple categories may count as one).",
237 "PEBS": "1",
238 "Counter": "0,1,2,3",
239 "EventName": "RTM_RETIRED.ABORTED",
240 "SampleAfterValue": "2000003",
241 "CounterHTOff": "0,1,2,3"
242 },
243 {
244 "EventCode": "0xc9",
245 "UMask": "0x8",
246 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts)",
247 "Counter": "0,1,2,3",
248 "EventName": "RTM_RETIRED.ABORTED_MISC1",
249 "PublicDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts).",
250 "SampleAfterValue": "2000003",
251 "CounterHTOff": "0,1,2,3"
252 },
253 {
254 "EventCode": "0xc9",
255 "UMask": "0x10",
256 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
257 "Counter": "0,1,2,3",
258 "EventName": "RTM_RETIRED.ABORTED_MISC2",
259 "SampleAfterValue": "2000003",
260 "CounterHTOff": "0,1,2,3"
261 },
262 {
263 "EventCode": "0xc9",
264 "UMask": "0x20",
265 "BriefDescription": "Number of times an RTM execution aborted due to HLE-unfriendly instructions.",
266 "Counter": "0,1,2,3",
267 "EventName": "RTM_RETIRED.ABORTED_MISC3",
268 "SampleAfterValue": "2000003",
269 "CounterHTOff": "0,1,2,3"
270 },
271 {
272 "EventCode": "0xc9",
273 "UMask": "0x40",
274 "BriefDescription": "Number of times an RTM execution aborted due to incompatible memory type.",
275 "Counter": "0,1,2,3",
276 "EventName": "RTM_RETIRED.ABORTED_MISC4",
277 "Errata": "HSD65",
278 "SampleAfterValue": "2000003",
279 "CounterHTOff": "0,1,2,3"
280 },
281 {
282 "EventCode": "0xc9",
283 "UMask": "0x80",
284 "BriefDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt)",
285 "Counter": "0,1,2,3",
286 "EventName": "RTM_RETIRED.ABORTED_MISC5",
287 "PublicDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt).",
288 "SampleAfterValue": "2000003",
289 "CounterHTOff": "0,1,2,3"
290 },
291 {
292 "EventCode": "0xCD",
293 "UMask": "0x1",
294 "BriefDescription": "Loads with latency value being above 4.",
295 "PEBS": "2",
296 "MSRValue": "0x4",
297 "Counter": "3",
298 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
299 "MSRIndex": "0x3F6",
300 "Errata": "HSD76, HSD25, HSM26",
301 "TakenAlone": "1",
302 "SampleAfterValue": "100003",
303 "CounterHTOff": "3"
304 },
305 {
306 "EventCode": "0xCD",
307 "UMask": "0x1",
308 "BriefDescription": "Loads with latency value being above 8.",
309 "PEBS": "2",
310 "MSRValue": "0x8",
311 "Counter": "3",
312 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
313 "MSRIndex": "0x3F6",
314 "Errata": "HSD76, HSD25, HSM26",
315 "TakenAlone": "1",
316 "SampleAfterValue": "50021",
317 "CounterHTOff": "3"
318 },
319 {
320 "EventCode": "0xCD",
321 "UMask": "0x1",
322 "BriefDescription": "Loads with latency value being above 16.",
323 "PEBS": "2",
324 "MSRValue": "0x10",
325 "Counter": "3",
326 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
327 "MSRIndex": "0x3F6",
328 "Errata": "HSD76, HSD25, HSM26",
329 "TakenAlone": "1",
330 "SampleAfterValue": "20011",
331 "CounterHTOff": "3"
332 },
333 {
334 "EventCode": "0xCD",
335 "UMask": "0x1",
336 "BriefDescription": "Loads with latency value being above 32.",
337 "PEBS": "2",
338 "MSRValue": "0x20",
339 "Counter": "3",
340 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
341 "MSRIndex": "0x3F6",
342 "Errata": "HSD76, HSD25, HSM26",
343 "TakenAlone": "1",
344 "SampleAfterValue": "100003",
345 "CounterHTOff": "3"
346 },
347 {
348 "EventCode": "0xCD",
349 "UMask": "0x1",
350 "BriefDescription": "Loads with latency value being above 64.",
351 "PEBS": "2",
352 "MSRValue": "0x40",
353 "Counter": "3",
354 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
355 "MSRIndex": "0x3F6",
356 "Errata": "HSD76, HSD25, HSM26",
357 "TakenAlone": "1",
358 "SampleAfterValue": "2003",
359 "CounterHTOff": "3"
360 },
361 {
362 "EventCode": "0xCD",
363 "UMask": "0x1",
364 "BriefDescription": "Loads with latency value being above 128.",
365 "PEBS": "2",
366 "MSRValue": "0x80",
367 "Counter": "3",
368 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
369 "MSRIndex": "0x3F6",
370 "Errata": "HSD76, HSD25, HSM26",
371 "TakenAlone": "1",
372 "SampleAfterValue": "1009",
373 "CounterHTOff": "3"
374 },
375 {
376 "EventCode": "0xCD",
377 "UMask": "0x1",
378 "BriefDescription": "Loads with latency value being above 256.",
379 "PEBS": "2",
380 "MSRValue": "0x100",
381 "Counter": "3",
382 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
383 "MSRIndex": "0x3F6",
384 "Errata": "HSD76, HSD25, HSM26",
385 "TakenAlone": "1",
386 "SampleAfterValue": "503",
387 "CounterHTOff": "3"
388 },
389 {
390 "EventCode": "0xCD",
391 "UMask": "0x1",
392 "BriefDescription": "Loads with latency value being above 512.",
393 "PEBS": "2",
394 "MSRValue": "0x200",
395 "Counter": "3",
396 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
397 "MSRIndex": "0x3F6",
398 "Errata": "HSD76, HSD25, HSM26",
399 "TakenAlone": "1",
400 "SampleAfterValue": "101",
401 "CounterHTOff": "3"
402 },
403 {
404 "Offcore": "1",
405 "EventCode": "0xB7, 0xBB",
406 "UMask": "0x1",
407 "BriefDescription": "Counts demand data reads that miss in the L3",
408 "MSRValue": "0x3fbfc00001",
409 "Counter": "0,1,2,3",
410 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.ANY_RESPONSE",
411 "MSRIndex": "0x1a6,0x1a7",
412 "SampleAfterValue": "100003",
413 "CounterHTOff": "0,1,2,3"
414 },
415 {
416 "Offcore": "1",
417 "EventCode": "0xB7, 0xBB",
418 "UMask": "0x1",
419 "BriefDescription": "Counts demand data reads that miss the L3 and the data is returned from local dram",
420 "MSRValue": "0x0600400001",
421 "Counter": "0,1,2,3",
422 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.LOCAL_DRAM",
423 "MSRIndex": "0x1a6,0x1a7",
424 "SampleAfterValue": "100003",
425 "CounterHTOff": "0,1,2,3"
426 },
427 {
428 "Offcore": "1",
429 "EventCode": "0xB7, 0xBB",
430 "UMask": "0x1",
431 "BriefDescription": "Counts all demand data writes (RFOs) that miss in the L3",
432 "MSRValue": "0x3fbfc00002",
433 "Counter": "0,1,2,3",
434 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.ANY_RESPONSE",
435 "MSRIndex": "0x1a6,0x1a7",
436 "SampleAfterValue": "100003",
437 "CounterHTOff": "0,1,2,3"
438 },
439 {
440 "Offcore": "1",
441 "EventCode": "0xB7, 0xBB",
442 "UMask": "0x1",
443 "BriefDescription": "Counts all demand data writes (RFOs) that miss the L3 and the data is returned from local dram",
444 "MSRValue": "0x0600400002",
445 "Counter": "0,1,2,3",
446 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.LOCAL_DRAM",
447 "MSRIndex": "0x1a6,0x1a7",
448 "SampleAfterValue": "100003",
449 "CounterHTOff": "0,1,2,3"
450 },
451 {
452 "Offcore": "1",
453 "EventCode": "0xB7, 0xBB",
454 "UMask": "0x1",
455 "BriefDescription": "Counts all demand data writes (RFOs) that miss the L3 and the modified data is transferred from remote cache",
456 "MSRValue": "0x103fc00002",
457 "Counter": "0,1,2,3",
458 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM",
459 "MSRIndex": "0x1a6,0x1a7",
460 "SampleAfterValue": "100003",
461 "CounterHTOff": "0,1,2,3"
462 },
463 {
464 "Offcore": "1",
465 "EventCode": "0xB7, 0xBB",
466 "UMask": "0x1",
467 "BriefDescription": "Counts all demand code reads that miss in the L3",
468 "MSRValue": "0x3fbfc00004",
469 "Counter": "0,1,2,3",
470 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.ANY_RESPONSE",
471 "MSRIndex": "0x1a6,0x1a7",
472 "SampleAfterValue": "100003",
473 "CounterHTOff": "0,1,2,3"
474 },
475 {
476 "Offcore": "1",
477 "EventCode": "0xB7, 0xBB",
478 "UMask": "0x1",
479 "BriefDescription": "Counts all demand code reads that miss the L3 and the data is returned from local dram",
480 "MSRValue": "0x0600400004",
481 "Counter": "0,1,2,3",
482 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.LOCAL_DRAM",
483 "MSRIndex": "0x1a6,0x1a7",
484 "SampleAfterValue": "100003",
485 "CounterHTOff": "0,1,2,3"
486 },
487 {
488 "Offcore": "1",
489 "EventCode": "0xB7, 0xBB",
490 "UMask": "0x1",
491 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss in the L3",
492 "MSRValue": "0x3fbfc00010",
493 "Counter": "0,1,2,3",
494 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.ANY_RESPONSE",
495 "MSRIndex": "0x1a6,0x1a7",
496 "SampleAfterValue": "100003",
497 "CounterHTOff": "0,1,2,3"
498 },
499 {
500 "Offcore": "1",
501 "EventCode": "0xB7, 0xBB",
502 "UMask": "0x1",
503 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that miss in the L3",
504 "MSRValue": "0x3fbfc00020",
505 "Counter": "0,1,2,3",
506 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_MISS.ANY_RESPONSE",
507 "MSRIndex": "0x1a6,0x1a7",
508 "SampleAfterValue": "100003",
509 "CounterHTOff": "0,1,2,3"
510 },
511 {
512 "Offcore": "1",
513 "EventCode": "0xB7, 0xBB",
514 "UMask": "0x1",
515 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that miss in the L3",
516 "MSRValue": "0x3fbfc00040",
517 "Counter": "0,1,2,3",
518 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_MISS.ANY_RESPONSE",
519 "MSRIndex": "0x1a6,0x1a7",
520 "SampleAfterValue": "100003",
521 "CounterHTOff": "0,1,2,3"
522 },
523 {
524 "Offcore": "1",
525 "EventCode": "0xB7, 0xBB",
526 "UMask": "0x1",
527 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that miss in the L3",
528 "MSRValue": "0x3fbfc00080",
529 "Counter": "0,1,2,3",
530 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_MISS.ANY_RESPONSE",
531 "MSRIndex": "0x1a6,0x1a7",
532 "SampleAfterValue": "100003",
533 "CounterHTOff": "0,1,2,3"
534 },
535 {
536 "Offcore": "1",
537 "EventCode": "0xB7, 0xBB",
538 "UMask": "0x1",
539 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that miss in the L3",
540 "MSRValue": "0x3fbfc00100",
541 "Counter": "0,1,2,3",
542 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_MISS.ANY_RESPONSE",
543 "MSRIndex": "0x1a6,0x1a7",
544 "SampleAfterValue": "100003",
545 "CounterHTOff": "0,1,2,3"
546 },
547 {
548 "Offcore": "1",
549 "EventCode": "0xB7, 0xBB",
550 "UMask": "0x1",
551 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that miss in the L3",
552 "MSRValue": "0x3fbfc00200",
553 "Counter": "0,1,2,3",
554 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_MISS.ANY_RESPONSE",
555 "MSRIndex": "0x1a6,0x1a7",
556 "SampleAfterValue": "100003",
557 "CounterHTOff": "0,1,2,3"
558 },
559 {
560 "Offcore": "1",
561 "EventCode": "0xB7, 0xBB",
562 "UMask": "0x1",
563 "BriefDescription": "Counts all demand & prefetch data reads that miss in the L3",
564 "MSRValue": "0x3fbfc00091",
565 "Counter": "0,1,2,3",
566 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.ANY_RESPONSE",
567 "MSRIndex": "0x1a6,0x1a7",
568 "SampleAfterValue": "100003",
569 "CounterHTOff": "0,1,2,3"
570 },
571 {
572 "Offcore": "1",
573 "EventCode": "0xB7, 0xBB",
574 "UMask": "0x1",
575 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and the data is returned from local dram",
576 "MSRValue": "0x0600400091",
577 "Counter": "0,1,2,3",
578 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.LOCAL_DRAM",
579 "MSRIndex": "0x1a6,0x1a7",
580 "SampleAfterValue": "100003",
581 "CounterHTOff": "0,1,2,3"
582 },
583 {
584 "Offcore": "1",
585 "EventCode": "0xB7, 0xBB",
586 "UMask": "0x1",
587 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and the data is returned from remote dram",
588 "MSRValue": "0x063f800091",
589 "Counter": "0,1,2,3",
590 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.REMOTE_DRAM",
591 "MSRIndex": "0x1a6,0x1a7",
592 "SampleAfterValue": "100003",
593 "CounterHTOff": "0,1,2,3"
594 },
595 {
596 "Offcore": "1",
597 "EventCode": "0xB7, 0xBB",
598 "UMask": "0x1",
599 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and the modified data is transferred from remote cache",
600 "MSRValue": "0x103fc00091",
601 "Counter": "0,1,2,3",
602 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.REMOTE_HITM",
603 "MSRIndex": "0x1a6,0x1a7",
604 "SampleAfterValue": "100003",
605 "CounterHTOff": "0,1,2,3"
606 },
607 {
608 "Offcore": "1",
609 "EventCode": "0xB7, 0xBB",
610 "UMask": "0x1",
611 "BriefDescription": "Counts all demand & prefetch data reads that miss the L3 and clean or shared data is transferred from remote cache",
612 "MSRValue": "0x083fc00091",
613 "Counter": "0,1,2,3",
614 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.REMOTE_HIT_FORWARD",
615 "MSRIndex": "0x1a6,0x1a7",
616 "SampleAfterValue": "100003",
617 "CounterHTOff": "0,1,2,3"
618 },
619 {
620 "Offcore": "1",
621 "EventCode": "0xB7, 0xBB",
622 "UMask": "0x1",
623 "BriefDescription": "Counts all demand & prefetch RFOs that miss in the L3",
624 "MSRValue": "0x3fbfc00122",
625 "Counter": "0,1,2,3",
626 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_MISS.ANY_RESPONSE",
627 "MSRIndex": "0x1a6,0x1a7",
628 "SampleAfterValue": "100003",
629 "CounterHTOff": "0,1,2,3"
630 },
631 {
632 "Offcore": "1",
633 "EventCode": "0xB7, 0xBB",
634 "UMask": "0x1",
635 "BriefDescription": "Counts all demand & prefetch RFOs that miss the L3 and the data is returned from local dram",
636 "MSRValue": "0x0600400122",
637 "Counter": "0,1,2,3",
638 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_MISS.LOCAL_DRAM",
639 "MSRIndex": "0x1a6,0x1a7",
640 "SampleAfterValue": "100003",
641 "CounterHTOff": "0,1,2,3"
642 },
643 {
644 "Offcore": "1",
645 "EventCode": "0xB7, 0xBB",
646 "UMask": "0x1",
647 "BriefDescription": "Counts all demand & prefetch code reads that miss in the L3",
648 "MSRValue": "0x3fbfc00244",
649 "Counter": "0,1,2,3",
650 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.ANY_RESPONSE",
651 "MSRIndex": "0x1a6,0x1a7",
652 "SampleAfterValue": "100003",
653 "CounterHTOff": "0,1,2,3"
654 },
655 {
656 "Offcore": "1",
657 "EventCode": "0xB7, 0xBB",
658 "UMask": "0x1",
659 "BriefDescription": "Counts all demand & prefetch code reads that miss the L3 and the data is returned from local dram",
660 "MSRValue": "0x0600400244",
661 "Counter": "0,1,2,3",
662 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.LOCAL_DRAM",
663 "MSRIndex": "0x1a6,0x1a7",
664 "SampleAfterValue": "100003",
665 "CounterHTOff": "0,1,2,3"
666 },
667 {
668 "Offcore": "1",
669 "EventCode": "0xB7, 0xBB",
670 "UMask": "0x1",
671 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss in the L3",
672 "MSRValue": "0x3fbfc007f7",
673 "Counter": "0,1,2,3",
674 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.ANY_RESPONSE",
675 "MSRIndex": "0x1a6,0x1a7",
676 "SampleAfterValue": "100003",
677 "CounterHTOff": "0,1,2,3"
678 },
679 {
680 "Offcore": "1",
681 "EventCode": "0xB7, 0xBB",
682 "UMask": "0x1",
683 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and the data is returned from local dram",
684 "MSRValue": "0x06004007f7",
685 "Counter": "0,1,2,3",
686 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.LOCAL_DRAM",
687 "MSRIndex": "0x1a6,0x1a7",
688 "SampleAfterValue": "100003",
689 "CounterHTOff": "0,1,2,3"
690 },
691 {
692 "Offcore": "1",
693 "EventCode": "0xB7, 0xBB",
694 "UMask": "0x1",
695 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and the data is returned from remote dram",
696 "MSRValue": "0x063f8007f7",
697 "Counter": "0,1,2,3",
698 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_DRAM",
699 "MSRIndex": "0x1a6,0x1a7",
700 "SampleAfterValue": "100003",
701 "CounterHTOff": "0,1,2,3"
702 },
703 {
704 "Offcore": "1",
705 "EventCode": "0xB7, 0xBB",
706 "UMask": "0x1",
707 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and the modified data is transferred from remote cache",
708 "MSRValue": "0x103fc007f7",
709 "Counter": "0,1,2,3",
710 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_HITM",
711 "MSRIndex": "0x1a6,0x1a7",
712 "SampleAfterValue": "100003",
713 "CounterHTOff": "0,1,2,3"
714 },
715 {
716 "Offcore": "1",
717 "EventCode": "0xB7, 0xBB",
718 "UMask": "0x1",
719 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the L3 and clean or shared data is transferred from remote cache",
720 "MSRValue": "0x083fc007f7",
721 "Counter": "0,1,2,3",
722 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_HIT_FORWARD",
723 "MSRIndex": "0x1a6,0x1a7",
724 "SampleAfterValue": "100003",
725 "CounterHTOff": "0,1,2,3"
726 },
727 {
728 "Offcore": "1",
729 "EventCode": "0xB7, 0xBB",
730 "UMask": "0x1",
731 "BriefDescription": "Counts all requests that miss in the L3",
732 "MSRValue": "0x3fbfc08fff",
733 "Counter": "0,1,2,3",
734 "EventName": "OFFCORE_RESPONSE.ALL_REQUESTS.LLC_MISS.ANY_RESPONSE",
735 "MSRIndex": "0x1a6,0x1a7",
736 "SampleAfterValue": "100003",
737 "CounterHTOff": "0,1,2,3"
738 }
739] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/other.json b/tools/perf/pmu-events/arch/x86/haswellx/other.json
new file mode 100644
index 000000000000..4e1b6ce96ca3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/other.json
@@ -0,0 +1,43 @@
1[
2 {
3 "EventCode": "0x5C",
4 "UMask": "0x1",
5 "BriefDescription": "Unhalted core cycles when the thread is in ring 0",
6 "Counter": "0,1,2,3",
7 "EventName": "CPL_CYCLES.RING0",
8 "PublicDescription": "Unhalted core cycles when the thread is in ring 0.",
9 "SampleAfterValue": "2000003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x5C",
14 "UMask": "0x2",
15 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3",
16 "Counter": "0,1,2,3",
17 "EventName": "CPL_CYCLES.RING123",
18 "PublicDescription": "Unhalted core cycles when the thread is not in ring 0.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EdgeDetect": "1",
24 "EventCode": "0x5C",
25 "UMask": "0x1",
26 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0.",
27 "Counter": "0,1,2,3",
28 "EventName": "CPL_CYCLES.RING0_TRANS",
29 "CounterMask": "1",
30 "SampleAfterValue": "100003",
31 "CounterHTOff": "0,1,2,3,4,5,6,7"
32 },
33 {
34 "EventCode": "0x63",
35 "UMask": "0x1",
36 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock",
37 "Counter": "0,1,2,3",
38 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
39 "PublicDescription": "Cycles in which the L1D and L2 are locked, due to a UC lock or split lock.",
40 "SampleAfterValue": "2000003",
41 "CounterHTOff": "0,1,2,3,4,5,6,7"
42 }
43] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/pipeline.json b/tools/perf/pmu-events/arch/x86/haswellx/pipeline.json
new file mode 100644
index 000000000000..c3a163d34bd7
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/pipeline.json
@@ -0,0 +1,1329 @@
1[
2 {
3 "EventCode": "0x00",
4 "UMask": "0x1",
5 "BriefDescription": "Instructions retired from execution.",
6 "Counter": "Fixed counter 1",
7 "EventName": "INST_RETIRED.ANY",
8 "Errata": "HSD140, HSD143",
9 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. INST_RETIRED.ANY is counted by a designated fixed counter, leaving the programmable counters available for other events. Faulting executions of GETSEC/VM entry/VM Exit/MWait will not count as retired instructions.",
10 "SampleAfterValue": "2000003",
11 "CounterHTOff": "Fixed counter 1"
12 },
13 {
14 "EventCode": "0x00",
15 "UMask": "0x2",
16 "BriefDescription": "Core cycles when the thread is not in halt state.",
17 "Counter": "Fixed counter 2",
18 "EventName": "CPU_CLK_UNHALTED.THREAD",
19 "PublicDescription": "This event counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling.",
20 "SampleAfterValue": "2000003",
21 "CounterHTOff": "Fixed counter 2"
22 },
23 {
24 "EventCode": "0x00",
25 "UMask": "0x3",
26 "BriefDescription": "Reference cycles when the core is not in halt state.",
27 "Counter": "Fixed counter 3",
28 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
29 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state.",
30 "SampleAfterValue": "2000003",
31 "CounterHTOff": "Fixed counter 3"
32 },
33 {
34 "EventCode": "0x03",
35 "UMask": "0x2",
36 "BriefDescription": "loads blocked by overlapping with store buffer that cannot be forwarded",
37 "Counter": "0,1,2,3",
38 "EventName": "LD_BLOCKS.STORE_FORWARD",
39 "PublicDescription": "This event counts loads that followed a store to the same address, where the data could not be forwarded inside the pipeline from the store to the load. The most common reason why store forwarding would be blocked is when a load's address range overlaps with a preceding smaller uncompleted store. The penalty for blocked store forwarding is that the load must wait for the store to write its value to the cache before it can be issued.",
40 "SampleAfterValue": "100003",
41 "CounterHTOff": "0,1,2,3,4,5,6,7"
42 },
43 {
44 "EventCode": "0x03",
45 "UMask": "0x8",
46 "BriefDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use",
47 "Counter": "0,1,2,3",
48 "EventName": "LD_BLOCKS.NO_SR",
49 "PublicDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
50 "SampleAfterValue": "100003",
51 "CounterHTOff": "0,1,2,3,4,5,6,7"
52 },
53 {
54 "EventCode": "0x07",
55 "UMask": "0x1",
56 "BriefDescription": "False dependencies in MOB due to partial compare on address.",
57 "Counter": "0,1,2,3",
58 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
59 "PublicDescription": "Aliasing occurs when a load is issued after a store and their memory addresses are offset by 4K. This event counts the number of loads that aliased with a preceding store, resulting in an extended address check in the pipeline which can have a performance impact.",
60 "SampleAfterValue": "100003",
61 "CounterHTOff": "0,1,2,3,4,5,6,7"
62 },
63 {
64 "EventCode": "0x0D",
65 "UMask": "0x3",
66 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...)",
67 "Counter": "0,1,2,3",
68 "EventName": "INT_MISC.RECOVERY_CYCLES",
69 "CounterMask": "1",
70 "PublicDescription": "This event counts the number of cycles spent waiting for a recovery after an event such as a processor nuke, JEClear, assist, hle/rtm abort etc.",
71 "SampleAfterValue": "2000003",
72 "CounterHTOff": "0,1,2,3,4,5,6,7"
73 },
74 {
75 "EventCode": "0x0E",
76 "UMask": "0x1",
77 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
78 "Counter": "0,1,2,3",
79 "EventName": "UOPS_ISSUED.ANY",
80 "PublicDescription": "This event counts the number of uops issued by the Front-end of the pipeline to the Back-end. This event is counted at the allocation stage and will count both retired and non-retired uops.",
81 "SampleAfterValue": "2000003",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "EventCode": "0x0E",
86 "UMask": "0x10",
87 "BriefDescription": "Number of flags-merge uops being allocated. Such uops considered perf sensitive; added by GSR u-arch.",
88 "Counter": "0,1,2,3",
89 "EventName": "UOPS_ISSUED.FLAGS_MERGE",
90 "PublicDescription": "Number of flags-merge uops allocated. Such uops add delay.",
91 "SampleAfterValue": "2000003",
92 "CounterHTOff": "0,1,2,3,4,5,6,7"
93 },
94 {
95 "EventCode": "0x0E",
96 "UMask": "0x20",
97 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
98 "Counter": "0,1,2,3",
99 "EventName": "UOPS_ISSUED.SLOW_LEA",
100 "PublicDescription": "Number of slow LEA or similar uops allocated. Such uop has 3 sources (for example, 2 sources + immediate) regardless of whether it is a result of LEA instruction or not.",
101 "SampleAfterValue": "2000003",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0x0E",
106 "UMask": "0x40",
107 "BriefDescription": "Number of Multiply packed/scalar single precision uops allocated",
108 "Counter": "0,1,2,3",
109 "EventName": "UOPS_ISSUED.SINGLE_MUL",
110 "PublicDescription": "Number of multiply packed/scalar single precision uops allocated.",
111 "SampleAfterValue": "2000003",
112 "CounterHTOff": "0,1,2,3,4,5,6,7"
113 },
114 {
115 "Invert": "1",
116 "EventCode": "0x0E",
117 "UMask": "0x1",
118 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread.",
119 "Counter": "0,1,2,3",
120 "EventName": "UOPS_ISSUED.STALL_CYCLES",
121 "CounterMask": "1",
122 "SampleAfterValue": "2000003",
123 "CounterHTOff": "0,1,2,3"
124 },
125 {
126 "Invert": "1",
127 "EventCode": "0x0E",
128 "UMask": "0x1",
129 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads.",
130 "Counter": "0,1,2,3",
131 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
132 "AnyThread": "1",
133 "CounterMask": "1",
134 "SampleAfterValue": "2000003",
135 "CounterHTOff": "0,1,2,3"
136 },
137 {
138 "EventCode": "0x14",
139 "UMask": "0x2",
140 "BriefDescription": "Any uop executed by the Divider. (This includes all divide uops, sqrt, ...)",
141 "Counter": "0,1,2,3",
142 "EventName": "ARITH.DIVIDER_UOPS",
143 "SampleAfterValue": "2000003",
144 "CounterHTOff": "0,1,2,3,4,5,6,7"
145 },
146 {
147 "EventCode": "0x3C",
148 "UMask": "0x1",
149 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
150 "Counter": "0,1,2,3",
151 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
152 "PublicDescription": "Increments at the frequency of XCLK (100 MHz) when not halted.",
153 "SampleAfterValue": "2000003",
154 "CounterHTOff": "0,1,2,3,4,5,6,7"
155 },
156 {
157 "EventCode": "0x3c",
158 "UMask": "0x2",
159 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
160 "Counter": "0,1,2,3",
161 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
162 "SampleAfterValue": "2000003",
163 "CounterHTOff": "0,1,2,3"
164 },
165 {
166 "EventCode": "0x4c",
167 "UMask": "0x1",
168 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch",
169 "Counter": "0,1,2,3",
170 "EventName": "LOAD_HIT_PRE.SW_PF",
171 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for S/W prefetch.",
172 "SampleAfterValue": "100003",
173 "CounterHTOff": "0,1,2,3,4,5,6,7"
174 },
175 {
176 "EventCode": "0x4c",
177 "UMask": "0x2",
178 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch",
179 "Counter": "0,1,2,3",
180 "EventName": "LOAD_HIT_PRE.HW_PF",
181 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for H/W prefetch.",
182 "SampleAfterValue": "100003",
183 "CounterHTOff": "0,1,2,3,4,5,6,7"
184 },
185 {
186 "EventCode": "0x58",
187 "UMask": "0x1",
188 "BriefDescription": "Number of integer Move Elimination candidate uops that were eliminated.",
189 "Counter": "0,1,2,3",
190 "EventName": "MOVE_ELIMINATION.INT_ELIMINATED",
191 "PublicDescription": "Number of integer move elimination candidate uops that were eliminated.",
192 "SampleAfterValue": "1000003",
193 "CounterHTOff": "0,1,2,3,4,5,6,7"
194 },
195 {
196 "EventCode": "0x58",
197 "UMask": "0x2",
198 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were eliminated.",
199 "Counter": "0,1,2,3",
200 "EventName": "MOVE_ELIMINATION.SIMD_ELIMINATED",
201 "PublicDescription": "Number of SIMD move elimination candidate uops that were eliminated.",
202 "SampleAfterValue": "1000003",
203 "CounterHTOff": "0,1,2,3,4,5,6,7"
204 },
205 {
206 "EventCode": "0x58",
207 "UMask": "0x4",
208 "BriefDescription": "Number of integer Move Elimination candidate uops that were not eliminated.",
209 "Counter": "0,1,2,3",
210 "EventName": "MOVE_ELIMINATION.INT_NOT_ELIMINATED",
211 "PublicDescription": "Number of integer move elimination candidate uops that were not eliminated.",
212 "SampleAfterValue": "1000003",
213 "CounterHTOff": "0,1,2,3,4,5,6,7"
214 },
215 {
216 "EventCode": "0x58",
217 "UMask": "0x8",
218 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were not eliminated.",
219 "Counter": "0,1,2,3",
220 "EventName": "MOVE_ELIMINATION.SIMD_NOT_ELIMINATED",
221 "PublicDescription": "Number of SIMD move elimination candidate uops that were not eliminated.",
222 "SampleAfterValue": "1000003",
223 "CounterHTOff": "0,1,2,3,4,5,6,7"
224 },
225 {
226 "EventCode": "0x5E",
227 "UMask": "0x1",
228 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
229 "Counter": "0,1,2,3",
230 "EventName": "RS_EVENTS.EMPTY_CYCLES",
231 "PublicDescription": "This event counts cycles when the Reservation Station ( RS ) is empty for the thread. The RS is a structure that buffers allocated micro-ops from the Front-end. If there are many cycles when the RS is empty, it may represent an underflow of instructions delivered from the Front-end.",
232 "SampleAfterValue": "2000003",
233 "CounterHTOff": "0,1,2,3,4,5,6,7"
234 },
235 {
236 "EventCode": "0x87",
237 "UMask": "0x1",
238 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
239 "Counter": "0,1,2,3",
240 "EventName": "ILD_STALL.LCP",
241 "PublicDescription": "This event counts cycles where the decoder is stalled on an instruction with a length changing prefix (LCP).",
242 "SampleAfterValue": "2000003",
243 "CounterHTOff": "0,1,2,3,4,5,6,7"
244 },
245 {
246 "EventCode": "0x87",
247 "UMask": "0x4",
248 "BriefDescription": "Stall cycles because IQ is full",
249 "Counter": "0,1,2,3",
250 "EventName": "ILD_STALL.IQ_FULL",
251 "PublicDescription": "Stall cycles due to IQ is full.",
252 "SampleAfterValue": "2000003",
253 "CounterHTOff": "0,1,2,3,4,5,6,7"
254 },
255 {
256 "EventCode": "0x88",
257 "UMask": "0x41",
258 "BriefDescription": "Not taken macro-conditional branches.",
259 "Counter": "0,1,2,3",
260 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
261 "SampleAfterValue": "200003",
262 "CounterHTOff": "0,1,2,3,4,5,6,7"
263 },
264 {
265 "EventCode": "0x88",
266 "UMask": "0x81",
267 "BriefDescription": "Taken speculative and retired macro-conditional branches.",
268 "Counter": "0,1,2,3",
269 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
270 "SampleAfterValue": "200003",
271 "CounterHTOff": "0,1,2,3,4,5,6,7"
272 },
273 {
274 "EventCode": "0x88",
275 "UMask": "0x82",
276 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects.",
277 "Counter": "0,1,2,3",
278 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
279 "SampleAfterValue": "200003",
280 "CounterHTOff": "0,1,2,3,4,5,6,7"
281 },
282 {
283 "EventCode": "0x88",
284 "UMask": "0x84",
285 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns.",
286 "Counter": "0,1,2,3",
287 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
288 "SampleAfterValue": "200003",
289 "CounterHTOff": "0,1,2,3,4,5,6,7"
290 },
291 {
292 "EventCode": "0x88",
293 "UMask": "0x88",
294 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic.",
295 "Counter": "0,1,2,3",
296 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
297 "SampleAfterValue": "200003",
298 "CounterHTOff": "0,1,2,3,4,5,6,7"
299 },
300 {
301 "EventCode": "0x88",
302 "UMask": "0x90",
303 "BriefDescription": "Taken speculative and retired direct near calls.",
304 "Counter": "0,1,2,3",
305 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
306 "SampleAfterValue": "200003",
307 "CounterHTOff": "0,1,2,3,4,5,6,7"
308 },
309 {
310 "EventCode": "0x88",
311 "UMask": "0xa0",
312 "BriefDescription": "Taken speculative and retired indirect calls.",
313 "Counter": "0,1,2,3",
314 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
315 "SampleAfterValue": "200003",
316 "CounterHTOff": "0,1,2,3,4,5,6,7"
317 },
318 {
319 "EventCode": "0x88",
320 "UMask": "0xc1",
321 "BriefDescription": "Speculative and retired macro-conditional branches.",
322 "Counter": "0,1,2,3",
323 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
324 "SampleAfterValue": "200003",
325 "CounterHTOff": "0,1,2,3,4,5,6,7"
326 },
327 {
328 "EventCode": "0x88",
329 "UMask": "0xc2",
330 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects.",
331 "Counter": "0,1,2,3",
332 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
333 "SampleAfterValue": "200003",
334 "CounterHTOff": "0,1,2,3,4,5,6,7"
335 },
336 {
337 "EventCode": "0x88",
338 "UMask": "0xc4",
339 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns.",
340 "Counter": "0,1,2,3",
341 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
342 "SampleAfterValue": "200003",
343 "CounterHTOff": "0,1,2,3,4,5,6,7"
344 },
345 {
346 "EventCode": "0x88",
347 "UMask": "0xc8",
348 "BriefDescription": "Speculative and retired indirect return branches.",
349 "Counter": "0,1,2,3",
350 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
351 "SampleAfterValue": "200003",
352 "CounterHTOff": "0,1,2,3,4,5,6,7"
353 },
354 {
355 "EventCode": "0x88",
356 "UMask": "0xd0",
357 "BriefDescription": "Speculative and retired direct near calls.",
358 "Counter": "0,1,2,3",
359 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
360 "SampleAfterValue": "200003",
361 "CounterHTOff": "0,1,2,3,4,5,6,7"
362 },
363 {
364 "EventCode": "0x88",
365 "UMask": "0xff",
366 "BriefDescription": "Speculative and retired branches",
367 "Counter": "0,1,2,3",
368 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
369 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
370 "SampleAfterValue": "200003",
371 "CounterHTOff": "0,1,2,3,4,5,6,7"
372 },
373 {
374 "EventCode": "0x89",
375 "UMask": "0x41",
376 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches.",
377 "Counter": "0,1,2,3",
378 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
379 "SampleAfterValue": "200003",
380 "CounterHTOff": "0,1,2,3,4,5,6,7"
381 },
382 {
383 "EventCode": "0x89",
384 "UMask": "0x81",
385 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches.",
386 "Counter": "0,1,2,3",
387 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
388 "SampleAfterValue": "200003",
389 "CounterHTOff": "0,1,2,3,4,5,6,7"
390 },
391 {
392 "EventCode": "0x89",
393 "UMask": "0x84",
394 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns.",
395 "Counter": "0,1,2,3",
396 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
397 "SampleAfterValue": "200003",
398 "CounterHTOff": "0,1,2,3,4,5,6,7"
399 },
400 {
401 "EventCode": "0x89",
402 "UMask": "0x88",
403 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic.",
404 "Counter": "0,1,2,3",
405 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
406 "SampleAfterValue": "200003",
407 "CounterHTOff": "0,1,2,3,4,5,6,7"
408 },
409 {
410 "EventCode": "0x89",
411 "UMask": "0xc1",
412 "BriefDescription": "Speculative and retired mispredicted macro conditional branches.",
413 "Counter": "0,1,2,3",
414 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
415 "SampleAfterValue": "200003",
416 "CounterHTOff": "0,1,2,3,4,5,6,7"
417 },
418 {
419 "EventCode": "0x89",
420 "UMask": "0xc4",
421 "BriefDescription": "Mispredicted indirect branches excluding calls and returns.",
422 "Counter": "0,1,2,3",
423 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
424 "SampleAfterValue": "200003",
425 "CounterHTOff": "0,1,2,3,4,5,6,7"
426 },
427 {
428 "EventCode": "0x89",
429 "UMask": "0xff",
430 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
431 "Counter": "0,1,2,3",
432 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
433 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
434 "SampleAfterValue": "200003",
435 "CounterHTOff": "0,1,2,3,4,5,6,7"
436 },
437 {
438 "EventCode": "0xA1",
439 "UMask": "0x1",
440 "BriefDescription": "Cycles per thread when uops are executed in port 0",
441 "Counter": "0,1,2,3",
442 "EventName": "UOPS_EXECUTED_PORT.PORT_0",
443 "PublicDescription": "Cycles which a uop is dispatched on port 0 in this thread.",
444 "SampleAfterValue": "2000003",
445 "CounterHTOff": "0,1,2,3,4,5,6,7"
446 },
447 {
448 "EventCode": "0xA1",
449 "UMask": "0x2",
450 "BriefDescription": "Cycles per thread when uops are executed in port 1",
451 "Counter": "0,1,2,3",
452 "EventName": "UOPS_EXECUTED_PORT.PORT_1",
453 "PublicDescription": "Cycles which a uop is dispatched on port 1 in this thread.",
454 "SampleAfterValue": "2000003",
455 "CounterHTOff": "0,1,2,3,4,5,6,7"
456 },
457 {
458 "EventCode": "0xA1",
459 "UMask": "0x4",
460 "BriefDescription": "Cycles per thread when uops are executed in port 2",
461 "Counter": "0,1,2,3",
462 "EventName": "UOPS_EXECUTED_PORT.PORT_2",
463 "PublicDescription": "Cycles which a uop is dispatched on port 2 in this thread.",
464 "SampleAfterValue": "2000003",
465 "CounterHTOff": "0,1,2,3,4,5,6,7"
466 },
467 {
468 "EventCode": "0xA1",
469 "UMask": "0x8",
470 "BriefDescription": "Cycles per thread when uops are executed in port 3",
471 "Counter": "0,1,2,3",
472 "EventName": "UOPS_EXECUTED_PORT.PORT_3",
473 "PublicDescription": "Cycles which a uop is dispatched on port 3 in this thread.",
474 "SampleAfterValue": "2000003",
475 "CounterHTOff": "0,1,2,3,4,5,6,7"
476 },
477 {
478 "EventCode": "0xA1",
479 "UMask": "0x10",
480 "BriefDescription": "Cycles per thread when uops are executed in port 4",
481 "Counter": "0,1,2,3",
482 "EventName": "UOPS_EXECUTED_PORT.PORT_4",
483 "PublicDescription": "Cycles which a uop is dispatched on port 4 in this thread.",
484 "SampleAfterValue": "2000003",
485 "CounterHTOff": "0,1,2,3,4,5,6,7"
486 },
487 {
488 "EventCode": "0xA1",
489 "UMask": "0x20",
490 "BriefDescription": "Cycles per thread when uops are executed in port 5",
491 "Counter": "0,1,2,3",
492 "EventName": "UOPS_EXECUTED_PORT.PORT_5",
493 "PublicDescription": "Cycles which a uop is dispatched on port 5 in this thread.",
494 "SampleAfterValue": "2000003",
495 "CounterHTOff": "0,1,2,3,4,5,6,7"
496 },
497 {
498 "EventCode": "0xA1",
499 "UMask": "0x40",
500 "BriefDescription": "Cycles per thread when uops are executed in port 6",
501 "Counter": "0,1,2,3",
502 "EventName": "UOPS_EXECUTED_PORT.PORT_6",
503 "PublicDescription": "Cycles which a uop is dispatched on port 6 in this thread.",
504 "SampleAfterValue": "2000003",
505 "CounterHTOff": "0,1,2,3,4,5,6,7"
506 },
507 {
508 "EventCode": "0xA1",
509 "UMask": "0x80",
510 "BriefDescription": "Cycles per thread when uops are executed in port 7",
511 "Counter": "0,1,2,3",
512 "EventName": "UOPS_EXECUTED_PORT.PORT_7",
513 "PublicDescription": "Cycles which a uop is dispatched on port 7 in this thread.",
514 "SampleAfterValue": "2000003",
515 "CounterHTOff": "0,1,2,3,4,5,6,7"
516 },
517 {
518 "EventCode": "0xA2",
519 "UMask": "0x1",
520 "BriefDescription": "Resource-related stall cycles",
521 "Counter": "0,1,2,3",
522 "EventName": "RESOURCE_STALLS.ANY",
523 "Errata": "HSD135",
524 "PublicDescription": "Cycles allocation is stalled due to resource related reason.",
525 "SampleAfterValue": "2000003",
526 "CounterHTOff": "0,1,2,3,4,5,6,7"
527 },
528 {
529 "EventCode": "0xA2",
530 "UMask": "0x4",
531 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
532 "Counter": "0,1,2,3",
533 "EventName": "RESOURCE_STALLS.RS",
534 "SampleAfterValue": "2000003",
535 "CounterHTOff": "0,1,2,3,4,5,6,7"
536 },
537 {
538 "EventCode": "0xA2",
539 "UMask": "0x8",
540 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
541 "Counter": "0,1,2,3",
542 "EventName": "RESOURCE_STALLS.SB",
543 "PublicDescription": "This event counts cycles during which no instructions were allocated because no Store Buffers (SB) were available.",
544 "SampleAfterValue": "2000003",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "EventCode": "0xA2",
549 "UMask": "0x10",
550 "BriefDescription": "Cycles stalled due to re-order buffer full.",
551 "Counter": "0,1,2,3",
552 "EventName": "RESOURCE_STALLS.ROB",
553 "SampleAfterValue": "2000003",
554 "CounterHTOff": "0,1,2,3,4,5,6,7"
555 },
556 {
557 "EventCode": "0xA3",
558 "UMask": "0x1",
559 "BriefDescription": "Cycles with pending L2 cache miss loads.",
560 "Counter": "0,1,2,3",
561 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
562 "CounterMask": "1",
563 "Errata": "HSD78",
564 "PublicDescription": "Cycles with pending L2 miss loads. Set Cmask=2 to count cycle.",
565 "SampleAfterValue": "2000003",
566 "CounterHTOff": "0,1,2,3,4,5,6,7"
567 },
568 {
569 "EventCode": "0xA3",
570 "UMask": "0x8",
571 "BriefDescription": "Cycles with pending L1 cache miss loads.",
572 "Counter": "2",
573 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
574 "CounterMask": "8",
575 "PublicDescription": "Cycles with pending L1 data cache miss loads. Set Cmask=8 to count cycle.",
576 "SampleAfterValue": "2000003",
577 "CounterHTOff": "2"
578 },
579 {
580 "EventCode": "0xA3",
581 "UMask": "0x2",
582 "BriefDescription": "Cycles with pending memory loads.",
583 "Counter": "0,1,2,3",
584 "EventName": "CYCLE_ACTIVITY.CYCLES_LDM_PENDING",
585 "CounterMask": "2",
586 "PublicDescription": "Cycles with pending memory loads. Set Cmask=2 to count cycle.",
587 "SampleAfterValue": "2000003",
588 "CounterHTOff": "0,1,2,3"
589 },
590 {
591 "EventCode": "0xA3",
592 "UMask": "0x4",
593 "BriefDescription": "Total execution stalls",
594 "Counter": "0,1,2,3",
595 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_EXECUTE",
596 "CounterMask": "4",
597 "PublicDescription": "This event counts cycles during which no instructions were executed in the execution stage of the pipeline.",
598 "SampleAfterValue": "2000003",
599 "CounterHTOff": "0,1,2,3"
600 },
601 {
602 "EventCode": "0xA3",
603 "UMask": "0x5",
604 "BriefDescription": "Execution stalls due to L2 cache misses.",
605 "Counter": "0,1,2,3",
606 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
607 "CounterMask": "5",
608 "PublicDescription": "Number of loads missed L2.",
609 "SampleAfterValue": "2000003",
610 "CounterHTOff": "0,1,2,3"
611 },
612 {
613 "EventCode": "0xA3",
614 "UMask": "0x6",
615 "BriefDescription": "Execution stalls due to memory subsystem.",
616 "Counter": "0,1,2,3",
617 "EventName": "CYCLE_ACTIVITY.STALLS_LDM_PENDING",
618 "CounterMask": "6",
619 "PublicDescription": "This event counts cycles during which no instructions were executed in the execution stage of the pipeline and there were memory instructions pending (waiting for data).",
620 "SampleAfterValue": "2000003",
621 "CounterHTOff": "0,1,2,3"
622 },
623 {
624 "EventCode": "0xA3",
625 "UMask": "0xc",
626 "BriefDescription": "Execution stalls due to L1 data cache misses",
627 "Counter": "2",
628 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
629 "CounterMask": "12",
630 "PublicDescription": "Execution stalls due to L1 data cache miss loads. Set Cmask=0CH.",
631 "SampleAfterValue": "2000003",
632 "CounterHTOff": "2"
633 },
634 {
635 "EventCode": "0xa8",
636 "UMask": "0x1",
637 "BriefDescription": "Number of Uops delivered by the LSD.",
638 "Counter": "0,1,2,3",
639 "EventName": "LSD.UOPS",
640 "PublicDescription": "Number of uops delivered by the LSD.",
641 "SampleAfterValue": "2000003",
642 "CounterHTOff": "0,1,2,3,4,5,6,7"
643 },
644 {
645 "EventCode": "0xB1",
646 "UMask": "0x2",
647 "BriefDescription": "Number of uops executed on the core.",
648 "Counter": "0,1,2,3",
649 "EventName": "UOPS_EXECUTED.CORE",
650 "Errata": "HSD30, HSM31",
651 "PublicDescription": "Counts total number of uops to be executed per-core each cycle.",
652 "SampleAfterValue": "2000003",
653 "CounterHTOff": "0,1,2,3,4,5,6,7"
654 },
655 {
656 "Invert": "1",
657 "EventCode": "0xB1",
658 "UMask": "0x1",
659 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
660 "Counter": "0,1,2,3",
661 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
662 "CounterMask": "1",
663 "Errata": "HSD144, HSD30, HSM31",
664 "SampleAfterValue": "2000003",
665 "CounterHTOff": "0,1,2,3"
666 },
667 {
668 "EventCode": "0xC0",
669 "UMask": "0x0",
670 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
671 "Counter": "0,1,2,3",
672 "EventName": "INST_RETIRED.ANY_P",
673 "Errata": "HSD11, HSD140",
674 "PublicDescription": "Number of instructions at retirement.",
675 "SampleAfterValue": "2000003",
676 "CounterHTOff": "0,1,2,3,4,5,6,7"
677 },
678 {
679 "EventCode": "0xC0",
680 "UMask": "0x2",
681 "BriefDescription": "FP operations retired. X87 FP operations that have no exceptions: Counts also flows that have several X87 or flows that use X87 uops in the exception handling.",
682 "Counter": "0,1,2,3",
683 "EventName": "INST_RETIRED.X87",
684 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts FP operations retired. For X87 FP operations that have no exceptions counting also includes flows that have several X87, or flows that use X87 uops in the exception handling.",
685 "SampleAfterValue": "2000003",
686 "CounterHTOff": "0,1,2,3,4,5,6,7"
687 },
688 {
689 "EventCode": "0xC0",
690 "UMask": "0x1",
691 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
692 "PEBS": "2",
693 "Counter": "1",
694 "EventName": "INST_RETIRED.PREC_DIST",
695 "Errata": "HSD140",
696 "PublicDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution.",
697 "SampleAfterValue": "2000003",
698 "CounterHTOff": "1"
699 },
700 {
701 "EventCode": "0xC1",
702 "UMask": "0x40",
703 "BriefDescription": "Number of times any microcode assist is invoked by HW upon uop writeback.",
704 "Counter": "0,1,2,3",
705 "EventName": "OTHER_ASSISTS.ANY_WB_ASSIST",
706 "PublicDescription": "Number of microcode assists invoked by HW upon uop writeback.",
707 "SampleAfterValue": "100003",
708 "CounterHTOff": "0,1,2,3,4,5,6,7"
709 },
710 {
711 "EventCode": "0xC2",
712 "UMask": "0x1",
713 "BriefDescription": "Actually retired uops.",
714 "Data_LA": "1",
715 "PEBS": "1",
716 "Counter": "0,1,2,3",
717 "EventName": "UOPS_RETIRED.ALL",
718 "PublicDescription": "Counts the number of micro-ops retired. Use Cmask=1 and invert to count active cycles or stalled cycles.",
719 "SampleAfterValue": "2000003",
720 "CounterHTOff": "0,1,2,3,4,5,6,7"
721 },
722 {
723 "EventCode": "0xC2",
724 "UMask": "0x2",
725 "BriefDescription": "Retirement slots used.",
726 "PEBS": "1",
727 "Counter": "0,1,2,3",
728 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
729 "PublicDescription": "This event counts the number of retirement slots used each cycle. There are potentially 4 slots that can be used each cycle - meaning, 4 uops or 4 instructions could retire each cycle.",
730 "SampleAfterValue": "2000003",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "Invert": "1",
735 "EventCode": "0xC2",
736 "UMask": "0x1",
737 "BriefDescription": "Cycles without actually retired uops.",
738 "Counter": "0,1,2,3",
739 "EventName": "UOPS_RETIRED.STALL_CYCLES",
740 "CounterMask": "1",
741 "SampleAfterValue": "2000003",
742 "CounterHTOff": "0,1,2,3"
743 },
744 {
745 "Invert": "1",
746 "EventCode": "0xC2",
747 "UMask": "0x1",
748 "BriefDescription": "Cycles with less than 10 actually retired uops.",
749 "Counter": "0,1,2,3",
750 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
751 "CounterMask": "10",
752 "SampleAfterValue": "2000003",
753 "CounterHTOff": "0,1,2,3"
754 },
755 {
756 "Invert": "1",
757 "EventCode": "0xC2",
758 "UMask": "0x1",
759 "BriefDescription": "Cycles without actually retired uops.",
760 "Counter": "0,1,2,3",
761 "EventName": "UOPS_RETIRED.CORE_STALL_CYCLES",
762 "AnyThread": "1",
763 "CounterMask": "1",
764 "SampleAfterValue": "2000003",
765 "CounterHTOff": "0,1,2,3"
766 },
767 {
768 "EventCode": "0xC3",
769 "UMask": "0x1",
770 "BriefDescription": "Cycles there was a Nuke. Account for both thread-specific and All Thread Nukes.",
771 "Counter": "0,1,2,3",
772 "EventName": "MACHINE_CLEARS.CYCLES",
773 "SampleAfterValue": "2000003",
774 "CounterHTOff": "0,1,2,3,4,5,6,7"
775 },
776 {
777 "EventCode": "0xC3",
778 "UMask": "0x4",
779 "BriefDescription": "Self-modifying code (SMC) detected.",
780 "Counter": "0,1,2,3",
781 "EventName": "MACHINE_CLEARS.SMC",
782 "PublicDescription": "This event is incremented when self-modifying code (SMC) is detected, which causes a machine clear. Machine clears can have a significant performance impact if they are happening frequently.",
783 "SampleAfterValue": "100003",
784 "CounterHTOff": "0,1,2,3,4,5,6,7"
785 },
786 {
787 "EventCode": "0xC3",
788 "UMask": "0x20",
789 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
790 "Counter": "0,1,2,3",
791 "EventName": "MACHINE_CLEARS.MASKMOV",
792 "SampleAfterValue": "100003",
793 "CounterHTOff": "0,1,2,3,4,5,6,7"
794 },
795 {
796 "EventCode": "0xC4",
797 "UMask": "0x1",
798 "BriefDescription": "Conditional branch instructions retired.",
799 "PEBS": "1",
800 "Counter": "0,1,2,3",
801 "EventName": "BR_INST_RETIRED.CONDITIONAL",
802 "PublicDescription": "Counts the number of conditional branch instructions retired.",
803 "SampleAfterValue": "400009",
804 "CounterHTOff": "0,1,2,3,4,5,6,7"
805 },
806 {
807 "EventCode": "0xC4",
808 "UMask": "0x2",
809 "BriefDescription": "Direct and indirect near call instructions retired.",
810 "PEBS": "1",
811 "Counter": "0,1,2,3",
812 "EventName": "BR_INST_RETIRED.NEAR_CALL",
813 "SampleAfterValue": "100003",
814 "CounterHTOff": "0,1,2,3,4,5,6,7"
815 },
816 {
817 "EventCode": "0xC4",
818 "UMask": "0x0",
819 "BriefDescription": "All (macro) branch instructions retired.",
820 "Counter": "0,1,2,3",
821 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
822 "PublicDescription": "Branch instructions at retirement.",
823 "SampleAfterValue": "400009",
824 "CounterHTOff": "0,1,2,3,4,5,6,7"
825 },
826 {
827 "EventCode": "0xC4",
828 "UMask": "0x8",
829 "BriefDescription": "Return instructions retired.",
830 "PEBS": "1",
831 "Counter": "0,1,2,3",
832 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
833 "PublicDescription": "Counts the number of near return instructions retired.",
834 "SampleAfterValue": "100003",
835 "CounterHTOff": "0,1,2,3,4,5,6,7"
836 },
837 {
838 "EventCode": "0xC4",
839 "UMask": "0x10",
840 "BriefDescription": "Not taken branch instructions retired.",
841 "Counter": "0,1,2,3",
842 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
843 "PublicDescription": "Counts the number of not taken branch instructions retired.",
844 "SampleAfterValue": "400009",
845 "CounterHTOff": "0,1,2,3,4,5,6,7"
846 },
847 {
848 "EventCode": "0xC4",
849 "UMask": "0x20",
850 "BriefDescription": "Taken branch instructions retired.",
851 "PEBS": "1",
852 "Counter": "0,1,2,3",
853 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
854 "PublicDescription": "Number of near taken branches retired.",
855 "SampleAfterValue": "400009",
856 "CounterHTOff": "0,1,2,3,4,5,6,7"
857 },
858 {
859 "EventCode": "0xC4",
860 "UMask": "0x40",
861 "BriefDescription": "Far branch instructions retired.",
862 "Counter": "0,1,2,3",
863 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
864 "PublicDescription": "Number of far branches retired.",
865 "SampleAfterValue": "100003",
866 "CounterHTOff": "0,1,2,3,4,5,6,7"
867 },
868 {
869 "EventCode": "0xC4",
870 "UMask": "0x4",
871 "BriefDescription": "All (macro) branch instructions retired.",
872 "PEBS": "2",
873 "Counter": "0,1,2,3",
874 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
875 "SampleAfterValue": "400009",
876 "CounterHTOff": "0,1,2,3"
877 },
878 {
879 "EventCode": "0xC5",
880 "UMask": "0x1",
881 "BriefDescription": "Mispredicted conditional branch instructions retired.",
882 "PEBS": "1",
883 "Counter": "0,1,2,3",
884 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
885 "SampleAfterValue": "400009",
886 "CounterHTOff": "0,1,2,3,4,5,6,7"
887 },
888 {
889 "EventCode": "0xC5",
890 "UMask": "0x0",
891 "BriefDescription": "All mispredicted macro branch instructions retired.",
892 "Counter": "0,1,2,3",
893 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
894 "PublicDescription": "Mispredicted branch instructions at retirement.",
895 "SampleAfterValue": "400009",
896 "CounterHTOff": "0,1,2,3,4,5,6,7"
897 },
898 {
899 "EventCode": "0xC5",
900 "UMask": "0x4",
901 "BriefDescription": "Mispredicted macro branch instructions retired. ",
902 "PEBS": "2",
903 "Counter": "0,1,2,3",
904 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
905 "PublicDescription": "This event counts all mispredicted branch instructions retired. This is a precise event.",
906 "SampleAfterValue": "400009",
907 "CounterHTOff": "0,1,2,3"
908 },
909 {
910 "EventCode": "0xCC",
911 "UMask": "0x20",
912 "BriefDescription": "Count cases of saving new LBR",
913 "Counter": "0,1,2,3",
914 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
915 "PublicDescription": "Count cases of saving new LBR records by hardware.",
916 "SampleAfterValue": "2000003",
917 "CounterHTOff": "0,1,2,3,4,5,6,7"
918 },
919 {
920 "EventCode": "0x3C",
921 "UMask": "0x0",
922 "BriefDescription": "Thread cycles when thread is not in halt state",
923 "Counter": "0,1,2,3",
924 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
925 "PublicDescription": "Counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling.",
926 "SampleAfterValue": "2000003",
927 "CounterHTOff": "0,1,2,3,4,5,6,7"
928 },
929 {
930 "EventCode": "0x89",
931 "UMask": "0xa0",
932 "BriefDescription": "Taken speculative and retired mispredicted indirect calls.",
933 "Counter": "0,1,2,3",
934 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
935 "SampleAfterValue": "200003",
936 "CounterHTOff": "0,1,2,3,4,5,6,7"
937 },
938 {
939 "EventCode": "0xA1",
940 "UMask": "0x1",
941 "BriefDescription": "Cycles per core when uops are exectuted in port 0.",
942 "Counter": "0,1,2,3",
943 "EventName": "UOPS_EXECUTED_PORT.PORT_0_CORE",
944 "AnyThread": "1",
945 "SampleAfterValue": "2000003",
946 "CounterHTOff": "0,1,2,3,4,5,6,7"
947 },
948 {
949 "EventCode": "0xA1",
950 "UMask": "0x2",
951 "BriefDescription": "Cycles per core when uops are exectuted in port 1.",
952 "Counter": "0,1,2,3",
953 "EventName": "UOPS_EXECUTED_PORT.PORT_1_CORE",
954 "AnyThread": "1",
955 "SampleAfterValue": "2000003",
956 "CounterHTOff": "0,1,2,3,4,5,6,7"
957 },
958 {
959 "EventCode": "0xA1",
960 "UMask": "0x4",
961 "BriefDescription": "Cycles per core when uops are dispatched to port 2.",
962 "Counter": "0,1,2,3",
963 "EventName": "UOPS_EXECUTED_PORT.PORT_2_CORE",
964 "AnyThread": "1",
965 "SampleAfterValue": "2000003",
966 "CounterHTOff": "0,1,2,3,4,5,6,7"
967 },
968 {
969 "EventCode": "0xA1",
970 "UMask": "0x8",
971 "BriefDescription": "Cycles per core when uops are dispatched to port 3.",
972 "Counter": "0,1,2,3",
973 "EventName": "UOPS_EXECUTED_PORT.PORT_3_CORE",
974 "AnyThread": "1",
975 "SampleAfterValue": "2000003",
976 "CounterHTOff": "0,1,2,3,4,5,6,7"
977 },
978 {
979 "EventCode": "0xA1",
980 "UMask": "0x10",
981 "BriefDescription": "Cycles per core when uops are exectuted in port 4.",
982 "Counter": "0,1,2,3",
983 "EventName": "UOPS_EXECUTED_PORT.PORT_4_CORE",
984 "AnyThread": "1",
985 "SampleAfterValue": "2000003",
986 "CounterHTOff": "0,1,2,3,4,5,6,7"
987 },
988 {
989 "EventCode": "0xA1",
990 "UMask": "0x20",
991 "BriefDescription": "Cycles per core when uops are exectuted in port 5.",
992 "Counter": "0,1,2,3",
993 "EventName": "UOPS_EXECUTED_PORT.PORT_5_CORE",
994 "AnyThread": "1",
995 "SampleAfterValue": "2000003",
996 "CounterHTOff": "0,1,2,3,4,5,6,7"
997 },
998 {
999 "EventCode": "0xA1",
1000 "UMask": "0x40",
1001 "BriefDescription": "Cycles per core when uops are exectuted in port 6.",
1002 "Counter": "0,1,2,3",
1003 "EventName": "UOPS_EXECUTED_PORT.PORT_6_CORE",
1004 "AnyThread": "1",
1005 "SampleAfterValue": "2000003",
1006 "CounterHTOff": "0,1,2,3,4,5,6,7"
1007 },
1008 {
1009 "EventCode": "0xA1",
1010 "UMask": "0x80",
1011 "BriefDescription": "Cycles per core when uops are dispatched to port 7.",
1012 "Counter": "0,1,2,3",
1013 "EventName": "UOPS_EXECUTED_PORT.PORT_7_CORE",
1014 "AnyThread": "1",
1015 "SampleAfterValue": "2000003",
1016 "CounterHTOff": "0,1,2,3,4,5,6,7"
1017 },
1018 {
1019 "EventCode": "0xC5",
1020 "UMask": "0x20",
1021 "BriefDescription": "number of near branch instructions retired that were mispredicted and taken.",
1022 "PEBS": "1",
1023 "Counter": "0,1,2,3",
1024 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
1025 "PublicDescription": "Number of near branch instructions retired that were taken but mispredicted.",
1026 "SampleAfterValue": "400009",
1027 "CounterHTOff": "0,1,2,3,4,5,6,7"
1028 },
1029 {
1030 "EventCode": "0xB1",
1031 "UMask": "0x1",
1032 "BriefDescription": "Cycles where at least 1 uop was executed per-thread",
1033 "Counter": "0,1,2,3",
1034 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
1035 "CounterMask": "1",
1036 "Errata": "HSD144, HSD30, HSM31",
1037 "PublicDescription": "This events counts the cycles where at least one uop was executed. It is counted per thread.",
1038 "SampleAfterValue": "2000003",
1039 "CounterHTOff": "0,1,2,3"
1040 },
1041 {
1042 "EventCode": "0xB1",
1043 "UMask": "0x1",
1044 "BriefDescription": "Cycles where at least 2 uops were executed per-thread",
1045 "Counter": "0,1,2,3",
1046 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
1047 "CounterMask": "2",
1048 "Errata": "HSD144, HSD30, HSM31",
1049 "PublicDescription": "This events counts the cycles where at least two uop were executed. It is counted per thread.",
1050 "SampleAfterValue": "2000003",
1051 "CounterHTOff": "0,1,2,3"
1052 },
1053 {
1054 "EventCode": "0xB1",
1055 "UMask": "0x1",
1056 "BriefDescription": "Cycles where at least 3 uops were executed per-thread",
1057 "Counter": "0,1,2,3",
1058 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
1059 "CounterMask": "3",
1060 "Errata": "HSD144, HSD30, HSM31",
1061 "PublicDescription": "This events counts the cycles where at least three uop were executed. It is counted per thread.",
1062 "SampleAfterValue": "2000003",
1063 "CounterHTOff": "0,1,2,3"
1064 },
1065 {
1066 "EventCode": "0xB1",
1067 "UMask": "0x1",
1068 "BriefDescription": "Cycles where at least 4 uops were executed per-thread.",
1069 "Counter": "0,1,2,3",
1070 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
1071 "CounterMask": "4",
1072 "Errata": "HSD144, HSD30, HSM31",
1073 "SampleAfterValue": "2000003",
1074 "CounterHTOff": "0,1,2,3"
1075 },
1076 {
1077 "EventCode": "0xe6",
1078 "UMask": "0x1f",
1079 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1080 "Counter": "0,1,2,3",
1081 "EventName": "BACLEARS.ANY",
1082 "PublicDescription": "Number of front end re-steers due to BPU misprediction.",
1083 "SampleAfterValue": "100003",
1084 "CounterHTOff": "0,1,2,3,4,5,6,7"
1085 },
1086 {
1087 "EdgeDetect": "1",
1088 "EventCode": "0xC3",
1089 "UMask": "0x1",
1090 "BriefDescription": "Number of machine clears (nukes) of any type.",
1091 "Counter": "0,1,2,3",
1092 "EventName": "MACHINE_CLEARS.COUNT",
1093 "CounterMask": "1",
1094 "SampleAfterValue": "100003",
1095 "CounterHTOff": "0,1,2,3,4,5,6,7"
1096 },
1097 {
1098 "EventCode": "0xA8",
1099 "UMask": "0x1",
1100 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
1101 "Counter": "0,1,2,3",
1102 "EventName": "LSD.CYCLES_ACTIVE",
1103 "CounterMask": "1",
1104 "SampleAfterValue": "2000003",
1105 "CounterHTOff": "0,1,2,3,4,5,6,7"
1106 },
1107 {
1108 "EventCode": "0xA8",
1109 "UMask": "0x1",
1110 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1111 "Counter": "0,1,2,3",
1112 "EventName": "LSD.CYCLES_4_UOPS",
1113 "CounterMask": "4",
1114 "SampleAfterValue": "2000003",
1115 "CounterHTOff": "0,1,2,3,4,5,6,7"
1116 },
1117 {
1118 "EdgeDetect": "1",
1119 "Invert": "1",
1120 "EventCode": "0x5E",
1121 "UMask": "0x1",
1122 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1123 "Counter": "0,1,2,3",
1124 "EventName": "RS_EVENTS.EMPTY_END",
1125 "CounterMask": "1",
1126 "SampleAfterValue": "200003",
1127 "CounterHTOff": "0,1,2,3,4,5,6,7"
1128 },
1129 {
1130 "EventCode": "0xA1",
1131 "UMask": "0x1",
1132 "BriefDescription": "Cycles per thread when uops are executed in port 0.",
1133 "Counter": "0,1,2,3",
1134 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
1135 "SampleAfterValue": "2000003",
1136 "CounterHTOff": "0,1,2,3,4,5,6,7"
1137 },
1138 {
1139 "EventCode": "0xA1",
1140 "UMask": "0x2",
1141 "BriefDescription": "Cycles per thread when uops are executed in port 1.",
1142 "Counter": "0,1,2,3",
1143 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
1144 "SampleAfterValue": "2000003",
1145 "CounterHTOff": "0,1,2,3,4,5,6,7"
1146 },
1147 {
1148 "EventCode": "0xA1",
1149 "UMask": "0x4",
1150 "BriefDescription": "Cycles per thread when uops are executed in port 2.",
1151 "Counter": "0,1,2,3",
1152 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
1153 "SampleAfterValue": "2000003",
1154 "CounterHTOff": "0,1,2,3,4,5,6,7"
1155 },
1156 {
1157 "EventCode": "0xA1",
1158 "UMask": "0x8",
1159 "BriefDescription": "Cycles per thread when uops are executed in port 3.",
1160 "Counter": "0,1,2,3",
1161 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
1162 "SampleAfterValue": "2000003",
1163 "CounterHTOff": "0,1,2,3,4,5,6,7"
1164 },
1165 {
1166 "EventCode": "0xA1",
1167 "UMask": "0x10",
1168 "BriefDescription": "Cycles per thread when uops are executed in port 4.",
1169 "Counter": "0,1,2,3",
1170 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
1171 "SampleAfterValue": "2000003",
1172 "CounterHTOff": "0,1,2,3,4,5,6,7"
1173 },
1174 {
1175 "EventCode": "0xA1",
1176 "UMask": "0x20",
1177 "BriefDescription": "Cycles per thread when uops are executed in port 5.",
1178 "Counter": "0,1,2,3",
1179 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
1180 "SampleAfterValue": "2000003",
1181 "CounterHTOff": "0,1,2,3,4,5,6,7"
1182 },
1183 {
1184 "EventCode": "0xA1",
1185 "UMask": "0x40",
1186 "BriefDescription": "Cycles per thread when uops are executed in port 6.",
1187 "Counter": "0,1,2,3",
1188 "EventName": "UOPS_DISPATCHED_PORT.PORT_6",
1189 "SampleAfterValue": "2000003",
1190 "CounterHTOff": "0,1,2,3,4,5,6,7"
1191 },
1192 {
1193 "EventCode": "0xA1",
1194 "UMask": "0x80",
1195 "BriefDescription": "Cycles per thread when uops are executed in port 7.",
1196 "Counter": "0,1,2,3",
1197 "EventName": "UOPS_DISPATCHED_PORT.PORT_7",
1198 "SampleAfterValue": "2000003",
1199 "CounterHTOff": "0,1,2,3,4,5,6,7"
1200 },
1201 {
1202 "EventCode": "0x00",
1203 "UMask": "0x2",
1204 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1205 "Counter": "Fixed counter 2",
1206 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1207 "AnyThread": "1",
1208 "SampleAfterValue": "2000003",
1209 "CounterHTOff": "Fixed counter 2"
1210 },
1211 {
1212 "EventCode": "0x3C",
1213 "UMask": "0x0",
1214 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1215 "Counter": "0,1,2,3",
1216 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1217 "AnyThread": "1",
1218 "SampleAfterValue": "2000003",
1219 "CounterHTOff": "0,1,2,3,4,5,6,7"
1220 },
1221 {
1222 "EventCode": "0x3C",
1223 "UMask": "0x1",
1224 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate)",
1225 "Counter": "0,1,2,3",
1226 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1227 "AnyThread": "1",
1228 "PublicDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1229 "SampleAfterValue": "2000003",
1230 "CounterHTOff": "0,1,2,3,4,5,6,7"
1231 },
1232 {
1233 "EventCode": "0x0D",
1234 "UMask": "0x3",
1235 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke)",
1236 "Counter": "0,1,2,3",
1237 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1238 "AnyThread": "1",
1239 "CounterMask": "1",
1240 "PublicDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1241 "SampleAfterValue": "2000003",
1242 "CounterHTOff": "0,1,2,3,4,5,6,7"
1243 },
1244 {
1245 "EventCode": "0xb1",
1246 "UMask": "0x2",
1247 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1248 "Counter": "0,1,2,3",
1249 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1250 "CounterMask": "1",
1251 "Errata": "HSD30, HSM31",
1252 "SampleAfterValue": "2000003",
1253 "CounterHTOff": "0,1,2,3,4,5,6,7"
1254 },
1255 {
1256 "EventCode": "0xb1",
1257 "UMask": "0x2",
1258 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1259 "Counter": "0,1,2,3",
1260 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1261 "CounterMask": "2",
1262 "Errata": "HSD30, HSM31",
1263 "SampleAfterValue": "2000003",
1264 "CounterHTOff": "0,1,2,3,4,5,6,7"
1265 },
1266 {
1267 "EventCode": "0xb1",
1268 "UMask": "0x2",
1269 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1270 "Counter": "0,1,2,3",
1271 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1272 "CounterMask": "3",
1273 "Errata": "HSD30, HSM31",
1274 "SampleAfterValue": "2000003",
1275 "CounterHTOff": "0,1,2,3,4,5,6,7"
1276 },
1277 {
1278 "EventCode": "0xb1",
1279 "UMask": "0x2",
1280 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1281 "Counter": "0,1,2,3",
1282 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1283 "CounterMask": "4",
1284 "Errata": "HSD30, HSM31",
1285 "SampleAfterValue": "2000003",
1286 "CounterHTOff": "0,1,2,3,4,5,6,7"
1287 },
1288 {
1289 "Invert": "1",
1290 "EventCode": "0xb1",
1291 "UMask": "0x2",
1292 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1293 "Counter": "0,1,2,3",
1294 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1295 "Errata": "HSD30, HSM31",
1296 "SampleAfterValue": "2000003",
1297 "CounterHTOff": "0,1,2,3,4,5,6,7"
1298 },
1299 {
1300 "EventCode": "0x3C",
1301 "UMask": "0x1",
1302 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1303 "Counter": "0,1,2,3",
1304 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1305 "PublicDescription": "Reference cycles when the thread is unhalted. (counts at 100 MHz rate)",
1306 "SampleAfterValue": "2000003",
1307 "CounterHTOff": "0,1,2,3,4,5,6,7"
1308 },
1309 {
1310 "EventCode": "0x3C",
1311 "UMask": "0x1",
1312 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate)",
1313 "Counter": "0,1,2,3",
1314 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1315 "AnyThread": "1",
1316 "PublicDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1317 "SampleAfterValue": "2000003",
1318 "CounterHTOff": "0,1,2,3,4,5,6,7"
1319 },
1320 {
1321 "EventCode": "0x3C",
1322 "UMask": "0x2",
1323 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1324 "Counter": "0,1,2,3",
1325 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1326 "SampleAfterValue": "2000003",
1327 "CounterHTOff": "0,1,2,3,4,5,6,7"
1328 }
1329] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/virtual-memory.json b/tools/perf/pmu-events/arch/x86/haswellx/virtual-memory.json
new file mode 100644
index 000000000000..9c00f8ef6a07
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/virtual-memory.json
@@ -0,0 +1,484 @@
1[
2 {
3 "EventCode": "0x08",
4 "UMask": "0x1",
5 "BriefDescription": "Load misses in all DTLB levels that cause page walks",
6 "Counter": "0,1,2,3",
7 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
8 "PublicDescription": "Misses in all TLB levels that cause a page walk of any page size.",
9 "SampleAfterValue": "100003",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x08",
14 "UMask": "0x2",
15 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (4K).",
16 "Counter": "0,1,2,3",
17 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
18 "PublicDescription": "Completed page walks due to demand load misses that caused 4K page walks in any TLB levels.",
19 "SampleAfterValue": "2000003",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0x08",
24 "UMask": "0x4",
25 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (2M/4M).",
26 "Counter": "0,1,2,3",
27 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
28 "PublicDescription": "Completed page walks due to demand load misses that caused 2M/4M page walks in any TLB levels.",
29 "SampleAfterValue": "2000003",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "EventCode": "0x08",
34 "UMask": "0x8",
35 "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (1G)",
36 "Counter": "0,1,2,3",
37 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1G",
38 "SampleAfterValue": "2000003",
39 "CounterHTOff": "0,1,2,3,4,5,6,7"
40 },
41 {
42 "EventCode": "0x08",
43 "UMask": "0x10",
44 "BriefDescription": "Cycles when PMH is busy with page walks",
45 "Counter": "0,1,2,3",
46 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
47 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by DTLB load misses.",
48 "SampleAfterValue": "2000003",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "EventCode": "0x08",
53 "UMask": "0x20",
54 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (4K)",
55 "Counter": "0,1,2,3",
56 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_4K",
57 "PublicDescription": "This event counts load operations from a 4K page that miss the first DTLB level but hit the second and do not cause page walks.",
58 "SampleAfterValue": "2000003",
59 "CounterHTOff": "0,1,2,3,4,5,6,7"
60 },
61 {
62 "EventCode": "0x08",
63 "UMask": "0x40",
64 "BriefDescription": "Load misses that miss the DTLB and hit the STLB (2M)",
65 "Counter": "0,1,2,3",
66 "EventName": "DTLB_LOAD_MISSES.STLB_HIT_2M",
67 "PublicDescription": "This event counts load operations from a 2M page that miss the first DTLB level but hit the second and do not cause page walks.",
68 "SampleAfterValue": "2000003",
69 "CounterHTOff": "0,1,2,3,4,5,6,7"
70 },
71 {
72 "EventCode": "0x08",
73 "UMask": "0x80",
74 "BriefDescription": "DTLB demand load misses with low part of linear-to-physical address translation missed",
75 "Counter": "0,1,2,3",
76 "EventName": "DTLB_LOAD_MISSES.PDE_CACHE_MISS",
77 "PublicDescription": "DTLB demand load misses with low part of linear-to-physical address translation missed.",
78 "SampleAfterValue": "100003",
79 "CounterHTOff": "0,1,2,3,4,5,6,7"
80 },
81 {
82 "EventCode": "0x49",
83 "UMask": "0x1",
84 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
85 "Counter": "0,1,2,3",
86 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
87 "PublicDescription": "Miss in all TLB levels causes a page walk of any page size (4K/2M/4M/1G).",
88 "SampleAfterValue": "100003",
89 "CounterHTOff": "0,1,2,3,4,5,6,7"
90 },
91 {
92 "EventCode": "0x49",
93 "UMask": "0x2",
94 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (4K)",
95 "Counter": "0,1,2,3",
96 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
97 "PublicDescription": "Completed page walks due to store misses in one or more TLB levels of 4K page structure.",
98 "SampleAfterValue": "100003",
99 "CounterHTOff": "0,1,2,3,4,5,6,7"
100 },
101 {
102 "EventCode": "0x49",
103 "UMask": "0x4",
104 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (2M/4M)",
105 "Counter": "0,1,2,3",
106 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
107 "PublicDescription": "Completed page walks due to store misses in one or more TLB levels of 2M/4M page structure.",
108 "SampleAfterValue": "100003",
109 "CounterHTOff": "0,1,2,3,4,5,6,7"
110 },
111 {
112 "EventCode": "0x49",
113 "UMask": "0x8",
114 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks. (1G)",
115 "Counter": "0,1,2,3",
116 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1G",
117 "SampleAfterValue": "100003",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "EventCode": "0x49",
122 "UMask": "0x10",
123 "BriefDescription": "Cycles when PMH is busy with page walks",
124 "Counter": "0,1,2,3",
125 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
126 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by DTLB store misses.",
127 "SampleAfterValue": "100003",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "EventCode": "0x49",
132 "UMask": "0x20",
133 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (4K)",
134 "Counter": "0,1,2,3",
135 "EventName": "DTLB_STORE_MISSES.STLB_HIT_4K",
136 "PublicDescription": "This event counts store operations from a 4K page that miss the first DTLB level but hit the second and do not cause page walks.",
137 "SampleAfterValue": "100003",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0x49",
142 "UMask": "0x40",
143 "BriefDescription": "Store misses that miss the DTLB and hit the STLB (2M)",
144 "Counter": "0,1,2,3",
145 "EventName": "DTLB_STORE_MISSES.STLB_HIT_2M",
146 "PublicDescription": "This event counts store operations from a 2M page that miss the first DTLB level but hit the second and do not cause page walks.",
147 "SampleAfterValue": "100003",
148 "CounterHTOff": "0,1,2,3,4,5,6,7"
149 },
150 {
151 "EventCode": "0x49",
152 "UMask": "0x80",
153 "BriefDescription": "DTLB store misses with low part of linear-to-physical address translation missed",
154 "Counter": "0,1,2,3",
155 "EventName": "DTLB_STORE_MISSES.PDE_CACHE_MISS",
156 "PublicDescription": "DTLB store misses with low part of linear-to-physical address translation missed.",
157 "SampleAfterValue": "100003",
158 "CounterHTOff": "0,1,2,3,4,5,6,7"
159 },
160 {
161 "EventCode": "0x4f",
162 "UMask": "0x10",
163 "BriefDescription": "Cycle count for an Extended Page table walk.",
164 "Counter": "0,1,2,3",
165 "EventName": "EPT.WALK_CYCLES",
166 "SampleAfterValue": "2000003",
167 "CounterHTOff": "0,1,2,3,4,5,6,7"
168 },
169 {
170 "EventCode": "0x85",
171 "UMask": "0x1",
172 "BriefDescription": "Misses at all ITLB levels that cause page walks",
173 "Counter": "0,1,2,3",
174 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
175 "PublicDescription": "Misses in ITLB that causes a page walk of any page size.",
176 "SampleAfterValue": "100003",
177 "CounterHTOff": "0,1,2,3,4,5,6,7"
178 },
179 {
180 "EventCode": "0x85",
181 "UMask": "0x2",
182 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (4K)",
183 "Counter": "0,1,2,3",
184 "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
185 "PublicDescription": "Completed page walks due to misses in ITLB 4K page entries.",
186 "SampleAfterValue": "100003",
187 "CounterHTOff": "0,1,2,3,4,5,6,7"
188 },
189 {
190 "EventCode": "0x85",
191 "UMask": "0x4",
192 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (2M/4M)",
193 "Counter": "0,1,2,3",
194 "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
195 "PublicDescription": "Completed page walks due to misses in ITLB 2M/4M page entries.",
196 "SampleAfterValue": "100003",
197 "CounterHTOff": "0,1,2,3,4,5,6,7"
198 },
199 {
200 "EventCode": "0x85",
201 "UMask": "0x8",
202 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (1G)",
203 "Counter": "0,1,2,3",
204 "EventName": "ITLB_MISSES.WALK_COMPLETED_1G",
205 "SampleAfterValue": "100003",
206 "CounterHTOff": "0,1,2,3,4,5,6,7"
207 },
208 {
209 "EventCode": "0x85",
210 "UMask": "0x10",
211 "BriefDescription": "Cycles when PMH is busy with page walks",
212 "Counter": "0,1,2,3",
213 "EventName": "ITLB_MISSES.WALK_DURATION",
214 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by ITLB misses.",
215 "SampleAfterValue": "100003",
216 "CounterHTOff": "0,1,2,3,4,5,6,7"
217 },
218 {
219 "EventCode": "0x85",
220 "UMask": "0x20",
221 "BriefDescription": "Core misses that miss the DTLB and hit the STLB (4K)",
222 "Counter": "0,1,2,3",
223 "EventName": "ITLB_MISSES.STLB_HIT_4K",
224 "PublicDescription": "ITLB misses that hit STLB (4K).",
225 "SampleAfterValue": "100003",
226 "CounterHTOff": "0,1,2,3,4,5,6,7"
227 },
228 {
229 "EventCode": "0x85",
230 "UMask": "0x40",
231 "BriefDescription": "Code misses that miss the DTLB and hit the STLB (2M)",
232 "Counter": "0,1,2,3",
233 "EventName": "ITLB_MISSES.STLB_HIT_2M",
234 "PublicDescription": "ITLB misses that hit STLB (2M).",
235 "SampleAfterValue": "100003",
236 "CounterHTOff": "0,1,2,3,4,5,6,7"
237 },
238 {
239 "EventCode": "0xae",
240 "UMask": "0x1",
241 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
242 "Counter": "0,1,2,3",
243 "EventName": "ITLB.ITLB_FLUSH",
244 "PublicDescription": "Counts the number of ITLB flushes, includes 4k/2M/4M pages.",
245 "SampleAfterValue": "100003",
246 "CounterHTOff": "0,1,2,3,4,5,6,7"
247 },
248 {
249 "EventCode": "0xBC",
250 "UMask": "0x11",
251 "BriefDescription": "Number of DTLB page walker hits in the L1+FB",
252 "Counter": "0,1,2,3",
253 "EventName": "PAGE_WALKER_LOADS.DTLB_L1",
254 "PublicDescription": "Number of DTLB page walker loads that hit in the L1+FB.",
255 "SampleAfterValue": "2000003",
256 "CounterHTOff": "0,1,2,3"
257 },
258 {
259 "EventCode": "0xBC",
260 "UMask": "0x21",
261 "BriefDescription": "Number of ITLB page walker hits in the L1+FB",
262 "Counter": "0,1,2,3",
263 "EventName": "PAGE_WALKER_LOADS.ITLB_L1",
264 "PublicDescription": "Number of ITLB page walker loads that hit in the L1+FB.",
265 "SampleAfterValue": "2000003",
266 "CounterHTOff": "0,1,2,3"
267 },
268 {
269 "EventCode": "0xBC",
270 "UMask": "0x41",
271 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in the L1 and FB.",
272 "Counter": "0,1,2,3",
273 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_L1",
274 "SampleAfterValue": "2000003",
275 "CounterHTOff": "0,1,2,3"
276 },
277 {
278 "EventCode": "0xBC",
279 "UMask": "0x81",
280 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in the L1 and FB.",
281 "Counter": "0,1,2,3",
282 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_L1",
283 "SampleAfterValue": "2000003",
284 "CounterHTOff": "0,1,2,3"
285 },
286 {
287 "EventCode": "0xBC",
288 "UMask": "0x12",
289 "BriefDescription": "Number of DTLB page walker hits in the L2",
290 "Counter": "0,1,2,3",
291 "EventName": "PAGE_WALKER_LOADS.DTLB_L2",
292 "PublicDescription": "Number of DTLB page walker loads that hit in the L2.",
293 "SampleAfterValue": "2000003",
294 "CounterHTOff": "0,1,2,3"
295 },
296 {
297 "EventCode": "0xBC",
298 "UMask": "0x22",
299 "BriefDescription": "Number of ITLB page walker hits in the L2",
300 "Counter": "0,1,2,3",
301 "EventName": "PAGE_WALKER_LOADS.ITLB_L2",
302 "PublicDescription": "Number of ITLB page walker loads that hit in the L2.",
303 "SampleAfterValue": "2000003",
304 "CounterHTOff": "0,1,2,3"
305 },
306 {
307 "EventCode": "0xBC",
308 "UMask": "0x42",
309 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in the L2.",
310 "Counter": "0,1,2,3",
311 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_L2",
312 "SampleAfterValue": "2000003",
313 "CounterHTOff": "0,1,2,3"
314 },
315 {
316 "EventCode": "0xBC",
317 "UMask": "0x82",
318 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in the L2.",
319 "Counter": "0,1,2,3",
320 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_L2",
321 "SampleAfterValue": "2000003",
322 "CounterHTOff": "0,1,2,3"
323 },
324 {
325 "EventCode": "0xBC",
326 "UMask": "0x14",
327 "BriefDescription": "Number of DTLB page walker hits in the L3 + XSNP",
328 "Counter": "0,1,2,3",
329 "EventName": "PAGE_WALKER_LOADS.DTLB_L3",
330 "Errata": "HSD25",
331 "PublicDescription": "Number of DTLB page walker loads that hit in the L3.",
332 "SampleAfterValue": "2000003",
333 "CounterHTOff": "0,1,2,3"
334 },
335 {
336 "EventCode": "0xBC",
337 "UMask": "0x24",
338 "BriefDescription": "Number of ITLB page walker hits in the L3 + XSNP",
339 "Counter": "0,1,2,3",
340 "EventName": "PAGE_WALKER_LOADS.ITLB_L3",
341 "Errata": "HSD25",
342 "PublicDescription": "Number of ITLB page walker loads that hit in the L3.",
343 "SampleAfterValue": "2000003",
344 "CounterHTOff": "0,1,2,3"
345 },
346 {
347 "EventCode": "0xBC",
348 "UMask": "0x44",
349 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in the L3.",
350 "Counter": "0,1,2,3",
351 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_L3",
352 "SampleAfterValue": "2000003",
353 "CounterHTOff": "0,1,2,3"
354 },
355 {
356 "EventCode": "0xBC",
357 "UMask": "0x84",
358 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in the L2.",
359 "Counter": "0,1,2,3",
360 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_L3",
361 "SampleAfterValue": "2000003",
362 "CounterHTOff": "0,1,2,3"
363 },
364 {
365 "EventCode": "0xBC",
366 "UMask": "0x18",
367 "BriefDescription": "Number of DTLB page walker hits in Memory",
368 "Counter": "0,1,2,3",
369 "EventName": "PAGE_WALKER_LOADS.DTLB_MEMORY",
370 "Errata": "HSD25",
371 "PublicDescription": "Number of DTLB page walker loads from memory.",
372 "SampleAfterValue": "2000003",
373 "CounterHTOff": "0,1,2,3"
374 },
375 {
376 "EventCode": "0xBC",
377 "UMask": "0x28",
378 "BriefDescription": "Number of ITLB page walker hits in Memory",
379 "Counter": "0,1,2,3",
380 "EventName": "PAGE_WALKER_LOADS.ITLB_MEMORY",
381 "Errata": "HSD25",
382 "PublicDescription": "Number of ITLB page walker loads from memory.",
383 "SampleAfterValue": "2000003",
384 "CounterHTOff": "0,1,2,3"
385 },
386 {
387 "EventCode": "0xBC",
388 "UMask": "0x48",
389 "BriefDescription": "Counts the number of Extended Page Table walks from the DTLB that hit in memory.",
390 "Counter": "0,1,2,3",
391 "EventName": "PAGE_WALKER_LOADS.EPT_DTLB_MEMORY",
392 "SampleAfterValue": "2000003",
393 "CounterHTOff": "0,1,2,3"
394 },
395 {
396 "EventCode": "0xBC",
397 "UMask": "0x88",
398 "BriefDescription": "Counts the number of Extended Page Table walks from the ITLB that hit in memory.",
399 "Counter": "0,1,2,3",
400 "EventName": "PAGE_WALKER_LOADS.EPT_ITLB_MEMORY",
401 "SampleAfterValue": "2000003",
402 "CounterHTOff": "0,1,2,3"
403 },
404 {
405 "EventCode": "0xBD",
406 "UMask": "0x1",
407 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
408 "Counter": "0,1,2,3",
409 "EventName": "TLB_FLUSH.DTLB_THREAD",
410 "PublicDescription": "DTLB flush attempts of the thread-specific entries.",
411 "SampleAfterValue": "100003",
412 "CounterHTOff": "0,1,2,3,4,5,6,7"
413 },
414 {
415 "EventCode": "0xBD",
416 "UMask": "0x20",
417 "BriefDescription": "STLB flush attempts",
418 "Counter": "0,1,2,3",
419 "EventName": "TLB_FLUSH.STLB_ANY",
420 "PublicDescription": "Count number of STLB flush attempts.",
421 "SampleAfterValue": "100003",
422 "CounterHTOff": "0,1,2,3,4,5,6,7"
423 },
424 {
425 "EventCode": "0x08",
426 "UMask": "0xe",
427 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
428 "Counter": "0,1,2,3",
429 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
430 "PublicDescription": "Completed page walks in any TLB of any page size due to demand load misses.",
431 "SampleAfterValue": "100003",
432 "CounterHTOff": "0,1,2,3,4,5,6,7"
433 },
434 {
435 "EventCode": "0x08",
436 "UMask": "0x60",
437 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks",
438 "Counter": "0,1,2,3",
439 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
440 "PublicDescription": "Number of cache load STLB hits. No page walk.",
441 "SampleAfterValue": "2000003",
442 "CounterHTOff": "0,1,2,3,4,5,6,7"
443 },
444 {
445 "EventCode": "0x49",
446 "UMask": "0xe",
447 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks",
448 "Counter": "0,1,2,3",
449 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
450 "PublicDescription": "Completed page walks due to store miss in any TLB levels of any page size (4K/2M/4M/1G).",
451 "SampleAfterValue": "100003",
452 "CounterHTOff": "0,1,2,3,4,5,6,7"
453 },
454 {
455 "EventCode": "0x49",
456 "UMask": "0x60",
457 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks",
458 "Counter": "0,1,2,3",
459 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
460 "PublicDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
461 "SampleAfterValue": "100003",
462 "CounterHTOff": "0,1,2,3,4,5,6,7"
463 },
464 {
465 "EventCode": "0x85",
466 "UMask": "0xe",
467 "BriefDescription": "Misses in all ITLB levels that cause completed page walks",
468 "Counter": "0,1,2,3",
469 "EventName": "ITLB_MISSES.WALK_COMPLETED",
470 "PublicDescription": "Completed page walks in ITLB of any page size.",
471 "SampleAfterValue": "100003",
472 "CounterHTOff": "0,1,2,3,4,5,6,7"
473 },
474 {
475 "EventCode": "0x85",
476 "UMask": "0x60",
477 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks",
478 "Counter": "0,1,2,3",
479 "EventName": "ITLB_MISSES.STLB_HIT",
480 "PublicDescription": "ITLB misses that hit STLB. No page walk.",
481 "SampleAfterValue": "100003",
482 "CounterHTOff": "0,1,2,3,4,5,6,7"
483 }
484] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivybridge/cache.json b/tools/perf/pmu-events/arch/x86/ivybridge/cache.json
new file mode 100644
index 000000000000..f1ee6d4853c5
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivybridge/cache.json
@@ -0,0 +1,1123 @@
1[
2 {
3 "PublicDescription": "Demand Data Read requests that hit L2 cache.",
4 "EventCode": "0x24",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Demand Data Read requests that hit L2 cache",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "RFO requests that hit L2 cache.",
14 "EventCode": "0x24",
15 "Counter": "0,1,2,3",
16 "UMask": "0x4",
17 "EventName": "L2_RQSTS.RFO_HIT",
18 "SampleAfterValue": "200003",
19 "BriefDescription": "RFO requests that hit L2 cache",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Counts the number of store RFO requests that miss the L2 cache.",
24 "EventCode": "0x24",
25 "Counter": "0,1,2,3",
26 "UMask": "0x8",
27 "EventName": "L2_RQSTS.RFO_MISS",
28 "SampleAfterValue": "200003",
29 "BriefDescription": "RFO requests that miss L2 cache",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Number of instruction fetches that hit the L2 cache.",
34 "EventCode": "0x24",
35 "Counter": "0,1,2,3",
36 "UMask": "0x10",
37 "EventName": "L2_RQSTS.CODE_RD_HIT",
38 "SampleAfterValue": "200003",
39 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Number of instruction fetches that missed the L2 cache.",
44 "EventCode": "0x24",
45 "Counter": "0,1,2,3",
46 "UMask": "0x20",
47 "EventName": "L2_RQSTS.CODE_RD_MISS",
48 "SampleAfterValue": "200003",
49 "BriefDescription": "L2 cache misses when fetching instructions",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Counts all L2 HW prefetcher requests that hit L2.",
54 "EventCode": "0x24",
55 "Counter": "0,1,2,3",
56 "UMask": "0x40",
57 "EventName": "L2_RQSTS.PF_HIT",
58 "SampleAfterValue": "200003",
59 "BriefDescription": "Requests from the L2 hardware prefetchers that hit L2 cache",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Counts all L2 HW prefetcher requests that missed L2.",
64 "EventCode": "0x24",
65 "Counter": "0,1,2,3",
66 "UMask": "0x80",
67 "EventName": "L2_RQSTS.PF_MISS",
68 "SampleAfterValue": "200003",
69 "BriefDescription": "Requests from the L2 hardware prefetchers that miss L2 cache",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "PublicDescription": "Counts any demand and L1 HW prefetch data load requests to L2.",
74 "EventCode": "0x24",
75 "Counter": "0,1,2,3",
76 "UMask": "0x3",
77 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
78 "SampleAfterValue": "200003",
79 "BriefDescription": "Demand Data Read requests",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "PublicDescription": "Counts all L2 store RFO requests.",
84 "EventCode": "0x24",
85 "Counter": "0,1,2,3",
86 "UMask": "0xc",
87 "EventName": "L2_RQSTS.ALL_RFO",
88 "SampleAfterValue": "200003",
89 "BriefDescription": "RFO requests to L2 cache",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "PublicDescription": "Counts all L2 code requests.",
94 "EventCode": "0x24",
95 "Counter": "0,1,2,3",
96 "UMask": "0x30",
97 "EventName": "L2_RQSTS.ALL_CODE_RD",
98 "SampleAfterValue": "200003",
99 "BriefDescription": "L2 code requests",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "PublicDescription": "Counts all L2 HW prefetcher requests.",
104 "EventCode": "0x24",
105 "Counter": "0,1,2,3",
106 "UMask": "0xc0",
107 "EventName": "L2_RQSTS.ALL_PF",
108 "SampleAfterValue": "200003",
109 "BriefDescription": "Requests from L2 hardware prefetchers",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "PublicDescription": "RFOs that miss cache lines.",
114 "EventCode": "0x27",
115 "Counter": "0,1,2,3",
116 "UMask": "0x1",
117 "EventName": "L2_STORE_LOCK_RQSTS.MISS",
118 "SampleAfterValue": "200003",
119 "BriefDescription": "RFOs that miss cache lines",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "PublicDescription": "RFOs that hit cache lines in M state.",
124 "EventCode": "0x27",
125 "Counter": "0,1,2,3",
126 "UMask": "0x8",
127 "EventName": "L2_STORE_LOCK_RQSTS.HIT_M",
128 "SampleAfterValue": "200003",
129 "BriefDescription": "RFOs that hit cache lines in M state",
130 "CounterHTOff": "0,1,2,3,4,5,6,7"
131 },
132 {
133 "PublicDescription": "RFOs that access cache lines in any state.",
134 "EventCode": "0x27",
135 "Counter": "0,1,2,3",
136 "UMask": "0xf",
137 "EventName": "L2_STORE_LOCK_RQSTS.ALL",
138 "SampleAfterValue": "200003",
139 "BriefDescription": "RFOs that access cache lines in any state",
140 "CounterHTOff": "0,1,2,3,4,5,6,7"
141 },
142 {
143 "PublicDescription": "Not rejected writebacks that missed LLC.",
144 "EventCode": "0x28",
145 "Counter": "0,1,2,3",
146 "UMask": "0x1",
147 "EventName": "L2_L1D_WB_RQSTS.MISS",
148 "SampleAfterValue": "200003",
149 "BriefDescription": "Count the number of modified Lines evicted from L1 and missed L2. (Non-rejected WBs from the DCU.)",
150 "CounterHTOff": "0,1,2,3,4,5,6,7"
151 },
152 {
153 "PublicDescription": "Not rejected writebacks from L1D to L2 cache lines in E state.",
154 "EventCode": "0x28",
155 "Counter": "0,1,2,3",
156 "UMask": "0x4",
157 "EventName": "L2_L1D_WB_RQSTS.HIT_E",
158 "SampleAfterValue": "200003",
159 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in E state",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "PublicDescription": "Not rejected writebacks from L1D to L2 cache lines in M state.",
164 "EventCode": "0x28",
165 "Counter": "0,1,2,3",
166 "UMask": "0x8",
167 "EventName": "L2_L1D_WB_RQSTS.HIT_M",
168 "SampleAfterValue": "200003",
169 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in M state",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "EventCode": "0x28",
174 "Counter": "0,1,2,3",
175 "UMask": "0xf",
176 "EventName": "L2_L1D_WB_RQSTS.ALL",
177 "SampleAfterValue": "200003",
178 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in any state.",
179 "CounterHTOff": "0,1,2,3,4,5,6,7"
180 },
181 {
182 "PublicDescription": "This event counts each cache miss condition for references to the last level cache.",
183 "EventCode": "0x2E",
184 "Counter": "0,1,2,3",
185 "UMask": "0x41",
186 "EventName": "LONGEST_LAT_CACHE.MISS",
187 "SampleAfterValue": "100003",
188 "BriefDescription": "Core-originated cacheable demand requests missed LLC",
189 "CounterHTOff": "0,1,2,3,4,5,6,7"
190 },
191 {
192 "PublicDescription": "This event counts requests originating from the core that reference a cache line in the last level cache.",
193 "EventCode": "0x2E",
194 "Counter": "0,1,2,3",
195 "UMask": "0x4f",
196 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
197 "SampleAfterValue": "100003",
198 "BriefDescription": "Core-originated cacheable demand requests that refer to LLC",
199 "CounterHTOff": "0,1,2,3,4,5,6,7"
200 },
201 {
202 "PublicDescription": "Increments the number of outstanding L1D misses every cycle. Set Cmask = 1 and Edge =1 to count occurrences.",
203 "EventCode": "0x48",
204 "Counter": "2",
205 "UMask": "0x1",
206 "EventName": "L1D_PEND_MISS.PENDING",
207 "SampleAfterValue": "2000003",
208 "BriefDescription": "L1D miss oustandings duration in cycles",
209 "CounterHTOff": "2"
210 },
211 {
212 "EventCode": "0x48",
213 "Counter": "2",
214 "UMask": "0x1",
215 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
216 "SampleAfterValue": "2000003",
217 "BriefDescription": "Cycles with L1D load Misses outstanding.",
218 "CounterMask": "1",
219 "CounterHTOff": "2"
220 },
221 {
222 "PublicDescription": "Counts the number of lines brought into the L1 data cache.",
223 "EventCode": "0x51",
224 "Counter": "0,1,2,3",
225 "UMask": "0x1",
226 "EventName": "L1D.REPLACEMENT",
227 "SampleAfterValue": "2000003",
228 "BriefDescription": "L1D data line replacements",
229 "CounterHTOff": "0,1,2,3,4,5,6,7"
230 },
231 {
232 "PublicDescription": "Offcore outstanding Demand Data Read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
233 "EventCode": "0x60",
234 "Counter": "0,1,2,3",
235 "UMask": "0x1",
236 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
237 "SampleAfterValue": "2000003",
238 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
239 "CounterHTOff": "0,1,2,3,4,5,6,7"
240 },
241 {
242 "PublicDescription": "Offcore outstanding Demand Code Read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
243 "EventCode": "0x60",
244 "Counter": "0,1,2,3",
245 "UMask": "0x2",
246 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
247 "SampleAfterValue": "2000003",
248 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
249 "CounterHTOff": "0,1,2,3,4,5,6,7"
250 },
251 {
252 "PublicDescription": "Offcore outstanding RFO store transactions in SQ to uncore. Set Cmask=1 to count cycles.",
253 "EventCode": "0x60",
254 "Counter": "0,1,2,3",
255 "UMask": "0x4",
256 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
257 "SampleAfterValue": "2000003",
258 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore",
259 "CounterHTOff": "0,1,2,3,4,5,6,7"
260 },
261 {
262 "PublicDescription": "Offcore outstanding cacheable data read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
263 "EventCode": "0x60",
264 "Counter": "0,1,2,3",
265 "UMask": "0x8",
266 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
267 "SampleAfterValue": "2000003",
268 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
269 "CounterHTOff": "0,1,2,3,4,5,6,7"
270 },
271 {
272 "PublicDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
273 "EventCode": "0x60",
274 "Counter": "0,1,2,3",
275 "UMask": "0x1",
276 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
277 "SampleAfterValue": "2000003",
278 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore",
279 "CounterMask": "1",
280 "CounterHTOff": "0,1,2,3,4,5,6,7"
281 },
282 {
283 "PublicDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
284 "EventCode": "0x60",
285 "Counter": "0,1,2,3",
286 "UMask": "0x8",
287 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
288 "SampleAfterValue": "2000003",
289 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore",
290 "CounterMask": "1",
291 "CounterHTOff": "0,1,2,3,4,5,6,7"
292 },
293 {
294 "PublicDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
295 "EventCode": "0x60",
296 "Counter": "0,1,2,3",
297 "UMask": "0x2",
298 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_CODE_RD",
299 "SampleAfterValue": "2000003",
300 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
301 "CounterMask": "1",
302 "CounterHTOff": "0,1,2,3,4,5,6,7"
303 },
304 {
305 "PublicDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
306 "EventCode": "0x60",
307 "Counter": "0,1,2,3",
308 "UMask": "0x4",
309 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
310 "SampleAfterValue": "2000003",
311 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
312 "CounterMask": "1",
313 "CounterHTOff": "0,1,2,3,4,5,6,7"
314 },
315 {
316 "PublicDescription": "Cycles in which the L1D is locked.",
317 "EventCode": "0x63",
318 "Counter": "0,1,2,3",
319 "UMask": "0x2",
320 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
321 "SampleAfterValue": "2000003",
322 "BriefDescription": "Cycles when L1D is locked",
323 "CounterHTOff": "0,1,2,3,4,5,6,7"
324 },
325 {
326 "PublicDescription": "Demand data read requests sent to uncore.",
327 "EventCode": "0xB0",
328 "Counter": "0,1,2,3",
329 "UMask": "0x1",
330 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
331 "SampleAfterValue": "100003",
332 "BriefDescription": "Demand Data Read requests sent to uncore",
333 "CounterHTOff": "0,1,2,3,4,5,6,7"
334 },
335 {
336 "PublicDescription": "Demand code read requests sent to uncore.",
337 "EventCode": "0xB0",
338 "Counter": "0,1,2,3",
339 "UMask": "0x2",
340 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
341 "SampleAfterValue": "100003",
342 "BriefDescription": "Cacheable and noncachaeble code read requests",
343 "CounterHTOff": "0,1,2,3,4,5,6,7"
344 },
345 {
346 "PublicDescription": "Demand RFO read requests sent to uncore, including regular RFOs, locks, ItoM.",
347 "EventCode": "0xB0",
348 "Counter": "0,1,2,3",
349 "UMask": "0x4",
350 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
351 "SampleAfterValue": "100003",
352 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
353 "CounterHTOff": "0,1,2,3,4,5,6,7"
354 },
355 {
356 "PublicDescription": "Data read requests sent to uncore (demand and prefetch).",
357 "EventCode": "0xB0",
358 "Counter": "0,1,2,3",
359 "UMask": "0x8",
360 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
361 "SampleAfterValue": "100003",
362 "BriefDescription": "Demand and prefetch data reads",
363 "CounterHTOff": "0,1,2,3,4,5,6,7"
364 },
365 {
366 "PublicDescription": "Cases when offcore requests buffer cannot take more entries for core.",
367 "EventCode": "0xB2",
368 "Counter": "0,1,2,3",
369 "UMask": "0x1",
370 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
371 "SampleAfterValue": "2000003",
372 "BriefDescription": "Cases when offcore requests buffer cannot take more entries for core",
373 "CounterHTOff": "0,1,2,3,4,5,6,7"
374 },
375 {
376 "PEBS": "1",
377 "EventCode": "0xD0",
378 "Counter": "0,1,2,3",
379 "UMask": "0x11",
380 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
381 "SampleAfterValue": "100003",
382 "BriefDescription": "Retired load uops that miss the STLB.",
383 "CounterHTOff": "0,1,2,3"
384 },
385 {
386 "PEBS": "1",
387 "EventCode": "0xD0",
388 "Counter": "0,1,2,3",
389 "UMask": "0x12",
390 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
391 "SampleAfterValue": "100003",
392 "BriefDescription": "Retired store uops that miss the STLB.",
393 "CounterHTOff": "0,1,2,3"
394 },
395 {
396 "PEBS": "1",
397 "EventCode": "0xD0",
398 "Counter": "0,1,2,3",
399 "UMask": "0x21",
400 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
401 "SampleAfterValue": "100007",
402 "BriefDescription": "Retired load uops with locked access.",
403 "CounterHTOff": "0,1,2,3"
404 },
405 {
406 "PEBS": "1",
407 "EventCode": "0xD0",
408 "Counter": "0,1,2,3",
409 "UMask": "0x41",
410 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
411 "SampleAfterValue": "100003",
412 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
413 "CounterHTOff": "0,1,2,3"
414 },
415 {
416 "PEBS": "1",
417 "EventCode": "0xD0",
418 "Counter": "0,1,2,3",
419 "UMask": "0x42",
420 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
421 "SampleAfterValue": "100003",
422 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
423 "CounterHTOff": "0,1,2,3"
424 },
425 {
426 "PEBS": "1",
427 "EventCode": "0xD0",
428 "Counter": "0,1,2,3",
429 "UMask": "0x81",
430 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
431 "SampleAfterValue": "2000003",
432 "BriefDescription": "All retired load uops.",
433 "CounterHTOff": "0,1,2,3"
434 },
435 {
436 "PEBS": "1",
437 "EventCode": "0xD0",
438 "Counter": "0,1,2,3",
439 "UMask": "0x82",
440 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
441 "SampleAfterValue": "2000003",
442 "BriefDescription": "All retired store uops.",
443 "CounterHTOff": "0,1,2,3"
444 },
445 {
446 "PEBS": "1",
447 "PublicDescription": "Retired load uops with L1 cache hits as data sources.",
448 "EventCode": "0xD1",
449 "Counter": "0,1,2,3",
450 "UMask": "0x1",
451 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
452 "SampleAfterValue": "2000003",
453 "BriefDescription": "Retired load uops with L1 cache hits as data sources. ",
454 "CounterHTOff": "0,1,2,3"
455 },
456 {
457 "PEBS": "1",
458 "PublicDescription": "Retired load uops with L2 cache hits as data sources.",
459 "EventCode": "0xD1",
460 "Counter": "0,1,2,3",
461 "UMask": "0x2",
462 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
463 "SampleAfterValue": "100003",
464 "BriefDescription": "Retired load uops with L2 cache hits as data sources. ",
465 "CounterHTOff": "0,1,2,3"
466 },
467 {
468 "PEBS": "1",
469 "PublicDescription": "Retired load uops whose data source was LLC hit with no snoop required.",
470 "EventCode": "0xD1",
471 "Counter": "0,1,2,3",
472 "UMask": "0x4",
473 "EventName": "MEM_LOAD_UOPS_RETIRED.LLC_HIT",
474 "SampleAfterValue": "50021",
475 "BriefDescription": "Retired load uops which data sources were data hits in LLC without snoops required. ",
476 "CounterHTOff": "0,1,2,3"
477 },
478 {
479 "PEBS": "1",
480 "PublicDescription": "Retired load uops whose data source followed an L1 miss.",
481 "EventCode": "0xD1",
482 "Counter": "0,1,2,3",
483 "UMask": "0x8",
484 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
485 "SampleAfterValue": "100003",
486 "BriefDescription": "Retired load uops which data sources following L1 data-cache miss",
487 "CounterHTOff": "0,1,2,3"
488 },
489 {
490 "PEBS": "1",
491 "PublicDescription": "Retired load uops that missed L2, excluding unknown sources.",
492 "EventCode": "0xD1",
493 "Counter": "0,1,2,3",
494 "UMask": "0x10",
495 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
496 "SampleAfterValue": "50021",
497 "BriefDescription": "Miss in mid-level (L2) cache. Excludes Unknown data-source.",
498 "CounterHTOff": "0,1,2,3"
499 },
500 {
501 "PEBS": "1",
502 "PublicDescription": "Retired load uops whose data source is LLC miss.",
503 "EventCode": "0xD1",
504 "Counter": "0,1,2,3",
505 "UMask": "0x20",
506 "EventName": "MEM_LOAD_UOPS_RETIRED.LLC_MISS",
507 "SampleAfterValue": "100007",
508 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
509 "CounterHTOff": "0,1,2,3"
510 },
511 {
512 "PEBS": "1",
513 "PublicDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
514 "EventCode": "0xD1",
515 "Counter": "0,1,2,3",
516 "UMask": "0x40",
517 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
518 "SampleAfterValue": "100003",
519 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready. ",
520 "CounterHTOff": "0,1,2,3"
521 },
522 {
523 "PEBS": "1",
524 "PublicDescription": "Retired load uops whose data source was an on-package core cache LLC hit and cross-core snoop missed.",
525 "EventCode": "0xD2",
526 "Counter": "0,1,2,3",
527 "UMask": "0x1",
528 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS",
529 "SampleAfterValue": "20011",
530 "BriefDescription": "Retired load uops which data sources were LLC hit and cross-core snoop missed in on-pkg core cache. ",
531 "CounterHTOff": "0,1,2,3"
532 },
533 {
534 "PEBS": "1",
535 "PublicDescription": "Retired load uops whose data source was an on-package LLC hit and cross-core snoop hits.",
536 "EventCode": "0xD2",
537 "Counter": "0,1,2,3",
538 "UMask": "0x2",
539 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT",
540 "SampleAfterValue": "20011",
541 "BriefDescription": "Retired load uops which data sources were LLC and cross-core snoop hits in on-pkg core cache. ",
542 "CounterHTOff": "0,1,2,3"
543 },
544 {
545 "PEBS": "1",
546 "PublicDescription": "Retired load uops whose data source was an on-package core cache with HitM responses.",
547 "EventCode": "0xD2",
548 "Counter": "0,1,2,3",
549 "UMask": "0x4",
550 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM",
551 "SampleAfterValue": "20011",
552 "BriefDescription": "Retired load uops which data sources were HitM responses from shared LLC. ",
553 "CounterHTOff": "0,1,2,3"
554 },
555 {
556 "PEBS": "1",
557 "PublicDescription": "Retired load uops whose data source was LLC hit with no snoop required.",
558 "EventCode": "0xD2",
559 "Counter": "0,1,2,3",
560 "UMask": "0x8",
561 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_NONE",
562 "SampleAfterValue": "100003",
563 "BriefDescription": "Retired load uops which data sources were hits in LLC without snoops required. ",
564 "CounterHTOff": "0,1,2,3"
565 },
566 {
567 "PublicDescription": "Retired load uop whose Data Source was: local DRAM either Snoop not needed or Snoop Miss (RspI)",
568 "EventCode": "0xD3",
569 "Counter": "0,1,2,3",
570 "UMask": "0x1",
571 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM",
572 "SampleAfterValue": "100007",
573 "BriefDescription": "Retired load uops which data sources missed LLC but serviced from local dram.",
574 "CounterHTOff": "0,1,2,3"
575 },
576 {
577 "PublicDescription": "Demand Data Read requests that access L2 cache.",
578 "EventCode": "0xF0",
579 "Counter": "0,1,2,3",
580 "UMask": "0x1",
581 "EventName": "L2_TRANS.DEMAND_DATA_RD",
582 "SampleAfterValue": "200003",
583 "BriefDescription": "Demand Data Read requests that access L2 cache",
584 "CounterHTOff": "0,1,2,3,4,5,6,7"
585 },
586 {
587 "PublicDescription": "RFO requests that access L2 cache.",
588 "EventCode": "0xF0",
589 "Counter": "0,1,2,3",
590 "UMask": "0x2",
591 "EventName": "L2_TRANS.RFO",
592 "SampleAfterValue": "200003",
593 "BriefDescription": "RFO requests that access L2 cache",
594 "CounterHTOff": "0,1,2,3,4,5,6,7"
595 },
596 {
597 "PublicDescription": "L2 cache accesses when fetching instructions.",
598 "EventCode": "0xF0",
599 "Counter": "0,1,2,3",
600 "UMask": "0x4",
601 "EventName": "L2_TRANS.CODE_RD",
602 "SampleAfterValue": "200003",
603 "BriefDescription": "L2 cache accesses when fetching instructions",
604 "CounterHTOff": "0,1,2,3,4,5,6,7"
605 },
606 {
607 "PublicDescription": "Any MLC or LLC HW prefetch accessing L2, including rejects.",
608 "EventCode": "0xF0",
609 "Counter": "0,1,2,3",
610 "UMask": "0x8",
611 "EventName": "L2_TRANS.ALL_PF",
612 "SampleAfterValue": "200003",
613 "BriefDescription": "L2 or LLC HW prefetches that access L2 cache",
614 "CounterHTOff": "0,1,2,3,4,5,6,7"
615 },
616 {
617 "PublicDescription": "L1D writebacks that access L2 cache.",
618 "EventCode": "0xF0",
619 "Counter": "0,1,2,3",
620 "UMask": "0x10",
621 "EventName": "L2_TRANS.L1D_WB",
622 "SampleAfterValue": "200003",
623 "BriefDescription": "L1D writebacks that access L2 cache",
624 "CounterHTOff": "0,1,2,3,4,5,6,7"
625 },
626 {
627 "PublicDescription": "L2 fill requests that access L2 cache.",
628 "EventCode": "0xF0",
629 "Counter": "0,1,2,3",
630 "UMask": "0x20",
631 "EventName": "L2_TRANS.L2_FILL",
632 "SampleAfterValue": "200003",
633 "BriefDescription": "L2 fill requests that access L2 cache",
634 "CounterHTOff": "0,1,2,3,4,5,6,7"
635 },
636 {
637 "PublicDescription": "L2 writebacks that access L2 cache.",
638 "EventCode": "0xF0",
639 "Counter": "0,1,2,3",
640 "UMask": "0x40",
641 "EventName": "L2_TRANS.L2_WB",
642 "SampleAfterValue": "200003",
643 "BriefDescription": "L2 writebacks that access L2 cache",
644 "CounterHTOff": "0,1,2,3,4,5,6,7"
645 },
646 {
647 "PublicDescription": "Transactions accessing L2 pipe.",
648 "EventCode": "0xF0",
649 "Counter": "0,1,2,3",
650 "UMask": "0x80",
651 "EventName": "L2_TRANS.ALL_REQUESTS",
652 "SampleAfterValue": "200003",
653 "BriefDescription": "Transactions accessing L2 pipe",
654 "CounterHTOff": "0,1,2,3,4,5,6,7"
655 },
656 {
657 "PublicDescription": "L2 cache lines in I state filling L2.",
658 "EventCode": "0xF1",
659 "Counter": "0,1,2,3",
660 "UMask": "0x1",
661 "EventName": "L2_LINES_IN.I",
662 "SampleAfterValue": "100003",
663 "BriefDescription": "L2 cache lines in I state filling L2",
664 "CounterHTOff": "0,1,2,3,4,5,6,7"
665 },
666 {
667 "PublicDescription": "L2 cache lines in S state filling L2.",
668 "EventCode": "0xF1",
669 "Counter": "0,1,2,3",
670 "UMask": "0x2",
671 "EventName": "L2_LINES_IN.S",
672 "SampleAfterValue": "100003",
673 "BriefDescription": "L2 cache lines in S state filling L2",
674 "CounterHTOff": "0,1,2,3,4,5,6,7"
675 },
676 {
677 "PublicDescription": "L2 cache lines in E state filling L2.",
678 "EventCode": "0xF1",
679 "Counter": "0,1,2,3",
680 "UMask": "0x4",
681 "EventName": "L2_LINES_IN.E",
682 "SampleAfterValue": "100003",
683 "BriefDescription": "L2 cache lines in E state filling L2",
684 "CounterHTOff": "0,1,2,3,4,5,6,7"
685 },
686 {
687 "PublicDescription": "L2 cache lines filling L2.",
688 "EventCode": "0xF1",
689 "Counter": "0,1,2,3",
690 "UMask": "0x7",
691 "EventName": "L2_LINES_IN.ALL",
692 "SampleAfterValue": "100003",
693 "BriefDescription": "L2 cache lines filling L2",
694 "CounterHTOff": "0,1,2,3,4,5,6,7"
695 },
696 {
697 "PublicDescription": "Clean L2 cache lines evicted by demand.",
698 "EventCode": "0xF2",
699 "Counter": "0,1,2,3",
700 "UMask": "0x1",
701 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
702 "SampleAfterValue": "100003",
703 "BriefDescription": "Clean L2 cache lines evicted by demand",
704 "CounterHTOff": "0,1,2,3,4,5,6,7"
705 },
706 {
707 "PublicDescription": "Dirty L2 cache lines evicted by demand.",
708 "EventCode": "0xF2",
709 "Counter": "0,1,2,3",
710 "UMask": "0x2",
711 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
712 "SampleAfterValue": "100003",
713 "BriefDescription": "Dirty L2 cache lines evicted by demand",
714 "CounterHTOff": "0,1,2,3,4,5,6,7"
715 },
716 {
717 "PublicDescription": "Clean L2 cache lines evicted by the MLC prefetcher.",
718 "EventCode": "0xF2",
719 "Counter": "0,1,2,3",
720 "UMask": "0x4",
721 "EventName": "L2_LINES_OUT.PF_CLEAN",
722 "SampleAfterValue": "100003",
723 "BriefDescription": "Clean L2 cache lines evicted by L2 prefetch",
724 "CounterHTOff": "0,1,2,3,4,5,6,7"
725 },
726 {
727 "PublicDescription": "Dirty L2 cache lines evicted by the MLC prefetcher.",
728 "EventCode": "0xF2",
729 "Counter": "0,1,2,3",
730 "UMask": "0x8",
731 "EventName": "L2_LINES_OUT.PF_DIRTY",
732 "SampleAfterValue": "100003",
733 "BriefDescription": "Dirty L2 cache lines evicted by L2 prefetch",
734 "CounterHTOff": "0,1,2,3,4,5,6,7"
735 },
736 {
737 "PublicDescription": "Dirty L2 cache lines filling the L2.",
738 "EventCode": "0xF2",
739 "Counter": "0,1,2,3",
740 "UMask": "0xa",
741 "EventName": "L2_LINES_OUT.DIRTY_ALL",
742 "SampleAfterValue": "100003",
743 "BriefDescription": "Dirty L2 cache lines filling the L2",
744 "CounterHTOff": "0,1,2,3,4,5,6,7"
745 },
746 {
747 "EventCode": "0xF4",
748 "Counter": "0,1,2,3",
749 "UMask": "0x10",
750 "EventName": "SQ_MISC.SPLIT_LOCK",
751 "SampleAfterValue": "100003",
752 "BriefDescription": "Split locks in SQ",
753 "CounterHTOff": "0,1,2,3,4,5,6,7"
754 },
755 {
756 "PublicDescription": "Retired load uops whose data source was local memory (cross-socket snoop not needed or missed).",
757 "EventCode": "0xD3",
758 "Counter": "0,1,2,3",
759 "UMask": "0x1",
760 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM",
761 "SampleAfterValue": "100007",
762 "BriefDescription": "Retired load uops which data sources missed LLC but serviced from local dram.",
763 "CounterHTOff": "0,1,2,3"
764 },
765 {
766 "PublicDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
767 "EventCode": "0x60",
768 "Counter": "0,1,2,3",
769 "UMask": "0x1",
770 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
771 "SampleAfterValue": "2000003",
772 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue",
773 "CounterMask": "6",
774 "CounterHTOff": "0,1,2,3,4,5,6,7"
775 },
776 {
777 "PublicDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
778 "EventCode": "0x48",
779 "Counter": "2",
780 "UMask": "0x1",
781 "AnyThread": "1",
782 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
783 "SampleAfterValue": "2000003",
784 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core",
785 "CounterMask": "1",
786 "CounterHTOff": "2"
787 },
788 {
789 "PublicDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
790 "EventCode": "0x48",
791 "Counter": "0,1,2,3",
792 "UMask": "0x2",
793 "EventName": "L1D_PEND_MISS.FB_FULL",
794 "SampleAfterValue": "2000003",
795 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability",
796 "CounterMask": "1",
797 "CounterHTOff": "0,1,2,3,4,5,6,7"
798 },
799 {
800 "EventCode": "0xB7, 0xBB",
801 "MSRValue": "0x3f803c0244",
802 "Counter": "0,1,2,3",
803 "UMask": "0x1",
804 "Offcore": "1",
805 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_HIT.ANY_RESPONSE",
806 "MSRIndex": "0x1a6,0x1a7",
807 "SampleAfterValue": "100003",
808 "BriefDescription": "Counts all demand & prefetch code reads that hit in the LLC",
809 "CounterHTOff": "0,1,2,3"
810 },
811 {
812 "EventCode": "0xB7, 0xBB",
813 "MSRValue": "0x1003c0244",
814 "Counter": "0,1,2,3",
815 "UMask": "0x1",
816 "Offcore": "1",
817 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_HIT.NO_SNOOP_NEEDED",
818 "MSRIndex": "0x1a6,0x1a7",
819 "SampleAfterValue": "100003",
820 "BriefDescription": "Counts demand & prefetch code reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
821 "CounterHTOff": "0,1,2,3"
822 },
823 {
824 "EventCode": "0xB7, 0xBB",
825 "MSRValue": "0x3f803c0091",
826 "Counter": "0,1,2,3",
827 "UMask": "0x1",
828 "Offcore": "1",
829 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.ANY_RESPONSE",
830 "MSRIndex": "0x1a6,0x1a7",
831 "SampleAfterValue": "100003",
832 "BriefDescription": "Counts all demand & prefetch data reads that hit in the LLC",
833 "CounterHTOff": "0,1,2,3"
834 },
835 {
836 "EventCode": "0xB7, 0xBB",
837 "MSRValue": "0x4003c0091",
838 "Counter": "0,1,2,3",
839 "UMask": "0x1",
840 "Offcore": "1",
841 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
842 "MSRIndex": "0x1a6,0x1a7",
843 "SampleAfterValue": "100003",
844 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
845 "CounterHTOff": "0,1,2,3"
846 },
847 {
848 "EventCode": "0xB7, 0xBB",
849 "MSRValue": "0x10003c0091",
850 "Counter": "0,1,2,3",
851 "UMask": "0x1",
852 "Offcore": "1",
853 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
854 "MSRIndex": "0x1a6,0x1a7",
855 "SampleAfterValue": "100003",
856 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
857 "CounterHTOff": "0,1,2,3"
858 },
859 {
860 "EventCode": "0xB7, 0xBB",
861 "MSRValue": "0x1003c0091",
862 "Counter": "0,1,2,3",
863 "UMask": "0x1",
864 "Offcore": "1",
865 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
866 "MSRIndex": "0x1a6,0x1a7",
867 "SampleAfterValue": "100003",
868 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
869 "CounterHTOff": "0,1,2,3"
870 },
871 {
872 "EventCode": "0xB7, 0xBB",
873 "MSRValue": "0x3f803c0122",
874 "Counter": "0,1,2,3",
875 "UMask": "0x1",
876 "Offcore": "1",
877 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.ANY_RESPONSE",
878 "MSRIndex": "0x1a6,0x1a7",
879 "SampleAfterValue": "100003",
880 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the LLC",
881 "CounterHTOff": "0,1,2,3"
882 },
883 {
884 "EventCode": "0xB7, 0xBB",
885 "MSRValue": "0x1003c0122",
886 "Counter": "0,1,2,3",
887 "UMask": "0x1",
888 "Offcore": "1",
889 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.NO_SNOOP_NEEDED",
890 "MSRIndex": "0x1a6,0x1a7",
891 "SampleAfterValue": "100003",
892 "BriefDescription": "Counts demand & prefetch RFOs that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
893 "CounterHTOff": "0,1,2,3"
894 },
895 {
896 "EventCode": "0xB7, 0xBB",
897 "MSRValue": "0x10008",
898 "Counter": "0,1,2,3",
899 "UMask": "0x1",
900 "Offcore": "1",
901 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
902 "MSRIndex": "0x1a6,0x1a7",
903 "SampleAfterValue": "100003",
904 "BriefDescription": "Counts all writebacks from the core to the LLC",
905 "CounterHTOff": "0,1,2,3"
906 },
907 {
908 "EventCode": "0xB7, 0xBB",
909 "MSRValue": "0x3f803c0004",
910 "Counter": "0,1,2,3",
911 "UMask": "0x1",
912 "Offcore": "1",
913 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.ANY_RESPONSE",
914 "MSRIndex": "0x1a6,0x1a7",
915 "SampleAfterValue": "100003",
916 "BriefDescription": "Counts all demand code reads that hit in the LLC",
917 "CounterHTOff": "0,1,2,3"
918 },
919 {
920 "EventCode": "0xB7, 0xBB",
921 "MSRValue": "0x1003c0004",
922 "Counter": "0,1,2,3",
923 "UMask": "0x1",
924 "Offcore": "1",
925 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.NO_SNOOP_NEEDED",
926 "MSRIndex": "0x1a6,0x1a7",
927 "SampleAfterValue": "100003",
928 "BriefDescription": "Counts demand code reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
929 "CounterHTOff": "0,1,2,3"
930 },
931 {
932 "EventCode": "0xB7, 0xBB",
933 "MSRValue": "0x3f803c0001",
934 "Counter": "0,1,2,3",
935 "UMask": "0x1",
936 "Offcore": "1",
937 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.ANY_RESPONSE",
938 "MSRIndex": "0x1a6,0x1a7",
939 "SampleAfterValue": "100003",
940 "BriefDescription": "Counts all demand data reads that hit in the LLC",
941 "CounterHTOff": "0,1,2,3"
942 },
943 {
944 "EventCode": "0xB7, 0xBB",
945 "MSRValue": "0x4003c0001",
946 "Counter": "0,1,2,3",
947 "UMask": "0x1",
948 "Offcore": "1",
949 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
950 "MSRIndex": "0x1a6,0x1a7",
951 "SampleAfterValue": "100003",
952 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
953 "CounterHTOff": "0,1,2,3"
954 },
955 {
956 "EventCode": "0xB7, 0xBB",
957 "MSRValue": "0x10003c0001",
958 "Counter": "0,1,2,3",
959 "UMask": "0x1",
960 "Offcore": "1",
961 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
962 "MSRIndex": "0x1a6,0x1a7",
963 "SampleAfterValue": "100003",
964 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
965 "CounterHTOff": "0,1,2,3"
966 },
967 {
968 "EventCode": "0xB7, 0xBB",
969 "MSRValue": "0x1003c0001",
970 "Counter": "0,1,2,3",
971 "UMask": "0x1",
972 "Offcore": "1",
973 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
974 "MSRIndex": "0x1a6,0x1a7",
975 "SampleAfterValue": "100003",
976 "BriefDescription": "Counts demand data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
977 "CounterHTOff": "0,1,2,3"
978 },
979 {
980 "EventCode": "0xB7, 0xBB",
981 "MSRValue": "0x3f803c0002",
982 "Counter": "0,1,2,3",
983 "UMask": "0x1",
984 "Offcore": "1",
985 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.ANY_RESPONSE",
986 "MSRIndex": "0x1a6,0x1a7",
987 "SampleAfterValue": "100003",
988 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the LLC",
989 "CounterHTOff": "0,1,2,3"
990 },
991 {
992 "EventCode": "0xB7, 0xBB",
993 "MSRValue": "0x10003c0002",
994 "Counter": "0,1,2,3",
995 "UMask": "0x1",
996 "Offcore": "1",
997 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE",
998 "MSRIndex": "0x1a6,0x1a7",
999 "SampleAfterValue": "100003",
1000 "BriefDescription": "Counts demand data writes (RFOs) that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1001 "CounterHTOff": "0,1,2,3"
1002 },
1003 {
1004 "EventCode": "0xB7, 0xBB",
1005 "MSRValue": "0x1003c0002",
1006 "Counter": "0,1,2,3",
1007 "UMask": "0x1",
1008 "Offcore": "1",
1009 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.NO_SNOOP_NEEDED",
1010 "MSRIndex": "0x1a6,0x1a7",
1011 "SampleAfterValue": "100003",
1012 "BriefDescription": "Counts demand data writes (RFOs) that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
1013 "CounterHTOff": "0,1,2,3"
1014 },
1015 {
1016 "EventCode": "0xB7, 0xBB",
1017 "MSRValue": "0x18000",
1018 "Counter": "0,1,2,3",
1019 "UMask": "0x1",
1020 "Offcore": "1",
1021 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_RESPONSE",
1022 "MSRIndex": "0x1a6,0x1a7",
1023 "SampleAfterValue": "100003",
1024 "BriefDescription": "Counts miscellaneous accesses that include port i/o, MMIO and uncacheable memory accesses. It also includes L2 hints sent to LLC to keep a line from being evicted out of the core caches",
1025 "CounterHTOff": "0,1,2,3"
1026 },
1027 {
1028 "EventCode": "0xB7, 0xBB",
1029 "MSRValue": "0x10400",
1030 "Counter": "0,1,2,3",
1031 "UMask": "0x1",
1032 "Offcore": "1",
1033 "EventName": "OFFCORE_RESPONSE.SPLIT_LOCK_UC_LOCK.ANY_RESPONSE",
1034 "MSRIndex": "0x1a6,0x1a7",
1035 "SampleAfterValue": "100003",
1036 "BriefDescription": "Counts requests where the address of an atomic lock instruction spans a cache line boundary or the lock instruction is executed on uncacheable address ",
1037 "CounterHTOff": "0,1,2,3"
1038 },
1039 {
1040 "EventCode": "0xB7, 0xBB",
1041 "MSRValue": "0x10800",
1042 "Counter": "0,1,2,3",
1043 "UMask": "0x1",
1044 "Offcore": "1",
1045 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.ANY_RESPONSE",
1046 "MSRIndex": "0x1a6,0x1a7",
1047 "SampleAfterValue": "100003",
1048 "BriefDescription": "Counts non-temporal stores",
1049 "CounterHTOff": "0,1,2,3"
1050 },
1051 {
1052 "EventCode": "0xB7, 0xBB",
1053 "MSRValue": "0x00010001",
1054 "Counter": "0,1,2,3",
1055 "UMask": "0x1",
1056 "Offcore": "1",
1057 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
1058 "MSRIndex": "0x1a6,0x1a7",
1059 "SampleAfterValue": "100003",
1060 "BriefDescription": "Counts all demand data reads ",
1061 "CounterHTOff": "0,1,2,3"
1062 },
1063 {
1064 "EventCode": "0xB7, 0xBB",
1065 "MSRValue": "0x00010002",
1066 "Counter": "0,1,2,3",
1067 "UMask": "0x1",
1068 "Offcore": "1",
1069 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_RESPONSE",
1070 "MSRIndex": "0x1a6,0x1a7",
1071 "SampleAfterValue": "100003",
1072 "BriefDescription": "Counts all demand rfo's ",
1073 "CounterHTOff": "0,1,2,3"
1074 },
1075 {
1076 "EventCode": "0xB7, 0xBB",
1077 "MSRValue": "0x00010004",
1078 "Counter": "0,1,2,3",
1079 "UMask": "0x1",
1080 "Offcore": "1",
1081 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
1082 "MSRIndex": "0x1a6,0x1a7",
1083 "SampleAfterValue": "100003",
1084 "BriefDescription": "Counts all demand code reads",
1085 "CounterHTOff": "0,1,2,3"
1086 },
1087 {
1088 "EventCode": "0xB7, 0xBB",
1089 "MSRValue": "0x000105B3",
1090 "Counter": "0,1,2,3",
1091 "UMask": "0x1",
1092 "Offcore": "1",
1093 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.ANY_RESPONSE",
1094 "MSRIndex": "0x1a6,0x1a7",
1095 "SampleAfterValue": "100003",
1096 "BriefDescription": "Counts all demand & prefetch data reads",
1097 "CounterHTOff": "0,1,2,3"
1098 },
1099 {
1100 "EventCode": "0xB7, 0xBB",
1101 "MSRValue": "0x00010122",
1102 "Counter": "0,1,2,3",
1103 "UMask": "0x1",
1104 "Offcore": "1",
1105 "EventName": "OFFCORE_RESPONSE.ALL_RFO.ANY_RESPONSE",
1106 "MSRIndex": "0x1a6,0x1a7",
1107 "SampleAfterValue": "100003",
1108 "BriefDescription": "Counts all demand & prefetch prefetch RFOs ",
1109 "CounterHTOff": "0,1,2,3"
1110 },
1111 {
1112 "EventCode": "0xB7, 0xBB",
1113 "MSRValue": "0x000107F7",
1114 "Counter": "0,1,2,3",
1115 "UMask": "0x1",
1116 "Offcore": "1",
1117 "EventName": "OFFCORE_RESPONSE.ALL_READS.ANY_RESPONSE",
1118 "MSRIndex": "0x1a6,0x1a7",
1119 "SampleAfterValue": "100003",
1120 "BriefDescription": "Counts all data/code/rfo references (demand & prefetch) ",
1121 "CounterHTOff": "0,1,2,3"
1122 }
1123] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivybridge/floating-point.json b/tools/perf/pmu-events/arch/x86/ivybridge/floating-point.json
new file mode 100644
index 000000000000..950b62c0908e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivybridge/floating-point.json
@@ -0,0 +1,151 @@
1[
2 {
3 "PublicDescription": "Counts number of X87 uops executed.",
4 "EventCode": "0x10",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "FP_COMP_OPS_EXE.X87",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Number of FP Computational Uops Executed this cycle. The number of FADD, FSUB, FCOM, FMULs, integer MULsand IMULs, FDIVs, FPREMs, FSQRTS, integer DIVs, and IDIVs. This event does not distinguish an FADD used in the middle of a transcendental flow from a s",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Number of SSE* or AVX-128 FP Computational packed double-precision uops issued this cycle.",
14 "EventCode": "0x10",
15 "Counter": "0,1,2,3",
16 "UMask": "0x10",
17 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed double-precision uops issued this cycle",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Number of SSE* or AVX-128 FP Computational scalar single-precision uops issued this cycle.",
24 "EventCode": "0x10",
25 "Counter": "0,1,2,3",
26 "UMask": "0x20",
27 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar single-precision uops issued this cycle",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Number of SSE* or AVX-128 FP Computational packed single-precision uops issued this cycle.",
34 "EventCode": "0x10",
35 "Counter": "0,1,2,3",
36 "UMask": "0x40",
37 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_SINGLE",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed single-precision uops issued this cycle",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Counts number of SSE* or AVX-128 double precision FP scalar uops executed.",
44 "EventCode": "0x10",
45 "Counter": "0,1,2,3",
46 "UMask": "0x80",
47 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE",
48 "SampleAfterValue": "2000003",
49 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar double-precision uops issued this cycle",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Counts 256-bit packed single-precision floating-point instructions.",
54 "EventCode": "0x11",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "SIMD_FP_256.PACKED_SINGLE",
58 "SampleAfterValue": "2000003",
59 "BriefDescription": "number of GSSE-256 Computational FP single precision uops issued this cycle",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Counts 256-bit packed double-precision floating-point instructions.",
64 "EventCode": "0x11",
65 "Counter": "0,1,2,3",
66 "UMask": "0x2",
67 "EventName": "SIMD_FP_256.PACKED_DOUBLE",
68 "SampleAfterValue": "2000003",
69 "BriefDescription": "number of AVX-256 Computational FP double precision uops issued this cycle",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "PublicDescription": "Number of assists associated with 256-bit AVX store operations.",
74 "EventCode": "0xC1",
75 "Counter": "0,1,2,3",
76 "UMask": "0x8",
77 "EventName": "OTHER_ASSISTS.AVX_STORE",
78 "SampleAfterValue": "100003",
79 "BriefDescription": "Number of GSSE memory assist for stores. GSSE microcode assist is being invoked whenever the hardware is unable to properly handle GSSE-256b operations.",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0xC1",
84 "Counter": "0,1,2,3",
85 "UMask": "0x10",
86 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
87 "SampleAfterValue": "100003",
88 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
89 "CounterHTOff": "0,1,2,3,4,5,6,7"
90 },
91 {
92 "EventCode": "0xC1",
93 "Counter": "0,1,2,3",
94 "UMask": "0x20",
95 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
96 "SampleAfterValue": "100003",
97 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
98 "CounterHTOff": "0,1,2,3,4,5,6,7"
99 },
100 {
101 "PublicDescription": "Number of X87 FP assists due to output values.",
102 "EventCode": "0xCA",
103 "Counter": "0,1,2,3",
104 "UMask": "0x2",
105 "EventName": "FP_ASSIST.X87_OUTPUT",
106 "SampleAfterValue": "100003",
107 "BriefDescription": "Number of X87 assists due to output value.",
108 "CounterHTOff": "0,1,2,3,4,5,6,7"
109 },
110 {
111 "PublicDescription": "Number of X87 FP assists due to input values.",
112 "EventCode": "0xCA",
113 "Counter": "0,1,2,3",
114 "UMask": "0x4",
115 "EventName": "FP_ASSIST.X87_INPUT",
116 "SampleAfterValue": "100003",
117 "BriefDescription": "Number of X87 assists due to input value.",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "PublicDescription": "Number of SIMD FP assists due to output values.",
122 "EventCode": "0xCA",
123 "Counter": "0,1,2,3",
124 "UMask": "0x8",
125 "EventName": "FP_ASSIST.SIMD_OUTPUT",
126 "SampleAfterValue": "100003",
127 "BriefDescription": "Number of SIMD FP assists due to Output values",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "PublicDescription": "Number of SIMD FP assists due to input values.",
132 "EventCode": "0xCA",
133 "Counter": "0,1,2,3",
134 "UMask": "0x10",
135 "EventName": "FP_ASSIST.SIMD_INPUT",
136 "SampleAfterValue": "100003",
137 "BriefDescription": "Number of SIMD FP assists due to input values",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "Cycles with any input/output SSE* or FP assists.",
142 "EventCode": "0xCA",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1e",
145 "EventName": "FP_ASSIST.ANY",
146 "SampleAfterValue": "100003",
147 "BriefDescription": "Cycles with any input/output SSE or FP assist",
148 "CounterMask": "1",
149 "CounterHTOff": "0,1,2,3"
150 }
151] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivybridge/frontend.json b/tools/perf/pmu-events/arch/x86/ivybridge/frontend.json
new file mode 100644
index 000000000000..de72b84b3536
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivybridge/frontend.json
@@ -0,0 +1,305 @@
1[
2 {
3 "PublicDescription": "Counts cycles the IDQ is empty.",
4 "EventCode": "0x79",
5 "Counter": "0,1,2,3",
6 "UMask": "0x2",
7 "EventName": "IDQ.EMPTY",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles",
10 "CounterHTOff": "0,1,2,3"
11 },
12 {
13 "PublicDescription": "Increment each cycle # of uops delivered to IDQ from MITE path. Set Cmask = 1 to count cycles.",
14 "EventCode": "0x79",
15 "Counter": "0,1,2,3",
16 "UMask": "0x4",
17 "EventName": "IDQ.MITE_UOPS",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Increment each cycle. # of uops delivered to IDQ from DSB path. Set Cmask = 1 to count cycles.",
24 "EventCode": "0x79",
25 "Counter": "0,1,2,3",
26 "UMask": "0x8",
27 "EventName": "IDQ.DSB_UOPS",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by DSB. Set Cmask = 1 to count cycles. Add Edge=1 to count # of delivery.",
34 "EventCode": "0x79",
35 "Counter": "0,1,2,3",
36 "UMask": "0x10",
37 "EventName": "IDQ.MS_DSB_UOPS",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by MITE. Set Cmask = 1 to count cycles.",
44 "EventCode": "0x79",
45 "Counter": "0,1,2,3",
46 "UMask": "0x20",
47 "EventName": "IDQ.MS_MITE_UOPS",
48 "SampleAfterValue": "2000003",
49 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Increment each cycle # of uops delivered to IDQ from MS by either DSB or MITE. Set Cmask = 1 to count cycles.",
54 "EventCode": "0x79",
55 "Counter": "0,1,2,3",
56 "UMask": "0x30",
57 "EventName": "IDQ.MS_UOPS",
58 "SampleAfterValue": "2000003",
59 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
64 "EventCode": "0x79",
65 "Counter": "0,1,2,3",
66 "UMask": "0x30",
67 "EventName": "IDQ.MS_CYCLES",
68 "SampleAfterValue": "2000003",
69 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
70 "CounterMask": "1",
71 "CounterHTOff": "0,1,2,3,4,5,6,7"
72 },
73 {
74 "PublicDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path.",
75 "EventCode": "0x79",
76 "Counter": "0,1,2,3",
77 "UMask": "0x4",
78 "EventName": "IDQ.MITE_CYCLES",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path",
81 "CounterMask": "1",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "PublicDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path.",
86 "EventCode": "0x79",
87 "Counter": "0,1,2,3",
88 "UMask": "0x8",
89 "EventName": "IDQ.DSB_CYCLES",
90 "SampleAfterValue": "2000003",
91 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
92 "CounterMask": "1",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "PublicDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
97 "EventCode": "0x79",
98 "Counter": "0,1,2,3",
99 "UMask": "0x10",
100 "EventName": "IDQ.MS_DSB_CYCLES",
101 "SampleAfterValue": "2000003",
102 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
103 "CounterMask": "1",
104 "CounterHTOff": "0,1,2,3,4,5,6,7"
105 },
106 {
107 "PublicDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy.",
108 "EventCode": "0x79",
109 "Counter": "0,1,2,3",
110 "UMask": "0x10",
111 "EdgeDetect": "1",
112 "EventName": "IDQ.MS_DSB_OCCUR",
113 "SampleAfterValue": "2000003",
114 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy",
115 "CounterMask": "1",
116 "CounterHTOff": "0,1,2,3,4,5,6,7"
117 },
118 {
119 "PublicDescription": "Counts cycles DSB is delivered four uops. Set Cmask = 4.",
120 "EventCode": "0x79",
121 "Counter": "0,1,2,3",
122 "UMask": "0x18",
123 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
124 "SampleAfterValue": "2000003",
125 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
126 "CounterMask": "4",
127 "CounterHTOff": "0,1,2,3,4,5,6,7"
128 },
129 {
130 "PublicDescription": "Counts cycles DSB is delivered at least one uops. Set Cmask = 1.",
131 "EventCode": "0x79",
132 "Counter": "0,1,2,3",
133 "UMask": "0x18",
134 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
135 "SampleAfterValue": "2000003",
136 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
137 "CounterMask": "1",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "Counts cycles MITE is delivered four uops. Set Cmask = 4.",
142 "EventCode": "0x79",
143 "Counter": "0,1,2,3",
144 "UMask": "0x24",
145 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
146 "SampleAfterValue": "2000003",
147 "BriefDescription": "Cycles MITE is delivering 4 Uops",
148 "CounterMask": "4",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "PublicDescription": "Counts cycles MITE is delivered at least one uops. Set Cmask = 1.",
153 "EventCode": "0x79",
154 "Counter": "0,1,2,3",
155 "UMask": "0x24",
156 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
157 "SampleAfterValue": "2000003",
158 "BriefDescription": "Cycles MITE is delivering any Uop",
159 "CounterMask": "1",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "PublicDescription": "Number of uops delivered to IDQ from any path.",
164 "EventCode": "0x79",
165 "Counter": "0,1,2,3",
166 "UMask": "0x3c",
167 "EventName": "IDQ.MITE_ALL_UOPS",
168 "SampleAfterValue": "2000003",
169 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "PublicDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches.",
174 "EventCode": "0x80",
175 "Counter": "0,1,2,3",
176 "UMask": "0x1",
177 "EventName": "ICACHE.HIT",
178 "SampleAfterValue": "2000003",
179 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "PublicDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes UC accesses.",
184 "EventCode": "0x80",
185 "Counter": "0,1,2,3",
186 "UMask": "0x2",
187 "EventName": "ICACHE.MISSES",
188 "SampleAfterValue": "200003",
189 "BriefDescription": "Instruction cache, streaming buffer and victim cache misses",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "PublicDescription": "Cycles where a code-fetch stalled due to L1 instruction-cache miss or an iTLB miss.",
194 "EventCode": "0x80",
195 "Counter": "0,1,2,3",
196 "UMask": "0x4",
197 "EventName": "ICACHE.IFETCH_STALL",
198 "SampleAfterValue": "2000003",
199 "BriefDescription": "Cycles where a code-fetch stalled due to L1 instruction-cache miss or an iTLB miss",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "PublicDescription": "Count issue pipeline slots where no uop was delivered from the front end to the back end when there is no back-end stall.",
204 "EventCode": "0x9C",
205 "Counter": "0,1,2,3",
206 "UMask": "0x1",
207 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
208 "SampleAfterValue": "2000003",
209 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled ",
210 "CounterHTOff": "0,1,2,3"
211 },
212 {
213 "EventCode": "0x9C",
214 "Counter": "0,1,2,3",
215 "UMask": "0x1",
216 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
217 "SampleAfterValue": "2000003",
218 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
219 "CounterMask": "4",
220 "CounterHTOff": "0,1,2,3"
221 },
222 {
223 "EventCode": "0x9C",
224 "Counter": "0,1,2,3",
225 "UMask": "0x1",
226 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
227 "SampleAfterValue": "2000003",
228 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
229 "CounterMask": "3",
230 "CounterHTOff": "0,1,2,3"
231 },
232 {
233 "EventCode": "0x9C",
234 "Counter": "0,1,2,3",
235 "UMask": "0x1",
236 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
237 "SampleAfterValue": "2000003",
238 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
239 "CounterMask": "2",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "EventCode": "0x9C",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
247 "SampleAfterValue": "2000003",
248 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
249 "CounterMask": "1",
250 "CounterHTOff": "0,1,2,3"
251 },
252 {
253 "EventCode": "0x9C",
254 "Invert": "1",
255 "Counter": "0,1,2,3",
256 "UMask": "0x1",
257 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
258 "SampleAfterValue": "2000003",
259 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
260 "CounterMask": "1",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "PublicDescription": "Number of DSB to MITE switches.",
265 "EventCode": "0xAB",
266 "Counter": "0,1,2,3",
267 "UMask": "0x1",
268 "EventName": "DSB2MITE_SWITCHES.COUNT",
269 "SampleAfterValue": "2000003",
270 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switches",
271 "CounterHTOff": "0,1,2,3,4,5,6,7"
272 },
273 {
274 "PublicDescription": "Cycles DSB to MITE switches caused delay.",
275 "EventCode": "0xAB",
276 "Counter": "0,1,2,3",
277 "UMask": "0x2",
278 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
279 "SampleAfterValue": "2000003",
280 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles",
281 "CounterHTOff": "0,1,2,3,4,5,6,7"
282 },
283 {
284 "PublicDescription": "DSB Fill encountered > 3 DSB lines.",
285 "EventCode": "0xAC",
286 "Counter": "0,1,2,3",
287 "UMask": "0x8",
288 "EventName": "DSB_FILL.EXCEED_DSB_LINES",
289 "SampleAfterValue": "2000003",
290 "BriefDescription": "Cycles when Decode Stream Buffer (DSB) fill encounter more than 3 Decode Stream Buffer (DSB) lines",
291 "CounterHTOff": "0,1,2,3,4,5,6,7"
292 },
293 {
294 "PublicDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
295 "EventCode": "0x79",
296 "Counter": "0,1,2,3",
297 "UMask": "0x30",
298 "EdgeDetect": "1",
299 "EventName": "IDQ.MS_SWITCHES",
300 "SampleAfterValue": "2000003",
301 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer",
302 "CounterMask": "1",
303 "CounterHTOff": "0,1,2,3,4,5,6,7"
304 }
305] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivybridge/memory.json b/tools/perf/pmu-events/arch/x86/ivybridge/memory.json
new file mode 100644
index 000000000000..e1c6a1d4a4d5
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivybridge/memory.json
@@ -0,0 +1,236 @@
1[
2 {
3 "PublicDescription": "Speculative cache-line split load uops dispatched to L1D.",
4 "EventCode": "0x05",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "MISALIGN_MEM_REF.LOADS",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Speculative cache-line split Store-address uops dispatched to L1D.",
14 "EventCode": "0x05",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "MISALIGN_MEM_REF.STORES",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0xBE",
24 "Counter": "0,1,2,3",
25 "UMask": "0x1",
26 "EventName": "PAGE_WALKS.LLC_MISS",
27 "SampleAfterValue": "100003",
28 "BriefDescription": "Number of any page walk that had a miss in LLC.",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "EventCode": "0xC3",
33 "Counter": "0,1,2,3",
34 "UMask": "0x2",
35 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
36 "SampleAfterValue": "100003",
37 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
38 "CounterHTOff": "0,1,2,3,4,5,6,7"
39 },
40 {
41 "PEBS": "2",
42 "EventCode": "0xCD",
43 "Counter": "3",
44 "UMask": "0x2",
45 "EventName": "MEM_TRANS_RETIRED.PRECISE_STORE",
46 "SampleAfterValue": "2000003",
47 "BriefDescription": "Sample stores and collect precise store operation via PEBS record. PMC3 only.",
48 "PRECISE_STORE": "1",
49 "TakenAlone": "1",
50 "CounterHTOff": "3"
51 },
52 {
53 "PEBS": "2",
54 "PublicDescription": "Loads with latency value being above 4.",
55 "EventCode": "0xCD",
56 "MSRValue": "0x4",
57 "Counter": "3",
58 "UMask": "0x1",
59 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
60 "MSRIndex": "0x3F6",
61 "SampleAfterValue": "100003",
62 "BriefDescription": "Loads with latency value being above 4",
63 "TakenAlone": "1",
64 "CounterHTOff": "3"
65 },
66 {
67 "PEBS": "2",
68 "PublicDescription": "Loads with latency value being above 8.",
69 "EventCode": "0xCD",
70 "MSRValue": "0x8",
71 "Counter": "3",
72 "UMask": "0x1",
73 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
74 "MSRIndex": "0x3F6",
75 "SampleAfterValue": "50021",
76 "BriefDescription": "Loads with latency value being above 8",
77 "TakenAlone": "1",
78 "CounterHTOff": "3"
79 },
80 {
81 "PEBS": "2",
82 "PublicDescription": "Loads with latency value being above 16.",
83 "EventCode": "0xCD",
84 "MSRValue": "0x10",
85 "Counter": "3",
86 "UMask": "0x1",
87 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
88 "MSRIndex": "0x3F6",
89 "SampleAfterValue": "20011",
90 "BriefDescription": "Loads with latency value being above 16",
91 "TakenAlone": "1",
92 "CounterHTOff": "3"
93 },
94 {
95 "PEBS": "2",
96 "PublicDescription": "Loads with latency value being above 32.",
97 "EventCode": "0xCD",
98 "MSRValue": "0x20",
99 "Counter": "3",
100 "UMask": "0x1",
101 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
102 "MSRIndex": "0x3F6",
103 "SampleAfterValue": "100007",
104 "BriefDescription": "Loads with latency value being above 32",
105 "TakenAlone": "1",
106 "CounterHTOff": "3"
107 },
108 {
109 "PEBS": "2",
110 "PublicDescription": "Loads with latency value being above 64.",
111 "EventCode": "0xCD",
112 "MSRValue": "0x40",
113 "Counter": "3",
114 "UMask": "0x1",
115 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
116 "MSRIndex": "0x3F6",
117 "SampleAfterValue": "2003",
118 "BriefDescription": "Loads with latency value being above 64",
119 "TakenAlone": "1",
120 "CounterHTOff": "3"
121 },
122 {
123 "PEBS": "2",
124 "PublicDescription": "Loads with latency value being above 128.",
125 "EventCode": "0xCD",
126 "MSRValue": "0x80",
127 "Counter": "3",
128 "UMask": "0x1",
129 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
130 "MSRIndex": "0x3F6",
131 "SampleAfterValue": "1009",
132 "BriefDescription": "Loads with latency value being above 128",
133 "TakenAlone": "1",
134 "CounterHTOff": "3"
135 },
136 {
137 "PEBS": "2",
138 "PublicDescription": "Loads with latency value being above 256.",
139 "EventCode": "0xCD",
140 "MSRValue": "0x100",
141 "Counter": "3",
142 "UMask": "0x1",
143 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
144 "MSRIndex": "0x3F6",
145 "SampleAfterValue": "503",
146 "BriefDescription": "Loads with latency value being above 256",
147 "TakenAlone": "1",
148 "CounterHTOff": "3"
149 },
150 {
151 "PEBS": "2",
152 "PublicDescription": "Loads with latency value being above 512.",
153 "EventCode": "0xCD",
154 "MSRValue": "0x200",
155 "Counter": "3",
156 "UMask": "0x1",
157 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
158 "MSRIndex": "0x3F6",
159 "SampleAfterValue": "101",
160 "BriefDescription": "Loads with latency value being above 512",
161 "TakenAlone": "1",
162 "CounterHTOff": "3"
163 },
164 {
165 "EventCode": "0xB7, 0xBB",
166 "MSRValue": "0x300400244",
167 "Counter": "0,1,2,3",
168 "UMask": "0x1",
169 "Offcore": "1",
170 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.DRAM",
171 "MSRIndex": "0x1a6,0x1a7",
172 "SampleAfterValue": "100003",
173 "BriefDescription": "Counts all demand & prefetch code reads that miss the LLC and the data returned from dram",
174 "CounterHTOff": "0,1,2,3"
175 },
176 {
177 "EventCode": "0xB7, 0xBB",
178 "MSRValue": "0x300400091",
179 "Counter": "0,1,2,3",
180 "UMask": "0x1",
181 "Offcore": "1",
182 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.DRAM",
183 "MSRIndex": "0x1a6,0x1a7",
184 "SampleAfterValue": "100003",
185 "BriefDescription": "Counts all demand & prefetch data reads that miss the LLC and the data returned from dram",
186 "CounterHTOff": "0,1,2,3"
187 },
188 {
189 "EventCode": "0xB7, 0xBB",
190 "MSRValue": "0x3004003f7",
191 "Counter": "0,1,2,3",
192 "UMask": "0x1",
193 "Offcore": "1",
194 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.DRAM",
195 "MSRIndex": "0x1a6,0x1a7",
196 "SampleAfterValue": "100003",
197 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the LLC and the data returned from dram",
198 "CounterHTOff": "0,1,2,3"
199 },
200 {
201 "EventCode": "0xB7, 0xBB",
202 "MSRValue": "0x300400004",
203 "Counter": "0,1,2,3",
204 "UMask": "0x1",
205 "Offcore": "1",
206 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.DRAM",
207 "MSRIndex": "0x1a6,0x1a7",
208 "SampleAfterValue": "100003",
209 "BriefDescription": "Counts demand code reads that miss the LLC and the data returned from dram",
210 "CounterHTOff": "0,1,2,3"
211 },
212 {
213 "EventCode": "0xB7, 0xBB",
214 "MSRValue": "0x300400001",
215 "Counter": "0,1,2,3",
216 "UMask": "0x1",
217 "Offcore": "1",
218 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.DRAM",
219 "MSRIndex": "0x1a6,0x1a7",
220 "SampleAfterValue": "100003",
221 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from dram",
222 "CounterHTOff": "0,1,2,3"
223 },
224 {
225 "EventCode": "0xB7, 0xBB",
226 "MSRValue": "0x6004001b3",
227 "Counter": "0,1,2,3",
228 "UMask": "0x1",
229 "Offcore": "1",
230 "EventName": "OFFCORE_RESPONSE.DATA_IN_SOCKET.LLC_MISS.LOCAL_DRAM",
231 "MSRIndex": "0x1a6,0x1a7",
232 "SampleAfterValue": "100003",
233 "BriefDescription": "Counts LLC replacements",
234 "CounterHTOff": "0,1,2,3"
235 }
236] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivybridge/other.json b/tools/perf/pmu-events/arch/x86/ivybridge/other.json
new file mode 100644
index 000000000000..9c2dd0511a32
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivybridge/other.json
@@ -0,0 +1,44 @@
1[
2 {
3 "PublicDescription": "Unhalted core cycles when the thread is in ring 0.",
4 "EventCode": "0x5C",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "CPL_CYCLES.RING0",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Unhalted core cycles when the thread is in ring 0",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Unhalted core cycles when the thread is not in ring 0.",
14 "EventCode": "0x5C",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "CPL_CYCLES.RING123",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Number of intervals between processor halts while thread is in ring 0.",
24 "EventCode": "0x5C",
25 "Counter": "0,1,2,3",
26 "UMask": "0x1",
27 "EdgeDetect": "1",
28 "EventName": "CPL_CYCLES.RING0_TRANS",
29 "SampleAfterValue": "100007",
30 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0",
31 "CounterMask": "1",
32 "CounterHTOff": "0,1,2,3,4,5,6,7"
33 },
34 {
35 "PublicDescription": "Cycles in which the L1D and L2 are locked, due to a UC lock or split lock.",
36 "EventCode": "0x63",
37 "Counter": "0,1,2,3",
38 "UMask": "0x1",
39 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
40 "SampleAfterValue": "2000003",
41 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock",
42 "CounterHTOff": "0,1,2,3,4,5,6,7"
43 }
44] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivybridge/pipeline.json b/tools/perf/pmu-events/arch/x86/ivybridge/pipeline.json
new file mode 100644
index 000000000000..2145c28193f7
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivybridge/pipeline.json
@@ -0,0 +1,1307 @@
1[
2 {
3 "EventCode": "0x00",
4 "Counter": "Fixed counter 1",
5 "UMask": "0x1",
6 "EventName": "INST_RETIRED.ANY",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Instructions retired from execution.",
9 "CounterHTOff": "Fixed counter 1"
10 },
11 {
12 "EventCode": "0x00",
13 "Counter": "Fixed counter 2",
14 "UMask": "0x2",
15 "EventName": "CPU_CLK_UNHALTED.THREAD",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Core cycles when the thread is not in halt state.",
18 "CounterHTOff": "Fixed counter 2"
19 },
20 {
21 "EventCode": "0x00",
22 "Counter": "Fixed counter 3",
23 "UMask": "0x3",
24 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
25 "SampleAfterValue": "2000003",
26 "BriefDescription": "Reference cycles when the core is not in halt state.",
27 "CounterHTOff": "Fixed counter 3"
28 },
29 {
30 "PublicDescription": "Loads blocked by overlapping with store buffer that cannot be forwarded.",
31 "EventCode": "0x03",
32 "Counter": "0,1,2,3",
33 "UMask": "0x2",
34 "EventName": "LD_BLOCKS.STORE_FORWARD",
35 "SampleAfterValue": "100003",
36 "BriefDescription": "Cases when loads get true Block-on-Store blocking code preventing store forwarding",
37 "CounterHTOff": "0,1,2,3,4,5,6,7"
38 },
39 {
40 "PublicDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
41 "EventCode": "0x03",
42 "Counter": "0,1,2,3",
43 "UMask": "0x8",
44 "EventName": "LD_BLOCKS.NO_SR",
45 "SampleAfterValue": "100003",
46 "BriefDescription": "This event counts the number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
47 "CounterHTOff": "0,1,2,3,4,5,6,7"
48 },
49 {
50 "PublicDescription": "False dependencies in MOB due to partial compare on address.",
51 "EventCode": "0x07",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
55 "SampleAfterValue": "100003",
56 "BriefDescription": "False dependencies in MOB due to partial compare on address",
57 "CounterHTOff": "0,1,2,3,4,5,6,7"
58 },
59 {
60 "EventCode": "0x0D",
61 "Counter": "0,1,2,3",
62 "UMask": "0x3",
63 "EventName": "INT_MISC.RECOVERY_CYCLES",
64 "SampleAfterValue": "2000003",
65 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc.)",
66 "CounterMask": "1",
67 "CounterHTOff": "0,1,2,3,4,5,6,7"
68 },
69 {
70 "EventCode": "0x0D",
71 "Counter": "0,1,2,3",
72 "UMask": "0x3",
73 "EdgeDetect": "1",
74 "EventName": "INT_MISC.RECOVERY_STALLS_COUNT",
75 "SampleAfterValue": "2000003",
76 "BriefDescription": "Number of occurences waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc.)",
77 "CounterMask": "1",
78 "CounterHTOff": "0,1,2,3,4,5,6,7"
79 },
80 {
81 "PublicDescription": "Increments each cycle the # of Uops issued by the RAT to RS. Set Cmask = 1, Inv = 1, Any= 1to count stalled cycles of this core.",
82 "EventCode": "0x0E",
83 "Counter": "0,1,2,3",
84 "UMask": "0x1",
85 "EventName": "UOPS_ISSUED.ANY",
86 "SampleAfterValue": "2000003",
87 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
88 "CounterHTOff": "0,1,2,3,4,5,6,7"
89 },
90 {
91 "PublicDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread.",
92 "EventCode": "0x0E",
93 "Invert": "1",
94 "Counter": "0,1,2,3",
95 "UMask": "0x1",
96 "EventName": "UOPS_ISSUED.STALL_CYCLES",
97 "SampleAfterValue": "2000003",
98 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread",
99 "CounterMask": "1",
100 "CounterHTOff": "0,1,2,3"
101 },
102 {
103 "PublicDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads.",
104 "EventCode": "0x0E",
105 "Invert": "1",
106 "Counter": "0,1,2,3",
107 "UMask": "0x1",
108 "AnyThread": "1",
109 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
110 "SampleAfterValue": "2000003",
111 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads",
112 "CounterMask": "1",
113 "CounterHTOff": "0,1,2,3"
114 },
115 {
116 "PublicDescription": "Number of flags-merge uops allocated. Such uops adds delay.",
117 "EventCode": "0x0E",
118 "Counter": "0,1,2,3",
119 "UMask": "0x10",
120 "EventName": "UOPS_ISSUED.FLAGS_MERGE",
121 "SampleAfterValue": "2000003",
122 "BriefDescription": "Number of flags-merge uops being allocated.",
123 "CounterHTOff": "0,1,2,3,4,5,6,7"
124 },
125 {
126 "PublicDescription": "Number of slow LEA or similar uops allocated. Such uop has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
127 "EventCode": "0x0E",
128 "Counter": "0,1,2,3",
129 "UMask": "0x20",
130 "EventName": "UOPS_ISSUED.SLOW_LEA",
131 "SampleAfterValue": "2000003",
132 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
133 "CounterHTOff": "0,1,2,3,4,5,6,7"
134 },
135 {
136 "PublicDescription": "Number of multiply packed/scalar single precision uops allocated.",
137 "EventCode": "0x0E",
138 "Counter": "0,1,2,3",
139 "UMask": "0x40",
140 "EventName": "UOPS_ISSUED.SINGLE_MUL",
141 "SampleAfterValue": "2000003",
142 "BriefDescription": "Number of Multiply packed/scalar single precision uops allocated",
143 "CounterHTOff": "0,1,2,3,4,5,6,7"
144 },
145 {
146 "PublicDescription": "Cycles that the divider is active, includes INT and FP. Set 'edge =1, cmask=1' to count the number of divides.",
147 "EventCode": "0x14",
148 "Counter": "0,1,2,3",
149 "UMask": "0x1",
150 "EventName": "ARITH.FPU_DIV_ACTIVE",
151 "SampleAfterValue": "2000003",
152 "BriefDescription": "Cycles when divider is busy executing divide operations",
153 "CounterHTOff": "0,1,2,3,4,5,6,7"
154 },
155 {
156 "PublicDescription": "Divide operations executed.",
157 "EventCode": "0x14",
158 "Counter": "0,1,2,3",
159 "UMask": "0x4",
160 "EdgeDetect": "1",
161 "EventName": "ARITH.FPU_DIV",
162 "SampleAfterValue": "100003",
163 "BriefDescription": "Divide operations executed",
164 "CounterMask": "1",
165 "CounterHTOff": "0,1,2,3,4,5,6,7"
166 },
167 {
168 "PublicDescription": "Counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling.",
169 "EventCode": "0x3C",
170 "Counter": "0,1,2,3",
171 "UMask": "0x0",
172 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
173 "SampleAfterValue": "2000003",
174 "BriefDescription": "Thread cycles when thread is not in halt state",
175 "CounterHTOff": "0,1,2,3,4,5,6,7"
176 },
177 {
178 "PublicDescription": "Increments at the frequency of XCLK (100 MHz) when not halted.",
179 "EventCode": "0x3C",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
183 "SampleAfterValue": "2000003",
184 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
185 "CounterHTOff": "0,1,2,3,4,5,6,7"
186 },
187 {
188 "EventCode": "0x3C",
189 "Counter": "0,1,2,3",
190 "UMask": "0x2",
191 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
192 "SampleAfterValue": "2000003",
193 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other is halted.",
194 "CounterHTOff": "0,1,2,3"
195 },
196 {
197 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for S/W prefetch.",
198 "EventCode": "0x4C",
199 "Counter": "0,1,2,3",
200 "UMask": "0x1",
201 "EventName": "LOAD_HIT_PRE.SW_PF",
202 "SampleAfterValue": "100003",
203 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch",
204 "CounterHTOff": "0,1,2,3,4,5,6,7"
205 },
206 {
207 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for H/W prefetch.",
208 "EventCode": "0x4C",
209 "Counter": "0,1,2,3",
210 "UMask": "0x2",
211 "EventName": "LOAD_HIT_PRE.HW_PF",
212 "SampleAfterValue": "100003",
213 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch",
214 "CounterHTOff": "0,1,2,3,4,5,6,7"
215 },
216 {
217 "EventCode": "0x58",
218 "Counter": "0,1,2,3",
219 "UMask": "0x4",
220 "EventName": "MOVE_ELIMINATION.INT_NOT_ELIMINATED",
221 "SampleAfterValue": "1000003",
222 "BriefDescription": "Number of integer Move Elimination candidate uops that were not eliminated.",
223 "CounterHTOff": "0,1,2,3,4,5,6,7"
224 },
225 {
226 "EventCode": "0x58",
227 "Counter": "0,1,2,3",
228 "UMask": "0x8",
229 "EventName": "MOVE_ELIMINATION.SIMD_NOT_ELIMINATED",
230 "SampleAfterValue": "1000003",
231 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were not eliminated.",
232 "CounterHTOff": "0,1,2,3,4,5,6,7"
233 },
234 {
235 "EventCode": "0x58",
236 "Counter": "0,1,2,3",
237 "UMask": "0x1",
238 "EventName": "MOVE_ELIMINATION.INT_ELIMINATED",
239 "SampleAfterValue": "1000003",
240 "BriefDescription": "Number of integer Move Elimination candidate uops that were eliminated.",
241 "CounterHTOff": "0,1,2,3,4,5,6,7"
242 },
243 {
244 "EventCode": "0x58",
245 "Counter": "0,1,2,3",
246 "UMask": "0x2",
247 "EventName": "MOVE_ELIMINATION.SIMD_ELIMINATED",
248 "SampleAfterValue": "1000003",
249 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were eliminated.",
250 "CounterHTOff": "0,1,2,3,4,5,6,7"
251 },
252 {
253 "PublicDescription": "Cycles the RS is empty for the thread.",
254 "EventCode": "0x5E",
255 "Counter": "0,1,2,3",
256 "UMask": "0x1",
257 "EventName": "RS_EVENTS.EMPTY_CYCLES",
258 "SampleAfterValue": "2000003",
259 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
260 "CounterHTOff": "0,1,2,3,4,5,6,7"
261 },
262 {
263 "EventCode": "0x87",
264 "Counter": "0,1,2,3",
265 "UMask": "0x1",
266 "EventName": "ILD_STALL.LCP",
267 "SampleAfterValue": "2000003",
268 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
269 "CounterHTOff": "0,1,2,3,4,5,6,7"
270 },
271 {
272 "PublicDescription": "Stall cycles due to IQ is full.",
273 "EventCode": "0x87",
274 "Counter": "0,1,2,3",
275 "UMask": "0x4",
276 "EventName": "ILD_STALL.IQ_FULL",
277 "SampleAfterValue": "2000003",
278 "BriefDescription": "Stall cycles because IQ is full",
279 "CounterHTOff": "0,1,2,3,4,5,6,7"
280 },
281 {
282 "PublicDescription": "Not taken macro-conditional branches.",
283 "EventCode": "0x88",
284 "Counter": "0,1,2,3",
285 "UMask": "0x41",
286 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
287 "SampleAfterValue": "200003",
288 "BriefDescription": "Not taken macro-conditional branches",
289 "CounterHTOff": "0,1,2,3,4,5,6,7"
290 },
291 {
292 "PublicDescription": "Taken speculative and retired macro-conditional branches.",
293 "EventCode": "0x88",
294 "Counter": "0,1,2,3",
295 "UMask": "0x81",
296 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
297 "SampleAfterValue": "200003",
298 "BriefDescription": "Taken speculative and retired macro-conditional branches",
299 "CounterHTOff": "0,1,2,3,4,5,6,7"
300 },
301 {
302 "PublicDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects.",
303 "EventCode": "0x88",
304 "Counter": "0,1,2,3",
305 "UMask": "0x82",
306 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
307 "SampleAfterValue": "200003",
308 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects",
309 "CounterHTOff": "0,1,2,3,4,5,6,7"
310 },
311 {
312 "PublicDescription": "Taken speculative and retired indirect branches excluding calls and returns.",
313 "EventCode": "0x88",
314 "Counter": "0,1,2,3",
315 "UMask": "0x84",
316 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
317 "SampleAfterValue": "200003",
318 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns",
319 "CounterHTOff": "0,1,2,3,4,5,6,7"
320 },
321 {
322 "PublicDescription": "Taken speculative and retired indirect branches with return mnemonic.",
323 "EventCode": "0x88",
324 "Counter": "0,1,2,3",
325 "UMask": "0x88",
326 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
327 "SampleAfterValue": "200003",
328 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic",
329 "CounterHTOff": "0,1,2,3,4,5,6,7"
330 },
331 {
332 "PublicDescription": "Taken speculative and retired direct near calls.",
333 "EventCode": "0x88",
334 "Counter": "0,1,2,3",
335 "UMask": "0x90",
336 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
337 "SampleAfterValue": "200003",
338 "BriefDescription": "Taken speculative and retired direct near calls",
339 "CounterHTOff": "0,1,2,3,4,5,6,7"
340 },
341 {
342 "PublicDescription": "Taken speculative and retired indirect calls.",
343 "EventCode": "0x88",
344 "Counter": "0,1,2,3",
345 "UMask": "0xa0",
346 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
347 "SampleAfterValue": "200003",
348 "BriefDescription": "Taken speculative and retired indirect calls",
349 "CounterHTOff": "0,1,2,3,4,5,6,7"
350 },
351 {
352 "PublicDescription": "Speculative and retired macro-conditional branches.",
353 "EventCode": "0x88",
354 "Counter": "0,1,2,3",
355 "UMask": "0xc1",
356 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
357 "SampleAfterValue": "200003",
358 "BriefDescription": "Speculative and retired macro-conditional branches",
359 "CounterHTOff": "0,1,2,3,4,5,6,7"
360 },
361 {
362 "PublicDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects.",
363 "EventCode": "0x88",
364 "Counter": "0,1,2,3",
365 "UMask": "0xc2",
366 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
367 "SampleAfterValue": "200003",
368 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects",
369 "CounterHTOff": "0,1,2,3,4,5,6,7"
370 },
371 {
372 "PublicDescription": "Speculative and retired indirect branches excluding calls and returns.",
373 "EventCode": "0x88",
374 "Counter": "0,1,2,3",
375 "UMask": "0xc4",
376 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
377 "SampleAfterValue": "200003",
378 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns",
379 "CounterHTOff": "0,1,2,3,4,5,6,7"
380 },
381 {
382 "EventCode": "0x88",
383 "Counter": "0,1,2,3",
384 "UMask": "0xc8",
385 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
386 "SampleAfterValue": "200003",
387 "BriefDescription": "Speculative and retired indirect return branches.",
388 "CounterHTOff": "0,1,2,3,4,5,6,7"
389 },
390 {
391 "PublicDescription": "Speculative and retired direct near calls.",
392 "EventCode": "0x88",
393 "Counter": "0,1,2,3",
394 "UMask": "0xd0",
395 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
396 "SampleAfterValue": "200003",
397 "BriefDescription": "Speculative and retired direct near calls",
398 "CounterHTOff": "0,1,2,3,4,5,6,7"
399 },
400 {
401 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
402 "EventCode": "0x88",
403 "Counter": "0,1,2,3",
404 "UMask": "0xff",
405 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
406 "SampleAfterValue": "200003",
407 "BriefDescription": "Speculative and retired branches",
408 "CounterHTOff": "0,1,2,3,4,5,6,7"
409 },
410 {
411 "PublicDescription": "Not taken speculative and retired mispredicted macro conditional branches.",
412 "EventCode": "0x89",
413 "Counter": "0,1,2,3",
414 "UMask": "0x41",
415 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
416 "SampleAfterValue": "200003",
417 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches",
418 "CounterHTOff": "0,1,2,3,4,5,6,7"
419 },
420 {
421 "PublicDescription": "Taken speculative and retired mispredicted macro conditional branches.",
422 "EventCode": "0x89",
423 "Counter": "0,1,2,3",
424 "UMask": "0x81",
425 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
426 "SampleAfterValue": "200003",
427 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches",
428 "CounterHTOff": "0,1,2,3,4,5,6,7"
429 },
430 {
431 "PublicDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns.",
432 "EventCode": "0x89",
433 "Counter": "0,1,2,3",
434 "UMask": "0x84",
435 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
436 "SampleAfterValue": "200003",
437 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns",
438 "CounterHTOff": "0,1,2,3,4,5,6,7"
439 },
440 {
441 "PublicDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic.",
442 "EventCode": "0x89",
443 "Counter": "0,1,2,3",
444 "UMask": "0x88",
445 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
446 "SampleAfterValue": "200003",
447 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic",
448 "CounterHTOff": "0,1,2,3,4,5,6,7"
449 },
450 {
451 "PublicDescription": "Taken speculative and retired mispredicted indirect calls.",
452 "EventCode": "0x89",
453 "Counter": "0,1,2,3",
454 "UMask": "0xa0",
455 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
456 "SampleAfterValue": "200003",
457 "BriefDescription": "Taken speculative and retired mispredicted indirect calls",
458 "CounterHTOff": "0,1,2,3,4,5,6,7"
459 },
460 {
461 "PublicDescription": "Speculative and retired mispredicted macro conditional branches.",
462 "EventCode": "0x89",
463 "Counter": "0,1,2,3",
464 "UMask": "0xc1",
465 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
466 "SampleAfterValue": "200003",
467 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
468 "CounterHTOff": "0,1,2,3,4,5,6,7"
469 },
470 {
471 "PublicDescription": "Mispredicted indirect branches excluding calls and returns.",
472 "EventCode": "0x89",
473 "Counter": "0,1,2,3",
474 "UMask": "0xc4",
475 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
476 "SampleAfterValue": "200003",
477 "BriefDescription": "Mispredicted indirect branches excluding calls and returns",
478 "CounterHTOff": "0,1,2,3,4,5,6,7"
479 },
480 {
481 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
482 "EventCode": "0x89",
483 "Counter": "0,1,2,3",
484 "UMask": "0xff",
485 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
486 "SampleAfterValue": "200003",
487 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
488 "CounterHTOff": "0,1,2,3,4,5,6,7"
489 },
490 {
491 "PublicDescription": "Cycles which a Uop is dispatched on port 0.",
492 "EventCode": "0xA1",
493 "Counter": "0,1,2,3",
494 "UMask": "0x1",
495 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
496 "SampleAfterValue": "2000003",
497 "BriefDescription": "Cycles per thread when uops are dispatched to port 0",
498 "CounterHTOff": "0,1,2,3,4,5,6,7"
499 },
500 {
501 "PublicDescription": "Cycles which a Uop is dispatched on port 1.",
502 "EventCode": "0xA1",
503 "Counter": "0,1,2,3",
504 "UMask": "0x2",
505 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
506 "SampleAfterValue": "2000003",
507 "BriefDescription": "Cycles per thread when uops are dispatched to port 1",
508 "CounterHTOff": "0,1,2,3,4,5,6,7"
509 },
510 {
511 "PublicDescription": "Cycles which a Uop is dispatched on port 4.",
512 "EventCode": "0xA1",
513 "Counter": "0,1,2,3",
514 "UMask": "0x40",
515 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
516 "SampleAfterValue": "2000003",
517 "BriefDescription": "Cycles per thread when uops are dispatched to port 4",
518 "CounterHTOff": "0,1,2,3,4,5,6,7"
519 },
520 {
521 "PublicDescription": "Cycles which a Uop is dispatched on port 5.",
522 "EventCode": "0xA1",
523 "Counter": "0,1,2,3",
524 "UMask": "0x80",
525 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
526 "SampleAfterValue": "2000003",
527 "BriefDescription": "Cycles per thread when uops are dispatched to port 5",
528 "CounterHTOff": "0,1,2,3,4,5,6,7"
529 },
530 {
531 "PublicDescription": "Cycles per core when uops are dispatched to port 0.",
532 "EventCode": "0xA1",
533 "Counter": "0,1,2,3",
534 "UMask": "0x1",
535 "AnyThread": "1",
536 "EventName": "UOPS_DISPATCHED_PORT.PORT_0_CORE",
537 "SampleAfterValue": "2000003",
538 "BriefDescription": "Cycles per core when uops are dispatched to port 0",
539 "CounterHTOff": "0,1,2,3,4,5,6,7"
540 },
541 {
542 "PublicDescription": "Cycles per core when uops are dispatched to port 1.",
543 "EventCode": "0xA1",
544 "Counter": "0,1,2,3",
545 "UMask": "0x2",
546 "AnyThread": "1",
547 "EventName": "UOPS_DISPATCHED_PORT.PORT_1_CORE",
548 "SampleAfterValue": "2000003",
549 "BriefDescription": "Cycles per core when uops are dispatched to port 1",
550 "CounterHTOff": "0,1,2,3,4,5,6,7"
551 },
552 {
553 "PublicDescription": "Cycles per core when uops are dispatched to port 4.",
554 "EventCode": "0xA1",
555 "Counter": "0,1,2,3",
556 "UMask": "0x40",
557 "AnyThread": "1",
558 "EventName": "UOPS_DISPATCHED_PORT.PORT_4_CORE",
559 "SampleAfterValue": "2000003",
560 "BriefDescription": "Cycles per core when uops are dispatched to port 4",
561 "CounterHTOff": "0,1,2,3,4,5,6,7"
562 },
563 {
564 "PublicDescription": "Cycles per core when uops are dispatched to port 5.",
565 "EventCode": "0xA1",
566 "Counter": "0,1,2,3",
567 "UMask": "0x80",
568 "AnyThread": "1",
569 "EventName": "UOPS_DISPATCHED_PORT.PORT_5_CORE",
570 "SampleAfterValue": "2000003",
571 "BriefDescription": "Cycles per core when uops are dispatched to port 5",
572 "CounterHTOff": "0,1,2,3,4,5,6,7"
573 },
574 {
575 "PublicDescription": "Cycles which a Uop is dispatched on port 2.",
576 "EventCode": "0xA1",
577 "Counter": "0,1,2,3",
578 "UMask": "0xc",
579 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
580 "SampleAfterValue": "2000003",
581 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 2",
582 "CounterHTOff": "0,1,2,3,4,5,6,7"
583 },
584 {
585 "PublicDescription": "Cycles which a Uop is dispatched on port 3.",
586 "EventCode": "0xA1",
587 "Counter": "0,1,2,3",
588 "UMask": "0x30",
589 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
590 "SampleAfterValue": "2000003",
591 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 3",
592 "CounterHTOff": "0,1,2,3,4,5,6,7"
593 },
594 {
595 "EventCode": "0xA1",
596 "Counter": "0,1,2,3",
597 "UMask": "0xc",
598 "AnyThread": "1",
599 "EventName": "UOPS_DISPATCHED_PORT.PORT_2_CORE",
600 "SampleAfterValue": "2000003",
601 "BriefDescription": "Uops dispatched to port 2, loads and stores per core (speculative and retired).",
602 "CounterHTOff": "0,1,2,3,4,5,6,7"
603 },
604 {
605 "PublicDescription": "Cycles per core when load or STA uops are dispatched to port 3.",
606 "EventCode": "0xA1",
607 "Counter": "0,1,2,3",
608 "UMask": "0x30",
609 "AnyThread": "1",
610 "EventName": "UOPS_DISPATCHED_PORT.PORT_3_CORE",
611 "SampleAfterValue": "2000003",
612 "BriefDescription": "Cycles per core when load or STA uops are dispatched to port 3",
613 "CounterHTOff": "0,1,2,3,4,5,6,7"
614 },
615 {
616 "PublicDescription": "Cycles Allocation is stalled due to Resource Related reason.",
617 "EventCode": "0xA2",
618 "Counter": "0,1,2,3",
619 "UMask": "0x1",
620 "EventName": "RESOURCE_STALLS.ANY",
621 "SampleAfterValue": "2000003",
622 "BriefDescription": "Resource-related stall cycles",
623 "CounterHTOff": "0,1,2,3,4,5,6,7"
624 },
625 {
626 "EventCode": "0xA2",
627 "Counter": "0,1,2,3",
628 "UMask": "0x4",
629 "EventName": "RESOURCE_STALLS.RS",
630 "SampleAfterValue": "2000003",
631 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
632 "CounterHTOff": "0,1,2,3,4,5,6,7"
633 },
634 {
635 "PublicDescription": "Cycles stalled due to no store buffers available (not including draining form sync).",
636 "EventCode": "0xA2",
637 "Counter": "0,1,2,3",
638 "UMask": "0x8",
639 "EventName": "RESOURCE_STALLS.SB",
640 "SampleAfterValue": "2000003",
641 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
642 "CounterHTOff": "0,1,2,3,4,5,6,7"
643 },
644 {
645 "EventCode": "0xA2",
646 "Counter": "0,1,2,3",
647 "UMask": "0x10",
648 "EventName": "RESOURCE_STALLS.ROB",
649 "SampleAfterValue": "2000003",
650 "BriefDescription": "Cycles stalled due to re-order buffer full.",
651 "CounterHTOff": "0,1,2,3,4,5,6,7"
652 },
653 {
654 "PublicDescription": "Cycles with pending L2 miss loads. Set AnyThread to count per core.",
655 "EventCode": "0xA3",
656 "Counter": "0,1,2,3",
657 "UMask": "0x1",
658 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
659 "SampleAfterValue": "2000003",
660 "BriefDescription": "Cycles with pending L2 cache miss loads.",
661 "CounterMask": "1",
662 "CounterHTOff": "0,1,2,3,4,5,6,7"
663 },
664 {
665 "PublicDescription": "Cycles with pending L1 cache miss loads. Set AnyThread to count per core.",
666 "EventCode": "0xA3",
667 "Counter": "2",
668 "UMask": "0x8",
669 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
670 "SampleAfterValue": "2000003",
671 "BriefDescription": "Cycles with pending L1 cache miss loads.",
672 "CounterMask": "8",
673 "CounterHTOff": "2"
674 },
675 {
676 "PublicDescription": "Cycles with pending memory loads. Set AnyThread to count per core.",
677 "EventCode": "0xA3",
678 "Counter": "0,1,2,3",
679 "UMask": "0x2",
680 "EventName": "CYCLE_ACTIVITY.CYCLES_LDM_PENDING",
681 "SampleAfterValue": "2000003",
682 "BriefDescription": "Cycles with pending memory loads.",
683 "CounterMask": "2",
684 "CounterHTOff": "0,1,2,3"
685 },
686 {
687 "PublicDescription": "Total execution stalls.",
688 "EventCode": "0xA3",
689 "Counter": "0,1,2,3",
690 "UMask": "0x4",
691 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_EXECUTE",
692 "SampleAfterValue": "2000003",
693 "BriefDescription": "Total execution stalls",
694 "CounterMask": "4",
695 "CounterHTOff": "0,1,2,3"
696 },
697 {
698 "PublicDescription": "Number of loads missed L2.",
699 "EventCode": "0xA3",
700 "Counter": "0,1,2,3",
701 "UMask": "0x5",
702 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
703 "SampleAfterValue": "2000003",
704 "BriefDescription": "Execution stalls due to L2 cache misses.",
705 "CounterMask": "5",
706 "CounterHTOff": "0,1,2,3"
707 },
708 {
709 "EventCode": "0xA3",
710 "Counter": "0,1,2,3",
711 "UMask": "0x6",
712 "EventName": "CYCLE_ACTIVITY.STALLS_LDM_PENDING",
713 "SampleAfterValue": "2000003",
714 "BriefDescription": "Execution stalls due to memory subsystem.",
715 "CounterMask": "6",
716 "CounterHTOff": "0,1,2,3"
717 },
718 {
719 "PublicDescription": "Execution stalls due to L1 data cache miss loads. Set Cmask=0CH.",
720 "EventCode": "0xA3",
721 "Counter": "2",
722 "UMask": "0xc",
723 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
724 "SampleAfterValue": "2000003",
725 "BriefDescription": "Execution stalls due to L1 data cache misses",
726 "CounterMask": "12",
727 "CounterHTOff": "2"
728 },
729 {
730 "EventCode": "0xA8",
731 "Counter": "0,1,2,3",
732 "UMask": "0x1",
733 "EventName": "LSD.UOPS",
734 "SampleAfterValue": "2000003",
735 "BriefDescription": "Number of Uops delivered by the LSD.",
736 "CounterHTOff": "0,1,2,3,4,5,6,7"
737 },
738 {
739 "PublicDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
740 "EventCode": "0xA8",
741 "Counter": "0,1,2,3",
742 "UMask": "0x1",
743 "EventName": "LSD.CYCLES_ACTIVE",
744 "SampleAfterValue": "2000003",
745 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder",
746 "CounterMask": "1",
747 "CounterHTOff": "0,1,2,3,4,5,6,7"
748 },
749 {
750 "PublicDescription": "Counts total number of uops to be executed per-thread each cycle. Set Cmask = 1, INV =1 to count stall cycles.",
751 "EventCode": "0xB1",
752 "Counter": "0,1,2,3",
753 "UMask": "0x1",
754 "EventName": "UOPS_EXECUTED.THREAD",
755 "SampleAfterValue": "2000003",
756 "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
757 "CounterHTOff": "0,1,2,3,4,5,6,7"
758 },
759 {
760 "PublicDescription": "Counts total number of uops to be executed per-core each cycle.",
761 "EventCode": "0xB1",
762 "Counter": "0,1,2,3",
763 "UMask": "0x2",
764 "EventName": "UOPS_EXECUTED.CORE",
765 "SampleAfterValue": "2000003",
766 "BriefDescription": "Number of uops executed on the core.",
767 "CounterHTOff": "0,1,2,3,4,5,6,7"
768 },
769 {
770 "EventCode": "0xB1",
771 "Invert": "1",
772 "Counter": "0,1,2,3",
773 "UMask": "0x1",
774 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
775 "SampleAfterValue": "2000003",
776 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
777 "CounterMask": "1",
778 "CounterHTOff": "0,1,2,3"
779 },
780 {
781 "PublicDescription": "Number of instructions at retirement.",
782 "EventCode": "0xC0",
783 "Counter": "0,1,2,3",
784 "UMask": "0x0",
785 "EventName": "INST_RETIRED.ANY_P",
786 "SampleAfterValue": "2000003",
787 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
788 "CounterHTOff": "0,1,2,3,4,5,6,7"
789 },
790 {
791 "PEBS": "2",
792 "PublicDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution.",
793 "EventCode": "0xC0",
794 "Counter": "1",
795 "UMask": "0x1",
796 "EventName": "INST_RETIRED.PREC_DIST",
797 "SampleAfterValue": "2000003",
798 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
799 "CounterHTOff": "1"
800 },
801 {
802 "EventCode": "0xC1",
803 "Counter": "0,1,2,3",
804 "UMask": "0x80",
805 "EventName": "OTHER_ASSISTS.ANY_WB_ASSIST",
806 "SampleAfterValue": "100003",
807 "BriefDescription": "Number of times any microcode assist is invoked by HW upon uop writeback.",
808 "CounterHTOff": "0,1,2,3,4,5,6,7"
809 },
810 {
811 "PEBS": "1",
812 "PublicDescription": "Counts the number of micro-ops retired, Use cmask=1 and invert to count active cycles or stalled cycles.",
813 "EventCode": "0xC2",
814 "Counter": "0,1,2,3",
815 "UMask": "0x1",
816 "EventName": "UOPS_RETIRED.ALL",
817 "SampleAfterValue": "2000003",
818 "BriefDescription": "Actually retired uops. ",
819 "CounterHTOff": "0,1,2,3,4,5,6,7"
820 },
821 {
822 "PEBS": "1",
823 "PublicDescription": "Counts the number of retirement slots used each cycle.",
824 "EventCode": "0xC2",
825 "Counter": "0,1,2,3",
826 "UMask": "0x2",
827 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
828 "SampleAfterValue": "2000003",
829 "BriefDescription": "Retirement slots used. ",
830 "CounterHTOff": "0,1,2,3,4,5,6,7"
831 },
832 {
833 "EventCode": "0xC2",
834 "Invert": "1",
835 "Counter": "0,1,2,3",
836 "UMask": "0x1",
837 "EventName": "UOPS_RETIRED.STALL_CYCLES",
838 "SampleAfterValue": "2000003",
839 "BriefDescription": "Cycles without actually retired uops.",
840 "CounterMask": "1",
841 "CounterHTOff": "0,1,2,3"
842 },
843 {
844 "EventCode": "0xC2",
845 "Invert": "1",
846 "Counter": "0,1,2,3",
847 "UMask": "0x1",
848 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
849 "SampleAfterValue": "2000003",
850 "BriefDescription": "Cycles with less than 10 actually retired uops.",
851 "CounterMask": "10",
852 "CounterHTOff": "0,1,2,3"
853 },
854 {
855 "EventCode": "0xC2",
856 "Invert": "1",
857 "Counter": "0,1,2,3",
858 "UMask": "0x1",
859 "AnyThread": "1",
860 "EventName": "UOPS_RETIRED.CORE_STALL_CYCLES",
861 "SampleAfterValue": "2000003",
862 "BriefDescription": "Cycles without actually retired uops.",
863 "CounterMask": "1",
864 "CounterHTOff": "0,1,2,3"
865 },
866 {
867 "PublicDescription": "Number of self-modifying-code machine clears detected.",
868 "EventCode": "0xC3",
869 "Counter": "0,1,2,3",
870 "UMask": "0x4",
871 "EventName": "MACHINE_CLEARS.SMC",
872 "SampleAfterValue": "100003",
873 "BriefDescription": "Self-modifying code (SMC) detected.",
874 "CounterHTOff": "0,1,2,3,4,5,6,7"
875 },
876 {
877 "PublicDescription": "Counts the number of executed AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
878 "EventCode": "0xC3",
879 "Counter": "0,1,2,3",
880 "UMask": "0x20",
881 "EventName": "MACHINE_CLEARS.MASKMOV",
882 "SampleAfterValue": "100003",
883 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0. ",
884 "CounterHTOff": "0,1,2,3,4,5,6,7"
885 },
886 {
887 "PEBS": "1",
888 "PublicDescription": "Counts the number of conditional branch instructions retired.",
889 "EventCode": "0xC4",
890 "Counter": "0,1,2,3",
891 "UMask": "0x1",
892 "EventName": "BR_INST_RETIRED.CONDITIONAL",
893 "SampleAfterValue": "400009",
894 "BriefDescription": "Conditional branch instructions retired. ",
895 "CounterHTOff": "0,1,2,3,4,5,6,7"
896 },
897 {
898 "PEBS": "1",
899 "PublicDescription": "Direct and indirect near call instructions retired.",
900 "EventCode": "0xC4",
901 "Counter": "0,1,2,3",
902 "UMask": "0x2",
903 "EventName": "BR_INST_RETIRED.NEAR_CALL",
904 "SampleAfterValue": "100007",
905 "BriefDescription": "Direct and indirect near call instructions retired. ",
906 "CounterHTOff": "0,1,2,3,4,5,6,7"
907 },
908 {
909 "PublicDescription": "Branch instructions at retirement.",
910 "EventCode": "0xC4",
911 "Counter": "0,1,2,3",
912 "UMask": "0x0",
913 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
914 "SampleAfterValue": "400009",
915 "BriefDescription": "All (macro) branch instructions retired.",
916 "CounterHTOff": "0,1,2,3,4,5,6,7"
917 },
918 {
919 "PEBS": "1",
920 "PublicDescription": "Counts the number of near return instructions retired.",
921 "EventCode": "0xC4",
922 "Counter": "0,1,2,3",
923 "UMask": "0x8",
924 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
925 "SampleAfterValue": "100007",
926 "BriefDescription": "Return instructions retired. ",
927 "CounterHTOff": "0,1,2,3,4,5,6,7"
928 },
929 {
930 "PublicDescription": "Counts the number of not taken branch instructions retired.",
931 "EventCode": "0xC4",
932 "Counter": "0,1,2,3",
933 "UMask": "0x10",
934 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
935 "SampleAfterValue": "400009",
936 "BriefDescription": "Not taken branch instructions retired. ",
937 "CounterHTOff": "0,1,2,3,4,5,6,7"
938 },
939 {
940 "PEBS": "1",
941 "PublicDescription": "Number of near taken branches retired.",
942 "EventCode": "0xC4",
943 "Counter": "0,1,2,3",
944 "UMask": "0x20",
945 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
946 "SampleAfterValue": "400009",
947 "BriefDescription": "Taken branch instructions retired. ",
948 "CounterHTOff": "0,1,2,3,4,5,6,7"
949 },
950 {
951 "PublicDescription": "Number of far branches retired.",
952 "EventCode": "0xC4",
953 "Counter": "0,1,2,3",
954 "UMask": "0x40",
955 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
956 "SampleAfterValue": "100007",
957 "BriefDescription": "Far branch instructions retired. ",
958 "CounterHTOff": "0,1,2,3,4,5,6,7"
959 },
960 {
961 "PEBS": "2",
962 "EventCode": "0xC4",
963 "Counter": "0,1,2,3",
964 "UMask": "0x4",
965 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
966 "SampleAfterValue": "400009",
967 "BriefDescription": "All (macro) branch instructions retired.",
968 "CounterHTOff": "0,1,2,3"
969 },
970 {
971 "PEBS": "1",
972 "PublicDescription": "Mispredicted conditional branch instructions retired.",
973 "EventCode": "0xC5",
974 "Counter": "0,1,2,3",
975 "UMask": "0x1",
976 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
977 "SampleAfterValue": "400009",
978 "BriefDescription": "Mispredicted conditional branch instructions retired. ",
979 "CounterHTOff": "0,1,2,3,4,5,6,7"
980 },
981 {
982 "PublicDescription": "Mispredicted branch instructions at retirement.",
983 "EventCode": "0xC5",
984 "Counter": "0,1,2,3",
985 "UMask": "0x0",
986 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
987 "SampleAfterValue": "400009",
988 "BriefDescription": "All mispredicted macro branch instructions retired.",
989 "CounterHTOff": "0,1,2,3,4,5,6,7"
990 },
991 {
992 "PEBS": "1",
993 "PublicDescription": "Mispredicted taken branch instructions retired.",
994 "EventCode": "0xC5",
995 "Counter": "0,1,2,3",
996 "UMask": "0x20",
997 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
998 "SampleAfterValue": "400009",
999 "BriefDescription": "number of near branch instructions retired that were mispredicted and taken. ",
1000 "CounterHTOff": "0,1,2,3,4,5,6,7"
1001 },
1002 {
1003 "PEBS": "2",
1004 "EventCode": "0xC5",
1005 "Counter": "0,1,2,3",
1006 "UMask": "0x4",
1007 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
1008 "SampleAfterValue": "400009",
1009 "BriefDescription": "Mispredicted macro branch instructions retired.",
1010 "CounterHTOff": "0,1,2,3"
1011 },
1012 {
1013 "PublicDescription": "Count cases of saving new LBR records by hardware.",
1014 "EventCode": "0xCC",
1015 "Counter": "0,1,2,3",
1016 "UMask": "0x20",
1017 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
1018 "SampleAfterValue": "2000003",
1019 "BriefDescription": "Count cases of saving new LBR",
1020 "CounterHTOff": "0,1,2,3,4,5,6,7"
1021 },
1022 {
1023 "PublicDescription": "Number of front end re-steers due to BPU misprediction.",
1024 "EventCode": "0xE6",
1025 "Counter": "0,1,2,3",
1026 "UMask": "0x1f",
1027 "EventName": "BACLEARS.ANY",
1028 "SampleAfterValue": "100003",
1029 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1030 "CounterHTOff": "0,1,2,3,4,5,6,7"
1031 },
1032 {
1033 "PublicDescription": "Cycles where at least 1 uop was executed per-thread.",
1034 "EventCode": "0xB1",
1035 "Counter": "0,1,2,3",
1036 "UMask": "0x1",
1037 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
1038 "SampleAfterValue": "2000003",
1039 "BriefDescription": "Cycles where at least 1 uop was executed per-thread",
1040 "CounterMask": "1",
1041 "CounterHTOff": "0,1,2,3,4,5,6,7"
1042 },
1043 {
1044 "PublicDescription": "Cycles where at least 2 uops were executed per-thread.",
1045 "EventCode": "0xB1",
1046 "Counter": "0,1,2,3",
1047 "UMask": "0x1",
1048 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
1049 "SampleAfterValue": "2000003",
1050 "BriefDescription": "Cycles where at least 2 uops were executed per-thread",
1051 "CounterMask": "2",
1052 "CounterHTOff": "0,1,2,3,4,5,6,7"
1053 },
1054 {
1055 "PublicDescription": "Cycles where at least 3 uops were executed per-thread.",
1056 "EventCode": "0xB1",
1057 "Counter": "0,1,2,3",
1058 "UMask": "0x1",
1059 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
1060 "SampleAfterValue": "2000003",
1061 "BriefDescription": "Cycles where at least 3 uops were executed per-thread",
1062 "CounterMask": "3",
1063 "CounterHTOff": "0,1,2,3,4,5,6,7"
1064 },
1065 {
1066 "PublicDescription": "Cycles where at least 4 uops were executed per-thread.",
1067 "EventCode": "0xB1",
1068 "Counter": "0,1,2,3",
1069 "UMask": "0x1",
1070 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
1071 "SampleAfterValue": "2000003",
1072 "BriefDescription": "Cycles where at least 4 uops were executed per-thread",
1073 "CounterMask": "4",
1074 "CounterHTOff": "0,1,2,3,4,5,6,7"
1075 },
1076 {
1077 "EventCode": "0x5E",
1078 "Invert": "1",
1079 "Counter": "0,1,2,3",
1080 "UMask": "0x1",
1081 "EdgeDetect": "1",
1082 "EventName": "RS_EVENTS.EMPTY_END",
1083 "SampleAfterValue": "200003",
1084 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1085 "CounterMask": "1",
1086 "CounterHTOff": "0,1,2,3,4,5,6,7"
1087 },
1088 {
1089 "EventCode": "0xC3",
1090 "Counter": "0,1,2,3",
1091 "UMask": "0x1",
1092 "EdgeDetect": "1",
1093 "EventName": "MACHINE_CLEARS.COUNT",
1094 "SampleAfterValue": "100003",
1095 "BriefDescription": "Number of machine clears (nukes) of any type.",
1096 "CounterMask": "1",
1097 "CounterHTOff": "0,1,2,3,4,5,6,7"
1098 },
1099 {
1100 "PublicDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1101 "EventCode": "0xA8",
1102 "Counter": "0,1,2,3",
1103 "UMask": "0x1",
1104 "EventName": "LSD.CYCLES_4_UOPS",
1105 "SampleAfterValue": "2000003",
1106 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder",
1107 "CounterMask": "4",
1108 "CounterHTOff": "0,1,2,3,4,5,6,7"
1109 },
1110 {
1111 "EventCode": "0xA3",
1112 "Counter": "2",
1113 "UMask": "0x8",
1114 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
1115 "SampleAfterValue": "2000003",
1116 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
1117 "CounterMask": "8",
1118 "CounterHTOff": "2"
1119 },
1120 {
1121 "EventCode": "0xA3",
1122 "Counter": "0,1,2,3",
1123 "UMask": "0x1",
1124 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
1125 "SampleAfterValue": "2000003",
1126 "BriefDescription": "Cycles while L2 cache miss load* is outstanding.",
1127 "CounterMask": "1",
1128 "CounterHTOff": "0,1,2,3,4,5,6,7"
1129 },
1130 {
1131 "EventCode": "0xA3",
1132 "Counter": "0,1,2,3",
1133 "UMask": "0x2",
1134 "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
1135 "SampleAfterValue": "2000003",
1136 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
1137 "CounterMask": "2",
1138 "CounterHTOff": "0,1,2,3"
1139 },
1140 {
1141 "EventCode": "0xA3",
1142 "Counter": "0,1,2,3",
1143 "UMask": "0x4",
1144 "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
1145 "SampleAfterValue": "2000003",
1146 "BriefDescription": "Total execution stalls.",
1147 "CounterMask": "4",
1148 "CounterHTOff": "0,1,2,3"
1149 },
1150 {
1151 "EventCode": "0xA3",
1152 "Counter": "2",
1153 "UMask": "0xc",
1154 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
1155 "SampleAfterValue": "2000003",
1156 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
1157 "CounterMask": "12",
1158 "CounterHTOff": "2"
1159 },
1160 {
1161 "EventCode": "0xA3",
1162 "Counter": "0,1,2,3",
1163 "UMask": "0x5",
1164 "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
1165 "SampleAfterValue": "2000003",
1166 "BriefDescription": "Execution stalls while L2 cache miss load* is outstanding.",
1167 "CounterMask": "5",
1168 "CounterHTOff": "0,1,2,3"
1169 },
1170 {
1171 "EventCode": "0xA3",
1172 "Counter": "0,1,2,3",
1173 "UMask": "0x6",
1174 "EventName": "CYCLE_ACTIVITY.STALLS_MEM_ANY",
1175 "SampleAfterValue": "2000003",
1176 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
1177 "CounterMask": "6",
1178 "CounterHTOff": "0,1,2,3"
1179 },
1180 {
1181 "PublicDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1182 "EventCode": "0x00",
1183 "Counter": "Fixed counter 2",
1184 "UMask": "0x2",
1185 "AnyThread": "1",
1186 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1187 "SampleAfterValue": "2000003",
1188 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state",
1189 "CounterHTOff": "Fixed counter 2"
1190 },
1191 {
1192 "PublicDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1193 "EventCode": "0x3C",
1194 "Counter": "0,1,2,3",
1195 "UMask": "0x0",
1196 "AnyThread": "1",
1197 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1198 "SampleAfterValue": "2000003",
1199 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state",
1200 "CounterHTOff": "0,1,2,3,4,5,6,7"
1201 },
1202 {
1203 "EventCode": "0x3C",
1204 "Counter": "0,1,2,3",
1205 "UMask": "0x1",
1206 "AnyThread": "1",
1207 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1208 "SampleAfterValue": "2000003",
1209 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted. (counts at 100 MHz rate)",
1210 "CounterHTOff": "0,1,2,3,4,5,6,7"
1211 },
1212 {
1213 "EventCode": "0x0D",
1214 "Counter": "0,1,2,3",
1215 "UMask": "0x3",
1216 "AnyThread": "1",
1217 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1218 "SampleAfterValue": "2000003",
1219 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1220 "CounterMask": "1",
1221 "CounterHTOff": "0,1,2,3,4,5,6,7"
1222 },
1223 {
1224 "PublicDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1225 "EventCode": "0xB1",
1226 "Counter": "0,1,2,3",
1227 "UMask": "0x2",
1228 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1229 "SampleAfterValue": "2000003",
1230 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core",
1231 "CounterMask": "1",
1232 "CounterHTOff": "0,1,2,3,4,5,6,7"
1233 },
1234 {
1235 "PublicDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1236 "EventCode": "0xB1",
1237 "Counter": "0,1,2,3",
1238 "UMask": "0x2",
1239 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1240 "SampleAfterValue": "2000003",
1241 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core",
1242 "CounterMask": "2",
1243 "CounterHTOff": "0,1,2,3,4,5,6,7"
1244 },
1245 {
1246 "PublicDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1247 "EventCode": "0xB1",
1248 "Counter": "0,1,2,3",
1249 "UMask": "0x2",
1250 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1251 "SampleAfterValue": "2000003",
1252 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core",
1253 "CounterMask": "3",
1254 "CounterHTOff": "0,1,2,3,4,5,6,7"
1255 },
1256 {
1257 "PublicDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1258 "EventCode": "0xB1",
1259 "Counter": "0,1,2,3",
1260 "UMask": "0x2",
1261 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1262 "SampleAfterValue": "2000003",
1263 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core",
1264 "CounterMask": "4",
1265 "CounterHTOff": "0,1,2,3,4,5,6,7"
1266 },
1267 {
1268 "PublicDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1269 "EventCode": "0xB1",
1270 "Invert": "1",
1271 "Counter": "0,1,2,3",
1272 "UMask": "0x2",
1273 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1274 "SampleAfterValue": "2000003",
1275 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core",
1276 "CounterHTOff": "0,1,2,3,4,5,6,7"
1277 },
1278 {
1279 "PublicDescription": "Reference cycles when the thread is unhalted. (counts at 100 MHz rate)",
1280 "EventCode": "0x3C",
1281 "Counter": "0,1,2,3",
1282 "UMask": "0x1",
1283 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1284 "SampleAfterValue": "2000003",
1285 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1286 "CounterHTOff": "0,1,2,3,4,5,6,7"
1287 },
1288 {
1289 "EventCode": "0x3C",
1290 "Counter": "0,1,2,3",
1291 "UMask": "0x1",
1292 "AnyThread": "1",
1293 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1294 "SampleAfterValue": "2000003",
1295 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted. (counts at 100 MHz rate)",
1296 "CounterHTOff": "0,1,2,3,4,5,6,7"
1297 },
1298 {
1299 "EventCode": "0x3C",
1300 "Counter": "0,1,2,3",
1301 "UMask": "0x2",
1302 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1303 "SampleAfterValue": "2000003",
1304 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1305 "CounterHTOff": "0,1,2,3,4,5,6,7"
1306 }
1307] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivybridge/virtual-memory.json b/tools/perf/pmu-events/arch/x86/ivybridge/virtual-memory.json
new file mode 100644
index 000000000000..f036f5398906
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivybridge/virtual-memory.json
@@ -0,0 +1,180 @@
1[
2 {
3 "EventCode": "0x08",
4 "Counter": "0,1,2,3",
5 "UMask": "0x88",
6 "EventName": "DTLB_LOAD_MISSES.LARGE_PAGE_WALK_COMPLETED",
7 "SampleAfterValue": "100003",
8 "BriefDescription": "Page walk for a large page completed for Demand load.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "PublicDescription": "Miss in all TLB levels causes a page walk of any page size (4K/2M/4M/1G).",
13 "EventCode": "0x49",
14 "Counter": "0,1,2,3",
15 "UMask": "0x1",
16 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
17 "SampleAfterValue": "100003",
18 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
19 "CounterHTOff": "0,1,2,3,4,5,6,7"
20 },
21 {
22 "PublicDescription": "Miss in all TLB levels causes a page walk that completes of any page size (4K/2M/4M/1G).",
23 "EventCode": "0x49",
24 "Counter": "0,1,2,3",
25 "UMask": "0x2",
26 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
27 "SampleAfterValue": "100003",
28 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "PublicDescription": "Cycles PMH is busy with this walk.",
33 "EventCode": "0x49",
34 "Counter": "0,1,2,3",
35 "UMask": "0x4",
36 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
37 "SampleAfterValue": "2000003",
38 "BriefDescription": "Cycles when PMH is busy with page walks",
39 "CounterHTOff": "0,1,2,3,4,5,6,7"
40 },
41 {
42 "PublicDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
43 "EventCode": "0x49",
44 "Counter": "0,1,2,3",
45 "UMask": "0x10",
46 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
47 "SampleAfterValue": "100003",
48 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "EventCode": "0x4F",
53 "Counter": "0,1,2,3",
54 "UMask": "0x10",
55 "EventName": "EPT.WALK_CYCLES",
56 "SampleAfterValue": "2000003",
57 "BriefDescription": "Cycle count for an Extended Page table walk. The Extended Page Directory cache is used by Virtual Machine operating systems while the guest operating systems use the standard TLB caches.",
58 "CounterHTOff": "0,1,2,3,4,5,6,7"
59 },
60 {
61 "PublicDescription": "Counts load operations that missed 1st level DTLB but hit the 2nd level.",
62 "EventCode": "0x5F",
63 "Counter": "0,1,2,3",
64 "UMask": "0x4",
65 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
66 "SampleAfterValue": "100003",
67 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks",
68 "CounterHTOff": "0,1,2,3,4,5,6,7"
69 },
70 {
71 "PublicDescription": "Misses in all ITLB levels that cause page walks.",
72 "EventCode": "0x85",
73 "Counter": "0,1,2,3",
74 "UMask": "0x1",
75 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
76 "SampleAfterValue": "100003",
77 "BriefDescription": "Misses at all ITLB levels that cause page walks",
78 "CounterHTOff": "0,1,2,3,4,5,6,7"
79 },
80 {
81 "PublicDescription": "Misses in all ITLB levels that cause completed page walks.",
82 "EventCode": "0x85",
83 "Counter": "0,1,2,3",
84 "UMask": "0x2",
85 "EventName": "ITLB_MISSES.WALK_COMPLETED",
86 "SampleAfterValue": "100003",
87 "BriefDescription": "Misses in all ITLB levels that cause completed page walks",
88 "CounterHTOff": "0,1,2,3,4,5,6,7"
89 },
90 {
91 "PublicDescription": "Cycle PMH is busy with a walk.",
92 "EventCode": "0x85",
93 "Counter": "0,1,2,3",
94 "UMask": "0x4",
95 "EventName": "ITLB_MISSES.WALK_DURATION",
96 "SampleAfterValue": "2000003",
97 "BriefDescription": "Cycles when PMH is busy with page walks",
98 "CounterHTOff": "0,1,2,3,4,5,6,7"
99 },
100 {
101 "PublicDescription": "Number of cache load STLB hits. No page walk.",
102 "EventCode": "0x85",
103 "Counter": "0,1,2,3",
104 "UMask": "0x10",
105 "EventName": "ITLB_MISSES.STLB_HIT",
106 "SampleAfterValue": "100003",
107 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks",
108 "CounterHTOff": "0,1,2,3,4,5,6,7"
109 },
110 {
111 "PublicDescription": "Completed page walks in ITLB due to STLB load misses for large pages.",
112 "EventCode": "0x85",
113 "Counter": "0,1,2,3",
114 "UMask": "0x80",
115 "EventName": "ITLB_MISSES.LARGE_PAGE_WALK_COMPLETED",
116 "SampleAfterValue": "100003",
117 "BriefDescription": "Completed page walks in ITLB due to STLB load misses for large pages",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "PublicDescription": "Counts the number of ITLB flushes, includes 4k/2M/4M pages.",
122 "EventCode": "0xAE",
123 "Counter": "0,1,2,3",
124 "UMask": "0x1",
125 "EventName": "ITLB.ITLB_FLUSH",
126 "SampleAfterValue": "100007",
127 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "PublicDescription": "DTLB flush attempts of the thread-specific entries.",
132 "EventCode": "0xBD",
133 "Counter": "0,1,2,3",
134 "UMask": "0x1",
135 "EventName": "TLB_FLUSH.DTLB_THREAD",
136 "SampleAfterValue": "100007",
137 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "Count number of STLB flush attempts.",
142 "EventCode": "0xBD",
143 "Counter": "0,1,2,3",
144 "UMask": "0x20",
145 "EventName": "TLB_FLUSH.STLB_ANY",
146 "SampleAfterValue": "100007",
147 "BriefDescription": "STLB flush attempts",
148 "CounterHTOff": "0,1,2,3,4,5,6,7"
149 },
150 {
151 "PublicDescription": "Misses in all TLB levels that cause a page walk of any page size from demand loads.",
152 "EventCode": "0x08",
153 "Counter": "0,1,2,3",
154 "UMask": "0x81",
155 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
156 "SampleAfterValue": "100003",
157 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes an page walk of any page size.",
158 "CounterHTOff": "0,1,2,3,4,5,6,7"
159 },
160 {
161 "PublicDescription": "Misses in all TLB levels that caused page walk completed of any size by demand loads.",
162 "EventCode": "0x08",
163 "Counter": "0,1,2,3",
164 "UMask": "0x82",
165 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
166 "SampleAfterValue": "100003",
167 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
168 "CounterHTOff": "0,1,2,3,4,5,6,7"
169 },
170 {
171 "PublicDescription": "Cycle PMH is busy with a walk due to demand loads.",
172 "EventCode": "0x08",
173 "Counter": "0,1,2,3",
174 "UMask": "0x84",
175 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
176 "SampleAfterValue": "2000003",
177 "BriefDescription": "Demand load cycles page miss handler (PMH) is busy with this walk.",
178 "CounterHTOff": "0,1,2,3,4,5,6,7"
179 }
180] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/cache.json b/tools/perf/pmu-events/arch/x86/ivytown/cache.json
new file mode 100644
index 000000000000..ff27a620edd8
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/cache.json
@@ -0,0 +1,1272 @@
1[
2 {
3 "PublicDescription": "Demand Data Read requests that hit L2 cache.",
4 "EventCode": "0x24",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Demand Data Read requests that hit L2 cache",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "RFO requests that hit L2 cache.",
14 "EventCode": "0x24",
15 "Counter": "0,1,2,3",
16 "UMask": "0x4",
17 "EventName": "L2_RQSTS.RFO_HIT",
18 "SampleAfterValue": "200003",
19 "BriefDescription": "RFO requests that hit L2 cache",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Counts the number of store RFO requests that miss the L2 cache.",
24 "EventCode": "0x24",
25 "Counter": "0,1,2,3",
26 "UMask": "0x8",
27 "EventName": "L2_RQSTS.RFO_MISS",
28 "SampleAfterValue": "200003",
29 "BriefDescription": "RFO requests that miss L2 cache",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Number of instruction fetches that hit the L2 cache.",
34 "EventCode": "0x24",
35 "Counter": "0,1,2,3",
36 "UMask": "0x10",
37 "EventName": "L2_RQSTS.CODE_RD_HIT",
38 "SampleAfterValue": "200003",
39 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Number of instruction fetches that missed the L2 cache.",
44 "EventCode": "0x24",
45 "Counter": "0,1,2,3",
46 "UMask": "0x20",
47 "EventName": "L2_RQSTS.CODE_RD_MISS",
48 "SampleAfterValue": "200003",
49 "BriefDescription": "L2 cache misses when fetching instructions",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Counts all L2 HW prefetcher requests that hit L2.",
54 "EventCode": "0x24",
55 "Counter": "0,1,2,3",
56 "UMask": "0x40",
57 "EventName": "L2_RQSTS.PF_HIT",
58 "SampleAfterValue": "200003",
59 "BriefDescription": "Requests from the L2 hardware prefetchers that hit L2 cache",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Counts all L2 HW prefetcher requests that missed L2.",
64 "EventCode": "0x24",
65 "Counter": "0,1,2,3",
66 "UMask": "0x80",
67 "EventName": "L2_RQSTS.PF_MISS",
68 "SampleAfterValue": "200003",
69 "BriefDescription": "Requests from the L2 hardware prefetchers that miss L2 cache",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "PublicDescription": "Counts any demand and L1 HW prefetch data load requests to L2.",
74 "EventCode": "0x24",
75 "Counter": "0,1,2,3",
76 "UMask": "0x3",
77 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
78 "SampleAfterValue": "200003",
79 "BriefDescription": "Demand Data Read requests",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "PublicDescription": "Counts all L2 store RFO requests.",
84 "EventCode": "0x24",
85 "Counter": "0,1,2,3",
86 "UMask": "0xc",
87 "EventName": "L2_RQSTS.ALL_RFO",
88 "SampleAfterValue": "200003",
89 "BriefDescription": "RFO requests to L2 cache",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "PublicDescription": "Counts all L2 code requests.",
94 "EventCode": "0x24",
95 "Counter": "0,1,2,3",
96 "UMask": "0x30",
97 "EventName": "L2_RQSTS.ALL_CODE_RD",
98 "SampleAfterValue": "200003",
99 "BriefDescription": "L2 code requests",
100 "CounterHTOff": "0,1,2,3,4,5,6,7"
101 },
102 {
103 "PublicDescription": "Counts all L2 HW prefetcher requests.",
104 "EventCode": "0x24",
105 "Counter": "0,1,2,3",
106 "UMask": "0xc0",
107 "EventName": "L2_RQSTS.ALL_PF",
108 "SampleAfterValue": "200003",
109 "BriefDescription": "Requests from L2 hardware prefetchers",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "PublicDescription": "RFOs that miss cache lines.",
114 "EventCode": "0x27",
115 "Counter": "0,1,2,3",
116 "UMask": "0x1",
117 "EventName": "L2_STORE_LOCK_RQSTS.MISS",
118 "SampleAfterValue": "200003",
119 "BriefDescription": "RFOs that miss cache lines",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "PublicDescription": "RFOs that hit cache lines in M state.",
124 "EventCode": "0x27",
125 "Counter": "0,1,2,3",
126 "UMask": "0x8",
127 "EventName": "L2_STORE_LOCK_RQSTS.HIT_M",
128 "SampleAfterValue": "200003",
129 "BriefDescription": "RFOs that hit cache lines in M state",
130 "CounterHTOff": "0,1,2,3,4,5,6,7"
131 },
132 {
133 "PublicDescription": "RFOs that access cache lines in any state.",
134 "EventCode": "0x27",
135 "Counter": "0,1,2,3",
136 "UMask": "0xf",
137 "EventName": "L2_STORE_LOCK_RQSTS.ALL",
138 "SampleAfterValue": "200003",
139 "BriefDescription": "RFOs that access cache lines in any state",
140 "CounterHTOff": "0,1,2,3,4,5,6,7"
141 },
142 {
143 "PublicDescription": "Not rejected writebacks that missed LLC.",
144 "EventCode": "0x28",
145 "Counter": "0,1,2,3",
146 "UMask": "0x1",
147 "EventName": "L2_L1D_WB_RQSTS.MISS",
148 "SampleAfterValue": "200003",
149 "BriefDescription": "Count the number of modified Lines evicted from L1 and missed L2. (Non-rejected WBs from the DCU.)",
150 "CounterHTOff": "0,1,2,3,4,5,6,7"
151 },
152 {
153 "PublicDescription": "Not rejected writebacks from L1D to L2 cache lines in E state.",
154 "EventCode": "0x28",
155 "Counter": "0,1,2,3",
156 "UMask": "0x4",
157 "EventName": "L2_L1D_WB_RQSTS.HIT_E",
158 "SampleAfterValue": "200003",
159 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in E state",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "PublicDescription": "Not rejected writebacks from L1D to L2 cache lines in M state.",
164 "EventCode": "0x28",
165 "Counter": "0,1,2,3",
166 "UMask": "0x8",
167 "EventName": "L2_L1D_WB_RQSTS.HIT_M",
168 "SampleAfterValue": "200003",
169 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in M state",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "EventCode": "0x28",
174 "Counter": "0,1,2,3",
175 "UMask": "0xf",
176 "EventName": "L2_L1D_WB_RQSTS.ALL",
177 "SampleAfterValue": "200003",
178 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in any state.",
179 "CounterHTOff": "0,1,2,3,4,5,6,7"
180 },
181 {
182 "PublicDescription": "This event counts each cache miss condition for references to the last level cache.",
183 "EventCode": "0x2E",
184 "Counter": "0,1,2,3",
185 "UMask": "0x41",
186 "EventName": "LONGEST_LAT_CACHE.MISS",
187 "SampleAfterValue": "100003",
188 "BriefDescription": "Core-originated cacheable demand requests missed LLC",
189 "CounterHTOff": "0,1,2,3,4,5,6,7"
190 },
191 {
192 "PublicDescription": "This event counts requests originating from the core that reference a cache line in the last level cache.",
193 "EventCode": "0x2E",
194 "Counter": "0,1,2,3",
195 "UMask": "0x4f",
196 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
197 "SampleAfterValue": "100003",
198 "BriefDescription": "Core-originated cacheable demand requests that refer to LLC",
199 "CounterHTOff": "0,1,2,3,4,5,6,7"
200 },
201 {
202 "PublicDescription": "Increments the number of outstanding L1D misses every cycle. Set Cmask = 1 and Edge =1 to count occurrences.",
203 "EventCode": "0x48",
204 "Counter": "2",
205 "UMask": "0x1",
206 "EventName": "L1D_PEND_MISS.PENDING",
207 "SampleAfterValue": "2000003",
208 "BriefDescription": "L1D miss oustandings duration in cycles",
209 "CounterHTOff": "2"
210 },
211 {
212 "EventCode": "0x48",
213 "Counter": "2",
214 "UMask": "0x1",
215 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
216 "SampleAfterValue": "2000003",
217 "BriefDescription": "Cycles with L1D load Misses outstanding.",
218 "CounterMask": "1",
219 "CounterHTOff": "2"
220 },
221 {
222 "PublicDescription": "Counts the number of lines brought into the L1 data cache.",
223 "EventCode": "0x51",
224 "Counter": "0,1,2,3",
225 "UMask": "0x1",
226 "EventName": "L1D.REPLACEMENT",
227 "SampleAfterValue": "2000003",
228 "BriefDescription": "L1D data line replacements",
229 "CounterHTOff": "0,1,2,3,4,5,6,7"
230 },
231 {
232 "PublicDescription": "Offcore outstanding Demand Data Read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
233 "EventCode": "0x60",
234 "Counter": "0,1,2,3",
235 "UMask": "0x1",
236 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
237 "SampleAfterValue": "2000003",
238 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
239 "CounterHTOff": "0,1,2,3,4,5,6,7"
240 },
241 {
242 "PublicDescription": "Offcore outstanding Demand Code Read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
243 "EventCode": "0x60",
244 "Counter": "0,1,2,3",
245 "UMask": "0x2",
246 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
247 "SampleAfterValue": "2000003",
248 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
249 "CounterHTOff": "0,1,2,3,4,5,6,7"
250 },
251 {
252 "PublicDescription": "Offcore outstanding RFO store transactions in SQ to uncore. Set Cmask=1 to count cycles.",
253 "EventCode": "0x60",
254 "Counter": "0,1,2,3",
255 "UMask": "0x4",
256 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
257 "SampleAfterValue": "2000003",
258 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore",
259 "CounterHTOff": "0,1,2,3,4,5,6,7"
260 },
261 {
262 "PublicDescription": "Offcore outstanding cacheable data read transactions in SQ to uncore. Set Cmask=1 to count cycles.",
263 "EventCode": "0x60",
264 "Counter": "0,1,2,3",
265 "UMask": "0x8",
266 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
267 "SampleAfterValue": "2000003",
268 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
269 "CounterHTOff": "0,1,2,3,4,5,6,7"
270 },
271 {
272 "PublicDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
273 "EventCode": "0x60",
274 "Counter": "0,1,2,3",
275 "UMask": "0x1",
276 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
277 "SampleAfterValue": "2000003",
278 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore",
279 "CounterMask": "1",
280 "CounterHTOff": "0,1,2,3,4,5,6,7"
281 },
282 {
283 "PublicDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
284 "EventCode": "0x60",
285 "Counter": "0,1,2,3",
286 "UMask": "0x8",
287 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
288 "SampleAfterValue": "2000003",
289 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore",
290 "CounterMask": "1",
291 "CounterHTOff": "0,1,2,3,4,5,6,7"
292 },
293 {
294 "PublicDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
295 "EventCode": "0x60",
296 "Counter": "0,1,2,3",
297 "UMask": "0x2",
298 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_CODE_RD",
299 "SampleAfterValue": "2000003",
300 "BriefDescription": "Offcore outstanding code reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
301 "CounterMask": "1",
302 "CounterHTOff": "0,1,2,3,4,5,6,7"
303 },
304 {
305 "PublicDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
306 "EventCode": "0x60",
307 "Counter": "0,1,2,3",
308 "UMask": "0x4",
309 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
310 "SampleAfterValue": "2000003",
311 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
312 "CounterMask": "1",
313 "CounterHTOff": "0,1,2,3,4,5,6,7"
314 },
315 {
316 "PublicDescription": "Cycles in which the L1D is locked.",
317 "EventCode": "0x63",
318 "Counter": "0,1,2,3",
319 "UMask": "0x2",
320 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
321 "SampleAfterValue": "2000003",
322 "BriefDescription": "Cycles when L1D is locked",
323 "CounterHTOff": "0,1,2,3,4,5,6,7"
324 },
325 {
326 "PublicDescription": "Demand data read requests sent to uncore.",
327 "EventCode": "0xB0",
328 "Counter": "0,1,2,3",
329 "UMask": "0x1",
330 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
331 "SampleAfterValue": "100003",
332 "BriefDescription": "Demand Data Read requests sent to uncore",
333 "CounterHTOff": "0,1,2,3,4,5,6,7"
334 },
335 {
336 "PublicDescription": "Demand code read requests sent to uncore.",
337 "EventCode": "0xB0",
338 "Counter": "0,1,2,3",
339 "UMask": "0x2",
340 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
341 "SampleAfterValue": "100003",
342 "BriefDescription": "Cacheable and noncachaeble code read requests",
343 "CounterHTOff": "0,1,2,3,4,5,6,7"
344 },
345 {
346 "PublicDescription": "Demand RFO read requests sent to uncore, including regular RFOs, locks, ItoM.",
347 "EventCode": "0xB0",
348 "Counter": "0,1,2,3",
349 "UMask": "0x4",
350 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
351 "SampleAfterValue": "100003",
352 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
353 "CounterHTOff": "0,1,2,3,4,5,6,7"
354 },
355 {
356 "PublicDescription": "Data read requests sent to uncore (demand and prefetch).",
357 "EventCode": "0xB0",
358 "Counter": "0,1,2,3",
359 "UMask": "0x8",
360 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
361 "SampleAfterValue": "100003",
362 "BriefDescription": "Demand and prefetch data reads",
363 "CounterHTOff": "0,1,2,3,4,5,6,7"
364 },
365 {
366 "PublicDescription": "Cases when offcore requests buffer cannot take more entries for core.",
367 "EventCode": "0xB2",
368 "Counter": "0,1,2,3",
369 "UMask": "0x1",
370 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
371 "SampleAfterValue": "2000003",
372 "BriefDescription": "Cases when offcore requests buffer cannot take more entries for core",
373 "CounterHTOff": "0,1,2,3,4,5,6,7"
374 },
375 {
376 "PEBS": "1",
377 "EventCode": "0xD0",
378 "Counter": "0,1,2,3",
379 "UMask": "0x11",
380 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
381 "SampleAfterValue": "100003",
382 "BriefDescription": "Retired load uops that miss the STLB.",
383 "CounterHTOff": "0,1,2,3"
384 },
385 {
386 "PEBS": "1",
387 "EventCode": "0xD0",
388 "Counter": "0,1,2,3",
389 "UMask": "0x12",
390 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
391 "SampleAfterValue": "100003",
392 "BriefDescription": "Retired store uops that miss the STLB.",
393 "CounterHTOff": "0,1,2,3"
394 },
395 {
396 "PEBS": "1",
397 "EventCode": "0xD0",
398 "Counter": "0,1,2,3",
399 "UMask": "0x21",
400 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
401 "SampleAfterValue": "100007",
402 "BriefDescription": "Retired load uops with locked access.",
403 "CounterHTOff": "0,1,2,3"
404 },
405 {
406 "PEBS": "1",
407 "EventCode": "0xD0",
408 "Counter": "0,1,2,3",
409 "UMask": "0x41",
410 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
411 "SampleAfterValue": "100003",
412 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
413 "CounterHTOff": "0,1,2,3"
414 },
415 {
416 "PEBS": "1",
417 "EventCode": "0xD0",
418 "Counter": "0,1,2,3",
419 "UMask": "0x42",
420 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
421 "SampleAfterValue": "100003",
422 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
423 "CounterHTOff": "0,1,2,3"
424 },
425 {
426 "PEBS": "1",
427 "EventCode": "0xD0",
428 "Counter": "0,1,2,3",
429 "UMask": "0x81",
430 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
431 "SampleAfterValue": "2000003",
432 "BriefDescription": "All retired load uops.",
433 "CounterHTOff": "0,1,2,3"
434 },
435 {
436 "PEBS": "1",
437 "EventCode": "0xD0",
438 "Counter": "0,1,2,3",
439 "UMask": "0x82",
440 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
441 "SampleAfterValue": "2000003",
442 "BriefDescription": "All retired store uops.",
443 "CounterHTOff": "0,1,2,3"
444 },
445 {
446 "PEBS": "1",
447 "PublicDescription": "Retired load uops with L1 cache hits as data sources.",
448 "EventCode": "0xD1",
449 "Counter": "0,1,2,3",
450 "UMask": "0x1",
451 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
452 "SampleAfterValue": "2000003",
453 "BriefDescription": "Retired load uops with L1 cache hits as data sources. ",
454 "CounterHTOff": "0,1,2,3"
455 },
456 {
457 "PEBS": "1",
458 "PublicDescription": "Retired load uops with L2 cache hits as data sources.",
459 "EventCode": "0xD1",
460 "Counter": "0,1,2,3",
461 "UMask": "0x2",
462 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
463 "SampleAfterValue": "100003",
464 "BriefDescription": "Retired load uops with L2 cache hits as data sources. ",
465 "CounterHTOff": "0,1,2,3"
466 },
467 {
468 "PEBS": "1",
469 "PublicDescription": "Retired load uops whose data source was LLC hit with no snoop required.",
470 "EventCode": "0xD1",
471 "Counter": "0,1,2,3",
472 "UMask": "0x4",
473 "EventName": "MEM_LOAD_UOPS_RETIRED.LLC_HIT",
474 "SampleAfterValue": "50021",
475 "BriefDescription": "Retired load uops which data sources were data hits in LLC without snoops required. ",
476 "CounterHTOff": "0,1,2,3"
477 },
478 {
479 "PEBS": "1",
480 "PublicDescription": "Retired load uops whose data source followed an L1 miss.",
481 "EventCode": "0xD1",
482 "Counter": "0,1,2,3",
483 "UMask": "0x8",
484 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
485 "SampleAfterValue": "100003",
486 "BriefDescription": "Retired load uops which data sources following L1 data-cache miss",
487 "CounterHTOff": "0,1,2,3"
488 },
489 {
490 "PEBS": "1",
491 "PublicDescription": "Retired load uops that missed L2, excluding unknown sources.",
492 "EventCode": "0xD1",
493 "Counter": "0,1,2,3",
494 "UMask": "0x10",
495 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
496 "SampleAfterValue": "50021",
497 "BriefDescription": "Miss in mid-level (L2) cache. Excludes Unknown data-source.",
498 "CounterHTOff": "0,1,2,3"
499 },
500 {
501 "PEBS": "1",
502 "PublicDescription": "Retired load uops whose data source is LLC miss.",
503 "EventCode": "0xD1",
504 "Counter": "0,1,2,3",
505 "UMask": "0x20",
506 "EventName": "MEM_LOAD_UOPS_RETIRED.LLC_MISS",
507 "SampleAfterValue": "100007",
508 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
509 "CounterHTOff": "0,1,2,3"
510 },
511 {
512 "PEBS": "1",
513 "PublicDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
514 "EventCode": "0xD1",
515 "Counter": "0,1,2,3",
516 "UMask": "0x40",
517 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
518 "SampleAfterValue": "100003",
519 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready. ",
520 "CounterHTOff": "0,1,2,3"
521 },
522 {
523 "PEBS": "1",
524 "PublicDescription": "Retired load uops whose data source was an on-package core cache LLC hit and cross-core snoop missed.",
525 "EventCode": "0xD2",
526 "Counter": "0,1,2,3",
527 "UMask": "0x1",
528 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS",
529 "SampleAfterValue": "20011",
530 "BriefDescription": "Retired load uops which data sources were LLC hit and cross-core snoop missed in on-pkg core cache. ",
531 "CounterHTOff": "0,1,2,3"
532 },
533 {
534 "PEBS": "1",
535 "PublicDescription": "Retired load uops whose data source was an on-package LLC hit and cross-core snoop hits.",
536 "EventCode": "0xD2",
537 "Counter": "0,1,2,3",
538 "UMask": "0x2",
539 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT",
540 "SampleAfterValue": "20011",
541 "BriefDescription": "Retired load uops which data sources were LLC and cross-core snoop hits in on-pkg core cache. ",
542 "CounterHTOff": "0,1,2,3"
543 },
544 {
545 "PEBS": "1",
546 "PublicDescription": "Retired load uops whose data source was an on-package core cache with HitM responses.",
547 "EventCode": "0xD2",
548 "Counter": "0,1,2,3",
549 "UMask": "0x4",
550 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM",
551 "SampleAfterValue": "20011",
552 "BriefDescription": "Retired load uops which data sources were HitM responses from shared LLC. ",
553 "CounterHTOff": "0,1,2,3"
554 },
555 {
556 "PEBS": "1",
557 "PublicDescription": "Retired load uops whose data source was LLC hit with no snoop required.",
558 "EventCode": "0xD2",
559 "Counter": "0,1,2,3",
560 "UMask": "0x8",
561 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_NONE",
562 "SampleAfterValue": "100003",
563 "BriefDescription": "Retired load uops which data sources were hits in LLC without snoops required. ",
564 "CounterHTOff": "0,1,2,3"
565 },
566 {
567 "PublicDescription": "Retired load uop whose Data Source was: local DRAM either Snoop not needed or Snoop Miss (RspI)",
568 "EventCode": "0xD3",
569 "Counter": "0,1,2,3",
570 "UMask": "0x1",
571 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM",
572 "SampleAfterValue": "100007",
573 "BriefDescription": "Retired load uops which data sources missed LLC but serviced from local dram.",
574 "CounterHTOff": "0,1,2,3"
575 },
576 {
577 "EventCode": "0xD3",
578 "Counter": "0,1,2,3",
579 "UMask": "0xc",
580 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM",
581 "SampleAfterValue": "100007",
582 "BriefDescription": "Retired load uops whose data source was remote DRAM (Snoop not needed, Snoop Miss, or Snoop Hit data not forwarded).",
583 "CounterHTOff": "0,1,2,3"
584 },
585 {
586 "EventCode": "0xD3",
587 "Counter": "0,1,2,3",
588 "UMask": "0x10",
589 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM",
590 "SampleAfterValue": "100007",
591 "BriefDescription": "Remote cache HITM.",
592 "CounterHTOff": "0,1,2,3"
593 },
594 {
595 "EventCode": "0xD3",
596 "Counter": "0,1,2,3",
597 "UMask": "0x20",
598 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_FWD",
599 "SampleAfterValue": "100007",
600 "BriefDescription": "Data forwarded from remote cache.",
601 "CounterHTOff": "0,1,2,3"
602 },
603 {
604 "PublicDescription": "Demand Data Read requests that access L2 cache.",
605 "EventCode": "0xF0",
606 "Counter": "0,1,2,3",
607 "UMask": "0x1",
608 "EventName": "L2_TRANS.DEMAND_DATA_RD",
609 "SampleAfterValue": "200003",
610 "BriefDescription": "Demand Data Read requests that access L2 cache",
611 "CounterHTOff": "0,1,2,3,4,5,6,7"
612 },
613 {
614 "PublicDescription": "RFO requests that access L2 cache.",
615 "EventCode": "0xF0",
616 "Counter": "0,1,2,3",
617 "UMask": "0x2",
618 "EventName": "L2_TRANS.RFO",
619 "SampleAfterValue": "200003",
620 "BriefDescription": "RFO requests that access L2 cache",
621 "CounterHTOff": "0,1,2,3,4,5,6,7"
622 },
623 {
624 "PublicDescription": "L2 cache accesses when fetching instructions.",
625 "EventCode": "0xF0",
626 "Counter": "0,1,2,3",
627 "UMask": "0x4",
628 "EventName": "L2_TRANS.CODE_RD",
629 "SampleAfterValue": "200003",
630 "BriefDescription": "L2 cache accesses when fetching instructions",
631 "CounterHTOff": "0,1,2,3,4,5,6,7"
632 },
633 {
634 "PublicDescription": "Any MLC or LLC HW prefetch accessing L2, including rejects.",
635 "EventCode": "0xF0",
636 "Counter": "0,1,2,3",
637 "UMask": "0x8",
638 "EventName": "L2_TRANS.ALL_PF",
639 "SampleAfterValue": "200003",
640 "BriefDescription": "L2 or LLC HW prefetches that access L2 cache",
641 "CounterHTOff": "0,1,2,3,4,5,6,7"
642 },
643 {
644 "PublicDescription": "L1D writebacks that access L2 cache.",
645 "EventCode": "0xF0",
646 "Counter": "0,1,2,3",
647 "UMask": "0x10",
648 "EventName": "L2_TRANS.L1D_WB",
649 "SampleAfterValue": "200003",
650 "BriefDescription": "L1D writebacks that access L2 cache",
651 "CounterHTOff": "0,1,2,3,4,5,6,7"
652 },
653 {
654 "PublicDescription": "L2 fill requests that access L2 cache.",
655 "EventCode": "0xF0",
656 "Counter": "0,1,2,3",
657 "UMask": "0x20",
658 "EventName": "L2_TRANS.L2_FILL",
659 "SampleAfterValue": "200003",
660 "BriefDescription": "L2 fill requests that access L2 cache",
661 "CounterHTOff": "0,1,2,3,4,5,6,7"
662 },
663 {
664 "PublicDescription": "L2 writebacks that access L2 cache.",
665 "EventCode": "0xF0",
666 "Counter": "0,1,2,3",
667 "UMask": "0x40",
668 "EventName": "L2_TRANS.L2_WB",
669 "SampleAfterValue": "200003",
670 "BriefDescription": "L2 writebacks that access L2 cache",
671 "CounterHTOff": "0,1,2,3,4,5,6,7"
672 },
673 {
674 "PublicDescription": "Transactions accessing L2 pipe.",
675 "EventCode": "0xF0",
676 "Counter": "0,1,2,3",
677 "UMask": "0x80",
678 "EventName": "L2_TRANS.ALL_REQUESTS",
679 "SampleAfterValue": "200003",
680 "BriefDescription": "Transactions accessing L2 pipe",
681 "CounterHTOff": "0,1,2,3,4,5,6,7"
682 },
683 {
684 "PublicDescription": "L2 cache lines in I state filling L2.",
685 "EventCode": "0xF1",
686 "Counter": "0,1,2,3",
687 "UMask": "0x1",
688 "EventName": "L2_LINES_IN.I",
689 "SampleAfterValue": "100003",
690 "BriefDescription": "L2 cache lines in I state filling L2",
691 "CounterHTOff": "0,1,2,3,4,5,6,7"
692 },
693 {
694 "PublicDescription": "L2 cache lines in S state filling L2.",
695 "EventCode": "0xF1",
696 "Counter": "0,1,2,3",
697 "UMask": "0x2",
698 "EventName": "L2_LINES_IN.S",
699 "SampleAfterValue": "100003",
700 "BriefDescription": "L2 cache lines in S state filling L2",
701 "CounterHTOff": "0,1,2,3,4,5,6,7"
702 },
703 {
704 "PublicDescription": "L2 cache lines in E state filling L2.",
705 "EventCode": "0xF1",
706 "Counter": "0,1,2,3",
707 "UMask": "0x4",
708 "EventName": "L2_LINES_IN.E",
709 "SampleAfterValue": "100003",
710 "BriefDescription": "L2 cache lines in E state filling L2",
711 "CounterHTOff": "0,1,2,3,4,5,6,7"
712 },
713 {
714 "PublicDescription": "L2 cache lines filling L2.",
715 "EventCode": "0xF1",
716 "Counter": "0,1,2,3",
717 "UMask": "0x7",
718 "EventName": "L2_LINES_IN.ALL",
719 "SampleAfterValue": "100003",
720 "BriefDescription": "L2 cache lines filling L2",
721 "CounterHTOff": "0,1,2,3,4,5,6,7"
722 },
723 {
724 "PublicDescription": "Clean L2 cache lines evicted by demand.",
725 "EventCode": "0xF2",
726 "Counter": "0,1,2,3",
727 "UMask": "0x1",
728 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
729 "SampleAfterValue": "100003",
730 "BriefDescription": "Clean L2 cache lines evicted by demand",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "PublicDescription": "Dirty L2 cache lines evicted by demand.",
735 "EventCode": "0xF2",
736 "Counter": "0,1,2,3",
737 "UMask": "0x2",
738 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
739 "SampleAfterValue": "100003",
740 "BriefDescription": "Dirty L2 cache lines evicted by demand",
741 "CounterHTOff": "0,1,2,3,4,5,6,7"
742 },
743 {
744 "PublicDescription": "Clean L2 cache lines evicted by the MLC prefetcher.",
745 "EventCode": "0xF2",
746 "Counter": "0,1,2,3",
747 "UMask": "0x4",
748 "EventName": "L2_LINES_OUT.PF_CLEAN",
749 "SampleAfterValue": "100003",
750 "BriefDescription": "Clean L2 cache lines evicted by L2 prefetch",
751 "CounterHTOff": "0,1,2,3,4,5,6,7"
752 },
753 {
754 "PublicDescription": "Dirty L2 cache lines evicted by the MLC prefetcher.",
755 "EventCode": "0xF2",
756 "Counter": "0,1,2,3",
757 "UMask": "0x8",
758 "EventName": "L2_LINES_OUT.PF_DIRTY",
759 "SampleAfterValue": "100003",
760 "BriefDescription": "Dirty L2 cache lines evicted by L2 prefetch",
761 "CounterHTOff": "0,1,2,3,4,5,6,7"
762 },
763 {
764 "PublicDescription": "Dirty L2 cache lines filling the L2.",
765 "EventCode": "0xF2",
766 "Counter": "0,1,2,3",
767 "UMask": "0xa",
768 "EventName": "L2_LINES_OUT.DIRTY_ALL",
769 "SampleAfterValue": "100003",
770 "BriefDescription": "Dirty L2 cache lines filling the L2",
771 "CounterHTOff": "0,1,2,3,4,5,6,7"
772 },
773 {
774 "EventCode": "0xF4",
775 "Counter": "0,1,2,3",
776 "UMask": "0x10",
777 "EventName": "SQ_MISC.SPLIT_LOCK",
778 "SampleAfterValue": "100003",
779 "BriefDescription": "Split locks in SQ",
780 "CounterHTOff": "0,1,2,3,4,5,6,7"
781 },
782 {
783 "PublicDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
784 "EventCode": "0x60",
785 "Counter": "0,1,2,3",
786 "UMask": "0x1",
787 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
788 "SampleAfterValue": "2000003",
789 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue",
790 "CounterMask": "6",
791 "CounterHTOff": "0,1,2,3,4,5,6,7"
792 },
793 {
794 "PublicDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
795 "EventCode": "0x48",
796 "Counter": "2",
797 "UMask": "0x1",
798 "AnyThread": "1",
799 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
800 "SampleAfterValue": "2000003",
801 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core",
802 "CounterMask": "1",
803 "CounterHTOff": "2"
804 },
805 {
806 "PublicDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
807 "EventCode": "0x48",
808 "Counter": "0,1,2,3",
809 "UMask": "0x2",
810 "EventName": "L1D_PEND_MISS.FB_FULL",
811 "SampleAfterValue": "2000003",
812 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability",
813 "CounterMask": "1",
814 "CounterHTOff": "0,1,2,3,4,5,6,7"
815 },
816 {
817 "EventCode": "0xB7, 0xBB",
818 "MSRValue": "0x4003c0091",
819 "Counter": "0,1,2,3",
820 "UMask": "0x1",
821 "Offcore": "1",
822 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
823 "MSRIndex": "0x1a6,0x1a7",
824 "SampleAfterValue": "100003",
825 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
826 "CounterHTOff": "0,1,2,3"
827 },
828 {
829 "EventCode": "0xB7, 0xBB",
830 "MSRValue": "0x10003c0091",
831 "Counter": "0,1,2,3",
832 "UMask": "0x1",
833 "Offcore": "1",
834 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
835 "MSRIndex": "0x1a6,0x1a7",
836 "SampleAfterValue": "100003",
837 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
838 "CounterHTOff": "0,1,2,3"
839 },
840 {
841 "EventCode": "0xB7, 0xBB",
842 "MSRValue": "0x1003c0091",
843 "Counter": "0,1,2,3",
844 "UMask": "0x1",
845 "Offcore": "1",
846 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
847 "MSRIndex": "0x1a6,0x1a7",
848 "SampleAfterValue": "100003",
849 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
850 "CounterHTOff": "0,1,2,3"
851 },
852 {
853 "EventCode": "0xB7, 0xBB",
854 "MSRValue": "0x2003c0091",
855 "Counter": "0,1,2,3",
856 "UMask": "0x1",
857 "Offcore": "1",
858 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.SNOOP_MISS",
859 "MSRIndex": "0x1a6,0x1a7",
860 "SampleAfterValue": "100003",
861 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and sibling core snoop returned a clean response",
862 "CounterHTOff": "0,1,2,3"
863 },
864 {
865 "EventCode": "0xB7, 0xBB",
866 "MSRValue": "0x3f803c0090",
867 "Counter": "0,1,2,3",
868 "UMask": "0x1",
869 "Offcore": "1",
870 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.ANY_RESPONSE",
871 "MSRIndex": "0x1a6,0x1a7",
872 "SampleAfterValue": "100003",
873 "BriefDescription": "Counts all prefetch data reads that hit the LLC",
874 "CounterHTOff": "0,1,2,3"
875 },
876 {
877 "EventCode": "0xB7, 0xBB",
878 "MSRValue": "0x4003c0090",
879 "Counter": "0,1,2,3",
880 "UMask": "0x1",
881 "Offcore": "1",
882 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
883 "MSRIndex": "0x1a6,0x1a7",
884 "SampleAfterValue": "100003",
885 "BriefDescription": "Counts prefetch data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
886 "CounterHTOff": "0,1,2,3"
887 },
888 {
889 "EventCode": "0xB7, 0xBB",
890 "MSRValue": "0x10003c0090",
891 "Counter": "0,1,2,3",
892 "UMask": "0x1",
893 "Offcore": "1",
894 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
895 "MSRIndex": "0x1a6,0x1a7",
896 "SampleAfterValue": "100003",
897 "BriefDescription": "Counts prefetch data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
898 "CounterHTOff": "0,1,2,3"
899 },
900 {
901 "EventCode": "0xB7, 0xBB",
902 "MSRValue": "0x1003c0090",
903 "Counter": "0,1,2,3",
904 "UMask": "0x1",
905 "Offcore": "1",
906 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
907 "MSRIndex": "0x1a6,0x1a7",
908 "SampleAfterValue": "100003",
909 "BriefDescription": "Counts prefetch data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
910 "CounterHTOff": "0,1,2,3"
911 },
912 {
913 "EventCode": "0xB7, 0xBB",
914 "MSRValue": "0x2003c0090",
915 "Counter": "0,1,2,3",
916 "UMask": "0x1",
917 "Offcore": "1",
918 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.SNOOP_MISS",
919 "MSRIndex": "0x1a6,0x1a7",
920 "SampleAfterValue": "100003",
921 "BriefDescription": "Counts prefetch data reads that hit in the LLC and sibling core snoop returned a clean response",
922 "CounterHTOff": "0,1,2,3"
923 },
924 {
925 "EventCode": "0xB7, 0xBB",
926 "MSRValue": "0x3f803c03f7",
927 "Counter": "0,1,2,3",
928 "UMask": "0x1",
929 "Offcore": "1",
930 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.ANY_RESPONSE",
931 "MSRIndex": "0x1a6,0x1a7",
932 "SampleAfterValue": "100003",
933 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC",
934 "CounterHTOff": "0,1,2,3"
935 },
936 {
937 "EventCode": "0xB7, 0xBB",
938 "MSRValue": "0x4003c03f7",
939 "Counter": "0,1,2,3",
940 "UMask": "0x1",
941 "Offcore": "1",
942 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
943 "MSRIndex": "0x1a6,0x1a7",
944 "SampleAfterValue": "100003",
945 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
946 "CounterHTOff": "0,1,2,3"
947 },
948 {
949 "EventCode": "0xB7, 0xBB",
950 "MSRValue": "0x10003c03f7",
951 "Counter": "0,1,2,3",
952 "UMask": "0x1",
953 "Offcore": "1",
954 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HITM_OTHER_CORE",
955 "MSRIndex": "0x1a6,0x1a7",
956 "SampleAfterValue": "100003",
957 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
958 "CounterHTOff": "0,1,2,3"
959 },
960 {
961 "EventCode": "0xB7, 0xBB",
962 "MSRValue": "0x1003c03f7",
963 "Counter": "0,1,2,3",
964 "UMask": "0x1",
965 "Offcore": "1",
966 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.NO_SNOOP_NEEDED",
967 "MSRIndex": "0x1a6,0x1a7",
968 "SampleAfterValue": "100003",
969 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
970 "CounterHTOff": "0,1,2,3"
971 },
972 {
973 "EventCode": "0xB7, 0xBB",
974 "MSRValue": "0x2003c03f7",
975 "Counter": "0,1,2,3",
976 "UMask": "0x1",
977 "Offcore": "1",
978 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.SNOOP_MISS",
979 "MSRIndex": "0x1a6,0x1a7",
980 "SampleAfterValue": "100003",
981 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and sibling core snoop returned a clean response",
982 "CounterHTOff": "0,1,2,3"
983 },
984 {
985 "EventCode": "0xB7, 0xBB",
986 "MSRValue": "0x10008",
987 "Counter": "0,1,2,3",
988 "UMask": "0x1",
989 "Offcore": "1",
990 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
991 "MSRIndex": "0x1a6,0x1a7",
992 "SampleAfterValue": "100003",
993 "BriefDescription": "Counts all writebacks from the core to the LLC",
994 "CounterHTOff": "0,1,2,3"
995 },
996 {
997 "EventCode": "0xB7, 0xBB",
998 "MSRValue": "0x3f803c0004",
999 "Counter": "0,1,2,3",
1000 "UMask": "0x1",
1001 "Offcore": "1",
1002 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.ANY_RESPONSE",
1003 "MSRIndex": "0x1a6,0x1a7",
1004 "SampleAfterValue": "100003",
1005 "BriefDescription": "Counts all demand code reads that hit in the LLC",
1006 "CounterHTOff": "0,1,2,3"
1007 },
1008 {
1009 "EventCode": "0xB7, 0xBB",
1010 "MSRValue": "0x3f803c0001",
1011 "Counter": "0,1,2,3",
1012 "UMask": "0x1",
1013 "Offcore": "1",
1014 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.ANY_RESPONSE",
1015 "MSRIndex": "0x1a6,0x1a7",
1016 "SampleAfterValue": "100003",
1017 "BriefDescription": "Counts all demand data reads that hit in the LLC",
1018 "CounterHTOff": "0,1,2,3"
1019 },
1020 {
1021 "EventCode": "0xB7, 0xBB",
1022 "MSRValue": "0x4003c0001",
1023 "Counter": "0,1,2,3",
1024 "UMask": "0x1",
1025 "Offcore": "1",
1026 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1027 "MSRIndex": "0x1a6,0x1a7",
1028 "SampleAfterValue": "100003",
1029 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1030 "CounterHTOff": "0,1,2,3"
1031 },
1032 {
1033 "EventCode": "0xB7, 0xBB",
1034 "MSRValue": "0x10003c0001",
1035 "Counter": "0,1,2,3",
1036 "UMask": "0x1",
1037 "Offcore": "1",
1038 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1039 "MSRIndex": "0x1a6,0x1a7",
1040 "SampleAfterValue": "100003",
1041 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1042 "CounterHTOff": "0,1,2,3"
1043 },
1044 {
1045 "EventCode": "0xB7, 0xBB",
1046 "MSRValue": "0x1003c0001",
1047 "Counter": "0,1,2,3",
1048 "UMask": "0x1",
1049 "Offcore": "1",
1050 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1051 "MSRIndex": "0x1a6,0x1a7",
1052 "SampleAfterValue": "100003",
1053 "BriefDescription": "Counts demand data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
1054 "CounterHTOff": "0,1,2,3"
1055 },
1056 {
1057 "EventCode": "0xB7, 0xBB",
1058 "MSRValue": "0x2003c0001",
1059 "Counter": "0,1,2,3",
1060 "UMask": "0x1",
1061 "Offcore": "1",
1062 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.SNOOP_MISS",
1063 "MSRIndex": "0x1a6,0x1a7",
1064 "SampleAfterValue": "100003",
1065 "BriefDescription": "Counts demand data reads that hit in the LLC and sibling core snoop returned a clean response",
1066 "CounterHTOff": "0,1,2,3"
1067 },
1068 {
1069 "EventCode": "0xB7, 0xBB",
1070 "MSRValue": "0x10003c0002",
1071 "Counter": "0,1,2,3",
1072 "UMask": "0x1",
1073 "Offcore": "1",
1074 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE",
1075 "MSRIndex": "0x1a6,0x1a7",
1076 "SampleAfterValue": "100003",
1077 "BriefDescription": "Counts demand data writes (RFOs) that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1078 "CounterHTOff": "0,1,2,3"
1079 },
1080 {
1081 "EventCode": "0xB7, 0xBB",
1082 "MSRValue": "0x803c8000",
1083 "Counter": "0,1,2,3",
1084 "UMask": "0x1",
1085 "Offcore": "1",
1086 "EventName": "OFFCORE_RESPONSE.OTHER.LRU_HINTS",
1087 "MSRIndex": "0x1a6,0x1a7",
1088 "SampleAfterValue": "100003",
1089 "BriefDescription": "Counts L2 hints sent to LLC to keep a line from being evicted out of the core caches",
1090 "CounterHTOff": "0,1,2,3"
1091 },
1092 {
1093 "EventCode": "0xB7, 0xBB",
1094 "MSRValue": "0x23ffc08000",
1095 "Counter": "0,1,2,3",
1096 "UMask": "0x1",
1097 "Offcore": "1",
1098 "EventName": "OFFCORE_RESPONSE.OTHER.PORTIO_MMIO_UC",
1099 "MSRIndex": "0x1a6,0x1a7",
1100 "SampleAfterValue": "100003",
1101 "BriefDescription": "Counts miscellaneous accesses that include port i/o, MMIO and uncacheable memory accesses",
1102 "CounterHTOff": "0,1,2,3"
1103 },
1104 {
1105 "EventCode": "0xB7, 0xBB",
1106 "MSRValue": "0x3f803c0040",
1107 "Counter": "0,1,2,3",
1108 "UMask": "0x1",
1109 "Offcore": "1",
1110 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.ANY_RESPONSE",
1111 "MSRIndex": "0x1a6,0x1a7",
1112 "SampleAfterValue": "100003",
1113 "BriefDescription": "Counts all prefetch (that bring data to L2) code reads that hit in the LLC",
1114 "CounterHTOff": "0,1,2,3"
1115 },
1116 {
1117 "EventCode": "0xB7, 0xBB",
1118 "MSRValue": "0x3f803c0010",
1119 "Counter": "0,1,2,3",
1120 "UMask": "0x1",
1121 "Offcore": "1",
1122 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.ANY_RESPONSE",
1123 "MSRIndex": "0x1a6,0x1a7",
1124 "SampleAfterValue": "100003",
1125 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC",
1126 "CounterHTOff": "0,1,2,3"
1127 },
1128 {
1129 "EventCode": "0xB7, 0xBB",
1130 "MSRValue": "0x4003c0010",
1131 "Counter": "0,1,2,3",
1132 "UMask": "0x1",
1133 "Offcore": "1",
1134 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1135 "MSRIndex": "0x1a6,0x1a7",
1136 "SampleAfterValue": "100003",
1137 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1138 "CounterHTOff": "0,1,2,3"
1139 },
1140 {
1141 "EventCode": "0xB7, 0xBB",
1142 "MSRValue": "0x10003c0010",
1143 "Counter": "0,1,2,3",
1144 "UMask": "0x1",
1145 "Offcore": "1",
1146 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1147 "MSRIndex": "0x1a6,0x1a7",
1148 "SampleAfterValue": "100003",
1149 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1150 "CounterHTOff": "0,1,2,3"
1151 },
1152 {
1153 "EventCode": "0xB7, 0xBB",
1154 "MSRValue": "0x1003c0010",
1155 "Counter": "0,1,2,3",
1156 "UMask": "0x1",
1157 "Offcore": "1",
1158 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1159 "MSRIndex": "0x1a6,0x1a7",
1160 "SampleAfterValue": "100003",
1161 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
1162 "CounterHTOff": "0,1,2,3"
1163 },
1164 {
1165 "EventCode": "0xB7, 0xBB",
1166 "MSRValue": "0x2003c0010",
1167 "Counter": "0,1,2,3",
1168 "UMask": "0x1",
1169 "Offcore": "1",
1170 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.SNOOP_MISS",
1171 "MSRIndex": "0x1a6,0x1a7",
1172 "SampleAfterValue": "100003",
1173 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoops sent to sibling cores return clean response",
1174 "CounterHTOff": "0,1,2,3"
1175 },
1176 {
1177 "EventCode": "0xB7, 0xBB",
1178 "MSRValue": "0x3f803c0200",
1179 "Counter": "0,1,2,3",
1180 "UMask": "0x1",
1181 "Offcore": "1",
1182 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.ANY_RESPONSE",
1183 "MSRIndex": "0x1a6,0x1a7",
1184 "SampleAfterValue": "100003",
1185 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the LLC",
1186 "CounterHTOff": "0,1,2,3"
1187 },
1188 {
1189 "EventCode": "0xB7, 0xBB",
1190 "MSRValue": "0x3f803c0080",
1191 "Counter": "0,1,2,3",
1192 "UMask": "0x1",
1193 "Offcore": "1",
1194 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.ANY_RESPONSE",
1195 "MSRIndex": "0x1a6,0x1a7",
1196 "SampleAfterValue": "100003",
1197 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC",
1198 "CounterHTOff": "0,1,2,3"
1199 },
1200 {
1201 "EventCode": "0xB7, 0xBB",
1202 "MSRValue": "0x4003c0080",
1203 "Counter": "0,1,2,3",
1204 "UMask": "0x1",
1205 "Offcore": "1",
1206 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1207 "MSRIndex": "0x1a6,0x1a7",
1208 "SampleAfterValue": "100003",
1209 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1210 "CounterHTOff": "0,1,2,3"
1211 },
1212 {
1213 "EventCode": "0xB7, 0xBB",
1214 "MSRValue": "0x10003c0080",
1215 "Counter": "0,1,2,3",
1216 "UMask": "0x1",
1217 "Offcore": "1",
1218 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1219 "MSRIndex": "0x1a6,0x1a7",
1220 "SampleAfterValue": "100003",
1221 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1222 "CounterHTOff": "0,1,2,3"
1223 },
1224 {
1225 "EventCode": "0xB7, 0xBB",
1226 "MSRValue": "0x1003c0080",
1227 "Counter": "0,1,2,3",
1228 "UMask": "0x1",
1229 "Offcore": "1",
1230 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1231 "MSRIndex": "0x1a6,0x1a7",
1232 "SampleAfterValue": "100003",
1233 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
1234 "CounterHTOff": "0,1,2,3"
1235 },
1236 {
1237 "EventCode": "0xB7, 0xBB",
1238 "MSRValue": "0x2003c0080",
1239 "Counter": "0,1,2,3",
1240 "UMask": "0x1",
1241 "Offcore": "1",
1242 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.SNOOP_MISS",
1243 "MSRIndex": "0x1a6,0x1a7",
1244 "SampleAfterValue": "100003",
1245 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops sent to sibling cores return clean response",
1246 "CounterHTOff": "0,1,2,3"
1247 },
1248 {
1249 "EventCode": "0xB7, 0xBB",
1250 "MSRValue": "0x10400",
1251 "Counter": "0,1,2,3",
1252 "UMask": "0x1",
1253 "Offcore": "1",
1254 "EventName": "OFFCORE_RESPONSE.SPLIT_LOCK_UC_LOCK.ANY_RESPONSE",
1255 "MSRIndex": "0x1a6,0x1a7",
1256 "SampleAfterValue": "100003",
1257 "BriefDescription": "Counts requests where the address of an atomic lock instruction spans a cache line boundary or the lock instruction is executed on uncacheable address",
1258 "CounterHTOff": "0,1,2,3"
1259 },
1260 {
1261 "EventCode": "0xB7, 0xBB",
1262 "MSRValue": "0x10800",
1263 "Counter": "0,1,2,3",
1264 "UMask": "0x1",
1265 "Offcore": "1",
1266 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.ANY_RESPONSE",
1267 "MSRIndex": "0x1a6,0x1a7",
1268 "SampleAfterValue": "100003",
1269 "BriefDescription": "Counts non-temporal stores",
1270 "CounterHTOff": "0,1,2,3"
1271 }
1272] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/floating-point.json b/tools/perf/pmu-events/arch/x86/ivytown/floating-point.json
new file mode 100644
index 000000000000..950b62c0908e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/floating-point.json
@@ -0,0 +1,151 @@
1[
2 {
3 "PublicDescription": "Counts number of X87 uops executed.",
4 "EventCode": "0x10",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "FP_COMP_OPS_EXE.X87",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Number of FP Computational Uops Executed this cycle. The number of FADD, FSUB, FCOM, FMULs, integer MULsand IMULs, FDIVs, FPREMs, FSQRTS, integer DIVs, and IDIVs. This event does not distinguish an FADD used in the middle of a transcendental flow from a s",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Number of SSE* or AVX-128 FP Computational packed double-precision uops issued this cycle.",
14 "EventCode": "0x10",
15 "Counter": "0,1,2,3",
16 "UMask": "0x10",
17 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed double-precision uops issued this cycle",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Number of SSE* or AVX-128 FP Computational scalar single-precision uops issued this cycle.",
24 "EventCode": "0x10",
25 "Counter": "0,1,2,3",
26 "UMask": "0x20",
27 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar single-precision uops issued this cycle",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Number of SSE* or AVX-128 FP Computational packed single-precision uops issued this cycle.",
34 "EventCode": "0x10",
35 "Counter": "0,1,2,3",
36 "UMask": "0x40",
37 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_SINGLE",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed single-precision uops issued this cycle",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Counts number of SSE* or AVX-128 double precision FP scalar uops executed.",
44 "EventCode": "0x10",
45 "Counter": "0,1,2,3",
46 "UMask": "0x80",
47 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE",
48 "SampleAfterValue": "2000003",
49 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar double-precision uops issued this cycle",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Counts 256-bit packed single-precision floating-point instructions.",
54 "EventCode": "0x11",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "SIMD_FP_256.PACKED_SINGLE",
58 "SampleAfterValue": "2000003",
59 "BriefDescription": "number of GSSE-256 Computational FP single precision uops issued this cycle",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Counts 256-bit packed double-precision floating-point instructions.",
64 "EventCode": "0x11",
65 "Counter": "0,1,2,3",
66 "UMask": "0x2",
67 "EventName": "SIMD_FP_256.PACKED_DOUBLE",
68 "SampleAfterValue": "2000003",
69 "BriefDescription": "number of AVX-256 Computational FP double precision uops issued this cycle",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "PublicDescription": "Number of assists associated with 256-bit AVX store operations.",
74 "EventCode": "0xC1",
75 "Counter": "0,1,2,3",
76 "UMask": "0x8",
77 "EventName": "OTHER_ASSISTS.AVX_STORE",
78 "SampleAfterValue": "100003",
79 "BriefDescription": "Number of GSSE memory assist for stores. GSSE microcode assist is being invoked whenever the hardware is unable to properly handle GSSE-256b operations.",
80 "CounterHTOff": "0,1,2,3,4,5,6,7"
81 },
82 {
83 "EventCode": "0xC1",
84 "Counter": "0,1,2,3",
85 "UMask": "0x10",
86 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
87 "SampleAfterValue": "100003",
88 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
89 "CounterHTOff": "0,1,2,3,4,5,6,7"
90 },
91 {
92 "EventCode": "0xC1",
93 "Counter": "0,1,2,3",
94 "UMask": "0x20",
95 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
96 "SampleAfterValue": "100003",
97 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
98 "CounterHTOff": "0,1,2,3,4,5,6,7"
99 },
100 {
101 "PublicDescription": "Number of X87 FP assists due to output values.",
102 "EventCode": "0xCA",
103 "Counter": "0,1,2,3",
104 "UMask": "0x2",
105 "EventName": "FP_ASSIST.X87_OUTPUT",
106 "SampleAfterValue": "100003",
107 "BriefDescription": "Number of X87 assists due to output value.",
108 "CounterHTOff": "0,1,2,3,4,5,6,7"
109 },
110 {
111 "PublicDescription": "Number of X87 FP assists due to input values.",
112 "EventCode": "0xCA",
113 "Counter": "0,1,2,3",
114 "UMask": "0x4",
115 "EventName": "FP_ASSIST.X87_INPUT",
116 "SampleAfterValue": "100003",
117 "BriefDescription": "Number of X87 assists due to input value.",
118 "CounterHTOff": "0,1,2,3,4,5,6,7"
119 },
120 {
121 "PublicDescription": "Number of SIMD FP assists due to output values.",
122 "EventCode": "0xCA",
123 "Counter": "0,1,2,3",
124 "UMask": "0x8",
125 "EventName": "FP_ASSIST.SIMD_OUTPUT",
126 "SampleAfterValue": "100003",
127 "BriefDescription": "Number of SIMD FP assists due to Output values",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "PublicDescription": "Number of SIMD FP assists due to input values.",
132 "EventCode": "0xCA",
133 "Counter": "0,1,2,3",
134 "UMask": "0x10",
135 "EventName": "FP_ASSIST.SIMD_INPUT",
136 "SampleAfterValue": "100003",
137 "BriefDescription": "Number of SIMD FP assists due to input values",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "Cycles with any input/output SSE* or FP assists.",
142 "EventCode": "0xCA",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1e",
145 "EventName": "FP_ASSIST.ANY",
146 "SampleAfterValue": "100003",
147 "BriefDescription": "Cycles with any input/output SSE or FP assist",
148 "CounterMask": "1",
149 "CounterHTOff": "0,1,2,3"
150 }
151] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/frontend.json b/tools/perf/pmu-events/arch/x86/ivytown/frontend.json
new file mode 100644
index 000000000000..de72b84b3536
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/frontend.json
@@ -0,0 +1,305 @@
1[
2 {
3 "PublicDescription": "Counts cycles the IDQ is empty.",
4 "EventCode": "0x79",
5 "Counter": "0,1,2,3",
6 "UMask": "0x2",
7 "EventName": "IDQ.EMPTY",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles",
10 "CounterHTOff": "0,1,2,3"
11 },
12 {
13 "PublicDescription": "Increment each cycle # of uops delivered to IDQ from MITE path. Set Cmask = 1 to count cycles.",
14 "EventCode": "0x79",
15 "Counter": "0,1,2,3",
16 "UMask": "0x4",
17 "EventName": "IDQ.MITE_UOPS",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Increment each cycle. # of uops delivered to IDQ from DSB path. Set Cmask = 1 to count cycles.",
24 "EventCode": "0x79",
25 "Counter": "0,1,2,3",
26 "UMask": "0x8",
27 "EventName": "IDQ.DSB_UOPS",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by DSB. Set Cmask = 1 to count cycles. Add Edge=1 to count # of delivery.",
34 "EventCode": "0x79",
35 "Counter": "0,1,2,3",
36 "UMask": "0x10",
37 "EventName": "IDQ.MS_DSB_UOPS",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Increment each cycle # of uops delivered to IDQ when MS_busy by MITE. Set Cmask = 1 to count cycles.",
44 "EventCode": "0x79",
45 "Counter": "0,1,2,3",
46 "UMask": "0x20",
47 "EventName": "IDQ.MS_MITE_UOPS",
48 "SampleAfterValue": "2000003",
49 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Increment each cycle # of uops delivered to IDQ from MS by either DSB or MITE. Set Cmask = 1 to count cycles.",
54 "EventCode": "0x79",
55 "Counter": "0,1,2,3",
56 "UMask": "0x30",
57 "EventName": "IDQ.MS_UOPS",
58 "SampleAfterValue": "2000003",
59 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
64 "EventCode": "0x79",
65 "Counter": "0,1,2,3",
66 "UMask": "0x30",
67 "EventName": "IDQ.MS_CYCLES",
68 "SampleAfterValue": "2000003",
69 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
70 "CounterMask": "1",
71 "CounterHTOff": "0,1,2,3,4,5,6,7"
72 },
73 {
74 "PublicDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path.",
75 "EventCode": "0x79",
76 "Counter": "0,1,2,3",
77 "UMask": "0x4",
78 "EventName": "IDQ.MITE_CYCLES",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path",
81 "CounterMask": "1",
82 "CounterHTOff": "0,1,2,3,4,5,6,7"
83 },
84 {
85 "PublicDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path.",
86 "EventCode": "0x79",
87 "Counter": "0,1,2,3",
88 "UMask": "0x8",
89 "EventName": "IDQ.DSB_CYCLES",
90 "SampleAfterValue": "2000003",
91 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
92 "CounterMask": "1",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "PublicDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
97 "EventCode": "0x79",
98 "Counter": "0,1,2,3",
99 "UMask": "0x10",
100 "EventName": "IDQ.MS_DSB_CYCLES",
101 "SampleAfterValue": "2000003",
102 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
103 "CounterMask": "1",
104 "CounterHTOff": "0,1,2,3,4,5,6,7"
105 },
106 {
107 "PublicDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy.",
108 "EventCode": "0x79",
109 "Counter": "0,1,2,3",
110 "UMask": "0x10",
111 "EdgeDetect": "1",
112 "EventName": "IDQ.MS_DSB_OCCUR",
113 "SampleAfterValue": "2000003",
114 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy",
115 "CounterMask": "1",
116 "CounterHTOff": "0,1,2,3,4,5,6,7"
117 },
118 {
119 "PublicDescription": "Counts cycles DSB is delivered four uops. Set Cmask = 4.",
120 "EventCode": "0x79",
121 "Counter": "0,1,2,3",
122 "UMask": "0x18",
123 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
124 "SampleAfterValue": "2000003",
125 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
126 "CounterMask": "4",
127 "CounterHTOff": "0,1,2,3,4,5,6,7"
128 },
129 {
130 "PublicDescription": "Counts cycles DSB is delivered at least one uops. Set Cmask = 1.",
131 "EventCode": "0x79",
132 "Counter": "0,1,2,3",
133 "UMask": "0x18",
134 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
135 "SampleAfterValue": "2000003",
136 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
137 "CounterMask": "1",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "Counts cycles MITE is delivered four uops. Set Cmask = 4.",
142 "EventCode": "0x79",
143 "Counter": "0,1,2,3",
144 "UMask": "0x24",
145 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
146 "SampleAfterValue": "2000003",
147 "BriefDescription": "Cycles MITE is delivering 4 Uops",
148 "CounterMask": "4",
149 "CounterHTOff": "0,1,2,3,4,5,6,7"
150 },
151 {
152 "PublicDescription": "Counts cycles MITE is delivered at least one uops. Set Cmask = 1.",
153 "EventCode": "0x79",
154 "Counter": "0,1,2,3",
155 "UMask": "0x24",
156 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
157 "SampleAfterValue": "2000003",
158 "BriefDescription": "Cycles MITE is delivering any Uop",
159 "CounterMask": "1",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "PublicDescription": "Number of uops delivered to IDQ from any path.",
164 "EventCode": "0x79",
165 "Counter": "0,1,2,3",
166 "UMask": "0x3c",
167 "EventName": "IDQ.MITE_ALL_UOPS",
168 "SampleAfterValue": "2000003",
169 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "PublicDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches.",
174 "EventCode": "0x80",
175 "Counter": "0,1,2,3",
176 "UMask": "0x1",
177 "EventName": "ICACHE.HIT",
178 "SampleAfterValue": "2000003",
179 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches",
180 "CounterHTOff": "0,1,2,3,4,5,6,7"
181 },
182 {
183 "PublicDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes UC accesses.",
184 "EventCode": "0x80",
185 "Counter": "0,1,2,3",
186 "UMask": "0x2",
187 "EventName": "ICACHE.MISSES",
188 "SampleAfterValue": "200003",
189 "BriefDescription": "Instruction cache, streaming buffer and victim cache misses",
190 "CounterHTOff": "0,1,2,3,4,5,6,7"
191 },
192 {
193 "PublicDescription": "Cycles where a code-fetch stalled due to L1 instruction-cache miss or an iTLB miss.",
194 "EventCode": "0x80",
195 "Counter": "0,1,2,3",
196 "UMask": "0x4",
197 "EventName": "ICACHE.IFETCH_STALL",
198 "SampleAfterValue": "2000003",
199 "BriefDescription": "Cycles where a code-fetch stalled due to L1 instruction-cache miss or an iTLB miss",
200 "CounterHTOff": "0,1,2,3,4,5,6,7"
201 },
202 {
203 "PublicDescription": "Count issue pipeline slots where no uop was delivered from the front end to the back end when there is no back-end stall.",
204 "EventCode": "0x9C",
205 "Counter": "0,1,2,3",
206 "UMask": "0x1",
207 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
208 "SampleAfterValue": "2000003",
209 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled ",
210 "CounterHTOff": "0,1,2,3"
211 },
212 {
213 "EventCode": "0x9C",
214 "Counter": "0,1,2,3",
215 "UMask": "0x1",
216 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
217 "SampleAfterValue": "2000003",
218 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
219 "CounterMask": "4",
220 "CounterHTOff": "0,1,2,3"
221 },
222 {
223 "EventCode": "0x9C",
224 "Counter": "0,1,2,3",
225 "UMask": "0x1",
226 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
227 "SampleAfterValue": "2000003",
228 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
229 "CounterMask": "3",
230 "CounterHTOff": "0,1,2,3"
231 },
232 {
233 "EventCode": "0x9C",
234 "Counter": "0,1,2,3",
235 "UMask": "0x1",
236 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
237 "SampleAfterValue": "2000003",
238 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
239 "CounterMask": "2",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "EventCode": "0x9C",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
247 "SampleAfterValue": "2000003",
248 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
249 "CounterMask": "1",
250 "CounterHTOff": "0,1,2,3"
251 },
252 {
253 "EventCode": "0x9C",
254 "Invert": "1",
255 "Counter": "0,1,2,3",
256 "UMask": "0x1",
257 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
258 "SampleAfterValue": "2000003",
259 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
260 "CounterMask": "1",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "PublicDescription": "Number of DSB to MITE switches.",
265 "EventCode": "0xAB",
266 "Counter": "0,1,2,3",
267 "UMask": "0x1",
268 "EventName": "DSB2MITE_SWITCHES.COUNT",
269 "SampleAfterValue": "2000003",
270 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switches",
271 "CounterHTOff": "0,1,2,3,4,5,6,7"
272 },
273 {
274 "PublicDescription": "Cycles DSB to MITE switches caused delay.",
275 "EventCode": "0xAB",
276 "Counter": "0,1,2,3",
277 "UMask": "0x2",
278 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
279 "SampleAfterValue": "2000003",
280 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles",
281 "CounterHTOff": "0,1,2,3,4,5,6,7"
282 },
283 {
284 "PublicDescription": "DSB Fill encountered > 3 DSB lines.",
285 "EventCode": "0xAC",
286 "Counter": "0,1,2,3",
287 "UMask": "0x8",
288 "EventName": "DSB_FILL.EXCEED_DSB_LINES",
289 "SampleAfterValue": "2000003",
290 "BriefDescription": "Cycles when Decode Stream Buffer (DSB) fill encounter more than 3 Decode Stream Buffer (DSB) lines",
291 "CounterHTOff": "0,1,2,3,4,5,6,7"
292 },
293 {
294 "PublicDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
295 "EventCode": "0x79",
296 "Counter": "0,1,2,3",
297 "UMask": "0x30",
298 "EdgeDetect": "1",
299 "EventName": "IDQ.MS_SWITCHES",
300 "SampleAfterValue": "2000003",
301 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer",
302 "CounterMask": "1",
303 "CounterHTOff": "0,1,2,3,4,5,6,7"
304 }
305] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/memory.json b/tools/perf/pmu-events/arch/x86/ivytown/memory.json
new file mode 100644
index 000000000000..437d98f3e344
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/memory.json
@@ -0,0 +1,503 @@
1[
2 {
3 "PublicDescription": "Speculative cache-line split load uops dispatched to L1D.",
4 "EventCode": "0x05",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "MISALIGN_MEM_REF.LOADS",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Speculative cache-line split Store-address uops dispatched to L1D.",
14 "EventCode": "0x05",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "MISALIGN_MEM_REF.STORES",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "EventCode": "0xC3",
24 "Counter": "0,1,2,3",
25 "UMask": "0x2",
26 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
27 "SampleAfterValue": "100003",
28 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "PEBS": "2",
33 "EventCode": "0xCD",
34 "Counter": "3",
35 "UMask": "0x2",
36 "EventName": "MEM_TRANS_RETIRED.PRECISE_STORE",
37 "SampleAfterValue": "2000003",
38 "BriefDescription": "Sample stores and collect precise store operation via PEBS record. PMC3 only.",
39 "PRECISE_STORE": "1",
40 "TakenAlone": "1",
41 "CounterHTOff": "3"
42 },
43 {
44 "PEBS": "2",
45 "PublicDescription": "Loads with latency value being above 4.",
46 "EventCode": "0xCD",
47 "MSRValue": "0x4",
48 "Counter": "3",
49 "UMask": "0x1",
50 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
51 "MSRIndex": "0x3F6",
52 "SampleAfterValue": "100003",
53 "BriefDescription": "Loads with latency value being above 4",
54 "TakenAlone": "1",
55 "CounterHTOff": "3"
56 },
57 {
58 "PEBS": "2",
59 "PublicDescription": "Loads with latency value being above 8.",
60 "EventCode": "0xCD",
61 "MSRValue": "0x8",
62 "Counter": "3",
63 "UMask": "0x1",
64 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
65 "MSRIndex": "0x3F6",
66 "SampleAfterValue": "50021",
67 "BriefDescription": "Loads with latency value being above 8",
68 "TakenAlone": "1",
69 "CounterHTOff": "3"
70 },
71 {
72 "PEBS": "2",
73 "PublicDescription": "Loads with latency value being above 16.",
74 "EventCode": "0xCD",
75 "MSRValue": "0x10",
76 "Counter": "3",
77 "UMask": "0x1",
78 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
79 "MSRIndex": "0x3F6",
80 "SampleAfterValue": "20011",
81 "BriefDescription": "Loads with latency value being above 16",
82 "TakenAlone": "1",
83 "CounterHTOff": "3"
84 },
85 {
86 "PEBS": "2",
87 "PublicDescription": "Loads with latency value being above 32.",
88 "EventCode": "0xCD",
89 "MSRValue": "0x20",
90 "Counter": "3",
91 "UMask": "0x1",
92 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
93 "MSRIndex": "0x3F6",
94 "SampleAfterValue": "100007",
95 "BriefDescription": "Loads with latency value being above 32",
96 "TakenAlone": "1",
97 "CounterHTOff": "3"
98 },
99 {
100 "PEBS": "2",
101 "PublicDescription": "Loads with latency value being above 64.",
102 "EventCode": "0xCD",
103 "MSRValue": "0x40",
104 "Counter": "3",
105 "UMask": "0x1",
106 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
107 "MSRIndex": "0x3F6",
108 "SampleAfterValue": "2003",
109 "BriefDescription": "Loads with latency value being above 64",
110 "TakenAlone": "1",
111 "CounterHTOff": "3"
112 },
113 {
114 "PEBS": "2",
115 "PublicDescription": "Loads with latency value being above 128.",
116 "EventCode": "0xCD",
117 "MSRValue": "0x80",
118 "Counter": "3",
119 "UMask": "0x1",
120 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
121 "MSRIndex": "0x3F6",
122 "SampleAfterValue": "1009",
123 "BriefDescription": "Loads with latency value being above 128",
124 "TakenAlone": "1",
125 "CounterHTOff": "3"
126 },
127 {
128 "PEBS": "2",
129 "PublicDescription": "Loads with latency value being above 256.",
130 "EventCode": "0xCD",
131 "MSRValue": "0x100",
132 "Counter": "3",
133 "UMask": "0x1",
134 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
135 "MSRIndex": "0x3F6",
136 "SampleAfterValue": "503",
137 "BriefDescription": "Loads with latency value being above 256",
138 "TakenAlone": "1",
139 "CounterHTOff": "3"
140 },
141 {
142 "PEBS": "2",
143 "PublicDescription": "Loads with latency value being above 512.",
144 "EventCode": "0xCD",
145 "MSRValue": "0x200",
146 "Counter": "3",
147 "UMask": "0x1",
148 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
149 "MSRIndex": "0x3F6",
150 "SampleAfterValue": "101",
151 "BriefDescription": "Loads with latency value being above 512",
152 "TakenAlone": "1",
153 "CounterHTOff": "3"
154 },
155 {
156 "EventCode": "0xB7, 0xBB",
157 "MSRValue": "0x3fffc00244",
158 "Counter": "0,1,2,3",
159 "UMask": "0x1",
160 "Offcore": "1",
161 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.ANY_RESPONSE",
162 "MSRIndex": "0x1a6,0x1a7",
163 "SampleAfterValue": "100003",
164 "BriefDescription": "Counts all demand & prefetch code reads that miss the LLC",
165 "CounterHTOff": "0,1,2,3"
166 },
167 {
168 "EventCode": "0xB7, 0xBB",
169 "MSRValue": "0x67f800244",
170 "Counter": "0,1,2,3",
171 "UMask": "0x1",
172 "Offcore": "1",
173 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.REMOTE_DRAM",
174 "MSRIndex": "0x1a6,0x1a7",
175 "SampleAfterValue": "100003",
176 "BriefDescription": "Counts all demand & prefetch code reads that miss the LLC and the data returned from remote dram",
177 "CounterHTOff": "0,1,2,3"
178 },
179 {
180 "EventCode": "0xB7, 0xBB",
181 "MSRValue": "0x87f800244",
182 "Counter": "0,1,2,3",
183 "UMask": "0x1",
184 "Offcore": "1",
185 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.REMOTE_HIT_FORWARD",
186 "MSRIndex": "0x1a6,0x1a7",
187 "SampleAfterValue": "100003",
188 "BriefDescription": "Counts all demand & prefetch code reads that miss the LLC and the data forwarded from remote cache",
189 "CounterHTOff": "0,1,2,3"
190 },
191 {
192 "EventCode": "0xB7, 0xBB",
193 "MSRValue": "0x3fffc20091",
194 "Counter": "0,1,2,3",
195 "UMask": "0x1",
196 "Offcore": "1",
197 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.ANY_RESPONSE",
198 "MSRIndex": "0x1a6,0x1a7",
199 "SampleAfterValue": "100003",
200 "BriefDescription": "Counts all demand & prefetch data reads that hits the LLC",
201 "CounterHTOff": "0,1,2,3"
202 },
203 {
204 "EventCode": "0xB7, 0xBB",
205 "MSRValue": "0x3fffc203f7",
206 "Counter": "0,1,2,3",
207 "UMask": "0x1",
208 "Offcore": "1",
209 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.ANY_RESPONSE",
210 "MSRIndex": "0x1a6,0x1a7",
211 "SampleAfterValue": "100003",
212 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit the LLC",
213 "CounterHTOff": "0,1,2,3"
214 },
215 {
216 "EventCode": "0xB7, 0xBB",
217 "MSRValue": "0x6004003f7",
218 "Counter": "0,1,2,3",
219 "UMask": "0x1",
220 "Offcore": "1",
221 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.LOCAL_DRAM",
222 "MSRIndex": "0x1a6,0x1a7",
223 "SampleAfterValue": "100003",
224 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the LLC and the data returned from local dram",
225 "CounterHTOff": "0,1,2,3"
226 },
227 {
228 "EventCode": "0xB7, 0xBB",
229 "MSRValue": "0x87f8203f7",
230 "Counter": "0,1,2,3",
231 "UMask": "0x1",
232 "Offcore": "1",
233 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_HIT_FORWARD",
234 "MSRIndex": "0x1a6,0x1a7",
235 "SampleAfterValue": "100003",
236 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the LLC and the data forwarded from remote cache",
237 "CounterHTOff": "0,1,2,3"
238 },
239 {
240 "EventCode": "0xB7, 0xBB",
241 "MSRValue": "0x107fc003f7",
242 "Counter": "0,1,2,3",
243 "UMask": "0x1",
244 "Offcore": "1",
245 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.REMOTE_HITM",
246 "MSRIndex": "0x1a6,0x1a7",
247 "SampleAfterValue": "100003",
248 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the LLC the data is found in M state in remote cache and forwarded from there",
249 "CounterHTOff": "0,1,2,3"
250 },
251 {
252 "EventCode": "0xB7, 0xBB",
253 "MSRValue": "0x3fffc20004",
254 "Counter": "0,1,2,3",
255 "UMask": "0x1",
256 "Offcore": "1",
257 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.ANY_RESPONSE",
258 "MSRIndex": "0x1a6,0x1a7",
259 "SampleAfterValue": "100003",
260 "BriefDescription": "Counts all demand code reads that miss the LLC",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "EventCode": "0xB7, 0xBB",
265 "MSRValue": "0x600400004",
266 "Counter": "0,1,2,3",
267 "UMask": "0x1",
268 "Offcore": "1",
269 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.LOCAL_DRAM",
270 "MSRIndex": "0x1a6,0x1a7",
271 "SampleAfterValue": "100003",
272 "BriefDescription": "Counts all demand code reads that miss the LLC and the data returned from local dram",
273 "CounterHTOff": "0,1,2,3"
274 },
275 {
276 "EventCode": "0xB7, 0xBB",
277 "MSRValue": "0x67f800004",
278 "Counter": "0,1,2,3",
279 "UMask": "0x1",
280 "Offcore": "1",
281 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.REMOTE_DRAM",
282 "MSRIndex": "0x1a6,0x1a7",
283 "SampleAfterValue": "100003",
284 "BriefDescription": "Counts all demand code reads that miss the LLC and the data returned from remote dram",
285 "CounterHTOff": "0,1,2,3"
286 },
287 {
288 "EventCode": "0xB7, 0xBB",
289 "MSRValue": "0x87f820004",
290 "Counter": "0,1,2,3",
291 "UMask": "0x1",
292 "Offcore": "1",
293 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.REMOTE_HIT_FORWARD",
294 "MSRIndex": "0x1a6,0x1a7",
295 "SampleAfterValue": "100003",
296 "BriefDescription": "Counts all demand code reads that miss the LLC and the data forwarded from remote cache",
297 "CounterHTOff": "0,1,2,3"
298 },
299 {
300 "EventCode": "0xB7, 0xBB",
301 "MSRValue": "0x107fc00004",
302 "Counter": "0,1,2,3",
303 "UMask": "0x1",
304 "Offcore": "1",
305 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.REMOTE_HITM",
306 "MSRIndex": "0x1a6,0x1a7",
307 "SampleAfterValue": "100003",
308 "BriefDescription": "Counts all demand code reads that miss the LLC the data is found in M state in remote cache and forwarded from there",
309 "CounterHTOff": "0,1,2,3"
310 },
311 {
312 "EventCode": "0xB7, 0xBB",
313 "MSRValue": "0x67fc00001",
314 "Counter": "0,1,2,3",
315 "UMask": "0x1",
316 "Offcore": "1",
317 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.ANY_DRAM",
318 "MSRIndex": "0x1a6,0x1a7",
319 "SampleAfterValue": "100003",
320 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from remote & local dram",
321 "CounterHTOff": "0,1,2,3"
322 },
323 {
324 "EventCode": "0xB7, 0xBB",
325 "MSRValue": "0x3fffc20001",
326 "Counter": "0,1,2,3",
327 "UMask": "0x1",
328 "Offcore": "1",
329 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.ANY_RESPONSE",
330 "MSRIndex": "0x1a6,0x1a7",
331 "SampleAfterValue": "100003",
332 "BriefDescription": "Counts demand data reads that miss in the LLC",
333 "CounterHTOff": "0,1,2,3"
334 },
335 {
336 "EventCode": "0xB7, 0xBB",
337 "MSRValue": "0x600400001",
338 "Counter": "0,1,2,3",
339 "UMask": "0x1",
340 "Offcore": "1",
341 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.LOCAL_DRAM",
342 "MSRIndex": "0x1a6,0x1a7",
343 "SampleAfterValue": "100003",
344 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from local dram",
345 "CounterHTOff": "0,1,2,3"
346 },
347 {
348 "EventCode": "0xB7, 0xBB",
349 "MSRValue": "0x67f800001",
350 "Counter": "0,1,2,3",
351 "UMask": "0x1",
352 "Offcore": "1",
353 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.REMOTE_DRAM",
354 "MSRIndex": "0x1a6,0x1a7",
355 "SampleAfterValue": "100003",
356 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from remote dram",
357 "CounterHTOff": "0,1,2,3"
358 },
359 {
360 "EventCode": "0xB7, 0xBB",
361 "MSRValue": "0x87f820001",
362 "Counter": "0,1,2,3",
363 "UMask": "0x1",
364 "Offcore": "1",
365 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.REMOTE_HIT_FORWARD",
366 "MSRIndex": "0x1a6,0x1a7",
367 "SampleAfterValue": "100003",
368 "BriefDescription": "Counts demand data reads that miss the LLC and the data forwarded from remote cache",
369 "CounterHTOff": "0,1,2,3"
370 },
371 {
372 "EventCode": "0xB7, 0xBB",
373 "MSRValue": "0x107fc00001",
374 "Counter": "0,1,2,3",
375 "UMask": "0x1",
376 "Offcore": "1",
377 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.REMOTE_HITM",
378 "MSRIndex": "0x1a6,0x1a7",
379 "SampleAfterValue": "100003",
380 "BriefDescription": "Counts demand data reads that miss the LLC the data is found in M state in remote cache and forwarded from there",
381 "CounterHTOff": "0,1,2,3"
382 },
383 {
384 "EventCode": "0xB7, 0xBB",
385 "MSRValue": "0x107fc20002",
386 "Counter": "0,1,2,3",
387 "UMask": "0x1",
388 "Offcore": "1",
389 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM",
390 "MSRIndex": "0x1a6,0x1a7",
391 "SampleAfterValue": "100003",
392 "BriefDescription": "Counts all demand data writes (RFOs) that miss the LLC and the data is found in M state in remote cache and forwarded from there.",
393 "CounterHTOff": "0,1,2,3"
394 },
395 {
396 "EventCode": "0xB7, 0xBB",
397 "MSRValue": "0x3fffc20040",
398 "Counter": "0,1,2,3",
399 "UMask": "0x1",
400 "Offcore": "1",
401 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_MISS.ANY_RESPONSE",
402 "MSRIndex": "0x1a6,0x1a7",
403 "SampleAfterValue": "100003",
404 "BriefDescription": "Counts all prefetch (that bring data to L2) code reads that miss the LLC and the data returned from remote & local dram",
405 "CounterHTOff": "0,1,2,3"
406 },
407 {
408 "EventCode": "0xB7, 0xBB",
409 "MSRValue": "0x67fc00010",
410 "Counter": "0,1,2,3",
411 "UMask": "0x1",
412 "Offcore": "1",
413 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.ANY_DRAM",
414 "MSRIndex": "0x1a6,0x1a7",
415 "SampleAfterValue": "100003",
416 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data returned from remote & local dram",
417 "CounterHTOff": "0,1,2,3"
418 },
419 {
420 "EventCode": "0xB7, 0xBB",
421 "MSRValue": "0x3fffc20010",
422 "Counter": "0,1,2,3",
423 "UMask": "0x1",
424 "Offcore": "1",
425 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.ANY_RESPONSE",
426 "MSRIndex": "0x1a6,0x1a7",
427 "SampleAfterValue": "100003",
428 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss in the LLC",
429 "CounterHTOff": "0,1,2,3"
430 },
431 {
432 "EventCode": "0xB7, 0xBB",
433 "MSRValue": "0x600400010",
434 "Counter": "0,1,2,3",
435 "UMask": "0x1",
436 "Offcore": "1",
437 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.LOCAL_DRAM",
438 "MSRIndex": "0x1a6,0x1a7",
439 "SampleAfterValue": "100003",
440 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data returned from local dram",
441 "CounterHTOff": "0,1,2,3"
442 },
443 {
444 "EventCode": "0xB7, 0xBB",
445 "MSRValue": "0x67f800010",
446 "Counter": "0,1,2,3",
447 "UMask": "0x1",
448 "Offcore": "1",
449 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.REMOTE_DRAM",
450 "MSRIndex": "0x1a6,0x1a7",
451 "SampleAfterValue": "100003",
452 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data returned from remote dram",
453 "CounterHTOff": "0,1,2,3"
454 },
455 {
456 "EventCode": "0xB7, 0xBB",
457 "MSRValue": "0x87f820010",
458 "Counter": "0,1,2,3",
459 "UMask": "0x1",
460 "Offcore": "1",
461 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.REMOTE_HIT_FORWARD",
462 "MSRIndex": "0x1a6,0x1a7",
463 "SampleAfterValue": "100003",
464 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data forwarded from remote cache",
465 "CounterHTOff": "0,1,2,3"
466 },
467 {
468 "EventCode": "0xB7, 0xBB",
469 "MSRValue": "0x107fc00010",
470 "Counter": "0,1,2,3",
471 "UMask": "0x1",
472 "Offcore": "1",
473 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.REMOTE_HITM",
474 "MSRIndex": "0x1a6,0x1a7",
475 "SampleAfterValue": "100003",
476 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC the data is found in M state in remote cache and forwarded from there",
477 "CounterHTOff": "0,1,2,3"
478 },
479 {
480 "EventCode": "0xB7, 0xBB",
481 "MSRValue": "0x3fffc20200",
482 "Counter": "0,1,2,3",
483 "UMask": "0x1",
484 "Offcore": "1",
485 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_MISS.ANY_RESPONSE",
486 "MSRIndex": "0x1a6,0x1a7",
487 "SampleAfterValue": "100003",
488 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that miss in the LLC",
489 "CounterHTOff": "0,1,2,3"
490 },
491 {
492 "EventCode": "0xB7, 0xBB",
493 "MSRValue": "0x3fffc20080",
494 "Counter": "0,1,2,3",
495 "UMask": "0x1",
496 "Offcore": "1",
497 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_MISS.ANY_RESPONSE",
498 "MSRIndex": "0x1a6,0x1a7",
499 "SampleAfterValue": "100003",
500 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that miss in the LLC",
501 "CounterHTOff": "0,1,2,3"
502 }
503] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/other.json b/tools/perf/pmu-events/arch/x86/ivytown/other.json
new file mode 100644
index 000000000000..9c2dd0511a32
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/other.json
@@ -0,0 +1,44 @@
1[
2 {
3 "PublicDescription": "Unhalted core cycles when the thread is in ring 0.",
4 "EventCode": "0x5C",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "CPL_CYCLES.RING0",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Unhalted core cycles when the thread is in ring 0",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Unhalted core cycles when the thread is not in ring 0.",
14 "EventCode": "0x5C",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "CPL_CYCLES.RING123",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Number of intervals between processor halts while thread is in ring 0.",
24 "EventCode": "0x5C",
25 "Counter": "0,1,2,3",
26 "UMask": "0x1",
27 "EdgeDetect": "1",
28 "EventName": "CPL_CYCLES.RING0_TRANS",
29 "SampleAfterValue": "100007",
30 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0",
31 "CounterMask": "1",
32 "CounterHTOff": "0,1,2,3,4,5,6,7"
33 },
34 {
35 "PublicDescription": "Cycles in which the L1D and L2 are locked, due to a UC lock or split lock.",
36 "EventCode": "0x63",
37 "Counter": "0,1,2,3",
38 "UMask": "0x1",
39 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
40 "SampleAfterValue": "2000003",
41 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock",
42 "CounterHTOff": "0,1,2,3,4,5,6,7"
43 }
44] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/pipeline.json b/tools/perf/pmu-events/arch/x86/ivytown/pipeline.json
new file mode 100644
index 000000000000..2145c28193f7
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/pipeline.json
@@ -0,0 +1,1307 @@
1[
2 {
3 "EventCode": "0x00",
4 "Counter": "Fixed counter 1",
5 "UMask": "0x1",
6 "EventName": "INST_RETIRED.ANY",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Instructions retired from execution.",
9 "CounterHTOff": "Fixed counter 1"
10 },
11 {
12 "EventCode": "0x00",
13 "Counter": "Fixed counter 2",
14 "UMask": "0x2",
15 "EventName": "CPU_CLK_UNHALTED.THREAD",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Core cycles when the thread is not in halt state.",
18 "CounterHTOff": "Fixed counter 2"
19 },
20 {
21 "EventCode": "0x00",
22 "Counter": "Fixed counter 3",
23 "UMask": "0x3",
24 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
25 "SampleAfterValue": "2000003",
26 "BriefDescription": "Reference cycles when the core is not in halt state.",
27 "CounterHTOff": "Fixed counter 3"
28 },
29 {
30 "PublicDescription": "Loads blocked by overlapping with store buffer that cannot be forwarded.",
31 "EventCode": "0x03",
32 "Counter": "0,1,2,3",
33 "UMask": "0x2",
34 "EventName": "LD_BLOCKS.STORE_FORWARD",
35 "SampleAfterValue": "100003",
36 "BriefDescription": "Cases when loads get true Block-on-Store blocking code preventing store forwarding",
37 "CounterHTOff": "0,1,2,3,4,5,6,7"
38 },
39 {
40 "PublicDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
41 "EventCode": "0x03",
42 "Counter": "0,1,2,3",
43 "UMask": "0x8",
44 "EventName": "LD_BLOCKS.NO_SR",
45 "SampleAfterValue": "100003",
46 "BriefDescription": "This event counts the number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
47 "CounterHTOff": "0,1,2,3,4,5,6,7"
48 },
49 {
50 "PublicDescription": "False dependencies in MOB due to partial compare on address.",
51 "EventCode": "0x07",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
55 "SampleAfterValue": "100003",
56 "BriefDescription": "False dependencies in MOB due to partial compare on address",
57 "CounterHTOff": "0,1,2,3,4,5,6,7"
58 },
59 {
60 "EventCode": "0x0D",
61 "Counter": "0,1,2,3",
62 "UMask": "0x3",
63 "EventName": "INT_MISC.RECOVERY_CYCLES",
64 "SampleAfterValue": "2000003",
65 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc.)",
66 "CounterMask": "1",
67 "CounterHTOff": "0,1,2,3,4,5,6,7"
68 },
69 {
70 "EventCode": "0x0D",
71 "Counter": "0,1,2,3",
72 "UMask": "0x3",
73 "EdgeDetect": "1",
74 "EventName": "INT_MISC.RECOVERY_STALLS_COUNT",
75 "SampleAfterValue": "2000003",
76 "BriefDescription": "Number of occurences waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc.)",
77 "CounterMask": "1",
78 "CounterHTOff": "0,1,2,3,4,5,6,7"
79 },
80 {
81 "PublicDescription": "Increments each cycle the # of Uops issued by the RAT to RS. Set Cmask = 1, Inv = 1, Any= 1to count stalled cycles of this core.",
82 "EventCode": "0x0E",
83 "Counter": "0,1,2,3",
84 "UMask": "0x1",
85 "EventName": "UOPS_ISSUED.ANY",
86 "SampleAfterValue": "2000003",
87 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
88 "CounterHTOff": "0,1,2,3,4,5,6,7"
89 },
90 {
91 "PublicDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread.",
92 "EventCode": "0x0E",
93 "Invert": "1",
94 "Counter": "0,1,2,3",
95 "UMask": "0x1",
96 "EventName": "UOPS_ISSUED.STALL_CYCLES",
97 "SampleAfterValue": "2000003",
98 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread",
99 "CounterMask": "1",
100 "CounterHTOff": "0,1,2,3"
101 },
102 {
103 "PublicDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads.",
104 "EventCode": "0x0E",
105 "Invert": "1",
106 "Counter": "0,1,2,3",
107 "UMask": "0x1",
108 "AnyThread": "1",
109 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
110 "SampleAfterValue": "2000003",
111 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads",
112 "CounterMask": "1",
113 "CounterHTOff": "0,1,2,3"
114 },
115 {
116 "PublicDescription": "Number of flags-merge uops allocated. Such uops adds delay.",
117 "EventCode": "0x0E",
118 "Counter": "0,1,2,3",
119 "UMask": "0x10",
120 "EventName": "UOPS_ISSUED.FLAGS_MERGE",
121 "SampleAfterValue": "2000003",
122 "BriefDescription": "Number of flags-merge uops being allocated.",
123 "CounterHTOff": "0,1,2,3,4,5,6,7"
124 },
125 {
126 "PublicDescription": "Number of slow LEA or similar uops allocated. Such uop has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
127 "EventCode": "0x0E",
128 "Counter": "0,1,2,3",
129 "UMask": "0x20",
130 "EventName": "UOPS_ISSUED.SLOW_LEA",
131 "SampleAfterValue": "2000003",
132 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
133 "CounterHTOff": "0,1,2,3,4,5,6,7"
134 },
135 {
136 "PublicDescription": "Number of multiply packed/scalar single precision uops allocated.",
137 "EventCode": "0x0E",
138 "Counter": "0,1,2,3",
139 "UMask": "0x40",
140 "EventName": "UOPS_ISSUED.SINGLE_MUL",
141 "SampleAfterValue": "2000003",
142 "BriefDescription": "Number of Multiply packed/scalar single precision uops allocated",
143 "CounterHTOff": "0,1,2,3,4,5,6,7"
144 },
145 {
146 "PublicDescription": "Cycles that the divider is active, includes INT and FP. Set 'edge =1, cmask=1' to count the number of divides.",
147 "EventCode": "0x14",
148 "Counter": "0,1,2,3",
149 "UMask": "0x1",
150 "EventName": "ARITH.FPU_DIV_ACTIVE",
151 "SampleAfterValue": "2000003",
152 "BriefDescription": "Cycles when divider is busy executing divide operations",
153 "CounterHTOff": "0,1,2,3,4,5,6,7"
154 },
155 {
156 "PublicDescription": "Divide operations executed.",
157 "EventCode": "0x14",
158 "Counter": "0,1,2,3",
159 "UMask": "0x4",
160 "EdgeDetect": "1",
161 "EventName": "ARITH.FPU_DIV",
162 "SampleAfterValue": "100003",
163 "BriefDescription": "Divide operations executed",
164 "CounterMask": "1",
165 "CounterHTOff": "0,1,2,3,4,5,6,7"
166 },
167 {
168 "PublicDescription": "Counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling.",
169 "EventCode": "0x3C",
170 "Counter": "0,1,2,3",
171 "UMask": "0x0",
172 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
173 "SampleAfterValue": "2000003",
174 "BriefDescription": "Thread cycles when thread is not in halt state",
175 "CounterHTOff": "0,1,2,3,4,5,6,7"
176 },
177 {
178 "PublicDescription": "Increments at the frequency of XCLK (100 MHz) when not halted.",
179 "EventCode": "0x3C",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
183 "SampleAfterValue": "2000003",
184 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
185 "CounterHTOff": "0,1,2,3,4,5,6,7"
186 },
187 {
188 "EventCode": "0x3C",
189 "Counter": "0,1,2,3",
190 "UMask": "0x2",
191 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
192 "SampleAfterValue": "2000003",
193 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other is halted.",
194 "CounterHTOff": "0,1,2,3"
195 },
196 {
197 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for S/W prefetch.",
198 "EventCode": "0x4C",
199 "Counter": "0,1,2,3",
200 "UMask": "0x1",
201 "EventName": "LOAD_HIT_PRE.SW_PF",
202 "SampleAfterValue": "100003",
203 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch",
204 "CounterHTOff": "0,1,2,3,4,5,6,7"
205 },
206 {
207 "PublicDescription": "Non-SW-prefetch load dispatches that hit fill buffer allocated for H/W prefetch.",
208 "EventCode": "0x4C",
209 "Counter": "0,1,2,3",
210 "UMask": "0x2",
211 "EventName": "LOAD_HIT_PRE.HW_PF",
212 "SampleAfterValue": "100003",
213 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch",
214 "CounterHTOff": "0,1,2,3,4,5,6,7"
215 },
216 {
217 "EventCode": "0x58",
218 "Counter": "0,1,2,3",
219 "UMask": "0x4",
220 "EventName": "MOVE_ELIMINATION.INT_NOT_ELIMINATED",
221 "SampleAfterValue": "1000003",
222 "BriefDescription": "Number of integer Move Elimination candidate uops that were not eliminated.",
223 "CounterHTOff": "0,1,2,3,4,5,6,7"
224 },
225 {
226 "EventCode": "0x58",
227 "Counter": "0,1,2,3",
228 "UMask": "0x8",
229 "EventName": "MOVE_ELIMINATION.SIMD_NOT_ELIMINATED",
230 "SampleAfterValue": "1000003",
231 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were not eliminated.",
232 "CounterHTOff": "0,1,2,3,4,5,6,7"
233 },
234 {
235 "EventCode": "0x58",
236 "Counter": "0,1,2,3",
237 "UMask": "0x1",
238 "EventName": "MOVE_ELIMINATION.INT_ELIMINATED",
239 "SampleAfterValue": "1000003",
240 "BriefDescription": "Number of integer Move Elimination candidate uops that were eliminated.",
241 "CounterHTOff": "0,1,2,3,4,5,6,7"
242 },
243 {
244 "EventCode": "0x58",
245 "Counter": "0,1,2,3",
246 "UMask": "0x2",
247 "EventName": "MOVE_ELIMINATION.SIMD_ELIMINATED",
248 "SampleAfterValue": "1000003",
249 "BriefDescription": "Number of SIMD Move Elimination candidate uops that were eliminated.",
250 "CounterHTOff": "0,1,2,3,4,5,6,7"
251 },
252 {
253 "PublicDescription": "Cycles the RS is empty for the thread.",
254 "EventCode": "0x5E",
255 "Counter": "0,1,2,3",
256 "UMask": "0x1",
257 "EventName": "RS_EVENTS.EMPTY_CYCLES",
258 "SampleAfterValue": "2000003",
259 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
260 "CounterHTOff": "0,1,2,3,4,5,6,7"
261 },
262 {
263 "EventCode": "0x87",
264 "Counter": "0,1,2,3",
265 "UMask": "0x1",
266 "EventName": "ILD_STALL.LCP",
267 "SampleAfterValue": "2000003",
268 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
269 "CounterHTOff": "0,1,2,3,4,5,6,7"
270 },
271 {
272 "PublicDescription": "Stall cycles due to IQ is full.",
273 "EventCode": "0x87",
274 "Counter": "0,1,2,3",
275 "UMask": "0x4",
276 "EventName": "ILD_STALL.IQ_FULL",
277 "SampleAfterValue": "2000003",
278 "BriefDescription": "Stall cycles because IQ is full",
279 "CounterHTOff": "0,1,2,3,4,5,6,7"
280 },
281 {
282 "PublicDescription": "Not taken macro-conditional branches.",
283 "EventCode": "0x88",
284 "Counter": "0,1,2,3",
285 "UMask": "0x41",
286 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
287 "SampleAfterValue": "200003",
288 "BriefDescription": "Not taken macro-conditional branches",
289 "CounterHTOff": "0,1,2,3,4,5,6,7"
290 },
291 {
292 "PublicDescription": "Taken speculative and retired macro-conditional branches.",
293 "EventCode": "0x88",
294 "Counter": "0,1,2,3",
295 "UMask": "0x81",
296 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
297 "SampleAfterValue": "200003",
298 "BriefDescription": "Taken speculative and retired macro-conditional branches",
299 "CounterHTOff": "0,1,2,3,4,5,6,7"
300 },
301 {
302 "PublicDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects.",
303 "EventCode": "0x88",
304 "Counter": "0,1,2,3",
305 "UMask": "0x82",
306 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
307 "SampleAfterValue": "200003",
308 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects",
309 "CounterHTOff": "0,1,2,3,4,5,6,7"
310 },
311 {
312 "PublicDescription": "Taken speculative and retired indirect branches excluding calls and returns.",
313 "EventCode": "0x88",
314 "Counter": "0,1,2,3",
315 "UMask": "0x84",
316 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
317 "SampleAfterValue": "200003",
318 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns",
319 "CounterHTOff": "0,1,2,3,4,5,6,7"
320 },
321 {
322 "PublicDescription": "Taken speculative and retired indirect branches with return mnemonic.",
323 "EventCode": "0x88",
324 "Counter": "0,1,2,3",
325 "UMask": "0x88",
326 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
327 "SampleAfterValue": "200003",
328 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic",
329 "CounterHTOff": "0,1,2,3,4,5,6,7"
330 },
331 {
332 "PublicDescription": "Taken speculative and retired direct near calls.",
333 "EventCode": "0x88",
334 "Counter": "0,1,2,3",
335 "UMask": "0x90",
336 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
337 "SampleAfterValue": "200003",
338 "BriefDescription": "Taken speculative and retired direct near calls",
339 "CounterHTOff": "0,1,2,3,4,5,6,7"
340 },
341 {
342 "PublicDescription": "Taken speculative and retired indirect calls.",
343 "EventCode": "0x88",
344 "Counter": "0,1,2,3",
345 "UMask": "0xa0",
346 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
347 "SampleAfterValue": "200003",
348 "BriefDescription": "Taken speculative and retired indirect calls",
349 "CounterHTOff": "0,1,2,3,4,5,6,7"
350 },
351 {
352 "PublicDescription": "Speculative and retired macro-conditional branches.",
353 "EventCode": "0x88",
354 "Counter": "0,1,2,3",
355 "UMask": "0xc1",
356 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
357 "SampleAfterValue": "200003",
358 "BriefDescription": "Speculative and retired macro-conditional branches",
359 "CounterHTOff": "0,1,2,3,4,5,6,7"
360 },
361 {
362 "PublicDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects.",
363 "EventCode": "0x88",
364 "Counter": "0,1,2,3",
365 "UMask": "0xc2",
366 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
367 "SampleAfterValue": "200003",
368 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects",
369 "CounterHTOff": "0,1,2,3,4,5,6,7"
370 },
371 {
372 "PublicDescription": "Speculative and retired indirect branches excluding calls and returns.",
373 "EventCode": "0x88",
374 "Counter": "0,1,2,3",
375 "UMask": "0xc4",
376 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
377 "SampleAfterValue": "200003",
378 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns",
379 "CounterHTOff": "0,1,2,3,4,5,6,7"
380 },
381 {
382 "EventCode": "0x88",
383 "Counter": "0,1,2,3",
384 "UMask": "0xc8",
385 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
386 "SampleAfterValue": "200003",
387 "BriefDescription": "Speculative and retired indirect return branches.",
388 "CounterHTOff": "0,1,2,3,4,5,6,7"
389 },
390 {
391 "PublicDescription": "Speculative and retired direct near calls.",
392 "EventCode": "0x88",
393 "Counter": "0,1,2,3",
394 "UMask": "0xd0",
395 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
396 "SampleAfterValue": "200003",
397 "BriefDescription": "Speculative and retired direct near calls",
398 "CounterHTOff": "0,1,2,3,4,5,6,7"
399 },
400 {
401 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
402 "EventCode": "0x88",
403 "Counter": "0,1,2,3",
404 "UMask": "0xff",
405 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
406 "SampleAfterValue": "200003",
407 "BriefDescription": "Speculative and retired branches",
408 "CounterHTOff": "0,1,2,3,4,5,6,7"
409 },
410 {
411 "PublicDescription": "Not taken speculative and retired mispredicted macro conditional branches.",
412 "EventCode": "0x89",
413 "Counter": "0,1,2,3",
414 "UMask": "0x41",
415 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
416 "SampleAfterValue": "200003",
417 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches",
418 "CounterHTOff": "0,1,2,3,4,5,6,7"
419 },
420 {
421 "PublicDescription": "Taken speculative and retired mispredicted macro conditional branches.",
422 "EventCode": "0x89",
423 "Counter": "0,1,2,3",
424 "UMask": "0x81",
425 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
426 "SampleAfterValue": "200003",
427 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches",
428 "CounterHTOff": "0,1,2,3,4,5,6,7"
429 },
430 {
431 "PublicDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns.",
432 "EventCode": "0x89",
433 "Counter": "0,1,2,3",
434 "UMask": "0x84",
435 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
436 "SampleAfterValue": "200003",
437 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns",
438 "CounterHTOff": "0,1,2,3,4,5,6,7"
439 },
440 {
441 "PublicDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic.",
442 "EventCode": "0x89",
443 "Counter": "0,1,2,3",
444 "UMask": "0x88",
445 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
446 "SampleAfterValue": "200003",
447 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic",
448 "CounterHTOff": "0,1,2,3,4,5,6,7"
449 },
450 {
451 "PublicDescription": "Taken speculative and retired mispredicted indirect calls.",
452 "EventCode": "0x89",
453 "Counter": "0,1,2,3",
454 "UMask": "0xa0",
455 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
456 "SampleAfterValue": "200003",
457 "BriefDescription": "Taken speculative and retired mispredicted indirect calls",
458 "CounterHTOff": "0,1,2,3,4,5,6,7"
459 },
460 {
461 "PublicDescription": "Speculative and retired mispredicted macro conditional branches.",
462 "EventCode": "0x89",
463 "Counter": "0,1,2,3",
464 "UMask": "0xc1",
465 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
466 "SampleAfterValue": "200003",
467 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
468 "CounterHTOff": "0,1,2,3,4,5,6,7"
469 },
470 {
471 "PublicDescription": "Mispredicted indirect branches excluding calls and returns.",
472 "EventCode": "0x89",
473 "Counter": "0,1,2,3",
474 "UMask": "0xc4",
475 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
476 "SampleAfterValue": "200003",
477 "BriefDescription": "Mispredicted indirect branches excluding calls and returns",
478 "CounterHTOff": "0,1,2,3,4,5,6,7"
479 },
480 {
481 "PublicDescription": "Counts all near executed branches (not necessarily retired).",
482 "EventCode": "0x89",
483 "Counter": "0,1,2,3",
484 "UMask": "0xff",
485 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
486 "SampleAfterValue": "200003",
487 "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
488 "CounterHTOff": "0,1,2,3,4,5,6,7"
489 },
490 {
491 "PublicDescription": "Cycles which a Uop is dispatched on port 0.",
492 "EventCode": "0xA1",
493 "Counter": "0,1,2,3",
494 "UMask": "0x1",
495 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
496 "SampleAfterValue": "2000003",
497 "BriefDescription": "Cycles per thread when uops are dispatched to port 0",
498 "CounterHTOff": "0,1,2,3,4,5,6,7"
499 },
500 {
501 "PublicDescription": "Cycles which a Uop is dispatched on port 1.",
502 "EventCode": "0xA1",
503 "Counter": "0,1,2,3",
504 "UMask": "0x2",
505 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
506 "SampleAfterValue": "2000003",
507 "BriefDescription": "Cycles per thread when uops are dispatched to port 1",
508 "CounterHTOff": "0,1,2,3,4,5,6,7"
509 },
510 {
511 "PublicDescription": "Cycles which a Uop is dispatched on port 4.",
512 "EventCode": "0xA1",
513 "Counter": "0,1,2,3",
514 "UMask": "0x40",
515 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
516 "SampleAfterValue": "2000003",
517 "BriefDescription": "Cycles per thread when uops are dispatched to port 4",
518 "CounterHTOff": "0,1,2,3,4,5,6,7"
519 },
520 {
521 "PublicDescription": "Cycles which a Uop is dispatched on port 5.",
522 "EventCode": "0xA1",
523 "Counter": "0,1,2,3",
524 "UMask": "0x80",
525 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
526 "SampleAfterValue": "2000003",
527 "BriefDescription": "Cycles per thread when uops are dispatched to port 5",
528 "CounterHTOff": "0,1,2,3,4,5,6,7"
529 },
530 {
531 "PublicDescription": "Cycles per core when uops are dispatched to port 0.",
532 "EventCode": "0xA1",
533 "Counter": "0,1,2,3",
534 "UMask": "0x1",
535 "AnyThread": "1",
536 "EventName": "UOPS_DISPATCHED_PORT.PORT_0_CORE",
537 "SampleAfterValue": "2000003",
538 "BriefDescription": "Cycles per core when uops are dispatched to port 0",
539 "CounterHTOff": "0,1,2,3,4,5,6,7"
540 },
541 {
542 "PublicDescription": "Cycles per core when uops are dispatched to port 1.",
543 "EventCode": "0xA1",
544 "Counter": "0,1,2,3",
545 "UMask": "0x2",
546 "AnyThread": "1",
547 "EventName": "UOPS_DISPATCHED_PORT.PORT_1_CORE",
548 "SampleAfterValue": "2000003",
549 "BriefDescription": "Cycles per core when uops are dispatched to port 1",
550 "CounterHTOff": "0,1,2,3,4,5,6,7"
551 },
552 {
553 "PublicDescription": "Cycles per core when uops are dispatched to port 4.",
554 "EventCode": "0xA1",
555 "Counter": "0,1,2,3",
556 "UMask": "0x40",
557 "AnyThread": "1",
558 "EventName": "UOPS_DISPATCHED_PORT.PORT_4_CORE",
559 "SampleAfterValue": "2000003",
560 "BriefDescription": "Cycles per core when uops are dispatched to port 4",
561 "CounterHTOff": "0,1,2,3,4,5,6,7"
562 },
563 {
564 "PublicDescription": "Cycles per core when uops are dispatched to port 5.",
565 "EventCode": "0xA1",
566 "Counter": "0,1,2,3",
567 "UMask": "0x80",
568 "AnyThread": "1",
569 "EventName": "UOPS_DISPATCHED_PORT.PORT_5_CORE",
570 "SampleAfterValue": "2000003",
571 "BriefDescription": "Cycles per core when uops are dispatched to port 5",
572 "CounterHTOff": "0,1,2,3,4,5,6,7"
573 },
574 {
575 "PublicDescription": "Cycles which a Uop is dispatched on port 2.",
576 "EventCode": "0xA1",
577 "Counter": "0,1,2,3",
578 "UMask": "0xc",
579 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
580 "SampleAfterValue": "2000003",
581 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 2",
582 "CounterHTOff": "0,1,2,3,4,5,6,7"
583 },
584 {
585 "PublicDescription": "Cycles which a Uop is dispatched on port 3.",
586 "EventCode": "0xA1",
587 "Counter": "0,1,2,3",
588 "UMask": "0x30",
589 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
590 "SampleAfterValue": "2000003",
591 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 3",
592 "CounterHTOff": "0,1,2,3,4,5,6,7"
593 },
594 {
595 "EventCode": "0xA1",
596 "Counter": "0,1,2,3",
597 "UMask": "0xc",
598 "AnyThread": "1",
599 "EventName": "UOPS_DISPATCHED_PORT.PORT_2_CORE",
600 "SampleAfterValue": "2000003",
601 "BriefDescription": "Uops dispatched to port 2, loads and stores per core (speculative and retired).",
602 "CounterHTOff": "0,1,2,3,4,5,6,7"
603 },
604 {
605 "PublicDescription": "Cycles per core when load or STA uops are dispatched to port 3.",
606 "EventCode": "0xA1",
607 "Counter": "0,1,2,3",
608 "UMask": "0x30",
609 "AnyThread": "1",
610 "EventName": "UOPS_DISPATCHED_PORT.PORT_3_CORE",
611 "SampleAfterValue": "2000003",
612 "BriefDescription": "Cycles per core when load or STA uops are dispatched to port 3",
613 "CounterHTOff": "0,1,2,3,4,5,6,7"
614 },
615 {
616 "PublicDescription": "Cycles Allocation is stalled due to Resource Related reason.",
617 "EventCode": "0xA2",
618 "Counter": "0,1,2,3",
619 "UMask": "0x1",
620 "EventName": "RESOURCE_STALLS.ANY",
621 "SampleAfterValue": "2000003",
622 "BriefDescription": "Resource-related stall cycles",
623 "CounterHTOff": "0,1,2,3,4,5,6,7"
624 },
625 {
626 "EventCode": "0xA2",
627 "Counter": "0,1,2,3",
628 "UMask": "0x4",
629 "EventName": "RESOURCE_STALLS.RS",
630 "SampleAfterValue": "2000003",
631 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
632 "CounterHTOff": "0,1,2,3,4,5,6,7"
633 },
634 {
635 "PublicDescription": "Cycles stalled due to no store buffers available (not including draining form sync).",
636 "EventCode": "0xA2",
637 "Counter": "0,1,2,3",
638 "UMask": "0x8",
639 "EventName": "RESOURCE_STALLS.SB",
640 "SampleAfterValue": "2000003",
641 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
642 "CounterHTOff": "0,1,2,3,4,5,6,7"
643 },
644 {
645 "EventCode": "0xA2",
646 "Counter": "0,1,2,3",
647 "UMask": "0x10",
648 "EventName": "RESOURCE_STALLS.ROB",
649 "SampleAfterValue": "2000003",
650 "BriefDescription": "Cycles stalled due to re-order buffer full.",
651 "CounterHTOff": "0,1,2,3,4,5,6,7"
652 },
653 {
654 "PublicDescription": "Cycles with pending L2 miss loads. Set AnyThread to count per core.",
655 "EventCode": "0xA3",
656 "Counter": "0,1,2,3",
657 "UMask": "0x1",
658 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
659 "SampleAfterValue": "2000003",
660 "BriefDescription": "Cycles with pending L2 cache miss loads.",
661 "CounterMask": "1",
662 "CounterHTOff": "0,1,2,3,4,5,6,7"
663 },
664 {
665 "PublicDescription": "Cycles with pending L1 cache miss loads. Set AnyThread to count per core.",
666 "EventCode": "0xA3",
667 "Counter": "2",
668 "UMask": "0x8",
669 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
670 "SampleAfterValue": "2000003",
671 "BriefDescription": "Cycles with pending L1 cache miss loads.",
672 "CounterMask": "8",
673 "CounterHTOff": "2"
674 },
675 {
676 "PublicDescription": "Cycles with pending memory loads. Set AnyThread to count per core.",
677 "EventCode": "0xA3",
678 "Counter": "0,1,2,3",
679 "UMask": "0x2",
680 "EventName": "CYCLE_ACTIVITY.CYCLES_LDM_PENDING",
681 "SampleAfterValue": "2000003",
682 "BriefDescription": "Cycles with pending memory loads.",
683 "CounterMask": "2",
684 "CounterHTOff": "0,1,2,3"
685 },
686 {
687 "PublicDescription": "Total execution stalls.",
688 "EventCode": "0xA3",
689 "Counter": "0,1,2,3",
690 "UMask": "0x4",
691 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_EXECUTE",
692 "SampleAfterValue": "2000003",
693 "BriefDescription": "Total execution stalls",
694 "CounterMask": "4",
695 "CounterHTOff": "0,1,2,3"
696 },
697 {
698 "PublicDescription": "Number of loads missed L2.",
699 "EventCode": "0xA3",
700 "Counter": "0,1,2,3",
701 "UMask": "0x5",
702 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
703 "SampleAfterValue": "2000003",
704 "BriefDescription": "Execution stalls due to L2 cache misses.",
705 "CounterMask": "5",
706 "CounterHTOff": "0,1,2,3"
707 },
708 {
709 "EventCode": "0xA3",
710 "Counter": "0,1,2,3",
711 "UMask": "0x6",
712 "EventName": "CYCLE_ACTIVITY.STALLS_LDM_PENDING",
713 "SampleAfterValue": "2000003",
714 "BriefDescription": "Execution stalls due to memory subsystem.",
715 "CounterMask": "6",
716 "CounterHTOff": "0,1,2,3"
717 },
718 {
719 "PublicDescription": "Execution stalls due to L1 data cache miss loads. Set Cmask=0CH.",
720 "EventCode": "0xA3",
721 "Counter": "2",
722 "UMask": "0xc",
723 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
724 "SampleAfterValue": "2000003",
725 "BriefDescription": "Execution stalls due to L1 data cache misses",
726 "CounterMask": "12",
727 "CounterHTOff": "2"
728 },
729 {
730 "EventCode": "0xA8",
731 "Counter": "0,1,2,3",
732 "UMask": "0x1",
733 "EventName": "LSD.UOPS",
734 "SampleAfterValue": "2000003",
735 "BriefDescription": "Number of Uops delivered by the LSD.",
736 "CounterHTOff": "0,1,2,3,4,5,6,7"
737 },
738 {
739 "PublicDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
740 "EventCode": "0xA8",
741 "Counter": "0,1,2,3",
742 "UMask": "0x1",
743 "EventName": "LSD.CYCLES_ACTIVE",
744 "SampleAfterValue": "2000003",
745 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder",
746 "CounterMask": "1",
747 "CounterHTOff": "0,1,2,3,4,5,6,7"
748 },
749 {
750 "PublicDescription": "Counts total number of uops to be executed per-thread each cycle. Set Cmask = 1, INV =1 to count stall cycles.",
751 "EventCode": "0xB1",
752 "Counter": "0,1,2,3",
753 "UMask": "0x1",
754 "EventName": "UOPS_EXECUTED.THREAD",
755 "SampleAfterValue": "2000003",
756 "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
757 "CounterHTOff": "0,1,2,3,4,5,6,7"
758 },
759 {
760 "PublicDescription": "Counts total number of uops to be executed per-core each cycle.",
761 "EventCode": "0xB1",
762 "Counter": "0,1,2,3",
763 "UMask": "0x2",
764 "EventName": "UOPS_EXECUTED.CORE",
765 "SampleAfterValue": "2000003",
766 "BriefDescription": "Number of uops executed on the core.",
767 "CounterHTOff": "0,1,2,3,4,5,6,7"
768 },
769 {
770 "EventCode": "0xB1",
771 "Invert": "1",
772 "Counter": "0,1,2,3",
773 "UMask": "0x1",
774 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
775 "SampleAfterValue": "2000003",
776 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
777 "CounterMask": "1",
778 "CounterHTOff": "0,1,2,3"
779 },
780 {
781 "PublicDescription": "Number of instructions at retirement.",
782 "EventCode": "0xC0",
783 "Counter": "0,1,2,3",
784 "UMask": "0x0",
785 "EventName": "INST_RETIRED.ANY_P",
786 "SampleAfterValue": "2000003",
787 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
788 "CounterHTOff": "0,1,2,3,4,5,6,7"
789 },
790 {
791 "PEBS": "2",
792 "PublicDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution.",
793 "EventCode": "0xC0",
794 "Counter": "1",
795 "UMask": "0x1",
796 "EventName": "INST_RETIRED.PREC_DIST",
797 "SampleAfterValue": "2000003",
798 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
799 "CounterHTOff": "1"
800 },
801 {
802 "EventCode": "0xC1",
803 "Counter": "0,1,2,3",
804 "UMask": "0x80",
805 "EventName": "OTHER_ASSISTS.ANY_WB_ASSIST",
806 "SampleAfterValue": "100003",
807 "BriefDescription": "Number of times any microcode assist is invoked by HW upon uop writeback.",
808 "CounterHTOff": "0,1,2,3,4,5,6,7"
809 },
810 {
811 "PEBS": "1",
812 "PublicDescription": "Counts the number of micro-ops retired, Use cmask=1 and invert to count active cycles or stalled cycles.",
813 "EventCode": "0xC2",
814 "Counter": "0,1,2,3",
815 "UMask": "0x1",
816 "EventName": "UOPS_RETIRED.ALL",
817 "SampleAfterValue": "2000003",
818 "BriefDescription": "Actually retired uops. ",
819 "CounterHTOff": "0,1,2,3,4,5,6,7"
820 },
821 {
822 "PEBS": "1",
823 "PublicDescription": "Counts the number of retirement slots used each cycle.",
824 "EventCode": "0xC2",
825 "Counter": "0,1,2,3",
826 "UMask": "0x2",
827 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
828 "SampleAfterValue": "2000003",
829 "BriefDescription": "Retirement slots used. ",
830 "CounterHTOff": "0,1,2,3,4,5,6,7"
831 },
832 {
833 "EventCode": "0xC2",
834 "Invert": "1",
835 "Counter": "0,1,2,3",
836 "UMask": "0x1",
837 "EventName": "UOPS_RETIRED.STALL_CYCLES",
838 "SampleAfterValue": "2000003",
839 "BriefDescription": "Cycles without actually retired uops.",
840 "CounterMask": "1",
841 "CounterHTOff": "0,1,2,3"
842 },
843 {
844 "EventCode": "0xC2",
845 "Invert": "1",
846 "Counter": "0,1,2,3",
847 "UMask": "0x1",
848 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
849 "SampleAfterValue": "2000003",
850 "BriefDescription": "Cycles with less than 10 actually retired uops.",
851 "CounterMask": "10",
852 "CounterHTOff": "0,1,2,3"
853 },
854 {
855 "EventCode": "0xC2",
856 "Invert": "1",
857 "Counter": "0,1,2,3",
858 "UMask": "0x1",
859 "AnyThread": "1",
860 "EventName": "UOPS_RETIRED.CORE_STALL_CYCLES",
861 "SampleAfterValue": "2000003",
862 "BriefDescription": "Cycles without actually retired uops.",
863 "CounterMask": "1",
864 "CounterHTOff": "0,1,2,3"
865 },
866 {
867 "PublicDescription": "Number of self-modifying-code machine clears detected.",
868 "EventCode": "0xC3",
869 "Counter": "0,1,2,3",
870 "UMask": "0x4",
871 "EventName": "MACHINE_CLEARS.SMC",
872 "SampleAfterValue": "100003",
873 "BriefDescription": "Self-modifying code (SMC) detected.",
874 "CounterHTOff": "0,1,2,3,4,5,6,7"
875 },
876 {
877 "PublicDescription": "Counts the number of executed AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
878 "EventCode": "0xC3",
879 "Counter": "0,1,2,3",
880 "UMask": "0x20",
881 "EventName": "MACHINE_CLEARS.MASKMOV",
882 "SampleAfterValue": "100003",
883 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0. ",
884 "CounterHTOff": "0,1,2,3,4,5,6,7"
885 },
886 {
887 "PEBS": "1",
888 "PublicDescription": "Counts the number of conditional branch instructions retired.",
889 "EventCode": "0xC4",
890 "Counter": "0,1,2,3",
891 "UMask": "0x1",
892 "EventName": "BR_INST_RETIRED.CONDITIONAL",
893 "SampleAfterValue": "400009",
894 "BriefDescription": "Conditional branch instructions retired. ",
895 "CounterHTOff": "0,1,2,3,4,5,6,7"
896 },
897 {
898 "PEBS": "1",
899 "PublicDescription": "Direct and indirect near call instructions retired.",
900 "EventCode": "0xC4",
901 "Counter": "0,1,2,3",
902 "UMask": "0x2",
903 "EventName": "BR_INST_RETIRED.NEAR_CALL",
904 "SampleAfterValue": "100007",
905 "BriefDescription": "Direct and indirect near call instructions retired. ",
906 "CounterHTOff": "0,1,2,3,4,5,6,7"
907 },
908 {
909 "PublicDescription": "Branch instructions at retirement.",
910 "EventCode": "0xC4",
911 "Counter": "0,1,2,3",
912 "UMask": "0x0",
913 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
914 "SampleAfterValue": "400009",
915 "BriefDescription": "All (macro) branch instructions retired.",
916 "CounterHTOff": "0,1,2,3,4,5,6,7"
917 },
918 {
919 "PEBS": "1",
920 "PublicDescription": "Counts the number of near return instructions retired.",
921 "EventCode": "0xC4",
922 "Counter": "0,1,2,3",
923 "UMask": "0x8",
924 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
925 "SampleAfterValue": "100007",
926 "BriefDescription": "Return instructions retired. ",
927 "CounterHTOff": "0,1,2,3,4,5,6,7"
928 },
929 {
930 "PublicDescription": "Counts the number of not taken branch instructions retired.",
931 "EventCode": "0xC4",
932 "Counter": "0,1,2,3",
933 "UMask": "0x10",
934 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
935 "SampleAfterValue": "400009",
936 "BriefDescription": "Not taken branch instructions retired. ",
937 "CounterHTOff": "0,1,2,3,4,5,6,7"
938 },
939 {
940 "PEBS": "1",
941 "PublicDescription": "Number of near taken branches retired.",
942 "EventCode": "0xC4",
943 "Counter": "0,1,2,3",
944 "UMask": "0x20",
945 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
946 "SampleAfterValue": "400009",
947 "BriefDescription": "Taken branch instructions retired. ",
948 "CounterHTOff": "0,1,2,3,4,5,6,7"
949 },
950 {
951 "PublicDescription": "Number of far branches retired.",
952 "EventCode": "0xC4",
953 "Counter": "0,1,2,3",
954 "UMask": "0x40",
955 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
956 "SampleAfterValue": "100007",
957 "BriefDescription": "Far branch instructions retired. ",
958 "CounterHTOff": "0,1,2,3,4,5,6,7"
959 },
960 {
961 "PEBS": "2",
962 "EventCode": "0xC4",
963 "Counter": "0,1,2,3",
964 "UMask": "0x4",
965 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
966 "SampleAfterValue": "400009",
967 "BriefDescription": "All (macro) branch instructions retired.",
968 "CounterHTOff": "0,1,2,3"
969 },
970 {
971 "PEBS": "1",
972 "PublicDescription": "Mispredicted conditional branch instructions retired.",
973 "EventCode": "0xC5",
974 "Counter": "0,1,2,3",
975 "UMask": "0x1",
976 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
977 "SampleAfterValue": "400009",
978 "BriefDescription": "Mispredicted conditional branch instructions retired. ",
979 "CounterHTOff": "0,1,2,3,4,5,6,7"
980 },
981 {
982 "PublicDescription": "Mispredicted branch instructions at retirement.",
983 "EventCode": "0xC5",
984 "Counter": "0,1,2,3",
985 "UMask": "0x0",
986 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
987 "SampleAfterValue": "400009",
988 "BriefDescription": "All mispredicted macro branch instructions retired.",
989 "CounterHTOff": "0,1,2,3,4,5,6,7"
990 },
991 {
992 "PEBS": "1",
993 "PublicDescription": "Mispredicted taken branch instructions retired.",
994 "EventCode": "0xC5",
995 "Counter": "0,1,2,3",
996 "UMask": "0x20",
997 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
998 "SampleAfterValue": "400009",
999 "BriefDescription": "number of near branch instructions retired that were mispredicted and taken. ",
1000 "CounterHTOff": "0,1,2,3,4,5,6,7"
1001 },
1002 {
1003 "PEBS": "2",
1004 "EventCode": "0xC5",
1005 "Counter": "0,1,2,3",
1006 "UMask": "0x4",
1007 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
1008 "SampleAfterValue": "400009",
1009 "BriefDescription": "Mispredicted macro branch instructions retired.",
1010 "CounterHTOff": "0,1,2,3"
1011 },
1012 {
1013 "PublicDescription": "Count cases of saving new LBR records by hardware.",
1014 "EventCode": "0xCC",
1015 "Counter": "0,1,2,3",
1016 "UMask": "0x20",
1017 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
1018 "SampleAfterValue": "2000003",
1019 "BriefDescription": "Count cases of saving new LBR",
1020 "CounterHTOff": "0,1,2,3,4,5,6,7"
1021 },
1022 {
1023 "PublicDescription": "Number of front end re-steers due to BPU misprediction.",
1024 "EventCode": "0xE6",
1025 "Counter": "0,1,2,3",
1026 "UMask": "0x1f",
1027 "EventName": "BACLEARS.ANY",
1028 "SampleAfterValue": "100003",
1029 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1030 "CounterHTOff": "0,1,2,3,4,5,6,7"
1031 },
1032 {
1033 "PublicDescription": "Cycles where at least 1 uop was executed per-thread.",
1034 "EventCode": "0xB1",
1035 "Counter": "0,1,2,3",
1036 "UMask": "0x1",
1037 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
1038 "SampleAfterValue": "2000003",
1039 "BriefDescription": "Cycles where at least 1 uop was executed per-thread",
1040 "CounterMask": "1",
1041 "CounterHTOff": "0,1,2,3,4,5,6,7"
1042 },
1043 {
1044 "PublicDescription": "Cycles where at least 2 uops were executed per-thread.",
1045 "EventCode": "0xB1",
1046 "Counter": "0,1,2,3",
1047 "UMask": "0x1",
1048 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
1049 "SampleAfterValue": "2000003",
1050 "BriefDescription": "Cycles where at least 2 uops were executed per-thread",
1051 "CounterMask": "2",
1052 "CounterHTOff": "0,1,2,3,4,5,6,7"
1053 },
1054 {
1055 "PublicDescription": "Cycles where at least 3 uops were executed per-thread.",
1056 "EventCode": "0xB1",
1057 "Counter": "0,1,2,3",
1058 "UMask": "0x1",
1059 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
1060 "SampleAfterValue": "2000003",
1061 "BriefDescription": "Cycles where at least 3 uops were executed per-thread",
1062 "CounterMask": "3",
1063 "CounterHTOff": "0,1,2,3,4,5,6,7"
1064 },
1065 {
1066 "PublicDescription": "Cycles where at least 4 uops were executed per-thread.",
1067 "EventCode": "0xB1",
1068 "Counter": "0,1,2,3",
1069 "UMask": "0x1",
1070 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
1071 "SampleAfterValue": "2000003",
1072 "BriefDescription": "Cycles where at least 4 uops were executed per-thread",
1073 "CounterMask": "4",
1074 "CounterHTOff": "0,1,2,3,4,5,6,7"
1075 },
1076 {
1077 "EventCode": "0x5E",
1078 "Invert": "1",
1079 "Counter": "0,1,2,3",
1080 "UMask": "0x1",
1081 "EdgeDetect": "1",
1082 "EventName": "RS_EVENTS.EMPTY_END",
1083 "SampleAfterValue": "200003",
1084 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1085 "CounterMask": "1",
1086 "CounterHTOff": "0,1,2,3,4,5,6,7"
1087 },
1088 {
1089 "EventCode": "0xC3",
1090 "Counter": "0,1,2,3",
1091 "UMask": "0x1",
1092 "EdgeDetect": "1",
1093 "EventName": "MACHINE_CLEARS.COUNT",
1094 "SampleAfterValue": "100003",
1095 "BriefDescription": "Number of machine clears (nukes) of any type.",
1096 "CounterMask": "1",
1097 "CounterHTOff": "0,1,2,3,4,5,6,7"
1098 },
1099 {
1100 "PublicDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1101 "EventCode": "0xA8",
1102 "Counter": "0,1,2,3",
1103 "UMask": "0x1",
1104 "EventName": "LSD.CYCLES_4_UOPS",
1105 "SampleAfterValue": "2000003",
1106 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder",
1107 "CounterMask": "4",
1108 "CounterHTOff": "0,1,2,3,4,5,6,7"
1109 },
1110 {
1111 "EventCode": "0xA3",
1112 "Counter": "2",
1113 "UMask": "0x8",
1114 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
1115 "SampleAfterValue": "2000003",
1116 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
1117 "CounterMask": "8",
1118 "CounterHTOff": "2"
1119 },
1120 {
1121 "EventCode": "0xA3",
1122 "Counter": "0,1,2,3",
1123 "UMask": "0x1",
1124 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
1125 "SampleAfterValue": "2000003",
1126 "BriefDescription": "Cycles while L2 cache miss load* is outstanding.",
1127 "CounterMask": "1",
1128 "CounterHTOff": "0,1,2,3,4,5,6,7"
1129 },
1130 {
1131 "EventCode": "0xA3",
1132 "Counter": "0,1,2,3",
1133 "UMask": "0x2",
1134 "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
1135 "SampleAfterValue": "2000003",
1136 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
1137 "CounterMask": "2",
1138 "CounterHTOff": "0,1,2,3"
1139 },
1140 {
1141 "EventCode": "0xA3",
1142 "Counter": "0,1,2,3",
1143 "UMask": "0x4",
1144 "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
1145 "SampleAfterValue": "2000003",
1146 "BriefDescription": "Total execution stalls.",
1147 "CounterMask": "4",
1148 "CounterHTOff": "0,1,2,3"
1149 },
1150 {
1151 "EventCode": "0xA3",
1152 "Counter": "2",
1153 "UMask": "0xc",
1154 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
1155 "SampleAfterValue": "2000003",
1156 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
1157 "CounterMask": "12",
1158 "CounterHTOff": "2"
1159 },
1160 {
1161 "EventCode": "0xA3",
1162 "Counter": "0,1,2,3",
1163 "UMask": "0x5",
1164 "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
1165 "SampleAfterValue": "2000003",
1166 "BriefDescription": "Execution stalls while L2 cache miss load* is outstanding.",
1167 "CounterMask": "5",
1168 "CounterHTOff": "0,1,2,3"
1169 },
1170 {
1171 "EventCode": "0xA3",
1172 "Counter": "0,1,2,3",
1173 "UMask": "0x6",
1174 "EventName": "CYCLE_ACTIVITY.STALLS_MEM_ANY",
1175 "SampleAfterValue": "2000003",
1176 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
1177 "CounterMask": "6",
1178 "CounterHTOff": "0,1,2,3"
1179 },
1180 {
1181 "PublicDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1182 "EventCode": "0x00",
1183 "Counter": "Fixed counter 2",
1184 "UMask": "0x2",
1185 "AnyThread": "1",
1186 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1187 "SampleAfterValue": "2000003",
1188 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state",
1189 "CounterHTOff": "Fixed counter 2"
1190 },
1191 {
1192 "PublicDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1193 "EventCode": "0x3C",
1194 "Counter": "0,1,2,3",
1195 "UMask": "0x0",
1196 "AnyThread": "1",
1197 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1198 "SampleAfterValue": "2000003",
1199 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state",
1200 "CounterHTOff": "0,1,2,3,4,5,6,7"
1201 },
1202 {
1203 "EventCode": "0x3C",
1204 "Counter": "0,1,2,3",
1205 "UMask": "0x1",
1206 "AnyThread": "1",
1207 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1208 "SampleAfterValue": "2000003",
1209 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted. (counts at 100 MHz rate)",
1210 "CounterHTOff": "0,1,2,3,4,5,6,7"
1211 },
1212 {
1213 "EventCode": "0x0D",
1214 "Counter": "0,1,2,3",
1215 "UMask": "0x3",
1216 "AnyThread": "1",
1217 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1218 "SampleAfterValue": "2000003",
1219 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1220 "CounterMask": "1",
1221 "CounterHTOff": "0,1,2,3,4,5,6,7"
1222 },
1223 {
1224 "PublicDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1225 "EventCode": "0xB1",
1226 "Counter": "0,1,2,3",
1227 "UMask": "0x2",
1228 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1229 "SampleAfterValue": "2000003",
1230 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core",
1231 "CounterMask": "1",
1232 "CounterHTOff": "0,1,2,3,4,5,6,7"
1233 },
1234 {
1235 "PublicDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1236 "EventCode": "0xB1",
1237 "Counter": "0,1,2,3",
1238 "UMask": "0x2",
1239 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1240 "SampleAfterValue": "2000003",
1241 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core",
1242 "CounterMask": "2",
1243 "CounterHTOff": "0,1,2,3,4,5,6,7"
1244 },
1245 {
1246 "PublicDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1247 "EventCode": "0xB1",
1248 "Counter": "0,1,2,3",
1249 "UMask": "0x2",
1250 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1251 "SampleAfterValue": "2000003",
1252 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core",
1253 "CounterMask": "3",
1254 "CounterHTOff": "0,1,2,3,4,5,6,7"
1255 },
1256 {
1257 "PublicDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1258 "EventCode": "0xB1",
1259 "Counter": "0,1,2,3",
1260 "UMask": "0x2",
1261 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1262 "SampleAfterValue": "2000003",
1263 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core",
1264 "CounterMask": "4",
1265 "CounterHTOff": "0,1,2,3,4,5,6,7"
1266 },
1267 {
1268 "PublicDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1269 "EventCode": "0xB1",
1270 "Invert": "1",
1271 "Counter": "0,1,2,3",
1272 "UMask": "0x2",
1273 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1274 "SampleAfterValue": "2000003",
1275 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core",
1276 "CounterHTOff": "0,1,2,3,4,5,6,7"
1277 },
1278 {
1279 "PublicDescription": "Reference cycles when the thread is unhalted. (counts at 100 MHz rate)",
1280 "EventCode": "0x3C",
1281 "Counter": "0,1,2,3",
1282 "UMask": "0x1",
1283 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1284 "SampleAfterValue": "2000003",
1285 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1286 "CounterHTOff": "0,1,2,3,4,5,6,7"
1287 },
1288 {
1289 "EventCode": "0x3C",
1290 "Counter": "0,1,2,3",
1291 "UMask": "0x1",
1292 "AnyThread": "1",
1293 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1294 "SampleAfterValue": "2000003",
1295 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted. (counts at 100 MHz rate)",
1296 "CounterHTOff": "0,1,2,3,4,5,6,7"
1297 },
1298 {
1299 "EventCode": "0x3C",
1300 "Counter": "0,1,2,3",
1301 "UMask": "0x2",
1302 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1303 "SampleAfterValue": "2000003",
1304 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1305 "CounterHTOff": "0,1,2,3,4,5,6,7"
1306 }
1307] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/virtual-memory.json b/tools/perf/pmu-events/arch/x86/ivytown/virtual-memory.json
new file mode 100644
index 000000000000..c8de548b78fa
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/virtual-memory.json
@@ -0,0 +1,198 @@
1[
2 {
3 "EventCode": "0x08",
4 "Counter": "0,1,2,3",
5 "UMask": "0x82",
6 "EventName": "DTLB_LOAD_MISSES.DEMAND_LD_WALK_COMPLETED",
7 "SampleAfterValue": "100003",
8 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0x08",
13 "Counter": "0,1,2,3",
14 "UMask": "0x84",
15 "EventName": "DTLB_LOAD_MISSES.DEMAND_LD_WALK_DURATION",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Demand load cycles page miss handler (PMH) is busy with this walk.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0x08",
22 "Counter": "0,1,2,3",
23 "UMask": "0x88",
24 "EventName": "DTLB_LOAD_MISSES.LARGE_PAGE_WALK_COMPLETED",
25 "SampleAfterValue": "100003",
26 "BriefDescription": "Page walk for a large page completed for Demand load.",
27 "CounterHTOff": "0,1,2,3,4,5,6,7"
28 },
29 {
30 "PublicDescription": "Miss in all TLB levels causes a page walk of any page size (4K/2M/4M/1G).",
31 "EventCode": "0x49",
32 "Counter": "0,1,2,3",
33 "UMask": "0x1",
34 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
35 "SampleAfterValue": "100003",
36 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
37 "CounterHTOff": "0,1,2,3,4,5,6,7"
38 },
39 {
40 "PublicDescription": "Miss in all TLB levels causes a page walk that completes of any page size (4K/2M/4M/1G).",
41 "EventCode": "0x49",
42 "Counter": "0,1,2,3",
43 "UMask": "0x2",
44 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
45 "SampleAfterValue": "100003",
46 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks",
47 "CounterHTOff": "0,1,2,3,4,5,6,7"
48 },
49 {
50 "PublicDescription": "Cycles PMH is busy with this walk.",
51 "EventCode": "0x49",
52 "Counter": "0,1,2,3",
53 "UMask": "0x4",
54 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
55 "SampleAfterValue": "2000003",
56 "BriefDescription": "Cycles when PMH is busy with page walks",
57 "CounterHTOff": "0,1,2,3,4,5,6,7"
58 },
59 {
60 "PublicDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
61 "EventCode": "0x49",
62 "Counter": "0,1,2,3",
63 "UMask": "0x10",
64 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
65 "SampleAfterValue": "100003",
66 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks",
67 "CounterHTOff": "0,1,2,3,4,5,6,7"
68 },
69 {
70 "EventCode": "0x4F",
71 "Counter": "0,1,2,3",
72 "UMask": "0x10",
73 "EventName": "EPT.WALK_CYCLES",
74 "SampleAfterValue": "2000003",
75 "BriefDescription": "Cycle count for an Extended Page table walk. The Extended Page Directory cache is used by Virtual Machine operating systems while the guest operating systems use the standard TLB caches.",
76 "CounterHTOff": "0,1,2,3,4,5,6,7"
77 },
78 {
79 "PublicDescription": "Counts load operations that missed 1st level DTLB but hit the 2nd level.",
80 "EventCode": "0x5F",
81 "Counter": "0,1,2,3",
82 "UMask": "0x4",
83 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
84 "SampleAfterValue": "100003",
85 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks",
86 "CounterHTOff": "0,1,2,3,4,5,6,7"
87 },
88 {
89 "PublicDescription": "Misses in all ITLB levels that cause page walks.",
90 "EventCode": "0x85",
91 "Counter": "0,1,2,3",
92 "UMask": "0x1",
93 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
94 "SampleAfterValue": "100003",
95 "BriefDescription": "Misses at all ITLB levels that cause page walks",
96 "CounterHTOff": "0,1,2,3,4,5,6,7"
97 },
98 {
99 "PublicDescription": "Misses in all ITLB levels that cause completed page walks.",
100 "EventCode": "0x85",
101 "Counter": "0,1,2,3",
102 "UMask": "0x2",
103 "EventName": "ITLB_MISSES.WALK_COMPLETED",
104 "SampleAfterValue": "100003",
105 "BriefDescription": "Misses in all ITLB levels that cause completed page walks",
106 "CounterHTOff": "0,1,2,3,4,5,6,7"
107 },
108 {
109 "PublicDescription": "Cycle PMH is busy with a walk.",
110 "EventCode": "0x85",
111 "Counter": "0,1,2,3",
112 "UMask": "0x4",
113 "EventName": "ITLB_MISSES.WALK_DURATION",
114 "SampleAfterValue": "2000003",
115 "BriefDescription": "Cycles when PMH is busy with page walks",
116 "CounterHTOff": "0,1,2,3,4,5,6,7"
117 },
118 {
119 "PublicDescription": "Number of cache load STLB hits. No page walk.",
120 "EventCode": "0x85",
121 "Counter": "0,1,2,3",
122 "UMask": "0x10",
123 "EventName": "ITLB_MISSES.STLB_HIT",
124 "SampleAfterValue": "100003",
125 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks",
126 "CounterHTOff": "0,1,2,3,4,5,6,7"
127 },
128 {
129 "PublicDescription": "Completed page walks in ITLB due to STLB load misses for large pages.",
130 "EventCode": "0x85",
131 "Counter": "0,1,2,3",
132 "UMask": "0x80",
133 "EventName": "ITLB_MISSES.LARGE_PAGE_WALK_COMPLETED",
134 "SampleAfterValue": "100003",
135 "BriefDescription": "Completed page walks in ITLB due to STLB load misses for large pages",
136 "CounterHTOff": "0,1,2,3,4,5,6,7"
137 },
138 {
139 "PublicDescription": "Counts the number of ITLB flushes, includes 4k/2M/4M pages.",
140 "EventCode": "0xAE",
141 "Counter": "0,1,2,3",
142 "UMask": "0x1",
143 "EventName": "ITLB.ITLB_FLUSH",
144 "SampleAfterValue": "100007",
145 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
146 "CounterHTOff": "0,1,2,3,4,5,6,7"
147 },
148 {
149 "PublicDescription": "DTLB flush attempts of the thread-specific entries.",
150 "EventCode": "0xBD",
151 "Counter": "0,1,2,3",
152 "UMask": "0x1",
153 "EventName": "TLB_FLUSH.DTLB_THREAD",
154 "SampleAfterValue": "100007",
155 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "PublicDescription": "Count number of STLB flush attempts.",
160 "EventCode": "0xBD",
161 "Counter": "0,1,2,3",
162 "UMask": "0x20",
163 "EventName": "TLB_FLUSH.STLB_ANY",
164 "SampleAfterValue": "100007",
165 "BriefDescription": "STLB flush attempts",
166 "CounterHTOff": "0,1,2,3,4,5,6,7"
167 },
168 {
169 "PublicDescription": "Misses in all TLB levels that cause a page walk of any page size from demand loads.",
170 "EventCode": "0x08",
171 "Counter": "0,1,2,3",
172 "UMask": "0x81",
173 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
174 "SampleAfterValue": "100003",
175 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes an page walk of any page size.",
176 "CounterHTOff": "0,1,2,3,4,5,6,7"
177 },
178 {
179 "PublicDescription": "Misses in all TLB levels that caused page walk completed of any size by demand loads.",
180 "EventCode": "0x08",
181 "Counter": "0,1,2,3",
182 "UMask": "0x82",
183 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
184 "SampleAfterValue": "100003",
185 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes of any page size.",
186 "CounterHTOff": "0,1,2,3,4,5,6,7"
187 },
188 {
189 "PublicDescription": "Cycle PMH is busy with a walk due to demand loads.",
190 "EventCode": "0x08",
191 "Counter": "0,1,2,3",
192 "UMask": "0x84",
193 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
194 "SampleAfterValue": "2000003",
195 "BriefDescription": "Demand load cycles page miss handler (PMH) is busy with this walk.",
196 "CounterHTOff": "0,1,2,3,4,5,6,7"
197 }
198] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/cache.json b/tools/perf/pmu-events/arch/x86/jaketown/cache.json
new file mode 100644
index 000000000000..f723e8f7bb09
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/cache.json
@@ -0,0 +1,1290 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xD0",
5 "Counter": "0,1,2,3",
6 "UMask": "0x11",
7 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Retired load uops that miss the STLB.",
10 "CounterHTOff": "0,1,2,3"
11 },
12 {
13 "PEBS": "1",
14 "EventCode": "0xD0",
15 "Counter": "0,1,2,3",
16 "UMask": "0x12",
17 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
18 "SampleAfterValue": "100003",
19 "BriefDescription": "Retired store uops that miss the STLB.",
20 "CounterHTOff": "0,1,2,3"
21 },
22 {
23 "PEBS": "1",
24 "EventCode": "0xD0",
25 "Counter": "0,1,2,3",
26 "UMask": "0x21",
27 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
28 "SampleAfterValue": "100007",
29 "BriefDescription": "Retired load uops with locked access.",
30 "CounterHTOff": "0,1,2,3"
31 },
32 {
33 "PEBS": "1",
34 "PublicDescription": "This event counts line-splitted load uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
35 "EventCode": "0xD0",
36 "Counter": "0,1,2,3",
37 "UMask": "0x41",
38 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
39 "SampleAfterValue": "100003",
40 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
41 "CounterHTOff": "0,1,2,3"
42 },
43 {
44 "PEBS": "1",
45 "PublicDescription": "This event counts line-splitted store uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
46 "EventCode": "0xD0",
47 "Counter": "0,1,2,3",
48 "UMask": "0x42",
49 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
50 "SampleAfterValue": "100003",
51 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
52 "CounterHTOff": "0,1,2,3"
53 },
54 {
55 "PEBS": "1",
56 "PublicDescription": "This event counts the number of load uops retired",
57 "EventCode": "0xD0",
58 "Counter": "0,1,2,3",
59 "UMask": "0x81",
60 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
61 "SampleAfterValue": "2000003",
62 "BriefDescription": "All retired load uops.",
63 "CounterHTOff": "0,1,2,3"
64 },
65 {
66 "PEBS": "1",
67 "PublicDescription": "This event counts the number of store uops retired.",
68 "EventCode": "0xD0",
69 "Counter": "0,1,2,3",
70 "UMask": "0x82",
71 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
72 "SampleAfterValue": "2000003",
73 "BriefDescription": "All retired store uops.",
74 "CounterHTOff": "0,1,2,3"
75 },
76 {
77 "PEBS": "1",
78 "EventCode": "0xD1",
79 "Counter": "0,1,2,3",
80 "UMask": "0x1",
81 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
82 "SampleAfterValue": "2000003",
83 "BriefDescription": "Retired load uops with L1 cache hits as data sources.",
84 "CounterHTOff": "0,1,2,3"
85 },
86 {
87 "PEBS": "1",
88 "EventCode": "0xD1",
89 "Counter": "0,1,2,3",
90 "UMask": "0x2",
91 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
92 "SampleAfterValue": "100003",
93 "BriefDescription": "Retired load uops with L2 cache hits as data sources.",
94 "CounterHTOff": "0,1,2,3"
95 },
96 {
97 "PublicDescription": "This event counts retired load uops that hit in the last-level (L3) cache without snoops required.",
98 "EventCode": "0xD1",
99 "Counter": "0,1,2,3",
100 "UMask": "0x4",
101 "EventName": "MEM_LOAD_UOPS_RETIRED.LLC_HIT",
102 "SampleAfterValue": "50021",
103 "BriefDescription": "Retired load uops which data sources were data hits in LLC without snoops required.",
104 "CounterHTOff": "0,1,2,3"
105 },
106 {
107 "EventCode": "0xD1",
108 "Counter": "0,1,2,3",
109 "UMask": "0x20",
110 "EventName": "MEM_LOAD_UOPS_RETIRED.LLC_MISS",
111 "SampleAfterValue": "100007",
112 "BriefDescription": "Miss in last-level (L3) cache. Excludes Unknown data-source.",
113 "CounterHTOff": "0,1,2,3"
114 },
115 {
116 "PEBS": "1",
117 "EventCode": "0xD1",
118 "Counter": "0,1,2,3",
119 "UMask": "0x40",
120 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
121 "SampleAfterValue": "100003",
122 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
123 "CounterHTOff": "0,1,2,3"
124 },
125 {
126 "EventCode": "0xD2",
127 "Counter": "0,1,2,3",
128 "UMask": "0x1",
129 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS",
130 "SampleAfterValue": "20011",
131 "BriefDescription": "Retired load uops which data sources were LLC hit and cross-core snoop missed in on-pkg core cache.",
132 "CounterHTOff": "0,1,2,3"
133 },
134 {
135 "PublicDescription": "This event counts retired load uops that hit in the last-level cache (L3) and were found in a non-modified state in a neighboring core's private cache (same package). Since the last level cache is inclusive, hits to the L3 may require snooping the private L2 caches of any cores on the same socket that have the line. In this case, a snoop was required, and another L2 had the line in a non-modified state.",
136 "EventCode": "0xD2",
137 "Counter": "0,1,2,3",
138 "UMask": "0x2",
139 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT",
140 "SampleAfterValue": "20011",
141 "BriefDescription": "Retired load uops which data sources were LLC and cross-core snoop hits in on-pkg core cache.",
142 "CounterHTOff": "0,1,2,3"
143 },
144 {
145 "PublicDescription": "This event counts retired load uops that hit in the last-level cache (L3) and were found in a non-modified state in a neighboring core's private cache (same package). Since the last level cache is inclusive, hits to the L3 may require snooping the private L2 caches of any cores on the same socket that have the line. In this case, a snoop was required, and another L2 had the line in a modified state, so the line had to be invalidated in that L2 cache and transferred to the requesting L2.",
146 "EventCode": "0xD2",
147 "Counter": "0,1,2,3",
148 "UMask": "0x4",
149 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM",
150 "SampleAfterValue": "20011",
151 "BriefDescription": "Retired load uops which data sources were HitM responses from shared LLC.",
152 "CounterHTOff": "0,1,2,3"
153 },
154 {
155 "EventCode": "0xD2",
156 "Counter": "0,1,2,3",
157 "UMask": "0x8",
158 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_NONE",
159 "SampleAfterValue": "100003",
160 "BriefDescription": "Retired load uops which data sources were hits in LLC without snoops required.",
161 "CounterHTOff": "0,1,2,3"
162 },
163 {
164 "EventCode": "0xD3",
165 "Counter": "0,1,2,3",
166 "UMask": "0x1",
167 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM",
168 "SampleAfterValue": "100007",
169 "BriefDescription": "Data from local DRAM either Snoop not needed or Snoop Miss (RspI)",
170 "CounterHTOff": "0,1,2,3"
171 },
172 {
173 "EventCode": "0xD3",
174 "Counter": "0,1,2,3",
175 "UMask": "0x4",
176 "EventName": "MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM",
177 "SampleAfterValue": "100007",
178 "BriefDescription": "Data from remote DRAM either Snoop not needed or Snoop Miss (RspI)",
179 "CounterHTOff": "0,1,2,3"
180 },
181 {
182 "PublicDescription": "This event counts L1D data line replacements. Replacements occur when a new line is brought into the cache, causing eviction of a line loaded earlier. ",
183 "EventCode": "0x51",
184 "Counter": "0,1,2,3",
185 "UMask": "0x1",
186 "EventName": "L1D.REPLACEMENT",
187 "SampleAfterValue": "2000003",
188 "BriefDescription": "L1D data line replacements.",
189 "CounterHTOff": "0,1,2,3,4,5,6,7"
190 },
191 {
192 "EventCode": "0x51",
193 "Counter": "0,1,2,3",
194 "UMask": "0x2",
195 "EventName": "L1D.ALLOCATED_IN_M",
196 "SampleAfterValue": "2000003",
197 "BriefDescription": "Allocated L1D data cache lines in M state.",
198 "CounterHTOff": "0,1,2,3,4,5,6,7"
199 },
200 {
201 "EventCode": "0x51",
202 "Counter": "0,1,2,3",
203 "UMask": "0x4",
204 "EventName": "L1D.EVICTION",
205 "SampleAfterValue": "2000003",
206 "BriefDescription": "L1D data cache lines in M state evicted due to replacement.",
207 "CounterHTOff": "0,1,2,3,4,5,6,7"
208 },
209 {
210 "EventCode": "0x51",
211 "Counter": "0,1,2,3",
212 "UMask": "0x8",
213 "EventName": "L1D.ALL_M_REPLACEMENT",
214 "SampleAfterValue": "2000003",
215 "BriefDescription": "Cache lines in M state evicted out of L1D due to Snoop HitM or dirty line replacement.",
216 "CounterHTOff": "0,1,2,3,4,5,6,7"
217 },
218 {
219 "EventCode": "0x48",
220 "Counter": "2",
221 "UMask": "0x1",
222 "EventName": "L1D_PEND_MISS.PENDING",
223 "SampleAfterValue": "2000003",
224 "BriefDescription": "L1D miss oustandings duration in cycles.",
225 "CounterHTOff": "2"
226 },
227 {
228 "EventCode": "0x48",
229 "Counter": "2",
230 "UMask": "0x1",
231 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
232 "SampleAfterValue": "2000003",
233 "BriefDescription": "Cycles with L1D load Misses outstanding.",
234 "CounterMask": "1",
235 "CounterHTOff": "2"
236 },
237 {
238 "EventCode": "0x63",
239 "Counter": "0,1,2,3",
240 "UMask": "0x2",
241 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
242 "SampleAfterValue": "2000003",
243 "BriefDescription": "Cycles when L1D is locked.",
244 "CounterHTOff": "0,1,2,3,4,5,6,7"
245 },
246 {
247 "EventCode": "0x60",
248 "Counter": "0,1,2,3",
249 "UMask": "0x1",
250 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
251 "SampleAfterValue": "2000003",
252 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
253 "CounterHTOff": "0,1,2,3,4,5,6,7"
254 },
255 {
256 "EventCode": "0x60",
257 "Counter": "0,1,2,3",
258 "UMask": "0x1",
259 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
260 "SampleAfterValue": "2000003",
261 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
262 "CounterMask": "1",
263 "CounterHTOff": "0,1,2,3,4,5,6,7"
264 },
265 {
266 "EventCode": "0x60",
267 "Counter": "0,1,2,3",
268 "UMask": "0x4",
269 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
270 "SampleAfterValue": "2000003",
271 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore.",
272 "CounterHTOff": "0,1,2,3,4,5,6,7"
273 },
274 {
275 "EventCode": "0x60",
276 "Counter": "0,1,2,3",
277 "UMask": "0x8",
278 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
279 "SampleAfterValue": "2000003",
280 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore.",
281 "CounterHTOff": "0,1,2,3,4,5,6,7"
282 },
283 {
284 "EventCode": "0x60",
285 "Counter": "0,1,2,3",
286 "UMask": "0x8",
287 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
288 "SampleAfterValue": "2000003",
289 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
290 "CounterMask": "1",
291 "CounterHTOff": "0,1,2,3,4,5,6,7"
292 },
293 {
294 "EventCode": "0xB0",
295 "Counter": "0,1,2,3",
296 "UMask": "0x1",
297 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
298 "SampleAfterValue": "100003",
299 "BriefDescription": "Demand Data Read requests sent to uncore.",
300 "CounterHTOff": "0,1,2,3,4,5,6,7"
301 },
302 {
303 "EventCode": "0xB0",
304 "Counter": "0,1,2,3",
305 "UMask": "0x2",
306 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
307 "SampleAfterValue": "100003",
308 "BriefDescription": "Cacheable and noncachaeble code read requests.",
309 "CounterHTOff": "0,1,2,3,4,5,6,7"
310 },
311 {
312 "EventCode": "0xB0",
313 "Counter": "0,1,2,3",
314 "UMask": "0x4",
315 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
316 "SampleAfterValue": "100003",
317 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM.",
318 "CounterHTOff": "0,1,2,3,4,5,6,7"
319 },
320 {
321 "EventCode": "0xB0",
322 "Counter": "0,1,2,3",
323 "UMask": "0x8",
324 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
325 "SampleAfterValue": "100003",
326 "BriefDescription": "Demand and prefetch data reads.",
327 "CounterHTOff": "0,1,2,3,4,5,6,7"
328 },
329 {
330 "EventCode": "0xB2",
331 "Counter": "0,1,2,3",
332 "UMask": "0x1",
333 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
334 "SampleAfterValue": "2000003",
335 "BriefDescription": "Cases when offcore requests buffer cannot take more entries for core.",
336 "CounterHTOff": "0,1,2,3,4,5,6,7"
337 },
338 {
339 "EventCode": "0x24",
340 "Counter": "0,1,2,3",
341 "UMask": "0x1",
342 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
343 "SampleAfterValue": "200003",
344 "BriefDescription": "Demand Data Read requests that hit L2 cache.",
345 "CounterHTOff": "0,1,2,3,4,5,6,7"
346 },
347 {
348 "EventCode": "0x24",
349 "Counter": "0,1,2,3",
350 "UMask": "0x4",
351 "EventName": "L2_RQSTS.RFO_HIT",
352 "SampleAfterValue": "200003",
353 "BriefDescription": "RFO requests that hit L2 cache.",
354 "CounterHTOff": "0,1,2,3,4,5,6,7"
355 },
356 {
357 "EventCode": "0x24",
358 "Counter": "0,1,2,3",
359 "UMask": "0x8",
360 "EventName": "L2_RQSTS.RFO_MISS",
361 "SampleAfterValue": "200003",
362 "BriefDescription": "RFO requests that miss L2 cache.",
363 "CounterHTOff": "0,1,2,3,4,5,6,7"
364 },
365 {
366 "EventCode": "0x24",
367 "Counter": "0,1,2,3",
368 "UMask": "0x10",
369 "EventName": "L2_RQSTS.CODE_RD_HIT",
370 "SampleAfterValue": "200003",
371 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
372 "CounterHTOff": "0,1,2,3,4,5,6,7"
373 },
374 {
375 "EventCode": "0x24",
376 "Counter": "0,1,2,3",
377 "UMask": "0x20",
378 "EventName": "L2_RQSTS.CODE_RD_MISS",
379 "SampleAfterValue": "200003",
380 "BriefDescription": "L2 cache misses when fetching instructions.",
381 "CounterHTOff": "0,1,2,3,4,5,6,7"
382 },
383 {
384 "EventCode": "0x24",
385 "Counter": "0,1,2,3",
386 "UMask": "0x40",
387 "EventName": "L2_RQSTS.PF_HIT",
388 "SampleAfterValue": "200003",
389 "BriefDescription": "Requests from the L2 hardware prefetchers that hit L2 cache.",
390 "CounterHTOff": "0,1,2,3,4,5,6,7"
391 },
392 {
393 "EventCode": "0x24",
394 "Counter": "0,1,2,3",
395 "UMask": "0x80",
396 "EventName": "L2_RQSTS.PF_MISS",
397 "SampleAfterValue": "200003",
398 "BriefDescription": "Requests from the L2 hardware prefetchers that miss L2 cache.",
399 "CounterHTOff": "0,1,2,3,4,5,6,7"
400 },
401 {
402 "EventCode": "0x27",
403 "Counter": "0,1,2,3",
404 "UMask": "0x1",
405 "EventName": "L2_STORE_LOCK_RQSTS.MISS",
406 "SampleAfterValue": "200003",
407 "BriefDescription": "RFOs that miss cache lines.",
408 "CounterHTOff": "0,1,2,3,4,5,6,7"
409 },
410 {
411 "EventCode": "0x27",
412 "Counter": "0,1,2,3",
413 "UMask": "0x4",
414 "EventName": "L2_STORE_LOCK_RQSTS.HIT_E",
415 "SampleAfterValue": "200003",
416 "BriefDescription": "RFOs that hit cache lines in E state.",
417 "CounterHTOff": "0,1,2,3,4,5,6,7"
418 },
419 {
420 "EventCode": "0x27",
421 "Counter": "0,1,2,3",
422 "UMask": "0x8",
423 "EventName": "L2_STORE_LOCK_RQSTS.HIT_M",
424 "SampleAfterValue": "200003",
425 "BriefDescription": "RFOs that hit cache lines in M state.",
426 "CounterHTOff": "0,1,2,3,4,5,6,7"
427 },
428 {
429 "EventCode": "0x27",
430 "Counter": "0,1,2,3",
431 "UMask": "0xf",
432 "EventName": "L2_STORE_LOCK_RQSTS.ALL",
433 "SampleAfterValue": "200003",
434 "BriefDescription": "RFOs that access cache lines in any state.",
435 "CounterHTOff": "0,1,2,3,4,5,6,7"
436 },
437 {
438 "EventCode": "0x28",
439 "Counter": "0,1,2,3",
440 "UMask": "0x1",
441 "EventName": "L2_L1D_WB_RQSTS.MISS",
442 "SampleAfterValue": "200003",
443 "BriefDescription": "Count the number of modified Lines evicted from L1 and missed L2. (Non-rejected WBs from the DCU.).",
444 "CounterHTOff": "0,1,2,3,4,5,6,7"
445 },
446 {
447 "EventCode": "0x28",
448 "Counter": "0,1,2,3",
449 "UMask": "0x2",
450 "EventName": "L2_L1D_WB_RQSTS.HIT_S",
451 "SampleAfterValue": "200003",
452 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in S state.",
453 "CounterHTOff": "0,1,2,3,4,5,6,7"
454 },
455 {
456 "EventCode": "0x28",
457 "Counter": "0,1,2,3",
458 "UMask": "0x4",
459 "EventName": "L2_L1D_WB_RQSTS.HIT_E",
460 "SampleAfterValue": "200003",
461 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in E state.",
462 "CounterHTOff": "0,1,2,3,4,5,6,7"
463 },
464 {
465 "EventCode": "0x28",
466 "Counter": "0,1,2,3",
467 "UMask": "0x8",
468 "EventName": "L2_L1D_WB_RQSTS.HIT_M",
469 "SampleAfterValue": "200003",
470 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in M state.",
471 "CounterHTOff": "0,1,2,3,4,5,6,7"
472 },
473 {
474 "EventCode": "0x28",
475 "Counter": "0,1,2,3",
476 "UMask": "0xf",
477 "EventName": "L2_L1D_WB_RQSTS.ALL",
478 "SampleAfterValue": "200003",
479 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in any state.",
480 "CounterHTOff": "0,1,2,3,4,5,6,7"
481 },
482 {
483 "EventCode": "0xF0",
484 "Counter": "0,1,2,3",
485 "UMask": "0x1",
486 "EventName": "L2_TRANS.DEMAND_DATA_RD",
487 "SampleAfterValue": "200003",
488 "BriefDescription": "Demand Data Read requests that access L2 cache.",
489 "CounterHTOff": "0,1,2,3,4,5,6,7"
490 },
491 {
492 "EventCode": "0xF0",
493 "Counter": "0,1,2,3",
494 "UMask": "0x2",
495 "EventName": "L2_TRANS.RFO",
496 "SampleAfterValue": "200003",
497 "BriefDescription": "RFO requests that access L2 cache.",
498 "CounterHTOff": "0,1,2,3,4,5,6,7"
499 },
500 {
501 "EventCode": "0xF0",
502 "Counter": "0,1,2,3",
503 "UMask": "0x4",
504 "EventName": "L2_TRANS.CODE_RD",
505 "SampleAfterValue": "200003",
506 "BriefDescription": "L2 cache accesses when fetching instructions.",
507 "CounterHTOff": "0,1,2,3,4,5,6,7"
508 },
509 {
510 "EventCode": "0xF0",
511 "Counter": "0,1,2,3",
512 "UMask": "0x8",
513 "EventName": "L2_TRANS.ALL_PF",
514 "SampleAfterValue": "200003",
515 "BriefDescription": "L2 or LLC HW prefetches that access L2 cache.",
516 "CounterHTOff": "0,1,2,3,4,5,6,7"
517 },
518 {
519 "EventCode": "0xF0",
520 "Counter": "0,1,2,3",
521 "UMask": "0x10",
522 "EventName": "L2_TRANS.L1D_WB",
523 "SampleAfterValue": "200003",
524 "BriefDescription": "L1D writebacks that access L2 cache.",
525 "CounterHTOff": "0,1,2,3,4,5,6,7"
526 },
527 {
528 "EventCode": "0xF0",
529 "Counter": "0,1,2,3",
530 "UMask": "0x20",
531 "EventName": "L2_TRANS.L2_FILL",
532 "SampleAfterValue": "200003",
533 "BriefDescription": "L2 fill requests that access L2 cache.",
534 "CounterHTOff": "0,1,2,3,4,5,6,7"
535 },
536 {
537 "EventCode": "0xF0",
538 "Counter": "0,1,2,3",
539 "UMask": "0x40",
540 "EventName": "L2_TRANS.L2_WB",
541 "SampleAfterValue": "200003",
542 "BriefDescription": "L2 writebacks that access L2 cache.",
543 "CounterHTOff": "0,1,2,3,4,5,6,7"
544 },
545 {
546 "EventCode": "0xF0",
547 "Counter": "0,1,2,3",
548 "UMask": "0x80",
549 "EventName": "L2_TRANS.ALL_REQUESTS",
550 "SampleAfterValue": "200003",
551 "BriefDescription": "Transactions accessing L2 pipe.",
552 "CounterHTOff": "0,1,2,3,4,5,6,7"
553 },
554 {
555 "EventCode": "0xF1",
556 "Counter": "0,1,2,3",
557 "UMask": "0x1",
558 "EventName": "L2_LINES_IN.I",
559 "SampleAfterValue": "100003",
560 "BriefDescription": "L2 cache lines in I state filling L2.",
561 "CounterHTOff": "0,1,2,3,4,5,6,7"
562 },
563 {
564 "EventCode": "0xF1",
565 "Counter": "0,1,2,3",
566 "UMask": "0x2",
567 "EventName": "L2_LINES_IN.S",
568 "SampleAfterValue": "100003",
569 "BriefDescription": "L2 cache lines in S state filling L2.",
570 "CounterHTOff": "0,1,2,3,4,5,6,7"
571 },
572 {
573 "EventCode": "0xF1",
574 "Counter": "0,1,2,3",
575 "UMask": "0x4",
576 "EventName": "L2_LINES_IN.E",
577 "SampleAfterValue": "100003",
578 "BriefDescription": "L2 cache lines in E state filling L2.",
579 "CounterHTOff": "0,1,2,3,4,5,6,7"
580 },
581 {
582 "PublicDescription": "This event counts the number of L2 cache lines brought into the L2 cache. Lines are filled into the L2 cache when there was an L2 miss.",
583 "EventCode": "0xF1",
584 "Counter": "0,1,2,3",
585 "UMask": "0x7",
586 "EventName": "L2_LINES_IN.ALL",
587 "SampleAfterValue": "100003",
588 "BriefDescription": "L2 cache lines filling L2.",
589 "CounterHTOff": "0,1,2,3,4,5,6,7"
590 },
591 {
592 "EventCode": "0xF2",
593 "Counter": "0,1,2,3",
594 "UMask": "0x1",
595 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
596 "SampleAfterValue": "100003",
597 "BriefDescription": "Clean L2 cache lines evicted by demand.",
598 "CounterHTOff": "0,1,2,3,4,5,6,7"
599 },
600 {
601 "EventCode": "0xF2",
602 "Counter": "0,1,2,3",
603 "UMask": "0x2",
604 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
605 "SampleAfterValue": "100003",
606 "BriefDescription": "Dirty L2 cache lines evicted by demand.",
607 "CounterHTOff": "0,1,2,3,4,5,6,7"
608 },
609 {
610 "EventCode": "0xF2",
611 "Counter": "0,1,2,3",
612 "UMask": "0x4",
613 "EventName": "L2_LINES_OUT.PF_CLEAN",
614 "SampleAfterValue": "100003",
615 "BriefDescription": "Clean L2 cache lines evicted by L2 prefetch.",
616 "CounterHTOff": "0,1,2,3,4,5,6,7"
617 },
618 {
619 "EventCode": "0xF2",
620 "Counter": "0,1,2,3",
621 "UMask": "0x8",
622 "EventName": "L2_LINES_OUT.PF_DIRTY",
623 "SampleAfterValue": "100003",
624 "BriefDescription": "Dirty L2 cache lines evicted by L2 prefetch.",
625 "CounterHTOff": "0,1,2,3,4,5,6,7"
626 },
627 {
628 "EventCode": "0xF2",
629 "Counter": "0,1,2,3",
630 "UMask": "0xa",
631 "EventName": "L2_LINES_OUT.DIRTY_ALL",
632 "SampleAfterValue": "100003",
633 "BriefDescription": "Dirty L2 cache lines filling the L2.",
634 "CounterHTOff": "0,1,2,3,4,5,6,7"
635 },
636 {
637 "EventCode": "0x2E",
638 "Counter": "0,1,2,3",
639 "UMask": "0x41",
640 "EventName": "LONGEST_LAT_CACHE.MISS",
641 "SampleAfterValue": "100003",
642 "BriefDescription": "Core-originated cacheable demand requests missed LLC.",
643 "CounterHTOff": "0,1,2,3,4,5,6,7"
644 },
645 {
646 "EventCode": "0x2E",
647 "Counter": "0,1,2,3",
648 "UMask": "0x4f",
649 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
650 "SampleAfterValue": "100003",
651 "BriefDescription": "Core-originated cacheable demand requests that refer to LLC.",
652 "CounterHTOff": "0,1,2,3,4,5,6,7"
653 },
654 {
655 "EventCode": "0xF4",
656 "Counter": "0,1,2,3",
657 "UMask": "0x10",
658 "EventName": "SQ_MISC.SPLIT_LOCK",
659 "SampleAfterValue": "100003",
660 "BriefDescription": "Split locks in SQ.",
661 "CounterHTOff": "0,1,2,3,4,5,6,7"
662 },
663 {
664 "EventCode": "0x24",
665 "Counter": "0,1,2,3",
666 "UMask": "0x3",
667 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
668 "SampleAfterValue": "200003",
669 "BriefDescription": "Demand Data Read requests.",
670 "CounterHTOff": "0,1,2,3,4,5,6,7"
671 },
672 {
673 "EventCode": "0x24",
674 "Counter": "0,1,2,3",
675 "UMask": "0xc",
676 "EventName": "L2_RQSTS.ALL_RFO",
677 "SampleAfterValue": "200003",
678 "BriefDescription": "RFO requests to L2 cache.",
679 "CounterHTOff": "0,1,2,3,4,5,6,7"
680 },
681 {
682 "EventCode": "0x24",
683 "Counter": "0,1,2,3",
684 "UMask": "0x30",
685 "EventName": "L2_RQSTS.ALL_CODE_RD",
686 "SampleAfterValue": "200003",
687 "BriefDescription": "L2 code requests.",
688 "CounterHTOff": "0,1,2,3,4,5,6,7"
689 },
690 {
691 "EventCode": "0x24",
692 "Counter": "0,1,2,3",
693 "UMask": "0xc0",
694 "EventName": "L2_RQSTS.ALL_PF",
695 "SampleAfterValue": "200003",
696 "BriefDescription": "Requests from L2 hardware prefetchers.",
697 "CounterHTOff": "0,1,2,3,4,5,6,7"
698 },
699 {
700 "EventCode": "0xBF",
701 "Counter": "0,1,2,3",
702 "UMask": "0x5",
703 "EventName": "L1D_BLOCKS.BANK_CONFLICT_CYCLES",
704 "SampleAfterValue": "100003",
705 "BriefDescription": "Cycles when dispatched loads are cancelled due to L1D bank conflicts with other load ports.",
706 "CounterMask": "1",
707 "CounterHTOff": "0,1,2,3,4,5,6,7"
708 },
709 {
710 "EventCode": "0x60",
711 "Counter": "0,1,2,3",
712 "UMask": "0x4",
713 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
714 "SampleAfterValue": "2000003",
715 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
716 "CounterMask": "1",
717 "CounterHTOff": "0,1,2,3,4,5,6,7"
718 },
719 {
720 "EventCode": "0x60",
721 "Counter": "0,1,2,3",
722 "UMask": "0x1",
723 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_C6",
724 "SampleAfterValue": "2000003",
725 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
726 "CounterMask": "6",
727 "CounterHTOff": "0,1,2,3,4,5,6,7"
728 },
729 {
730 "EventCode": "0x48",
731 "Counter": "2",
732 "UMask": "0x1",
733 "AnyThread": "1",
734 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
735 "SampleAfterValue": "2000003",
736 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
737 "CounterMask": "1",
738 "CounterHTOff": "2"
739 },
740 {
741 "EventCode": "0x48",
742 "Counter": "0,1,2,3",
743 "UMask": "0x2",
744 "EventName": "L1D_PEND_MISS.FB_FULL",
745 "SampleAfterValue": "2000003",
746 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
747 "CounterMask": "1",
748 "CounterHTOff": "0,1,2,3,4,5,6,7"
749 },
750 {
751 "EventCode": "0xB7, 0xBB",
752 "MSRValue": "0x4003c0091",
753 "Counter": "0,1,2,3",
754 "UMask": "0x1",
755 "Offcore": "1",
756 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
757 "MSRIndex": "0x1a6,0x1a7",
758 "SampleAfterValue": "100003",
759 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
760 "CounterHTOff": "0,1,2,3"
761 },
762 {
763 "EventCode": "0xB7, 0xBB",
764 "MSRValue": "0x10003c0091",
765 "Counter": "0,1,2,3",
766 "UMask": "0x1",
767 "Offcore": "1",
768 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
769 "MSRIndex": "0x1a6,0x1a7",
770 "SampleAfterValue": "100003",
771 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
772 "CounterHTOff": "0,1,2,3"
773 },
774 {
775 "EventCode": "0xB7, 0xBB",
776 "MSRValue": "0x1003c0091",
777 "Counter": "0,1,2,3",
778 "UMask": "0x1",
779 "Offcore": "1",
780 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
781 "MSRIndex": "0x1a6,0x1a7",
782 "SampleAfterValue": "100003",
783 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
784 "CounterHTOff": "0,1,2,3"
785 },
786 {
787 "EventCode": "0xB7, 0xBB",
788 "MSRValue": "0x2003c0091",
789 "Counter": "0,1,2,3",
790 "UMask": "0x1",
791 "Offcore": "1",
792 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.SNOOP_MISS",
793 "MSRIndex": "0x1a6,0x1a7",
794 "SampleAfterValue": "100003",
795 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and sibling core snoop returned a clean response",
796 "CounterHTOff": "0,1,2,3"
797 },
798 {
799 "EventCode": "0xB7, 0xBB",
800 "MSRValue": "0x3f803c0090",
801 "Counter": "0,1,2,3",
802 "UMask": "0x1",
803 "Offcore": "1",
804 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.ANY_RESPONSE",
805 "MSRIndex": "0x1a6,0x1a7",
806 "SampleAfterValue": "100003",
807 "BriefDescription": "Counts all prefetch data reads that hit the LLC",
808 "CounterHTOff": "0,1,2,3"
809 },
810 {
811 "EventCode": "0xB7, 0xBB",
812 "MSRValue": "0x4003c0090",
813 "Counter": "0,1,2,3",
814 "UMask": "0x1",
815 "Offcore": "1",
816 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
817 "MSRIndex": "0x1a6,0x1a7",
818 "SampleAfterValue": "100003",
819 "BriefDescription": "Counts prefetch data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
820 "CounterHTOff": "0,1,2,3"
821 },
822 {
823 "EventCode": "0xB7, 0xBB",
824 "MSRValue": "0x10003c0090",
825 "Counter": "0,1,2,3",
826 "UMask": "0x1",
827 "Offcore": "1",
828 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
829 "MSRIndex": "0x1a6,0x1a7",
830 "SampleAfterValue": "100003",
831 "BriefDescription": "Counts prefetch data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
832 "CounterHTOff": "0,1,2,3"
833 },
834 {
835 "EventCode": "0xB7, 0xBB",
836 "MSRValue": "0x1003c0090",
837 "Counter": "0,1,2,3",
838 "UMask": "0x1",
839 "Offcore": "1",
840 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
841 "MSRIndex": "0x1a6,0x1a7",
842 "SampleAfterValue": "100003",
843 "BriefDescription": "Counts prefetch data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
844 "CounterHTOff": "0,1,2,3"
845 },
846 {
847 "EventCode": "0xB7, 0xBB",
848 "MSRValue": "0x2003c0090",
849 "Counter": "0,1,2,3",
850 "UMask": "0x1",
851 "Offcore": "1",
852 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.SNOOP_MISS",
853 "MSRIndex": "0x1a6,0x1a7",
854 "SampleAfterValue": "100003",
855 "BriefDescription": "Counts prefetch data reads that hit in the LLC and sibling core snoop returned a clean response",
856 "CounterHTOff": "0,1,2,3"
857 },
858 {
859 "EventCode": "0xB7, 0xBB",
860 "MSRValue": "0x3f803c03f7",
861 "Counter": "0,1,2,3",
862 "UMask": "0x1",
863 "Offcore": "1",
864 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.ANY_RESPONSE",
865 "MSRIndex": "0x1a6,0x1a7",
866 "SampleAfterValue": "100003",
867 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC",
868 "CounterHTOff": "0,1,2,3"
869 },
870 {
871 "EventCode": "0xB7, 0xBB",
872 "MSRValue": "0x4003c03f7",
873 "Counter": "0,1,2,3",
874 "UMask": "0x1",
875 "Offcore": "1",
876 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
877 "MSRIndex": "0x1a6,0x1a7",
878 "SampleAfterValue": "100003",
879 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
880 "CounterHTOff": "0,1,2,3"
881 },
882 {
883 "EventCode": "0xB7, 0xBB",
884 "MSRValue": "0x10003c03f7",
885 "Counter": "0,1,2,3",
886 "UMask": "0x1",
887 "Offcore": "1",
888 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HITM_OTHER_CORE",
889 "MSRIndex": "0x1a6,0x1a7",
890 "SampleAfterValue": "100003",
891 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
892 "CounterHTOff": "0,1,2,3"
893 },
894 {
895 "EventCode": "0xB7, 0xBB",
896 "MSRValue": "0x1003c03f7",
897 "Counter": "0,1,2,3",
898 "UMask": "0x1",
899 "Offcore": "1",
900 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.NO_SNOOP_NEEDED",
901 "MSRIndex": "0x1a6,0x1a7",
902 "SampleAfterValue": "100003",
903 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
904 "CounterHTOff": "0,1,2,3"
905 },
906 {
907 "EventCode": "0xB7, 0xBB",
908 "MSRValue": "0x2003c03f7",
909 "Counter": "0,1,2,3",
910 "UMask": "0x1",
911 "Offcore": "1",
912 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.SNOOP_MISS",
913 "MSRIndex": "0x1a6,0x1a7",
914 "SampleAfterValue": "100003",
915 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC and sibling core snoop returned a clean response",
916 "CounterHTOff": "0,1,2,3"
917 },
918 {
919 "EventCode": "0xB7, 0xBB",
920 "MSRValue": "0x10008",
921 "Counter": "0,1,2,3",
922 "UMask": "0x1",
923 "Offcore": "1",
924 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
925 "MSRIndex": "0x1a6,0x1a7",
926 "SampleAfterValue": "100003",
927 "BriefDescription": "Counts all writebacks from the core to the LLC",
928 "CounterHTOff": "0,1,2,3"
929 },
930 {
931 "EventCode": "0xB7, 0xBB",
932 "MSRValue": "0x3f803c0004",
933 "Counter": "0,1,2,3",
934 "UMask": "0x1",
935 "Offcore": "1",
936 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.ANY_RESPONSE",
937 "MSRIndex": "0x1a6,0x1a7",
938 "SampleAfterValue": "100003",
939 "BriefDescription": "Counts all demand code reads that hit in the LLC",
940 "CounterHTOff": "0,1,2,3"
941 },
942 {
943 "EventCode": "0xB7, 0xBB",
944 "MSRValue": "0x3f803c0001",
945 "Counter": "0,1,2,3",
946 "UMask": "0x1",
947 "Offcore": "1",
948 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.ANY_RESPONSE",
949 "MSRIndex": "0x1a6,0x1a7",
950 "SampleAfterValue": "100003",
951 "BriefDescription": "Counts all demand data reads that hit in the LLC",
952 "CounterHTOff": "0,1,2,3"
953 },
954 {
955 "EventCode": "0xB7, 0xBB",
956 "MSRValue": "0x4003c0001",
957 "Counter": "0,1,2,3",
958 "UMask": "0x1",
959 "Offcore": "1",
960 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
961 "MSRIndex": "0x1a6,0x1a7",
962 "SampleAfterValue": "100003",
963 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
964 "CounterHTOff": "0,1,2,3"
965 },
966 {
967 "EventCode": "0xB7, 0xBB",
968 "MSRValue": "0x10003c0001",
969 "Counter": "0,1,2,3",
970 "UMask": "0x1",
971 "Offcore": "1",
972 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
973 "MSRIndex": "0x1a6,0x1a7",
974 "SampleAfterValue": "100003",
975 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
976 "CounterHTOff": "0,1,2,3"
977 },
978 {
979 "EventCode": "0xB7, 0xBB",
980 "MSRValue": "0x1003c0001",
981 "Counter": "0,1,2,3",
982 "UMask": "0x1",
983 "Offcore": "1",
984 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
985 "MSRIndex": "0x1a6,0x1a7",
986 "SampleAfterValue": "100003",
987 "BriefDescription": "Counts demand data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
988 "CounterHTOff": "0,1,2,3"
989 },
990 {
991 "EventCode": "0xB7, 0xBB",
992 "MSRValue": "0x2003c0001",
993 "Counter": "0,1,2,3",
994 "UMask": "0x1",
995 "Offcore": "1",
996 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.SNOOP_MISS",
997 "MSRIndex": "0x1a6,0x1a7",
998 "SampleAfterValue": "100003",
999 "BriefDescription": "Counts demand data reads that hit in the LLC and sibling core snoop returned a clean response",
1000 "CounterHTOff": "0,1,2,3"
1001 },
1002 {
1003 "EventCode": "0xB7, 0xBB",
1004 "MSRValue": "0x803c8000",
1005 "Counter": "0,1,2,3",
1006 "UMask": "0x1",
1007 "Offcore": "1",
1008 "EventName": "OFFCORE_RESPONSE.OTHER.LRU_HINTS",
1009 "MSRIndex": "0x1a6,0x1a7",
1010 "SampleAfterValue": "100003",
1011 "BriefDescription": "Counts L2 hints sent to LLC to keep a line from being evicted out of the core caches",
1012 "CounterHTOff": "0,1,2,3"
1013 },
1014 {
1015 "EventCode": "0xB7, 0xBB",
1016 "MSRValue": "0x23ffc08000",
1017 "Counter": "0,1,2,3",
1018 "UMask": "0x1",
1019 "Offcore": "1",
1020 "EventName": "OFFCORE_RESPONSE.OTHER.PORTIO_MMIO_UC",
1021 "MSRIndex": "0x1a6,0x1a7",
1022 "SampleAfterValue": "100003",
1023 "BriefDescription": "Counts miscellaneous accesses that include port i/o, MMIO and uncacheable memory accesses",
1024 "CounterHTOff": "0,1,2,3"
1025 },
1026 {
1027 "EventCode": "0xB7, 0xBB",
1028 "MSRValue": "0x3f803c0040",
1029 "Counter": "0,1,2,3",
1030 "UMask": "0x1",
1031 "Offcore": "1",
1032 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.ANY_RESPONSE",
1033 "MSRIndex": "0x1a6,0x1a7",
1034 "SampleAfterValue": "100003",
1035 "BriefDescription": "Counts all prefetch (that bring data to L2) code reads that hit in the LLC",
1036 "CounterHTOff": "0,1,2,3"
1037 },
1038 {
1039 "EventCode": "0xB7, 0xBB",
1040 "MSRValue": "0x3f803c0010",
1041 "Counter": "0,1,2,3",
1042 "UMask": "0x1",
1043 "Offcore": "1",
1044 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.ANY_RESPONSE",
1045 "MSRIndex": "0x1a6,0x1a7",
1046 "SampleAfterValue": "100003",
1047 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC",
1048 "CounterHTOff": "0,1,2,3"
1049 },
1050 {
1051 "EventCode": "0xB7, 0xBB",
1052 "MSRValue": "0x4003c0010",
1053 "Counter": "0,1,2,3",
1054 "UMask": "0x1",
1055 "Offcore": "1",
1056 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1057 "MSRIndex": "0x1a6,0x1a7",
1058 "SampleAfterValue": "100003",
1059 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1060 "CounterHTOff": "0,1,2,3"
1061 },
1062 {
1063 "EventCode": "0xB7, 0xBB",
1064 "MSRValue": "0x10003c0010",
1065 "Counter": "0,1,2,3",
1066 "UMask": "0x1",
1067 "Offcore": "1",
1068 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1069 "MSRIndex": "0x1a6,0x1a7",
1070 "SampleAfterValue": "100003",
1071 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1072 "CounterHTOff": "0,1,2,3"
1073 },
1074 {
1075 "EventCode": "0xB7, 0xBB",
1076 "MSRValue": "0x1003c0010",
1077 "Counter": "0,1,2,3",
1078 "UMask": "0x1",
1079 "Offcore": "1",
1080 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1081 "MSRIndex": "0x1a6,0x1a7",
1082 "SampleAfterValue": "100003",
1083 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
1084 "CounterHTOff": "0,1,2,3"
1085 },
1086 {
1087 "EventCode": "0xB7, 0xBB",
1088 "MSRValue": "0x2003c0010",
1089 "Counter": "0,1,2,3",
1090 "UMask": "0x1",
1091 "Offcore": "1",
1092 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.SNOOP_MISS",
1093 "MSRIndex": "0x1a6,0x1a7",
1094 "SampleAfterValue": "100003",
1095 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoops sent to sibling cores return clean response",
1096 "CounterHTOff": "0,1,2,3"
1097 },
1098 {
1099 "EventCode": "0xB7, 0xBB",
1100 "MSRValue": "0x3f803c0200",
1101 "Counter": "0,1,2,3",
1102 "UMask": "0x1",
1103 "Offcore": "1",
1104 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.ANY_RESPONSE",
1105 "MSRIndex": "0x1a6,0x1a7",
1106 "SampleAfterValue": "100003",
1107 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the LLC",
1108 "CounterHTOff": "0,1,2,3"
1109 },
1110 {
1111 "EventCode": "0xB7, 0xBB",
1112 "MSRValue": "0x3f803c0080",
1113 "Counter": "0,1,2,3",
1114 "UMask": "0x1",
1115 "Offcore": "1",
1116 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.ANY_RESPONSE",
1117 "MSRIndex": "0x1a6,0x1a7",
1118 "SampleAfterValue": "100003",
1119 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC",
1120 "CounterHTOff": "0,1,2,3"
1121 },
1122 {
1123 "EventCode": "0xB7, 0xBB",
1124 "MSRValue": "0x4003c0080",
1125 "Counter": "0,1,2,3",
1126 "UMask": "0x1",
1127 "Offcore": "1",
1128 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1129 "MSRIndex": "0x1a6,0x1a7",
1130 "SampleAfterValue": "100003",
1131 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded",
1132 "CounterHTOff": "0,1,2,3"
1133 },
1134 {
1135 "EventCode": "0xB7, 0xBB",
1136 "MSRValue": "0x10003c0080",
1137 "Counter": "0,1,2,3",
1138 "UMask": "0x1",
1139 "Offcore": "1",
1140 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1141 "MSRIndex": "0x1a6,0x1a7",
1142 "SampleAfterValue": "100003",
1143 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded",
1144 "CounterHTOff": "0,1,2,3"
1145 },
1146 {
1147 "EventCode": "0xB7, 0xBB",
1148 "MSRValue": "0x1003c0080",
1149 "Counter": "0,1,2,3",
1150 "UMask": "0x1",
1151 "Offcore": "1",
1152 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1153 "MSRIndex": "0x1a6,0x1a7",
1154 "SampleAfterValue": "100003",
1155 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores",
1156 "CounterHTOff": "0,1,2,3"
1157 },
1158 {
1159 "EventCode": "0xB7, 0xBB",
1160 "MSRValue": "0x2003c0080",
1161 "Counter": "0,1,2,3",
1162 "UMask": "0x1",
1163 "Offcore": "1",
1164 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.SNOOP_MISS",
1165 "MSRIndex": "0x1a6,0x1a7",
1166 "SampleAfterValue": "100003",
1167 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops sent to sibling cores return clean response",
1168 "CounterHTOff": "0,1,2,3"
1169 },
1170 {
1171 "EventCode": "0xB7, 0xBB",
1172 "MSRValue": "0x10400",
1173 "Counter": "0,1,2,3",
1174 "UMask": "0x1",
1175 "Offcore": "1",
1176 "EventName": "OFFCORE_RESPONSE.SPLIT_LOCK_UC_LOCK.ANY_RESPONSE",
1177 "MSRIndex": "0x1a6,0x1a7",
1178 "SampleAfterValue": "100003",
1179 "BriefDescription": "Counts requests where the address of an atomic lock instruction spans a cache line boundary or the lock instruction is executed on uncacheable address",
1180 "CounterHTOff": "0,1,2,3"
1181 },
1182 {
1183 "EventCode": "0xB7, 0xBB",
1184 "MSRValue": "0x10800",
1185 "Counter": "0,1,2,3",
1186 "UMask": "0x1",
1187 "Offcore": "1",
1188 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.ANY_RESPONSE",
1189 "MSRIndex": "0x1a6,0x1a7",
1190 "SampleAfterValue": "100003",
1191 "BriefDescription": "Counts non-temporal stores",
1192 "CounterHTOff": "0,1,2,3"
1193 },
1194 {
1195 "EventCode": "0xB7, 0xBB",
1196 "MSRValue": "0x00010008",
1197 "Counter": "0,1,2,3",
1198 "UMask": "0x1",
1199 "Offcore": "1",
1200 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
1201 "MSRIndex": "0x1a6,0x1a7",
1202 "SampleAfterValue": "100003",
1203 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops sent to sibling cores return clean response",
1204 "CounterHTOff": "0,1,2,3"
1205 },
1206 {
1207 "EventCode": "0xB7, 0xBB",
1208 "MSRValue": "0x00010001",
1209 "Counter": "0,1,2,3",
1210 "UMask": "0x1",
1211 "Offcore": "1",
1212 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
1213 "MSRIndex": "0x1a6,0x1a7",
1214 "SampleAfterValue": "100003",
1215 "BriefDescription": "Counts all demand data reads",
1216 "CounterHTOff": "0,1,2,3"
1217 },
1218 {
1219 "EventCode": "0xB7, 0xBB",
1220 "MSRValue": "0x00010002",
1221 "Counter": "0,1,2,3",
1222 "UMask": "0x1",
1223 "Offcore": "1",
1224 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_RESPONSE",
1225 "MSRIndex": "0x1a6,0x1a7",
1226 "SampleAfterValue": "100003",
1227 "BriefDescription": "Counts all demand rfo's",
1228 "CounterHTOff": "0,1,2,3"
1229 },
1230 {
1231 "EventCode": "0xB7, 0xBB",
1232 "MSRValue": "0x00010004",
1233 "Counter": "0,1,2,3",
1234 "UMask": "0x1",
1235 "Offcore": "1",
1236 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
1237 "MSRIndex": "0x1a6,0x1a7",
1238 "SampleAfterValue": "100003",
1239 "BriefDescription": "Counts all demand code reads",
1240 "CounterHTOff": "0,1,2,3"
1241 },
1242 {
1243 "EventCode": "0xB7, 0xBB",
1244 "MSRValue": "0x00010008",
1245 "Counter": "0,1,2,3",
1246 "UMask": "0x1",
1247 "Offcore": "1",
1248 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
1249 "MSRIndex": "0x1a6,0x1a7",
1250 "SampleAfterValue": "100003",
1251 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops sent to sibling cores return clean response",
1252 "CounterHTOff": "0,1,2,3"
1253 },
1254 {
1255 "EventCode": "0xB7, 0xBB",
1256 "MSRValue": "0x000105B3",
1257 "Counter": "0,1,2,3",
1258 "UMask": "0x1",
1259 "Offcore": "1",
1260 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.ANY_RESPONSE",
1261 "MSRIndex": "0x1a6,0x1a7",
1262 "SampleAfterValue": "100003",
1263 "BriefDescription": "Counts all demand & prefetch data reads",
1264 "CounterHTOff": "0,1,2,3"
1265 },
1266 {
1267 "EventCode": "0xB7, 0xBB",
1268 "MSRValue": "0x00010122",
1269 "Counter": "0,1,2,3",
1270 "UMask": "0x1",
1271 "Offcore": "1",
1272 "EventName": "OFFCORE_RESPONSE.ALL_RFO.ANY_RESPONSE",
1273 "MSRIndex": "0x1a6,0x1a7",
1274 "SampleAfterValue": "100003",
1275 "BriefDescription": "Counts all demand & prefetch prefetch RFOs",
1276 "CounterHTOff": "0,1,2,3"
1277 },
1278 {
1279 "EventCode": "0xB7, 0xBB",
1280 "MSRValue": "0x000107F7",
1281 "Counter": "0,1,2,3",
1282 "UMask": "0x1",
1283 "Offcore": "1",
1284 "EventName": "OFFCORE_RESPONSE.ALL_READS.ANY_RESPONSE",
1285 "MSRIndex": "0x1a6,0x1a7",
1286 "SampleAfterValue": "100003",
1287 "BriefDescription": "Counts all data/code/rfo references (demand & prefetch)",
1288 "CounterHTOff": "0,1,2,3"
1289 }
1290] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/floating-point.json b/tools/perf/pmu-events/arch/x86/jaketown/floating-point.json
new file mode 100644
index 000000000000..982eda48785e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/floating-point.json
@@ -0,0 +1,138 @@
1[
2 {
3 "EventCode": "0xC1",
4 "Counter": "0,1,2,3",
5 "UMask": "0x8",
6 "EventName": "OTHER_ASSISTS.AVX_STORE",
7 "SampleAfterValue": "100003",
8 "BriefDescription": "Number of GSSE memory assist for stores. GSSE microcode assist is being invoked whenever the hardware is unable to properly handle GSSE-256b operations.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0xC1",
13 "Counter": "0,1,2,3",
14 "UMask": "0x10",
15 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
16 "SampleAfterValue": "100003",
17 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0xC1",
22 "Counter": "0,1,2,3",
23 "UMask": "0x20",
24 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
25 "SampleAfterValue": "100003",
26 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
27 "CounterHTOff": "0,1,2,3,4,5,6,7"
28 },
29 {
30 "EventCode": "0xCA",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "FP_ASSIST.X87_OUTPUT",
34 "SampleAfterValue": "100003",
35 "BriefDescription": "Number of X87 assists due to output value.",
36 "CounterHTOff": "0,1,2,3,4,5,6,7"
37 },
38 {
39 "EventCode": "0xCA",
40 "Counter": "0,1,2,3",
41 "UMask": "0x4",
42 "EventName": "FP_ASSIST.X87_INPUT",
43 "SampleAfterValue": "100003",
44 "BriefDescription": "Number of X87 assists due to input value.",
45 "CounterHTOff": "0,1,2,3,4,5,6,7"
46 },
47 {
48 "EventCode": "0xCA",
49 "Counter": "0,1,2,3",
50 "UMask": "0x8",
51 "EventName": "FP_ASSIST.SIMD_OUTPUT",
52 "SampleAfterValue": "100003",
53 "BriefDescription": "Number of SIMD FP assists due to Output values.",
54 "CounterHTOff": "0,1,2,3,4,5,6,7"
55 },
56 {
57 "EventCode": "0xCA",
58 "Counter": "0,1,2,3",
59 "UMask": "0x10",
60 "EventName": "FP_ASSIST.SIMD_INPUT",
61 "SampleAfterValue": "100003",
62 "BriefDescription": "Number of SIMD FP assists due to input values.",
63 "CounterHTOff": "0,1,2,3,4,5,6,7"
64 },
65 {
66 "EventCode": "0x10",
67 "Counter": "0,1,2,3",
68 "UMask": "0x1",
69 "EventName": "FP_COMP_OPS_EXE.X87",
70 "SampleAfterValue": "2000003",
71 "BriefDescription": "Number of FP Computational Uops Executed this cycle. The number of FADD, FSUB, FCOM, FMULs, integer MULsand IMULs, FDIVs, FPREMs, FSQRTS, integer DIVs, and IDIVs. This event does not distinguish an FADD used in the middle of a transcendental flow from a s.",
72 "CounterHTOff": "0,1,2,3,4,5,6,7"
73 },
74 {
75 "EventCode": "0x10",
76 "Counter": "0,1,2,3",
77 "UMask": "0x10",
78 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed double-precision uops issued this cycle.",
81 "CounterHTOff": "0,1,2,3,4,5,6,7"
82 },
83 {
84 "EventCode": "0x10",
85 "Counter": "0,1,2,3",
86 "UMask": "0x20",
87 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE",
88 "SampleAfterValue": "2000003",
89 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar single-precision uops issued this cycle.",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x10",
94 "Counter": "0,1,2,3",
95 "UMask": "0x40",
96 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_SINGLE",
97 "SampleAfterValue": "2000003",
98 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed single-precision uops issued this cycle.",
99 "CounterHTOff": "0,1,2,3,4,5,6,7"
100 },
101 {
102 "EventCode": "0x10",
103 "Counter": "0,1,2,3",
104 "UMask": "0x80",
105 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE",
106 "SampleAfterValue": "2000003",
107 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar double-precision uops issued this cycle.",
108 "CounterHTOff": "0,1,2,3,4,5,6,7"
109 },
110 {
111 "EventCode": "0x11",
112 "Counter": "0,1,2,3",
113 "UMask": "0x1",
114 "EventName": "SIMD_FP_256.PACKED_SINGLE",
115 "SampleAfterValue": "2000003",
116 "BriefDescription": "Number of GSSE-256 Computational FP single precision uops issued this cycle.",
117 "CounterHTOff": "0,1,2,3,4,5,6,7"
118 },
119 {
120 "EventCode": "0x11",
121 "Counter": "0,1,2,3",
122 "UMask": "0x2",
123 "EventName": "SIMD_FP_256.PACKED_DOUBLE",
124 "SampleAfterValue": "2000003",
125 "BriefDescription": "Number of AVX-256 Computational FP double precision uops issued this cycle.",
126 "CounterHTOff": "0,1,2,3,4,5,6,7"
127 },
128 {
129 "EventCode": "0xCA",
130 "Counter": "0,1,2,3",
131 "UMask": "0x1e",
132 "EventName": "FP_ASSIST.ANY",
133 "SampleAfterValue": "100003",
134 "BriefDescription": "Cycles with any input/output SSE or FP assist.",
135 "CounterMask": "1",
136 "CounterHTOff": "0,1,2,3"
137 }
138] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/frontend.json b/tools/perf/pmu-events/arch/x86/jaketown/frontend.json
new file mode 100644
index 000000000000..1b7b1dd36c68
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/frontend.json
@@ -0,0 +1,305 @@
1[
2 {
3 "EventCode": "0x80",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ICACHE.HIT",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "PublicDescription": "This event counts the number of instruction cache, streaming buffer and victim cache misses. Counting includes unchacheable accesses.",
13 "EventCode": "0x80",
14 "Counter": "0,1,2,3",
15 "UMask": "0x2",
16 "EventName": "ICACHE.MISSES",
17 "SampleAfterValue": "200003",
18 "BriefDescription": "Instruction cache, streaming buffer and victim cache misses.",
19 "CounterHTOff": "0,1,2,3,4,5,6,7"
20 },
21 {
22 "EventCode": "0x79",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "IDQ.EMPTY",
26 "SampleAfterValue": "2000003",
27 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles.",
28 "CounterHTOff": "0,1,2,3"
29 },
30 {
31 "EventCode": "0x79",
32 "Counter": "0,1,2,3",
33 "UMask": "0x4",
34 "EventName": "IDQ.MITE_UOPS",
35 "SampleAfterValue": "2000003",
36 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path.",
37 "CounterHTOff": "0,1,2,3,4,5,6,7"
38 },
39 {
40 "EventCode": "0x79",
41 "Counter": "0,1,2,3",
42 "UMask": "0x8",
43 "EventName": "IDQ.DSB_UOPS",
44 "SampleAfterValue": "2000003",
45 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path.",
46 "CounterHTOff": "0,1,2,3,4,5,6,7"
47 },
48 {
49 "EventCode": "0x79",
50 "Counter": "0,1,2,3",
51 "UMask": "0x10",
52 "EventName": "IDQ.MS_DSB_UOPS",
53 "SampleAfterValue": "2000003",
54 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "EventCode": "0x79",
59 "Counter": "0,1,2,3",
60 "UMask": "0x20",
61 "EventName": "IDQ.MS_MITE_UOPS",
62 "SampleAfterValue": "2000003",
63 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
64 "CounterHTOff": "0,1,2,3,4,5,6,7"
65 },
66 {
67 "EventCode": "0x79",
68 "Counter": "0,1,2,3",
69 "UMask": "0x30",
70 "EventName": "IDQ.MS_UOPS",
71 "SampleAfterValue": "2000003",
72 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "PublicDescription": "This event counts cycles during which the microcode sequencer assisted the front-end in delivering uops. Microcode assists are used for complex instructions or scenarios that can't be handled by the standard decoder. Using other instructions, if possible, will usually improve performance. See the Intel? 64 and IA-32 Architectures Optimization Reference Manual for more information.",
77 "EventCode": "0x79",
78 "Counter": "0,1,2,3",
79 "UMask": "0x30",
80 "EventName": "IDQ.MS_CYCLES",
81 "SampleAfterValue": "2000003",
82 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
83 "CounterMask": "1",
84 "CounterHTOff": "0,1,2,3,4,5,6,7"
85 },
86 {
87 "PublicDescription": "This event counts the number of uops not delivered to the back-end per cycle, per thread, when the back-end was not stalled. In the ideal case 4 uops can be delivered each cycle. The event counts the undelivered uops - so if 3 were delivered in one cycle, the counter would be incremented by 1 for that cycle (4 - 3). If the back-end is stalled, the count for this event is not incremented even when uops were not delivered, because the back-end would not have been able to accept them. This event is used in determining the front-end bound category of the top-down pipeline slots characterization.",
88 "EventCode": "0x9C",
89 "Counter": "0,1,2,3",
90 "UMask": "0x1",
91 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
92 "SampleAfterValue": "2000003",
93 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled .",
94 "CounterHTOff": "0,1,2,3"
95 },
96 {
97 "EventCode": "0x9C",
98 "Counter": "0,1,2,3",
99 "UMask": "0x1",
100 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
101 "SampleAfterValue": "2000003",
102 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
103 "CounterMask": "4",
104 "CounterHTOff": "0,1,2,3"
105 },
106 {
107 "EventCode": "0x9C",
108 "Counter": "0,1,2,3",
109 "UMask": "0x1",
110 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
111 "SampleAfterValue": "2000003",
112 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
113 "CounterMask": "3",
114 "CounterHTOff": "0,1,2,3"
115 },
116 {
117 "EventCode": "0xAB",
118 "Counter": "0,1,2,3",
119 "UMask": "0x1",
120 "EventName": "DSB2MITE_SWITCHES.COUNT",
121 "SampleAfterValue": "2000003",
122 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switches.",
123 "CounterHTOff": "0,1,2,3,4,5,6,7"
124 },
125 {
126 "PublicDescription": "This event counts the cycles attributed to a switch from the Decoded Stream Buffer (DSB), which holds decoded instructions, to the legacy decode pipeline. It excludes cycles when the back-end cannot accept new micro-ops. The penalty for these switches is potentially several cycles of instruction starvation, where no micro-ops are delivered to the back-end.",
127 "EventCode": "0xAB",
128 "Counter": "0,1,2,3",
129 "UMask": "0x2",
130 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
131 "SampleAfterValue": "2000003",
132 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
133 "CounterHTOff": "0,1,2,3,4,5,6,7"
134 },
135 {
136 "EventCode": "0xAC",
137 "Counter": "0,1,2,3",
138 "UMask": "0x2",
139 "EventName": "DSB_FILL.OTHER_CANCEL",
140 "SampleAfterValue": "2000003",
141 "BriefDescription": "Cases of cancelling valid DSB fill not because of exceeding way limit.",
142 "CounterHTOff": "0,1,2,3,4,5,6,7"
143 },
144 {
145 "EventCode": "0xAC",
146 "Counter": "0,1,2,3",
147 "UMask": "0x8",
148 "EventName": "DSB_FILL.EXCEED_DSB_LINES",
149 "SampleAfterValue": "2000003",
150 "BriefDescription": "Cycles when Decode Stream Buffer (DSB) fill encounter more than 3 Decode Stream Buffer (DSB) lines.",
151 "CounterHTOff": "0,1,2,3,4,5,6,7"
152 },
153 {
154 "EventCode": "0x79",
155 "Counter": "0,1,2,3",
156 "UMask": "0x4",
157 "EventName": "IDQ.MITE_CYCLES",
158 "SampleAfterValue": "2000003",
159 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path.",
160 "CounterMask": "1",
161 "CounterHTOff": "0,1,2,3,4,5,6,7"
162 },
163 {
164 "EventCode": "0x79",
165 "Counter": "0,1,2,3",
166 "UMask": "0x8",
167 "EventName": "IDQ.DSB_CYCLES",
168 "SampleAfterValue": "2000003",
169 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path.",
170 "CounterMask": "1",
171 "CounterHTOff": "0,1,2,3,4,5,6,7"
172 },
173 {
174 "EventCode": "0x79",
175 "Counter": "0,1,2,3",
176 "UMask": "0x10",
177 "EventName": "IDQ.MS_DSB_CYCLES",
178 "SampleAfterValue": "2000003",
179 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
180 "CounterMask": "1",
181 "CounterHTOff": "0,1,2,3,4,5,6,7"
182 },
183 {
184 "EventCode": "0x79",
185 "Counter": "0,1,2,3",
186 "UMask": "0x10",
187 "EdgeDetect": "1",
188 "EventName": "IDQ.MS_DSB_OCCUR",
189 "SampleAfterValue": "2000003",
190 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy.",
191 "CounterMask": "1",
192 "CounterHTOff": "0,1,2,3,4,5,6,7"
193 },
194 {
195 "EventCode": "0x9C",
196 "Counter": "0,1,2,3",
197 "UMask": "0x1",
198 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
199 "SampleAfterValue": "2000003",
200 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
201 "CounterMask": "2",
202 "CounterHTOff": "0,1,2,3"
203 },
204 {
205 "EventCode": "0x9C",
206 "Counter": "0,1,2,3",
207 "UMask": "0x1",
208 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
209 "SampleAfterValue": "2000003",
210 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
211 "CounterMask": "1",
212 "CounterHTOff": "0,1,2,3"
213 },
214 {
215 "EventCode": "0x9C",
216 "Invert": "1",
217 "Counter": "0,1,2,3",
218 "UMask": "0x1",
219 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_GE_1_UOP_DELIV.CORE",
220 "SampleAfterValue": "2000003",
221 "BriefDescription": "Cycles when 1 or more uops were delivered to the by the front end.",
222 "CounterMask": "4",
223 "CounterHTOff": "0,1,2,3"
224 },
225 {
226 "EventCode": "0x79",
227 "Counter": "0,1,2,3",
228 "UMask": "0x18",
229 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
230 "SampleAfterValue": "2000003",
231 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops.",
232 "CounterMask": "4",
233 "CounterHTOff": "0,1,2,3,4,5,6,7"
234 },
235 {
236 "EventCode": "0x79",
237 "Counter": "0,1,2,3",
238 "UMask": "0x18",
239 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
240 "SampleAfterValue": "2000003",
241 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop.",
242 "CounterMask": "1",
243 "CounterHTOff": "0,1,2,3,4,5,6,7"
244 },
245 {
246 "EventCode": "0x79",
247 "Counter": "0,1,2,3",
248 "UMask": "0x24",
249 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
250 "SampleAfterValue": "2000003",
251 "BriefDescription": "Cycles MITE is delivering 4 Uops.",
252 "CounterMask": "4",
253 "CounterHTOff": "0,1,2,3,4,5,6,7"
254 },
255 {
256 "EventCode": "0x79",
257 "Counter": "0,1,2,3",
258 "UMask": "0x24",
259 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
260 "SampleAfterValue": "2000003",
261 "BriefDescription": "Cycles MITE is delivering any Uop.",
262 "CounterMask": "1",
263 "CounterHTOff": "0,1,2,3,4,5,6,7"
264 },
265 {
266 "EventCode": "0xAC",
267 "Counter": "0,1,2,3",
268 "UMask": "0xa",
269 "EventName": "DSB_FILL.ALL_CANCEL",
270 "SampleAfterValue": "2000003",
271 "BriefDescription": "Cases of cancelling valid Decode Stream Buffer (DSB) fill not because of exceeding way limit.",
272 "CounterHTOff": "0,1,2,3,4,5,6,7"
273 },
274 {
275 "EventCode": "0x9C",
276 "Invert": "1",
277 "Counter": "0,1,2,3",
278 "UMask": "0x1",
279 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
280 "SampleAfterValue": "2000003",
281 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
282 "CounterMask": "1",
283 "CounterHTOff": "0,1,2,3"
284 },
285 {
286 "EventCode": "0x79",
287 "Counter": "0,1,2,3",
288 "UMask": "0x3c",
289 "EventName": "IDQ.MITE_ALL_UOPS",
290 "SampleAfterValue": "2000003",
291 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path.",
292 "CounterHTOff": "0,1,2,3,4,5,6,7"
293 },
294 {
295 "EventCode": "0x79",
296 "Counter": "0,1,2,3",
297 "UMask": "0x30",
298 "EdgeDetect": "1",
299 "EventName": "IDQ.MS_SWITCHES",
300 "SampleAfterValue": "2000003",
301 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
302 "CounterMask": "1",
303 "CounterHTOff": "0,1,2,3,4,5,6,7"
304 }
305] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/memory.json b/tools/perf/pmu-events/arch/x86/jaketown/memory.json
new file mode 100644
index 000000000000..27e636428f4f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/memory.json
@@ -0,0 +1,422 @@
1[
2 {
3 "PublicDescription": "This event counts the number of memory ordering Machine Clears detected. Memory Ordering Machine Clears can result from memory disambiguation, external snoops, or cross SMT-HW-thread snoop (stores) hitting load buffers. Machine clears can have a significant performance impact if they are happening frequently.",
4 "EventCode": "0xC3",
5 "Counter": "0,1,2,3",
6 "UMask": "0x2",
7 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PEBS": "2",
14 "EventCode": "0xCD",
15 "MSRValue": "0x4",
16 "Counter": "3",
17 "UMask": "0x1",
18 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
19 "MSRIndex": "0x3F6",
20 "SampleAfterValue": "100003",
21 "BriefDescription": "Loads with latency value being above 4 .",
22 "TakenAlone": "1",
23 "CounterHTOff": "3"
24 },
25 {
26 "PEBS": "2",
27 "EventCode": "0xCD",
28 "MSRValue": "0x8",
29 "Counter": "3",
30 "UMask": "0x1",
31 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
32 "MSRIndex": "0x3F6",
33 "SampleAfterValue": "50021",
34 "BriefDescription": "Loads with latency value being above 8.",
35 "TakenAlone": "1",
36 "CounterHTOff": "3"
37 },
38 {
39 "PEBS": "2",
40 "EventCode": "0xCD",
41 "MSRValue": "0x10",
42 "Counter": "3",
43 "UMask": "0x1",
44 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
45 "MSRIndex": "0x3F6",
46 "SampleAfterValue": "20011",
47 "BriefDescription": "Loads with latency value being above 16.",
48 "TakenAlone": "1",
49 "CounterHTOff": "3"
50 },
51 {
52 "PEBS": "2",
53 "EventCode": "0xCD",
54 "MSRValue": "0x20",
55 "Counter": "3",
56 "UMask": "0x1",
57 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
58 "MSRIndex": "0x3F6",
59 "SampleAfterValue": "100007",
60 "BriefDescription": "Loads with latency value being above 32.",
61 "TakenAlone": "1",
62 "CounterHTOff": "3"
63 },
64 {
65 "PEBS": "2",
66 "EventCode": "0xCD",
67 "MSRValue": "0x40",
68 "Counter": "3",
69 "UMask": "0x1",
70 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
71 "MSRIndex": "0x3F6",
72 "SampleAfterValue": "2003",
73 "BriefDescription": "Loads with latency value being above 64.",
74 "TakenAlone": "1",
75 "CounterHTOff": "3"
76 },
77 {
78 "PEBS": "2",
79 "EventCode": "0xCD",
80 "MSRValue": "0x80",
81 "Counter": "3",
82 "UMask": "0x1",
83 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
84 "MSRIndex": "0x3F6",
85 "SampleAfterValue": "1009",
86 "BriefDescription": "Loads with latency value being above 128.",
87 "TakenAlone": "1",
88 "CounterHTOff": "3"
89 },
90 {
91 "PEBS": "2",
92 "EventCode": "0xCD",
93 "MSRValue": "0x100",
94 "Counter": "3",
95 "UMask": "0x1",
96 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
97 "MSRIndex": "0x3F6",
98 "SampleAfterValue": "503",
99 "BriefDescription": "Loads with latency value being above 256.",
100 "TakenAlone": "1",
101 "CounterHTOff": "3"
102 },
103 {
104 "PEBS": "2",
105 "EventCode": "0xCD",
106 "MSRValue": "0x200",
107 "Counter": "3",
108 "UMask": "0x1",
109 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
110 "MSRIndex": "0x3F6",
111 "SampleAfterValue": "101",
112 "BriefDescription": "Loads with latency value being above 512.",
113 "TakenAlone": "1",
114 "CounterHTOff": "3"
115 },
116 {
117 "PEBS": "2",
118 "EventCode": "0xCD",
119 "Counter": "3",
120 "UMask": "0x2",
121 "EventName": "MEM_TRANS_RETIRED.PRECISE_STORE",
122 "SampleAfterValue": "2000003",
123 "BriefDescription": "Sample stores and collect precise store operation via PEBS record. PMC3 only. (Precise Event - PEBS).",
124 "PRECISE_STORE": "1",
125 "TakenAlone": "1",
126 "CounterHTOff": "3"
127 },
128 {
129 "EventCode": "0x05",
130 "Counter": "0,1,2,3",
131 "UMask": "0x1",
132 "EventName": "MISALIGN_MEM_REF.LOADS",
133 "SampleAfterValue": "2000003",
134 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache.",
135 "CounterHTOff": "0,1,2,3,4,5,6,7"
136 },
137 {
138 "EventCode": "0x05",
139 "Counter": "0,1,2,3",
140 "UMask": "0x2",
141 "EventName": "MISALIGN_MEM_REF.STORES",
142 "SampleAfterValue": "2000003",
143 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache.",
144 "CounterHTOff": "0,1,2,3,4,5,6,7"
145 },
146 {
147 "EventCode": "0xB7, 0xBB",
148 "MSRValue": "0x3fffc20004",
149 "Counter": "0,1,2,3",
150 "UMask": "0x1",
151 "Offcore": "1",
152 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.ANY_RESPONSE",
153 "MSRIndex": "0x1a6,0x1a7",
154 "SampleAfterValue": "100003",
155 "BriefDescription": "Counts all demand code reads that miss the LLC",
156 "CounterHTOff": "0,1,2,3"
157 },
158 {
159 "EventCode": "0xB7, 0xBB",
160 "MSRValue": "0x600400004",
161 "Counter": "0,1,2,3",
162 "UMask": "0x1",
163 "Offcore": "1",
164 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.LOCAL_DRAM",
165 "MSRIndex": "0x1a6,0x1a7",
166 "SampleAfterValue": "100003",
167 "BriefDescription": "Counts all demand code reads that miss the LLC and the data returned from local dram",
168 "CounterHTOff": "0,1,2,3"
169 },
170 {
171 "EventCode": "0xB7, 0xBB",
172 "MSRValue": "0x67f800004",
173 "Counter": "0,1,2,3",
174 "UMask": "0x1",
175 "Offcore": "1",
176 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.REMOTE_DRAM",
177 "MSRIndex": "0x1a6,0x1a7",
178 "SampleAfterValue": "100003",
179 "BriefDescription": "Counts all demand code reads that miss the LLC and the data returned from remote dram",
180 "CounterHTOff": "0,1,2,3"
181 },
182 {
183 "EventCode": "0xB7, 0xBB",
184 "MSRValue": "0x87f820004",
185 "Counter": "0,1,2,3",
186 "UMask": "0x1",
187 "Offcore": "1",
188 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.REMOTE_HIT_FORWARD",
189 "MSRIndex": "0x1a6,0x1a7",
190 "SampleAfterValue": "100003",
191 "BriefDescription": "Counts all demand code reads that miss the LLC and the data forwarded from remote cache",
192 "CounterHTOff": "0,1,2,3"
193 },
194 {
195 "EventCode": "0xB7, 0xBB",
196 "MSRValue": "0x107fc00004",
197 "Counter": "0,1,2,3",
198 "UMask": "0x1",
199 "Offcore": "1",
200 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.REMOTE_HITM",
201 "MSRIndex": "0x1a6,0x1a7",
202 "SampleAfterValue": "100003",
203 "BriefDescription": "Counts all demand code reads that miss the LLC the data is found in M state in remote cache and forwarded from there",
204 "CounterHTOff": "0,1,2,3"
205 },
206 {
207 "EventCode": "0xB7, 0xBB",
208 "MSRValue": "0x67fc00001",
209 "Counter": "0,1,2,3",
210 "UMask": "0x1",
211 "Offcore": "1",
212 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.ANY_DRAM",
213 "MSRIndex": "0x1a6,0x1a7",
214 "SampleAfterValue": "100003",
215 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from remote & local dram",
216 "CounterHTOff": "0,1,2,3"
217 },
218 {
219 "EventCode": "0xB7, 0xBB",
220 "MSRValue": "0x3fffc20001",
221 "Counter": "0,1,2,3",
222 "UMask": "0x1",
223 "Offcore": "1",
224 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.ANY_RESPONSE",
225 "MSRIndex": "0x1a6,0x1a7",
226 "SampleAfterValue": "100003",
227 "BriefDescription": "Counts demand data reads that miss in the LLC",
228 "CounterHTOff": "0,1,2,3"
229 },
230 {
231 "EventCode": "0xB7, 0xBB",
232 "MSRValue": "0x600400001",
233 "Counter": "0,1,2,3",
234 "UMask": "0x1",
235 "Offcore": "1",
236 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.LOCAL_DRAM",
237 "MSRIndex": "0x1a6,0x1a7",
238 "SampleAfterValue": "100003",
239 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from local dram",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "EventCode": "0xB7, 0xBB",
244 "MSRValue": "0x67f800001",
245 "Counter": "0,1,2,3",
246 "UMask": "0x1",
247 "Offcore": "1",
248 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.REMOTE_DRAM",
249 "MSRIndex": "0x1a6,0x1a7",
250 "SampleAfterValue": "100003",
251 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from remote dram",
252 "CounterHTOff": "0,1,2,3"
253 },
254 {
255 "EventCode": "0xB7, 0xBB",
256 "MSRValue": "0x87f820001",
257 "Counter": "0,1,2,3",
258 "UMask": "0x1",
259 "Offcore": "1",
260 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.REMOTE_HIT_FORWARD",
261 "MSRIndex": "0x1a6,0x1a7",
262 "SampleAfterValue": "100003",
263 "BriefDescription": "Counts demand data reads that miss the LLC and the data forwarded from remote cache",
264 "CounterHTOff": "0,1,2,3"
265 },
266 {
267 "EventCode": "0xB7, 0xBB",
268 "MSRValue": "0x107fc00001",
269 "Counter": "0,1,2,3",
270 "UMask": "0x1",
271 "Offcore": "1",
272 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.REMOTE_HITM",
273 "MSRIndex": "0x1a6,0x1a7",
274 "SampleAfterValue": "100003",
275 "BriefDescription": "Counts demand data reads that miss the LLC the data is found in M state in remote cache and forwarded from there",
276 "CounterHTOff": "0,1,2,3"
277 },
278 {
279 "EventCode": "0xB7, 0xBB",
280 "MSRValue": "0x3fffc20040",
281 "Counter": "0,1,2,3",
282 "UMask": "0x1",
283 "Offcore": "1",
284 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_MISS.ANY_RESPONSE",
285 "MSRIndex": "0x1a6,0x1a7",
286 "SampleAfterValue": "100003",
287 "BriefDescription": "Counts all prefetch (that bring data to L2) code reads that miss the LLC and the data returned from remote & local dram",
288 "CounterHTOff": "0,1,2,3"
289 },
290 {
291 "EventCode": "0xB7, 0xBB",
292 "MSRValue": "0x67fc00010",
293 "Counter": "0,1,2,3",
294 "UMask": "0x1",
295 "Offcore": "1",
296 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.ANY_DRAM",
297 "MSRIndex": "0x1a6,0x1a7",
298 "SampleAfterValue": "100003",
299 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data returned from remote & local dram",
300 "CounterHTOff": "0,1,2,3"
301 },
302 {
303 "EventCode": "0xB7, 0xBB",
304 "MSRValue": "0x3fffc20010",
305 "Counter": "0,1,2,3",
306 "UMask": "0x1",
307 "Offcore": "1",
308 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.ANY_RESPONSE",
309 "MSRIndex": "0x1a6,0x1a7",
310 "SampleAfterValue": "100003",
311 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss in the LLC",
312 "CounterHTOff": "0,1,2,3"
313 },
314 {
315 "EventCode": "0xB7, 0xBB",
316 "MSRValue": "0x600400010",
317 "Counter": "0,1,2,3",
318 "UMask": "0x1",
319 "Offcore": "1",
320 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.LOCAL_DRAM",
321 "MSRIndex": "0x1a6,0x1a7",
322 "SampleAfterValue": "100003",
323 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data returned from local dram",
324 "CounterHTOff": "0,1,2,3"
325 },
326 {
327 "EventCode": "0xB7, 0xBB",
328 "MSRValue": "0x67f800010",
329 "Counter": "0,1,2,3",
330 "UMask": "0x1",
331 "Offcore": "1",
332 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.REMOTE_DRAM",
333 "MSRIndex": "0x1a6,0x1a7",
334 "SampleAfterValue": "100003",
335 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data returned from remote dram",
336 "CounterHTOff": "0,1,2,3"
337 },
338 {
339 "EventCode": "0xB7, 0xBB",
340 "MSRValue": "0x87f820010",
341 "Counter": "0,1,2,3",
342 "UMask": "0x1",
343 "Offcore": "1",
344 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.REMOTE_HIT_FORWARD",
345 "MSRIndex": "0x1a6,0x1a7",
346 "SampleAfterValue": "100003",
347 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data forwarded from remote cache",
348 "CounterHTOff": "0,1,2,3"
349 },
350 {
351 "EventCode": "0xB7, 0xBB",
352 "MSRValue": "0x107fc00010",
353 "Counter": "0,1,2,3",
354 "UMask": "0x1",
355 "Offcore": "1",
356 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.REMOTE_HITM",
357 "MSRIndex": "0x1a6,0x1a7",
358 "SampleAfterValue": "100003",
359 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC the data is found in M state in remote cache and forwarded from there",
360 "CounterHTOff": "0,1,2,3"
361 },
362 {
363 "EventCode": "0xB7, 0xBB",
364 "MSRValue": "0x3fffc20200",
365 "Counter": "0,1,2,3",
366 "UMask": "0x1",
367 "Offcore": "1",
368 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_MISS.ANY_RESPONSE",
369 "MSRIndex": "0x1a6,0x1a7",
370 "SampleAfterValue": "100003",
371 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that miss in the LLC",
372 "CounterHTOff": "0,1,2,3"
373 },
374 {
375 "EventCode": "0xB7, 0xBB",
376 "MSRValue": "0x3fffc20080",
377 "Counter": "0,1,2,3",
378 "UMask": "0x1",
379 "Offcore": "1",
380 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_MISS.ANY_RESPONSE",
381 "MSRIndex": "0x1a6,0x1a7",
382 "SampleAfterValue": "100003",
383 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops sent to sibling cores return clean response",
384 "CounterHTOff": "0,1,2,3"
385 },
386 {
387 "EventCode": "0xB7, 0xBB",
388 "MSRValue": "0x600400077",
389 "Counter": "0,1,2,3",
390 "UMask": "0x1",
391 "Offcore": "1",
392 "EventName": "OFFCORE_RESPONSE.ALL_DEMAND_MLC_PREF_READS.LLC_MISS.LOCAL_DRAM",
393 "MSRIndex": "0x1a6,0x1a7",
394 "SampleAfterValue": "100003",
395 "BriefDescription": "Counts all local dram accesses for all demand and L2 prefetches. LLC prefetches are excluded.",
396 "CounterHTOff": "0,1,2,3"
397 },
398 {
399 "EventCode": "0xB7, 0xBB",
400 "MSRValue": "0x3FFFC20077",
401 "Counter": "0,1,2,3",
402 "UMask": "0x1",
403 "Offcore": "1",
404 "EventName": "OFFCORE_RESPONSE.ALL_DEMAND_MLC_PREF_READS.LLC_MISS.ANY_RESPONSE",
405 "MSRIndex": "0x1a6,0x1a7",
406 "SampleAfterValue": "100003",
407 "BriefDescription": "This event counts all LLC misses for all demand and L2 prefetches. LLC prefetches are excluded.",
408 "CounterHTOff": "0,1,2,3"
409 },
410 {
411 "EventCode": "0xB7, 0xBB",
412 "MSRValue": "0x187FC20077",
413 "Counter": "0,1,2,3",
414 "UMask": "0x1",
415 "Offcore": "1",
416 "EventName": "OFFCORE_RESPONSE.ALL_DEMAND_MLC_PREF_READS.LLC_MISS.REMOTE_HITM_HIT_FORWARD",
417 "MSRIndex": "0x1a6,0x1a7",
418 "SampleAfterValue": "100003",
419 "BriefDescription": "This event counts all remote cache-to-cache transfers (includes HITM and HIT-Forward) for all demand and L2 prefetches. LLC prefetches are excluded.",
420 "CounterHTOff": "0,1,2,3"
421 }
422] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/other.json b/tools/perf/pmu-events/arch/x86/jaketown/other.json
new file mode 100644
index 000000000000..64b195b82c50
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/other.json
@@ -0,0 +1,58 @@
1[
2 {
3 "EventCode": "0x17",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "INSTS_WRITTEN_TO_IQ.INSTS",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Valid instructions written to IQ per cycle.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0x5C",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "CPL_CYCLES.RING0",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Unhalted core cycles when the thread is in ring 0.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0x5C",
22 "Counter": "0,1,2,3",
23 "UMask": "0x1",
24 "EdgeDetect": "1",
25 "EventName": "CPL_CYCLES.RING0_TRANS",
26 "SampleAfterValue": "100007",
27 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0.",
28 "CounterMask": "1",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "EventCode": "0x5C",
33 "Counter": "0,1,2,3",
34 "UMask": "0x2",
35 "EventName": "CPL_CYCLES.RING123",
36 "SampleAfterValue": "2000003",
37 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3.",
38 "CounterHTOff": "0,1,2,3,4,5,6,7"
39 },
40 {
41 "EventCode": "0x4E",
42 "Counter": "0,1,2,3",
43 "UMask": "0x2",
44 "EventName": "HW_PRE_REQ.DL1_MISS",
45 "SampleAfterValue": "2000003",
46 "BriefDescription": "Hardware Prefetch requests that miss the L1D cache. This accounts for both L1 streamer and IP-based (IPP) HW prefetchers. A request is being counted each time it access the cache & miss it, including if a block is applicable or if hit the Fill Buffer for .",
47 "CounterHTOff": "0,1,2,3,4,5,6,7"
48 },
49 {
50 "EventCode": "0x63",
51 "Counter": "0,1,2,3",
52 "UMask": "0x1",
53 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
54 "SampleAfterValue": "2000003",
55 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock.",
56 "CounterHTOff": "0,1,2,3,4,5,6,7"
57 }
58] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/pipeline.json b/tools/perf/pmu-events/arch/x86/jaketown/pipeline.json
new file mode 100644
index 000000000000..8a597e45ed84
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/pipeline.json
@@ -0,0 +1,1220 @@
1[
2 {
3 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. ",
4 "EventCode": "0x00",
5 "Counter": "Fixed counter 1",
6 "UMask": "0x1",
7 "EventName": "INST_RETIRED.ANY",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Instructions retired from execution.",
10 "CounterHTOff": "Fixed counter 1"
11 },
12 {
13 "PublicDescription": "This event counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. ",
14 "EventCode": "0x00",
15 "Counter": "Fixed counter 2",
16 "UMask": "0x2",
17 "EventName": "CPU_CLK_UNHALTED.THREAD",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Core cycles when the thread is not in halt state.",
20 "CounterHTOff": "Fixed counter 2"
21 },
22 {
23 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. This event has a constant ratio with the CPU_CLK_UNHALTED.REF_XCLK event. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. ",
24 "EventCode": "0x00",
25 "Counter": "Fixed counter 3",
26 "UMask": "0x3",
27 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Reference cycles when the core is not in halt state.",
30 "CounterHTOff": "Fixed counter 3"
31 },
32 {
33 "EventCode": "0x88",
34 "Counter": "0,1,2,3",
35 "UMask": "0x41",
36 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
37 "SampleAfterValue": "200003",
38 "BriefDescription": "Not taken macro-conditional branches.",
39 "CounterHTOff": "0,1,2,3,4,5,6,7"
40 },
41 {
42 "EventCode": "0x88",
43 "Counter": "0,1,2,3",
44 "UMask": "0x81",
45 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
46 "SampleAfterValue": "200003",
47 "BriefDescription": "Taken speculative and retired macro-conditional branches.",
48 "CounterHTOff": "0,1,2,3,4,5,6,7"
49 },
50 {
51 "EventCode": "0x88",
52 "Counter": "0,1,2,3",
53 "UMask": "0x82",
54 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
55 "SampleAfterValue": "200003",
56 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects.",
57 "CounterHTOff": "0,1,2,3,4,5,6,7"
58 },
59 {
60 "EventCode": "0x88",
61 "Counter": "0,1,2,3",
62 "UMask": "0x84",
63 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
64 "SampleAfterValue": "200003",
65 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns.",
66 "CounterHTOff": "0,1,2,3,4,5,6,7"
67 },
68 {
69 "EventCode": "0x88",
70 "Counter": "0,1,2,3",
71 "UMask": "0x88",
72 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
73 "SampleAfterValue": "200003",
74 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic.",
75 "CounterHTOff": "0,1,2,3,4,5,6,7"
76 },
77 {
78 "EventCode": "0x88",
79 "Counter": "0,1,2,3",
80 "UMask": "0x90",
81 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
82 "SampleAfterValue": "200003",
83 "BriefDescription": "Taken speculative and retired direct near calls.",
84 "CounterHTOff": "0,1,2,3,4,5,6,7"
85 },
86 {
87 "EventCode": "0x88",
88 "Counter": "0,1,2,3",
89 "UMask": "0xa0",
90 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
91 "SampleAfterValue": "200003",
92 "BriefDescription": "Taken speculative and retired indirect calls.",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "EventCode": "0x88",
97 "Counter": "0,1,2,3",
98 "UMask": "0xc1",
99 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
100 "SampleAfterValue": "200003",
101 "BriefDescription": "Speculative and retired macro-conditional branches.",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0x88",
106 "Counter": "0,1,2,3",
107 "UMask": "0xc2",
108 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
109 "SampleAfterValue": "200003",
110 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects.",
111 "CounterHTOff": "0,1,2,3,4,5,6,7"
112 },
113 {
114 "EventCode": "0x88",
115 "Counter": "0,1,2,3",
116 "UMask": "0xc4",
117 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
118 "SampleAfterValue": "200003",
119 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns.",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "EventCode": "0x88",
124 "Counter": "0,1,2,3",
125 "UMask": "0xc8",
126 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
127 "SampleAfterValue": "200003",
128 "BriefDescription": "Speculative and retired indirect return branches.",
129 "CounterHTOff": "0,1,2,3,4,5,6,7"
130 },
131 {
132 "EventCode": "0x88",
133 "Counter": "0,1,2,3",
134 "UMask": "0xd0",
135 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
136 "SampleAfterValue": "200003",
137 "BriefDescription": "Speculative and retired direct near calls.",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0x89",
142 "Counter": "0,1,2,3",
143 "UMask": "0x41",
144 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
145 "SampleAfterValue": "200003",
146 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches.",
147 "CounterHTOff": "0,1,2,3,4,5,6,7"
148 },
149 {
150 "EventCode": "0x89",
151 "Counter": "0,1,2,3",
152 "UMask": "0x81",
153 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
154 "SampleAfterValue": "200003",
155 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches.",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "EventCode": "0x89",
160 "Counter": "0,1,2,3",
161 "UMask": "0x84",
162 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
163 "SampleAfterValue": "200003",
164 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns.",
165 "CounterHTOff": "0,1,2,3,4,5,6,7"
166 },
167 {
168 "EventCode": "0x89",
169 "Counter": "0,1,2,3",
170 "UMask": "0x88",
171 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
172 "SampleAfterValue": "200003",
173 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic.",
174 "CounterHTOff": "0,1,2,3,4,5,6,7"
175 },
176 {
177 "EventCode": "0x89",
178 "Counter": "0,1,2,3",
179 "UMask": "0x90",
180 "EventName": "BR_MISP_EXEC.TAKEN_DIRECT_NEAR_CALL",
181 "SampleAfterValue": "200003",
182 "BriefDescription": "Taken speculative and retired mispredicted direct near calls.",
183 "CounterHTOff": "0,1,2,3,4,5,6,7"
184 },
185 {
186 "EventCode": "0x89",
187 "Counter": "0,1,2,3",
188 "UMask": "0xa0",
189 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
190 "SampleAfterValue": "200003",
191 "BriefDescription": "Taken speculative and retired mispredicted indirect calls.",
192 "CounterHTOff": "0,1,2,3,4,5,6,7"
193 },
194 {
195 "EventCode": "0x89",
196 "Counter": "0,1,2,3",
197 "UMask": "0xc1",
198 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
199 "SampleAfterValue": "200003",
200 "BriefDescription": "Speculative and retired mispredicted macro conditional branches.",
201 "CounterHTOff": "0,1,2,3,4,5,6,7"
202 },
203 {
204 "EventCode": "0x89",
205 "Counter": "0,1,2,3",
206 "UMask": "0xc4",
207 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
208 "SampleAfterValue": "200003",
209 "BriefDescription": "Mispredicted indirect branches excluding calls and returns.",
210 "CounterHTOff": "0,1,2,3,4,5,6,7"
211 },
212 {
213 "EventCode": "0x89",
214 "Counter": "0,1,2,3",
215 "UMask": "0xd0",
216 "EventName": "BR_MISP_EXEC.ALL_DIRECT_NEAR_CALL",
217 "SampleAfterValue": "200003",
218 "BriefDescription": "Speculative and retired mispredicted direct near calls.",
219 "CounterHTOff": "0,1,2,3,4,5,6,7"
220 },
221 {
222 "EventCode": "0x3C",
223 "Counter": "0,1,2,3",
224 "UMask": "0x0",
225 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
226 "SampleAfterValue": "2000003",
227 "BriefDescription": "Thread cycles when thread is not in halt state.",
228 "CounterHTOff": "0,1,2,3,4,5,6,7"
229 },
230 {
231 "EventCode": "0xA8",
232 "Counter": "0,1,2,3",
233 "UMask": "0x1",
234 "EventName": "LSD.UOPS",
235 "SampleAfterValue": "2000003",
236 "BriefDescription": "Number of Uops delivered by the LSD.",
237 "CounterHTOff": "0,1,2,3,4,5,6,7"
238 },
239 {
240 "EventCode": "0xA8",
241 "Counter": "0,1,2,3",
242 "UMask": "0x1",
243 "EventName": "LSD.CYCLES_ACTIVE",
244 "SampleAfterValue": "2000003",
245 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
246 "CounterMask": "1",
247 "CounterHTOff": "0,1,2,3,4,5,6,7"
248 },
249 {
250 "EventCode": "0x87",
251 "Counter": "0,1,2,3",
252 "UMask": "0x1",
253 "EventName": "ILD_STALL.LCP",
254 "SampleAfterValue": "2000003",
255 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
256 "CounterHTOff": "0,1,2,3,4,5,6,7"
257 },
258 {
259 "EventCode": "0x87",
260 "Counter": "0,1,2,3",
261 "UMask": "0x4",
262 "EventName": "ILD_STALL.IQ_FULL",
263 "SampleAfterValue": "2000003",
264 "BriefDescription": "Stall cycles because IQ is full.",
265 "CounterHTOff": "0,1,2,3,4,5,6,7"
266 },
267 {
268 "EventCode": "0x0D",
269 "Counter": "0,1,2,3",
270 "UMask": "0x40",
271 "EventName": "INT_MISC.RAT_STALL_CYCLES",
272 "SampleAfterValue": "2000003",
273 "BriefDescription": "Cycles when Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the thread.",
274 "CounterHTOff": "0,1,2,3,4,5,6,7"
275 },
276 {
277 "EventCode": "0x59",
278 "Counter": "0,1,2,3",
279 "UMask": "0x20",
280 "EventName": "PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP",
281 "SampleAfterValue": "2000003",
282 "BriefDescription": "Increments the number of flags-merge uops in flight each cycle.",
283 "CounterHTOff": "0,1,2,3,4,5,6,7"
284 },
285 {
286 "PublicDescription": "This event counts the number of cycles with at least one slow LEA uop being allocated. A uop is generally considered as slow LEA if it has three sources (for example, two sources and immediate) regardless of whether it is a result of LEA instruction or not. Examples of the slow LEA uop are or uops with base, index, and offset source operands using base and index reqisters, where base is EBR/RBP/R13, using RIP relative or 16-bit addressing modes. See the Intel? 64 and IA-32 Architectures Optimization Reference Manual for more details about slow LEA instructions.",
287 "EventCode": "0x59",
288 "Counter": "0,1,2,3",
289 "UMask": "0x40",
290 "EventName": "PARTIAL_RAT_STALLS.SLOW_LEA_WINDOW",
291 "SampleAfterValue": "2000003",
292 "BriefDescription": "Cycles with at least one slow LEA uop being allocated.",
293 "CounterHTOff": "0,1,2,3,4,5,6,7"
294 },
295 {
296 "EventCode": "0x59",
297 "Counter": "0,1,2,3",
298 "UMask": "0x80",
299 "EventName": "PARTIAL_RAT_STALLS.MUL_SINGLE_UOP",
300 "SampleAfterValue": "2000003",
301 "BriefDescription": "Multiply packed/scalar single precision uops allocated.",
302 "CounterHTOff": "0,1,2,3,4,5,6,7"
303 },
304 {
305 "EventCode": "0xA2",
306 "Counter": "0,1,2,3",
307 "UMask": "0x1",
308 "EventName": "RESOURCE_STALLS.ANY",
309 "SampleAfterValue": "2000003",
310 "BriefDescription": "Resource-related stall cycles.",
311 "CounterHTOff": "0,1,2,3,4,5,6,7"
312 },
313 {
314 "EventCode": "0xA2",
315 "Counter": "0,1,2,3",
316 "UMask": "0x2",
317 "EventName": "RESOURCE_STALLS.LB",
318 "SampleAfterValue": "2000003",
319 "BriefDescription": "Counts the cycles of stall due to lack of load buffers.",
320 "CounterHTOff": "0,1,2,3,4,5,6,7"
321 },
322 {
323 "EventCode": "0xA2",
324 "Counter": "0,1,2,3",
325 "UMask": "0x4",
326 "EventName": "RESOURCE_STALLS.RS",
327 "SampleAfterValue": "2000003",
328 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
329 "CounterHTOff": "0,1,2,3,4,5,6,7"
330 },
331 {
332 "EventCode": "0xA2",
333 "Counter": "0,1,2,3",
334 "UMask": "0x8",
335 "EventName": "RESOURCE_STALLS.SB",
336 "SampleAfterValue": "2000003",
337 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
338 "CounterHTOff": "0,1,2,3,4,5,6,7"
339 },
340 {
341 "EventCode": "0xA2",
342 "Counter": "0,1,2,3",
343 "UMask": "0x10",
344 "EventName": "RESOURCE_STALLS.ROB",
345 "SampleAfterValue": "2000003",
346 "BriefDescription": "Cycles stalled due to re-order buffer full.",
347 "CounterHTOff": "0,1,2,3,4,5,6,7"
348 },
349 {
350 "EventCode": "0x5B",
351 "Counter": "0,1,2,3",
352 "UMask": "0x40",
353 "EventName": "RESOURCE_STALLS2.BOB_FULL",
354 "SampleAfterValue": "2000003",
355 "BriefDescription": "Cycles when Allocator is stalled if BOB is full and new branch needs it.",
356 "CounterHTOff": "0,1,2,3,4,5,6,7"
357 },
358 {
359 "PublicDescription": "This event counts the number of Uops issued by the front-end of the pipeilne to the back-end.",
360 "EventCode": "0x0E",
361 "Counter": "0,1,2,3",
362 "UMask": "0x1",
363 "EventName": "UOPS_ISSUED.ANY",
364 "SampleAfterValue": "2000003",
365 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS).",
366 "CounterHTOff": "0,1,2,3,4,5,6,7"
367 },
368 {
369 "EventCode": "0x0E",
370 "Invert": "1",
371 "Counter": "0,1,2,3",
372 "UMask": "0x1",
373 "EventName": "UOPS_ISSUED.STALL_CYCLES",
374 "SampleAfterValue": "2000003",
375 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread.",
376 "CounterMask": "1",
377 "CounterHTOff": "0,1,2,3"
378 },
379 {
380 "EventCode": "0x0E",
381 "Invert": "1",
382 "Counter": "0,1,2,3",
383 "UMask": "0x1",
384 "AnyThread": "1",
385 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
386 "SampleAfterValue": "2000003",
387 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads.",
388 "CounterMask": "1",
389 "CounterHTOff": "0,1,2,3"
390 },
391 {
392 "EventCode": "0x5E",
393 "Counter": "0,1,2,3",
394 "UMask": "0x1",
395 "EventName": "RS_EVENTS.EMPTY_CYCLES",
396 "SampleAfterValue": "2000003",
397 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread.",
398 "CounterHTOff": "0,1,2,3,4,5,6,7"
399 },
400 {
401 "EventCode": "0xCC",
402 "Counter": "0,1,2,3",
403 "UMask": "0x20",
404 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
405 "SampleAfterValue": "2000003",
406 "BriefDescription": "Count cases of saving new LBR.",
407 "CounterHTOff": "0,1,2,3,4,5,6,7"
408 },
409 {
410 "PublicDescription": "This event is incremented when self-modifying code (SMC) is detected, which causes a machine clear. Machine clears can have a significant performance impact if they are happening frequently.",
411 "EventCode": "0xC3",
412 "Counter": "0,1,2,3",
413 "UMask": "0x4",
414 "EventName": "MACHINE_CLEARS.SMC",
415 "SampleAfterValue": "100003",
416 "BriefDescription": "Self-modifying code (SMC) detected.",
417 "CounterHTOff": "0,1,2,3,4,5,6,7"
418 },
419 {
420 "PublicDescription": "Maskmov false fault - counts number of time ucode passes through Maskmov flow due to instruction's mask being 0 while the flow was completed without raising a fault.",
421 "EventCode": "0xC3",
422 "Counter": "0,1,2,3",
423 "UMask": "0x20",
424 "EventName": "MACHINE_CLEARS.MASKMOV",
425 "SampleAfterValue": "100003",
426 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
427 "CounterHTOff": "0,1,2,3,4,5,6,7"
428 },
429 {
430 "EventCode": "0xC0",
431 "Counter": "0,1,2,3",
432 "UMask": "0x0",
433 "EventName": "INST_RETIRED.ANY_P",
434 "SampleAfterValue": "2000003",
435 "BriefDescription": "Number of instructions retired. General Counter - architectural event.",
436 "CounterHTOff": "0,1,2,3,4,5,6,7"
437 },
438 {
439 "PEBS": "1",
440 "PublicDescription": "This event counts the number of micro-ops retired.",
441 "EventCode": "0xC2",
442 "Counter": "0,1,2,3",
443 "UMask": "0x1",
444 "EventName": "UOPS_RETIRED.ALL",
445 "SampleAfterValue": "2000003",
446 "BriefDescription": "Actually retired uops.",
447 "CounterHTOff": "0,1,2,3,4,5,6,7"
448 },
449 {
450 "PEBS": "1",
451 "PublicDescription": "This event counts the number of retirement slots used each cycle. There are potentially 4 slots that can be used each cycle - meaning, 4 micro-ops or 4 instructions could retire each cycle. This event is used in determining the 'Retiring' category of the Top-Down pipeline slots characterization.",
452 "EventCode": "0xC2",
453 "Counter": "0,1,2,3",
454 "UMask": "0x2",
455 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
456 "SampleAfterValue": "2000003",
457 "BriefDescription": "Retirement slots used.",
458 "CounterHTOff": "0,1,2,3,4,5,6,7"
459 },
460 {
461 "EventCode": "0xC2",
462 "Invert": "1",
463 "Counter": "0,1,2,3",
464 "UMask": "0x1",
465 "EventName": "UOPS_RETIRED.STALL_CYCLES",
466 "SampleAfterValue": "2000003",
467 "BriefDescription": "Cycles without actually retired uops.",
468 "CounterMask": "1",
469 "CounterHTOff": "0,1,2,3"
470 },
471 {
472 "EventCode": "0xC2",
473 "Invert": "1",
474 "Counter": "0,1,2,3",
475 "UMask": "0x1",
476 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
477 "SampleAfterValue": "2000003",
478 "BriefDescription": "Cycles with less than 10 actually retired uops.",
479 "CounterMask": "10",
480 "CounterHTOff": "0,1,2,3"
481 },
482 {
483 "PEBS": "1",
484 "EventCode": "0xC4",
485 "Counter": "0,1,2,3",
486 "UMask": "0x1",
487 "EventName": "BR_INST_RETIRED.CONDITIONAL",
488 "SampleAfterValue": "400009",
489 "BriefDescription": "Conditional branch instructions retired.",
490 "CounterHTOff": "0,1,2,3,4,5,6,7"
491 },
492 {
493 "PEBS": "1",
494 "EventCode": "0xC4",
495 "Counter": "0,1,2,3",
496 "UMask": "0x2",
497 "EventName": "BR_INST_RETIRED.NEAR_CALL",
498 "SampleAfterValue": "100007",
499 "BriefDescription": "Direct and indirect near call instructions retired.",
500 "CounterHTOff": "0,1,2,3,4,5,6,7"
501 },
502 {
503 "EventCode": "0xC4",
504 "Counter": "0,1,2,3",
505 "UMask": "0x0",
506 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
507 "SampleAfterValue": "400009",
508 "BriefDescription": "All (macro) branch instructions retired.",
509 "CounterHTOff": "0,1,2,3,4,5,6,7"
510 },
511 {
512 "PEBS": "1",
513 "EventCode": "0xC4",
514 "Counter": "0,1,2,3",
515 "UMask": "0x8",
516 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
517 "SampleAfterValue": "100007",
518 "BriefDescription": "Return instructions retired.",
519 "CounterHTOff": "0,1,2,3,4,5,6,7"
520 },
521 {
522 "EventCode": "0xC4",
523 "Counter": "0,1,2,3",
524 "UMask": "0x10",
525 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
526 "SampleAfterValue": "400009",
527 "BriefDescription": "Not taken branch instructions retired.",
528 "CounterHTOff": "0,1,2,3,4,5,6,7"
529 },
530 {
531 "PEBS": "1",
532 "EventCode": "0xC4",
533 "Counter": "0,1,2,3",
534 "UMask": "0x20",
535 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
536 "SampleAfterValue": "400009",
537 "BriefDescription": "Taken branch instructions retired.",
538 "CounterHTOff": "0,1,2,3,4,5,6,7"
539 },
540 {
541 "EventCode": "0xC4",
542 "Counter": "0,1,2,3",
543 "UMask": "0x40",
544 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
545 "SampleAfterValue": "100007",
546 "BriefDescription": "Far branch instructions retired.",
547 "CounterHTOff": "0,1,2,3,4,5,6,7"
548 },
549 {
550 "PEBS": "2",
551 "EventCode": "0xC4",
552 "Counter": "0,1,2,3",
553 "UMask": "0x4",
554 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
555 "SampleAfterValue": "400009",
556 "BriefDescription": "All (macro) branch instructions retired. (Precise Event - PEBS).",
557 "CounterHTOff": "0,1,2,3"
558 },
559 {
560 "PEBS": "1",
561 "EventCode": "0xC5",
562 "Counter": "0,1,2,3",
563 "UMask": "0x1",
564 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
565 "SampleAfterValue": "400009",
566 "BriefDescription": "Mispredicted conditional branch instructions retired.",
567 "CounterHTOff": "0,1,2,3,4,5,6,7"
568 },
569 {
570 "PEBS": "1",
571 "EventCode": "0xC5",
572 "Counter": "0,1,2,3",
573 "UMask": "0x2",
574 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
575 "SampleAfterValue": "100007",
576 "BriefDescription": "Direct and indirect mispredicted near call instructions retired.",
577 "CounterHTOff": "0,1,2,3,4,5,6,7"
578 },
579 {
580 "EventCode": "0xC5",
581 "Counter": "0,1,2,3",
582 "UMask": "0x0",
583 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
584 "SampleAfterValue": "400009",
585 "BriefDescription": "All mispredicted macro branch instructions retired.",
586 "CounterHTOff": "0,1,2,3,4,5,6,7"
587 },
588 {
589 "PEBS": "1",
590 "EventCode": "0xC5",
591 "Counter": "0,1,2,3",
592 "UMask": "0x10",
593 "EventName": "BR_MISP_RETIRED.NOT_TAKEN",
594 "SampleAfterValue": "400009",
595 "BriefDescription": "Mispredicted not taken branch instructions retired.",
596 "CounterHTOff": "0,1,2,3,4,5,6,7"
597 },
598 {
599 "PEBS": "1",
600 "EventCode": "0xC5",
601 "Counter": "0,1,2,3",
602 "UMask": "0x20",
603 "EventName": "BR_MISP_RETIRED.TAKEN",
604 "SampleAfterValue": "400009",
605 "BriefDescription": "Mispredicted taken branch instructions retired.",
606 "CounterHTOff": "0,1,2,3,4,5,6,7"
607 },
608 {
609 "PEBS": "2",
610 "PublicDescription": "Mispredicted macro branch instructions retired. (Precise Event - PEBS)",
611 "EventCode": "0xC5",
612 "Counter": "0,1,2,3",
613 "UMask": "0x4",
614 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
615 "SampleAfterValue": "400009",
616 "BriefDescription": "Mispredicted macro branch instructions retired. (Precise Event - PEBS).",
617 "CounterHTOff": "0,1,2,3"
618 },
619 {
620 "EventCode": "0xC1",
621 "Counter": "0,1,2,3",
622 "UMask": "0x2",
623 "EventName": "OTHER_ASSISTS.ITLB_MISS_RETIRED",
624 "SampleAfterValue": "100003",
625 "BriefDescription": "Retired instructions experiencing ITLB misses.",
626 "CounterHTOff": "0,1,2,3,4,5,6,7"
627 },
628 {
629 "EventCode": "0x14",
630 "Counter": "0,1,2,3",
631 "UMask": "0x1",
632 "EventName": "ARITH.FPU_DIV_ACTIVE",
633 "SampleAfterValue": "2000003",
634 "BriefDescription": "Cycles when divider is busy executing divide operations.",
635 "CounterHTOff": "0,1,2,3,4,5,6,7"
636 },
637 {
638 "PublicDescription": "This event counts the number of the divide operations executed.",
639 "EventCode": "0x14",
640 "Counter": "0,1,2,3",
641 "UMask": "0x1",
642 "EdgeDetect": "1",
643 "EventName": "ARITH.FPU_DIV",
644 "SampleAfterValue": "100003",
645 "BriefDescription": "Divide operations executed.",
646 "CounterMask": "1",
647 "CounterHTOff": "0,1,2,3,4,5,6,7"
648 },
649 {
650 "EventCode": "0xB1",
651 "Counter": "0,1,2,3",
652 "UMask": "0x1",
653 "EventName": "UOPS_DISPATCHED.THREAD",
654 "SampleAfterValue": "2000003",
655 "BriefDescription": "Uops dispatched per thread.",
656 "CounterHTOff": "0,1,2,3,4,5,6,7"
657 },
658 {
659 "EventCode": "0xB1",
660 "Counter": "0,1,2,3",
661 "UMask": "0x2",
662 "EventName": "UOPS_DISPATCHED.CORE",
663 "SampleAfterValue": "2000003",
664 "BriefDescription": "Uops dispatched from any thread.",
665 "CounterHTOff": "0,1,2,3,4,5,6,7"
666 },
667 {
668 "EventCode": "0xA1",
669 "Counter": "0,1,2,3",
670 "UMask": "0x1",
671 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
672 "SampleAfterValue": "2000003",
673 "BriefDescription": "Cycles per thread when uops are dispatched to port 0.",
674 "CounterHTOff": "0,1,2,3,4,5,6,7"
675 },
676 {
677 "EventCode": "0xA1",
678 "Counter": "0,1,2,3",
679 "UMask": "0x2",
680 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
681 "SampleAfterValue": "2000003",
682 "BriefDescription": "Cycles per thread when uops are dispatched to port 1.",
683 "CounterHTOff": "0,1,2,3,4,5,6,7"
684 },
685 {
686 "EventCode": "0xA1",
687 "Counter": "0,1,2,3",
688 "UMask": "0x40",
689 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
690 "SampleAfterValue": "2000003",
691 "BriefDescription": "Cycles per thread when uops are dispatched to port 4.",
692 "CounterHTOff": "0,1,2,3,4,5,6,7"
693 },
694 {
695 "EventCode": "0xA1",
696 "Counter": "0,1,2,3",
697 "UMask": "0x80",
698 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
699 "SampleAfterValue": "2000003",
700 "BriefDescription": "Cycles per thread when uops are dispatched to port 5.",
701 "CounterHTOff": "0,1,2,3,4,5,6,7"
702 },
703 {
704 "EventCode": "0xA3",
705 "Counter": "0,1,2,3",
706 "UMask": "0x4",
707 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_DISPATCH",
708 "SampleAfterValue": "2000003",
709 "BriefDescription": "Each cycle there was no dispatch for this thread, increment by 1. Note this is connect to Umask 2. No dispatch can be deduced from the UOPS_EXECUTED event.",
710 "CounterMask": "4",
711 "CounterHTOff": "0,1,2,3"
712 },
713 {
714 "EventCode": "0xA3",
715 "Counter": "2",
716 "UMask": "0x2",
717 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
718 "SampleAfterValue": "2000003",
719 "BriefDescription": "Each cycle there was a miss-pending demand load this thread, increment by 1. Note this is in DCU and connected to Umask 1. Miss Pending demand load should be deduced by OR-ing increment bits of DCACHE_MISS_PEND.PENDING.",
720 "CounterMask": "2",
721 "CounterHTOff": "2"
722 },
723 {
724 "EventCode": "0xA3",
725 "Counter": "0,1,2,3",
726 "UMask": "0x1",
727 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
728 "SampleAfterValue": "2000003",
729 "BriefDescription": "Each cycle there was a MLC-miss pending demand load this thread (i.e. Non-completed valid SQ entry allocated for demand load and waiting for Uncore), increment by 1. Note this is in MLC and connected to Umask 0.",
730 "CounterMask": "1",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "EventCode": "0xA3",
735 "Counter": "2",
736 "UMask": "0x6",
737 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
738 "SampleAfterValue": "2000003",
739 "BriefDescription": "Each cycle there was a miss-pending demand load this thread and no uops dispatched, increment by 1. Note this is in DCU and connected to Umask 1 and 2. Miss Pending demand load should be deduced by OR-ing increment bits of DCACHE_MISS_PEND.PENDING.",
740 "CounterMask": "6",
741 "CounterHTOff": "2"
742 },
743 {
744 "EventCode": "0xA3",
745 "Counter": "0,1,2,3",
746 "UMask": "0x5",
747 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
748 "SampleAfterValue": "2000003",
749 "BriefDescription": "Each cycle there was a MLC-miss pending demand load and no uops dispatched on this thread (i.e. Non-completed valid SQ entry allocated for demand load and waiting for Uncore), increment by 1. Note this is in MLC and connected to Umask 0 and 2.",
750 "CounterMask": "5",
751 "CounterHTOff": "0,1,2,3"
752 },
753 {
754 "EventCode": "0x4C",
755 "Counter": "0,1,2,3",
756 "UMask": "0x1",
757 "EventName": "LOAD_HIT_PRE.SW_PF",
758 "SampleAfterValue": "100003",
759 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch.",
760 "CounterHTOff": "0,1,2,3,4,5,6,7"
761 },
762 {
763 "EventCode": "0x4C",
764 "Counter": "0,1,2,3",
765 "UMask": "0x2",
766 "EventName": "LOAD_HIT_PRE.HW_PF",
767 "SampleAfterValue": "100003",
768 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch.",
769 "CounterHTOff": "0,1,2,3,4,5,6,7"
770 },
771 {
772 "EventCode": "0x03",
773 "Counter": "0,1,2,3",
774 "UMask": "0x1",
775 "EventName": "LD_BLOCKS.DATA_UNKNOWN",
776 "SampleAfterValue": "100003",
777 "BriefDescription": "Loads delayed due to SB blocks, preceding store operations with known addresses but unknown data.",
778 "CounterHTOff": "0,1,2,3,4,5,6,7"
779 },
780 {
781 "PublicDescription": "This event counts loads that followed a store to the same address, where the data could not be forwarded inside the pipeline from the store to the load. The most common reason why store forwarding would be blocked is when a load's address range overlaps with a preceeding smaller uncompleted store. See the table of not supported store forwards in the Intel? 64 and IA-32 Architectures Optimization Reference Manual. The penalty for blocked store forwarding is that the load must wait for the store to complete before it can be issued.",
782 "EventCode": "0x03",
783 "Counter": "0,1,2,3",
784 "UMask": "0x2",
785 "EventName": "LD_BLOCKS.STORE_FORWARD",
786 "SampleAfterValue": "100003",
787 "BriefDescription": "Cases when loads get true Block-on-Store blocking code preventing store forwarding.",
788 "CounterHTOff": "0,1,2,3,4,5,6,7"
789 },
790 {
791 "EventCode": "0x03",
792 "Counter": "0,1,2,3",
793 "UMask": "0x8",
794 "EventName": "LD_BLOCKS.NO_SR",
795 "SampleAfterValue": "100003",
796 "BriefDescription": "This event counts the number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
797 "CounterHTOff": "0,1,2,3,4,5,6,7"
798 },
799 {
800 "EventCode": "0x03",
801 "Counter": "0,1,2,3",
802 "UMask": "0x10",
803 "EventName": "LD_BLOCKS.ALL_BLOCK",
804 "SampleAfterValue": "100003",
805 "BriefDescription": "Number of cases where any load ends up with a valid block-code written to the load buffer (including blocks due to Memory Order Buffer (MOB), Data Cache Unit (DCU), TLB, but load has no DCU miss).",
806 "CounterHTOff": "0,1,2,3,4,5,6,7"
807 },
808 {
809 "PublicDescription": "Aliasing occurs when a load is issued after a store and their memory addresses are offset by 4K. This event counts the number of loads that aliased with a preceding store, resulting in an extended address check in the pipeline. The enhanced address check typically has a performance penalty of 5 cycles.",
810 "EventCode": "0x07",
811 "Counter": "0,1,2,3",
812 "UMask": "0x1",
813 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
814 "SampleAfterValue": "100003",
815 "BriefDescription": "False dependencies in MOB due to partial compare.",
816 "CounterHTOff": "0,1,2,3,4,5,6,7"
817 },
818 {
819 "EventCode": "0x07",
820 "Counter": "0,1,2,3",
821 "UMask": "0x8",
822 "EventName": "LD_BLOCKS_PARTIAL.ALL_STA_BLOCK",
823 "SampleAfterValue": "100003",
824 "BriefDescription": "This event counts the number of times that load operations are temporarily blocked because of older stores, with addresses that are not yet known. A load operation may incur more than one block of this type.",
825 "CounterHTOff": "0,1,2,3,4,5,6,7"
826 },
827 {
828 "EventCode": "0xB6",
829 "Counter": "0,1,2,3",
830 "UMask": "0x1",
831 "EventName": "AGU_BYPASS_CANCEL.COUNT",
832 "SampleAfterValue": "100003",
833 "BriefDescription": "This event counts executed load operations with all the following traits: 1. addressing of the format [base + offset], 2. the offset is between 1 and 2047, 3. the address specified in the base register is in one page and the address [base+offset] is in an.",
834 "CounterHTOff": "0,1,2,3,4,5,6,7"
835 },
836 {
837 "EventCode": "0x3C",
838 "Counter": "0,1,2,3",
839 "UMask": "0x1",
840 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
841 "SampleAfterValue": "2000003",
842 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate).",
843 "CounterHTOff": "0,1,2,3,4,5,6,7"
844 },
845 {
846 "EventCode": "0x3C",
847 "Counter": "0,1,2,3",
848 "UMask": "0x2",
849 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
850 "SampleAfterValue": "2000003",
851 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other is halted.",
852 "CounterHTOff": "0,1,2,3"
853 },
854 {
855 "EventCode": "0xA1",
856 "Counter": "0,1,2,3",
857 "UMask": "0x1",
858 "AnyThread": "1",
859 "EventName": "UOPS_DISPATCHED_PORT.PORT_0_CORE",
860 "SampleAfterValue": "2000003",
861 "BriefDescription": "Cycles per core when uops are dispatched to port 0.",
862 "CounterHTOff": "0,1,2,3,4,5,6,7"
863 },
864 {
865 "EventCode": "0xA1",
866 "Counter": "0,1,2,3",
867 "UMask": "0x2",
868 "AnyThread": "1",
869 "EventName": "UOPS_DISPATCHED_PORT.PORT_1_CORE",
870 "SampleAfterValue": "2000003",
871 "BriefDescription": "Cycles per core when uops are dispatched to port 1.",
872 "CounterHTOff": "0,1,2,3,4,5,6,7"
873 },
874 {
875 "EventCode": "0xA1",
876 "Counter": "0,1,2,3",
877 "UMask": "0x40",
878 "AnyThread": "1",
879 "EventName": "UOPS_DISPATCHED_PORT.PORT_4_CORE",
880 "SampleAfterValue": "2000003",
881 "BriefDescription": "Cycles per core when uops are dispatched to port 4.",
882 "CounterHTOff": "0,1,2,3,4,5,6,7"
883 },
884 {
885 "EventCode": "0xA1",
886 "Counter": "0,1,2,3",
887 "UMask": "0x80",
888 "AnyThread": "1",
889 "EventName": "UOPS_DISPATCHED_PORT.PORT_5_CORE",
890 "SampleAfterValue": "2000003",
891 "BriefDescription": "Cycles per core when uops are dispatched to port 5.",
892 "CounterHTOff": "0,1,2,3,4,5,6,7"
893 },
894 {
895 "EventCode": "0xA1",
896 "Counter": "0,1,2,3",
897 "UMask": "0xc",
898 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
899 "SampleAfterValue": "2000003",
900 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 2.",
901 "CounterHTOff": "0,1,2,3,4,5,6,7"
902 },
903 {
904 "EventCode": "0xA1",
905 "Counter": "0,1,2,3",
906 "UMask": "0x30",
907 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
908 "SampleAfterValue": "2000003",
909 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 3.",
910 "CounterHTOff": "0,1,2,3,4,5,6,7"
911 },
912 {
913 "EventCode": "0xA1",
914 "Counter": "0,1,2,3",
915 "UMask": "0xc",
916 "AnyThread": "1",
917 "EventName": "UOPS_DISPATCHED_PORT.PORT_2_CORE",
918 "SampleAfterValue": "2000003",
919 "BriefDescription": "Cycles per core when load or STA uops are dispatched to port 2.",
920 "CounterHTOff": "0,1,2,3,4,5,6,7"
921 },
922 {
923 "EventCode": "0xA1",
924 "Counter": "0,1,2,3",
925 "UMask": "0x30",
926 "AnyThread": "1",
927 "EventName": "UOPS_DISPATCHED_PORT.PORT_3_CORE",
928 "SampleAfterValue": "2000003",
929 "BriefDescription": "Cycles per core when load or STA uops are dispatched to port 3.",
930 "CounterHTOff": "0,1,2,3,4,5,6,7"
931 },
932 {
933 "PEBS": "2",
934 "EventCode": "0xC0",
935 "Counter": "1",
936 "UMask": "0x1",
937 "EventName": "INST_RETIRED.PREC_DIST",
938 "SampleAfterValue": "2000003",
939 "BriefDescription": "Instructions retired. (Precise Event - PEBS).",
940 "TakenAlone": "1",
941 "CounterHTOff": "1"
942 },
943 {
944 "EventCode": "0x5B",
945 "Counter": "0,1,2,3",
946 "UMask": "0xf",
947 "EventName": "RESOURCE_STALLS2.ALL_PRF_CONTROL",
948 "SampleAfterValue": "2000003",
949 "BriefDescription": "Resource stalls2 control structures full for physical registers.",
950 "CounterHTOff": "0,1,2,3,4,5,6,7"
951 },
952 {
953 "EventCode": "0x5B",
954 "Counter": "0,1,2,3",
955 "UMask": "0xc",
956 "EventName": "RESOURCE_STALLS2.ALL_FL_EMPTY",
957 "SampleAfterValue": "2000003",
958 "BriefDescription": "Cycles with either free list is empty.",
959 "CounterHTOff": "0,1,2,3,4,5,6,7"
960 },
961 {
962 "EventCode": "0xA2",
963 "Counter": "0,1,2,3",
964 "UMask": "0xe",
965 "EventName": "RESOURCE_STALLS.MEM_RS",
966 "SampleAfterValue": "2000003",
967 "BriefDescription": "Resource stalls due to memory buffers or Reservation Station (RS) being fully utilized.",
968 "CounterHTOff": "0,1,2,3,4,5,6,7"
969 },
970 {
971 "EventCode": "0xA2",
972 "Counter": "0,1,2,3",
973 "UMask": "0xf0",
974 "EventName": "RESOURCE_STALLS.OOO_RSRC",
975 "SampleAfterValue": "2000003",
976 "BriefDescription": "Resource stalls due to Rob being full, FCSW, MXCSR and OTHER.",
977 "CounterHTOff": "0,1,2,3,4,5,6,7"
978 },
979 {
980 "EventCode": "0x5B",
981 "Counter": "0,1,2,3",
982 "UMask": "0x4f",
983 "EventName": "RESOURCE_STALLS2.OOO_RSRC",
984 "SampleAfterValue": "2000003",
985 "BriefDescription": "Resource stalls out of order resources full.",
986 "CounterHTOff": "0,1,2,3,4,5,6,7"
987 },
988 {
989 "EventCode": "0xA2",
990 "Counter": "0,1,2,3",
991 "UMask": "0xa",
992 "EventName": "RESOURCE_STALLS.LB_SB",
993 "SampleAfterValue": "2000003",
994 "BriefDescription": "Resource stalls due to load or store buffers all being in use.",
995 "CounterHTOff": "0,1,2,3,4,5,6,7"
996 },
997 {
998 "EventCode": "0x0D",
999 "Counter": "0,1,2,3",
1000 "UMask": "0x3",
1001 "EventName": "INT_MISC.RECOVERY_CYCLES",
1002 "SampleAfterValue": "2000003",
1003 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...).",
1004 "CounterMask": "1",
1005 "CounterHTOff": "0,1,2,3,4,5,6,7"
1006 },
1007 {
1008 "PublicDescription": "This event counts the number of cycles spent executing performance-sensitive flags-merging uops. For example, shift CL (merge_arith_flags). For more details, See the Intel? 64 and IA-32 Architectures Optimization Reference Manual.",
1009 "EventCode": "0x59",
1010 "Counter": "0,1,2,3",
1011 "UMask": "0x20",
1012 "EventName": "PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP_CYCLES",
1013 "SampleAfterValue": "2000003",
1014 "BriefDescription": "Performance sensitive flags-merging uops added by Sandy Bridge u-arch.",
1015 "CounterMask": "1",
1016 "CounterHTOff": "0,1,2,3,4,5,6,7"
1017 },
1018 {
1019 "EventCode": "0x0D",
1020 "Counter": "0,1,2,3",
1021 "UMask": "0x3",
1022 "EdgeDetect": "1",
1023 "EventName": "INT_MISC.RECOVERY_STALLS_COUNT",
1024 "SampleAfterValue": "2000003",
1025 "BriefDescription": "Number of occurences waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...).",
1026 "CounterMask": "1",
1027 "CounterHTOff": "0,1,2,3,4,5,6,7"
1028 },
1029 {
1030 "EventCode": "0xE6",
1031 "Counter": "0,1,2,3",
1032 "UMask": "0x1f",
1033 "EventName": "BACLEARS.ANY",
1034 "SampleAfterValue": "100003",
1035 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1036 "CounterHTOff": "0,1,2,3,4,5,6,7"
1037 },
1038 {
1039 "EventCode": "0x88",
1040 "Counter": "0,1,2,3",
1041 "UMask": "0xff",
1042 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
1043 "SampleAfterValue": "200003",
1044 "BriefDescription": "Speculative and retired branches.",
1045 "CounterHTOff": "0,1,2,3,4,5,6,7"
1046 },
1047 {
1048 "EventCode": "0x89",
1049 "Counter": "0,1,2,3",
1050 "UMask": "0xff",
1051 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
1052 "SampleAfterValue": "200003",
1053 "BriefDescription": "Speculative and retired mispredicted macro conditional branches.",
1054 "CounterHTOff": "0,1,2,3,4,5,6,7"
1055 },
1056 {
1057 "EventCode": "0xC2",
1058 "Invert": "1",
1059 "Counter": "0,1,2,3",
1060 "UMask": "0x1",
1061 "EventName": "UOPS_RETIRED.CORE_STALL_CYCLES",
1062 "SampleAfterValue": "2000003",
1063 "BriefDescription": "Cycles without actually retired uops.",
1064 "CounterMask": "1",
1065 "CounterHTOff": "0,1,2,3"
1066 },
1067 {
1068 "EventCode": "0xA8",
1069 "Counter": "0,1,2,3",
1070 "UMask": "0x1",
1071 "EventName": "LSD.CYCLES_4_UOPS",
1072 "SampleAfterValue": "2000003",
1073 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1074 "CounterMask": "4",
1075 "CounterHTOff": "0,1,2,3,4,5,6,7"
1076 },
1077 {
1078 "EventCode": "0xc3",
1079 "Counter": "0,1,2,3",
1080 "UMask": "0x1",
1081 "EdgeDetect": "1",
1082 "EventName": "MACHINE_CLEARS.COUNT",
1083 "SampleAfterValue": "100003",
1084 "BriefDescription": "Number of machine clears (nukes) of any type.",
1085 "CounterMask": "1",
1086 "CounterHTOff": "0,1,2,3,4,5,6,7"
1087 },
1088 {
1089 "EventCode": "0x5E",
1090 "Invert": "1",
1091 "Counter": "0,1,2,3",
1092 "UMask": "0x1",
1093 "EdgeDetect": "1",
1094 "EventName": "RS_EVENTS.EMPTY_END",
1095 "SampleAfterValue": "2000003",
1096 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1097 "CounterMask": "1",
1098 "CounterHTOff": "0,1,2,3,4,5,6,7"
1099 },
1100 {
1101 "EventCode": "0x00",
1102 "Counter": "Fixed counter 2",
1103 "UMask": "0x2",
1104 "AnyThread": "1",
1105 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1106 "SampleAfterValue": "2000003",
1107 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1108 "CounterHTOff": "Fixed counter 2"
1109 },
1110 {
1111 "EventCode": "0x3C",
1112 "Counter": "0,1,2,3",
1113 "UMask": "0x0",
1114 "AnyThread": "1",
1115 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1116 "SampleAfterValue": "2000003",
1117 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1118 "CounterHTOff": "0,1,2,3,4,5,6,7"
1119 },
1120 {
1121 "EventCode": "0x3C",
1122 "Counter": "0,1,2,3",
1123 "UMask": "0x1",
1124 "AnyThread": "1",
1125 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1126 "SampleAfterValue": "2000003",
1127 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1128 "CounterHTOff": "0,1,2,3,4,5,6,7"
1129 },
1130 {
1131 "EventCode": "0x0D",
1132 "Counter": "0,1,2,3",
1133 "UMask": "0x3",
1134 "AnyThread": "1",
1135 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1136 "SampleAfterValue": "2000003",
1137 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1138 "CounterMask": "1",
1139 "CounterHTOff": "0,1,2,3,4,5,6,7"
1140 },
1141 {
1142 "EventCode": "0xB1",
1143 "Counter": "0,1,2,3",
1144 "UMask": "0x2",
1145 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1146 "SampleAfterValue": "2000003",
1147 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1148 "CounterMask": "1",
1149 "CounterHTOff": "0,1,2,3,4,5,6,7"
1150 },
1151 {
1152 "EventCode": "0xB1",
1153 "Counter": "0,1,2,3",
1154 "UMask": "0x2",
1155 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1156 "SampleAfterValue": "2000003",
1157 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1158 "CounterMask": "2",
1159 "CounterHTOff": "0,1,2,3,4,5,6,7"
1160 },
1161 {
1162 "EventCode": "0xB1",
1163 "Counter": "0,1,2,3",
1164 "UMask": "0x2",
1165 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1166 "SampleAfterValue": "2000003",
1167 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1168 "CounterMask": "3",
1169 "CounterHTOff": "0,1,2,3,4,5,6,7"
1170 },
1171 {
1172 "EventCode": "0xB1",
1173 "Counter": "0,1,2,3",
1174 "UMask": "0x2",
1175 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1176 "SampleAfterValue": "2000003",
1177 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1178 "CounterMask": "4",
1179 "CounterHTOff": "0,1,2,3,4,5,6,7"
1180 },
1181 {
1182 "EventCode": "0xB1",
1183 "Invert": "1",
1184 "Counter": "0,1,2,3",
1185 "UMask": "0x2",
1186 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1187 "SampleAfterValue": "2000003",
1188 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1189 "CounterHTOff": "0,1,2,3,4,5,6,7"
1190 },
1191 {
1192 "PublicDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1193 "EventCode": "0x3C",
1194 "Counter": "0,1,2,3",
1195 "UMask": "0x1",
1196 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1197 "SampleAfterValue": "2000003",
1198 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate).",
1199 "CounterHTOff": "0,1,2,3,4,5,6,7"
1200 },
1201 {
1202 "EventCode": "0x3C",
1203 "Counter": "0,1,2,3",
1204 "UMask": "0x1",
1205 "AnyThread": "1",
1206 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1207 "SampleAfterValue": "2000003",
1208 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1209 "CounterHTOff": "0,1,2,3,4,5,6,7"
1210 },
1211 {
1212 "EventCode": "0x3C",
1213 "Counter": "0,1,2,3",
1214 "UMask": "0x2",
1215 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1216 "SampleAfterValue": "2000003",
1217 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1218 "CounterHTOff": "0,1,2,3,4,5,6,7"
1219 }
1220] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/virtual-memory.json b/tools/perf/pmu-events/arch/x86/jaketown/virtual-memory.json
new file mode 100644
index 000000000000..a654ab771fce
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/virtual-memory.json
@@ -0,0 +1,149 @@
1[
2 {
3 "EventCode": "0xAE",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ITLB.ITLB_FLUSH",
7 "SampleAfterValue": "100007",
8 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0x4F",
13 "Counter": "0,1,2,3",
14 "UMask": "0x10",
15 "EventName": "EPT.WALK_CYCLES",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Cycle count for an Extended Page table walk. The Extended Page Directory cache is used by Virtual Machine operating systems while the guest operating systems use the standard TLB caches.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0x85",
22 "Counter": "0,1,2,3",
23 "UMask": "0x1",
24 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
25 "SampleAfterValue": "100003",
26 "BriefDescription": "Misses at all ITLB levels that cause page walks.",
27 "CounterHTOff": "0,1,2,3,4,5,6,7"
28 },
29 {
30 "EventCode": "0x85",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "ITLB_MISSES.WALK_COMPLETED",
34 "SampleAfterValue": "100003",
35 "BriefDescription": "Misses in all ITLB levels that cause completed page walks.",
36 "CounterHTOff": "0,1,2,3,4,5,6,7"
37 },
38 {
39 "PublicDescription": "This event count cycles when Page Miss Handler (PMH) is servicing page walks caused by ITLB misses.",
40 "EventCode": "0x85",
41 "Counter": "0,1,2,3",
42 "UMask": "0x4",
43 "EventName": "ITLB_MISSES.WALK_DURATION",
44 "SampleAfterValue": "2000003",
45 "BriefDescription": "Cycles when PMH is busy with page walks.",
46 "CounterHTOff": "0,1,2,3,4,5,6,7"
47 },
48 {
49 "EventCode": "0x85",
50 "Counter": "0,1,2,3",
51 "UMask": "0x10",
52 "EventName": "ITLB_MISSES.STLB_HIT",
53 "SampleAfterValue": "100003",
54 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks.",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "EventCode": "0x08",
59 "Counter": "0,1,2,3",
60 "UMask": "0x1",
61 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
62 "SampleAfterValue": "100003",
63 "BriefDescription": "Load misses in all DTLB levels that cause page walks.",
64 "CounterHTOff": "0,1,2,3,4,5,6,7"
65 },
66 {
67 "EventCode": "0x08",
68 "Counter": "0,1,2,3",
69 "UMask": "0x2",
70 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
71 "SampleAfterValue": "100003",
72 "BriefDescription": "Load misses at all DTLB levels that cause completed page walks.",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by DTLB load misses.",
77 "EventCode": "0x08",
78 "Counter": "0,1,2,3",
79 "UMask": "0x4",
80 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
81 "SampleAfterValue": "2000003",
82 "BriefDescription": "Cycles when PMH is busy with page walks.",
83 "CounterHTOff": "0,1,2,3,4,5,6,7"
84 },
85 {
86 "PublicDescription": "This event counts load operations that miss the first DTLB level but hit the second and do not cause any page walks. The penalty in this case is approximately 7 cycles.",
87 "EventCode": "0x08",
88 "Counter": "0,1,2,3",
89 "UMask": "0x10",
90 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
91 "SampleAfterValue": "100003",
92 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks.",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "EventCode": "0x49",
97 "Counter": "0,1,2,3",
98 "UMask": "0x1",
99 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
100 "SampleAfterValue": "100003",
101 "BriefDescription": "Store misses in all DTLB levels that cause page walks.",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0x49",
106 "Counter": "0,1,2,3",
107 "UMask": "0x2",
108 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
109 "SampleAfterValue": "100003",
110 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks.",
111 "CounterHTOff": "0,1,2,3,4,5,6,7"
112 },
113 {
114 "EventCode": "0x49",
115 "Counter": "0,1,2,3",
116 "UMask": "0x4",
117 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
118 "SampleAfterValue": "2000003",
119 "BriefDescription": "Cycles when PMH is busy with page walks.",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "EventCode": "0x49",
124 "Counter": "0,1,2,3",
125 "UMask": "0x10",
126 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
127 "SampleAfterValue": "100003",
128 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
129 "CounterHTOff": "0,1,2,3,4,5,6,7"
130 },
131 {
132 "EventCode": "0xBD",
133 "Counter": "0,1,2,3",
134 "UMask": "0x1",
135 "EventName": "TLB_FLUSH.DTLB_THREAD",
136 "SampleAfterValue": "100007",
137 "BriefDescription": "DTLB flush attempts of the thread-specific entries.",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0xBD",
142 "Counter": "0,1,2,3",
143 "UMask": "0x20",
144 "EventName": "TLB_FLUSH.STLB_ANY",
145 "SampleAfterValue": "100007",
146 "BriefDescription": "STLB flush attempts.",
147 "CounterHTOff": "0,1,2,3,4,5,6,7"
148 }
149] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/knightslanding/cache.json b/tools/perf/pmu-events/arch/x86/knightslanding/cache.json
new file mode 100644
index 000000000000..88ba5994b994
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/knightslanding/cache.json
@@ -0,0 +1,2305 @@
1[
2 {
3 "EventCode": "0x30",
4 "Counter": "0,1",
5 "UMask": "0x0",
6 "EventName": "L2_REQUESTS_REJECT.ALL",
7 "SampleAfterValue": "200003",
8 "BriefDescription": "Counts the number of MEC requests from the L2Q that reference a cache line (cacheable requests) exlcuding SW prefetches filling only to L2 cache and L1 evictions (automatically exlcudes L2HWP, UC, WC) that were rejected - Multiple repeated rejects should be counted multiple times"
9 },
10 {
11 "EventCode": "0x31",
12 "Counter": "0,1",
13 "UMask": "0x0",
14 "EventName": "CORE_REJECT_L2Q.ALL",
15 "SampleAfterValue": "200003",
16 "BriefDescription": "Counts the number of MEC requests that were not accepted into the L2Q because of any L2 queue reject condition. There is no concept of at-ret here. It might include requests due to instructions in the speculative path."
17 },
18 {
19 "EventCode": "0x2E",
20 "Counter": "0,1",
21 "UMask": "0x4f",
22 "EventName": "L2_REQUESTS.REFERENCE",
23 "SampleAfterValue": "200003",
24 "BriefDescription": "Counts the total number of L2 cache references."
25 },
26 {
27 "EventCode": "0x2E",
28 "Counter": "0,1",
29 "UMask": "0x41",
30 "EventName": "L2_REQUESTS.MISS",
31 "SampleAfterValue": "200003",
32 "BriefDescription": "Counts the number of L2 cache misses"
33 },
34 {
35 "PublicDescription": "This event counts the number of core cycles the fetch stalls because of an icache miss. This is a cumulative count of cycles the NIP stalled for all icache misses. ",
36 "EventCode": "0x86",
37 "Counter": "0,1",
38 "UMask": "0x4",
39 "EventName": "FETCH_STALL.ICACHE_FILL_PENDING_CYCLES",
40 "SampleAfterValue": "200003",
41 "BriefDescription": "Counts the number of core cycles the fetch stalls because of an icache miss. This is a cummulative count of core cycles the fetch stalled for all icache misses. "
42 },
43 {
44 "PublicDescription": "This event counts the number of load micro-ops retired that miss in L1 Data cache. Note that prefetch misses will not be counted. ",
45 "EventCode": "0x04",
46 "Counter": "0,1",
47 "UMask": "0x1",
48 "EventName": "MEM_UOPS_RETIRED.L1_MISS_LOADS",
49 "SampleAfterValue": "200003",
50 "BriefDescription": "Counts the number of load micro-ops retired that miss in L1 D cache"
51 },
52 {
53 "PEBS": "1",
54 "EventCode": "0x04",
55 "Counter": "0,1",
56 "UMask": "0x2",
57 "EventName": "MEM_UOPS_RETIRED.L2_HIT_LOADS",
58 "SampleAfterValue": "200003",
59 "BriefDescription": "Counts the number of load micro-ops retired that hit in the L2",
60 "Data_LA": "1"
61 },
62 {
63 "PEBS": "1",
64 "EventCode": "0x04",
65 "Counter": "0,1",
66 "UMask": "0x4",
67 "EventName": "MEM_UOPS_RETIRED.L2_MISS_LOADS",
68 "SampleAfterValue": "100007",
69 "BriefDescription": "Counts the number of load micro-ops retired that miss in the L2",
70 "Data_LA": "1"
71 },
72 {
73 "EventCode": "0x04",
74 "Counter": "0,1",
75 "UMask": "0x10",
76 "EventName": "MEM_UOPS_RETIRED.UTLB_MISS_LOADS",
77 "SampleAfterValue": "200003",
78 "BriefDescription": "Counts the number of load micro-ops retired that caused micro TLB miss"
79 },
80 {
81 "PEBS": "1",
82 "EventCode": "0x04",
83 "Counter": "0,1",
84 "UMask": "0x20",
85 "EventName": "MEM_UOPS_RETIRED.HITM",
86 "SampleAfterValue": "200003",
87 "BriefDescription": "Counts the loads retired that get the data from the other core in the same tile in M state",
88 "Data_LA": "1"
89 },
90 {
91 "PublicDescription": "This event counts the number of load micro-ops retired.",
92 "EventCode": "0x04",
93 "Counter": "0,1",
94 "UMask": "0x40",
95 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
96 "SampleAfterValue": "200003",
97 "BriefDescription": "Counts all the load micro-ops retired"
98 },
99 {
100 "PublicDescription": "This event counts the number of store micro-ops retired.",
101 "EventCode": "0x04",
102 "Counter": "0,1",
103 "UMask": "0x80",
104 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
105 "SampleAfterValue": "200003",
106 "BriefDescription": "Counts all the store micro-ops retired"
107 },
108 {
109 "EventCode": "0xB7",
110 "Counter": "0,1",
111 "UMask": "0x1",
112 "EventName": "OFFCORE_RESPONSE",
113 "SampleAfterValue": "100007",
114 "BriefDescription": "Counts the matrix events specified by MSR_OFFCORE_RESPx"
115 },
116 {
117 "EventCode": "0xB7",
118 "MSRValue": "0x4000000070 ",
119 "Counter": "0,1",
120 "UMask": "0x1",
121 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.OUTSTANDING",
122 "MSRIndex": "0x1a6",
123 "SampleAfterValue": "100007",
124 "BriefDescription": "Counts any Prefetch requests that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
125 "Offcore": "1"
126 },
127 {
128 "EventCode": "0xB7",
129 "MSRValue": "0x1000400070 ",
130 "Counter": "0,1",
131 "UMask": "0x1",
132 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_FAR_TILE_M",
133 "MSRIndex": "0x1a6,0x1a7",
134 "SampleAfterValue": "100007",
135 "BriefDescription": "Counts any Prefetch requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
136 "Offcore": "1"
137 },
138 {
139 "EventCode": "0xB7",
140 "MSRValue": "0x0800400070 ",
141 "Counter": "0,1",
142 "UMask": "0x1",
143 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_FAR_TILE_E_F",
144 "MSRIndex": "0x1a6,0x1a7",
145 "SampleAfterValue": "100007",
146 "BriefDescription": "Counts any Prefetch requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
147 "Offcore": "1"
148 },
149 {
150 "EventCode": "0xB7",
151 "MSRValue": "0x1000080070 ",
152 "Counter": "0,1",
153 "UMask": "0x1",
154 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_NEAR_TILE_M",
155 "MSRIndex": "0x1a6,0x1a7",
156 "SampleAfterValue": "100007",
157 "BriefDescription": "Counts any Prefetch requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
158 "Offcore": "1"
159 },
160 {
161 "EventCode": "0xB7",
162 "MSRValue": "0x0800080070 ",
163 "Counter": "0,1",
164 "UMask": "0x1",
165 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_NEAR_TILE_E_F",
166 "MSRIndex": "0x1a6,0x1a7",
167 "SampleAfterValue": "100007",
168 "BriefDescription": "Counts any Prefetch requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
169 "Offcore": "1"
170 },
171 {
172 "EventCode": "0xB7",
173 "MSRValue": "0x0000010070 ",
174 "Counter": "0,1",
175 "UMask": "0x1",
176 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.ANY_RESPONSE",
177 "MSRIndex": "0x1a6,0x1a7",
178 "SampleAfterValue": "100007",
179 "BriefDescription": "Counts any Prefetch requests that accounts for any response",
180 "Offcore": "1"
181 },
182 {
183 "EventCode": "0xB7",
184 "MSRValue": "0x40000032f7 ",
185 "Counter": "0,1",
186 "UMask": "0x1",
187 "EventName": "OFFCORE_RESPONSE.ANY_READ.OUTSTANDING",
188 "MSRIndex": "0x1a6",
189 "SampleAfterValue": "100007",
190 "BriefDescription": "Counts any Read request that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
191 "Offcore": "1"
192 },
193 {
194 "EventCode": "0xB7",
195 "MSRValue": "0x10004032f7 ",
196 "Counter": "0,1",
197 "UMask": "0x1",
198 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_FAR_TILE_M",
199 "MSRIndex": "0x1a6,0x1a7",
200 "SampleAfterValue": "100007",
201 "BriefDescription": "Counts any Read request that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
202 "Offcore": "1"
203 },
204 {
205 "EventCode": "0xB7",
206 "MSRValue": "0x08004032f7 ",
207 "Counter": "0,1",
208 "UMask": "0x1",
209 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_FAR_TILE_E_F",
210 "MSRIndex": "0x1a6,0x1a7",
211 "SampleAfterValue": "100007",
212 "BriefDescription": "Counts any Read request that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
213 "Offcore": "1"
214 },
215 {
216 "EventCode": "0xB7",
217 "MSRValue": "0x10000832f7 ",
218 "Counter": "0,1",
219 "UMask": "0x1",
220 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_NEAR_TILE_M",
221 "MSRIndex": "0x1a6,0x1a7",
222 "SampleAfterValue": "100007",
223 "BriefDescription": "Counts any Read request that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
224 "Offcore": "1"
225 },
226 {
227 "EventCode": "0xB7",
228 "MSRValue": "0x08000832f7 ",
229 "Counter": "0,1",
230 "UMask": "0x1",
231 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_NEAR_TILE_E_F",
232 "MSRIndex": "0x1a6,0x1a7",
233 "SampleAfterValue": "100007",
234 "BriefDescription": "Counts any Read request that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
235 "Offcore": "1"
236 },
237 {
238 "EventCode": "0xB7",
239 "MSRValue": "0x00000132f7 ",
240 "Counter": "0,1",
241 "UMask": "0x1",
242 "EventName": "OFFCORE_RESPONSE.ANY_READ.ANY_RESPONSE",
243 "MSRIndex": "0x1a6,0x1a7",
244 "SampleAfterValue": "100007",
245 "BriefDescription": "Counts any Read request that accounts for any response",
246 "Offcore": "1"
247 },
248 {
249 "EventCode": "0xB7",
250 "MSRValue": "0x4000000044 ",
251 "Counter": "0,1",
252 "UMask": "0x1",
253 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.OUTSTANDING",
254 "MSRIndex": "0x1a6",
255 "SampleAfterValue": "100007",
256 "BriefDescription": "Counts Demand code reads and prefetch code read requests that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
257 "Offcore": "1"
258 },
259 {
260 "EventCode": "0xB7",
261 "MSRValue": "0x1000400044 ",
262 "Counter": "0,1",
263 "UMask": "0x1",
264 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_FAR_TILE_M",
265 "MSRIndex": "0x1a6,0x1a7",
266 "SampleAfterValue": "100007",
267 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
268 "Offcore": "1"
269 },
270 {
271 "EventCode": "0xB7",
272 "MSRValue": "0x0800400044 ",
273 "Counter": "0,1",
274 "UMask": "0x1",
275 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_FAR_TILE_E_F",
276 "MSRIndex": "0x1a6,0x1a7",
277 "SampleAfterValue": "100007",
278 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
279 "Offcore": "1"
280 },
281 {
282 "EventCode": "0xB7",
283 "MSRValue": "0x1000080044 ",
284 "Counter": "0,1",
285 "UMask": "0x1",
286 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_NEAR_TILE_M",
287 "MSRIndex": "0x1a6,0x1a7",
288 "SampleAfterValue": "100007",
289 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
290 "Offcore": "1"
291 },
292 {
293 "EventCode": "0xB7",
294 "MSRValue": "0x0800080044 ",
295 "Counter": "0,1",
296 "UMask": "0x1",
297 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_NEAR_TILE_E_F",
298 "MSRIndex": "0x1a6,0x1a7",
299 "SampleAfterValue": "100007",
300 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
301 "Offcore": "1"
302 },
303 {
304 "EventCode": "0xB7",
305 "MSRValue": "0x0000010044 ",
306 "Counter": "0,1",
307 "UMask": "0x1",
308 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.ANY_RESPONSE",
309 "MSRIndex": "0x1a6,0x1a7",
310 "SampleAfterValue": "100007",
311 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for any response",
312 "Offcore": "1"
313 },
314 {
315 "EventCode": "0xB7",
316 "MSRValue": "0x4000000022 ",
317 "Counter": "0,1",
318 "UMask": "0x1",
319 "EventName": "OFFCORE_RESPONSE.ANY_RFO.OUTSTANDING",
320 "MSRIndex": "0x1a6",
321 "SampleAfterValue": "100007",
322 "BriefDescription": "Counts Demand cacheable data write requests that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
323 "Offcore": "1"
324 },
325 {
326 "EventCode": "0xB7",
327 "MSRValue": "0x1000400022 ",
328 "Counter": "0,1",
329 "UMask": "0x1",
330 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_FAR_TILE_M",
331 "MSRIndex": "0x1a6,0x1a7",
332 "SampleAfterValue": "100007",
333 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
334 "Offcore": "1"
335 },
336 {
337 "EventCode": "0xB7",
338 "MSRValue": "0x0800400022 ",
339 "Counter": "0,1",
340 "UMask": "0x1",
341 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_FAR_TILE_E_F",
342 "MSRIndex": "0x1a6,0x1a7",
343 "SampleAfterValue": "100007",
344 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
345 "Offcore": "1"
346 },
347 {
348 "EventCode": "0xB7",
349 "MSRValue": "0x1000080022 ",
350 "Counter": "0,1",
351 "UMask": "0x1",
352 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_NEAR_TILE_M",
353 "MSRIndex": "0x1a6,0x1a7",
354 "SampleAfterValue": "100007",
355 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
356 "Offcore": "1"
357 },
358 {
359 "EventCode": "0xB7",
360 "MSRValue": "0x0800080022 ",
361 "Counter": "0,1",
362 "UMask": "0x1",
363 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_NEAR_TILE_E_F",
364 "MSRIndex": "0x1a6,0x1a7",
365 "SampleAfterValue": "100007",
366 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
367 "Offcore": "1"
368 },
369 {
370 "EventCode": "0xB7",
371 "MSRValue": "0x0000010022 ",
372 "Counter": "0,1",
373 "UMask": "0x1",
374 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_RESPONSE",
375 "MSRIndex": "0x1a6,0x1a7",
376 "SampleAfterValue": "100007",
377 "BriefDescription": "Counts Demand cacheable data write requests that accounts for any response",
378 "Offcore": "1"
379 },
380 {
381 "EventCode": "0xB7",
382 "MSRValue": "0x4000003091 ",
383 "Counter": "0,1",
384 "UMask": "0x1",
385 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.OUTSTANDING",
386 "MSRIndex": "0x1a6",
387 "SampleAfterValue": "100007",
388 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
389 "Offcore": "1"
390 },
391 {
392 "EventCode": "0xB7",
393 "MSRValue": "0x1000403091 ",
394 "Counter": "0,1",
395 "UMask": "0x1",
396 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_FAR_TILE_M",
397 "MSRIndex": "0x1a6,0x1a7",
398 "SampleAfterValue": "100007",
399 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
400 "Offcore": "1"
401 },
402 {
403 "EventCode": "0xB7",
404 "MSRValue": "0x0800403091 ",
405 "Counter": "0,1",
406 "UMask": "0x1",
407 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_FAR_TILE_E_F",
408 "MSRIndex": "0x1a6,0x1a7",
409 "SampleAfterValue": "100007",
410 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
411 "Offcore": "1"
412 },
413 {
414 "EventCode": "0xB7",
415 "MSRValue": "0x1000083091 ",
416 "Counter": "0,1",
417 "UMask": "0x1",
418 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_NEAR_TILE_M",
419 "MSRIndex": "0x1a6,0x1a7",
420 "SampleAfterValue": "100007",
421 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
422 "Offcore": "1"
423 },
424 {
425 "EventCode": "0xB7",
426 "MSRValue": "0x0800083091 ",
427 "Counter": "0,1",
428 "UMask": "0x1",
429 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_NEAR_TILE_E_F",
430 "MSRIndex": "0x1a6,0x1a7",
431 "SampleAfterValue": "100007",
432 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
433 "Offcore": "1"
434 },
435 {
436 "EventCode": "0xB7",
437 "MSRValue": "0x0000013091 ",
438 "Counter": "0,1",
439 "UMask": "0x1",
440 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.ANY_RESPONSE",
441 "MSRIndex": "0x1a6,0x1a7",
442 "SampleAfterValue": "100007",
443 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for any response",
444 "Offcore": "1"
445 },
446 {
447 "EventCode": "0xB7",
448 "MSRValue": "0x4000008000 ",
449 "Counter": "0,1",
450 "UMask": "0x1",
451 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.OUTSTANDING",
452 "MSRIndex": "0x1a6",
453 "SampleAfterValue": "100007",
454 "BriefDescription": "Counts any request that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
455 "Offcore": "1"
456 },
457 {
458 "EventCode": "0xB7",
459 "MSRValue": "0x1000408000 ",
460 "Counter": "0,1",
461 "UMask": "0x1",
462 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_FAR_TILE_M",
463 "MSRIndex": "0x1a6,0x1a7",
464 "SampleAfterValue": "100007",
465 "BriefDescription": "Counts any request that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
466 "Offcore": "1"
467 },
468 {
469 "EventCode": "0xB7",
470 "MSRValue": "0x0800408000 ",
471 "Counter": "0,1",
472 "UMask": "0x1",
473 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_FAR_TILE_E_F",
474 "MSRIndex": "0x1a6,0x1a7",
475 "SampleAfterValue": "100007",
476 "BriefDescription": "Counts any request that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
477 "Offcore": "1"
478 },
479 {
480 "EventCode": "0xB7",
481 "MSRValue": "0x1000088000 ",
482 "Counter": "0,1",
483 "UMask": "0x1",
484 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_NEAR_TILE_M",
485 "MSRIndex": "0x1a6,0x1a7",
486 "SampleAfterValue": "100007",
487 "BriefDescription": "Counts any request that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
488 "Offcore": "1"
489 },
490 {
491 "EventCode": "0xB7",
492 "MSRValue": "0x0800088000 ",
493 "Counter": "0,1",
494 "UMask": "0x1",
495 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_NEAR_TILE_E_F",
496 "MSRIndex": "0x1a6,0x1a7",
497 "SampleAfterValue": "100007",
498 "BriefDescription": "Counts any request that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
499 "Offcore": "1"
500 },
501 {
502 "EventCode": "0xB7",
503 "MSRValue": "0x0000018000 ",
504 "Counter": "0,1",
505 "UMask": "0x1",
506 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_RESPONSE",
507 "MSRIndex": "0x1a6,0x1a7",
508 "SampleAfterValue": "100007",
509 "BriefDescription": "Counts any request that accounts for any response",
510 "Offcore": "1"
511 },
512 {
513 "EventCode": "0xB7",
514 "MSRValue": "0x0000014800 ",
515 "Counter": "0,1",
516 "UMask": "0x1",
517 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.ANY_RESPONSE",
518 "MSRIndex": "0x1a7",
519 "SampleAfterValue": "100007",
520 "BriefDescription": "Counts all streaming stores (WC and should be programmed on PMC1) that accounts for any response",
521 "Offcore": "1"
522 },
523 {
524 "EventCode": "0xB7",
525 "MSRValue": "0x0000014000 ",
526 "Counter": "0,1",
527 "UMask": "0x1",
528 "EventName": "OFFCORE_RESPONSE.PARTIAL_STREAMING_STORES.ANY_RESPONSE",
529 "MSRIndex": "0x1a7",
530 "SampleAfterValue": "100007",
531 "BriefDescription": "Counts Partial streaming stores (WC and should be programmed on PMC1) that accounts for any response",
532 "Offcore": "1"
533 },
534 {
535 "EventCode": "0xB7",
536 "MSRValue": "0x4000002000 ",
537 "Counter": "0,1",
538 "UMask": "0x1",
539 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.OUTSTANDING",
540 "MSRIndex": "0x1a6",
541 "SampleAfterValue": "100007",
542 "BriefDescription": "Counts L1 data HW prefetches that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
543 "Offcore": "1"
544 },
545 {
546 "EventCode": "0xB7",
547 "MSRValue": "0x1000402000 ",
548 "Counter": "0,1",
549 "UMask": "0x1",
550 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_FAR_TILE_M",
551 "MSRIndex": "0x1a6,0x1a7",
552 "SampleAfterValue": "100007",
553 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
554 "Offcore": "1"
555 },
556 {
557 "EventCode": "0xB7",
558 "MSRValue": "0x0800402000 ",
559 "Counter": "0,1",
560 "UMask": "0x1",
561 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_FAR_TILE_E_F",
562 "MSRIndex": "0x1a6,0x1a7",
563 "SampleAfterValue": "100007",
564 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
565 "Offcore": "1"
566 },
567 {
568 "EventCode": "0xB7",
569 "MSRValue": "0x1000082000 ",
570 "Counter": "0,1",
571 "UMask": "0x1",
572 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_NEAR_TILE_M",
573 "MSRIndex": "0x1a6,0x1a7",
574 "SampleAfterValue": "100007",
575 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
576 "Offcore": "1"
577 },
578 {
579 "EventCode": "0xB7",
580 "MSRValue": "0x0800082000 ",
581 "Counter": "0,1",
582 "UMask": "0x1",
583 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_NEAR_TILE_E_F",
584 "MSRIndex": "0x1a6,0x1a7",
585 "SampleAfterValue": "100007",
586 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
587 "Offcore": "1"
588 },
589 {
590 "EventCode": "0xB7",
591 "MSRValue": "0x0000012000 ",
592 "Counter": "0,1",
593 "UMask": "0x1",
594 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.ANY_RESPONSE",
595 "MSRIndex": "0x1a6,0x1a7",
596 "SampleAfterValue": "100007",
597 "BriefDescription": "Counts L1 data HW prefetches that accounts for any response",
598 "Offcore": "1"
599 },
600 {
601 "EventCode": "0xB7",
602 "MSRValue": "0x4000001000 ",
603 "Counter": "0,1",
604 "UMask": "0x1",
605 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.OUTSTANDING",
606 "MSRIndex": "0x1a6",
607 "SampleAfterValue": "100007",
608 "BriefDescription": "Counts Software Prefetches that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
609 "Offcore": "1"
610 },
611 {
612 "EventCode": "0xB7",
613 "MSRValue": "0x1000401000 ",
614 "Counter": "0,1",
615 "UMask": "0x1",
616 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_FAR_TILE_M",
617 "MSRIndex": "0x1a6,0x1a7",
618 "SampleAfterValue": "100007",
619 "BriefDescription": "Counts Software Prefetches that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
620 "Offcore": "1"
621 },
622 {
623 "EventCode": "0xB7",
624 "MSRValue": "0x0800401000 ",
625 "Counter": "0,1",
626 "UMask": "0x1",
627 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_FAR_TILE_E_F",
628 "MSRIndex": "0x1a6,0x1a7",
629 "SampleAfterValue": "100007",
630 "BriefDescription": "Counts Software Prefetches that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
631 "Offcore": "1"
632 },
633 {
634 "EventCode": "0xB7",
635 "MSRValue": "0x1000081000 ",
636 "Counter": "0,1",
637 "UMask": "0x1",
638 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_NEAR_TILE_M",
639 "MSRIndex": "0x1a6,0x1a7",
640 "SampleAfterValue": "100007",
641 "BriefDescription": "Counts Software Prefetches that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
642 "Offcore": "1"
643 },
644 {
645 "EventCode": "0xB7",
646 "MSRValue": "0x0800081000 ",
647 "Counter": "0,1",
648 "UMask": "0x1",
649 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_NEAR_TILE_E_F",
650 "MSRIndex": "0x1a6,0x1a7",
651 "SampleAfterValue": "100007",
652 "BriefDescription": "Counts Software Prefetches that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
653 "Offcore": "1"
654 },
655 {
656 "EventCode": "0xB7",
657 "MSRValue": "0x0000011000 ",
658 "Counter": "0,1",
659 "UMask": "0x1",
660 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.ANY_RESPONSE",
661 "MSRIndex": "0x1a6,0x1a7",
662 "SampleAfterValue": "100007",
663 "BriefDescription": "Counts Software Prefetches that accounts for any response",
664 "Offcore": "1"
665 },
666 {
667 "EventCode": "0xB7",
668 "MSRValue": "0x0000010800 ",
669 "Counter": "0,1",
670 "UMask": "0x1",
671 "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.ANY_RESPONSE",
672 "MSRIndex": "0x1a6,0x1a7",
673 "SampleAfterValue": "100007",
674 "BriefDescription": "Counts Full streaming stores (WC and should be programmed on PMC1) that accounts for any response",
675 "Offcore": "1"
676 },
677 {
678 "EventCode": "0xB7",
679 "MSRValue": "0x4000000400 ",
680 "Counter": "0,1",
681 "UMask": "0x1",
682 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.OUTSTANDING",
683 "MSRIndex": "0x1a6",
684 "SampleAfterValue": "100007",
685 "BriefDescription": "Counts Bus locks and split lock requests that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
686 "Offcore": "1"
687 },
688 {
689 "EventCode": "0xB7",
690 "MSRValue": "0x1000400400 ",
691 "Counter": "0,1",
692 "UMask": "0x1",
693 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_FAR_TILE_M",
694 "MSRIndex": "0x1a6,0x1a7",
695 "SampleAfterValue": "100007",
696 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
697 "Offcore": "1"
698 },
699 {
700 "EventCode": "0xB7",
701 "MSRValue": "0x0800400400 ",
702 "Counter": "0,1",
703 "UMask": "0x1",
704 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_FAR_TILE_E_F",
705 "MSRIndex": "0x1a6,0x1a7",
706 "SampleAfterValue": "100007",
707 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
708 "Offcore": "1"
709 },
710 {
711 "EventCode": "0xB7",
712 "MSRValue": "0x1000080400 ",
713 "Counter": "0,1",
714 "UMask": "0x1",
715 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_NEAR_TILE_M",
716 "MSRIndex": "0x1a6,0x1a7",
717 "SampleAfterValue": "100007",
718 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
719 "Offcore": "1"
720 },
721 {
722 "EventCode": "0xB7",
723 "MSRValue": "0x0800080400 ",
724 "Counter": "0,1",
725 "UMask": "0x1",
726 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_NEAR_TILE_E_F",
727 "MSRIndex": "0x1a6,0x1a7",
728 "SampleAfterValue": "100007",
729 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
730 "Offcore": "1"
731 },
732 {
733 "EventCode": "0xB7",
734 "MSRValue": "0x0000010400 ",
735 "Counter": "0,1",
736 "UMask": "0x1",
737 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.ANY_RESPONSE",
738 "MSRIndex": "0x1a6,0x1a7",
739 "SampleAfterValue": "100007",
740 "BriefDescription": "Counts Bus locks and split lock requests that accounts for any response",
741 "Offcore": "1"
742 },
743 {
744 "EventCode": "0xB7",
745 "MSRValue": "0x4000000200 ",
746 "Counter": "0,1",
747 "UMask": "0x1",
748 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.OUTSTANDING",
749 "MSRIndex": "0x1a6",
750 "SampleAfterValue": "100007",
751 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
752 "Offcore": "1"
753 },
754 {
755 "EventCode": "0xB7",
756 "MSRValue": "0x1000400200 ",
757 "Counter": "0,1",
758 "UMask": "0x1",
759 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_FAR_TILE_M",
760 "MSRIndex": "0x1a6,0x1a7",
761 "SampleAfterValue": "100007",
762 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
763 "Offcore": "1"
764 },
765 {
766 "EventCode": "0xB7",
767 "MSRValue": "0x0800400200 ",
768 "Counter": "0,1",
769 "UMask": "0x1",
770 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_FAR_TILE_E_F",
771 "MSRIndex": "0x1a6,0x1a7",
772 "SampleAfterValue": "100007",
773 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
774 "Offcore": "1"
775 },
776 {
777 "EventCode": "0xB7",
778 "MSRValue": "0x1000080200 ",
779 "Counter": "0,1",
780 "UMask": "0x1",
781 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_NEAR_TILE_M",
782 "MSRIndex": "0x1a6,0x1a7",
783 "SampleAfterValue": "100007",
784 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
785 "Offcore": "1"
786 },
787 {
788 "EventCode": "0xB7",
789 "MSRValue": "0x0800080200 ",
790 "Counter": "0,1",
791 "UMask": "0x1",
792 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_NEAR_TILE_E_F",
793 "MSRIndex": "0x1a6,0x1a7",
794 "SampleAfterValue": "100007",
795 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
796 "Offcore": "1"
797 },
798 {
799 "EventCode": "0xB7",
800 "MSRValue": "0x0000010200 ",
801 "Counter": "0,1",
802 "UMask": "0x1",
803 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.ANY_RESPONSE",
804 "MSRIndex": "0x1a6,0x1a7",
805 "SampleAfterValue": "100007",
806 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for any response",
807 "Offcore": "1"
808 },
809 {
810 "EventCode": "0xB7",
811 "MSRValue": "0x1000400100 ",
812 "Counter": "0,1",
813 "UMask": "0x1",
814 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_FAR_TILE_M",
815 "MSRIndex": "0x1a7",
816 "SampleAfterValue": "100007",
817 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
818 "Offcore": "1"
819 },
820 {
821 "EventCode": "0xB7",
822 "MSRValue": "0x0800400100 ",
823 "Counter": "0,1",
824 "UMask": "0x1",
825 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_FAR_TILE_E_F",
826 "MSRIndex": "0x1a7",
827 "SampleAfterValue": "100007",
828 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
829 "Offcore": "1"
830 },
831 {
832 "EventCode": "0xB7",
833 "MSRValue": "0x1000080100 ",
834 "Counter": "0,1",
835 "UMask": "0x1",
836 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_NEAR_TILE_M",
837 "MSRIndex": "0x1a7",
838 "SampleAfterValue": "100007",
839 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
840 "Offcore": "1"
841 },
842 {
843 "EventCode": "0xB7",
844 "MSRValue": "0x0800080100 ",
845 "Counter": "0,1",
846 "UMask": "0x1",
847 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_NEAR_TILE_E_F",
848 "MSRIndex": "0x1a7",
849 "SampleAfterValue": "100007",
850 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
851 "Offcore": "1"
852 },
853 {
854 "EventCode": "0xB7",
855 "MSRValue": "0x0000010100 ",
856 "Counter": "0,1",
857 "UMask": "0x1",
858 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.ANY_RESPONSE",
859 "MSRIndex": "0x1a7",
860 "SampleAfterValue": "100007",
861 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for any response",
862 "Offcore": "1"
863 },
864 {
865 "EventCode": "0xB7",
866 "MSRValue": "0x4000000080 ",
867 "Counter": "0,1",
868 "UMask": "0x1",
869 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.OUTSTANDING",
870 "MSRIndex": "0x1a6",
871 "SampleAfterValue": "100007",
872 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
873 "Offcore": "1"
874 },
875 {
876 "EventCode": "0xB7",
877 "MSRValue": "0x1000400080 ",
878 "Counter": "0,1",
879 "UMask": "0x1",
880 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_FAR_TILE_M",
881 "MSRIndex": "0x1a6,0x1a7",
882 "SampleAfterValue": "100007",
883 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
884 "Offcore": "1"
885 },
886 {
887 "EventCode": "0xB7",
888 "MSRValue": "0x0800400080 ",
889 "Counter": "0,1",
890 "UMask": "0x1",
891 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_FAR_TILE_E_F",
892 "MSRIndex": "0x1a6,0x1a7",
893 "SampleAfterValue": "100007",
894 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
895 "Offcore": "1"
896 },
897 {
898 "EventCode": "0xB7",
899 "MSRValue": "0x1000080080 ",
900 "Counter": "0,1",
901 "UMask": "0x1",
902 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_NEAR_TILE_M",
903 "MSRIndex": "0x1a6,0x1a7",
904 "SampleAfterValue": "100007",
905 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
906 "Offcore": "1"
907 },
908 {
909 "EventCode": "0xB7",
910 "MSRValue": "0x0800080080 ",
911 "Counter": "0,1",
912 "UMask": "0x1",
913 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_NEAR_TILE_E_F",
914 "MSRIndex": "0x1a6,0x1a7",
915 "SampleAfterValue": "100007",
916 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
917 "Offcore": "1"
918 },
919 {
920 "EventCode": "0xB7",
921 "MSRValue": "0x0000010080 ",
922 "Counter": "0,1",
923 "UMask": "0x1",
924 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.ANY_RESPONSE",
925 "MSRIndex": "0x1a6,0x1a7",
926 "SampleAfterValue": "100007",
927 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for any response",
928 "Offcore": "1"
929 },
930 {
931 "EventCode": "0xB7",
932 "MSRValue": "0x4000000040 ",
933 "Counter": "0,1",
934 "UMask": "0x1",
935 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.OUTSTANDING",
936 "MSRIndex": "0x1a6",
937 "SampleAfterValue": "100007",
938 "BriefDescription": "Counts L2 code HW prefetches that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
939 "Offcore": "1"
940 },
941 {
942 "EventCode": "0xB7",
943 "MSRValue": "0x1000400040 ",
944 "Counter": "0,1",
945 "UMask": "0x1",
946 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_FAR_TILE_M",
947 "MSRIndex": "0x1a6,0x1a7",
948 "SampleAfterValue": "100007",
949 "BriefDescription": "Counts L2 code HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
950 "Offcore": "1"
951 },
952 {
953 "EventCode": "0xB7",
954 "MSRValue": "0x0800400040 ",
955 "Counter": "0,1",
956 "UMask": "0x1",
957 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_FAR_TILE_E_F",
958 "MSRIndex": "0x1a6,0x1a7",
959 "SampleAfterValue": "100007",
960 "BriefDescription": "Counts L2 code HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
961 "Offcore": "1"
962 },
963 {
964 "EventCode": "0xB7",
965 "MSRValue": "0x1000080040 ",
966 "Counter": "0,1",
967 "UMask": "0x1",
968 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_NEAR_TILE_M",
969 "MSRIndex": "0x1a6,0x1a7",
970 "SampleAfterValue": "100007",
971 "BriefDescription": "Counts L2 code HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
972 "Offcore": "1"
973 },
974 {
975 "EventCode": "0xB7",
976 "MSRValue": "0x0800080040 ",
977 "Counter": "0,1",
978 "UMask": "0x1",
979 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_NEAR_TILE_E_F",
980 "MSRIndex": "0x1a6,0x1a7",
981 "SampleAfterValue": "100007",
982 "BriefDescription": "Counts L2 code HW prefetches that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
983 "Offcore": "1"
984 },
985 {
986 "EventCode": "0xB7",
987 "MSRValue": "0x0000010040 ",
988 "Counter": "0,1",
989 "UMask": "0x1",
990 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.ANY_RESPONSE",
991 "MSRIndex": "0x1a6,0x1a7",
992 "SampleAfterValue": "100007",
993 "BriefDescription": "Counts L2 code HW prefetches that accounts for any response",
994 "Offcore": "1"
995 },
996 {
997 "EventCode": "0xB7",
998 "MSRValue": "0x1000400020 ",
999 "Counter": "0,1",
1000 "UMask": "0x1",
1001 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_FAR_TILE_M",
1002 "MSRIndex": "0x1a6,0x1a7",
1003 "SampleAfterValue": "100007",
1004 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
1005 "Offcore": "1"
1006 },
1007 {
1008 "EventCode": "0xB7",
1009 "MSRValue": "0x0800400020 ",
1010 "Counter": "0,1",
1011 "UMask": "0x1",
1012 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_FAR_TILE_E_F",
1013 "MSRIndex": "0x1a6,0x1a7",
1014 "SampleAfterValue": "100007",
1015 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
1016 "Offcore": "1"
1017 },
1018 {
1019 "EventCode": "0xB7",
1020 "MSRValue": "0x1000080020 ",
1021 "Counter": "0,1",
1022 "UMask": "0x1",
1023 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_NEAR_TILE_M",
1024 "MSRIndex": "0x1a6,0x1a7",
1025 "SampleAfterValue": "100007",
1026 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
1027 "Offcore": "1"
1028 },
1029 {
1030 "EventCode": "0xB7",
1031 "MSRValue": "0x0800080020 ",
1032 "Counter": "0,1",
1033 "UMask": "0x1",
1034 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_NEAR_TILE_E_F",
1035 "MSRIndex": "0x1a6,0x1a7",
1036 "SampleAfterValue": "100007",
1037 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
1038 "Offcore": "1"
1039 },
1040 {
1041 "EventCode": "0xB7",
1042 "MSRValue": "0x0000020020 ",
1043 "Counter": "0,1",
1044 "UMask": "0x1",
1045 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.SUPPLIER_NONE",
1046 "MSRIndex": "0x1a6,0x1a7",
1047 "SampleAfterValue": "100007",
1048 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that provides no supplier details",
1049 "Offcore": "1"
1050 },
1051 {
1052 "EventCode": "0xB7",
1053 "MSRValue": "0x0000010020 ",
1054 "Counter": "0,1",
1055 "UMask": "0x1",
1056 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.ANY_RESPONSE",
1057 "MSRIndex": "0x1a6,0x1a7",
1058 "SampleAfterValue": "100007",
1059 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for any response",
1060 "Offcore": "1"
1061 },
1062 {
1063 "EventCode": "0xB7",
1064 "MSRValue": "0x4000000004 ",
1065 "Counter": "0,1",
1066 "UMask": "0x1",
1067 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.OUTSTANDING",
1068 "MSRIndex": "0x1a6",
1069 "SampleAfterValue": "100007",
1070 "BriefDescription": "Counts demand code reads and prefetch code reads that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
1071 "Offcore": "1"
1072 },
1073 {
1074 "EventCode": "0xB7",
1075 "MSRValue": "0x1000400004 ",
1076 "Counter": "0,1",
1077 "UMask": "0x1",
1078 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_FAR_TILE_M",
1079 "MSRIndex": "0x1a6,0x1a7",
1080 "SampleAfterValue": "100007",
1081 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
1082 "Offcore": "1"
1083 },
1084 {
1085 "EventCode": "0xB7",
1086 "MSRValue": "0x0800400004 ",
1087 "Counter": "0,1",
1088 "UMask": "0x1",
1089 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_FAR_TILE_E_F",
1090 "MSRIndex": "0x1a6,0x1a7",
1091 "SampleAfterValue": "100007",
1092 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
1093 "Offcore": "1"
1094 },
1095 {
1096 "EventCode": "0xB7",
1097 "MSRValue": "0x1000080004 ",
1098 "Counter": "0,1",
1099 "UMask": "0x1",
1100 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_NEAR_TILE_M",
1101 "MSRIndex": "0x1a6,0x1a7",
1102 "SampleAfterValue": "100007",
1103 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
1104 "Offcore": "1"
1105 },
1106 {
1107 "EventCode": "0xB7",
1108 "MSRValue": "0x0800080004 ",
1109 "Counter": "0,1",
1110 "UMask": "0x1",
1111 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_NEAR_TILE_E_F",
1112 "MSRIndex": "0x1a6,0x1a7",
1113 "SampleAfterValue": "100007",
1114 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
1115 "Offcore": "1"
1116 },
1117 {
1118 "EventCode": "0xB7",
1119 "MSRValue": "0x0000010004 ",
1120 "Counter": "0,1",
1121 "UMask": "0x1",
1122 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
1123 "MSRIndex": "0x1a6,0x1a7",
1124 "SampleAfterValue": "100007",
1125 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for any response",
1126 "Offcore": "1"
1127 },
1128 {
1129 "EventCode": "0xB7",
1130 "MSRValue": "0x4000000002 ",
1131 "Counter": "0,1",
1132 "UMask": "0x1",
1133 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.OUTSTANDING",
1134 "MSRIndex": "0x1a6",
1135 "SampleAfterValue": "100007",
1136 "BriefDescription": "Counts Demand cacheable data writes that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
1137 "Offcore": "1"
1138 },
1139 {
1140 "EventCode": "0xB7",
1141 "MSRValue": "0x1000400002 ",
1142 "Counter": "0,1",
1143 "UMask": "0x1",
1144 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_FAR_TILE_M",
1145 "MSRIndex": "0x1a6,0x1a7",
1146 "SampleAfterValue": "100007",
1147 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
1148 "Offcore": "1"
1149 },
1150 {
1151 "EventCode": "0xB7",
1152 "MSRValue": "0x0800400002 ",
1153 "Counter": "0,1",
1154 "UMask": "0x1",
1155 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_FAR_TILE_E_F",
1156 "MSRIndex": "0x1a6,0x1a7",
1157 "SampleAfterValue": "100007",
1158 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
1159 "Offcore": "1"
1160 },
1161 {
1162 "EventCode": "0xB7",
1163 "MSRValue": "0x1000080002 ",
1164 "Counter": "0,1",
1165 "UMask": "0x1",
1166 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_NEAR_TILE_M",
1167 "MSRIndex": "0x1a6,0x1a7",
1168 "SampleAfterValue": "100007",
1169 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
1170 "Offcore": "1"
1171 },
1172 {
1173 "EventCode": "0xB7",
1174 "MSRValue": "0x0800080002 ",
1175 "Counter": "0,1",
1176 "UMask": "0x1",
1177 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_NEAR_TILE_E_F",
1178 "MSRIndex": "0x1a6,0x1a7",
1179 "SampleAfterValue": "100007",
1180 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
1181 "Offcore": "1"
1182 },
1183 {
1184 "EventCode": "0xB7",
1185 "MSRValue": "0x0000010002 ",
1186 "Counter": "0,1",
1187 "UMask": "0x1",
1188 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_RESPONSE",
1189 "MSRIndex": "0x1a6,0x1a7",
1190 "SampleAfterValue": "100007",
1191 "BriefDescription": "Counts Demand cacheable data writes that accounts for any response",
1192 "Offcore": "1"
1193 },
1194 {
1195 "EventCode": "0xB7",
1196 "MSRValue": "0x4000000001 ",
1197 "Counter": "0,1",
1198 "UMask": "0x1",
1199 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.OUTSTANDING",
1200 "MSRIndex": "0x1a6",
1201 "SampleAfterValue": "100007",
1202 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that are outstanding, per weighted cycle, from the time of the request to when any response is received. The oustanding response should be programmed only on PMC0. ",
1203 "Offcore": "1"
1204 },
1205 {
1206 "EventCode": "0xB7",
1207 "MSRValue": "0x1000400001 ",
1208 "Counter": "0,1",
1209 "UMask": "0x1",
1210 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_FAR_TILE_M",
1211 "MSRIndex": "0x1a6,0x1a7",
1212 "SampleAfterValue": "100007",
1213 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in M state. ",
1214 "Offcore": "1"
1215 },
1216 {
1217 "EventCode": "0xB7",
1218 "MSRValue": "0x0800400001 ",
1219 "Counter": "0,1",
1220 "UMask": "0x1",
1221 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_FAR_TILE_E_F",
1222 "MSRIndex": "0x1a6,0x1a7",
1223 "SampleAfterValue": "100007",
1224 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses from a snoop request hit with data forwarded from its Far(not in the same quadrant as the request)-other tile's L2 in E/F state. Valid only for SNC4 cluster mode.",
1225 "Offcore": "1"
1226 },
1227 {
1228 "EventCode": "0xB7",
1229 "MSRValue": "0x1000080001 ",
1230 "Counter": "0,1",
1231 "UMask": "0x1",
1232 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_NEAR_TILE_M",
1233 "MSRIndex": "0x1a6,0x1a7",
1234 "SampleAfterValue": "100007",
1235 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in M state. ",
1236 "Offcore": "1"
1237 },
1238 {
1239 "EventCode": "0xB7",
1240 "MSRValue": "0x0800080001 ",
1241 "Counter": "0,1",
1242 "UMask": "0x1",
1243 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_NEAR_TILE_E_F",
1244 "MSRIndex": "0x1a6,0x1a7",
1245 "SampleAfterValue": "100007",
1246 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses from a snoop request hit with data forwarded from its Near-other tile's L2 in E/F state. ",
1247 "Offcore": "1"
1248 },
1249 {
1250 "EventCode": "0xB7",
1251 "MSRValue": "0x0000010001 ",
1252 "Counter": "0,1",
1253 "UMask": "0x1",
1254 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
1255 "MSRIndex": "0x1a6,0x1a7",
1256 "SampleAfterValue": "100007",
1257 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for any response",
1258 "Offcore": "1"
1259 },
1260 {
1261 "EventCode": "0xB7",
1262 "MSRValue": "0x0002000001 ",
1263 "Counter": "0,1",
1264 "UMask": "0x1",
1265 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_THIS_TILE_M",
1266 "MSRIndex": "0x1a6,0x1a7",
1267 "SampleAfterValue": "100007",
1268 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses which hit its own tile's L2 with data in M state ",
1269 "Offcore": "1"
1270 },
1271 {
1272 "EventCode": "0xB7",
1273 "MSRValue": "0x0002000002 ",
1274 "Counter": "0,1",
1275 "UMask": "0x1",
1276 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_THIS_TILE_M",
1277 "MSRIndex": "0x1a6,0x1a7",
1278 "SampleAfterValue": "100007",
1279 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses which hit its own tile's L2 with data in M state ",
1280 "Offcore": "1"
1281 },
1282 {
1283 "EventCode": "0xB7",
1284 "MSRValue": "0x0002000004 ",
1285 "Counter": "0,1",
1286 "UMask": "0x1",
1287 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_THIS_TILE_M",
1288 "MSRIndex": "0x1a6,0x1a7",
1289 "SampleAfterValue": "100007",
1290 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses which hit its own tile's L2 with data in M state ",
1291 "Offcore": "1"
1292 },
1293 {
1294 "EventCode": "0xB7",
1295 "MSRValue": "0x0002000020 ",
1296 "Counter": "0,1",
1297 "UMask": "0x1",
1298 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_THIS_TILE_M",
1299 "MSRIndex": "0x1a6,0x1a7",
1300 "SampleAfterValue": "100007",
1301 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses which hit its own tile's L2 with data in M state ",
1302 "Offcore": "1"
1303 },
1304 {
1305 "EventCode": "0xB7",
1306 "MSRValue": "0x0002000080 ",
1307 "Counter": "0,1",
1308 "UMask": "0x1",
1309 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_THIS_TILE_M",
1310 "MSRIndex": "0x1a6,0x1a7",
1311 "SampleAfterValue": "100007",
1312 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses which hit its own tile's L2 with data in M state ",
1313 "Offcore": "1"
1314 },
1315 {
1316 "EventCode": "0xB7",
1317 "MSRValue": "0x0002000100 ",
1318 "Counter": "0,1",
1319 "UMask": "0x1",
1320 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_THIS_TILE_M",
1321 "MSRIndex": "0x1a7",
1322 "SampleAfterValue": "100007",
1323 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses which hit its own tile's L2 with data in M state ",
1324 "Offcore": "1"
1325 },
1326 {
1327 "EventCode": "0xB7",
1328 "MSRValue": "0x0002000200 ",
1329 "Counter": "0,1",
1330 "UMask": "0x1",
1331 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_THIS_TILE_M",
1332 "MSRIndex": "0x1a6,0x1a7",
1333 "SampleAfterValue": "100007",
1334 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses which hit its own tile's L2 with data in M state ",
1335 "Offcore": "1"
1336 },
1337 {
1338 "EventCode": "0xB7",
1339 "MSRValue": "0x0002000400 ",
1340 "Counter": "0,1",
1341 "UMask": "0x1",
1342 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_THIS_TILE_M",
1343 "MSRIndex": "0x1a6,0x1a7",
1344 "SampleAfterValue": "100007",
1345 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses which hit its own tile's L2 with data in M state ",
1346 "Offcore": "1"
1347 },
1348 {
1349 "EventCode": "0xB7",
1350 "MSRValue": "0x0002001000 ",
1351 "Counter": "0,1",
1352 "UMask": "0x1",
1353 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_THIS_TILE_M",
1354 "MSRIndex": "0x1a6,0x1a7",
1355 "SampleAfterValue": "100007",
1356 "BriefDescription": "Counts Software Prefetches that accounts for responses which hit its own tile's L2 with data in M state ",
1357 "Offcore": "1"
1358 },
1359 {
1360 "EventCode": "0xB7",
1361 "MSRValue": "0x0002002000 ",
1362 "Counter": "0,1",
1363 "UMask": "0x1",
1364 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_THIS_TILE_M",
1365 "MSRIndex": "0x1a6,0x1a7",
1366 "SampleAfterValue": "100007",
1367 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses which hit its own tile's L2 with data in M state ",
1368 "Offcore": "1"
1369 },
1370 {
1371 "EventCode": "0xB7",
1372 "MSRValue": "0x0002008000 ",
1373 "Counter": "0,1",
1374 "UMask": "0x1",
1375 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_THIS_TILE_M",
1376 "MSRIndex": "0x1a6,0x1a7",
1377 "SampleAfterValue": "100007",
1378 "BriefDescription": "Counts any request that accounts for responses which hit its own tile's L2 with data in M state ",
1379 "Offcore": "1"
1380 },
1381 {
1382 "EventCode": "0xB7",
1383 "MSRValue": "0x0002003091 ",
1384 "Counter": "0,1",
1385 "UMask": "0x1",
1386 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_THIS_TILE_M",
1387 "MSRIndex": "0x1a6,0x1a7",
1388 "SampleAfterValue": "100007",
1389 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses which hit its own tile's L2 with data in M state ",
1390 "Offcore": "1"
1391 },
1392 {
1393 "EventCode": "0xB7",
1394 "MSRValue": "0x0002000022 ",
1395 "Counter": "0,1",
1396 "UMask": "0x1",
1397 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_THIS_TILE_M",
1398 "MSRIndex": "0x1a6,0x1a7",
1399 "SampleAfterValue": "100007",
1400 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses which hit its own tile's L2 with data in M state ",
1401 "Offcore": "1"
1402 },
1403 {
1404 "EventCode": "0xB7",
1405 "MSRValue": "0x0002000044 ",
1406 "Counter": "0,1",
1407 "UMask": "0x1",
1408 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_THIS_TILE_M",
1409 "MSRIndex": "0x1a6,0x1a7",
1410 "SampleAfterValue": "100007",
1411 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses which hit its own tile's L2 with data in M state ",
1412 "Offcore": "1"
1413 },
1414 {
1415 "EventCode": "0xB7",
1416 "MSRValue": "0x00020032f7 ",
1417 "Counter": "0,1",
1418 "UMask": "0x1",
1419 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_THIS_TILE_M",
1420 "MSRIndex": "0x1a6,0x1a7",
1421 "SampleAfterValue": "100007",
1422 "BriefDescription": "Counts any Read request that accounts for responses which hit its own tile's L2 with data in M state ",
1423 "Offcore": "1"
1424 },
1425 {
1426 "EventCode": "0xB7",
1427 "MSRValue": "0x0002000070 ",
1428 "Counter": "0,1",
1429 "UMask": "0x1",
1430 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_THIS_TILE_M",
1431 "MSRIndex": "0x1a6,0x1a7",
1432 "SampleAfterValue": "100007",
1433 "BriefDescription": "Counts any Prefetch requests that accounts for responses which hit its own tile's L2 with data in M state ",
1434 "Offcore": "1"
1435 },
1436 {
1437 "EventCode": "0xB7",
1438 "MSRValue": "0x0004000001 ",
1439 "Counter": "0,1",
1440 "UMask": "0x1",
1441 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_THIS_TILE_E",
1442 "MSRIndex": "0x1a6,0x1a7",
1443 "SampleAfterValue": "100007",
1444 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses which hit its own tile's L2 with data in E state ",
1445 "Offcore": "1"
1446 },
1447 {
1448 "EventCode": "0xB7",
1449 "MSRValue": "0x0004000002 ",
1450 "Counter": "0,1",
1451 "UMask": "0x1",
1452 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_THIS_TILE_E",
1453 "MSRIndex": "0x1a6,0x1a7",
1454 "SampleAfterValue": "100007",
1455 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses which hit its own tile's L2 with data in E state ",
1456 "Offcore": "1"
1457 },
1458 {
1459 "EventCode": "0xB7",
1460 "MSRValue": "0x0004000004 ",
1461 "Counter": "0,1",
1462 "UMask": "0x1",
1463 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_THIS_TILE_E",
1464 "MSRIndex": "0x1a6,0x1a7",
1465 "SampleAfterValue": "100007",
1466 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses which hit its own tile's L2 with data in E state ",
1467 "Offcore": "1"
1468 },
1469 {
1470 "EventCode": "0xB7",
1471 "MSRValue": "0x0004000020 ",
1472 "Counter": "0,1",
1473 "UMask": "0x1",
1474 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_THIS_TILE_E",
1475 "MSRIndex": "0x1a6,0x1a7",
1476 "SampleAfterValue": "100007",
1477 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses which hit its own tile's L2 with data in E state ",
1478 "Offcore": "1"
1479 },
1480 {
1481 "EventCode": "0xB7",
1482 "MSRValue": "0x0004000040 ",
1483 "Counter": "0,1",
1484 "UMask": "0x1",
1485 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_THIS_TILE_E",
1486 "MSRIndex": "0x1a6,0x1a7",
1487 "SampleAfterValue": "100007",
1488 "BriefDescription": "Counts L2 code HW prefetches that accounts for responses which hit its own tile's L2 with data in E state ",
1489 "Offcore": "1"
1490 },
1491 {
1492 "EventCode": "0xB7",
1493 "MSRValue": "0x0004000080 ",
1494 "Counter": "0,1",
1495 "UMask": "0x1",
1496 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_THIS_TILE_E",
1497 "MSRIndex": "0x1a6,0x1a7",
1498 "SampleAfterValue": "100007",
1499 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses which hit its own tile's L2 with data in E state ",
1500 "Offcore": "1"
1501 },
1502 {
1503 "EventCode": "0xB7",
1504 "MSRValue": "0x0004000100 ",
1505 "Counter": "0,1",
1506 "UMask": "0x1",
1507 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_THIS_TILE_E",
1508 "MSRIndex": "0x1a7",
1509 "SampleAfterValue": "100007",
1510 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses which hit its own tile's L2 with data in E state ",
1511 "Offcore": "1"
1512 },
1513 {
1514 "EventCode": "0xB7",
1515 "MSRValue": "0x0004000200 ",
1516 "Counter": "0,1",
1517 "UMask": "0x1",
1518 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_THIS_TILE_E",
1519 "MSRIndex": "0x1a6,0x1a7",
1520 "SampleAfterValue": "100007",
1521 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses which hit its own tile's L2 with data in E state ",
1522 "Offcore": "1"
1523 },
1524 {
1525 "EventCode": "0xB7",
1526 "MSRValue": "0x0004000400 ",
1527 "Counter": "0,1",
1528 "UMask": "0x1",
1529 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_THIS_TILE_E",
1530 "MSRIndex": "0x1a6,0x1a7",
1531 "SampleAfterValue": "100007",
1532 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses which hit its own tile's L2 with data in E state ",
1533 "Offcore": "1"
1534 },
1535 {
1536 "EventCode": "0xB7",
1537 "MSRValue": "0x0004001000 ",
1538 "Counter": "0,1",
1539 "UMask": "0x1",
1540 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_THIS_TILE_E",
1541 "MSRIndex": "0x1a6,0x1a7",
1542 "SampleAfterValue": "100007",
1543 "BriefDescription": "Counts Software Prefetches that accounts for responses which hit its own tile's L2 with data in E state ",
1544 "Offcore": "1"
1545 },
1546 {
1547 "EventCode": "0xB7",
1548 "MSRValue": "0x0004002000 ",
1549 "Counter": "0,1",
1550 "UMask": "0x1",
1551 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_THIS_TILE_E",
1552 "MSRIndex": "0x1a6,0x1a7",
1553 "SampleAfterValue": "100007",
1554 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses which hit its own tile's L2 with data in E state ",
1555 "Offcore": "1"
1556 },
1557 {
1558 "EventCode": "0xB7",
1559 "MSRValue": "0x0004008000 ",
1560 "Counter": "0,1",
1561 "UMask": "0x1",
1562 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_THIS_TILE_E",
1563 "MSRIndex": "0x1a6,0x1a7",
1564 "SampleAfterValue": "100007",
1565 "BriefDescription": "Counts any request that accounts for responses which hit its own tile's L2 with data in E state ",
1566 "Offcore": "1"
1567 },
1568 {
1569 "EventCode": "0xB7",
1570 "MSRValue": "0x0004003091 ",
1571 "Counter": "0,1",
1572 "UMask": "0x1",
1573 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_THIS_TILE_E",
1574 "MSRIndex": "0x1a6,0x1a7",
1575 "SampleAfterValue": "100007",
1576 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses which hit its own tile's L2 with data in E state ",
1577 "Offcore": "1"
1578 },
1579 {
1580 "EventCode": "0xB7",
1581 "MSRValue": "0x0004000022 ",
1582 "Counter": "0,1",
1583 "UMask": "0x1",
1584 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_THIS_TILE_E",
1585 "MSRIndex": "0x1a6,0x1a7",
1586 "SampleAfterValue": "100007",
1587 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses which hit its own tile's L2 with data in E state ",
1588 "Offcore": "1"
1589 },
1590 {
1591 "EventCode": "0xB7",
1592 "MSRValue": "0x0004000044 ",
1593 "Counter": "0,1",
1594 "UMask": "0x1",
1595 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_THIS_TILE_E",
1596 "MSRIndex": "0x1a6,0x1a7",
1597 "SampleAfterValue": "100007",
1598 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses which hit its own tile's L2 with data in E state ",
1599 "Offcore": "1"
1600 },
1601 {
1602 "EventCode": "0xB7",
1603 "MSRValue": "0x00040032f7 ",
1604 "Counter": "0,1",
1605 "UMask": "0x1",
1606 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_THIS_TILE_E",
1607 "MSRIndex": "0x1a6,0x1a7",
1608 "SampleAfterValue": "100007",
1609 "BriefDescription": "Counts any Read request that accounts for responses which hit its own tile's L2 with data in E state ",
1610 "Offcore": "1"
1611 },
1612 {
1613 "EventCode": "0xB7",
1614 "MSRValue": "0x0004000070 ",
1615 "Counter": "0,1",
1616 "UMask": "0x1",
1617 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_THIS_TILE_E",
1618 "MSRIndex": "0x1a6,0x1a7",
1619 "SampleAfterValue": "100007",
1620 "BriefDescription": "Counts any Prefetch requests that accounts for responses which hit its own tile's L2 with data in E state ",
1621 "Offcore": "1"
1622 },
1623 {
1624 "EventCode": "0xB7",
1625 "MSRValue": "0x0008000001 ",
1626 "Counter": "0,1",
1627 "UMask": "0x1",
1628 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_THIS_TILE_S",
1629 "MSRIndex": "0x1a6,0x1a7",
1630 "SampleAfterValue": "100007",
1631 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses which hit its own tile's L2 with data in S state ",
1632 "Offcore": "1"
1633 },
1634 {
1635 "EventCode": "0xB7",
1636 "MSRValue": "0x0008000002 ",
1637 "Counter": "0,1",
1638 "UMask": "0x1",
1639 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_THIS_TILE_S",
1640 "MSRIndex": "0x1a6,0x1a7",
1641 "SampleAfterValue": "100007",
1642 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses which hit its own tile's L2 with data in S state ",
1643 "Offcore": "1"
1644 },
1645 {
1646 "EventCode": "0xB7",
1647 "MSRValue": "0x0008000004 ",
1648 "Counter": "0,1",
1649 "UMask": "0x1",
1650 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_THIS_TILE_S",
1651 "MSRIndex": "0x1a6,0x1a7",
1652 "SampleAfterValue": "100007",
1653 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses which hit its own tile's L2 with data in S state ",
1654 "Offcore": "1"
1655 },
1656 {
1657 "EventCode": "0xB7",
1658 "MSRValue": "0x0008000020 ",
1659 "Counter": "0,1",
1660 "UMask": "0x1",
1661 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_THIS_TILE_S",
1662 "MSRIndex": "0x1a6,0x1a7",
1663 "SampleAfterValue": "100007",
1664 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses which hit its own tile's L2 with data in S state ",
1665 "Offcore": "1"
1666 },
1667 {
1668 "EventCode": "0xB7",
1669 "MSRValue": "0x0008000080 ",
1670 "Counter": "0,1",
1671 "UMask": "0x1",
1672 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_THIS_TILE_S",
1673 "MSRIndex": "0x1a6,0x1a7",
1674 "SampleAfterValue": "100007",
1675 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses which hit its own tile's L2 with data in S state ",
1676 "Offcore": "1"
1677 },
1678 {
1679 "EventCode": "0xB7",
1680 "MSRValue": "0x0008000100 ",
1681 "Counter": "0,1",
1682 "UMask": "0x1",
1683 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_THIS_TILE_S",
1684 "MSRIndex": "0x1a7",
1685 "SampleAfterValue": "100007",
1686 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses which hit its own tile's L2 with data in S state ",
1687 "Offcore": "1"
1688 },
1689 {
1690 "EventCode": "0xB7",
1691 "MSRValue": "0x0008000200 ",
1692 "Counter": "0,1",
1693 "UMask": "0x1",
1694 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_THIS_TILE_S",
1695 "MSRIndex": "0x1a6,0x1a7",
1696 "SampleAfterValue": "100007",
1697 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses which hit its own tile's L2 with data in S state ",
1698 "Offcore": "1"
1699 },
1700 {
1701 "EventCode": "0xB7",
1702 "MSRValue": "0x0008000400 ",
1703 "Counter": "0,1",
1704 "UMask": "0x1",
1705 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_THIS_TILE_S",
1706 "MSRIndex": "0x1a6,0x1a7",
1707 "SampleAfterValue": "100007",
1708 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses which hit its own tile's L2 with data in S state ",
1709 "Offcore": "1"
1710 },
1711 {
1712 "EventCode": "0xB7",
1713 "MSRValue": "0x0008001000 ",
1714 "Counter": "0,1",
1715 "UMask": "0x1",
1716 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_THIS_TILE_S",
1717 "MSRIndex": "0x1a6,0x1a7",
1718 "SampleAfterValue": "100007",
1719 "BriefDescription": "Counts Software Prefetches that accounts for responses which hit its own tile's L2 with data in S state ",
1720 "Offcore": "1"
1721 },
1722 {
1723 "EventCode": "0xB7",
1724 "MSRValue": "0x0008002000 ",
1725 "Counter": "0,1",
1726 "UMask": "0x1",
1727 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_THIS_TILE_S",
1728 "MSRIndex": "0x1a6,0x1a7",
1729 "SampleAfterValue": "100007",
1730 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses which hit its own tile's L2 with data in S state ",
1731 "Offcore": "1"
1732 },
1733 {
1734 "EventCode": "0xB7",
1735 "MSRValue": "0x0008008000 ",
1736 "Counter": "0,1",
1737 "UMask": "0x1",
1738 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_THIS_TILE_S",
1739 "MSRIndex": "0x1a6,0x1a7",
1740 "SampleAfterValue": "100007",
1741 "BriefDescription": "Counts any request that accounts for responses which hit its own tile's L2 with data in S state ",
1742 "Offcore": "1"
1743 },
1744 {
1745 "EventCode": "0xB7",
1746 "MSRValue": "0x0008003091 ",
1747 "Counter": "0,1",
1748 "UMask": "0x1",
1749 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_THIS_TILE_S",
1750 "MSRIndex": "0x1a6,0x1a7",
1751 "SampleAfterValue": "100007",
1752 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses which hit its own tile's L2 with data in S state ",
1753 "Offcore": "1"
1754 },
1755 {
1756 "EventCode": "0xB7",
1757 "MSRValue": "0x0008000022 ",
1758 "Counter": "0,1",
1759 "UMask": "0x1",
1760 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_THIS_TILE_S",
1761 "MSRIndex": "0x1a6,0x1a7",
1762 "SampleAfterValue": "100007",
1763 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses which hit its own tile's L2 with data in S state ",
1764 "Offcore": "1"
1765 },
1766 {
1767 "EventCode": "0xB7",
1768 "MSRValue": "0x0008000044 ",
1769 "Counter": "0,1",
1770 "UMask": "0x1",
1771 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_THIS_TILE_S",
1772 "MSRIndex": "0x1a6,0x1a7",
1773 "SampleAfterValue": "100007",
1774 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses which hit its own tile's L2 with data in S state ",
1775 "Offcore": "1"
1776 },
1777 {
1778 "EventCode": "0xB7",
1779 "MSRValue": "0x00080032f7 ",
1780 "Counter": "0,1",
1781 "UMask": "0x1",
1782 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_THIS_TILE_S",
1783 "MSRIndex": "0x1a6,0x1a7",
1784 "SampleAfterValue": "100007",
1785 "BriefDescription": "Counts any Read request that accounts for responses which hit its own tile's L2 with data in S state ",
1786 "Offcore": "1"
1787 },
1788 {
1789 "EventCode": "0xB7",
1790 "MSRValue": "0x0010000001 ",
1791 "Counter": "0,1",
1792 "UMask": "0x1",
1793 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT_THIS_TILE_F",
1794 "MSRIndex": "0x1a6,0x1a7",
1795 "SampleAfterValue": "100007",
1796 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses which hit its own tile's L2 with data in F state ",
1797 "Offcore": "1"
1798 },
1799 {
1800 "EventCode": "0xB7",
1801 "MSRValue": "0x0010000002 ",
1802 "Counter": "0,1",
1803 "UMask": "0x1",
1804 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_THIS_TILE_F",
1805 "MSRIndex": "0x1a6,0x1a7",
1806 "SampleAfterValue": "100007",
1807 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses which hit its own tile's L2 with data in F state ",
1808 "Offcore": "1"
1809 },
1810 {
1811 "EventCode": "0xB7",
1812 "MSRValue": "0x0010000004 ",
1813 "Counter": "0,1",
1814 "UMask": "0x1",
1815 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_THIS_TILE_F",
1816 "MSRIndex": "0x1a6,0x1a7",
1817 "SampleAfterValue": "100007",
1818 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses which hit its own tile's L2 with data in F state ",
1819 "Offcore": "1"
1820 },
1821 {
1822 "EventCode": "0xB7",
1823 "MSRValue": "0x0010000020 ",
1824 "Counter": "0,1",
1825 "UMask": "0x1",
1826 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_THIS_TILE_F",
1827 "MSRIndex": "0x1a6,0x1a7",
1828 "SampleAfterValue": "100007",
1829 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses which hit its own tile's L2 with data in F state ",
1830 "Offcore": "1"
1831 },
1832 {
1833 "EventCode": "0xB7",
1834 "MSRValue": "0x0010000040 ",
1835 "Counter": "0,1",
1836 "UMask": "0x1",
1837 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_THIS_TILE_F",
1838 "MSRIndex": "0x1a6,0x1a7",
1839 "SampleAfterValue": "100007",
1840 "BriefDescription": "Counts L2 code HW prefetches that accounts for responses which hit its own tile's L2 with data in F state ",
1841 "Offcore": "1"
1842 },
1843 {
1844 "EventCode": "0xB7",
1845 "MSRValue": "0x0010000080 ",
1846 "Counter": "0,1",
1847 "UMask": "0x1",
1848 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_THIS_TILE_F",
1849 "MSRIndex": "0x1a6,0x1a7",
1850 "SampleAfterValue": "100007",
1851 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses which hit its own tile's L2 with data in F state ",
1852 "Offcore": "1"
1853 },
1854 {
1855 "EventCode": "0xB7",
1856 "MSRValue": "0x0010000100 ",
1857 "Counter": "0,1",
1858 "UMask": "0x1",
1859 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_THIS_TILE_F",
1860 "MSRIndex": "0x1a7",
1861 "SampleAfterValue": "100007",
1862 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses which hit its own tile's L2 with data in F state ",
1863 "Offcore": "1"
1864 },
1865 {
1866 "EventCode": "0xB7",
1867 "MSRValue": "0x0010000200 ",
1868 "Counter": "0,1",
1869 "UMask": "0x1",
1870 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_THIS_TILE_F",
1871 "MSRIndex": "0x1a6,0x1a7",
1872 "SampleAfterValue": "100007",
1873 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses which hit its own tile's L2 with data in F state ",
1874 "Offcore": "1"
1875 },
1876 {
1877 "EventCode": "0xB7",
1878 "MSRValue": "0x0010000400 ",
1879 "Counter": "0,1",
1880 "UMask": "0x1",
1881 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_THIS_TILE_F",
1882 "MSRIndex": "0x1a6,0x1a7",
1883 "SampleAfterValue": "100007",
1884 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses which hit its own tile's L2 with data in F state ",
1885 "Offcore": "1"
1886 },
1887 {
1888 "EventCode": "0xB7",
1889 "MSRValue": "0x0010001000 ",
1890 "Counter": "0,1",
1891 "UMask": "0x1",
1892 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_THIS_TILE_F",
1893 "MSRIndex": "0x1a6,0x1a7",
1894 "SampleAfterValue": "100007",
1895 "BriefDescription": "Counts Software Prefetches that accounts for responses which hit its own tile's L2 with data in F state ",
1896 "Offcore": "1"
1897 },
1898 {
1899 "EventCode": "0xB7",
1900 "MSRValue": "0x0010002000 ",
1901 "Counter": "0,1",
1902 "UMask": "0x1",
1903 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_THIS_TILE_F",
1904 "MSRIndex": "0x1a6,0x1a7",
1905 "SampleAfterValue": "100007",
1906 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses which hit its own tile's L2 with data in F state ",
1907 "Offcore": "1"
1908 },
1909 {
1910 "EventCode": "0xB7",
1911 "MSRValue": "0x0010008000 ",
1912 "Counter": "0,1",
1913 "UMask": "0x1",
1914 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_THIS_TILE_F",
1915 "MSRIndex": "0x1a6,0x1a7",
1916 "SampleAfterValue": "100007",
1917 "BriefDescription": "Counts any request that accounts for responses which hit its own tile's L2 with data in F state ",
1918 "Offcore": "1"
1919 },
1920 {
1921 "EventCode": "0xB7",
1922 "MSRValue": "0x0010003091 ",
1923 "Counter": "0,1",
1924 "UMask": "0x1",
1925 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_THIS_TILE_F",
1926 "MSRIndex": "0x1a6,0x1a7",
1927 "SampleAfterValue": "100007",
1928 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses which hit its own tile's L2 with data in F state ",
1929 "Offcore": "1"
1930 },
1931 {
1932 "EventCode": "0xB7",
1933 "MSRValue": "0x0010000022 ",
1934 "Counter": "0,1",
1935 "UMask": "0x1",
1936 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_THIS_TILE_F",
1937 "MSRIndex": "0x1a6,0x1a7",
1938 "SampleAfterValue": "100007",
1939 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses which hit its own tile's L2 with data in F state ",
1940 "Offcore": "1"
1941 },
1942 {
1943 "EventCode": "0xB7",
1944 "MSRValue": "0x0010000044 ",
1945 "Counter": "0,1",
1946 "UMask": "0x1",
1947 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_THIS_TILE_F",
1948 "MSRIndex": "0x1a6,0x1a7",
1949 "SampleAfterValue": "100007",
1950 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses which hit its own tile's L2 with data in F state ",
1951 "Offcore": "1"
1952 },
1953 {
1954 "EventCode": "0xB7",
1955 "MSRValue": "0x00100032f7 ",
1956 "Counter": "0,1",
1957 "UMask": "0x1",
1958 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_THIS_TILE_F",
1959 "MSRIndex": "0x1a6,0x1a7",
1960 "SampleAfterValue": "100007",
1961 "BriefDescription": "Counts any Read request that accounts for responses which hit its own tile's L2 with data in F state ",
1962 "Offcore": "1"
1963 },
1964 {
1965 "EventCode": "0xB7",
1966 "MSRValue": "0x0010000070 ",
1967 "Counter": "0,1",
1968 "UMask": "0x1",
1969 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_THIS_TILE_F",
1970 "MSRIndex": "0x1a6,0x1a7",
1971 "SampleAfterValue": "100007",
1972 "BriefDescription": "Counts any Prefetch requests that accounts for responses which hit its own tile's L2 with data in F state ",
1973 "Offcore": "1"
1974 },
1975 {
1976 "EventCode": "0xB7",
1977 "MSRValue": "0x1800180002 ",
1978 "Counter": "0,1",
1979 "UMask": "0x1",
1980 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_NEAR_TILE",
1981 "MSRIndex": "0x1a6,0x1a7",
1982 "SampleAfterValue": "100007",
1983 "BriefDescription": "Counts Demand cacheable data writes that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
1984 "Offcore": "1"
1985 },
1986 {
1987 "EventCode": "0xB7",
1988 "MSRValue": "0x1800180004 ",
1989 "Counter": "0,1",
1990 "UMask": "0x1",
1991 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_NEAR_TILE",
1992 "MSRIndex": "0x1a6,0x1a7",
1993 "SampleAfterValue": "100007",
1994 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
1995 "Offcore": "1"
1996 },
1997 {
1998 "EventCode": "0xB7",
1999 "MSRValue": "0x1800180020 ",
2000 "Counter": "0,1",
2001 "UMask": "0x1",
2002 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT_NEAR_TILE",
2003 "MSRIndex": "0x1a6,0x1a7",
2004 "SampleAfterValue": "100007",
2005 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2006 "Offcore": "1"
2007 },
2008 {
2009 "EventCode": "0xB7",
2010 "MSRValue": "0x1800180040 ",
2011 "Counter": "0,1",
2012 "UMask": "0x1",
2013 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_NEAR_TILE",
2014 "MSRIndex": "0x1a6,0x1a7",
2015 "SampleAfterValue": "100007",
2016 "BriefDescription": "Counts L2 code HW prefetches that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2017 "Offcore": "1"
2018 },
2019 {
2020 "EventCode": "0xB7",
2021 "MSRValue": "0x1800180080 ",
2022 "Counter": "0,1",
2023 "UMask": "0x1",
2024 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_NEAR_TILE",
2025 "MSRIndex": "0x1a6,0x1a7",
2026 "SampleAfterValue": "100007",
2027 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2028 "Offcore": "1"
2029 },
2030 {
2031 "EventCode": "0xB7",
2032 "MSRValue": "0x1800180100 ",
2033 "Counter": "0,1",
2034 "UMask": "0x1",
2035 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_NEAR_TILE",
2036 "MSRIndex": "0x1a7",
2037 "SampleAfterValue": "100007",
2038 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2039 "Offcore": "1"
2040 },
2041 {
2042 "EventCode": "0xB7",
2043 "MSRValue": "0x1800180200 ",
2044 "Counter": "0,1",
2045 "UMask": "0x1",
2046 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.L2_HIT_NEAR_TILE",
2047 "MSRIndex": "0x1a6,0x1a7",
2048 "SampleAfterValue": "100007",
2049 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2050 "Offcore": "1"
2051 },
2052 {
2053 "EventCode": "0xB7",
2054 "MSRValue": "0x1800180400 ",
2055 "Counter": "0,1",
2056 "UMask": "0x1",
2057 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_NEAR_TILE",
2058 "MSRIndex": "0x1a6,0x1a7",
2059 "SampleAfterValue": "100007",
2060 "BriefDescription": "Counts Bus locks and split lock requests that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2061 "Offcore": "1"
2062 },
2063 {
2064 "EventCode": "0xB7",
2065 "MSRValue": "0x1800181000 ",
2066 "Counter": "0,1",
2067 "UMask": "0x1",
2068 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_NEAR_TILE",
2069 "MSRIndex": "0x1a6,0x1a7",
2070 "SampleAfterValue": "100007",
2071 "BriefDescription": "Counts Software Prefetches that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2072 "Offcore": "1"
2073 },
2074 {
2075 "EventCode": "0xB7",
2076 "MSRValue": "0x1800182000 ",
2077 "Counter": "0,1",
2078 "UMask": "0x1",
2079 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_NEAR_TILE",
2080 "MSRIndex": "0x1a6,0x1a7",
2081 "SampleAfterValue": "100007",
2082 "BriefDescription": "Counts L1 data HW prefetches that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2083 "Offcore": "1"
2084 },
2085 {
2086 "EventCode": "0xB7",
2087 "MSRValue": "0x1800188000 ",
2088 "Counter": "0,1",
2089 "UMask": "0x1",
2090 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_NEAR_TILE",
2091 "MSRIndex": "0x1a6,0x1a7",
2092 "SampleAfterValue": "100007",
2093 "BriefDescription": "Counts any request that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2094 "Offcore": "1"
2095 },
2096 {
2097 "EventCode": "0xB7",
2098 "MSRValue": "0x1800183091 ",
2099 "Counter": "0,1",
2100 "UMask": "0x1",
2101 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_NEAR_TILE",
2102 "MSRIndex": "0x1a6,0x1a7",
2103 "SampleAfterValue": "100007",
2104 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2105 "Offcore": "1"
2106 },
2107 {
2108 "EventCode": "0xB7",
2109 "MSRValue": "0x1800180022 ",
2110 "Counter": "0,1",
2111 "UMask": "0x1",
2112 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_NEAR_TILE",
2113 "MSRIndex": "0x1a6,0x1a7",
2114 "SampleAfterValue": "100007",
2115 "BriefDescription": "Counts Demand cacheable data write requests that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2116 "Offcore": "1"
2117 },
2118 {
2119 "EventCode": "0xB7",
2120 "MSRValue": "0x1800180044 ",
2121 "Counter": "0,1",
2122 "UMask": "0x1",
2123 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_NEAR_TILE",
2124 "MSRIndex": "0x1a6,0x1a7",
2125 "SampleAfterValue": "100007",
2126 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2127 "Offcore": "1"
2128 },
2129 {
2130 "EventCode": "0xB7",
2131 "MSRValue": "0x18001832f7 ",
2132 "Counter": "0,1",
2133 "UMask": "0x1",
2134 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_NEAR_TILE",
2135 "MSRIndex": "0x1a6,0x1a7",
2136 "SampleAfterValue": "100007",
2137 "BriefDescription": "Counts any Read request that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2138 "Offcore": "1"
2139 },
2140 {
2141 "EventCode": "0xB7",
2142 "MSRValue": "0x1800180070 ",
2143 "Counter": "0,1",
2144 "UMask": "0x1",
2145 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_NEAR_TILE",
2146 "MSRIndex": "0x1a6,0x1a7",
2147 "SampleAfterValue": "100007",
2148 "BriefDescription": "Counts any Prefetch requests that accounts for reponses from snoop request hit with data forwarded from its Near-other tile L2 in E/F/M state",
2149 "Offcore": "1"
2150 },
2151 {
2152 "EventCode": "0xB7",
2153 "MSRValue": "0x1800400002 ",
2154 "Counter": "0,1",
2155 "UMask": "0x1",
2156 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT_FAR_TILE",
2157 "MSRIndex": "0x1a6,0x1a7",
2158 "SampleAfterValue": "100007",
2159 "BriefDescription": "Counts Demand cacheable data writes that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2160 "Offcore": "1"
2161 },
2162 {
2163 "EventCode": "0xB7",
2164 "MSRValue": "0x1800400004 ",
2165 "Counter": "0,1",
2166 "UMask": "0x1",
2167 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT_FAR_TILE",
2168 "MSRIndex": "0x1a6,0x1a7",
2169 "SampleAfterValue": "100007",
2170 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2171 "Offcore": "1"
2172 },
2173 {
2174 "EventCode": "0xB7",
2175 "MSRValue": "0x1800400040 ",
2176 "Counter": "0,1",
2177 "UMask": "0x1",
2178 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_HIT_FAR_TILE",
2179 "MSRIndex": "0x1a6,0x1a7",
2180 "SampleAfterValue": "100007",
2181 "BriefDescription": "Counts L2 code HW prefetches that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2182 "Offcore": "1"
2183 },
2184 {
2185 "EventCode": "0xB7",
2186 "MSRValue": "0x1800400080 ",
2187 "Counter": "0,1",
2188 "UMask": "0x1",
2189 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_HIT_FAR_TILE",
2190 "MSRIndex": "0x1a6,0x1a7",
2191 "SampleAfterValue": "100007",
2192 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2193 "Offcore": "1"
2194 },
2195 {
2196 "EventCode": "0xB7",
2197 "MSRValue": "0x1800400100 ",
2198 "Counter": "0,1",
2199 "UMask": "0x1",
2200 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_HIT_FAR_TILE",
2201 "MSRIndex": "0x1a7",
2202 "SampleAfterValue": "100007",
2203 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2204 "Offcore": "1"
2205 },
2206 {
2207 "EventCode": "0xB7",
2208 "MSRValue": "0x1800400400 ",
2209 "Counter": "0,1",
2210 "UMask": "0x1",
2211 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT_FAR_TILE",
2212 "MSRIndex": "0x1a6,0x1a7",
2213 "SampleAfterValue": "100007",
2214 "BriefDescription": "Counts Bus locks and split lock requests that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2215 "Offcore": "1"
2216 },
2217 {
2218 "EventCode": "0xB7",
2219 "MSRValue": "0x1800401000 ",
2220 "Counter": "0,1",
2221 "UMask": "0x1",
2222 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.L2_HIT_FAR_TILE",
2223 "MSRIndex": "0x1a6,0x1a7",
2224 "SampleAfterValue": "100007",
2225 "BriefDescription": "Counts Software Prefetches that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2226 "Offcore": "1"
2227 },
2228 {
2229 "EventCode": "0xB7",
2230 "MSRValue": "0x1800402000 ",
2231 "Counter": "0,1",
2232 "UMask": "0x1",
2233 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT_FAR_TILE",
2234 "MSRIndex": "0x1a6,0x1a7",
2235 "SampleAfterValue": "100007",
2236 "BriefDescription": "Counts L1 data HW prefetches that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2237 "Offcore": "1"
2238 },
2239 {
2240 "EventCode": "0xB7",
2241 "MSRValue": "0x1800408000 ",
2242 "Counter": "0,1",
2243 "UMask": "0x1",
2244 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT_FAR_TILE",
2245 "MSRIndex": "0x1a6,0x1a7",
2246 "SampleAfterValue": "100007",
2247 "BriefDescription": "Counts any request that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2248 "Offcore": "1"
2249 },
2250 {
2251 "EventCode": "0xB7",
2252 "MSRValue": "0x1800403091 ",
2253 "Counter": "0,1",
2254 "UMask": "0x1",
2255 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT_FAR_TILE",
2256 "MSRIndex": "0x1a6,0x1a7",
2257 "SampleAfterValue": "100007",
2258 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2259 "Offcore": "1"
2260 },
2261 {
2262 "EventCode": "0xB7",
2263 "MSRValue": "0x1800400022 ",
2264 "Counter": "0,1",
2265 "UMask": "0x1",
2266 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT_FAR_TILE",
2267 "MSRIndex": "0x1a6,0x1a7",
2268 "SampleAfterValue": "100007",
2269 "BriefDescription": "Counts Demand cacheable data write requests that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2270 "Offcore": "1"
2271 },
2272 {
2273 "EventCode": "0xB7",
2274 "MSRValue": "0x1800400044 ",
2275 "Counter": "0,1",
2276 "UMask": "0x1",
2277 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_HIT_FAR_TILE",
2278 "MSRIndex": "0x1a6,0x1a7",
2279 "SampleAfterValue": "100007",
2280 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2281 "Offcore": "1"
2282 },
2283 {
2284 "EventCode": "0xB7",
2285 "MSRValue": "0x18004032f7 ",
2286 "Counter": "0,1",
2287 "UMask": "0x1",
2288 "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT_FAR_TILE",
2289 "MSRIndex": "0x1a6,0x1a7",
2290 "SampleAfterValue": "100007",
2291 "BriefDescription": "Counts any Read request that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2292 "Offcore": "1"
2293 },
2294 {
2295 "EventCode": "0xB7",
2296 "MSRValue": "0x1800400070 ",
2297 "Counter": "0,1",
2298 "UMask": "0x1",
2299 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.L2_HIT_FAR_TILE",
2300 "MSRIndex": "0x1a6,0x1a7",
2301 "SampleAfterValue": "100007",
2302 "BriefDescription": "Counts any Prefetch requests that accounts for reponses from snoop request hit with data forwarded from it Far(not in the same quadrant as the request)-other tile L2 in E/F/M state. Valid only in SNC4 Cluster mode.",
2303 "Offcore": "1"
2304 }
2305] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/knightslanding/frontend.json b/tools/perf/pmu-events/arch/x86/knightslanding/frontend.json
new file mode 100644
index 000000000000..6d38636689a4
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/knightslanding/frontend.json
@@ -0,0 +1,34 @@
1[
2 {
3 "EventCode": "0x80",
4 "Counter": "0,1",
5 "UMask": "0x3",
6 "EventName": "ICACHE.ACCESSES",
7 "SampleAfterValue": "200003",
8 "BriefDescription": "Counts all instruction fetches, including uncacheable fetches."
9 },
10 {
11 "EventCode": "0x80",
12 "Counter": "0,1",
13 "UMask": "0x1",
14 "EventName": "ICACHE.HIT",
15 "SampleAfterValue": "200003",
16 "BriefDescription": "Counts all instruction fetches that hit the instruction cache."
17 },
18 {
19 "EventCode": "0x80",
20 "Counter": "0,1",
21 "UMask": "0x2",
22 "EventName": "ICACHE.MISSES",
23 "SampleAfterValue": "200003",
24 "BriefDescription": "Counts all instruction fetches that miss the instruction cache or produce memory requests. An instruction fetch miss is counted only once and not once for every cycle it is outstanding."
25 },
26 {
27 "EventCode": "0xE7",
28 "Counter": "0,1",
29 "UMask": "0x1",
30 "EventName": "MS_DECODED.MS_ENTRY",
31 "SampleAfterValue": "200003",
32 "BriefDescription": "Counts the number of times the MSROM starts a flow of uops."
33 }
34] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/knightslanding/memory.json b/tools/perf/pmu-events/arch/x86/knightslanding/memory.json
new file mode 100644
index 000000000000..700652566200
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/knightslanding/memory.json
@@ -0,0 +1,1110 @@
1[
2 {
3 "EventCode": "0xC3",
4 "Counter": "0,1",
5 "UMask": "0x2",
6 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
7 "SampleAfterValue": "200003",
8 "BriefDescription": "Counts the number of times the machine clears due to memory ordering hazards"
9 },
10 {
11 "EventCode": "0xB7",
12 "MSRValue": "0x0100400070 ",
13 "Counter": "0,1",
14 "UMask": "0x1",
15 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.MCDRAM_FAR",
16 "MSRIndex": "0x1a6,0x1a7",
17 "SampleAfterValue": "100007",
18 "BriefDescription": "Counts any Prefetch requests that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
19 "Offcore": "1"
20 },
21 {
22 "EventCode": "0xB7",
23 "MSRValue": "0x0080200070 ",
24 "Counter": "0,1",
25 "UMask": "0x1",
26 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.MCDRAM_NEAR",
27 "MSRIndex": "0x1a6,0x1a7",
28 "SampleAfterValue": "100007",
29 "BriefDescription": "Counts any Prefetch requests that accounts for data responses from MCDRAM Local.",
30 "Offcore": "1"
31 },
32 {
33 "EventCode": "0xB7",
34 "MSRValue": "0x0101000070 ",
35 "Counter": "0,1",
36 "UMask": "0x1",
37 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.DDR_FAR",
38 "MSRIndex": "0x1a6,0x1a7",
39 "SampleAfterValue": "100007",
40 "BriefDescription": "Counts any Prefetch requests that accounts for data responses from DRAM Far. ",
41 "Offcore": "1"
42 },
43 {
44 "EventCode": "0xB7",
45 "MSRValue": "0x0080800070 ",
46 "Counter": "0,1",
47 "UMask": "0x1",
48 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.DDR_NEAR",
49 "MSRIndex": "0x1a6,0x1a7",
50 "SampleAfterValue": "100007",
51 "BriefDescription": "Counts any Prefetch requests that accounts for data responses from DRAM Local.",
52 "Offcore": "1"
53 },
54 {
55 "EventCode": "0xB7",
56 "MSRValue": "0x01004032f7 ",
57 "Counter": "0,1",
58 "UMask": "0x1",
59 "EventName": "OFFCORE_RESPONSE.ANY_READ.MCDRAM_FAR",
60 "MSRIndex": "0x1a6,0x1a7",
61 "SampleAfterValue": "100007",
62 "BriefDescription": "Counts any Read request that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
63 "Offcore": "1"
64 },
65 {
66 "EventCode": "0xB7",
67 "MSRValue": "0x00802032f7 ",
68 "Counter": "0,1",
69 "UMask": "0x1",
70 "EventName": "OFFCORE_RESPONSE.ANY_READ.MCDRAM_NEAR",
71 "MSRIndex": "0x1a6,0x1a7",
72 "SampleAfterValue": "100007",
73 "BriefDescription": "Counts any Read request that accounts for data responses from MCDRAM Local.",
74 "Offcore": "1"
75 },
76 {
77 "EventCode": "0xB7",
78 "MSRValue": "0x01010032f7 ",
79 "Counter": "0,1",
80 "UMask": "0x1",
81 "EventName": "OFFCORE_RESPONSE.ANY_READ.DDR_FAR",
82 "MSRIndex": "0x1a6,0x1a7",
83 "SampleAfterValue": "100007",
84 "BriefDescription": "Counts any Read request that accounts for data responses from DRAM Far. ",
85 "Offcore": "1"
86 },
87 {
88 "EventCode": "0xB7",
89 "MSRValue": "0x00808032f7 ",
90 "Counter": "0,1",
91 "UMask": "0x1",
92 "EventName": "OFFCORE_RESPONSE.ANY_READ.DDR_NEAR",
93 "MSRIndex": "0x1a6,0x1a7",
94 "SampleAfterValue": "100007",
95 "BriefDescription": "Counts any Read request that accounts for data responses from DRAM Local.",
96 "Offcore": "1"
97 },
98 {
99 "EventCode": "0xB7",
100 "MSRValue": "0x0100400044 ",
101 "Counter": "0,1",
102 "UMask": "0x1",
103 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.MCDRAM_FAR",
104 "MSRIndex": "0x1a6,0x1a7",
105 "SampleAfterValue": "100007",
106 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
107 "Offcore": "1"
108 },
109 {
110 "EventCode": "0xB7",
111 "MSRValue": "0x0080200044 ",
112 "Counter": "0,1",
113 "UMask": "0x1",
114 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.MCDRAM_NEAR",
115 "MSRIndex": "0x1a6,0x1a7",
116 "SampleAfterValue": "100007",
117 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for data responses from MCDRAM Local.",
118 "Offcore": "1"
119 },
120 {
121 "EventCode": "0xB7",
122 "MSRValue": "0x0101000044 ",
123 "Counter": "0,1",
124 "UMask": "0x1",
125 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.DDR_FAR",
126 "MSRIndex": "0x1a6,0x1a7",
127 "SampleAfterValue": "100007",
128 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for data responses from DRAM Far. ",
129 "Offcore": "1"
130 },
131 {
132 "EventCode": "0xB7",
133 "MSRValue": "0x0080800044 ",
134 "Counter": "0,1",
135 "UMask": "0x1",
136 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.DDR_NEAR",
137 "MSRIndex": "0x1a6,0x1a7",
138 "SampleAfterValue": "100007",
139 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for data responses from DRAM Local.",
140 "Offcore": "1"
141 },
142 {
143 "EventCode": "0xB7",
144 "MSRValue": "0x0100400022 ",
145 "Counter": "0,1",
146 "UMask": "0x1",
147 "EventName": "OFFCORE_RESPONSE.ANY_RFO.MCDRAM_FAR",
148 "MSRIndex": "0x1a6,0x1a7",
149 "SampleAfterValue": "100007",
150 "BriefDescription": "Counts Demand cacheable data write requests that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
151 "Offcore": "1"
152 },
153 {
154 "EventCode": "0xB7",
155 "MSRValue": "0x0080200022 ",
156 "Counter": "0,1",
157 "UMask": "0x1",
158 "EventName": "OFFCORE_RESPONSE.ANY_RFO.MCDRAM_NEAR",
159 "MSRIndex": "0x1a6,0x1a7",
160 "SampleAfterValue": "100007",
161 "BriefDescription": "Counts Demand cacheable data write requests that accounts for data responses from MCDRAM Local.",
162 "Offcore": "1"
163 },
164 {
165 "EventCode": "0xB7",
166 "MSRValue": "0x0101000022 ",
167 "Counter": "0,1",
168 "UMask": "0x1",
169 "EventName": "OFFCORE_RESPONSE.ANY_RFO.DDR_FAR",
170 "MSRIndex": "0x1a6,0x1a7",
171 "SampleAfterValue": "100007",
172 "BriefDescription": "Counts Demand cacheable data write requests that accounts for data responses from DRAM Far. ",
173 "Offcore": "1"
174 },
175 {
176 "EventCode": "0xB7",
177 "MSRValue": "0x0080800022 ",
178 "Counter": "0,1",
179 "UMask": "0x1",
180 "EventName": "OFFCORE_RESPONSE.ANY_RFO.DDR_NEAR",
181 "MSRIndex": "0x1a6,0x1a7",
182 "SampleAfterValue": "100007",
183 "BriefDescription": "Counts Demand cacheable data write requests that accounts for data responses from DRAM Local.",
184 "Offcore": "1"
185 },
186 {
187 "EventCode": "0xB7",
188 "MSRValue": "0x0100403091 ",
189 "Counter": "0,1",
190 "UMask": "0x1",
191 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.MCDRAM_FAR",
192 "MSRIndex": "0x1a6,0x1a7",
193 "SampleAfterValue": "100007",
194 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
195 "Offcore": "1"
196 },
197 {
198 "EventCode": "0xB7",
199 "MSRValue": "0x0080203091 ",
200 "Counter": "0,1",
201 "UMask": "0x1",
202 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.MCDRAM_NEAR",
203 "MSRIndex": "0x1a6,0x1a7",
204 "SampleAfterValue": "100007",
205 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for data responses from MCDRAM Local.",
206 "Offcore": "1"
207 },
208 {
209 "EventCode": "0xB7",
210 "MSRValue": "0x0101003091 ",
211 "Counter": "0,1",
212 "UMask": "0x1",
213 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.DDR_FAR",
214 "MSRIndex": "0x1a6,0x1a7",
215 "SampleAfterValue": "100007",
216 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for data responses from DRAM Far. ",
217 "Offcore": "1"
218 },
219 {
220 "EventCode": "0xB7",
221 "MSRValue": "0x0080803091 ",
222 "Counter": "0,1",
223 "UMask": "0x1",
224 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.DDR_NEAR",
225 "MSRIndex": "0x1a6,0x1a7",
226 "SampleAfterValue": "100007",
227 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for data responses from DRAM Local.",
228 "Offcore": "1"
229 },
230 {
231 "EventCode": "0xB7",
232 "MSRValue": "0x0100408000 ",
233 "Counter": "0,1",
234 "UMask": "0x1",
235 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.MCDRAM_FAR",
236 "MSRIndex": "0x1a6,0x1a7",
237 "SampleAfterValue": "100007",
238 "BriefDescription": "Counts any request that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
239 "Offcore": "1"
240 },
241 {
242 "EventCode": "0xB7",
243 "MSRValue": "0x0080208000 ",
244 "Counter": "0,1",
245 "UMask": "0x1",
246 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.MCDRAM_NEAR",
247 "MSRIndex": "0x1a6,0x1a7",
248 "SampleAfterValue": "100007",
249 "BriefDescription": "Counts any request that accounts for data responses from MCDRAM Local.",
250 "Offcore": "1"
251 },
252 {
253 "EventCode": "0xB7",
254 "MSRValue": "0x0101008000 ",
255 "Counter": "0,1",
256 "UMask": "0x1",
257 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.DDR_FAR",
258 "MSRIndex": "0x1a6,0x1a7",
259 "SampleAfterValue": "100007",
260 "BriefDescription": "Counts any request that accounts for data responses from DRAM Far. ",
261 "Offcore": "1"
262 },
263 {
264 "EventCode": "0xB7",
265 "MSRValue": "0x0080808000 ",
266 "Counter": "0,1",
267 "UMask": "0x1",
268 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.DDR_NEAR",
269 "MSRIndex": "0x1a6,0x1a7",
270 "SampleAfterValue": "100007",
271 "BriefDescription": "Counts any request that accounts for data responses from DRAM Local.",
272 "Offcore": "1"
273 },
274 {
275 "EventCode": "0xB7",
276 "MSRValue": "0x0100402000 ",
277 "Counter": "0,1",
278 "UMask": "0x1",
279 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.MCDRAM_FAR",
280 "MSRIndex": "0x1a6,0x1a7",
281 "SampleAfterValue": "100007",
282 "BriefDescription": "Counts L1 data HW prefetches that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
283 "Offcore": "1"
284 },
285 {
286 "EventCode": "0xB7",
287 "MSRValue": "0x0080202000 ",
288 "Counter": "0,1",
289 "UMask": "0x1",
290 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.MCDRAM_NEAR",
291 "MSRIndex": "0x1a6,0x1a7",
292 "SampleAfterValue": "100007",
293 "BriefDescription": "Counts L1 data HW prefetches that accounts for data responses from MCDRAM Local.",
294 "Offcore": "1"
295 },
296 {
297 "EventCode": "0xB7",
298 "MSRValue": "0x0101002000 ",
299 "Counter": "0,1",
300 "UMask": "0x1",
301 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.DDR_FAR",
302 "MSRIndex": "0x1a6,0x1a7",
303 "SampleAfterValue": "100007",
304 "BriefDescription": "Counts L1 data HW prefetches that accounts for data responses from DRAM Far. ",
305 "Offcore": "1"
306 },
307 {
308 "EventCode": "0xB7",
309 "MSRValue": "0x0080802000 ",
310 "Counter": "0,1",
311 "UMask": "0x1",
312 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.DDR_NEAR",
313 "MSRIndex": "0x1a6,0x1a7",
314 "SampleAfterValue": "100007",
315 "BriefDescription": "Counts L1 data HW prefetches that accounts for data responses from DRAM Local.",
316 "Offcore": "1"
317 },
318 {
319 "EventCode": "0xB7",
320 "MSRValue": "0x0100401000 ",
321 "Counter": "0,1",
322 "UMask": "0x1",
323 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.MCDRAM_FAR",
324 "MSRIndex": "0x1a6,0x1a7",
325 "SampleAfterValue": "100007",
326 "BriefDescription": "Counts Software Prefetches that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
327 "Offcore": "1"
328 },
329 {
330 "EventCode": "0xB7",
331 "MSRValue": "0x0080201000 ",
332 "Counter": "0,1",
333 "UMask": "0x1",
334 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.MCDRAM_NEAR",
335 "MSRIndex": "0x1a6,0x1a7",
336 "SampleAfterValue": "100007",
337 "BriefDescription": "Counts Software Prefetches that accounts for data responses from MCDRAM Local.",
338 "Offcore": "1"
339 },
340 {
341 "EventCode": "0xB7",
342 "MSRValue": "0x0101001000 ",
343 "Counter": "0,1",
344 "UMask": "0x1",
345 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.DDR_FAR",
346 "MSRIndex": "0x1a6,0x1a7",
347 "SampleAfterValue": "100007",
348 "BriefDescription": "Counts Software Prefetches that accounts for data responses from DRAM Far. ",
349 "Offcore": "1"
350 },
351 {
352 "EventCode": "0xB7",
353 "MSRValue": "0x0080801000 ",
354 "Counter": "0,1",
355 "UMask": "0x1",
356 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.DDR_NEAR",
357 "MSRIndex": "0x1a6,0x1a7",
358 "SampleAfterValue": "100007",
359 "BriefDescription": "Counts Software Prefetches that accounts for data responses from DRAM Local.",
360 "Offcore": "1"
361 },
362 {
363 "EventCode": "0xB7",
364 "MSRValue": "0x0100400400 ",
365 "Counter": "0,1",
366 "UMask": "0x1",
367 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.MCDRAM_FAR",
368 "MSRIndex": "0x1a6,0x1a7",
369 "SampleAfterValue": "100007",
370 "BriefDescription": "Counts Bus locks and split lock requests that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
371 "Offcore": "1"
372 },
373 {
374 "EventCode": "0xB7",
375 "MSRValue": "0x0080200400 ",
376 "Counter": "0,1",
377 "UMask": "0x1",
378 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.MCDRAM_NEAR",
379 "MSRIndex": "0x1a6,0x1a7",
380 "SampleAfterValue": "100007",
381 "BriefDescription": "Counts Bus locks and split lock requests that accounts for data responses from MCDRAM Local.",
382 "Offcore": "1"
383 },
384 {
385 "EventCode": "0xB7",
386 "MSRValue": "0x0101000400 ",
387 "Counter": "0,1",
388 "UMask": "0x1",
389 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.DDR_FAR",
390 "MSRIndex": "0x1a6,0x1a7",
391 "SampleAfterValue": "100007",
392 "BriefDescription": "Counts Bus locks and split lock requests that accounts for data responses from DRAM Far. ",
393 "Offcore": "1"
394 },
395 {
396 "EventCode": "0xB7",
397 "MSRValue": "0x0080800400 ",
398 "Counter": "0,1",
399 "UMask": "0x1",
400 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.DDR_NEAR",
401 "MSRIndex": "0x1a6,0x1a7",
402 "SampleAfterValue": "100007",
403 "BriefDescription": "Counts Bus locks and split lock requests that accounts for data responses from DRAM Local.",
404 "Offcore": "1"
405 },
406 {
407 "EventCode": "0xB7",
408 "MSRValue": "0x0100400200 ",
409 "Counter": "0,1",
410 "UMask": "0x1",
411 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.MCDRAM_FAR",
412 "MSRIndex": "0x1a6,0x1a7",
413 "SampleAfterValue": "100007",
414 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
415 "Offcore": "1"
416 },
417 {
418 "EventCode": "0xB7",
419 "MSRValue": "0x0080200200 ",
420 "Counter": "0,1",
421 "UMask": "0x1",
422 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.MCDRAM_NEAR",
423 "MSRIndex": "0x1a6,0x1a7",
424 "SampleAfterValue": "100007",
425 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for data responses from MCDRAM Local.",
426 "Offcore": "1"
427 },
428 {
429 "EventCode": "0xB7",
430 "MSRValue": "0x0101000200 ",
431 "Counter": "0,1",
432 "UMask": "0x1",
433 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.DDR_FAR",
434 "MSRIndex": "0x1a6,0x1a7",
435 "SampleAfterValue": "100007",
436 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for data responses from DRAM Far. ",
437 "Offcore": "1"
438 },
439 {
440 "EventCode": "0xB7",
441 "MSRValue": "0x0080800200 ",
442 "Counter": "0,1",
443 "UMask": "0x1",
444 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.DDR_NEAR",
445 "MSRIndex": "0x1a6,0x1a7",
446 "SampleAfterValue": "100007",
447 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for data responses from DRAM Local.",
448 "Offcore": "1"
449 },
450 {
451 "EventCode": "0xB7",
452 "MSRValue": "0x0100400100 ",
453 "Counter": "0,1",
454 "UMask": "0x1",
455 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.MCDRAM_FAR",
456 "MSRIndex": "0x1a7",
457 "SampleAfterValue": "100007",
458 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
459 "Offcore": "1"
460 },
461 {
462 "EventCode": "0xB7",
463 "MSRValue": "0x0080200100 ",
464 "Counter": "0,1",
465 "UMask": "0x1",
466 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.MCDRAM_NEAR",
467 "MSRIndex": "0x1a7",
468 "SampleAfterValue": "100007",
469 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for data responses from MCDRAM Local.",
470 "Offcore": "1"
471 },
472 {
473 "EventCode": "0xB7",
474 "MSRValue": "0x0101000100 ",
475 "Counter": "0,1",
476 "UMask": "0x1",
477 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.DDR_FAR",
478 "MSRIndex": "0x1a7",
479 "SampleAfterValue": "100007",
480 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for data responses from DRAM Far. ",
481 "Offcore": "1"
482 },
483 {
484 "EventCode": "0xB7",
485 "MSRValue": "0x0080800100 ",
486 "Counter": "0,1",
487 "UMask": "0x1",
488 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.DDR_NEAR",
489 "MSRIndex": "0x1a7",
490 "SampleAfterValue": "100007",
491 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for data responses from DRAM Local.",
492 "Offcore": "1"
493 },
494 {
495 "EventCode": "0xB7",
496 "MSRValue": "0x2000020080 ",
497 "Counter": "0,1",
498 "UMask": "0x1",
499 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.NON_DRAM",
500 "MSRIndex": "0x1a6,0x1a7",
501 "SampleAfterValue": "100007",
502 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses from any NON_DRAM system address. This includes MMIO transactions",
503 "Offcore": "1"
504 },
505 {
506 "EventCode": "0xB7",
507 "MSRValue": "0x0100400080 ",
508 "Counter": "0,1",
509 "UMask": "0x1",
510 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.MCDRAM_FAR",
511 "MSRIndex": "0x1a6,0x1a7",
512 "SampleAfterValue": "100007",
513 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
514 "Offcore": "1"
515 },
516 {
517 "EventCode": "0xB7",
518 "MSRValue": "0x0080200080 ",
519 "Counter": "0,1",
520 "UMask": "0x1",
521 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.MCDRAM_NEAR",
522 "MSRIndex": "0x1a6,0x1a7",
523 "SampleAfterValue": "100007",
524 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for data responses from MCDRAM Local.",
525 "Offcore": "1"
526 },
527 {
528 "EventCode": "0xB7",
529 "MSRValue": "0x0101000080 ",
530 "Counter": "0,1",
531 "UMask": "0x1",
532 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.DDR_FAR",
533 "MSRIndex": "0x1a6,0x1a7",
534 "SampleAfterValue": "100007",
535 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for data responses from DRAM Far. ",
536 "Offcore": "1"
537 },
538 {
539 "EventCode": "0xB7",
540 "MSRValue": "0x0080800080 ",
541 "Counter": "0,1",
542 "UMask": "0x1",
543 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.DDR_NEAR",
544 "MSRIndex": "0x1a6,0x1a7",
545 "SampleAfterValue": "100007",
546 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for data responses from DRAM Local.",
547 "Offcore": "1"
548 },
549 {
550 "EventCode": "0xB7",
551 "MSRValue": "0x0100400040 ",
552 "Counter": "0,1",
553 "UMask": "0x1",
554 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.MCDRAM_FAR",
555 "MSRIndex": "0x1a6,0x1a7",
556 "SampleAfterValue": "100007",
557 "BriefDescription": "Counts L2 code HW prefetches that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
558 "Offcore": "1"
559 },
560 {
561 "EventCode": "0xB7",
562 "MSRValue": "0x0080200040 ",
563 "Counter": "0,1",
564 "UMask": "0x1",
565 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.MCDRAM_NEAR",
566 "MSRIndex": "0x1a6,0x1a7",
567 "SampleAfterValue": "100007",
568 "BriefDescription": "Counts L2 code HW prefetches that accounts for data responses from MCDRAM Local.",
569 "Offcore": "1"
570 },
571 {
572 "EventCode": "0xB7",
573 "MSRValue": "0x0101000040 ",
574 "Counter": "0,1",
575 "UMask": "0x1",
576 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.DDR_FAR",
577 "MSRIndex": "0x1a6,0x1a7",
578 "SampleAfterValue": "100007",
579 "BriefDescription": "Counts L2 code HW prefetches that accounts for data responses from DRAM Far. ",
580 "Offcore": "1"
581 },
582 {
583 "EventCode": "0xB7",
584 "MSRValue": "0x0080800040 ",
585 "Counter": "0,1",
586 "UMask": "0x1",
587 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.DDR_NEAR",
588 "MSRIndex": "0x1a6,0x1a7",
589 "SampleAfterValue": "100007",
590 "BriefDescription": "Counts L2 code HW prefetches that accounts for data responses from DRAM Local.",
591 "Offcore": "1"
592 },
593 {
594 "EventCode": "0xB7",
595 "MSRValue": "0x2000020020 ",
596 "Counter": "0,1",
597 "UMask": "0x1",
598 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.NON_DRAM",
599 "MSRIndex": "0x1a6,0x1a7",
600 "SampleAfterValue": "100007",
601 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses from any NON_DRAM system address. This includes MMIO transactions",
602 "Offcore": "1"
603 },
604 {
605 "EventCode": "0xB7",
606 "MSRValue": "0x0100400020 ",
607 "Counter": "0,1",
608 "UMask": "0x1",
609 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.MCDRAM_FAR",
610 "MSRIndex": "0x1a6,0x1a7",
611 "SampleAfterValue": "100007",
612 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
613 "Offcore": "1"
614 },
615 {
616 "EventCode": "0xB7",
617 "MSRValue": "0x0080200020 ",
618 "Counter": "0,1",
619 "UMask": "0x1",
620 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.MCDRAM_NEAR",
621 "MSRIndex": "0x1a6,0x1a7",
622 "SampleAfterValue": "100007",
623 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for data responses from MCDRAM Local.",
624 "Offcore": "1"
625 },
626 {
627 "EventCode": "0xB7",
628 "MSRValue": "0x0101000020 ",
629 "Counter": "0,1",
630 "UMask": "0x1",
631 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.DDR_FAR",
632 "MSRIndex": "0x1a6,0x1a7",
633 "SampleAfterValue": "100007",
634 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for data responses from DRAM Far. ",
635 "Offcore": "1"
636 },
637 {
638 "EventCode": "0xB7",
639 "MSRValue": "0x0080800020 ",
640 "Counter": "0,1",
641 "UMask": "0x1",
642 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.DDR_NEAR",
643 "MSRIndex": "0x1a6,0x1a7",
644 "SampleAfterValue": "100007",
645 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for data responses from DRAM Local.",
646 "Offcore": "1"
647 },
648 {
649 "EventCode": "0xB7",
650 "MSRValue": "0x0100400004 ",
651 "Counter": "0,1",
652 "UMask": "0x1",
653 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.MCDRAM_FAR",
654 "MSRIndex": "0x1a6,0x1a7",
655 "SampleAfterValue": "100007",
656 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
657 "Offcore": "1"
658 },
659 {
660 "EventCode": "0xB7",
661 "MSRValue": "0x0080200004 ",
662 "Counter": "0,1",
663 "UMask": "0x1",
664 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.MCDRAM_NEAR",
665 "MSRIndex": "0x1a6,0x1a7",
666 "SampleAfterValue": "100007",
667 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for data responses from MCDRAM Local.",
668 "Offcore": "1"
669 },
670 {
671 "EventCode": "0xB7",
672 "MSRValue": "0x0101000004 ",
673 "Counter": "0,1",
674 "UMask": "0x1",
675 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.DDR_FAR",
676 "MSRIndex": "0x1a6,0x1a7",
677 "SampleAfterValue": "100007",
678 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for data responses from DRAM Far. ",
679 "Offcore": "1"
680 },
681 {
682 "EventCode": "0xB7",
683 "MSRValue": "0x0080800004 ",
684 "Counter": "0,1",
685 "UMask": "0x1",
686 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.DDR_NEAR",
687 "MSRIndex": "0x1a6,0x1a7",
688 "SampleAfterValue": "100007",
689 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for data responses from DRAM Local.",
690 "Offcore": "1"
691 },
692 {
693 "EventCode": "0xB7",
694 "MSRValue": "0x0100400002 ",
695 "Counter": "0,1",
696 "UMask": "0x1",
697 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.MCDRAM_FAR",
698 "MSRIndex": "0x1a6,0x1a7",
699 "SampleAfterValue": "100007",
700 "BriefDescription": "Counts Demand cacheable data writes that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
701 "Offcore": "1"
702 },
703 {
704 "EventCode": "0xB7",
705 "MSRValue": "0x0080200002 ",
706 "Counter": "0,1",
707 "UMask": "0x1",
708 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.MCDRAM_NEAR",
709 "MSRIndex": "0x1a6,0x1a7",
710 "SampleAfterValue": "100007",
711 "BriefDescription": "Counts Demand cacheable data writes that accounts for data responses from MCDRAM Local.",
712 "Offcore": "1"
713 },
714 {
715 "EventCode": "0xB7",
716 "MSRValue": "0x0101000002 ",
717 "Counter": "0,1",
718 "UMask": "0x1",
719 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.DDR_FAR",
720 "MSRIndex": "0x1a6,0x1a7",
721 "SampleAfterValue": "100007",
722 "BriefDescription": "Counts Demand cacheable data writes that accounts for data responses from DRAM Far. ",
723 "Offcore": "1"
724 },
725 {
726 "EventCode": "0xB7",
727 "MSRValue": "0x0080800002 ",
728 "Counter": "0,1",
729 "UMask": "0x1",
730 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.DDR_NEAR",
731 "MSRIndex": "0x1a6,0x1a7",
732 "SampleAfterValue": "100007",
733 "BriefDescription": "Counts Demand cacheable data writes that accounts for data responses from DRAM Local.",
734 "Offcore": "1"
735 },
736 {
737 "EventCode": "0xB7",
738 "MSRValue": "0x0100400001 ",
739 "Counter": "0,1",
740 "UMask": "0x1",
741 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.MCDRAM_FAR",
742 "MSRIndex": "0x1a6,0x1a7",
743 "SampleAfterValue": "100007",
744 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for data responses from MCDRAM Far or Other tile L2 hit far. ",
745 "Offcore": "1"
746 },
747 {
748 "EventCode": "0xB7",
749 "MSRValue": "0x0080200001 ",
750 "Counter": "0,1",
751 "UMask": "0x1",
752 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.MCDRAM_NEAR",
753 "MSRIndex": "0x1a6,0x1a7",
754 "SampleAfterValue": "100007",
755 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for data responses from MCDRAM Local.",
756 "Offcore": "1"
757 },
758 {
759 "EventCode": "0xB7",
760 "MSRValue": "0x0101000001 ",
761 "Counter": "0,1",
762 "UMask": "0x1",
763 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.DDR_FAR",
764 "MSRIndex": "0x1a6,0x1a7",
765 "SampleAfterValue": "100007",
766 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for data responses from DRAM Far. ",
767 "Offcore": "1"
768 },
769 {
770 "EventCode": "0xB7",
771 "MSRValue": "0x0080800001 ",
772 "Counter": "0,1",
773 "UMask": "0x1",
774 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.DDR_NEAR",
775 "MSRIndex": "0x1a6,0x1a7",
776 "SampleAfterValue": "100007",
777 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for data responses from DRAM Local.",
778 "Offcore": "1"
779 },
780 {
781 "EventCode": "0xB7",
782 "MSRValue": "0x0180600001 ",
783 "Counter": "0,1",
784 "UMask": "0x1",
785 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.MCDRAM",
786 "MSRIndex": "0x1a6,0x1a7",
787 "SampleAfterValue": "100007",
788 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses from MCDRAM (local and far)",
789 "Offcore": "1"
790 },
791 {
792 "EventCode": "0xB7",
793 "MSRValue": "0x0180600002 ",
794 "Counter": "0,1",
795 "UMask": "0x1",
796 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.MCDRAM",
797 "MSRIndex": "0x1a6,0x1a7",
798 "SampleAfterValue": "100007",
799 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses from MCDRAM (local and far)",
800 "Offcore": "1"
801 },
802 {
803 "EventCode": "0xB7",
804 "MSRValue": "0x0180600004 ",
805 "Counter": "0,1",
806 "UMask": "0x1",
807 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.MCDRAM",
808 "MSRIndex": "0x1a6,0x1a7",
809 "SampleAfterValue": "100007",
810 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses from MCDRAM (local and far)",
811 "Offcore": "1"
812 },
813 {
814 "EventCode": "0xB7",
815 "MSRValue": "0x0180600020 ",
816 "Counter": "0,1",
817 "UMask": "0x1",
818 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.MCDRAM",
819 "MSRIndex": "0x1a6,0x1a7",
820 "SampleAfterValue": "100007",
821 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses from MCDRAM (local and far)",
822 "Offcore": "1"
823 },
824 {
825 "EventCode": "0xB7",
826 "MSRValue": "0x0180600080 ",
827 "Counter": "0,1",
828 "UMask": "0x1",
829 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.MCDRAM",
830 "MSRIndex": "0x1a6,0x1a7",
831 "SampleAfterValue": "100007",
832 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses from MCDRAM (local and far)",
833 "Offcore": "1"
834 },
835 {
836 "EventCode": "0xB7",
837 "MSRValue": "0x0180600100 ",
838 "Counter": "0,1",
839 "UMask": "0x1",
840 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.MCDRAM",
841 "MSRIndex": "0x1a7",
842 "SampleAfterValue": "100007",
843 "BriefDescription": "Counts Partial writes (UC or WT or WP and should be programmed on PMC1) that accounts for responses from MCDRAM (local and far)",
844 "Offcore": "1"
845 },
846 {
847 "EventCode": "0xB7",
848 "MSRValue": "0x0180600200 ",
849 "Counter": "0,1",
850 "UMask": "0x1",
851 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.MCDRAM",
852 "MSRIndex": "0x1a6,0x1a7",
853 "SampleAfterValue": "100007",
854 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses from MCDRAM (local and far)",
855 "Offcore": "1"
856 },
857 {
858 "EventCode": "0xB7",
859 "MSRValue": "0x0180600400 ",
860 "Counter": "0,1",
861 "UMask": "0x1",
862 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.MCDRAM",
863 "MSRIndex": "0x1a6,0x1a7",
864 "SampleAfterValue": "100007",
865 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses from MCDRAM (local and far)",
866 "Offcore": "1"
867 },
868 {
869 "EventCode": "0xB7",
870 "MSRValue": "0x0180601000 ",
871 "Counter": "0,1",
872 "UMask": "0x1",
873 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.MCDRAM",
874 "MSRIndex": "0x1a6,0x1a7",
875 "SampleAfterValue": "100007",
876 "BriefDescription": "Counts Software Prefetches that accounts for responses from MCDRAM (local and far)",
877 "Offcore": "1"
878 },
879 {
880 "EventCode": "0xB7",
881 "MSRValue": "0x0180608000 ",
882 "Counter": "0,1",
883 "UMask": "0x1",
884 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.MCDRAM",
885 "MSRIndex": "0x1a6,0x1a7",
886 "SampleAfterValue": "100007",
887 "BriefDescription": "Counts any request that accounts for responses from MCDRAM (local and far)",
888 "Offcore": "1"
889 },
890 {
891 "EventCode": "0xB7",
892 "MSRValue": "0x0180603091 ",
893 "Counter": "0,1",
894 "UMask": "0x1",
895 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.MCDRAM",
896 "MSRIndex": "0x1a6,0x1a7",
897 "SampleAfterValue": "100007",
898 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses from MCDRAM (local and far)",
899 "Offcore": "1"
900 },
901 {
902 "EventCode": "0xB7",
903 "MSRValue": "0x0180600022 ",
904 "Counter": "0,1",
905 "UMask": "0x1",
906 "EventName": "OFFCORE_RESPONSE.ANY_RFO.MCDRAM",
907 "MSRIndex": "0x1a6,0x1a7",
908 "SampleAfterValue": "100007",
909 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses from MCDRAM (local and far)",
910 "Offcore": "1"
911 },
912 {
913 "EventCode": "0xB7",
914 "MSRValue": "0x0180600044 ",
915 "Counter": "0,1",
916 "UMask": "0x1",
917 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.MCDRAM",
918 "MSRIndex": "0x1a6,0x1a7",
919 "SampleAfterValue": "100007",
920 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses from MCDRAM (local and far)",
921 "Offcore": "1"
922 },
923 {
924 "EventCode": "0xB7",
925 "MSRValue": "0x01806032f7 ",
926 "Counter": "0,1",
927 "UMask": "0x1",
928 "EventName": "OFFCORE_RESPONSE.ANY_READ.MCDRAM",
929 "MSRIndex": "0x1a6,0x1a7",
930 "SampleAfterValue": "100007",
931 "BriefDescription": "Counts any Read request that accounts for responses from MCDRAM (local and far)",
932 "Offcore": "1"
933 },
934 {
935 "EventCode": "0xB7",
936 "MSRValue": "0x0180600070 ",
937 "Counter": "0,1",
938 "UMask": "0x1",
939 "EventName": "OFFCORE_RESPONSE.ANY_PF_L2.MCDRAM",
940 "MSRIndex": "0x1a6,0x1a7",
941 "SampleAfterValue": "100007",
942 "BriefDescription": "Counts any Prefetch requests that accounts for responses from MCDRAM (local and far)",
943 "Offcore": "1"
944 },
945 {
946 "EventCode": "0xB7",
947 "MSRValue": "0x0181800001 ",
948 "Counter": "0,1",
949 "UMask": "0x1",
950 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.DDR",
951 "MSRIndex": "0x1a6,0x1a7",
952 "SampleAfterValue": "100007",
953 "BriefDescription": "Counts demand cacheable data and L1 prefetch data reads that accounts for responses from DDR (local and far)",
954 "Offcore": "1"
955 },
956 {
957 "EventCode": "0xB7",
958 "MSRValue": "0x0181800002 ",
959 "Counter": "0,1",
960 "UMask": "0x1",
961 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.DDR",
962 "MSRIndex": "0x1a6,0x1a7",
963 "SampleAfterValue": "100007",
964 "BriefDescription": "Counts Demand cacheable data writes that accounts for responses from DDR (local and far)",
965 "Offcore": "1"
966 },
967 {
968 "EventCode": "0xB7",
969 "MSRValue": "0x0181800004 ",
970 "Counter": "0,1",
971 "UMask": "0x1",
972 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.DDR",
973 "MSRIndex": "0x1a6,0x1a7",
974 "SampleAfterValue": "100007",
975 "BriefDescription": "Counts demand code reads and prefetch code reads that accounts for responses from DDR (local and far)",
976 "Offcore": "1"
977 },
978 {
979 "EventCode": "0xB7",
980 "MSRValue": "0x0181800020 ",
981 "Counter": "0,1",
982 "UMask": "0x1",
983 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.DDR",
984 "MSRIndex": "0x1a6,0x1a7",
985 "SampleAfterValue": "100007",
986 "BriefDescription": "Counts L2 data RFO prefetches (includes PREFETCHW instruction) that accounts for responses from DDR (local and far)",
987 "Offcore": "1"
988 },
989 {
990 "EventCode": "0xB7",
991 "MSRValue": "0x0181800040 ",
992 "Counter": "0,1",
993 "UMask": "0x1",
994 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.DDR",
995 "MSRIndex": "0x1a6,0x1a7",
996 "SampleAfterValue": "100007",
997 "BriefDescription": "Counts L2 code HW prefetches that accounts for responses from DDR (local and far)",
998 "Offcore": "1"
999 },
1000 {
1001 "EventCode": "0xB7",
1002 "MSRValue": "0x0181800080 ",
1003 "Counter": "0,1",
1004 "UMask": "0x1",
1005 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.DDR",
1006 "MSRIndex": "0x1a6,0x1a7",
1007 "SampleAfterValue": "100007",
1008 "BriefDescription": "Counts Partial reads (UC or WC and is valid only for Outstanding response type). that accounts for responses from DDR (local and far)",
1009 "Offcore": "1"
1010 },
1011 {
1012 "EventCode": "0xB7",
1013 "MSRValue": "0x0181800200 ",
1014 "Counter": "0,1",
1015 "UMask": "0x1",
1016 "EventName": "OFFCORE_RESPONSE.UC_CODE_READS.DDR",
1017 "MSRIndex": "0x1a6,0x1a7",
1018 "SampleAfterValue": "100007",
1019 "BriefDescription": "Counts UC code reads (valid only for Outstanding response type) that accounts for responses from DDR (local and far)",
1020 "Offcore": "1"
1021 },
1022 {
1023 "EventCode": "0xB7",
1024 "MSRValue": "0x0181800400 ",
1025 "Counter": "0,1",
1026 "UMask": "0x1",
1027 "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.DDR",
1028 "MSRIndex": "0x1a6,0x1a7",
1029 "SampleAfterValue": "100007",
1030 "BriefDescription": "Counts Bus locks and split lock requests that accounts for responses from DDR (local and far)",
1031 "Offcore": "1"
1032 },
1033 {
1034 "EventCode": "0xB7",
1035 "MSRValue": "0x0181801000 ",
1036 "Counter": "0,1",
1037 "UMask": "0x1",
1038 "EventName": "OFFCORE_RESPONSE.PF_SOFTWARE.DDR",
1039 "MSRIndex": "0x1a6,0x1a7",
1040 "SampleAfterValue": "100007",
1041 "BriefDescription": "Counts Software Prefetches that accounts for responses from DDR (local and far)",
1042 "Offcore": "1"
1043 },
1044 {
1045 "EventCode": "0xB7",
1046 "MSRValue": "0x0181802000 ",
1047 "Counter": "0,1",
1048 "UMask": "0x1",
1049 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.DDR",
1050 "MSRIndex": "0x1a6,0x1a7",
1051 "SampleAfterValue": "100007",
1052 "BriefDescription": "Counts L1 data HW prefetches that accounts for responses from DDR (local and far)",
1053 "Offcore": "1"
1054 },
1055 {
1056 "EventCode": "0xB7",
1057 "MSRValue": "0x0181808000 ",
1058 "Counter": "0,1",
1059 "UMask": "0x1",
1060 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.DDR",
1061 "MSRIndex": "0x1a6,0x1a7",
1062 "SampleAfterValue": "100007",
1063 "BriefDescription": "Counts any request that accounts for responses from DDR (local and far)",
1064 "Offcore": "1"
1065 },
1066 {
1067 "EventCode": "0xB7",
1068 "MSRValue": "0x0181803091 ",
1069 "Counter": "0,1",
1070 "UMask": "0x1",
1071 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.DDR",
1072 "MSRIndex": "0x1a6,0x1a7",
1073 "SampleAfterValue": "100007",
1074 "BriefDescription": "Counts Demand cacheable data and L1 prefetch data read requests that accounts for responses from DDR (local and far)",
1075 "Offcore": "1"
1076 },
1077 {
1078 "EventCode": "0xB7",
1079 "MSRValue": "0x0181800022 ",
1080 "Counter": "0,1",
1081 "UMask": "0x1",
1082 "EventName": "OFFCORE_RESPONSE.ANY_RFO.DDR",
1083 "MSRIndex": "0x1a6,0x1a7",
1084 "SampleAfterValue": "100007",
1085 "BriefDescription": "Counts Demand cacheable data write requests that accounts for responses from DDR (local and far)",
1086 "Offcore": "1"
1087 },
1088 {
1089 "EventCode": "0xB7",
1090 "MSRValue": "0x0181800044 ",
1091 "Counter": "0,1",
1092 "UMask": "0x1",
1093 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.DDR",
1094 "MSRIndex": "0x1a6,0x1a7",
1095 "SampleAfterValue": "100007",
1096 "BriefDescription": "Counts Demand code reads and prefetch code read requests that accounts for responses from DDR (local and far)",
1097 "Offcore": "1"
1098 },
1099 {
1100 "EventCode": "0xB7",
1101 "MSRValue": "0x01818032f7 ",
1102 "Counter": "0,1",
1103 "UMask": "0x1",
1104 "EventName": "OFFCORE_RESPONSE.ANY_READ.DDR",
1105 "MSRIndex": "0x1a6,0x1a7",
1106 "SampleAfterValue": "100007",
1107 "BriefDescription": "Counts any Read request that accounts for responses from DDR (local and far)",
1108 "Offcore": "1"
1109 }
1110] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/knightslanding/pipeline.json b/tools/perf/pmu-events/arch/x86/knightslanding/pipeline.json
new file mode 100644
index 000000000000..bb5494cfb5ae
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/knightslanding/pipeline.json
@@ -0,0 +1,435 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xC4",
5 "Counter": "0,1",
6 "UMask": "0x0",
7 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Counts the number of branch instructions retired"
10 },
11 {
12 "PEBS": "1",
13 "EventCode": "0xC4",
14 "Counter": "0,1",
15 "UMask": "0x7e",
16 "EventName": "BR_INST_RETIRED.JCC",
17 "SampleAfterValue": "200003",
18 "BriefDescription": "Counts the number of branch instructions retired that were conditional jumps."
19 },
20 {
21 "PEBS": "1",
22 "EventCode": "0xC4",
23 "Counter": "0,1",
24 "UMask": "0xfe",
25 "EventName": "BR_INST_RETIRED.TAKEN_JCC",
26 "SampleAfterValue": "200003",
27 "BriefDescription": "Counts the number of branch instructions retired that were conditional jumps and predicted taken."
28 },
29 {
30 "PEBS": "1",
31 "EventCode": "0xC4",
32 "Counter": "0,1",
33 "UMask": "0xf9",
34 "EventName": "BR_INST_RETIRED.CALL",
35 "SampleAfterValue": "200003",
36 "BriefDescription": "Counts the number of near CALL branch instructions retired."
37 },
38 {
39 "PEBS": "1",
40 "EventCode": "0xC4",
41 "Counter": "0,1",
42 "UMask": "0xfd",
43 "EventName": "BR_INST_RETIRED.REL_CALL",
44 "SampleAfterValue": "200003",
45 "BriefDescription": "Counts the number of near relative CALL branch instructions retired."
46 },
47 {
48 "PEBS": "1",
49 "EventCode": "0xC4",
50 "Counter": "0,1",
51 "UMask": "0xfb",
52 "EventName": "BR_INST_RETIRED.IND_CALL",
53 "SampleAfterValue": "200003",
54 "BriefDescription": "Counts the number of near indirect CALL branch instructions retired."
55 },
56 {
57 "PEBS": "1",
58 "EventCode": "0xC4",
59 "Counter": "0,1",
60 "UMask": "0xf7",
61 "EventName": "BR_INST_RETIRED.RETURN",
62 "SampleAfterValue": "200003",
63 "BriefDescription": "Counts the number of near RET branch instructions retired."
64 },
65 {
66 "PEBS": "1",
67 "EventCode": "0xC4",
68 "Counter": "0,1",
69 "UMask": "0xeb",
70 "EventName": "BR_INST_RETIRED.NON_RETURN_IND",
71 "SampleAfterValue": "200003",
72 "BriefDescription": "Counts the number of branch instructions retired that were near indirect CALL or near indirect JMP."
73 },
74 {
75 "PEBS": "1",
76 "EventCode": "0xC4",
77 "Counter": "0,1",
78 "UMask": "0xbf",
79 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
80 "SampleAfterValue": "200003",
81 "BriefDescription": "Counts the number of far branch instructions retired."
82 },
83 {
84 "PEBS": "1",
85 "EventCode": "0xC5",
86 "Counter": "0,1",
87 "UMask": "0x0",
88 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
89 "SampleAfterValue": "200003",
90 "BriefDescription": "Counts the number of mispredicted branch instructions retired"
91 },
92 {
93 "PEBS": "1",
94 "EventCode": "0xC5",
95 "Counter": "0,1",
96 "UMask": "0x7e",
97 "EventName": "BR_MISP_RETIRED.JCC",
98 "SampleAfterValue": "200003",
99 "BriefDescription": "Counts the number of mispredicted branch instructions retired that were conditional jumps."
100 },
101 {
102 "PEBS": "1",
103 "EventCode": "0xC5",
104 "Counter": "0,1",
105 "UMask": "0xfe",
106 "EventName": "BR_MISP_RETIRED.TAKEN_JCC",
107 "SampleAfterValue": "200003",
108 "BriefDescription": "Counts the number of mispredicted branch instructions retired that were conditional jumps and predicted taken."
109 },
110 {
111 "PEBS": "1",
112 "EventCode": "0xC5",
113 "Counter": "0,1",
114 "UMask": "0xfb",
115 "EventName": "BR_MISP_RETIRED.IND_CALL",
116 "SampleAfterValue": "200003",
117 "BriefDescription": "Counts the number of mispredicted near indirect CALL branch instructions retired."
118 },
119 {
120 "PEBS": "1",
121 "EventCode": "0xC5",
122 "Counter": "0,1",
123 "UMask": "0xf7",
124 "EventName": "BR_MISP_RETIRED.RETURN",
125 "SampleAfterValue": "200003",
126 "BriefDescription": "Counts the number of mispredicted near RET branch instructions retired."
127 },
128 {
129 "PEBS": "1",
130 "EventCode": "0xC5",
131 "Counter": "0,1",
132 "UMask": "0xeb",
133 "EventName": "BR_MISP_RETIRED.NON_RETURN_IND",
134 "SampleAfterValue": "200003",
135 "BriefDescription": "Counts the number of mispredicted branch instructions retired that were near indirect CALL or near indirect JMP."
136 },
137 {
138 "PublicDescription": "This event counts the number of micro-ops retired that were supplied from MSROM.",
139 "EventCode": "0xC2",
140 "Counter": "0,1",
141 "UMask": "0x1",
142 "EventName": "UOPS_RETIRED.MS",
143 "SampleAfterValue": "2000003",
144 "BriefDescription": "Counts the number of micro-ops retired that are from the complex flows issued by the micro-sequencer (MS)."
145 },
146 {
147 "PublicDescription": "This event counts the number of micro-ops (uops) retired. The processor decodes complex macro instructions into a sequence of simpler uops. Most instructions are composed of one or two uops. Some instructions are decoded into longer sequences such as repeat instructions, floating point transcendental instructions, and assists. ",
148 "EventCode": "0xC2",
149 "Counter": "0,1",
150 "UMask": "0x10",
151 "EventName": "UOPS_RETIRED.ALL",
152 "SampleAfterValue": "2000003",
153 "BriefDescription": "Counts the number of micro-ops retired"
154 },
155 {
156 "PublicDescription": "This event counts the number of scalar SSE, AVX, AVX2, AVX-512 micro-ops retired (floating point, integer and store) except for loads (memory-to-register mov-type micro ops), division, sqrt.",
157 "EventCode": "0xC2",
158 "Counter": "0,1",
159 "UMask": "0x20",
160 "EventName": "UOPS_RETIRED.SCALAR_SIMD",
161 "SampleAfterValue": "200003",
162 "BriefDescription": "Counts the number of scalar SSE, AVX, AVX2, AVX-512 micro-ops retired. More specifically, it counts scalar SSE, AVX, AVX2, AVX-512 micro-ops except for loads (memory-to-register mov-type micro ops), division, sqrt."
163 },
164 {
165 "PublicDescription": "This event counts the number of packed vector SSE, AVX, AVX2, and AVX-512 micro-ops retired (floating point, integer and store) except for loads (memory-to-register mov-type micro-ops), packed byte and word multiplies.",
166 "EventCode": "0xC2",
167 "Counter": "0,1",
168 "UMask": "0x40",
169 "EventName": "UOPS_RETIRED.PACKED_SIMD",
170 "SampleAfterValue": "200003",
171 "BriefDescription": "Counts the number of vector SSE, AVX, AVX2, AVX-512 micro-ops retired. More specifically, it counts packed SSE, AVX, AVX2, AVX-512 micro-ops (both floating point and integer) except for loads (memory-to-register mov-type micro-ops), packed byte and word multiplies."
172 },
173 {
174 "EventCode": "0xC3",
175 "Counter": "0,1",
176 "UMask": "0x1",
177 "EventName": "MACHINE_CLEARS.SMC",
178 "SampleAfterValue": "200003",
179 "BriefDescription": "Counts the number of times that the machine clears due to program modifying data within 1K of a recently fetched code page"
180 },
181 {
182 "PublicDescription": "This event counts the number of times that the pipeline stalled due to FP operations needing assists.",
183 "EventCode": "0xC3",
184 "Counter": "0,1",
185 "UMask": "0x4",
186 "EventName": "MACHINE_CLEARS.FP_ASSIST",
187 "SampleAfterValue": "200003",
188 "BriefDescription": "Counts the number of floating operations retired that required microcode assists"
189 },
190 {
191 "EventCode": "0xC3",
192 "Counter": "0,1",
193 "UMask": "0x8",
194 "EventName": "MACHINE_CLEARS.ALL",
195 "SampleAfterValue": "200003",
196 "BriefDescription": "Counts all nukes"
197 },
198 {
199 "EventCode": "0xCA",
200 "Counter": "0,1",
201 "UMask": "0x1",
202 "EventName": "NO_ALLOC_CYCLES.ROB_FULL",
203 "SampleAfterValue": "200003",
204 "BriefDescription": "Counts the number of core cycles when no micro-ops are allocated and the ROB is full"
205 },
206 {
207 "PublicDescription": "This event counts the number of core cycles when no uops are allocated and the alloc pipe is stalled waiting for a mispredicted branch to retire.",
208 "EventCode": "0xCA",
209 "Counter": "0,1",
210 "UMask": "0x4",
211 "EventName": "NO_ALLOC_CYCLES.MISPREDICTS",
212 "SampleAfterValue": "200003",
213 "BriefDescription": "Counts the number of core cycles when no micro-ops are allocated and the alloc pipe is stalled waiting for a mispredicted branch to retire."
214 },
215 {
216 "EventCode": "0xCA",
217 "Counter": "0,1",
218 "UMask": "0x20",
219 "EventName": "NO_ALLOC_CYCLES.RAT_STALL",
220 "SampleAfterValue": "200003",
221 "BriefDescription": "Counts the number of core cycles when no micro-ops are allocated and a RATstall (caused by reservation station full) is asserted. "
222 },
223 {
224 "PublicDescription": "This event counts the number of core cycles when no uops are allocated, the instruction queue is empty and the alloc pipe is stalled waiting for instructions to be fetched.",
225 "EventCode": "0xCA",
226 "Counter": "0,1",
227 "UMask": "0x90",
228 "EventName": "NO_ALLOC_CYCLES.NOT_DELIVERED",
229 "SampleAfterValue": "200003",
230 "BriefDescription": "Counts the number of core cycles when no micro-ops are allocated, the IQ is empty, and no other condition is blocking allocation."
231 },
232 {
233 "EventCode": "0xCA",
234 "Counter": "0,1",
235 "UMask": "0x7f",
236 "EventName": "NO_ALLOC_CYCLES.ALL",
237 "SampleAfterValue": "200003",
238 "BriefDescription": "Counts the total number of core cycles when no micro-ops are allocated for any reason."
239 },
240 {
241 "EventCode": "0xCB",
242 "Counter": "0,1",
243 "UMask": "0x1",
244 "EventName": "RS_FULL_STALL.MEC",
245 "SampleAfterValue": "200003",
246 "BriefDescription": "Counts the number of core cycles when allocation pipeline is stalled and is waiting for a free MEC reservation station entry."
247 },
248 {
249 "EventCode": "0xCB",
250 "Counter": "0,1",
251 "UMask": "0x1f",
252 "EventName": "RS_FULL_STALL.ALL",
253 "SampleAfterValue": "200003",
254 "BriefDescription": "Counts the total number of core cycles the Alloc pipeline is stalled when any one of the reservation stations is full. "
255 },
256 {
257 "EventCode": "0xC0",
258 "Counter": "0,1",
259 "UMask": "0x0",
260 "EventName": "INST_RETIRED.ANY_P",
261 "SampleAfterValue": "2000003",
262 "BriefDescription": "Counts the total number of instructions retired"
263 },
264 {
265 "PublicDescription": "This event counts cycles when the divider is busy. More specifically cycles when the divide unit is unable to accept a new divide uop because it is busy processing a previously dispatched uop. The cycles will be counted irrespective of whether or not another divide uop is waiting to enter the divide unit (from the RS). This event counts integer divides, x87 divides, divss, divsd, sqrtss, sqrtsd event and does not count vector divides.",
266 "EventCode": "0xCD",
267 "Counter": "0,1",
268 "UMask": "0x1",
269 "EventName": "CYCLES_DIV_BUSY.ALL",
270 "SampleAfterValue": "2000003",
271 "BriefDescription": "Cycles the number of core cycles when divider is busy. Does not imply a stall waiting for the divider. "
272 },
273 {
274 "PublicDescription": "This event counts the number of instructions that retire. For instructions that consist of multiple micro-ops, this event counts exactly once, as the last micro-op of the instruction retires. The event continues counting while instructions retire, including during interrupt service routines caused by hardware interrupts, faults or traps.",
275 "EventCode": "0x00",
276 "Counter": "Fixed counter 1",
277 "UMask": "0x1",
278 "EventName": "INST_RETIRED.ANY",
279 "SampleAfterValue": "2000003",
280 "BriefDescription": "Fixed Counter: Counts the number of instructions retired"
281 },
282 {
283 "EventCode": "0x3C",
284 "Counter": "0,1",
285 "UMask": "0x0",
286 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
287 "SampleAfterValue": "2000003",
288 "BriefDescription": "Counts the number of unhalted core clock cycles"
289 },
290 {
291 "EventCode": "0x3C",
292 "Counter": "0,1",
293 "UMask": "0x1",
294 "EventName": "CPU_CLK_UNHALTED.REF",
295 "SampleAfterValue": "2000003",
296 "BriefDescription": "Counts the number of unhalted reference clock cycles"
297 },
298 {
299 "PublicDescription": "This event counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter\r\n",
300 "EventCode": "0x00",
301 "Counter": "Fixed counter 2",
302 "UMask": "0x2",
303 "EventName": "CPU_CLK_UNHALTED.THREAD",
304 "SampleAfterValue": "2000003",
305 "BriefDescription": "Fixed Counter: Counts the number of unhalted core clock cycles"
306 },
307 {
308 "EventCode": "0x00",
309 "Counter": "Fixed counter 3",
310 "UMask": "0x3",
311 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
312 "SampleAfterValue": "2000003",
313 "BriefDescription": "Fixed Counter: Counts the number of unhalted reference clock cycles"
314 },
315 {
316 "EventCode": "0xE6",
317 "Counter": "0,1",
318 "UMask": "0x1",
319 "EventName": "BACLEARS.ALL",
320 "SampleAfterValue": "200003",
321 "BriefDescription": "Counts the number of times the front end resteers for any branch as a result of another branch handling mechanism in the front end."
322 },
323 {
324 "EventCode": "0xE6",
325 "Counter": "0,1",
326 "UMask": "0x8",
327 "EventName": "BACLEARS.RETURN",
328 "SampleAfterValue": "200003",
329 "BriefDescription": "Counts the number of times the front end resteers for RET branches as a result of another branch handling mechanism in the front end."
330 },
331 {
332 "EventCode": "0xE6",
333 "Counter": "0,1",
334 "UMask": "0x10",
335 "EventName": "BACLEARS.COND",
336 "SampleAfterValue": "200003",
337 "BriefDescription": "Counts the number of times the front end resteers for conditional branches as a result of another branch handling mechanism in the front end."
338 },
339 {
340 "PEBS": "1",
341 "EventCode": "0x03",
342 "Counter": "0,1",
343 "UMask": "0x1",
344 "EventName": "RECYCLEQ.LD_BLOCK_ST_FORWARD",
345 "SampleAfterValue": "200003",
346 "BriefDescription": "Counts the number of occurences a retired load gets blocked because its address partially overlaps with a store ",
347 "Data_LA": "1"
348 },
349 {
350 "EventCode": "0x03",
351 "Counter": "0,1",
352 "UMask": "0x2",
353 "EventName": "RECYCLEQ.LD_BLOCK_STD_NOTREADY",
354 "SampleAfterValue": "200003",
355 "BriefDescription": "Counts the number of occurences a retired load gets blocked because its address overlaps with a store whose data is not ready"
356 },
357 {
358 "PublicDescription": "This event counts the number of retired store that experienced a cache line boundary split(Precise Event). Note that each spilt should be counted only once.",
359 "EventCode": "0x03",
360 "Counter": "0,1",
361 "UMask": "0x4",
362 "EventName": "RECYCLEQ.ST_SPLITS",
363 "SampleAfterValue": "200003",
364 "BriefDescription": "Counts the number of occurences a retired store that is a cache line split. Each split should be counted only once."
365 },
366 {
367 "PEBS": "1",
368 "EventCode": "0x03",
369 "Counter": "0,1",
370 "UMask": "0x8",
371 "EventName": "RECYCLEQ.LD_SPLITS",
372 "SampleAfterValue": "200003",
373 "BriefDescription": "Counts the number of occurences a retired load that is a cache line split. Each split should be counted only once.",
374 "Data_LA": "1"
375 },
376 {
377 "EventCode": "0x03",
378 "Counter": "0,1",
379 "UMask": "0x10",
380 "EventName": "RECYCLEQ.LOCK",
381 "SampleAfterValue": "200003",
382 "BriefDescription": "Counts all the retired locked loads. It does not include stores because we would double count if we count stores"
383 },
384 {
385 "EventCode": "0x03",
386 "Counter": "0,1",
387 "UMask": "0x20",
388 "EventName": "RECYCLEQ.STA_FULL",
389 "SampleAfterValue": "200003",
390 "BriefDescription": "Counts the store micro-ops retired that were pushed in the rehad queue because the store address buffer is full"
391 },
392 {
393 "EventCode": "0x03",
394 "Counter": "0,1",
395 "UMask": "0x40",
396 "EventName": "RECYCLEQ.ANY_LD",
397 "SampleAfterValue": "200003",
398 "BriefDescription": "Counts any retired load that was pushed into the recycle queue for any reason."
399 },
400 {
401 "EventCode": "0x03",
402 "Counter": "0,1",
403 "UMask": "0x80",
404 "EventName": "RECYCLEQ.ANY_ST",
405 "SampleAfterValue": "200003",
406 "BriefDescription": "Counts any retired store that was pushed into the recycle queue for any reason."
407 },
408 {
409 "PEBS": "1",
410 "EventCode": "0xC5",
411 "Counter": "0,1",
412 "UMask": "0xf9",
413 "EventName": "BR_MISP_RETIRED.CALL",
414 "SampleAfterValue": "200003",
415 "BriefDescription": "Counts the number of mispredicted near CALL branch instructions retired."
416 },
417 {
418 "PEBS": "1",
419 "EventCode": "0xC5",
420 "Counter": "0,1",
421 "UMask": "0xfd",
422 "EventName": "BR_MISP_RETIRED.REL_CALL",
423 "SampleAfterValue": "200003",
424 "BriefDescription": "Counts the number of mispredicted near relative CALL branch instructions retired."
425 },
426 {
427 "PEBS": "1",
428 "EventCode": "0xC5",
429 "Counter": "0,1",
430 "UMask": "0xbf",
431 "EventName": "BR_MISP_RETIRED.FAR_BRANCH",
432 "SampleAfterValue": "200003",
433 "BriefDescription": "Counts the number of mispredicted far branch instructions retired."
434 }
435] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/knightslanding/virtual-memory.json b/tools/perf/pmu-events/arch/x86/knightslanding/virtual-memory.json
new file mode 100644
index 000000000000..f31594507f8c
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/knightslanding/virtual-memory.json
@@ -0,0 +1,65 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0x04",
5 "Counter": "0,1",
6 "UMask": "0x8",
7 "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_LOADS",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Counts the number of load micro-ops retired that cause a DTLB miss",
10 "Data_LA": "1"
11 },
12 {
13 "EventCode": "0x05",
14 "Counter": "0,1",
15 "UMask": "0x1",
16 "EventName": "PAGE_WALKS.D_SIDE_WALKS",
17 "SampleAfterValue": "100003",
18 "BriefDescription": "Counts the total D-side page walks that are completed or started. The page walks started in the speculative path will also be counted",
19 "EdgeDetect": "1"
20 },
21 {
22 "EventCode": "0x05",
23 "Counter": "0,1",
24 "UMask": "0x1",
25 "EventName": "PAGE_WALKS.D_SIDE_CYCLES",
26 "SampleAfterValue": "200003",
27 "BriefDescription": "Counts the total number of core cycles for all the D-side page walks. The cycles for page walks started in speculative path will also be included."
28 },
29 {
30 "EventCode": "0x05",
31 "Counter": "0,1",
32 "UMask": "0x2",
33 "EventName": "PAGE_WALKS.I_SIDE_WALKS",
34 "SampleAfterValue": "100003",
35 "BriefDescription": "Counts the total I-side page walks that are completed.",
36 "EdgeDetect": "1"
37 },
38 {
39 "PublicDescription": "This event counts every cycle when an I-side (walks due to an instruction fetch) page walk is in progress. ",
40 "EventCode": "0x05",
41 "Counter": "0,1",
42 "UMask": "0x2",
43 "EventName": "PAGE_WALKS.I_SIDE_CYCLES",
44 "SampleAfterValue": "200003",
45 "BriefDescription": "Counts the total number of core cycles for all the I-side page walks. The cycles for page walks started in speculative path will also be included."
46 },
47 {
48 "EventCode": "0x05",
49 "Counter": "0,1",
50 "UMask": "0x3",
51 "EventName": "PAGE_WALKS.WALKS",
52 "SampleAfterValue": "100003",
53 "BriefDescription": "Counts the total page walks that are completed (I-side and D-side)",
54 "EdgeDetect": "1"
55 },
56 {
57 "PublicDescription": "This event counts every cycle when a data (D) page walk or instruction (I) page walk is in progress.",
58 "EventCode": "0x05",
59 "Counter": "0,1",
60 "UMask": "0x3",
61 "EventName": "PAGE_WALKS.CYCLES",
62 "SampleAfterValue": "200003",
63 "BriefDescription": "Counts the total number of core cycles for all the page walks. The cycles for page walks started in speculative path will also be included."
64 }
65] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/mapfile.csv b/tools/perf/pmu-events/arch/x86/mapfile.csv
new file mode 100644
index 000000000000..12181bb1da2a
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/mapfile.csv
@@ -0,0 +1,35 @@
1Family-model,Version,Filename,EventType
2GenuineIntel-6-56,v5,broadwellde,core
3GenuineIntel-6-3D,v17,broadwell,core
4GenuineIntel-6-47,v17,broadwell,core
5GenuineIntel-6-4F,v10,broadwellx,core
6GenuineIntel-6-1C,v4,bonnell,core
7GenuineIntel-6-26,v4,bonnell,core
8GenuineIntel-6-27,v4,bonnell,core
9GenuineIntel-6-36,v4,bonnell,core
10GenuineIntel-6-35,v4,bonnell,core
11GenuineIntel-6-5C,v8,goldmont,core
12GenuineIntel-6-3C,v24,haswell,core
13GenuineIntel-6-45,v24,haswell,core
14GenuineIntel-6-46,v24,haswell,core
15GenuineIntel-6-3F,v17,haswellx,core
16GenuineIntel-6-3A,v18,ivybridge,core
17GenuineIntel-6-3E,v19,ivytown,core
18GenuineIntel-6-2D,v20,jaketown,core
19GenuineIntel-6-57,v9,knightslanding,core
20GenuineIntel-6-1E,v2,nehalemep,core
21GenuineIntel-6-1F,v2,nehalemep,core
22GenuineIntel-6-1A,v2,nehalemep,core
23GenuineIntel-6-2E,v2,nehalemex,core
24GenuineIntel-6-4E,v24,skylake,core
25GenuineIntel-6-5E,v24,skylake,core
26GenuineIntel-6-8E,v24,skylake,core
27GenuineIntel-6-9E,v24,skylake,core
28GenuineIntel-6-37,v13,silvermont,core
29GenuineIntel-6-4D,v13,silvermont,core
30GenuineIntel-6-4C,v13,silvermont,core
31GenuineIntel-6-2A,v15,sandybridge,core
32GenuineIntel-6-2C,v2,westmereep-dp,core
33GenuineIntel-6-2C,v2,westmereep-dp,core
34GenuineIntel-6-25,v2,westmereep-sp,core
35GenuineIntel-6-2F,v2,westmereex,core
diff --git a/tools/perf/pmu-events/arch/x86/nehalemep/cache.json b/tools/perf/pmu-events/arch/x86/nehalemep/cache.json
new file mode 100644
index 000000000000..a11029efda2f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemep/cache.json
@@ -0,0 +1,3229 @@
1[
2 {
3 "EventCode": "0x63",
4 "Counter": "0,1",
5 "UMask": "0x2",
6 "EventName": "CACHE_LOCK_CYCLES.L1D",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles L1D locked"
9 },
10 {
11 "EventCode": "0x63",
12 "Counter": "0,1",
13 "UMask": "0x1",
14 "EventName": "CACHE_LOCK_CYCLES.L1D_L2",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Cycles L1D and L2 locked"
17 },
18 {
19 "EventCode": "0x51",
20 "Counter": "0,1",
21 "UMask": "0x4",
22 "EventName": "L1D.M_EVICT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "L1D cache lines replaced in M state"
25 },
26 {
27 "EventCode": "0x51",
28 "Counter": "0,1",
29 "UMask": "0x2",
30 "EventName": "L1D.M_REPL",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "L1D cache lines allocated in the M state"
33 },
34 {
35 "EventCode": "0x51",
36 "Counter": "0,1",
37 "UMask": "0x8",
38 "EventName": "L1D.M_SNOOP_EVICT",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "L1D snoop eviction of cache lines in M state"
41 },
42 {
43 "EventCode": "0x51",
44 "Counter": "0,1",
45 "UMask": "0x1",
46 "EventName": "L1D.REPL",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1 data cache lines allocated"
49 },
50 {
51 "EventCode": "0x43",
52 "Counter": "0,1",
53 "UMask": "0x1",
54 "EventName": "L1D_ALL_REF.ANY",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "All references to the L1 data cache"
57 },
58 {
59 "EventCode": "0x43",
60 "Counter": "0,1",
61 "UMask": "0x2",
62 "EventName": "L1D_ALL_REF.CACHEABLE",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "L1 data cacheable reads and writes"
65 },
66 {
67 "EventCode": "0x40",
68 "Counter": "0,1",
69 "UMask": "0x4",
70 "EventName": "L1D_CACHE_LD.E_STATE",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "L1 data cache read in E state"
73 },
74 {
75 "EventCode": "0x40",
76 "Counter": "0,1",
77 "UMask": "0x1",
78 "EventName": "L1D_CACHE_LD.I_STATE",
79 "SampleAfterValue": "2000000",
80 "BriefDescription": "L1 data cache read in I state (misses)"
81 },
82 {
83 "EventCode": "0x40",
84 "Counter": "0,1",
85 "UMask": "0x8",
86 "EventName": "L1D_CACHE_LD.M_STATE",
87 "SampleAfterValue": "2000000",
88 "BriefDescription": "L1 data cache read in M state"
89 },
90 {
91 "EventCode": "0x40",
92 "Counter": "0,1",
93 "UMask": "0xf",
94 "EventName": "L1D_CACHE_LD.MESI",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "L1 data cache reads"
97 },
98 {
99 "EventCode": "0x40",
100 "Counter": "0,1",
101 "UMask": "0x2",
102 "EventName": "L1D_CACHE_LD.S_STATE",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "L1 data cache read in S state"
105 },
106 {
107 "EventCode": "0x42",
108 "Counter": "0,1",
109 "UMask": "0x4",
110 "EventName": "L1D_CACHE_LOCK.E_STATE",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "L1 data cache load locks in E state"
113 },
114 {
115 "EventCode": "0x42",
116 "Counter": "0,1",
117 "UMask": "0x1",
118 "EventName": "L1D_CACHE_LOCK.HIT",
119 "SampleAfterValue": "2000000",
120 "BriefDescription": "L1 data cache load lock hits"
121 },
122 {
123 "EventCode": "0x42",
124 "Counter": "0,1",
125 "UMask": "0x8",
126 "EventName": "L1D_CACHE_LOCK.M_STATE",
127 "SampleAfterValue": "2000000",
128 "BriefDescription": "L1 data cache load locks in M state"
129 },
130 {
131 "EventCode": "0x42",
132 "Counter": "0,1",
133 "UMask": "0x2",
134 "EventName": "L1D_CACHE_LOCK.S_STATE",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "L1 data cache load locks in S state"
137 },
138 {
139 "EventCode": "0x53",
140 "Counter": "0,1",
141 "UMask": "0x1",
142 "EventName": "L1D_CACHE_LOCK_FB_HIT",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "L1D load lock accepted in fill buffer"
145 },
146 {
147 "EventCode": "0x52",
148 "Counter": "0,1",
149 "UMask": "0x1",
150 "EventName": "L1D_CACHE_PREFETCH_LOCK_FB_HIT",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "L1D prefetch load lock accepted in fill buffer"
153 },
154 {
155 "EventCode": "0x41",
156 "Counter": "0,1",
157 "UMask": "0x4",
158 "EventName": "L1D_CACHE_ST.E_STATE",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "L1 data cache stores in E state"
161 },
162 {
163 "EventCode": "0x41",
164 "Counter": "0,1",
165 "UMask": "0x8",
166 "EventName": "L1D_CACHE_ST.M_STATE",
167 "SampleAfterValue": "2000000",
168 "BriefDescription": "L1 data cache stores in M state"
169 },
170 {
171 "EventCode": "0x41",
172 "Counter": "0,1",
173 "UMask": "0x2",
174 "EventName": "L1D_CACHE_ST.S_STATE",
175 "SampleAfterValue": "2000000",
176 "BriefDescription": "L1 data cache stores in S state"
177 },
178 {
179 "EventCode": "0x4E",
180 "Counter": "0,1",
181 "UMask": "0x2",
182 "EventName": "L1D_PREFETCH.MISS",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "L1D hardware prefetch misses"
185 },
186 {
187 "EventCode": "0x4E",
188 "Counter": "0,1",
189 "UMask": "0x1",
190 "EventName": "L1D_PREFETCH.REQUESTS",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "L1D hardware prefetch requests"
193 },
194 {
195 "EventCode": "0x4E",
196 "Counter": "0,1",
197 "UMask": "0x4",
198 "EventName": "L1D_PREFETCH.TRIGGERS",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "L1D hardware prefetch requests triggered"
201 },
202 {
203 "EventCode": "0x28",
204 "Counter": "0,1,2,3",
205 "UMask": "0x4",
206 "EventName": "L1D_WB_L2.E_STATE",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "L1 writebacks to L2 in E state"
209 },
210 {
211 "EventCode": "0x28",
212 "Counter": "0,1,2,3",
213 "UMask": "0x1",
214 "EventName": "L1D_WB_L2.I_STATE",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "L1 writebacks to L2 in I state (misses)"
217 },
218 {
219 "EventCode": "0x28",
220 "Counter": "0,1,2,3",
221 "UMask": "0x8",
222 "EventName": "L1D_WB_L2.M_STATE",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "L1 writebacks to L2 in M state"
225 },
226 {
227 "EventCode": "0x28",
228 "Counter": "0,1,2,3",
229 "UMask": "0xf",
230 "EventName": "L1D_WB_L2.MESI",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "All L1 writebacks to L2"
233 },
234 {
235 "EventCode": "0x28",
236 "Counter": "0,1,2,3",
237 "UMask": "0x2",
238 "EventName": "L1D_WB_L2.S_STATE",
239 "SampleAfterValue": "100000",
240 "BriefDescription": "L1 writebacks to L2 in S state"
241 },
242 {
243 "EventCode": "0x26",
244 "Counter": "0,1,2,3",
245 "UMask": "0xff",
246 "EventName": "L2_DATA_RQSTS.ANY",
247 "SampleAfterValue": "200000",
248 "BriefDescription": "All L2 data requests"
249 },
250 {
251 "EventCode": "0x26",
252 "Counter": "0,1,2,3",
253 "UMask": "0x4",
254 "EventName": "L2_DATA_RQSTS.DEMAND.E_STATE",
255 "SampleAfterValue": "200000",
256 "BriefDescription": "L2 data demand loads in E state"
257 },
258 {
259 "EventCode": "0x26",
260 "Counter": "0,1,2,3",
261 "UMask": "0x1",
262 "EventName": "L2_DATA_RQSTS.DEMAND.I_STATE",
263 "SampleAfterValue": "200000",
264 "BriefDescription": "L2 data demand loads in I state (misses)"
265 },
266 {
267 "EventCode": "0x26",
268 "Counter": "0,1,2,3",
269 "UMask": "0x8",
270 "EventName": "L2_DATA_RQSTS.DEMAND.M_STATE",
271 "SampleAfterValue": "200000",
272 "BriefDescription": "L2 data demand loads in M state"
273 },
274 {
275 "EventCode": "0x26",
276 "Counter": "0,1,2,3",
277 "UMask": "0xf",
278 "EventName": "L2_DATA_RQSTS.DEMAND.MESI",
279 "SampleAfterValue": "200000",
280 "BriefDescription": "L2 data demand requests"
281 },
282 {
283 "EventCode": "0x26",
284 "Counter": "0,1,2,3",
285 "UMask": "0x2",
286 "EventName": "L2_DATA_RQSTS.DEMAND.S_STATE",
287 "SampleAfterValue": "200000",
288 "BriefDescription": "L2 data demand loads in S state"
289 },
290 {
291 "EventCode": "0x26",
292 "Counter": "0,1,2,3",
293 "UMask": "0x40",
294 "EventName": "L2_DATA_RQSTS.PREFETCH.E_STATE",
295 "SampleAfterValue": "200000",
296 "BriefDescription": "L2 data prefetches in E state"
297 },
298 {
299 "EventCode": "0x26",
300 "Counter": "0,1,2,3",
301 "UMask": "0x10",
302 "EventName": "L2_DATA_RQSTS.PREFETCH.I_STATE",
303 "SampleAfterValue": "200000",
304 "BriefDescription": "L2 data prefetches in the I state (misses)"
305 },
306 {
307 "EventCode": "0x26",
308 "Counter": "0,1,2,3",
309 "UMask": "0x80",
310 "EventName": "L2_DATA_RQSTS.PREFETCH.M_STATE",
311 "SampleAfterValue": "200000",
312 "BriefDescription": "L2 data prefetches in M state"
313 },
314 {
315 "EventCode": "0x26",
316 "Counter": "0,1,2,3",
317 "UMask": "0xf0",
318 "EventName": "L2_DATA_RQSTS.PREFETCH.MESI",
319 "SampleAfterValue": "200000",
320 "BriefDescription": "All L2 data prefetches"
321 },
322 {
323 "EventCode": "0x26",
324 "Counter": "0,1,2,3",
325 "UMask": "0x20",
326 "EventName": "L2_DATA_RQSTS.PREFETCH.S_STATE",
327 "SampleAfterValue": "200000",
328 "BriefDescription": "L2 data prefetches in the S state"
329 },
330 {
331 "EventCode": "0xF1",
332 "Counter": "0,1,2,3",
333 "UMask": "0x7",
334 "EventName": "L2_LINES_IN.ANY",
335 "SampleAfterValue": "100000",
336 "BriefDescription": "L2 lines alloacated"
337 },
338 {
339 "EventCode": "0xF1",
340 "Counter": "0,1,2,3",
341 "UMask": "0x4",
342 "EventName": "L2_LINES_IN.E_STATE",
343 "SampleAfterValue": "100000",
344 "BriefDescription": "L2 lines allocated in the E state"
345 },
346 {
347 "EventCode": "0xF1",
348 "Counter": "0,1,2,3",
349 "UMask": "0x2",
350 "EventName": "L2_LINES_IN.S_STATE",
351 "SampleAfterValue": "100000",
352 "BriefDescription": "L2 lines allocated in the S state"
353 },
354 {
355 "EventCode": "0xF2",
356 "Counter": "0,1,2,3",
357 "UMask": "0xf",
358 "EventName": "L2_LINES_OUT.ANY",
359 "SampleAfterValue": "100000",
360 "BriefDescription": "L2 lines evicted"
361 },
362 {
363 "EventCode": "0xF2",
364 "Counter": "0,1,2,3",
365 "UMask": "0x1",
366 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
367 "SampleAfterValue": "100000",
368 "BriefDescription": "L2 lines evicted by a demand request"
369 },
370 {
371 "EventCode": "0xF2",
372 "Counter": "0,1,2,3",
373 "UMask": "0x2",
374 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
375 "SampleAfterValue": "100000",
376 "BriefDescription": "L2 modified lines evicted by a demand request"
377 },
378 {
379 "EventCode": "0xF2",
380 "Counter": "0,1,2,3",
381 "UMask": "0x4",
382 "EventName": "L2_LINES_OUT.PREFETCH_CLEAN",
383 "SampleAfterValue": "100000",
384 "BriefDescription": "L2 lines evicted by a prefetch request"
385 },
386 {
387 "EventCode": "0xF2",
388 "Counter": "0,1,2,3",
389 "UMask": "0x8",
390 "EventName": "L2_LINES_OUT.PREFETCH_DIRTY",
391 "SampleAfterValue": "100000",
392 "BriefDescription": "L2 modified lines evicted by a prefetch request"
393 },
394 {
395 "EventCode": "0x24",
396 "Counter": "0,1,2,3",
397 "UMask": "0x10",
398 "EventName": "L2_RQSTS.IFETCH_HIT",
399 "SampleAfterValue": "200000",
400 "BriefDescription": "L2 instruction fetch hits"
401 },
402 {
403 "EventCode": "0x24",
404 "Counter": "0,1,2,3",
405 "UMask": "0x20",
406 "EventName": "L2_RQSTS.IFETCH_MISS",
407 "SampleAfterValue": "200000",
408 "BriefDescription": "L2 instruction fetch misses"
409 },
410 {
411 "EventCode": "0x24",
412 "Counter": "0,1,2,3",
413 "UMask": "0x30",
414 "EventName": "L2_RQSTS.IFETCHES",
415 "SampleAfterValue": "200000",
416 "BriefDescription": "L2 instruction fetches"
417 },
418 {
419 "EventCode": "0x24",
420 "Counter": "0,1,2,3",
421 "UMask": "0x1",
422 "EventName": "L2_RQSTS.LD_HIT",
423 "SampleAfterValue": "200000",
424 "BriefDescription": "L2 load hits"
425 },
426 {
427 "EventCode": "0x24",
428 "Counter": "0,1,2,3",
429 "UMask": "0x2",
430 "EventName": "L2_RQSTS.LD_MISS",
431 "SampleAfterValue": "200000",
432 "BriefDescription": "L2 load misses"
433 },
434 {
435 "EventCode": "0x24",
436 "Counter": "0,1,2,3",
437 "UMask": "0x3",
438 "EventName": "L2_RQSTS.LOADS",
439 "SampleAfterValue": "200000",
440 "BriefDescription": "L2 requests"
441 },
442 {
443 "EventCode": "0x24",
444 "Counter": "0,1,2,3",
445 "UMask": "0xaa",
446 "EventName": "L2_RQSTS.MISS",
447 "SampleAfterValue": "200000",
448 "BriefDescription": "All L2 misses"
449 },
450 {
451 "EventCode": "0x24",
452 "Counter": "0,1,2,3",
453 "UMask": "0x40",
454 "EventName": "L2_RQSTS.PREFETCH_HIT",
455 "SampleAfterValue": "200000",
456 "BriefDescription": "L2 prefetch hits"
457 },
458 {
459 "EventCode": "0x24",
460 "Counter": "0,1,2,3",
461 "UMask": "0x80",
462 "EventName": "L2_RQSTS.PREFETCH_MISS",
463 "SampleAfterValue": "200000",
464 "BriefDescription": "L2 prefetch misses"
465 },
466 {
467 "EventCode": "0x24",
468 "Counter": "0,1,2,3",
469 "UMask": "0xc0",
470 "EventName": "L2_RQSTS.PREFETCHES",
471 "SampleAfterValue": "200000",
472 "BriefDescription": "All L2 prefetches"
473 },
474 {
475 "EventCode": "0x24",
476 "Counter": "0,1,2,3",
477 "UMask": "0xff",
478 "EventName": "L2_RQSTS.REFERENCES",
479 "SampleAfterValue": "200000",
480 "BriefDescription": "All L2 requests"
481 },
482 {
483 "EventCode": "0x24",
484 "Counter": "0,1,2,3",
485 "UMask": "0x4",
486 "EventName": "L2_RQSTS.RFO_HIT",
487 "SampleAfterValue": "200000",
488 "BriefDescription": "L2 RFO hits"
489 },
490 {
491 "EventCode": "0x24",
492 "Counter": "0,1,2,3",
493 "UMask": "0x8",
494 "EventName": "L2_RQSTS.RFO_MISS",
495 "SampleAfterValue": "200000",
496 "BriefDescription": "L2 RFO misses"
497 },
498 {
499 "EventCode": "0x24",
500 "Counter": "0,1,2,3",
501 "UMask": "0xc",
502 "EventName": "L2_RQSTS.RFOS",
503 "SampleAfterValue": "200000",
504 "BriefDescription": "L2 RFO requests"
505 },
506 {
507 "EventCode": "0xF0",
508 "Counter": "0,1,2,3",
509 "UMask": "0x80",
510 "EventName": "L2_TRANSACTIONS.ANY",
511 "SampleAfterValue": "200000",
512 "BriefDescription": "All L2 transactions"
513 },
514 {
515 "EventCode": "0xF0",
516 "Counter": "0,1,2,3",
517 "UMask": "0x20",
518 "EventName": "L2_TRANSACTIONS.FILL",
519 "SampleAfterValue": "200000",
520 "BriefDescription": "L2 fill transactions"
521 },
522 {
523 "EventCode": "0xF0",
524 "Counter": "0,1,2,3",
525 "UMask": "0x4",
526 "EventName": "L2_TRANSACTIONS.IFETCH",
527 "SampleAfterValue": "200000",
528 "BriefDescription": "L2 instruction fetch transactions"
529 },
530 {
531 "EventCode": "0xF0",
532 "Counter": "0,1,2,3",
533 "UMask": "0x10",
534 "EventName": "L2_TRANSACTIONS.L1D_WB",
535 "SampleAfterValue": "200000",
536 "BriefDescription": "L1D writeback to L2 transactions"
537 },
538 {
539 "EventCode": "0xF0",
540 "Counter": "0,1,2,3",
541 "UMask": "0x1",
542 "EventName": "L2_TRANSACTIONS.LOAD",
543 "SampleAfterValue": "200000",
544 "BriefDescription": "L2 Load transactions"
545 },
546 {
547 "EventCode": "0xF0",
548 "Counter": "0,1,2,3",
549 "UMask": "0x8",
550 "EventName": "L2_TRANSACTIONS.PREFETCH",
551 "SampleAfterValue": "200000",
552 "BriefDescription": "L2 prefetch transactions"
553 },
554 {
555 "EventCode": "0xF0",
556 "Counter": "0,1,2,3",
557 "UMask": "0x2",
558 "EventName": "L2_TRANSACTIONS.RFO",
559 "SampleAfterValue": "200000",
560 "BriefDescription": "L2 RFO transactions"
561 },
562 {
563 "EventCode": "0xF0",
564 "Counter": "0,1,2,3",
565 "UMask": "0x40",
566 "EventName": "L2_TRANSACTIONS.WB",
567 "SampleAfterValue": "200000",
568 "BriefDescription": "L2 writeback to LLC transactions"
569 },
570 {
571 "EventCode": "0x27",
572 "Counter": "0,1,2,3",
573 "UMask": "0x40",
574 "EventName": "L2_WRITE.LOCK.E_STATE",
575 "SampleAfterValue": "100000",
576 "BriefDescription": "L2 demand lock RFOs in E state"
577 },
578 {
579 "EventCode": "0x27",
580 "Counter": "0,1,2,3",
581 "UMask": "0xe0",
582 "EventName": "L2_WRITE.LOCK.HIT",
583 "SampleAfterValue": "100000",
584 "BriefDescription": "All demand L2 lock RFOs that hit the cache"
585 },
586 {
587 "EventCode": "0x27",
588 "Counter": "0,1,2,3",
589 "UMask": "0x10",
590 "EventName": "L2_WRITE.LOCK.I_STATE",
591 "SampleAfterValue": "100000",
592 "BriefDescription": "L2 demand lock RFOs in I state (misses)"
593 },
594 {
595 "EventCode": "0x27",
596 "Counter": "0,1,2,3",
597 "UMask": "0x80",
598 "EventName": "L2_WRITE.LOCK.M_STATE",
599 "SampleAfterValue": "100000",
600 "BriefDescription": "L2 demand lock RFOs in M state"
601 },
602 {
603 "EventCode": "0x27",
604 "Counter": "0,1,2,3",
605 "UMask": "0xf0",
606 "EventName": "L2_WRITE.LOCK.MESI",
607 "SampleAfterValue": "100000",
608 "BriefDescription": "All demand L2 lock RFOs"
609 },
610 {
611 "EventCode": "0x27",
612 "Counter": "0,1,2,3",
613 "UMask": "0x20",
614 "EventName": "L2_WRITE.LOCK.S_STATE",
615 "SampleAfterValue": "100000",
616 "BriefDescription": "L2 demand lock RFOs in S state"
617 },
618 {
619 "EventCode": "0x27",
620 "Counter": "0,1,2,3",
621 "UMask": "0xe",
622 "EventName": "L2_WRITE.RFO.HIT",
623 "SampleAfterValue": "100000",
624 "BriefDescription": "All L2 demand store RFOs that hit the cache"
625 },
626 {
627 "EventCode": "0x27",
628 "Counter": "0,1,2,3",
629 "UMask": "0x1",
630 "EventName": "L2_WRITE.RFO.I_STATE",
631 "SampleAfterValue": "100000",
632 "BriefDescription": "L2 demand store RFOs in I state (misses)"
633 },
634 {
635 "EventCode": "0x27",
636 "Counter": "0,1,2,3",
637 "UMask": "0x8",
638 "EventName": "L2_WRITE.RFO.M_STATE",
639 "SampleAfterValue": "100000",
640 "BriefDescription": "L2 demand store RFOs in M state"
641 },
642 {
643 "EventCode": "0x27",
644 "Counter": "0,1,2,3",
645 "UMask": "0xf",
646 "EventName": "L2_WRITE.RFO.MESI",
647 "SampleAfterValue": "100000",
648 "BriefDescription": "All L2 demand store RFOs"
649 },
650 {
651 "EventCode": "0x27",
652 "Counter": "0,1,2,3",
653 "UMask": "0x2",
654 "EventName": "L2_WRITE.RFO.S_STATE",
655 "SampleAfterValue": "100000",
656 "BriefDescription": "L2 demand store RFOs in S state"
657 },
658 {
659 "EventCode": "0x2E",
660 "Counter": "0,1,2,3",
661 "UMask": "0x41",
662 "EventName": "LONGEST_LAT_CACHE.MISS",
663 "SampleAfterValue": "100000",
664 "BriefDescription": "Longest latency cache miss"
665 },
666 {
667 "EventCode": "0x2E",
668 "Counter": "0,1,2,3",
669 "UMask": "0x4f",
670 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
671 "SampleAfterValue": "200000",
672 "BriefDescription": "Longest latency cache reference"
673 },
674 {
675 "PEBS": "1",
676 "EventCode": "0xB",
677 "Counter": "0,1,2,3",
678 "UMask": "0x1",
679 "EventName": "MEM_INST_RETIRED.LOADS",
680 "SampleAfterValue": "2000000",
681 "BriefDescription": "Instructions retired which contains a load (Precise Event)"
682 },
683 {
684 "PEBS": "1",
685 "EventCode": "0xB",
686 "Counter": "0,1,2,3",
687 "UMask": "0x2",
688 "EventName": "MEM_INST_RETIRED.STORES",
689 "SampleAfterValue": "2000000",
690 "BriefDescription": "Instructions retired which contains a store (Precise Event)"
691 },
692 {
693 "PEBS": "1",
694 "EventCode": "0xCB",
695 "Counter": "0,1,2,3",
696 "UMask": "0x40",
697 "EventName": "MEM_LOAD_RETIRED.HIT_LFB",
698 "SampleAfterValue": "200000",
699 "BriefDescription": "Retired loads that miss L1D and hit an previously allocated LFB (Precise Event)"
700 },
701 {
702 "PEBS": "1",
703 "EventCode": "0xCB",
704 "Counter": "0,1,2,3",
705 "UMask": "0x1",
706 "EventName": "MEM_LOAD_RETIRED.L1D_HIT",
707 "SampleAfterValue": "2000000",
708 "BriefDescription": "Retired loads that hit the L1 data cache (Precise Event)"
709 },
710 {
711 "PEBS": "1",
712 "EventCode": "0xCB",
713 "Counter": "0,1,2,3",
714 "UMask": "0x2",
715 "EventName": "MEM_LOAD_RETIRED.L2_HIT",
716 "SampleAfterValue": "200000",
717 "BriefDescription": "Retired loads that hit the L2 cache (Precise Event)"
718 },
719 {
720 "PEBS": "1",
721 "EventCode": "0xCB",
722 "Counter": "0,1,2,3",
723 "UMask": "0x10",
724 "EventName": "MEM_LOAD_RETIRED.LLC_MISS",
725 "SampleAfterValue": "10000",
726 "BriefDescription": "Retired loads that miss the LLC cache (Precise Event)"
727 },
728 {
729 "PEBS": "1",
730 "EventCode": "0xCB",
731 "Counter": "0,1,2,3",
732 "UMask": "0x4",
733 "EventName": "MEM_LOAD_RETIRED.LLC_UNSHARED_HIT",
734 "SampleAfterValue": "40000",
735 "BriefDescription": "Retired loads that hit valid versions in the LLC cache (Precise Event)"
736 },
737 {
738 "PEBS": "1",
739 "EventCode": "0xCB",
740 "Counter": "0,1,2,3",
741 "UMask": "0x8",
742 "EventName": "MEM_LOAD_RETIRED.OTHER_CORE_L2_HIT_HITM",
743 "SampleAfterValue": "40000",
744 "BriefDescription": "Retired loads that hit sibling core's L2 in modified or unmodified states (Precise Event)"
745 },
746 {
747 "PEBS": "1",
748 "EventCode": "0xF",
749 "Counter": "0,1,2,3",
750 "UMask": "0x20",
751 "EventName": "MEM_UNCORE_RETIRED.LOCAL_DRAM",
752 "SampleAfterValue": "10000",
753 "BriefDescription": "Load instructions retired with a data source of local DRAM or locally homed remote hitm (Precise Event)"
754 },
755 {
756 "PEBS": "1",
757 "EventCode": "0xF",
758 "Counter": "0,1,2,3",
759 "UMask": "0x2",
760 "EventName": "MEM_UNCORE_RETIRED.OTHER_CORE_L2_HITM",
761 "SampleAfterValue": "40000",
762 "BriefDescription": "Load instructions retired that HIT modified data in sibling core (Precise Event)"
763 },
764 {
765 "PEBS": "1",
766 "EventCode": "0xF",
767 "Counter": "0,1,2,3",
768 "UMask": "0x8",
769 "EventName": "MEM_UNCORE_RETIRED.REMOTE_CACHE_LOCAL_HOME_HIT",
770 "SampleAfterValue": "20000",
771 "BriefDescription": "Load instructions retired remote cache HIT data source (Precise Event)"
772 },
773 {
774 "PEBS": "1",
775 "EventCode": "0xF",
776 "Counter": "0,1,2,3",
777 "UMask": "0x10",
778 "EventName": "MEM_UNCORE_RETIRED.REMOTE_DRAM",
779 "SampleAfterValue": "10000",
780 "BriefDescription": "Load instructions retired remote DRAM and remote home-remote cache HITM (Precise Event)"
781 },
782 {
783 "PEBS": "1",
784 "EventCode": "0xF",
785 "Counter": "0,1,2,3",
786 "UMask": "0x80",
787 "EventName": "MEM_UNCORE_RETIRED.UNCACHEABLE",
788 "SampleAfterValue": "4000",
789 "BriefDescription": "Load instructions retired IO (Precise Event)"
790 },
791 {
792 "EventCode": "0xB0",
793 "Counter": "0,1,2,3",
794 "UMask": "0x40",
795 "EventName": "OFFCORE_REQUESTS.L1D_WRITEBACK",
796 "SampleAfterValue": "100000",
797 "BriefDescription": "Offcore L1 data cache writebacks"
798 },
799 {
800 "EventCode": "0xB2",
801 "Counter": "0,1,2,3",
802 "UMask": "0x1",
803 "EventName": "OFFCORE_REQUESTS_SQ_FULL",
804 "SampleAfterValue": "100000",
805 "BriefDescription": "Offcore requests blocked due to Super Queue full"
806 },
807 {
808 "EventCode": "0xF4",
809 "Counter": "0,1,2,3",
810 "UMask": "0x10",
811 "EventName": "SQ_MISC.SPLIT_LOCK",
812 "SampleAfterValue": "2000000",
813 "BriefDescription": "Super Queue lock splits across a cache line"
814 },
815 {
816 "EventCode": "0x6",
817 "Counter": "0,1,2,3",
818 "UMask": "0x4",
819 "EventName": "STORE_BLOCKS.AT_RET",
820 "SampleAfterValue": "200000",
821 "BriefDescription": "Loads delayed with at-Retirement block code"
822 },
823 {
824 "EventCode": "0x6",
825 "Counter": "0,1,2,3",
826 "UMask": "0x8",
827 "EventName": "STORE_BLOCKS.L1D_BLOCK",
828 "SampleAfterValue": "200000",
829 "BriefDescription": "Cacheable loads delayed with L1D block code"
830 },
831 {
832 "PEBS": "2",
833 "EventCode": "0xB",
834 "MSRValue": "0x0",
835 "Counter": "3",
836 "UMask": "0x10",
837 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_0",
838 "MSRIndex": "0x3F6",
839 "SampleAfterValue": "2000000",
840 "BriefDescription": "Memory instructions retired above 0 clocks (Precise Event)"
841 },
842 {
843 "PEBS": "2",
844 "EventCode": "0xB",
845 "MSRValue": "0x400",
846 "Counter": "3",
847 "UMask": "0x10",
848 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_1024",
849 "MSRIndex": "0x3F6",
850 "SampleAfterValue": "100",
851 "BriefDescription": "Memory instructions retired above 1024 clocks (Precise Event)"
852 },
853 {
854 "PEBS": "2",
855 "EventCode": "0xB",
856 "MSRValue": "0x80",
857 "Counter": "3",
858 "UMask": "0x10",
859 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_128",
860 "MSRIndex": "0x3F6",
861 "SampleAfterValue": "1000",
862 "BriefDescription": "Memory instructions retired above 128 clocks (Precise Event)"
863 },
864 {
865 "PEBS": "2",
866 "EventCode": "0xB",
867 "MSRValue": "0x10",
868 "Counter": "3",
869 "UMask": "0x10",
870 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16",
871 "MSRIndex": "0x3F6",
872 "SampleAfterValue": "10000",
873 "BriefDescription": "Memory instructions retired above 16 clocks (Precise Event)"
874 },
875 {
876 "PEBS": "2",
877 "EventCode": "0xB",
878 "MSRValue": "0x4000",
879 "Counter": "3",
880 "UMask": "0x10",
881 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16384",
882 "MSRIndex": "0x3F6",
883 "SampleAfterValue": "5",
884 "BriefDescription": "Memory instructions retired above 16384 clocks (Precise Event)"
885 },
886 {
887 "PEBS": "2",
888 "EventCode": "0xB",
889 "MSRValue": "0x800",
890 "Counter": "3",
891 "UMask": "0x10",
892 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_2048",
893 "MSRIndex": "0x3F6",
894 "SampleAfterValue": "50",
895 "BriefDescription": "Memory instructions retired above 2048 clocks (Precise Event)"
896 },
897 {
898 "PEBS": "2",
899 "EventCode": "0xB",
900 "MSRValue": "0x100",
901 "Counter": "3",
902 "UMask": "0x10",
903 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_256",
904 "MSRIndex": "0x3F6",
905 "SampleAfterValue": "500",
906 "BriefDescription": "Memory instructions retired above 256 clocks (Precise Event)"
907 },
908 {
909 "PEBS": "2",
910 "EventCode": "0xB",
911 "MSRValue": "0x20",
912 "Counter": "3",
913 "UMask": "0x10",
914 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32",
915 "MSRIndex": "0x3F6",
916 "SampleAfterValue": "5000",
917 "BriefDescription": "Memory instructions retired above 32 clocks (Precise Event)"
918 },
919 {
920 "PEBS": "2",
921 "EventCode": "0xB",
922 "MSRValue": "0x8000",
923 "Counter": "3",
924 "UMask": "0x10",
925 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32768",
926 "MSRIndex": "0x3F6",
927 "SampleAfterValue": "3",
928 "BriefDescription": "Memory instructions retired above 32768 clocks (Precise Event)"
929 },
930 {
931 "PEBS": "2",
932 "EventCode": "0xB",
933 "MSRValue": "0x4",
934 "Counter": "3",
935 "UMask": "0x10",
936 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4",
937 "MSRIndex": "0x3F6",
938 "SampleAfterValue": "50000",
939 "BriefDescription": "Memory instructions retired above 4 clocks (Precise Event)"
940 },
941 {
942 "PEBS": "2",
943 "EventCode": "0xB",
944 "MSRValue": "0x1000",
945 "Counter": "3",
946 "UMask": "0x10",
947 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4096",
948 "MSRIndex": "0x3F6",
949 "SampleAfterValue": "20",
950 "BriefDescription": "Memory instructions retired above 4096 clocks (Precise Event)"
951 },
952 {
953 "PEBS": "2",
954 "EventCode": "0xB",
955 "MSRValue": "0x200",
956 "Counter": "3",
957 "UMask": "0x10",
958 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_512",
959 "MSRIndex": "0x3F6",
960 "SampleAfterValue": "200",
961 "BriefDescription": "Memory instructions retired above 512 clocks (Precise Event)"
962 },
963 {
964 "PEBS": "2",
965 "EventCode": "0xB",
966 "MSRValue": "0x40",
967 "Counter": "3",
968 "UMask": "0x10",
969 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_64",
970 "MSRIndex": "0x3F6",
971 "SampleAfterValue": "2000",
972 "BriefDescription": "Memory instructions retired above 64 clocks (Precise Event)"
973 },
974 {
975 "PEBS": "2",
976 "EventCode": "0xB",
977 "MSRValue": "0x8",
978 "Counter": "3",
979 "UMask": "0x10",
980 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8",
981 "MSRIndex": "0x3F6",
982 "SampleAfterValue": "20000",
983 "BriefDescription": "Memory instructions retired above 8 clocks (Precise Event)"
984 },
985 {
986 "PEBS": "2",
987 "EventCode": "0xB",
988 "MSRValue": "0x2000",
989 "Counter": "3",
990 "UMask": "0x10",
991 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8192",
992 "MSRIndex": "0x3F6",
993 "SampleAfterValue": "10",
994 "BriefDescription": "Memory instructions retired above 8192 clocks (Precise Event)"
995 },
996 {
997 "EventCode": "0xB7",
998 "MSRValue": "0x7F11",
999 "Counter": "2",
1000 "UMask": "0x1",
1001 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_CACHE_DRAM",
1002 "MSRIndex": "0x1A6",
1003 "SampleAfterValue": "100000",
1004 "BriefDescription": "Offcore data reads satisfied by any cache or DRAM",
1005 "Offcore": "1"
1006 },
1007 {
1008 "EventCode": "0xB7",
1009 "MSRValue": "0xFF11",
1010 "Counter": "2",
1011 "UMask": "0x1",
1012 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LOCATION",
1013 "MSRIndex": "0x1A6",
1014 "SampleAfterValue": "100000",
1015 "BriefDescription": "All offcore data reads",
1016 "Offcore": "1"
1017 },
1018 {
1019 "EventCode": "0xB7",
1020 "MSRValue": "0x8011",
1021 "Counter": "2",
1022 "UMask": "0x1",
1023 "EventName": "OFFCORE_RESPONSE.ANY_DATA.IO_CSR_MMIO",
1024 "MSRIndex": "0x1A6",
1025 "SampleAfterValue": "100000",
1026 "BriefDescription": "Offcore data reads satisfied by the IO, CSR, MMIO unit",
1027 "Offcore": "1"
1028 },
1029 {
1030 "EventCode": "0xB7",
1031 "MSRValue": "0x111",
1032 "Counter": "2",
1033 "UMask": "0x1",
1034 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_NO_OTHER_CORE",
1035 "MSRIndex": "0x1A6",
1036 "SampleAfterValue": "100000",
1037 "BriefDescription": "Offcore data reads satisfied by the LLC and not found in a sibling core",
1038 "Offcore": "1"
1039 },
1040 {
1041 "EventCode": "0xB7",
1042 "MSRValue": "0x211",
1043 "Counter": "2",
1044 "UMask": "0x1",
1045 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HIT",
1046 "MSRIndex": "0x1A6",
1047 "SampleAfterValue": "100000",
1048 "BriefDescription": "Offcore data reads satisfied by the LLC and HIT in a sibling core",
1049 "Offcore": "1"
1050 },
1051 {
1052 "EventCode": "0xB7",
1053 "MSRValue": "0x411",
1054 "Counter": "2",
1055 "UMask": "0x1",
1056 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HITM",
1057 "MSRIndex": "0x1A6",
1058 "SampleAfterValue": "100000",
1059 "BriefDescription": "Offcore data reads satisfied by the LLC and HITM in a sibling core",
1060 "Offcore": "1"
1061 },
1062 {
1063 "EventCode": "0xB7",
1064 "MSRValue": "0x711",
1065 "Counter": "2",
1066 "UMask": "0x1",
1067 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE",
1068 "MSRIndex": "0x1A6",
1069 "SampleAfterValue": "100000",
1070 "BriefDescription": "Offcore data reads satisfied by the LLC",
1071 "Offcore": "1"
1072 },
1073 {
1074 "EventCode": "0xB7",
1075 "MSRValue": "0x4711",
1076 "Counter": "2",
1077 "UMask": "0x1",
1078 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE_DRAM",
1079 "MSRIndex": "0x1A6",
1080 "SampleAfterValue": "100000",
1081 "BriefDescription": "Offcore data reads satisfied by the LLC or local DRAM",
1082 "Offcore": "1"
1083 },
1084 {
1085 "EventCode": "0xB7",
1086 "MSRValue": "0x1811",
1087 "Counter": "2",
1088 "UMask": "0x1",
1089 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE",
1090 "MSRIndex": "0x1A6",
1091 "SampleAfterValue": "100000",
1092 "BriefDescription": "Offcore data reads satisfied by a remote cache",
1093 "Offcore": "1"
1094 },
1095 {
1096 "EventCode": "0xB7",
1097 "MSRValue": "0x3811",
1098 "Counter": "2",
1099 "UMask": "0x1",
1100 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_DRAM",
1101 "MSRIndex": "0x1A6",
1102 "SampleAfterValue": "100000",
1103 "BriefDescription": "Offcore data reads satisfied by a remote cache or remote DRAM",
1104 "Offcore": "1"
1105 },
1106 {
1107 "EventCode": "0xB7",
1108 "MSRValue": "0x1011",
1109 "Counter": "2",
1110 "UMask": "0x1",
1111 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HIT",
1112 "MSRIndex": "0x1A6",
1113 "SampleAfterValue": "100000",
1114 "BriefDescription": "Offcore data reads that HIT in a remote cache",
1115 "Offcore": "1"
1116 },
1117 {
1118 "EventCode": "0xB7",
1119 "MSRValue": "0x811",
1120 "Counter": "2",
1121 "UMask": "0x1",
1122 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HITM",
1123 "MSRIndex": "0x1A6",
1124 "SampleAfterValue": "100000",
1125 "BriefDescription": "Offcore data reads that HITM in a remote cache",
1126 "Offcore": "1"
1127 },
1128 {
1129 "EventCode": "0xB7",
1130 "MSRValue": "0x7F44",
1131 "Counter": "2",
1132 "UMask": "0x1",
1133 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_CACHE_DRAM",
1134 "MSRIndex": "0x1A6",
1135 "SampleAfterValue": "100000",
1136 "BriefDescription": "Offcore code reads satisfied by any cache or DRAM",
1137 "Offcore": "1"
1138 },
1139 {
1140 "EventCode": "0xB7",
1141 "MSRValue": "0xFF44",
1142 "Counter": "2",
1143 "UMask": "0x1",
1144 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LOCATION",
1145 "MSRIndex": "0x1A6",
1146 "SampleAfterValue": "100000",
1147 "BriefDescription": "All offcore code reads",
1148 "Offcore": "1"
1149 },
1150 {
1151 "EventCode": "0xB7",
1152 "MSRValue": "0x8044",
1153 "Counter": "2",
1154 "UMask": "0x1",
1155 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.IO_CSR_MMIO",
1156 "MSRIndex": "0x1A6",
1157 "SampleAfterValue": "100000",
1158 "BriefDescription": "Offcore code reads satisfied by the IO, CSR, MMIO unit",
1159 "Offcore": "1"
1160 },
1161 {
1162 "EventCode": "0xB7",
1163 "MSRValue": "0x144",
1164 "Counter": "2",
1165 "UMask": "0x1",
1166 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_NO_OTHER_CORE",
1167 "MSRIndex": "0x1A6",
1168 "SampleAfterValue": "100000",
1169 "BriefDescription": "Offcore code reads satisfied by the LLC and not found in a sibling core",
1170 "Offcore": "1"
1171 },
1172 {
1173 "EventCode": "0xB7",
1174 "MSRValue": "0x244",
1175 "Counter": "2",
1176 "UMask": "0x1",
1177 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1178 "MSRIndex": "0x1A6",
1179 "SampleAfterValue": "100000",
1180 "BriefDescription": "Offcore code reads satisfied by the LLC and HIT in a sibling core",
1181 "Offcore": "1"
1182 },
1183 {
1184 "EventCode": "0xB7",
1185 "MSRValue": "0x444",
1186 "Counter": "2",
1187 "UMask": "0x1",
1188 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1189 "MSRIndex": "0x1A6",
1190 "SampleAfterValue": "100000",
1191 "BriefDescription": "Offcore code reads satisfied by the LLC and HITM in a sibling core",
1192 "Offcore": "1"
1193 },
1194 {
1195 "EventCode": "0xB7",
1196 "MSRValue": "0x744",
1197 "Counter": "2",
1198 "UMask": "0x1",
1199 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE",
1200 "MSRIndex": "0x1A6",
1201 "SampleAfterValue": "100000",
1202 "BriefDescription": "Offcore code reads satisfied by the LLC",
1203 "Offcore": "1"
1204 },
1205 {
1206 "EventCode": "0xB7",
1207 "MSRValue": "0x4744",
1208 "Counter": "2",
1209 "UMask": "0x1",
1210 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE_DRAM",
1211 "MSRIndex": "0x1A6",
1212 "SampleAfterValue": "100000",
1213 "BriefDescription": "Offcore code reads satisfied by the LLC or local DRAM",
1214 "Offcore": "1"
1215 },
1216 {
1217 "EventCode": "0xB7",
1218 "MSRValue": "0x1844",
1219 "Counter": "2",
1220 "UMask": "0x1",
1221 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE",
1222 "MSRIndex": "0x1A6",
1223 "SampleAfterValue": "100000",
1224 "BriefDescription": "Offcore code reads satisfied by a remote cache",
1225 "Offcore": "1"
1226 },
1227 {
1228 "EventCode": "0xB7",
1229 "MSRValue": "0x3844",
1230 "Counter": "2",
1231 "UMask": "0x1",
1232 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_DRAM",
1233 "MSRIndex": "0x1A6",
1234 "SampleAfterValue": "100000",
1235 "BriefDescription": "Offcore code reads satisfied by a remote cache or remote DRAM",
1236 "Offcore": "1"
1237 },
1238 {
1239 "EventCode": "0xB7",
1240 "MSRValue": "0x1044",
1241 "Counter": "2",
1242 "UMask": "0x1",
1243 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HIT",
1244 "MSRIndex": "0x1A6",
1245 "SampleAfterValue": "100000",
1246 "BriefDescription": "Offcore code reads that HIT in a remote cache",
1247 "Offcore": "1"
1248 },
1249 {
1250 "EventCode": "0xB7",
1251 "MSRValue": "0x844",
1252 "Counter": "2",
1253 "UMask": "0x1",
1254 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HITM",
1255 "MSRIndex": "0x1A6",
1256 "SampleAfterValue": "100000",
1257 "BriefDescription": "Offcore code reads that HITM in a remote cache",
1258 "Offcore": "1"
1259 },
1260 {
1261 "EventCode": "0xB7",
1262 "MSRValue": "0x7FFF",
1263 "Counter": "2",
1264 "UMask": "0x1",
1265 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_CACHE_DRAM",
1266 "MSRIndex": "0x1A6",
1267 "SampleAfterValue": "100000",
1268 "BriefDescription": "Offcore requests satisfied by any cache or DRAM",
1269 "Offcore": "1"
1270 },
1271 {
1272 "EventCode": "0xB7",
1273 "MSRValue": "0xFFFF",
1274 "Counter": "2",
1275 "UMask": "0x1",
1276 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LOCATION",
1277 "MSRIndex": "0x1A6",
1278 "SampleAfterValue": "100000",
1279 "BriefDescription": "All offcore requests",
1280 "Offcore": "1"
1281 },
1282 {
1283 "EventCode": "0xB7",
1284 "MSRValue": "0x80FF",
1285 "Counter": "2",
1286 "UMask": "0x1",
1287 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.IO_CSR_MMIO",
1288 "MSRIndex": "0x1A6",
1289 "SampleAfterValue": "100000",
1290 "BriefDescription": "Offcore requests satisfied by the IO, CSR, MMIO unit",
1291 "Offcore": "1"
1292 },
1293 {
1294 "EventCode": "0xB7",
1295 "MSRValue": "0x1FF",
1296 "Counter": "2",
1297 "UMask": "0x1",
1298 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_NO_OTHER_CORE",
1299 "MSRIndex": "0x1A6",
1300 "SampleAfterValue": "100000",
1301 "BriefDescription": "Offcore requests satisfied by the LLC and not found in a sibling core",
1302 "Offcore": "1"
1303 },
1304 {
1305 "EventCode": "0xB7",
1306 "MSRValue": "0x2FF",
1307 "Counter": "2",
1308 "UMask": "0x1",
1309 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HIT",
1310 "MSRIndex": "0x1A6",
1311 "SampleAfterValue": "100000",
1312 "BriefDescription": "Offcore requests satisfied by the LLC and HIT in a sibling core",
1313 "Offcore": "1"
1314 },
1315 {
1316 "EventCode": "0xB7",
1317 "MSRValue": "0x4FF",
1318 "Counter": "2",
1319 "UMask": "0x1",
1320 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HITM",
1321 "MSRIndex": "0x1A6",
1322 "SampleAfterValue": "100000",
1323 "BriefDescription": "Offcore requests satisfied by the LLC and HITM in a sibling core",
1324 "Offcore": "1"
1325 },
1326 {
1327 "EventCode": "0xB7",
1328 "MSRValue": "0x7FF",
1329 "Counter": "2",
1330 "UMask": "0x1",
1331 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE",
1332 "MSRIndex": "0x1A6",
1333 "SampleAfterValue": "100000",
1334 "BriefDescription": "Offcore requests satisfied by the LLC",
1335 "Offcore": "1"
1336 },
1337 {
1338 "EventCode": "0xB7",
1339 "MSRValue": "0x47FF",
1340 "Counter": "2",
1341 "UMask": "0x1",
1342 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE_DRAM",
1343 "MSRIndex": "0x1A6",
1344 "SampleAfterValue": "100000",
1345 "BriefDescription": "Offcore requests satisfied by the LLC or local DRAM",
1346 "Offcore": "1"
1347 },
1348 {
1349 "EventCode": "0xB7",
1350 "MSRValue": "0x18FF",
1351 "Counter": "2",
1352 "UMask": "0x1",
1353 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE",
1354 "MSRIndex": "0x1A6",
1355 "SampleAfterValue": "100000",
1356 "BriefDescription": "Offcore requests satisfied by a remote cache",
1357 "Offcore": "1"
1358 },
1359 {
1360 "EventCode": "0xB7",
1361 "MSRValue": "0x38FF",
1362 "Counter": "2",
1363 "UMask": "0x1",
1364 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_DRAM",
1365 "MSRIndex": "0x1A6",
1366 "SampleAfterValue": "100000",
1367 "BriefDescription": "Offcore requests satisfied by a remote cache or remote DRAM",
1368 "Offcore": "1"
1369 },
1370 {
1371 "EventCode": "0xB7",
1372 "MSRValue": "0x10FF",
1373 "Counter": "2",
1374 "UMask": "0x1",
1375 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HIT",
1376 "MSRIndex": "0x1A6",
1377 "SampleAfterValue": "100000",
1378 "BriefDescription": "Offcore requests that HIT in a remote cache",
1379 "Offcore": "1"
1380 },
1381 {
1382 "EventCode": "0xB7",
1383 "MSRValue": "0x8FF",
1384 "Counter": "2",
1385 "UMask": "0x1",
1386 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HITM",
1387 "MSRIndex": "0x1A6",
1388 "SampleAfterValue": "100000",
1389 "BriefDescription": "Offcore requests that HITM in a remote cache",
1390 "Offcore": "1"
1391 },
1392 {
1393 "EventCode": "0xB7",
1394 "MSRValue": "0x7F22",
1395 "Counter": "2",
1396 "UMask": "0x1",
1397 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_CACHE_DRAM",
1398 "MSRIndex": "0x1A6",
1399 "SampleAfterValue": "100000",
1400 "BriefDescription": "Offcore RFO requests satisfied by any cache or DRAM",
1401 "Offcore": "1"
1402 },
1403 {
1404 "EventCode": "0xB7",
1405 "MSRValue": "0xFF22",
1406 "Counter": "2",
1407 "UMask": "0x1",
1408 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LOCATION",
1409 "MSRIndex": "0x1A6",
1410 "SampleAfterValue": "100000",
1411 "BriefDescription": "All offcore RFO requests",
1412 "Offcore": "1"
1413 },
1414 {
1415 "EventCode": "0xB7",
1416 "MSRValue": "0x8022",
1417 "Counter": "2",
1418 "UMask": "0x1",
1419 "EventName": "OFFCORE_RESPONSE.ANY_RFO.IO_CSR_MMIO",
1420 "MSRIndex": "0x1A6",
1421 "SampleAfterValue": "100000",
1422 "BriefDescription": "Offcore RFO requests satisfied by the IO, CSR, MMIO unit",
1423 "Offcore": "1"
1424 },
1425 {
1426 "EventCode": "0xB7",
1427 "MSRValue": "0x122",
1428 "Counter": "2",
1429 "UMask": "0x1",
1430 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_NO_OTHER_CORE",
1431 "MSRIndex": "0x1A6",
1432 "SampleAfterValue": "100000",
1433 "BriefDescription": "Offcore RFO requests satisfied by the LLC and not found in a sibling core",
1434 "Offcore": "1"
1435 },
1436 {
1437 "EventCode": "0xB7",
1438 "MSRValue": "0x222",
1439 "Counter": "2",
1440 "UMask": "0x1",
1441 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HIT",
1442 "MSRIndex": "0x1A6",
1443 "SampleAfterValue": "100000",
1444 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HIT in a sibling core",
1445 "Offcore": "1"
1446 },
1447 {
1448 "EventCode": "0xB7",
1449 "MSRValue": "0x422",
1450 "Counter": "2",
1451 "UMask": "0x1",
1452 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HITM",
1453 "MSRIndex": "0x1A6",
1454 "SampleAfterValue": "100000",
1455 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HITM in a sibling core",
1456 "Offcore": "1"
1457 },
1458 {
1459 "EventCode": "0xB7",
1460 "MSRValue": "0x722",
1461 "Counter": "2",
1462 "UMask": "0x1",
1463 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE",
1464 "MSRIndex": "0x1A6",
1465 "SampleAfterValue": "100000",
1466 "BriefDescription": "Offcore RFO requests satisfied by the LLC",
1467 "Offcore": "1"
1468 },
1469 {
1470 "EventCode": "0xB7",
1471 "MSRValue": "0x4722",
1472 "Counter": "2",
1473 "UMask": "0x1",
1474 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE_DRAM",
1475 "MSRIndex": "0x1A6",
1476 "SampleAfterValue": "100000",
1477 "BriefDescription": "Offcore RFO requests satisfied by the LLC or local DRAM",
1478 "Offcore": "1"
1479 },
1480 {
1481 "EventCode": "0xB7",
1482 "MSRValue": "0x1822",
1483 "Counter": "2",
1484 "UMask": "0x1",
1485 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE",
1486 "MSRIndex": "0x1A6",
1487 "SampleAfterValue": "100000",
1488 "BriefDescription": "Offcore RFO requests satisfied by a remote cache",
1489 "Offcore": "1"
1490 },
1491 {
1492 "EventCode": "0xB7",
1493 "MSRValue": "0x3822",
1494 "Counter": "2",
1495 "UMask": "0x1",
1496 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_DRAM",
1497 "MSRIndex": "0x1A6",
1498 "SampleAfterValue": "100000",
1499 "BriefDescription": "Offcore RFO requests satisfied by a remote cache or remote DRAM",
1500 "Offcore": "1"
1501 },
1502 {
1503 "EventCode": "0xB7",
1504 "MSRValue": "0x1022",
1505 "Counter": "2",
1506 "UMask": "0x1",
1507 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HIT",
1508 "MSRIndex": "0x1A6",
1509 "SampleAfterValue": "100000",
1510 "BriefDescription": "Offcore RFO requests that HIT in a remote cache",
1511 "Offcore": "1"
1512 },
1513 {
1514 "EventCode": "0xB7",
1515 "MSRValue": "0x822",
1516 "Counter": "2",
1517 "UMask": "0x1",
1518 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HITM",
1519 "MSRIndex": "0x1A6",
1520 "SampleAfterValue": "100000",
1521 "BriefDescription": "Offcore RFO requests that HITM in a remote cache",
1522 "Offcore": "1"
1523 },
1524 {
1525 "EventCode": "0xB7",
1526 "MSRValue": "0x7F08",
1527 "Counter": "2",
1528 "UMask": "0x1",
1529 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_CACHE_DRAM",
1530 "MSRIndex": "0x1A6",
1531 "SampleAfterValue": "100000",
1532 "BriefDescription": "Offcore writebacks to any cache or DRAM.",
1533 "Offcore": "1"
1534 },
1535 {
1536 "EventCode": "0xB7",
1537 "MSRValue": "0xFF08",
1538 "Counter": "2",
1539 "UMask": "0x1",
1540 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LOCATION",
1541 "MSRIndex": "0x1A6",
1542 "SampleAfterValue": "100000",
1543 "BriefDescription": "All offcore writebacks",
1544 "Offcore": "1"
1545 },
1546 {
1547 "EventCode": "0xB7",
1548 "MSRValue": "0x8008",
1549 "Counter": "2",
1550 "UMask": "0x1",
1551 "EventName": "OFFCORE_RESPONSE.COREWB.IO_CSR_MMIO",
1552 "MSRIndex": "0x1A6",
1553 "SampleAfterValue": "100000",
1554 "BriefDescription": "Offcore writebacks to the IO, CSR, MMIO unit.",
1555 "Offcore": "1"
1556 },
1557 {
1558 "EventCode": "0xB7",
1559 "MSRValue": "0x108",
1560 "Counter": "2",
1561 "UMask": "0x1",
1562 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_NO_OTHER_CORE",
1563 "MSRIndex": "0x1A6",
1564 "SampleAfterValue": "100000",
1565 "BriefDescription": "Offcore writebacks to the LLC and not found in a sibling core",
1566 "Offcore": "1"
1567 },
1568 {
1569 "EventCode": "0xB7",
1570 "MSRValue": "0x408",
1571 "Counter": "2",
1572 "UMask": "0x1",
1573 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_OTHER_CORE_HITM",
1574 "MSRIndex": "0x1A6",
1575 "SampleAfterValue": "100000",
1576 "BriefDescription": "Offcore writebacks to the LLC and HITM in a sibling core",
1577 "Offcore": "1"
1578 },
1579 {
1580 "EventCode": "0xB7",
1581 "MSRValue": "0x708",
1582 "Counter": "2",
1583 "UMask": "0x1",
1584 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE",
1585 "MSRIndex": "0x1A6",
1586 "SampleAfterValue": "100000",
1587 "BriefDescription": "Offcore writebacks to the LLC",
1588 "Offcore": "1"
1589 },
1590 {
1591 "EventCode": "0xB7",
1592 "MSRValue": "0x4708",
1593 "Counter": "2",
1594 "UMask": "0x1",
1595 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE_DRAM",
1596 "MSRIndex": "0x1A6",
1597 "SampleAfterValue": "100000",
1598 "BriefDescription": "Offcore writebacks to the LLC or local DRAM",
1599 "Offcore": "1"
1600 },
1601 {
1602 "EventCode": "0xB7",
1603 "MSRValue": "0x1808",
1604 "Counter": "2",
1605 "UMask": "0x1",
1606 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE",
1607 "MSRIndex": "0x1A6",
1608 "SampleAfterValue": "100000",
1609 "BriefDescription": "Offcore writebacks to a remote cache",
1610 "Offcore": "1"
1611 },
1612 {
1613 "EventCode": "0xB7",
1614 "MSRValue": "0x3808",
1615 "Counter": "2",
1616 "UMask": "0x1",
1617 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_DRAM",
1618 "MSRIndex": "0x1A6",
1619 "SampleAfterValue": "100000",
1620 "BriefDescription": "Offcore writebacks to a remote cache or remote DRAM",
1621 "Offcore": "1"
1622 },
1623 {
1624 "EventCode": "0xB7",
1625 "MSRValue": "0x1008",
1626 "Counter": "2",
1627 "UMask": "0x1",
1628 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HIT",
1629 "MSRIndex": "0x1A6",
1630 "SampleAfterValue": "100000",
1631 "BriefDescription": "Offcore writebacks that HIT in a remote cache",
1632 "Offcore": "1"
1633 },
1634 {
1635 "EventCode": "0xB7",
1636 "MSRValue": "0x808",
1637 "Counter": "2",
1638 "UMask": "0x1",
1639 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HITM",
1640 "MSRIndex": "0x1A6",
1641 "SampleAfterValue": "100000",
1642 "BriefDescription": "Offcore writebacks that HITM in a remote cache",
1643 "Offcore": "1"
1644 },
1645 {
1646 "EventCode": "0xB7",
1647 "MSRValue": "0x7F77",
1648 "Counter": "2",
1649 "UMask": "0x1",
1650 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_CACHE_DRAM",
1651 "MSRIndex": "0x1A6",
1652 "SampleAfterValue": "100000",
1653 "BriefDescription": "Offcore code or data read requests satisfied by any cache or DRAM.",
1654 "Offcore": "1"
1655 },
1656 {
1657 "EventCode": "0xB7",
1658 "MSRValue": "0xFF77",
1659 "Counter": "2",
1660 "UMask": "0x1",
1661 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LOCATION",
1662 "MSRIndex": "0x1A6",
1663 "SampleAfterValue": "100000",
1664 "BriefDescription": "All offcore code or data read requests",
1665 "Offcore": "1"
1666 },
1667 {
1668 "EventCode": "0xB7",
1669 "MSRValue": "0x8077",
1670 "Counter": "2",
1671 "UMask": "0x1",
1672 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.IO_CSR_MMIO",
1673 "MSRIndex": "0x1A6",
1674 "SampleAfterValue": "100000",
1675 "BriefDescription": "Offcore code or data read requests satisfied by the IO, CSR, MMIO unit.",
1676 "Offcore": "1"
1677 },
1678 {
1679 "EventCode": "0xB7",
1680 "MSRValue": "0x177",
1681 "Counter": "2",
1682 "UMask": "0x1",
1683 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_NO_OTHER_CORE",
1684 "MSRIndex": "0x1A6",
1685 "SampleAfterValue": "100000",
1686 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and not found in a sibling core",
1687 "Offcore": "1"
1688 },
1689 {
1690 "EventCode": "0xB7",
1691 "MSRValue": "0x277",
1692 "Counter": "2",
1693 "UMask": "0x1",
1694 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1695 "MSRIndex": "0x1A6",
1696 "SampleAfterValue": "100000",
1697 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HIT in a sibling core",
1698 "Offcore": "1"
1699 },
1700 {
1701 "EventCode": "0xB7",
1702 "MSRValue": "0x477",
1703 "Counter": "2",
1704 "UMask": "0x1",
1705 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1706 "MSRIndex": "0x1A6",
1707 "SampleAfterValue": "100000",
1708 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HITM in a sibling core",
1709 "Offcore": "1"
1710 },
1711 {
1712 "EventCode": "0xB7",
1713 "MSRValue": "0x777",
1714 "Counter": "2",
1715 "UMask": "0x1",
1716 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE",
1717 "MSRIndex": "0x1A6",
1718 "SampleAfterValue": "100000",
1719 "BriefDescription": "Offcore code or data read requests satisfied by the LLC",
1720 "Offcore": "1"
1721 },
1722 {
1723 "EventCode": "0xB7",
1724 "MSRValue": "0x4777",
1725 "Counter": "2",
1726 "UMask": "0x1",
1727 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE_DRAM",
1728 "MSRIndex": "0x1A6",
1729 "SampleAfterValue": "100000",
1730 "BriefDescription": "Offcore code or data read requests satisfied by the LLC or local DRAM",
1731 "Offcore": "1"
1732 },
1733 {
1734 "EventCode": "0xB7",
1735 "MSRValue": "0x1877",
1736 "Counter": "2",
1737 "UMask": "0x1",
1738 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE",
1739 "MSRIndex": "0x1A6",
1740 "SampleAfterValue": "100000",
1741 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache",
1742 "Offcore": "1"
1743 },
1744 {
1745 "EventCode": "0xB7",
1746 "MSRValue": "0x3877",
1747 "Counter": "2",
1748 "UMask": "0x1",
1749 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_DRAM",
1750 "MSRIndex": "0x1A6",
1751 "SampleAfterValue": "100000",
1752 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache or remote DRAM",
1753 "Offcore": "1"
1754 },
1755 {
1756 "EventCode": "0xB7",
1757 "MSRValue": "0x1077",
1758 "Counter": "2",
1759 "UMask": "0x1",
1760 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HIT",
1761 "MSRIndex": "0x1A6",
1762 "SampleAfterValue": "100000",
1763 "BriefDescription": "Offcore code or data read requests that HIT in a remote cache",
1764 "Offcore": "1"
1765 },
1766 {
1767 "EventCode": "0xB7",
1768 "MSRValue": "0x877",
1769 "Counter": "2",
1770 "UMask": "0x1",
1771 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HITM",
1772 "MSRIndex": "0x1A6",
1773 "SampleAfterValue": "100000",
1774 "BriefDescription": "Offcore code or data read requests that HITM in a remote cache",
1775 "Offcore": "1"
1776 },
1777 {
1778 "EventCode": "0xB7",
1779 "MSRValue": "0x7F33",
1780 "Counter": "2",
1781 "UMask": "0x1",
1782 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_CACHE_DRAM",
1783 "MSRIndex": "0x1A6",
1784 "SampleAfterValue": "100000",
1785 "BriefDescription": "Offcore request = all data, response = any cache_dram",
1786 "Offcore": "1"
1787 },
1788 {
1789 "EventCode": "0xB7",
1790 "MSRValue": "0xFF33",
1791 "Counter": "2",
1792 "UMask": "0x1",
1793 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LOCATION",
1794 "MSRIndex": "0x1A6",
1795 "SampleAfterValue": "100000",
1796 "BriefDescription": "Offcore request = all data, response = any location",
1797 "Offcore": "1"
1798 },
1799 {
1800 "EventCode": "0xB7",
1801 "MSRValue": "0x8033",
1802 "Counter": "2",
1803 "UMask": "0x1",
1804 "EventName": "OFFCORE_RESPONSE.DATA_IN.IO_CSR_MMIO",
1805 "MSRIndex": "0x1A6",
1806 "SampleAfterValue": "100000",
1807 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the IO, CSR, MMIO unit",
1808 "Offcore": "1"
1809 },
1810 {
1811 "EventCode": "0xB7",
1812 "MSRValue": "0x133",
1813 "Counter": "2",
1814 "UMask": "0x1",
1815 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_NO_OTHER_CORE",
1816 "MSRIndex": "0x1A6",
1817 "SampleAfterValue": "100000",
1818 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the LLC and not found in a sibling core",
1819 "Offcore": "1"
1820 },
1821 {
1822 "EventCode": "0xB7",
1823 "MSRValue": "0x233",
1824 "Counter": "2",
1825 "UMask": "0x1",
1826 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HIT",
1827 "MSRIndex": "0x1A6",
1828 "SampleAfterValue": "100000",
1829 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HIT in a sibling core",
1830 "Offcore": "1"
1831 },
1832 {
1833 "EventCode": "0xB7",
1834 "MSRValue": "0x433",
1835 "Counter": "2",
1836 "UMask": "0x1",
1837 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HITM",
1838 "MSRIndex": "0x1A6",
1839 "SampleAfterValue": "100000",
1840 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HITM in a sibling core",
1841 "Offcore": "1"
1842 },
1843 {
1844 "EventCode": "0xB7",
1845 "MSRValue": "0x733",
1846 "Counter": "2",
1847 "UMask": "0x1",
1848 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE",
1849 "MSRIndex": "0x1A6",
1850 "SampleAfterValue": "100000",
1851 "BriefDescription": "Offcore request = all data, response = local cache",
1852 "Offcore": "1"
1853 },
1854 {
1855 "EventCode": "0xB7",
1856 "MSRValue": "0x4733",
1857 "Counter": "2",
1858 "UMask": "0x1",
1859 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE_DRAM",
1860 "MSRIndex": "0x1A6",
1861 "SampleAfterValue": "100000",
1862 "BriefDescription": "Offcore request = all data, response = local cache or dram",
1863 "Offcore": "1"
1864 },
1865 {
1866 "EventCode": "0xB7",
1867 "MSRValue": "0x1833",
1868 "Counter": "2",
1869 "UMask": "0x1",
1870 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE",
1871 "MSRIndex": "0x1A6",
1872 "SampleAfterValue": "100000",
1873 "BriefDescription": "Offcore request = all data, response = remote cache",
1874 "Offcore": "1"
1875 },
1876 {
1877 "EventCode": "0xB7",
1878 "MSRValue": "0x3833",
1879 "Counter": "2",
1880 "UMask": "0x1",
1881 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_DRAM",
1882 "MSRIndex": "0x1A6",
1883 "SampleAfterValue": "100000",
1884 "BriefDescription": "Offcore request = all data, response = remote cache or dram",
1885 "Offcore": "1"
1886 },
1887 {
1888 "EventCode": "0xB7",
1889 "MSRValue": "0x1033",
1890 "Counter": "2",
1891 "UMask": "0x1",
1892 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HIT",
1893 "MSRIndex": "0x1A6",
1894 "SampleAfterValue": "100000",
1895 "BriefDescription": "Offcore data reads, RFO's and prefetches that HIT in a remote cache ",
1896 "Offcore": "1"
1897 },
1898 {
1899 "EventCode": "0xB7",
1900 "MSRValue": "0x833",
1901 "Counter": "2",
1902 "UMask": "0x1",
1903 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HITM",
1904 "MSRIndex": "0x1A6",
1905 "SampleAfterValue": "100000",
1906 "BriefDescription": "Offcore data reads, RFO's and prefetches that HITM in a remote cache",
1907 "Offcore": "1"
1908 },
1909 {
1910 "EventCode": "0xB7",
1911 "MSRValue": "0x7F03",
1912 "Counter": "2",
1913 "UMask": "0x1",
1914 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_CACHE_DRAM",
1915 "MSRIndex": "0x1A6",
1916 "SampleAfterValue": "100000",
1917 "BriefDescription": "Offcore demand data requests satisfied by any cache or DRAM",
1918 "Offcore": "1"
1919 },
1920 {
1921 "EventCode": "0xB7",
1922 "MSRValue": "0xFF03",
1923 "Counter": "2",
1924 "UMask": "0x1",
1925 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LOCATION",
1926 "MSRIndex": "0x1A6",
1927 "SampleAfterValue": "100000",
1928 "BriefDescription": "All offcore demand data requests",
1929 "Offcore": "1"
1930 },
1931 {
1932 "EventCode": "0xB7",
1933 "MSRValue": "0x8003",
1934 "Counter": "2",
1935 "UMask": "0x1",
1936 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.IO_CSR_MMIO",
1937 "MSRIndex": "0x1A6",
1938 "SampleAfterValue": "100000",
1939 "BriefDescription": "Offcore demand data requests satisfied by the IO, CSR, MMIO unit.",
1940 "Offcore": "1"
1941 },
1942 {
1943 "EventCode": "0xB7",
1944 "MSRValue": "0x103",
1945 "Counter": "2",
1946 "UMask": "0x1",
1947 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_NO_OTHER_CORE",
1948 "MSRIndex": "0x1A6",
1949 "SampleAfterValue": "100000",
1950 "BriefDescription": "Offcore demand data requests satisfied by the LLC and not found in a sibling core",
1951 "Offcore": "1"
1952 },
1953 {
1954 "EventCode": "0xB7",
1955 "MSRValue": "0x203",
1956 "Counter": "2",
1957 "UMask": "0x1",
1958 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HIT",
1959 "MSRIndex": "0x1A6",
1960 "SampleAfterValue": "100000",
1961 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HIT in a sibling core",
1962 "Offcore": "1"
1963 },
1964 {
1965 "EventCode": "0xB7",
1966 "MSRValue": "0x403",
1967 "Counter": "2",
1968 "UMask": "0x1",
1969 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HITM",
1970 "MSRIndex": "0x1A6",
1971 "SampleAfterValue": "100000",
1972 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HITM in a sibling core",
1973 "Offcore": "1"
1974 },
1975 {
1976 "EventCode": "0xB7",
1977 "MSRValue": "0x703",
1978 "Counter": "2",
1979 "UMask": "0x1",
1980 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE",
1981 "MSRIndex": "0x1A6",
1982 "SampleAfterValue": "100000",
1983 "BriefDescription": "Offcore demand data requests satisfied by the LLC",
1984 "Offcore": "1"
1985 },
1986 {
1987 "EventCode": "0xB7",
1988 "MSRValue": "0x4703",
1989 "Counter": "2",
1990 "UMask": "0x1",
1991 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE_DRAM",
1992 "MSRIndex": "0x1A6",
1993 "SampleAfterValue": "100000",
1994 "BriefDescription": "Offcore demand data requests satisfied by the LLC or local DRAM",
1995 "Offcore": "1"
1996 },
1997 {
1998 "EventCode": "0xB7",
1999 "MSRValue": "0x1803",
2000 "Counter": "2",
2001 "UMask": "0x1",
2002 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE",
2003 "MSRIndex": "0x1A6",
2004 "SampleAfterValue": "100000",
2005 "BriefDescription": "Offcore demand data requests satisfied by a remote cache",
2006 "Offcore": "1"
2007 },
2008 {
2009 "EventCode": "0xB7",
2010 "MSRValue": "0x3803",
2011 "Counter": "2",
2012 "UMask": "0x1",
2013 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_DRAM",
2014 "MSRIndex": "0x1A6",
2015 "SampleAfterValue": "100000",
2016 "BriefDescription": "Offcore demand data requests satisfied by a remote cache or remote DRAM",
2017 "Offcore": "1"
2018 },
2019 {
2020 "EventCode": "0xB7",
2021 "MSRValue": "0x1003",
2022 "Counter": "2",
2023 "UMask": "0x1",
2024 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HIT",
2025 "MSRIndex": "0x1A6",
2026 "SampleAfterValue": "100000",
2027 "BriefDescription": "Offcore demand data requests that HIT in a remote cache",
2028 "Offcore": "1"
2029 },
2030 {
2031 "EventCode": "0xB7",
2032 "MSRValue": "0x803",
2033 "Counter": "2",
2034 "UMask": "0x1",
2035 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HITM",
2036 "MSRIndex": "0x1A6",
2037 "SampleAfterValue": "100000",
2038 "BriefDescription": "Offcore demand data requests that HITM in a remote cache",
2039 "Offcore": "1"
2040 },
2041 {
2042 "EventCode": "0xB7",
2043 "MSRValue": "0x7F01",
2044 "Counter": "2",
2045 "UMask": "0x1",
2046 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_CACHE_DRAM",
2047 "MSRIndex": "0x1A6",
2048 "SampleAfterValue": "100000",
2049 "BriefDescription": "Offcore demand data reads satisfied by any cache or DRAM.",
2050 "Offcore": "1"
2051 },
2052 {
2053 "EventCode": "0xB7",
2054 "MSRValue": "0xFF01",
2055 "Counter": "2",
2056 "UMask": "0x1",
2057 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LOCATION",
2058 "MSRIndex": "0x1A6",
2059 "SampleAfterValue": "100000",
2060 "BriefDescription": "All offcore demand data reads",
2061 "Offcore": "1"
2062 },
2063 {
2064 "EventCode": "0xB7",
2065 "MSRValue": "0x8001",
2066 "Counter": "2",
2067 "UMask": "0x1",
2068 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.IO_CSR_MMIO",
2069 "MSRIndex": "0x1A6",
2070 "SampleAfterValue": "100000",
2071 "BriefDescription": "Offcore demand data reads satisfied by the IO, CSR, MMIO unit",
2072 "Offcore": "1"
2073 },
2074 {
2075 "EventCode": "0xB7",
2076 "MSRValue": "0x101",
2077 "Counter": "2",
2078 "UMask": "0x1",
2079 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2080 "MSRIndex": "0x1A6",
2081 "SampleAfterValue": "100000",
2082 "BriefDescription": "Offcore demand data reads satisfied by the LLC and not found in a sibling core",
2083 "Offcore": "1"
2084 },
2085 {
2086 "EventCode": "0xB7",
2087 "MSRValue": "0x201",
2088 "Counter": "2",
2089 "UMask": "0x1",
2090 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2091 "MSRIndex": "0x1A6",
2092 "SampleAfterValue": "100000",
2093 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HIT in a sibling core",
2094 "Offcore": "1"
2095 },
2096 {
2097 "EventCode": "0xB7",
2098 "MSRValue": "0x401",
2099 "Counter": "2",
2100 "UMask": "0x1",
2101 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2102 "MSRIndex": "0x1A6",
2103 "SampleAfterValue": "100000",
2104 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HITM in a sibling core",
2105 "Offcore": "1"
2106 },
2107 {
2108 "EventCode": "0xB7",
2109 "MSRValue": "0x701",
2110 "Counter": "2",
2111 "UMask": "0x1",
2112 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE",
2113 "MSRIndex": "0x1A6",
2114 "SampleAfterValue": "100000",
2115 "BriefDescription": "Offcore demand data reads satisfied by the LLC",
2116 "Offcore": "1"
2117 },
2118 {
2119 "EventCode": "0xB7",
2120 "MSRValue": "0x4701",
2121 "Counter": "2",
2122 "UMask": "0x1",
2123 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE_DRAM",
2124 "MSRIndex": "0x1A6",
2125 "SampleAfterValue": "100000",
2126 "BriefDescription": "Offcore demand data reads satisfied by the LLC or local DRAM",
2127 "Offcore": "1"
2128 },
2129 {
2130 "EventCode": "0xB7",
2131 "MSRValue": "0x1801",
2132 "Counter": "2",
2133 "UMask": "0x1",
2134 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE",
2135 "MSRIndex": "0x1A6",
2136 "SampleAfterValue": "100000",
2137 "BriefDescription": "Offcore demand data reads satisfied by a remote cache",
2138 "Offcore": "1"
2139 },
2140 {
2141 "EventCode": "0xB7",
2142 "MSRValue": "0x3801",
2143 "Counter": "2",
2144 "UMask": "0x1",
2145 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_DRAM",
2146 "MSRIndex": "0x1A6",
2147 "SampleAfterValue": "100000",
2148 "BriefDescription": "Offcore demand data reads satisfied by a remote cache or remote DRAM",
2149 "Offcore": "1"
2150 },
2151 {
2152 "EventCode": "0xB7",
2153 "MSRValue": "0x1001",
2154 "Counter": "2",
2155 "UMask": "0x1",
2156 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HIT",
2157 "MSRIndex": "0x1A6",
2158 "SampleAfterValue": "100000",
2159 "BriefDescription": "Offcore demand data reads that HIT in a remote cache",
2160 "Offcore": "1"
2161 },
2162 {
2163 "EventCode": "0xB7",
2164 "MSRValue": "0x801",
2165 "Counter": "2",
2166 "UMask": "0x1",
2167 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HITM",
2168 "MSRIndex": "0x1A6",
2169 "SampleAfterValue": "100000",
2170 "BriefDescription": "Offcore demand data reads that HITM in a remote cache",
2171 "Offcore": "1"
2172 },
2173 {
2174 "EventCode": "0xB7",
2175 "MSRValue": "0x7F04",
2176 "Counter": "2",
2177 "UMask": "0x1",
2178 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_CACHE_DRAM",
2179 "MSRIndex": "0x1A6",
2180 "SampleAfterValue": "100000",
2181 "BriefDescription": "Offcore demand code reads satisfied by any cache or DRAM.",
2182 "Offcore": "1"
2183 },
2184 {
2185 "EventCode": "0xB7",
2186 "MSRValue": "0xFF04",
2187 "Counter": "2",
2188 "UMask": "0x1",
2189 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LOCATION",
2190 "MSRIndex": "0x1A6",
2191 "SampleAfterValue": "100000",
2192 "BriefDescription": "All offcore demand code reads",
2193 "Offcore": "1"
2194 },
2195 {
2196 "EventCode": "0xB7",
2197 "MSRValue": "0x8004",
2198 "Counter": "2",
2199 "UMask": "0x1",
2200 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.IO_CSR_MMIO",
2201 "MSRIndex": "0x1A6",
2202 "SampleAfterValue": "100000",
2203 "BriefDescription": "Offcore demand code reads satisfied by the IO, CSR, MMIO unit",
2204 "Offcore": "1"
2205 },
2206 {
2207 "EventCode": "0xB7",
2208 "MSRValue": "0x104",
2209 "Counter": "2",
2210 "UMask": "0x1",
2211 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_NO_OTHER_CORE",
2212 "MSRIndex": "0x1A6",
2213 "SampleAfterValue": "100000",
2214 "BriefDescription": "Offcore demand code reads satisfied by the LLC and not found in a sibling core",
2215 "Offcore": "1"
2216 },
2217 {
2218 "EventCode": "0xB7",
2219 "MSRValue": "0x204",
2220 "Counter": "2",
2221 "UMask": "0x1",
2222 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2223 "MSRIndex": "0x1A6",
2224 "SampleAfterValue": "100000",
2225 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HIT in a sibling core",
2226 "Offcore": "1"
2227 },
2228 {
2229 "EventCode": "0xB7",
2230 "MSRValue": "0x404",
2231 "Counter": "2",
2232 "UMask": "0x1",
2233 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2234 "MSRIndex": "0x1A6",
2235 "SampleAfterValue": "100000",
2236 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HITM in a sibling core",
2237 "Offcore": "1"
2238 },
2239 {
2240 "EventCode": "0xB7",
2241 "MSRValue": "0x704",
2242 "Counter": "2",
2243 "UMask": "0x1",
2244 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE",
2245 "MSRIndex": "0x1A6",
2246 "SampleAfterValue": "100000",
2247 "BriefDescription": "Offcore demand code reads satisfied by the LLC",
2248 "Offcore": "1"
2249 },
2250 {
2251 "EventCode": "0xB7",
2252 "MSRValue": "0x4704",
2253 "Counter": "2",
2254 "UMask": "0x1",
2255 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE_DRAM",
2256 "MSRIndex": "0x1A6",
2257 "SampleAfterValue": "100000",
2258 "BriefDescription": "Offcore demand code reads satisfied by the LLC or local DRAM",
2259 "Offcore": "1"
2260 },
2261 {
2262 "EventCode": "0xB7",
2263 "MSRValue": "0x1804",
2264 "Counter": "2",
2265 "UMask": "0x1",
2266 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE",
2267 "MSRIndex": "0x1A6",
2268 "SampleAfterValue": "100000",
2269 "BriefDescription": "Offcore demand code reads satisfied by a remote cache",
2270 "Offcore": "1"
2271 },
2272 {
2273 "EventCode": "0xB7",
2274 "MSRValue": "0x3804",
2275 "Counter": "2",
2276 "UMask": "0x1",
2277 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_DRAM",
2278 "MSRIndex": "0x1A6",
2279 "SampleAfterValue": "100000",
2280 "BriefDescription": "Offcore demand code reads satisfied by a remote cache or remote DRAM",
2281 "Offcore": "1"
2282 },
2283 {
2284 "EventCode": "0xB7",
2285 "MSRValue": "0x1004",
2286 "Counter": "2",
2287 "UMask": "0x1",
2288 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HIT",
2289 "MSRIndex": "0x1A6",
2290 "SampleAfterValue": "100000",
2291 "BriefDescription": "Offcore demand code reads that HIT in a remote cache",
2292 "Offcore": "1"
2293 },
2294 {
2295 "EventCode": "0xB7",
2296 "MSRValue": "0x804",
2297 "Counter": "2",
2298 "UMask": "0x1",
2299 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HITM",
2300 "MSRIndex": "0x1A6",
2301 "SampleAfterValue": "100000",
2302 "BriefDescription": "Offcore demand code reads that HITM in a remote cache",
2303 "Offcore": "1"
2304 },
2305 {
2306 "EventCode": "0xB7",
2307 "MSRValue": "0x7F02",
2308 "Counter": "2",
2309 "UMask": "0x1",
2310 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_CACHE_DRAM",
2311 "MSRIndex": "0x1A6",
2312 "SampleAfterValue": "100000",
2313 "BriefDescription": "Offcore demand RFO requests satisfied by any cache or DRAM.",
2314 "Offcore": "1"
2315 },
2316 {
2317 "EventCode": "0xB7",
2318 "MSRValue": "0xFF02",
2319 "Counter": "2",
2320 "UMask": "0x1",
2321 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LOCATION",
2322 "MSRIndex": "0x1A6",
2323 "SampleAfterValue": "100000",
2324 "BriefDescription": "All offcore demand RFO requests",
2325 "Offcore": "1"
2326 },
2327 {
2328 "EventCode": "0xB7",
2329 "MSRValue": "0x8002",
2330 "Counter": "2",
2331 "UMask": "0x1",
2332 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.IO_CSR_MMIO",
2333 "MSRIndex": "0x1A6",
2334 "SampleAfterValue": "100000",
2335 "BriefDescription": "Offcore demand RFO requests satisfied by the IO, CSR, MMIO unit",
2336 "Offcore": "1"
2337 },
2338 {
2339 "EventCode": "0xB7",
2340 "MSRValue": "0x102",
2341 "Counter": "2",
2342 "UMask": "0x1",
2343 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_NO_OTHER_CORE",
2344 "MSRIndex": "0x1A6",
2345 "SampleAfterValue": "100000",
2346 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and not found in a sibling core",
2347 "Offcore": "1"
2348 },
2349 {
2350 "EventCode": "0xB7",
2351 "MSRValue": "0x202",
2352 "Counter": "2",
2353 "UMask": "0x1",
2354 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HIT",
2355 "MSRIndex": "0x1A6",
2356 "SampleAfterValue": "100000",
2357 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HIT in a sibling core",
2358 "Offcore": "1"
2359 },
2360 {
2361 "EventCode": "0xB7",
2362 "MSRValue": "0x402",
2363 "Counter": "2",
2364 "UMask": "0x1",
2365 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HITM",
2366 "MSRIndex": "0x1A6",
2367 "SampleAfterValue": "100000",
2368 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HITM in a sibling core",
2369 "Offcore": "1"
2370 },
2371 {
2372 "EventCode": "0xB7",
2373 "MSRValue": "0x702",
2374 "Counter": "2",
2375 "UMask": "0x1",
2376 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE",
2377 "MSRIndex": "0x1A6",
2378 "SampleAfterValue": "100000",
2379 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC",
2380 "Offcore": "1"
2381 },
2382 {
2383 "EventCode": "0xB7",
2384 "MSRValue": "0x4702",
2385 "Counter": "2",
2386 "UMask": "0x1",
2387 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE_DRAM",
2388 "MSRIndex": "0x1A6",
2389 "SampleAfterValue": "100000",
2390 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC or local DRAM",
2391 "Offcore": "1"
2392 },
2393 {
2394 "EventCode": "0xB7",
2395 "MSRValue": "0x1802",
2396 "Counter": "2",
2397 "UMask": "0x1",
2398 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE",
2399 "MSRIndex": "0x1A6",
2400 "SampleAfterValue": "100000",
2401 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache",
2402 "Offcore": "1"
2403 },
2404 {
2405 "EventCode": "0xB7",
2406 "MSRValue": "0x3802",
2407 "Counter": "2",
2408 "UMask": "0x1",
2409 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_DRAM",
2410 "MSRIndex": "0x1A6",
2411 "SampleAfterValue": "100000",
2412 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache or remote DRAM",
2413 "Offcore": "1"
2414 },
2415 {
2416 "EventCode": "0xB7",
2417 "MSRValue": "0x1002",
2418 "Counter": "2",
2419 "UMask": "0x1",
2420 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HIT",
2421 "MSRIndex": "0x1A6",
2422 "SampleAfterValue": "100000",
2423 "BriefDescription": "Offcore demand RFO requests that HIT in a remote cache",
2424 "Offcore": "1"
2425 },
2426 {
2427 "EventCode": "0xB7",
2428 "MSRValue": "0x802",
2429 "Counter": "2",
2430 "UMask": "0x1",
2431 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HITM",
2432 "MSRIndex": "0x1A6",
2433 "SampleAfterValue": "100000",
2434 "BriefDescription": "Offcore demand RFO requests that HITM in a remote cache",
2435 "Offcore": "1"
2436 },
2437 {
2438 "EventCode": "0xB7",
2439 "MSRValue": "0x7F80",
2440 "Counter": "2",
2441 "UMask": "0x1",
2442 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_CACHE_DRAM",
2443 "MSRIndex": "0x1A6",
2444 "SampleAfterValue": "100000",
2445 "BriefDescription": "Offcore other requests satisfied by any cache or DRAM.",
2446 "Offcore": "1"
2447 },
2448 {
2449 "EventCode": "0xB7",
2450 "MSRValue": "0xFF80",
2451 "Counter": "2",
2452 "UMask": "0x1",
2453 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LOCATION",
2454 "MSRIndex": "0x1A6",
2455 "SampleAfterValue": "100000",
2456 "BriefDescription": "All offcore other requests",
2457 "Offcore": "1"
2458 },
2459 {
2460 "EventCode": "0xB7",
2461 "MSRValue": "0x8080",
2462 "Counter": "2",
2463 "UMask": "0x1",
2464 "EventName": "OFFCORE_RESPONSE.OTHER.IO_CSR_MMIO",
2465 "MSRIndex": "0x1A6",
2466 "SampleAfterValue": "100000",
2467 "BriefDescription": "Offcore other requests satisfied by the IO, CSR, MMIO unit",
2468 "Offcore": "1"
2469 },
2470 {
2471 "EventCode": "0xB7",
2472 "MSRValue": "0x180",
2473 "Counter": "2",
2474 "UMask": "0x1",
2475 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_NO_OTHER_CORE",
2476 "MSRIndex": "0x1A6",
2477 "SampleAfterValue": "100000",
2478 "BriefDescription": "Offcore other requests satisfied by the LLC and not found in a sibling core",
2479 "Offcore": "1"
2480 },
2481 {
2482 "EventCode": "0xB7",
2483 "MSRValue": "0x280",
2484 "Counter": "2",
2485 "UMask": "0x1",
2486 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HIT",
2487 "MSRIndex": "0x1A6",
2488 "SampleAfterValue": "100000",
2489 "BriefDescription": "Offcore other requests satisfied by the LLC and HIT in a sibling core",
2490 "Offcore": "1"
2491 },
2492 {
2493 "EventCode": "0xB7",
2494 "MSRValue": "0x480",
2495 "Counter": "2",
2496 "UMask": "0x1",
2497 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HITM",
2498 "MSRIndex": "0x1A6",
2499 "SampleAfterValue": "100000",
2500 "BriefDescription": "Offcore other requests satisfied by the LLC and HITM in a sibling core",
2501 "Offcore": "1"
2502 },
2503 {
2504 "EventCode": "0xB7",
2505 "MSRValue": "0x780",
2506 "Counter": "2",
2507 "UMask": "0x1",
2508 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE",
2509 "MSRIndex": "0x1A6",
2510 "SampleAfterValue": "100000",
2511 "BriefDescription": "Offcore other requests satisfied by the LLC",
2512 "Offcore": "1"
2513 },
2514 {
2515 "EventCode": "0xB7",
2516 "MSRValue": "0x4780",
2517 "Counter": "2",
2518 "UMask": "0x1",
2519 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE_DRAM",
2520 "MSRIndex": "0x1A6",
2521 "SampleAfterValue": "100000",
2522 "BriefDescription": "Offcore other requests satisfied by the LLC or local DRAM",
2523 "Offcore": "1"
2524 },
2525 {
2526 "EventCode": "0xB7",
2527 "MSRValue": "0x1880",
2528 "Counter": "2",
2529 "UMask": "0x1",
2530 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE",
2531 "MSRIndex": "0x1A6",
2532 "SampleAfterValue": "100000",
2533 "BriefDescription": "Offcore other requests satisfied by a remote cache",
2534 "Offcore": "1"
2535 },
2536 {
2537 "EventCode": "0xB7",
2538 "MSRValue": "0x3880",
2539 "Counter": "2",
2540 "UMask": "0x1",
2541 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_DRAM",
2542 "MSRIndex": "0x1A6",
2543 "SampleAfterValue": "100000",
2544 "BriefDescription": "Offcore other requests satisfied by a remote cache or remote DRAM",
2545 "Offcore": "1"
2546 },
2547 {
2548 "EventCode": "0xB7",
2549 "MSRValue": "0x1080",
2550 "Counter": "2",
2551 "UMask": "0x1",
2552 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HIT",
2553 "MSRIndex": "0x1A6",
2554 "SampleAfterValue": "100000",
2555 "BriefDescription": "Offcore other requests that HIT in a remote cache",
2556 "Offcore": "1"
2557 },
2558 {
2559 "EventCode": "0xB7",
2560 "MSRValue": "0x880",
2561 "Counter": "2",
2562 "UMask": "0x1",
2563 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HITM",
2564 "MSRIndex": "0x1A6",
2565 "SampleAfterValue": "100000",
2566 "BriefDescription": "Offcore other requests that HITM in a remote cache",
2567 "Offcore": "1"
2568 },
2569 {
2570 "EventCode": "0xB7",
2571 "MSRValue": "0x7F30",
2572 "Counter": "2",
2573 "UMask": "0x1",
2574 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_CACHE_DRAM",
2575 "MSRIndex": "0x1A6",
2576 "SampleAfterValue": "100000",
2577 "BriefDescription": "Offcore prefetch data requests satisfied by any cache or DRAM",
2578 "Offcore": "1"
2579 },
2580 {
2581 "EventCode": "0xB7",
2582 "MSRValue": "0xFF30",
2583 "Counter": "2",
2584 "UMask": "0x1",
2585 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LOCATION",
2586 "MSRIndex": "0x1A6",
2587 "SampleAfterValue": "100000",
2588 "BriefDescription": "All offcore prefetch data requests",
2589 "Offcore": "1"
2590 },
2591 {
2592 "EventCode": "0xB7",
2593 "MSRValue": "0x8030",
2594 "Counter": "2",
2595 "UMask": "0x1",
2596 "EventName": "OFFCORE_RESPONSE.PF_DATA.IO_CSR_MMIO",
2597 "MSRIndex": "0x1A6",
2598 "SampleAfterValue": "100000",
2599 "BriefDescription": "Offcore prefetch data requests satisfied by the IO, CSR, MMIO unit.",
2600 "Offcore": "1"
2601 },
2602 {
2603 "EventCode": "0xB7",
2604 "MSRValue": "0x130",
2605 "Counter": "2",
2606 "UMask": "0x1",
2607 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_NO_OTHER_CORE",
2608 "MSRIndex": "0x1A6",
2609 "SampleAfterValue": "100000",
2610 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and not found in a sibling core",
2611 "Offcore": "1"
2612 },
2613 {
2614 "EventCode": "0xB7",
2615 "MSRValue": "0x230",
2616 "Counter": "2",
2617 "UMask": "0x1",
2618 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HIT",
2619 "MSRIndex": "0x1A6",
2620 "SampleAfterValue": "100000",
2621 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HIT in a sibling core",
2622 "Offcore": "1"
2623 },
2624 {
2625 "EventCode": "0xB7",
2626 "MSRValue": "0x430",
2627 "Counter": "2",
2628 "UMask": "0x1",
2629 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HITM",
2630 "MSRIndex": "0x1A6",
2631 "SampleAfterValue": "100000",
2632 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HITM in a sibling core",
2633 "Offcore": "1"
2634 },
2635 {
2636 "EventCode": "0xB7",
2637 "MSRValue": "0x730",
2638 "Counter": "2",
2639 "UMask": "0x1",
2640 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE",
2641 "MSRIndex": "0x1A6",
2642 "SampleAfterValue": "100000",
2643 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC",
2644 "Offcore": "1"
2645 },
2646 {
2647 "EventCode": "0xB7",
2648 "MSRValue": "0x4730",
2649 "Counter": "2",
2650 "UMask": "0x1",
2651 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE_DRAM",
2652 "MSRIndex": "0x1A6",
2653 "SampleAfterValue": "100000",
2654 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC or local DRAM",
2655 "Offcore": "1"
2656 },
2657 {
2658 "EventCode": "0xB7",
2659 "MSRValue": "0x1830",
2660 "Counter": "2",
2661 "UMask": "0x1",
2662 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE",
2663 "MSRIndex": "0x1A6",
2664 "SampleAfterValue": "100000",
2665 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache",
2666 "Offcore": "1"
2667 },
2668 {
2669 "EventCode": "0xB7",
2670 "MSRValue": "0x3830",
2671 "Counter": "2",
2672 "UMask": "0x1",
2673 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_DRAM",
2674 "MSRIndex": "0x1A6",
2675 "SampleAfterValue": "100000",
2676 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache or remote DRAM",
2677 "Offcore": "1"
2678 },
2679 {
2680 "EventCode": "0xB7",
2681 "MSRValue": "0x1030",
2682 "Counter": "2",
2683 "UMask": "0x1",
2684 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HIT",
2685 "MSRIndex": "0x1A6",
2686 "SampleAfterValue": "100000",
2687 "BriefDescription": "Offcore prefetch data requests that HIT in a remote cache",
2688 "Offcore": "1"
2689 },
2690 {
2691 "EventCode": "0xB7",
2692 "MSRValue": "0x830",
2693 "Counter": "2",
2694 "UMask": "0x1",
2695 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HITM",
2696 "MSRIndex": "0x1A6",
2697 "SampleAfterValue": "100000",
2698 "BriefDescription": "Offcore prefetch data requests that HITM in a remote cache",
2699 "Offcore": "1"
2700 },
2701 {
2702 "EventCode": "0xB7",
2703 "MSRValue": "0x7F10",
2704 "Counter": "2",
2705 "UMask": "0x1",
2706 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_CACHE_DRAM",
2707 "MSRIndex": "0x1A6",
2708 "SampleAfterValue": "100000",
2709 "BriefDescription": "Offcore prefetch data reads satisfied by any cache or DRAM.",
2710 "Offcore": "1"
2711 },
2712 {
2713 "EventCode": "0xB7",
2714 "MSRValue": "0xFF10",
2715 "Counter": "2",
2716 "UMask": "0x1",
2717 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LOCATION",
2718 "MSRIndex": "0x1A6",
2719 "SampleAfterValue": "100000",
2720 "BriefDescription": "All offcore prefetch data reads",
2721 "Offcore": "1"
2722 },
2723 {
2724 "EventCode": "0xB7",
2725 "MSRValue": "0x8010",
2726 "Counter": "2",
2727 "UMask": "0x1",
2728 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.IO_CSR_MMIO",
2729 "MSRIndex": "0x1A6",
2730 "SampleAfterValue": "100000",
2731 "BriefDescription": "Offcore prefetch data reads satisfied by the IO, CSR, MMIO unit",
2732 "Offcore": "1"
2733 },
2734 {
2735 "EventCode": "0xB7",
2736 "MSRValue": "0x110",
2737 "Counter": "2",
2738 "UMask": "0x1",
2739 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2740 "MSRIndex": "0x1A6",
2741 "SampleAfterValue": "100000",
2742 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and not found in a sibling core",
2743 "Offcore": "1"
2744 },
2745 {
2746 "EventCode": "0xB7",
2747 "MSRValue": "0x210",
2748 "Counter": "2",
2749 "UMask": "0x1",
2750 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2751 "MSRIndex": "0x1A6",
2752 "SampleAfterValue": "100000",
2753 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HIT in a sibling core",
2754 "Offcore": "1"
2755 },
2756 {
2757 "EventCode": "0xB7",
2758 "MSRValue": "0x410",
2759 "Counter": "2",
2760 "UMask": "0x1",
2761 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2762 "MSRIndex": "0x1A6",
2763 "SampleAfterValue": "100000",
2764 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HITM in a sibling core",
2765 "Offcore": "1"
2766 },
2767 {
2768 "EventCode": "0xB7",
2769 "MSRValue": "0x710",
2770 "Counter": "2",
2771 "UMask": "0x1",
2772 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE",
2773 "MSRIndex": "0x1A6",
2774 "SampleAfterValue": "100000",
2775 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC",
2776 "Offcore": "1"
2777 },
2778 {
2779 "EventCode": "0xB7",
2780 "MSRValue": "0x4710",
2781 "Counter": "2",
2782 "UMask": "0x1",
2783 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE_DRAM",
2784 "MSRIndex": "0x1A6",
2785 "SampleAfterValue": "100000",
2786 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC or local DRAM",
2787 "Offcore": "1"
2788 },
2789 {
2790 "EventCode": "0xB7",
2791 "MSRValue": "0x1810",
2792 "Counter": "2",
2793 "UMask": "0x1",
2794 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE",
2795 "MSRIndex": "0x1A6",
2796 "SampleAfterValue": "100000",
2797 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache",
2798 "Offcore": "1"
2799 },
2800 {
2801 "EventCode": "0xB7",
2802 "MSRValue": "0x3810",
2803 "Counter": "2",
2804 "UMask": "0x1",
2805 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_DRAM",
2806 "MSRIndex": "0x1A6",
2807 "SampleAfterValue": "100000",
2808 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache or remote DRAM",
2809 "Offcore": "1"
2810 },
2811 {
2812 "EventCode": "0xB7",
2813 "MSRValue": "0x1010",
2814 "Counter": "2",
2815 "UMask": "0x1",
2816 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HIT",
2817 "MSRIndex": "0x1A6",
2818 "SampleAfterValue": "100000",
2819 "BriefDescription": "Offcore prefetch data reads that HIT in a remote cache",
2820 "Offcore": "1"
2821 },
2822 {
2823 "EventCode": "0xB7",
2824 "MSRValue": "0x810",
2825 "Counter": "2",
2826 "UMask": "0x1",
2827 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HITM",
2828 "MSRIndex": "0x1A6",
2829 "SampleAfterValue": "100000",
2830 "BriefDescription": "Offcore prefetch data reads that HITM in a remote cache",
2831 "Offcore": "1"
2832 },
2833 {
2834 "EventCode": "0xB7",
2835 "MSRValue": "0x7F40",
2836 "Counter": "2",
2837 "UMask": "0x1",
2838 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_CACHE_DRAM",
2839 "MSRIndex": "0x1A6",
2840 "SampleAfterValue": "100000",
2841 "BriefDescription": "Offcore prefetch code reads satisfied by any cache or DRAM.",
2842 "Offcore": "1"
2843 },
2844 {
2845 "EventCode": "0xB7",
2846 "MSRValue": "0xFF40",
2847 "Counter": "2",
2848 "UMask": "0x1",
2849 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LOCATION",
2850 "MSRIndex": "0x1A6",
2851 "SampleAfterValue": "100000",
2852 "BriefDescription": "All offcore prefetch code reads",
2853 "Offcore": "1"
2854 },
2855 {
2856 "EventCode": "0xB7",
2857 "MSRValue": "0x8040",
2858 "Counter": "2",
2859 "UMask": "0x1",
2860 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.IO_CSR_MMIO",
2861 "MSRIndex": "0x1A6",
2862 "SampleAfterValue": "100000",
2863 "BriefDescription": "Offcore prefetch code reads satisfied by the IO, CSR, MMIO unit",
2864 "Offcore": "1"
2865 },
2866 {
2867 "EventCode": "0xB7",
2868 "MSRValue": "0x140",
2869 "Counter": "2",
2870 "UMask": "0x1",
2871 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_NO_OTHER_CORE",
2872 "MSRIndex": "0x1A6",
2873 "SampleAfterValue": "100000",
2874 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and not found in a sibling core",
2875 "Offcore": "1"
2876 },
2877 {
2878 "EventCode": "0xB7",
2879 "MSRValue": "0x240",
2880 "Counter": "2",
2881 "UMask": "0x1",
2882 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2883 "MSRIndex": "0x1A6",
2884 "SampleAfterValue": "100000",
2885 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HIT in a sibling core",
2886 "Offcore": "1"
2887 },
2888 {
2889 "EventCode": "0xB7",
2890 "MSRValue": "0x440",
2891 "Counter": "2",
2892 "UMask": "0x1",
2893 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2894 "MSRIndex": "0x1A6",
2895 "SampleAfterValue": "100000",
2896 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HITM in a sibling core",
2897 "Offcore": "1"
2898 },
2899 {
2900 "EventCode": "0xB7",
2901 "MSRValue": "0x740",
2902 "Counter": "2",
2903 "UMask": "0x1",
2904 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE",
2905 "MSRIndex": "0x1A6",
2906 "SampleAfterValue": "100000",
2907 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC",
2908 "Offcore": "1"
2909 },
2910 {
2911 "EventCode": "0xB7",
2912 "MSRValue": "0x4740",
2913 "Counter": "2",
2914 "UMask": "0x1",
2915 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE_DRAM",
2916 "MSRIndex": "0x1A6",
2917 "SampleAfterValue": "100000",
2918 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC or local DRAM",
2919 "Offcore": "1"
2920 },
2921 {
2922 "EventCode": "0xB7",
2923 "MSRValue": "0x1840",
2924 "Counter": "2",
2925 "UMask": "0x1",
2926 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE",
2927 "MSRIndex": "0x1A6",
2928 "SampleAfterValue": "100000",
2929 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache",
2930 "Offcore": "1"
2931 },
2932 {
2933 "EventCode": "0xB7",
2934 "MSRValue": "0x3840",
2935 "Counter": "2",
2936 "UMask": "0x1",
2937 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_DRAM",
2938 "MSRIndex": "0x1A6",
2939 "SampleAfterValue": "100000",
2940 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache or remote DRAM",
2941 "Offcore": "1"
2942 },
2943 {
2944 "EventCode": "0xB7",
2945 "MSRValue": "0x1040",
2946 "Counter": "2",
2947 "UMask": "0x1",
2948 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HIT",
2949 "MSRIndex": "0x1A6",
2950 "SampleAfterValue": "100000",
2951 "BriefDescription": "Offcore prefetch code reads that HIT in a remote cache",
2952 "Offcore": "1"
2953 },
2954 {
2955 "EventCode": "0xB7",
2956 "MSRValue": "0x840",
2957 "Counter": "2",
2958 "UMask": "0x1",
2959 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HITM",
2960 "MSRIndex": "0x1A6",
2961 "SampleAfterValue": "100000",
2962 "BriefDescription": "Offcore prefetch code reads that HITM in a remote cache",
2963 "Offcore": "1"
2964 },
2965 {
2966 "EventCode": "0xB7",
2967 "MSRValue": "0x7F20",
2968 "Counter": "2",
2969 "UMask": "0x1",
2970 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_CACHE_DRAM",
2971 "MSRIndex": "0x1A6",
2972 "SampleAfterValue": "100000",
2973 "BriefDescription": "Offcore prefetch RFO requests satisfied by any cache or DRAM.",
2974 "Offcore": "1"
2975 },
2976 {
2977 "EventCode": "0xB7",
2978 "MSRValue": "0xFF20",
2979 "Counter": "2",
2980 "UMask": "0x1",
2981 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LOCATION",
2982 "MSRIndex": "0x1A6",
2983 "SampleAfterValue": "100000",
2984 "BriefDescription": "All offcore prefetch RFO requests",
2985 "Offcore": "1"
2986 },
2987 {
2988 "EventCode": "0xB7",
2989 "MSRValue": "0x8020",
2990 "Counter": "2",
2991 "UMask": "0x1",
2992 "EventName": "OFFCORE_RESPONSE.PF_RFO.IO_CSR_MMIO",
2993 "MSRIndex": "0x1A6",
2994 "SampleAfterValue": "100000",
2995 "BriefDescription": "Offcore prefetch RFO requests satisfied by the IO, CSR, MMIO unit",
2996 "Offcore": "1"
2997 },
2998 {
2999 "EventCode": "0xB7",
3000 "MSRValue": "0x120",
3001 "Counter": "2",
3002 "UMask": "0x1",
3003 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_NO_OTHER_CORE",
3004 "MSRIndex": "0x1A6",
3005 "SampleAfterValue": "100000",
3006 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and not found in a sibling core",
3007 "Offcore": "1"
3008 },
3009 {
3010 "EventCode": "0xB7",
3011 "MSRValue": "0x220",
3012 "Counter": "2",
3013 "UMask": "0x1",
3014 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HIT",
3015 "MSRIndex": "0x1A6",
3016 "SampleAfterValue": "100000",
3017 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HIT in a sibling core",
3018 "Offcore": "1"
3019 },
3020 {
3021 "EventCode": "0xB7",
3022 "MSRValue": "0x420",
3023 "Counter": "2",
3024 "UMask": "0x1",
3025 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HITM",
3026 "MSRIndex": "0x1A6",
3027 "SampleAfterValue": "100000",
3028 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HITM in a sibling core",
3029 "Offcore": "1"
3030 },
3031 {
3032 "EventCode": "0xB7",
3033 "MSRValue": "0x720",
3034 "Counter": "2",
3035 "UMask": "0x1",
3036 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE",
3037 "MSRIndex": "0x1A6",
3038 "SampleAfterValue": "100000",
3039 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC",
3040 "Offcore": "1"
3041 },
3042 {
3043 "EventCode": "0xB7",
3044 "MSRValue": "0x4720",
3045 "Counter": "2",
3046 "UMask": "0x1",
3047 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE_DRAM",
3048 "MSRIndex": "0x1A6",
3049 "SampleAfterValue": "100000",
3050 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC or local DRAM",
3051 "Offcore": "1"
3052 },
3053 {
3054 "EventCode": "0xB7",
3055 "MSRValue": "0x1820",
3056 "Counter": "2",
3057 "UMask": "0x1",
3058 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE",
3059 "MSRIndex": "0x1A6",
3060 "SampleAfterValue": "100000",
3061 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache",
3062 "Offcore": "1"
3063 },
3064 {
3065 "EventCode": "0xB7",
3066 "MSRValue": "0x3820",
3067 "Counter": "2",
3068 "UMask": "0x1",
3069 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_DRAM",
3070 "MSRIndex": "0x1A6",
3071 "SampleAfterValue": "100000",
3072 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache or remote DRAM",
3073 "Offcore": "1"
3074 },
3075 {
3076 "EventCode": "0xB7",
3077 "MSRValue": "0x1020",
3078 "Counter": "2",
3079 "UMask": "0x1",
3080 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HIT",
3081 "MSRIndex": "0x1A6",
3082 "SampleAfterValue": "100000",
3083 "BriefDescription": "Offcore prefetch RFO requests that HIT in a remote cache",
3084 "Offcore": "1"
3085 },
3086 {
3087 "EventCode": "0xB7",
3088 "MSRValue": "0x820",
3089 "Counter": "2",
3090 "UMask": "0x1",
3091 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HITM",
3092 "MSRIndex": "0x1A6",
3093 "SampleAfterValue": "100000",
3094 "BriefDescription": "Offcore prefetch RFO requests that HITM in a remote cache",
3095 "Offcore": "1"
3096 },
3097 {
3098 "EventCode": "0xB7",
3099 "MSRValue": "0x7F70",
3100 "Counter": "2",
3101 "UMask": "0x1",
3102 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_CACHE_DRAM",
3103 "MSRIndex": "0x1A6",
3104 "SampleAfterValue": "100000",
3105 "BriefDescription": "Offcore prefetch requests satisfied by any cache or DRAM.",
3106 "Offcore": "1"
3107 },
3108 {
3109 "EventCode": "0xB7",
3110 "MSRValue": "0xFF70",
3111 "Counter": "2",
3112 "UMask": "0x1",
3113 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LOCATION",
3114 "MSRIndex": "0x1A6",
3115 "SampleAfterValue": "100000",
3116 "BriefDescription": "All offcore prefetch requests",
3117 "Offcore": "1"
3118 },
3119 {
3120 "EventCode": "0xB7",
3121 "MSRValue": "0x8070",
3122 "Counter": "2",
3123 "UMask": "0x1",
3124 "EventName": "OFFCORE_RESPONSE.PREFETCH.IO_CSR_MMIO",
3125 "MSRIndex": "0x1A6",
3126 "SampleAfterValue": "100000",
3127 "BriefDescription": "Offcore prefetch requests satisfied by the IO, CSR, MMIO unit",
3128 "Offcore": "1"
3129 },
3130 {
3131 "EventCode": "0xB7",
3132 "MSRValue": "0x170",
3133 "Counter": "2",
3134 "UMask": "0x1",
3135 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_NO_OTHER_CORE",
3136 "MSRIndex": "0x1A6",
3137 "SampleAfterValue": "100000",
3138 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and not found in a sibling core",
3139 "Offcore": "1"
3140 },
3141 {
3142 "EventCode": "0xB7",
3143 "MSRValue": "0x270",
3144 "Counter": "2",
3145 "UMask": "0x1",
3146 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HIT",
3147 "MSRIndex": "0x1A6",
3148 "SampleAfterValue": "100000",
3149 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HIT in a sibling core",
3150 "Offcore": "1"
3151 },
3152 {
3153 "EventCode": "0xB7",
3154 "MSRValue": "0x470",
3155 "Counter": "2",
3156 "UMask": "0x1",
3157 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HITM",
3158 "MSRIndex": "0x1A6",
3159 "SampleAfterValue": "100000",
3160 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HITM in a sibling core",
3161 "Offcore": "1"
3162 },
3163 {
3164 "EventCode": "0xB7",
3165 "MSRValue": "0x770",
3166 "Counter": "2",
3167 "UMask": "0x1",
3168 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE",
3169 "MSRIndex": "0x1A6",
3170 "SampleAfterValue": "100000",
3171 "BriefDescription": "Offcore prefetch requests satisfied by the LLC",
3172 "Offcore": "1"
3173 },
3174 {
3175 "EventCode": "0xB7",
3176 "MSRValue": "0x4770",
3177 "Counter": "2",
3178 "UMask": "0x1",
3179 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE_DRAM",
3180 "MSRIndex": "0x1A6",
3181 "SampleAfterValue": "100000",
3182 "BriefDescription": "Offcore prefetch requests satisfied by the LLC or local DRAM",
3183 "Offcore": "1"
3184 },
3185 {
3186 "EventCode": "0xB7",
3187 "MSRValue": "0x1870",
3188 "Counter": "2",
3189 "UMask": "0x1",
3190 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE",
3191 "MSRIndex": "0x1A6",
3192 "SampleAfterValue": "100000",
3193 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache",
3194 "Offcore": "1"
3195 },
3196 {
3197 "EventCode": "0xB7",
3198 "MSRValue": "0x3870",
3199 "Counter": "2",
3200 "UMask": "0x1",
3201 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_DRAM",
3202 "MSRIndex": "0x1A6",
3203 "SampleAfterValue": "100000",
3204 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache or remote DRAM",
3205 "Offcore": "1"
3206 },
3207 {
3208 "EventCode": "0xB7",
3209 "MSRValue": "0x1070",
3210 "Counter": "2",
3211 "UMask": "0x1",
3212 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HIT",
3213 "MSRIndex": "0x1A6",
3214 "SampleAfterValue": "100000",
3215 "BriefDescription": "Offcore prefetch requests that HIT in a remote cache",
3216 "Offcore": "1"
3217 },
3218 {
3219 "EventCode": "0xB7",
3220 "MSRValue": "0x870",
3221 "Counter": "2",
3222 "UMask": "0x1",
3223 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HITM",
3224 "MSRIndex": "0x1A6",
3225 "SampleAfterValue": "100000",
3226 "BriefDescription": "Offcore prefetch requests that HITM in a remote cache",
3227 "Offcore": "1"
3228 }
3229] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemep/floating-point.json b/tools/perf/pmu-events/arch/x86/nehalemep/floating-point.json
new file mode 100644
index 000000000000..7d2f71a9dee3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemep/floating-point.json
@@ -0,0 +1,229 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xF7",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "FP_ASSIST.ALL",
8 "SampleAfterValue": "20000",
9 "BriefDescription": "X87 Floating point assists (Precise Event)"
10 },
11 {
12 "PEBS": "1",
13 "EventCode": "0xF7",
14 "Counter": "0,1,2,3",
15 "UMask": "0x4",
16 "EventName": "FP_ASSIST.INPUT",
17 "SampleAfterValue": "20000",
18 "BriefDescription": "X87 Floating poiint assists for invalid input value (Precise Event)"
19 },
20 {
21 "PEBS": "1",
22 "EventCode": "0xF7",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "FP_ASSIST.OUTPUT",
26 "SampleAfterValue": "20000",
27 "BriefDescription": "X87 Floating point assists for invalid output value (Precise Event)"
28 },
29 {
30 "EventCode": "0x10",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "FP_COMP_OPS_EXE.MMX",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "MMX Uops"
36 },
37 {
38 "EventCode": "0x10",
39 "Counter": "0,1,2,3",
40 "UMask": "0x80",
41 "EventName": "FP_COMP_OPS_EXE.SSE_DOUBLE_PRECISION",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "SSE* FP double precision Uops"
44 },
45 {
46 "EventCode": "0x10",
47 "Counter": "0,1,2,3",
48 "UMask": "0x4",
49 "EventName": "FP_COMP_OPS_EXE.SSE_FP",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "SSE and SSE2 FP Uops"
52 },
53 {
54 "EventCode": "0x10",
55 "Counter": "0,1,2,3",
56 "UMask": "0x10",
57 "EventName": "FP_COMP_OPS_EXE.SSE_FP_PACKED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "SSE FP packed Uops"
60 },
61 {
62 "EventCode": "0x10",
63 "Counter": "0,1,2,3",
64 "UMask": "0x20",
65 "EventName": "FP_COMP_OPS_EXE.SSE_FP_SCALAR",
66 "SampleAfterValue": "2000000",
67 "BriefDescription": "SSE FP scalar Uops"
68 },
69 {
70 "EventCode": "0x10",
71 "Counter": "0,1,2,3",
72 "UMask": "0x40",
73 "EventName": "FP_COMP_OPS_EXE.SSE_SINGLE_PRECISION",
74 "SampleAfterValue": "2000000",
75 "BriefDescription": "SSE* FP single precision Uops"
76 },
77 {
78 "EventCode": "0x10",
79 "Counter": "0,1,2,3",
80 "UMask": "0x8",
81 "EventName": "FP_COMP_OPS_EXE.SSE2_INTEGER",
82 "SampleAfterValue": "2000000",
83 "BriefDescription": "SSE2 integer Uops"
84 },
85 {
86 "EventCode": "0x10",
87 "Counter": "0,1,2,3",
88 "UMask": "0x1",
89 "EventName": "FP_COMP_OPS_EXE.X87",
90 "SampleAfterValue": "2000000",
91 "BriefDescription": "Computational floating-point operations executed"
92 },
93 {
94 "EventCode": "0xCC",
95 "Counter": "0,1,2,3",
96 "UMask": "0x3",
97 "EventName": "FP_MMX_TRANS.ANY",
98 "SampleAfterValue": "2000000",
99 "BriefDescription": "All Floating Point to and from MMX transitions"
100 },
101 {
102 "EventCode": "0xCC",
103 "Counter": "0,1,2,3",
104 "UMask": "0x1",
105 "EventName": "FP_MMX_TRANS.TO_FP",
106 "SampleAfterValue": "2000000",
107 "BriefDescription": "Transitions from MMX to Floating Point instructions"
108 },
109 {
110 "EventCode": "0xCC",
111 "Counter": "0,1,2,3",
112 "UMask": "0x2",
113 "EventName": "FP_MMX_TRANS.TO_MMX",
114 "SampleAfterValue": "2000000",
115 "BriefDescription": "Transitions from Floating Point to MMX instructions"
116 },
117 {
118 "EventCode": "0x12",
119 "Counter": "0,1,2,3",
120 "UMask": "0x4",
121 "EventName": "SIMD_INT_128.PACK",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "128 bit SIMD integer pack operations"
124 },
125 {
126 "EventCode": "0x12",
127 "Counter": "0,1,2,3",
128 "UMask": "0x20",
129 "EventName": "SIMD_INT_128.PACKED_ARITH",
130 "SampleAfterValue": "200000",
131 "BriefDescription": "128 bit SIMD integer arithmetic operations"
132 },
133 {
134 "EventCode": "0x12",
135 "Counter": "0,1,2,3",
136 "UMask": "0x10",
137 "EventName": "SIMD_INT_128.PACKED_LOGICAL",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "128 bit SIMD integer logical operations"
140 },
141 {
142 "EventCode": "0x12",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1",
145 "EventName": "SIMD_INT_128.PACKED_MPY",
146 "SampleAfterValue": "200000",
147 "BriefDescription": "128 bit SIMD integer multiply operations"
148 },
149 {
150 "EventCode": "0x12",
151 "Counter": "0,1,2,3",
152 "UMask": "0x2",
153 "EventName": "SIMD_INT_128.PACKED_SHIFT",
154 "SampleAfterValue": "200000",
155 "BriefDescription": "128 bit SIMD integer shift operations"
156 },
157 {
158 "EventCode": "0x12",
159 "Counter": "0,1,2,3",
160 "UMask": "0x40",
161 "EventName": "SIMD_INT_128.SHUFFLE_MOVE",
162 "SampleAfterValue": "200000",
163 "BriefDescription": "128 bit SIMD integer shuffle/move operations"
164 },
165 {
166 "EventCode": "0x12",
167 "Counter": "0,1,2,3",
168 "UMask": "0x8",
169 "EventName": "SIMD_INT_128.UNPACK",
170 "SampleAfterValue": "200000",
171 "BriefDescription": "128 bit SIMD integer unpack operations"
172 },
173 {
174 "EventCode": "0xFD",
175 "Counter": "0,1,2,3",
176 "UMask": "0x4",
177 "EventName": "SIMD_INT_64.PACK",
178 "SampleAfterValue": "200000",
179 "BriefDescription": "SIMD integer 64 bit pack operations"
180 },
181 {
182 "EventCode": "0xFD",
183 "Counter": "0,1,2,3",
184 "UMask": "0x20",
185 "EventName": "SIMD_INT_64.PACKED_ARITH",
186 "SampleAfterValue": "200000",
187 "BriefDescription": "SIMD integer 64 bit arithmetic operations"
188 },
189 {
190 "EventCode": "0xFD",
191 "Counter": "0,1,2,3",
192 "UMask": "0x10",
193 "EventName": "SIMD_INT_64.PACKED_LOGICAL",
194 "SampleAfterValue": "200000",
195 "BriefDescription": "SIMD integer 64 bit logical operations"
196 },
197 {
198 "EventCode": "0xFD",
199 "Counter": "0,1,2,3",
200 "UMask": "0x1",
201 "EventName": "SIMD_INT_64.PACKED_MPY",
202 "SampleAfterValue": "200000",
203 "BriefDescription": "SIMD integer 64 bit packed multiply operations"
204 },
205 {
206 "EventCode": "0xFD",
207 "Counter": "0,1,2,3",
208 "UMask": "0x2",
209 "EventName": "SIMD_INT_64.PACKED_SHIFT",
210 "SampleAfterValue": "200000",
211 "BriefDescription": "SIMD integer 64 bit shift operations"
212 },
213 {
214 "EventCode": "0xFD",
215 "Counter": "0,1,2,3",
216 "UMask": "0x40",
217 "EventName": "SIMD_INT_64.SHUFFLE_MOVE",
218 "SampleAfterValue": "200000",
219 "BriefDescription": "SIMD integer 64 bit shuffle/move operations"
220 },
221 {
222 "EventCode": "0xFD",
223 "Counter": "0,1,2,3",
224 "UMask": "0x8",
225 "EventName": "SIMD_INT_64.UNPACK",
226 "SampleAfterValue": "200000",
227 "BriefDescription": "SIMD integer 64 bit unpack operations"
228 }
229] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemep/frontend.json b/tools/perf/pmu-events/arch/x86/nehalemep/frontend.json
new file mode 100644
index 000000000000..e5e21e03444d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemep/frontend.json
@@ -0,0 +1,26 @@
1[
2 {
3 "EventCode": "0xD0",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "MACRO_INSTS.DECODED",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Instructions decoded"
9 },
10 {
11 "EventCode": "0xA6",
12 "Counter": "0,1,2,3",
13 "UMask": "0x1",
14 "EventName": "MACRO_INSTS.FUSIONS_DECODED",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Macro-fused instructions decoded"
17 },
18 {
19 "EventCode": "0x19",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "TWO_UOP_INSTS_DECODED",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Two Uop instructions decoded"
25 }
26] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemep/memory.json b/tools/perf/pmu-events/arch/x86/nehalemep/memory.json
new file mode 100644
index 000000000000..f914a4525b65
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemep/memory.json
@@ -0,0 +1,739 @@
1[
2 {
3 "EventCode": "0xB7",
4 "MSRValue": "0x6011",
5 "Counter": "2",
6 "UMask": "0x1",
7 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_DRAM",
8 "MSRIndex": "0x1A6",
9 "SampleAfterValue": "100000",
10 "BriefDescription": "Offcore data reads satisfied by any DRAM",
11 "Offcore": "1"
12 },
13 {
14 "EventCode": "0xB7",
15 "MSRValue": "0xF811",
16 "Counter": "2",
17 "UMask": "0x1",
18 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LLC_MISS",
19 "MSRIndex": "0x1A6",
20 "SampleAfterValue": "100000",
21 "BriefDescription": "Offcore data reads that missed the LLC",
22 "Offcore": "1"
23 },
24 {
25 "EventCode": "0xB7",
26 "MSRValue": "0x4011",
27 "Counter": "2",
28 "UMask": "0x1",
29 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_DRAM",
30 "MSRIndex": "0x1A6",
31 "SampleAfterValue": "100000",
32 "BriefDescription": "Offcore data reads satisfied by the local DRAM",
33 "Offcore": "1"
34 },
35 {
36 "EventCode": "0xB7",
37 "MSRValue": "0x2011",
38 "Counter": "2",
39 "UMask": "0x1",
40 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_DRAM",
41 "MSRIndex": "0x1A6",
42 "SampleAfterValue": "100000",
43 "BriefDescription": "Offcore data reads satisfied by a remote DRAM",
44 "Offcore": "1"
45 },
46 {
47 "EventCode": "0xB7",
48 "MSRValue": "0x6044",
49 "Counter": "2",
50 "UMask": "0x1",
51 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_DRAM",
52 "MSRIndex": "0x1A6",
53 "SampleAfterValue": "100000",
54 "BriefDescription": "Offcore code reads satisfied by any DRAM",
55 "Offcore": "1"
56 },
57 {
58 "EventCode": "0xB7",
59 "MSRValue": "0xF844",
60 "Counter": "2",
61 "UMask": "0x1",
62 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LLC_MISS",
63 "MSRIndex": "0x1A6",
64 "SampleAfterValue": "100000",
65 "BriefDescription": "Offcore code reads that missed the LLC",
66 "Offcore": "1"
67 },
68 {
69 "EventCode": "0xB7",
70 "MSRValue": "0x4044",
71 "Counter": "2",
72 "UMask": "0x1",
73 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_DRAM",
74 "MSRIndex": "0x1A6",
75 "SampleAfterValue": "100000",
76 "BriefDescription": "Offcore code reads satisfied by the local DRAM",
77 "Offcore": "1"
78 },
79 {
80 "EventCode": "0xB7",
81 "MSRValue": "0x2044",
82 "Counter": "2",
83 "UMask": "0x1",
84 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_DRAM",
85 "MSRIndex": "0x1A6",
86 "SampleAfterValue": "100000",
87 "BriefDescription": "Offcore code reads satisfied by a remote DRAM",
88 "Offcore": "1"
89 },
90 {
91 "EventCode": "0xB7",
92 "MSRValue": "0x60FF",
93 "Counter": "2",
94 "UMask": "0x1",
95 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_DRAM",
96 "MSRIndex": "0x1A6",
97 "SampleAfterValue": "100000",
98 "BriefDescription": "Offcore requests satisfied by any DRAM",
99 "Offcore": "1"
100 },
101 {
102 "EventCode": "0xB7",
103 "MSRValue": "0xF8FF",
104 "Counter": "2",
105 "UMask": "0x1",
106 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LLC_MISS",
107 "MSRIndex": "0x1A6",
108 "SampleAfterValue": "100000",
109 "BriefDescription": "Offcore requests that missed the LLC",
110 "Offcore": "1"
111 },
112 {
113 "EventCode": "0xB7",
114 "MSRValue": "0x40FF",
115 "Counter": "2",
116 "UMask": "0x1",
117 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_DRAM",
118 "MSRIndex": "0x1A6",
119 "SampleAfterValue": "100000",
120 "BriefDescription": "Offcore requests satisfied by the local DRAM",
121 "Offcore": "1"
122 },
123 {
124 "EventCode": "0xB7",
125 "MSRValue": "0x20FF",
126 "Counter": "2",
127 "UMask": "0x1",
128 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_DRAM",
129 "MSRIndex": "0x1A6",
130 "SampleAfterValue": "100000",
131 "BriefDescription": "Offcore requests satisfied by a remote DRAM",
132 "Offcore": "1"
133 },
134 {
135 "EventCode": "0xB7",
136 "MSRValue": "0x6022",
137 "Counter": "2",
138 "UMask": "0x1",
139 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_DRAM",
140 "MSRIndex": "0x1A6",
141 "SampleAfterValue": "100000",
142 "BriefDescription": "Offcore RFO requests satisfied by any DRAM",
143 "Offcore": "1"
144 },
145 {
146 "EventCode": "0xB7",
147 "MSRValue": "0xF822",
148 "Counter": "2",
149 "UMask": "0x1",
150 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LLC_MISS",
151 "MSRIndex": "0x1A6",
152 "SampleAfterValue": "100000",
153 "BriefDescription": "Offcore RFO requests that missed the LLC",
154 "Offcore": "1"
155 },
156 {
157 "EventCode": "0xB7",
158 "MSRValue": "0x4022",
159 "Counter": "2",
160 "UMask": "0x1",
161 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_DRAM",
162 "MSRIndex": "0x1A6",
163 "SampleAfterValue": "100000",
164 "BriefDescription": "Offcore RFO requests satisfied by the local DRAM",
165 "Offcore": "1"
166 },
167 {
168 "EventCode": "0xB7",
169 "MSRValue": "0x2022",
170 "Counter": "2",
171 "UMask": "0x1",
172 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_DRAM",
173 "MSRIndex": "0x1A6",
174 "SampleAfterValue": "100000",
175 "BriefDescription": "Offcore RFO requests satisfied by a remote DRAM",
176 "Offcore": "1"
177 },
178 {
179 "EventCode": "0xB7",
180 "MSRValue": "0x6008",
181 "Counter": "2",
182 "UMask": "0x1",
183 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_DRAM",
184 "MSRIndex": "0x1A6",
185 "SampleAfterValue": "100000",
186 "BriefDescription": "Offcore writebacks to any DRAM",
187 "Offcore": "1"
188 },
189 {
190 "EventCode": "0xB7",
191 "MSRValue": "0xF808",
192 "Counter": "2",
193 "UMask": "0x1",
194 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LLC_MISS",
195 "MSRIndex": "0x1A6",
196 "SampleAfterValue": "100000",
197 "BriefDescription": "Offcore writebacks that missed the LLC",
198 "Offcore": "1"
199 },
200 {
201 "EventCode": "0xB7",
202 "MSRValue": "0x4008",
203 "Counter": "2",
204 "UMask": "0x1",
205 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_DRAM",
206 "MSRIndex": "0x1A6",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "Offcore writebacks to the local DRAM",
209 "Offcore": "1"
210 },
211 {
212 "EventCode": "0xB7",
213 "MSRValue": "0x2008",
214 "Counter": "2",
215 "UMask": "0x1",
216 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_DRAM",
217 "MSRIndex": "0x1A6",
218 "SampleAfterValue": "100000",
219 "BriefDescription": "Offcore writebacks to a remote DRAM",
220 "Offcore": "1"
221 },
222 {
223 "EventCode": "0xB7",
224 "MSRValue": "0x6077",
225 "Counter": "2",
226 "UMask": "0x1",
227 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_DRAM",
228 "MSRIndex": "0x1A6",
229 "SampleAfterValue": "100000",
230 "BriefDescription": "Offcore code or data read requests satisfied by any DRAM",
231 "Offcore": "1"
232 },
233 {
234 "EventCode": "0xB7",
235 "MSRValue": "0xF877",
236 "Counter": "2",
237 "UMask": "0x1",
238 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LLC_MISS",
239 "MSRIndex": "0x1A6",
240 "SampleAfterValue": "100000",
241 "BriefDescription": "Offcore code or data read requests that missed the LLC",
242 "Offcore": "1"
243 },
244 {
245 "EventCode": "0xB7",
246 "MSRValue": "0x4077",
247 "Counter": "2",
248 "UMask": "0x1",
249 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_DRAM",
250 "MSRIndex": "0x1A6",
251 "SampleAfterValue": "100000",
252 "BriefDescription": "Offcore code or data read requests satisfied by the local DRAM",
253 "Offcore": "1"
254 },
255 {
256 "EventCode": "0xB7",
257 "MSRValue": "0x2077",
258 "Counter": "2",
259 "UMask": "0x1",
260 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_DRAM",
261 "MSRIndex": "0x1A6",
262 "SampleAfterValue": "100000",
263 "BriefDescription": "Offcore code or data read requests satisfied by a remote DRAM",
264 "Offcore": "1"
265 },
266 {
267 "EventCode": "0xB7",
268 "MSRValue": "0x6033",
269 "Counter": "2",
270 "UMask": "0x1",
271 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_DRAM",
272 "MSRIndex": "0x1A6",
273 "SampleAfterValue": "100000",
274 "BriefDescription": "Offcore request = all data, response = any DRAM",
275 "Offcore": "1"
276 },
277 {
278 "EventCode": "0xB7",
279 "MSRValue": "0xF833",
280 "Counter": "2",
281 "UMask": "0x1",
282 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LLC_MISS",
283 "MSRIndex": "0x1A6",
284 "SampleAfterValue": "100000",
285 "BriefDescription": "Offcore request = all data, response = any LLC miss",
286 "Offcore": "1"
287 },
288 {
289 "EventCode": "0xB7",
290 "MSRValue": "0x4033",
291 "Counter": "2",
292 "UMask": "0x1",
293 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_DRAM",
294 "MSRIndex": "0x1A6",
295 "SampleAfterValue": "100000",
296 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the local DRAM.",
297 "Offcore": "1"
298 },
299 {
300 "EventCode": "0xB7",
301 "MSRValue": "0x2033",
302 "Counter": "2",
303 "UMask": "0x1",
304 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_DRAM",
305 "MSRIndex": "0x1A6",
306 "SampleAfterValue": "100000",
307 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the remote DRAM",
308 "Offcore": "1"
309 },
310 {
311 "EventCode": "0xB7",
312 "MSRValue": "0x6003",
313 "Counter": "2",
314 "UMask": "0x1",
315 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_DRAM",
316 "MSRIndex": "0x1A6",
317 "SampleAfterValue": "100000",
318 "BriefDescription": "Offcore demand data requests satisfied by any DRAM",
319 "Offcore": "1"
320 },
321 {
322 "EventCode": "0xB7",
323 "MSRValue": "0xF803",
324 "Counter": "2",
325 "UMask": "0x1",
326 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LLC_MISS",
327 "MSRIndex": "0x1A6",
328 "SampleAfterValue": "100000",
329 "BriefDescription": "Offcore demand data requests that missed the LLC",
330 "Offcore": "1"
331 },
332 {
333 "EventCode": "0xB7",
334 "MSRValue": "0x4003",
335 "Counter": "2",
336 "UMask": "0x1",
337 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_DRAM",
338 "MSRIndex": "0x1A6",
339 "SampleAfterValue": "100000",
340 "BriefDescription": "Offcore demand data requests satisfied by the local DRAM",
341 "Offcore": "1"
342 },
343 {
344 "EventCode": "0xB7",
345 "MSRValue": "0x2003",
346 "Counter": "2",
347 "UMask": "0x1",
348 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_DRAM",
349 "MSRIndex": "0x1A6",
350 "SampleAfterValue": "100000",
351 "BriefDescription": "Offcore demand data requests satisfied by a remote DRAM",
352 "Offcore": "1"
353 },
354 {
355 "EventCode": "0xB7",
356 "MSRValue": "0x6001",
357 "Counter": "2",
358 "UMask": "0x1",
359 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_DRAM",
360 "MSRIndex": "0x1A6",
361 "SampleAfterValue": "100000",
362 "BriefDescription": "Offcore demand data reads satisfied by any DRAM",
363 "Offcore": "1"
364 },
365 {
366 "EventCode": "0xB7",
367 "MSRValue": "0xF801",
368 "Counter": "2",
369 "UMask": "0x1",
370 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LLC_MISS",
371 "MSRIndex": "0x1A6",
372 "SampleAfterValue": "100000",
373 "BriefDescription": "Offcore demand data reads that missed the LLC",
374 "Offcore": "1"
375 },
376 {
377 "EventCode": "0xB7",
378 "MSRValue": "0x4001",
379 "Counter": "2",
380 "UMask": "0x1",
381 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_DRAM",
382 "MSRIndex": "0x1A6",
383 "SampleAfterValue": "100000",
384 "BriefDescription": "Offcore demand data reads satisfied by the local DRAM",
385 "Offcore": "1"
386 },
387 {
388 "EventCode": "0xB7",
389 "MSRValue": "0x2001",
390 "Counter": "2",
391 "UMask": "0x1",
392 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_DRAM",
393 "MSRIndex": "0x1A6",
394 "SampleAfterValue": "100000",
395 "BriefDescription": "Offcore demand data reads satisfied by a remote DRAM",
396 "Offcore": "1"
397 },
398 {
399 "EventCode": "0xB7",
400 "MSRValue": "0x6004",
401 "Counter": "2",
402 "UMask": "0x1",
403 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_DRAM",
404 "MSRIndex": "0x1A6",
405 "SampleAfterValue": "100000",
406 "BriefDescription": "Offcore demand code reads satisfied by any DRAM",
407 "Offcore": "1"
408 },
409 {
410 "EventCode": "0xB7",
411 "MSRValue": "0xF804",
412 "Counter": "2",
413 "UMask": "0x1",
414 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LLC_MISS",
415 "MSRIndex": "0x1A6",
416 "SampleAfterValue": "100000",
417 "BriefDescription": "Offcore demand code reads that missed the LLC",
418 "Offcore": "1"
419 },
420 {
421 "EventCode": "0xB7",
422 "MSRValue": "0x4004",
423 "Counter": "2",
424 "UMask": "0x1",
425 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_DRAM",
426 "MSRIndex": "0x1A6",
427 "SampleAfterValue": "100000",
428 "BriefDescription": "Offcore demand code reads satisfied by the local DRAM",
429 "Offcore": "1"
430 },
431 {
432 "EventCode": "0xB7",
433 "MSRValue": "0x2004",
434 "Counter": "2",
435 "UMask": "0x1",
436 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_DRAM",
437 "MSRIndex": "0x1A6",
438 "SampleAfterValue": "100000",
439 "BriefDescription": "Offcore demand code reads satisfied by a remote DRAM",
440 "Offcore": "1"
441 },
442 {
443 "EventCode": "0xB7",
444 "MSRValue": "0x6002",
445 "Counter": "2",
446 "UMask": "0x1",
447 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_DRAM",
448 "MSRIndex": "0x1A6",
449 "SampleAfterValue": "100000",
450 "BriefDescription": "Offcore demand RFO requests satisfied by any DRAM",
451 "Offcore": "1"
452 },
453 {
454 "EventCode": "0xB7",
455 "MSRValue": "0xF802",
456 "Counter": "2",
457 "UMask": "0x1",
458 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LLC_MISS",
459 "MSRIndex": "0x1A6",
460 "SampleAfterValue": "100000",
461 "BriefDescription": "Offcore demand RFO requests that missed the LLC",
462 "Offcore": "1"
463 },
464 {
465 "EventCode": "0xB7",
466 "MSRValue": "0x4002",
467 "Counter": "2",
468 "UMask": "0x1",
469 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_DRAM",
470 "MSRIndex": "0x1A6",
471 "SampleAfterValue": "100000",
472 "BriefDescription": "Offcore demand RFO requests satisfied by the local DRAM",
473 "Offcore": "1"
474 },
475 {
476 "EventCode": "0xB7",
477 "MSRValue": "0x2002",
478 "Counter": "2",
479 "UMask": "0x1",
480 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_DRAM",
481 "MSRIndex": "0x1A6",
482 "SampleAfterValue": "100000",
483 "BriefDescription": "Offcore demand RFO requests satisfied by a remote DRAM",
484 "Offcore": "1"
485 },
486 {
487 "EventCode": "0xB7",
488 "MSRValue": "0x6080",
489 "Counter": "2",
490 "UMask": "0x1",
491 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_DRAM",
492 "MSRIndex": "0x1A6",
493 "SampleAfterValue": "100000",
494 "BriefDescription": "Offcore other requests satisfied by any DRAM",
495 "Offcore": "1"
496 },
497 {
498 "EventCode": "0xB7",
499 "MSRValue": "0xF880",
500 "Counter": "2",
501 "UMask": "0x1",
502 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LLC_MISS",
503 "MSRIndex": "0x1A6",
504 "SampleAfterValue": "100000",
505 "BriefDescription": "Offcore other requests that missed the LLC",
506 "Offcore": "1"
507 },
508 {
509 "EventCode": "0xB7",
510 "MSRValue": "0x2080",
511 "Counter": "2",
512 "UMask": "0x1",
513 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_DRAM",
514 "MSRIndex": "0x1A6",
515 "SampleAfterValue": "100000",
516 "BriefDescription": "Offcore other requests satisfied by a remote DRAM",
517 "Offcore": "1"
518 },
519 {
520 "EventCode": "0xB7",
521 "MSRValue": "0x6030",
522 "Counter": "2",
523 "UMask": "0x1",
524 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_DRAM",
525 "MSRIndex": "0x1A6",
526 "SampleAfterValue": "100000",
527 "BriefDescription": "Offcore prefetch data requests satisfied by any DRAM",
528 "Offcore": "1"
529 },
530 {
531 "EventCode": "0xB7",
532 "MSRValue": "0xF830",
533 "Counter": "2",
534 "UMask": "0x1",
535 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LLC_MISS",
536 "MSRIndex": "0x1A6",
537 "SampleAfterValue": "100000",
538 "BriefDescription": "Offcore prefetch data requests that missed the LLC",
539 "Offcore": "1"
540 },
541 {
542 "EventCode": "0xB7",
543 "MSRValue": "0x4030",
544 "Counter": "2",
545 "UMask": "0x1",
546 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_DRAM",
547 "MSRIndex": "0x1A6",
548 "SampleAfterValue": "100000",
549 "BriefDescription": "Offcore prefetch data requests satisfied by the local DRAM",
550 "Offcore": "1"
551 },
552 {
553 "EventCode": "0xB7",
554 "MSRValue": "0x2030",
555 "Counter": "2",
556 "UMask": "0x1",
557 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_DRAM",
558 "MSRIndex": "0x1A6",
559 "SampleAfterValue": "100000",
560 "BriefDescription": "Offcore prefetch data requests satisfied by a remote DRAM",
561 "Offcore": "1"
562 },
563 {
564 "EventCode": "0xB7",
565 "MSRValue": "0x6010",
566 "Counter": "2",
567 "UMask": "0x1",
568 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_DRAM",
569 "MSRIndex": "0x1A6",
570 "SampleAfterValue": "100000",
571 "BriefDescription": "Offcore prefetch data reads satisfied by any DRAM",
572 "Offcore": "1"
573 },
574 {
575 "EventCode": "0xB7",
576 "MSRValue": "0xF810",
577 "Counter": "2",
578 "UMask": "0x1",
579 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LLC_MISS",
580 "MSRIndex": "0x1A6",
581 "SampleAfterValue": "100000",
582 "BriefDescription": "Offcore prefetch data reads that missed the LLC",
583 "Offcore": "1"
584 },
585 {
586 "EventCode": "0xB7",
587 "MSRValue": "0x4010",
588 "Counter": "2",
589 "UMask": "0x1",
590 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_DRAM",
591 "MSRIndex": "0x1A6",
592 "SampleAfterValue": "100000",
593 "BriefDescription": "Offcore prefetch data reads satisfied by the local DRAM",
594 "Offcore": "1"
595 },
596 {
597 "EventCode": "0xB7",
598 "MSRValue": "0x2010",
599 "Counter": "2",
600 "UMask": "0x1",
601 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_DRAM",
602 "MSRIndex": "0x1A6",
603 "SampleAfterValue": "100000",
604 "BriefDescription": "Offcore prefetch data reads satisfied by a remote DRAM",
605 "Offcore": "1"
606 },
607 {
608 "EventCode": "0xB7",
609 "MSRValue": "0x6040",
610 "Counter": "2",
611 "UMask": "0x1",
612 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_DRAM",
613 "MSRIndex": "0x1A6",
614 "SampleAfterValue": "100000",
615 "BriefDescription": "Offcore prefetch code reads satisfied by any DRAM",
616 "Offcore": "1"
617 },
618 {
619 "EventCode": "0xB7",
620 "MSRValue": "0xF840",
621 "Counter": "2",
622 "UMask": "0x1",
623 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LLC_MISS",
624 "MSRIndex": "0x1A6",
625 "SampleAfterValue": "100000",
626 "BriefDescription": "Offcore prefetch code reads that missed the LLC",
627 "Offcore": "1"
628 },
629 {
630 "EventCode": "0xB7",
631 "MSRValue": "0x4040",
632 "Counter": "2",
633 "UMask": "0x1",
634 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_DRAM",
635 "MSRIndex": "0x1A6",
636 "SampleAfterValue": "100000",
637 "BriefDescription": "Offcore prefetch code reads satisfied by the local DRAM",
638 "Offcore": "1"
639 },
640 {
641 "EventCode": "0xB7",
642 "MSRValue": "0x2040",
643 "Counter": "2",
644 "UMask": "0x1",
645 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_DRAM",
646 "MSRIndex": "0x1A6",
647 "SampleAfterValue": "100000",
648 "BriefDescription": "Offcore prefetch code reads satisfied by a remote DRAM",
649 "Offcore": "1"
650 },
651 {
652 "EventCode": "0xB7",
653 "MSRValue": "0x6020",
654 "Counter": "2",
655 "UMask": "0x1",
656 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_DRAM",
657 "MSRIndex": "0x1A6",
658 "SampleAfterValue": "100000",
659 "BriefDescription": "Offcore prefetch RFO requests satisfied by any DRAM",
660 "Offcore": "1"
661 },
662 {
663 "EventCode": "0xB7",
664 "MSRValue": "0xF820",
665 "Counter": "2",
666 "UMask": "0x1",
667 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LLC_MISS",
668 "MSRIndex": "0x1A6",
669 "SampleAfterValue": "100000",
670 "BriefDescription": "Offcore prefetch RFO requests that missed the LLC",
671 "Offcore": "1"
672 },
673 {
674 "EventCode": "0xB7",
675 "MSRValue": "0x4020",
676 "Counter": "2",
677 "UMask": "0x1",
678 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_DRAM",
679 "MSRIndex": "0x1A6",
680 "SampleAfterValue": "100000",
681 "BriefDescription": "Offcore prefetch RFO requests satisfied by the local DRAM",
682 "Offcore": "1"
683 },
684 {
685 "EventCode": "0xB7",
686 "MSRValue": "0x2020",
687 "Counter": "2",
688 "UMask": "0x1",
689 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_DRAM",
690 "MSRIndex": "0x1A6",
691 "SampleAfterValue": "100000",
692 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote DRAM",
693 "Offcore": "1"
694 },
695 {
696 "EventCode": "0xB7",
697 "MSRValue": "0x6070",
698 "Counter": "2",
699 "UMask": "0x1",
700 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_DRAM",
701 "MSRIndex": "0x1A6",
702 "SampleAfterValue": "100000",
703 "BriefDescription": "Offcore prefetch requests satisfied by any DRAM",
704 "Offcore": "1"
705 },
706 {
707 "EventCode": "0xB7",
708 "MSRValue": "0xF870",
709 "Counter": "2",
710 "UMask": "0x1",
711 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LLC_MISS",
712 "MSRIndex": "0x1A6",
713 "SampleAfterValue": "100000",
714 "BriefDescription": "Offcore prefetch requests that missed the LLC",
715 "Offcore": "1"
716 },
717 {
718 "EventCode": "0xB7",
719 "MSRValue": "0x4070",
720 "Counter": "2",
721 "UMask": "0x1",
722 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_DRAM",
723 "MSRIndex": "0x1A6",
724 "SampleAfterValue": "100000",
725 "BriefDescription": "Offcore prefetch requests satisfied by the local DRAM",
726 "Offcore": "1"
727 },
728 {
729 "EventCode": "0xB7",
730 "MSRValue": "0x2070",
731 "Counter": "2",
732 "UMask": "0x1",
733 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_DRAM",
734 "MSRIndex": "0x1A6",
735 "SampleAfterValue": "100000",
736 "BriefDescription": "Offcore prefetch requests satisfied by a remote DRAM",
737 "Offcore": "1"
738 }
739] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemep/other.json b/tools/perf/pmu-events/arch/x86/nehalemep/other.json
new file mode 100644
index 000000000000..af0860622445
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemep/other.json
@@ -0,0 +1,210 @@
1[
2 {
3 "EventCode": "0xE8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "BPU_CLEARS.EARLY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Early Branch Prediciton Unit clears"
9 },
10 {
11 "EventCode": "0xE8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x2",
14 "EventName": "BPU_CLEARS.LATE",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Late Branch Prediction Unit clears"
17 },
18 {
19 "EventCode": "0xE5",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "BPU_MISSED_CALL_RET",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Branch prediction unit missed call or return"
25 },
26 {
27 "EventCode": "0xD5",
28 "Counter": "0,1,2,3",
29 "UMask": "0x1",
30 "EventName": "ES_REG_RENAMES",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "ES segment renames"
33 },
34 {
35 "EventCode": "0x6C",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "IO_TRANSACTIONS",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "I/O transactions"
41 },
42 {
43 "EventCode": "0x80",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "L1I.CYCLES_STALLED",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1I instruction fetch stall cycles"
49 },
50 {
51 "EventCode": "0x80",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "L1I.HITS",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1I instruction fetch hits"
57 },
58 {
59 "EventCode": "0x80",
60 "Counter": "0,1,2,3",
61 "UMask": "0x2",
62 "EventName": "L1I.MISSES",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "L1I instruction fetch misses"
65 },
66 {
67 "EventCode": "0x80",
68 "Counter": "0,1,2,3",
69 "UMask": "0x3",
70 "EventName": "L1I.READS",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "L1I Instruction fetches"
73 },
74 {
75 "EventCode": "0x82",
76 "Counter": "0,1,2,3",
77 "UMask": "0x1",
78 "EventName": "LARGE_ITLB.HIT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Large ITLB hit"
81 },
82 {
83 "EventCode": "0x13",
84 "Counter": "0,1,2,3",
85 "UMask": "0x7",
86 "EventName": "LOAD_DISPATCH.ANY",
87 "SampleAfterValue": "2000000",
88 "BriefDescription": "All loads dispatched"
89 },
90 {
91 "EventCode": "0x13",
92 "Counter": "0,1,2,3",
93 "UMask": "0x4",
94 "EventName": "LOAD_DISPATCH.MOB",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "Loads dispatched from the MOB"
97 },
98 {
99 "EventCode": "0x13",
100 "Counter": "0,1,2,3",
101 "UMask": "0x1",
102 "EventName": "LOAD_DISPATCH.RS",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Loads dispatched that bypass the MOB"
105 },
106 {
107 "EventCode": "0x13",
108 "Counter": "0,1,2,3",
109 "UMask": "0x2",
110 "EventName": "LOAD_DISPATCH.RS_DELAYED",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "Loads dispatched from stage 305"
113 },
114 {
115 "EventCode": "0x7",
116 "Counter": "0,1,2,3",
117 "UMask": "0x1",
118 "EventName": "PARTIAL_ADDRESS_ALIAS",
119 "SampleAfterValue": "200000",
120 "BriefDescription": "False dependencies due to partial address aliasing"
121 },
122 {
123 "EventCode": "0xD2",
124 "Counter": "0,1,2,3",
125 "UMask": "0xf",
126 "EventName": "RAT_STALLS.ANY",
127 "SampleAfterValue": "2000000",
128 "BriefDescription": "All RAT stall cycles"
129 },
130 {
131 "EventCode": "0xD2",
132 "Counter": "0,1,2,3",
133 "UMask": "0x1",
134 "EventName": "RAT_STALLS.FLAGS",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "Flag stall cycles"
137 },
138 {
139 "EventCode": "0xD2",
140 "Counter": "0,1,2,3",
141 "UMask": "0x2",
142 "EventName": "RAT_STALLS.REGISTERS",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "Partial register stall cycles"
145 },
146 {
147 "EventCode": "0xD2",
148 "Counter": "0,1,2,3",
149 "UMask": "0x4",
150 "EventName": "RAT_STALLS.ROB_READ_PORT",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "ROB read port stalls cycles"
153 },
154 {
155 "EventCode": "0xD2",
156 "Counter": "0,1,2,3",
157 "UMask": "0x8",
158 "EventName": "RAT_STALLS.SCOREBOARD",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "Scoreboard stall cycles"
161 },
162 {
163 "EventCode": "0x4",
164 "Counter": "0,1,2,3",
165 "UMask": "0x7",
166 "EventName": "SB_DRAIN.ANY",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "All Store buffer stall cycles"
169 },
170 {
171 "EventCode": "0xD4",
172 "Counter": "0,1,2,3",
173 "UMask": "0x1",
174 "EventName": "SEG_RENAME_STALLS",
175 "SampleAfterValue": "2000000",
176 "BriefDescription": "Segment rename stall cycles"
177 },
178 {
179 "EventCode": "0xB8",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "SNOOP_RESPONSE.HIT",
183 "SampleAfterValue": "100000",
184 "BriefDescription": "Thread responded HIT to snoop"
185 },
186 {
187 "EventCode": "0xB8",
188 "Counter": "0,1,2,3",
189 "UMask": "0x2",
190 "EventName": "SNOOP_RESPONSE.HITE",
191 "SampleAfterValue": "100000",
192 "BriefDescription": "Thread responded HITE to snoop"
193 },
194 {
195 "EventCode": "0xB8",
196 "Counter": "0,1,2,3",
197 "UMask": "0x4",
198 "EventName": "SNOOP_RESPONSE.HITM",
199 "SampleAfterValue": "100000",
200 "BriefDescription": "Thread responded HITM to snoop"
201 },
202 {
203 "EventCode": "0xF6",
204 "Counter": "0,1,2,3",
205 "UMask": "0x1",
206 "EventName": "SQ_FULL_STALL_CYCLES",
207 "SampleAfterValue": "2000000",
208 "BriefDescription": "Super Queue full stall cycles"
209 }
210] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemep/pipeline.json b/tools/perf/pmu-events/arch/x86/nehalemep/pipeline.json
new file mode 100644
index 000000000000..41006ddcd893
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemep/pipeline.json
@@ -0,0 +1,881 @@
1[
2 {
3 "EventCode": "0x14",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ARITH.CYCLES_DIV_BUSY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles the divider is busy"
9 },
10 {
11 "EventCode": "0x14",
12 "Invert": "1",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "ARITH.DIV",
16 "SampleAfterValue": "2000000",
17 "BriefDescription": "Divide Operations executed",
18 "CounterMask": "1",
19 "EdgeDetect": "1"
20 },
21 {
22 "EventCode": "0x14",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "ARITH.MUL",
26 "SampleAfterValue": "2000000",
27 "BriefDescription": "Multiply operations executed"
28 },
29 {
30 "EventCode": "0xE6",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "BACLEAR.BAD_TARGET",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "BACLEAR asserted with bad target address"
36 },
37 {
38 "EventCode": "0xE6",
39 "Counter": "0,1,2,3",
40 "UMask": "0x1",
41 "EventName": "BACLEAR.CLEAR",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "BACLEAR asserted, regardless of cause "
44 },
45 {
46 "EventCode": "0xA7",
47 "Counter": "0,1,2,3",
48 "UMask": "0x1",
49 "EventName": "BACLEAR_FORCE_IQ",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "Instruction queue forced BACLEAR"
52 },
53 {
54 "EventCode": "0xE0",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "BR_INST_DECODED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "Branch instructions decoded"
60 },
61 {
62 "EventCode": "0x88",
63 "Counter": "0,1,2,3",
64 "UMask": "0x7f",
65 "EventName": "BR_INST_EXEC.ANY",
66 "SampleAfterValue": "200000",
67 "BriefDescription": "Branch instructions executed"
68 },
69 {
70 "EventCode": "0x88",
71 "Counter": "0,1,2,3",
72 "UMask": "0x1",
73 "EventName": "BR_INST_EXEC.COND",
74 "SampleAfterValue": "200000",
75 "BriefDescription": "Conditional branch instructions executed"
76 },
77 {
78 "EventCode": "0x88",
79 "Counter": "0,1,2,3",
80 "UMask": "0x2",
81 "EventName": "BR_INST_EXEC.DIRECT",
82 "SampleAfterValue": "200000",
83 "BriefDescription": "Unconditional branches executed"
84 },
85 {
86 "EventCode": "0x88",
87 "Counter": "0,1,2,3",
88 "UMask": "0x10",
89 "EventName": "BR_INST_EXEC.DIRECT_NEAR_CALL",
90 "SampleAfterValue": "20000",
91 "BriefDescription": "Unconditional call branches executed"
92 },
93 {
94 "EventCode": "0x88",
95 "Counter": "0,1,2,3",
96 "UMask": "0x20",
97 "EventName": "BR_INST_EXEC.INDIRECT_NEAR_CALL",
98 "SampleAfterValue": "20000",
99 "BriefDescription": "Indirect call branches executed"
100 },
101 {
102 "EventCode": "0x88",
103 "Counter": "0,1,2,3",
104 "UMask": "0x4",
105 "EventName": "BR_INST_EXEC.INDIRECT_NON_CALL",
106 "SampleAfterValue": "20000",
107 "BriefDescription": "Indirect non call branches executed"
108 },
109 {
110 "EventCode": "0x88",
111 "Counter": "0,1,2,3",
112 "UMask": "0x30",
113 "EventName": "BR_INST_EXEC.NEAR_CALLS",
114 "SampleAfterValue": "20000",
115 "BriefDescription": "Call branches executed"
116 },
117 {
118 "EventCode": "0x88",
119 "Counter": "0,1,2,3",
120 "UMask": "0x7",
121 "EventName": "BR_INST_EXEC.NON_CALLS",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "All non call branches executed"
124 },
125 {
126 "EventCode": "0x88",
127 "Counter": "0,1,2,3",
128 "UMask": "0x8",
129 "EventName": "BR_INST_EXEC.RETURN_NEAR",
130 "SampleAfterValue": "20000",
131 "BriefDescription": "Indirect return branches executed"
132 },
133 {
134 "EventCode": "0x88",
135 "Counter": "0,1,2,3",
136 "UMask": "0x40",
137 "EventName": "BR_INST_EXEC.TAKEN",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "Taken branches executed"
140 },
141 {
142 "PEBS": "1",
143 "EventCode": "0xC4",
144 "Counter": "0,1,2,3",
145 "UMask": "0x4",
146 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
147 "SampleAfterValue": "200000",
148 "BriefDescription": "Retired branch instructions (Precise Event)"
149 },
150 {
151 "PEBS": "1",
152 "EventCode": "0xC4",
153 "Counter": "0,1,2,3",
154 "UMask": "0x1",
155 "EventName": "BR_INST_RETIRED.CONDITIONAL",
156 "SampleAfterValue": "200000",
157 "BriefDescription": "Retired conditional branch instructions (Precise Event)"
158 },
159 {
160 "PEBS": "1",
161 "EventCode": "0xC4",
162 "Counter": "0,1,2,3",
163 "UMask": "0x2",
164 "EventName": "BR_INST_RETIRED.NEAR_CALL",
165 "SampleAfterValue": "20000",
166 "BriefDescription": "Retired near call instructions (Precise Event)"
167 },
168 {
169 "EventCode": "0x89",
170 "Counter": "0,1,2,3",
171 "UMask": "0x7f",
172 "EventName": "BR_MISP_EXEC.ANY",
173 "SampleAfterValue": "20000",
174 "BriefDescription": "Mispredicted branches executed"
175 },
176 {
177 "EventCode": "0x89",
178 "Counter": "0,1,2,3",
179 "UMask": "0x1",
180 "EventName": "BR_MISP_EXEC.COND",
181 "SampleAfterValue": "20000",
182 "BriefDescription": "Mispredicted conditional branches executed"
183 },
184 {
185 "EventCode": "0x89",
186 "Counter": "0,1,2,3",
187 "UMask": "0x2",
188 "EventName": "BR_MISP_EXEC.DIRECT",
189 "SampleAfterValue": "20000",
190 "BriefDescription": "Mispredicted unconditional branches executed"
191 },
192 {
193 "EventCode": "0x89",
194 "Counter": "0,1,2,3",
195 "UMask": "0x10",
196 "EventName": "BR_MISP_EXEC.DIRECT_NEAR_CALL",
197 "SampleAfterValue": "2000",
198 "BriefDescription": "Mispredicted non call branches executed"
199 },
200 {
201 "EventCode": "0x89",
202 "Counter": "0,1,2,3",
203 "UMask": "0x20",
204 "EventName": "BR_MISP_EXEC.INDIRECT_NEAR_CALL",
205 "SampleAfterValue": "2000",
206 "BriefDescription": "Mispredicted indirect call branches executed"
207 },
208 {
209 "EventCode": "0x89",
210 "Counter": "0,1,2,3",
211 "UMask": "0x4",
212 "EventName": "BR_MISP_EXEC.INDIRECT_NON_CALL",
213 "SampleAfterValue": "2000",
214 "BriefDescription": "Mispredicted indirect non call branches executed"
215 },
216 {
217 "EventCode": "0x89",
218 "Counter": "0,1,2,3",
219 "UMask": "0x30",
220 "EventName": "BR_MISP_EXEC.NEAR_CALLS",
221 "SampleAfterValue": "2000",
222 "BriefDescription": "Mispredicted call branches executed"
223 },
224 {
225 "EventCode": "0x89",
226 "Counter": "0,1,2,3",
227 "UMask": "0x7",
228 "EventName": "BR_MISP_EXEC.NON_CALLS",
229 "SampleAfterValue": "20000",
230 "BriefDescription": "Mispredicted non call branches executed"
231 },
232 {
233 "EventCode": "0x89",
234 "Counter": "0,1,2,3",
235 "UMask": "0x8",
236 "EventName": "BR_MISP_EXEC.RETURN_NEAR",
237 "SampleAfterValue": "2000",
238 "BriefDescription": "Mispredicted return branches executed"
239 },
240 {
241 "EventCode": "0x89",
242 "Counter": "0,1,2,3",
243 "UMask": "0x40",
244 "EventName": "BR_MISP_EXEC.TAKEN",
245 "SampleAfterValue": "20000",
246 "BriefDescription": "Mispredicted taken branches executed"
247 },
248 {
249 "PEBS": "1",
250 "EventCode": "0xC5",
251 "Counter": "0,1,2,3",
252 "UMask": "0x2",
253 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
254 "SampleAfterValue": "2000",
255 "BriefDescription": "Mispredicted near retired calls (Precise Event)"
256 },
257 {
258 "EventCode": "0x0",
259 "Counter": "Fixed counter 3",
260 "UMask": "0x0",
261 "EventName": "CPU_CLK_UNHALTED.REF",
262 "SampleAfterValue": "2000000",
263 "BriefDescription": "Reference cycles when thread is not halted (fixed counter)"
264 },
265 {
266 "EventCode": "0x3C",
267 "Counter": "0,1,2,3",
268 "UMask": "0x1",
269 "EventName": "CPU_CLK_UNHALTED.REF_P",
270 "SampleAfterValue": "100000",
271 "BriefDescription": "Reference base clock (133 Mhz) cycles when thread is not halted (programmable counter)"
272 },
273 {
274 "EventCode": "0x0",
275 "Counter": "Fixed counter 2",
276 "UMask": "0x0",
277 "EventName": "CPU_CLK_UNHALTED.THREAD",
278 "SampleAfterValue": "2000000",
279 "BriefDescription": "Cycles when thread is not halted (fixed counter)"
280 },
281 {
282 "EventCode": "0x3C",
283 "Counter": "0,1,2,3",
284 "UMask": "0x0",
285 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
286 "SampleAfterValue": "2000000",
287 "BriefDescription": "Cycles when thread is not halted (programmable counter)"
288 },
289 {
290 "EventCode": "0x3C",
291 "Invert": "1",
292 "Counter": "0,1,2,3",
293 "UMask": "0x0",
294 "EventName": "CPU_CLK_UNHALTED.TOTAL_CYCLES",
295 "SampleAfterValue": "2000000",
296 "BriefDescription": "Total CPU cycles",
297 "CounterMask": "2"
298 },
299 {
300 "EventCode": "0x87",
301 "Counter": "0,1,2,3",
302 "UMask": "0xf",
303 "EventName": "ILD_STALL.ANY",
304 "SampleAfterValue": "2000000",
305 "BriefDescription": "Any Instruction Length Decoder stall cycles"
306 },
307 {
308 "EventCode": "0x87",
309 "Counter": "0,1,2,3",
310 "UMask": "0x4",
311 "EventName": "ILD_STALL.IQ_FULL",
312 "SampleAfterValue": "2000000",
313 "BriefDescription": "Instruction Queue full stall cycles"
314 },
315 {
316 "EventCode": "0x87",
317 "Counter": "0,1,2,3",
318 "UMask": "0x1",
319 "EventName": "ILD_STALL.LCP",
320 "SampleAfterValue": "2000000",
321 "BriefDescription": "Length Change Prefix stall cycles"
322 },
323 {
324 "EventCode": "0x87",
325 "Counter": "0,1,2,3",
326 "UMask": "0x2",
327 "EventName": "ILD_STALL.MRU",
328 "SampleAfterValue": "2000000",
329 "BriefDescription": "Stall cycles due to BPU MRU bypass"
330 },
331 {
332 "EventCode": "0x87",
333 "Counter": "0,1,2,3",
334 "UMask": "0x8",
335 "EventName": "ILD_STALL.REGEN",
336 "SampleAfterValue": "2000000",
337 "BriefDescription": "Regen stall cycles"
338 },
339 {
340 "EventCode": "0x18",
341 "Counter": "0,1,2,3",
342 "UMask": "0x1",
343 "EventName": "INST_DECODED.DEC0",
344 "SampleAfterValue": "2000000",
345 "BriefDescription": "Instructions that must be decoded by decoder 0"
346 },
347 {
348 "EventCode": "0x1E",
349 "Counter": "0,1,2,3",
350 "UMask": "0x1",
351 "EventName": "INST_QUEUE_WRITE_CYCLES",
352 "SampleAfterValue": "2000000",
353 "BriefDescription": "Cycles instructions are written to the instruction queue"
354 },
355 {
356 "EventCode": "0x17",
357 "Counter": "0,1,2,3",
358 "UMask": "0x1",
359 "EventName": "INST_QUEUE_WRITES",
360 "SampleAfterValue": "2000000",
361 "BriefDescription": "Instructions written to instruction queue."
362 },
363 {
364 "EventCode": "0x0",
365 "Counter": "Fixed counter 1",
366 "UMask": "0x0",
367 "EventName": "INST_RETIRED.ANY",
368 "SampleAfterValue": "2000000",
369 "BriefDescription": "Instructions retired (fixed counter)"
370 },
371 {
372 "PEBS": "1",
373 "EventCode": "0xC0",
374 "Counter": "0,1,2,3",
375 "UMask": "0x1",
376 "EventName": "INST_RETIRED.ANY_P",
377 "SampleAfterValue": "2000000",
378 "BriefDescription": "Instructions retired (Programmable counter and Precise Event)"
379 },
380 {
381 "PEBS": "1",
382 "EventCode": "0xC0",
383 "Counter": "0,1,2,3",
384 "UMask": "0x4",
385 "EventName": "INST_RETIRED.MMX",
386 "SampleAfterValue": "2000000",
387 "BriefDescription": "Retired MMX instructions (Precise Event)"
388 },
389 {
390 "PEBS": "1",
391 "EventCode": "0xC0",
392 "Invert": "1",
393 "Counter": "0,1,2,3",
394 "UMask": "0x1",
395 "EventName": "INST_RETIRED.TOTAL_CYCLES",
396 "SampleAfterValue": "2000000",
397 "BriefDescription": "Total cycles (Precise Event)",
398 "CounterMask": "16"
399 },
400 {
401 "PEBS": "1",
402 "EventCode": "0xC0",
403 "Counter": "0,1,2,3",
404 "UMask": "0x2",
405 "EventName": "INST_RETIRED.X87",
406 "SampleAfterValue": "2000000",
407 "BriefDescription": "Retired floating-point operations (Precise Event)"
408 },
409 {
410 "EventCode": "0x4C",
411 "Counter": "0,1",
412 "UMask": "0x1",
413 "EventName": "LOAD_HIT_PRE",
414 "SampleAfterValue": "200000",
415 "BriefDescription": "Load operations conflicting with software prefetches"
416 },
417 {
418 "EventCode": "0xA8",
419 "Counter": "0,1,2,3",
420 "UMask": "0x1",
421 "EventName": "LSD.ACTIVE",
422 "SampleAfterValue": "2000000",
423 "BriefDescription": "Cycles when uops were delivered by the LSD",
424 "CounterMask": "1"
425 },
426 {
427 "EventCode": "0xA8",
428 "Invert": "1",
429 "Counter": "0,1,2,3",
430 "UMask": "0x1",
431 "EventName": "LSD.INACTIVE",
432 "SampleAfterValue": "2000000",
433 "BriefDescription": "Cycles no uops were delivered by the LSD",
434 "CounterMask": "1"
435 },
436 {
437 "EventCode": "0x20",
438 "Counter": "0,1,2,3",
439 "UMask": "0x1",
440 "EventName": "LSD_OVERFLOW",
441 "SampleAfterValue": "2000000",
442 "BriefDescription": "Loops that can't stream from the instruction queue"
443 },
444 {
445 "EventCode": "0xC3",
446 "Counter": "0,1,2,3",
447 "UMask": "0x1",
448 "EventName": "MACHINE_CLEARS.CYCLES",
449 "SampleAfterValue": "20000",
450 "BriefDescription": "Cycles machine clear asserted"
451 },
452 {
453 "EventCode": "0xC3",
454 "Counter": "0,1,2,3",
455 "UMask": "0x2",
456 "EventName": "MACHINE_CLEARS.MEM_ORDER",
457 "SampleAfterValue": "20000",
458 "BriefDescription": "Execution pipeline restart due to Memory ordering conflicts"
459 },
460 {
461 "EventCode": "0xC3",
462 "Counter": "0,1,2,3",
463 "UMask": "0x4",
464 "EventName": "MACHINE_CLEARS.SMC",
465 "SampleAfterValue": "20000",
466 "BriefDescription": "Self-Modifying Code detected"
467 },
468 {
469 "EventCode": "0xA2",
470 "Counter": "0,1,2,3",
471 "UMask": "0x1",
472 "EventName": "RESOURCE_STALLS.ANY",
473 "SampleAfterValue": "2000000",
474 "BriefDescription": "Resource related stall cycles"
475 },
476 {
477 "EventCode": "0xA2",
478 "Counter": "0,1,2,3",
479 "UMask": "0x20",
480 "EventName": "RESOURCE_STALLS.FPCW",
481 "SampleAfterValue": "2000000",
482 "BriefDescription": "FPU control word write stall cycles"
483 },
484 {
485 "EventCode": "0xA2",
486 "Counter": "0,1,2,3",
487 "UMask": "0x2",
488 "EventName": "RESOURCE_STALLS.LOAD",
489 "SampleAfterValue": "2000000",
490 "BriefDescription": "Load buffer stall cycles"
491 },
492 {
493 "EventCode": "0xA2",
494 "Counter": "0,1,2,3",
495 "UMask": "0x40",
496 "EventName": "RESOURCE_STALLS.MXCSR",
497 "SampleAfterValue": "2000000",
498 "BriefDescription": "MXCSR rename stall cycles"
499 },
500 {
501 "EventCode": "0xA2",
502 "Counter": "0,1,2,3",
503 "UMask": "0x80",
504 "EventName": "RESOURCE_STALLS.OTHER",
505 "SampleAfterValue": "2000000",
506 "BriefDescription": "Other Resource related stall cycles"
507 },
508 {
509 "EventCode": "0xA2",
510 "Counter": "0,1,2,3",
511 "UMask": "0x10",
512 "EventName": "RESOURCE_STALLS.ROB_FULL",
513 "SampleAfterValue": "2000000",
514 "BriefDescription": "ROB full stall cycles"
515 },
516 {
517 "EventCode": "0xA2",
518 "Counter": "0,1,2,3",
519 "UMask": "0x4",
520 "EventName": "RESOURCE_STALLS.RS_FULL",
521 "SampleAfterValue": "2000000",
522 "BriefDescription": "Reservation Station full stall cycles"
523 },
524 {
525 "EventCode": "0xA2",
526 "Counter": "0,1,2,3",
527 "UMask": "0x8",
528 "EventName": "RESOURCE_STALLS.STORE",
529 "SampleAfterValue": "2000000",
530 "BriefDescription": "Store buffer stall cycles"
531 },
532 {
533 "PEBS": "1",
534 "EventCode": "0xC7",
535 "Counter": "0,1,2,3",
536 "UMask": "0x4",
537 "EventName": "SSEX_UOPS_RETIRED.PACKED_DOUBLE",
538 "SampleAfterValue": "200000",
539 "BriefDescription": "SIMD Packed-Double Uops retired (Precise Event)"
540 },
541 {
542 "PEBS": "1",
543 "EventCode": "0xC7",
544 "Counter": "0,1,2,3",
545 "UMask": "0x1",
546 "EventName": "SSEX_UOPS_RETIRED.PACKED_SINGLE",
547 "SampleAfterValue": "200000",
548 "BriefDescription": "SIMD Packed-Single Uops retired (Precise Event)"
549 },
550 {
551 "PEBS": "1",
552 "EventCode": "0xC7",
553 "Counter": "0,1,2,3",
554 "UMask": "0x8",
555 "EventName": "SSEX_UOPS_RETIRED.SCALAR_DOUBLE",
556 "SampleAfterValue": "200000",
557 "BriefDescription": "SIMD Scalar-Double Uops retired (Precise Event)"
558 },
559 {
560 "PEBS": "1",
561 "EventCode": "0xC7",
562 "Counter": "0,1,2,3",
563 "UMask": "0x2",
564 "EventName": "SSEX_UOPS_RETIRED.SCALAR_SINGLE",
565 "SampleAfterValue": "200000",
566 "BriefDescription": "SIMD Scalar-Single Uops retired (Precise Event)"
567 },
568 {
569 "PEBS": "1",
570 "EventCode": "0xC7",
571 "Counter": "0,1,2,3",
572 "UMask": "0x10",
573 "EventName": "SSEX_UOPS_RETIRED.VECTOR_INTEGER",
574 "SampleAfterValue": "200000",
575 "BriefDescription": "SIMD Vector Integer Uops retired (Precise Event)"
576 },
577 {
578 "EventCode": "0xDB",
579 "Counter": "0,1,2,3",
580 "UMask": "0x1",
581 "EventName": "UOP_UNFUSION",
582 "SampleAfterValue": "2000000",
583 "BriefDescription": "Uop unfusions due to FP exceptions"
584 },
585 {
586 "EventCode": "0xD1",
587 "Counter": "0,1,2,3",
588 "UMask": "0x4",
589 "EventName": "UOPS_DECODED.ESP_FOLDING",
590 "SampleAfterValue": "2000000",
591 "BriefDescription": "Stack pointer instructions decoded"
592 },
593 {
594 "EventCode": "0xD1",
595 "Counter": "0,1,2,3",
596 "UMask": "0x8",
597 "EventName": "UOPS_DECODED.ESP_SYNC",
598 "SampleAfterValue": "2000000",
599 "BriefDescription": "Stack pointer sync operations"
600 },
601 {
602 "EventCode": "0xD1",
603 "Counter": "0,1,2,3",
604 "UMask": "0x2",
605 "EventName": "UOPS_DECODED.MS_CYCLES_ACTIVE",
606 "SampleAfterValue": "2000000",
607 "BriefDescription": "Uops decoded by Microcode Sequencer",
608 "CounterMask": "1"
609 },
610 {
611 "EventCode": "0xD1",
612 "Invert": "1",
613 "Counter": "0,1,2,3",
614 "UMask": "0x1",
615 "EventName": "UOPS_DECODED.STALL_CYCLES",
616 "SampleAfterValue": "2000000",
617 "BriefDescription": "Cycles no Uops are decoded",
618 "CounterMask": "1"
619 },
620 {
621 "EventCode": "0xB1",
622 "Counter": "0,1,2,3",
623 "UMask": "0x3f",
624 "AnyThread": "1",
625 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES",
626 "SampleAfterValue": "2000000",
627 "BriefDescription": "Cycles Uops executed on any port (core count)",
628 "CounterMask": "1"
629 },
630 {
631 "EventCode": "0xB1",
632 "Counter": "0,1,2,3",
633 "UMask": "0x1f",
634 "AnyThread": "1",
635 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES_NO_PORT5",
636 "SampleAfterValue": "2000000",
637 "BriefDescription": "Cycles Uops executed on ports 0-4 (core count)",
638 "CounterMask": "1"
639 },
640 {
641 "EventCode": "0xB1",
642 "Invert": "1",
643 "Counter": "0,1,2,3",
644 "UMask": "0x3f",
645 "AnyThread": "1",
646 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT",
647 "SampleAfterValue": "2000000",
648 "BriefDescription": "Uops executed on any port (core count)",
649 "CounterMask": "1",
650 "EdgeDetect": "1"
651 },
652 {
653 "EventCode": "0xB1",
654 "Invert": "1",
655 "Counter": "0,1,2,3",
656 "UMask": "0x1f",
657 "AnyThread": "1",
658 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT_NO_PORT5",
659 "SampleAfterValue": "2000000",
660 "BriefDescription": "Uops executed on ports 0-4 (core count)",
661 "CounterMask": "1",
662 "EdgeDetect": "1"
663 },
664 {
665 "EventCode": "0xB1",
666 "Invert": "1",
667 "Counter": "0,1,2,3",
668 "UMask": "0x3f",
669 "AnyThread": "1",
670 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES",
671 "SampleAfterValue": "2000000",
672 "BriefDescription": "Cycles no Uops issued on any port (core count)",
673 "CounterMask": "1"
674 },
675 {
676 "EventCode": "0xB1",
677 "Invert": "1",
678 "Counter": "0,1,2,3",
679 "UMask": "0x1f",
680 "AnyThread": "1",
681 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES_NO_PORT5",
682 "SampleAfterValue": "2000000",
683 "BriefDescription": "Cycles no Uops issued on ports 0-4 (core count)",
684 "CounterMask": "1"
685 },
686 {
687 "EventCode": "0xB1",
688 "Counter": "0,1,2,3",
689 "UMask": "0x1",
690 "EventName": "UOPS_EXECUTED.PORT0",
691 "SampleAfterValue": "2000000",
692 "BriefDescription": "Uops executed on port 0"
693 },
694 {
695 "EventCode": "0xB1",
696 "Counter": "0,1,2,3",
697 "UMask": "0x40",
698 "EventName": "UOPS_EXECUTED.PORT015",
699 "SampleAfterValue": "2000000",
700 "BriefDescription": "Uops issued on ports 0, 1 or 5"
701 },
702 {
703 "EventCode": "0xB1",
704 "Invert": "1",
705 "Counter": "0,1,2,3",
706 "UMask": "0x40",
707 "EventName": "UOPS_EXECUTED.PORT015_STALL_CYCLES",
708 "SampleAfterValue": "2000000",
709 "BriefDescription": "Cycles no Uops issued on ports 0, 1 or 5",
710 "CounterMask": "1"
711 },
712 {
713 "EventCode": "0xB1",
714 "Counter": "0,1,2,3",
715 "UMask": "0x2",
716 "EventName": "UOPS_EXECUTED.PORT1",
717 "SampleAfterValue": "2000000",
718 "BriefDescription": "Uops executed on port 1"
719 },
720 {
721 "EventCode": "0xB1",
722 "Counter": "0,1,2,3",
723 "UMask": "0x4",
724 "AnyThread": "1",
725 "EventName": "UOPS_EXECUTED.PORT2_CORE",
726 "SampleAfterValue": "2000000",
727 "BriefDescription": "Uops executed on port 2 (core count)"
728 },
729 {
730 "EventCode": "0xB1",
731 "Counter": "0,1,2,3",
732 "UMask": "0x80",
733 "AnyThread": "1",
734 "EventName": "UOPS_EXECUTED.PORT234_CORE",
735 "SampleAfterValue": "2000000",
736 "BriefDescription": "Uops issued on ports 2, 3 or 4"
737 },
738 {
739 "EventCode": "0xB1",
740 "Counter": "0,1,2,3",
741 "UMask": "0x8",
742 "AnyThread": "1",
743 "EventName": "UOPS_EXECUTED.PORT3_CORE",
744 "SampleAfterValue": "2000000",
745 "BriefDescription": "Uops executed on port 3 (core count)"
746 },
747 {
748 "EventCode": "0xB1",
749 "Counter": "0,1,2,3",
750 "UMask": "0x10",
751 "AnyThread": "1",
752 "EventName": "UOPS_EXECUTED.PORT4_CORE",
753 "SampleAfterValue": "2000000",
754 "BriefDescription": "Uops executed on port 4 (core count)"
755 },
756 {
757 "EventCode": "0xB1",
758 "Counter": "0,1,2,3",
759 "UMask": "0x20",
760 "EventName": "UOPS_EXECUTED.PORT5",
761 "SampleAfterValue": "2000000",
762 "BriefDescription": "Uops executed on port 5"
763 },
764 {
765 "EventCode": "0xE",
766 "Counter": "0,1,2,3",
767 "UMask": "0x1",
768 "EventName": "UOPS_ISSUED.ANY",
769 "SampleAfterValue": "2000000",
770 "BriefDescription": "Uops issued"
771 },
772 {
773 "EventCode": "0xE",
774 "Invert": "1",
775 "Counter": "0,1,2,3",
776 "UMask": "0x1",
777 "AnyThread": "1",
778 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
779 "SampleAfterValue": "2000000",
780 "BriefDescription": "Cycles no Uops were issued on any thread",
781 "CounterMask": "1"
782 },
783 {
784 "EventCode": "0xE",
785 "Counter": "0,1,2,3",
786 "UMask": "0x1",
787 "AnyThread": "1",
788 "EventName": "UOPS_ISSUED.CYCLES_ALL_THREADS",
789 "SampleAfterValue": "2000000",
790 "BriefDescription": "Cycles Uops were issued on either thread",
791 "CounterMask": "1"
792 },
793 {
794 "EventCode": "0xE",
795 "Counter": "0,1,2,3",
796 "UMask": "0x2",
797 "EventName": "UOPS_ISSUED.FUSED",
798 "SampleAfterValue": "2000000",
799 "BriefDescription": "Fused Uops issued"
800 },
801 {
802 "EventCode": "0xE",
803 "Invert": "1",
804 "Counter": "0,1,2,3",
805 "UMask": "0x1",
806 "EventName": "UOPS_ISSUED.STALL_CYCLES",
807 "SampleAfterValue": "2000000",
808 "BriefDescription": "Cycles no Uops were issued",
809 "CounterMask": "1"
810 },
811 {
812 "PEBS": "1",
813 "EventCode": "0xC2",
814 "Counter": "0,1,2,3",
815 "UMask": "0x1",
816 "EventName": "UOPS_RETIRED.ACTIVE_CYCLES",
817 "SampleAfterValue": "2000000",
818 "BriefDescription": "Cycles Uops are being retired",
819 "CounterMask": "1"
820 },
821 {
822 "PEBS": "1",
823 "EventCode": "0xC2",
824 "Counter": "0,1,2,3",
825 "UMask": "0x1",
826 "EventName": "UOPS_RETIRED.ANY",
827 "SampleAfterValue": "2000000",
828 "BriefDescription": "Uops retired (Precise Event)"
829 },
830 {
831 "PEBS": "1",
832 "EventCode": "0xC2",
833 "Counter": "0,1,2,3",
834 "UMask": "0x4",
835 "EventName": "UOPS_RETIRED.MACRO_FUSED",
836 "SampleAfterValue": "2000000",
837 "BriefDescription": "Macro-fused Uops retired (Precise Event)"
838 },
839 {
840 "PEBS": "1",
841 "EventCode": "0xC2",
842 "Counter": "0,1,2,3",
843 "UMask": "0x2",
844 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
845 "SampleAfterValue": "2000000",
846 "BriefDescription": "Retirement slots used (Precise Event)"
847 },
848 {
849 "PEBS": "1",
850 "EventCode": "0xC2",
851 "Invert": "1",
852 "Counter": "0,1,2,3",
853 "UMask": "0x1",
854 "EventName": "UOPS_RETIRED.STALL_CYCLES",
855 "SampleAfterValue": "2000000",
856 "BriefDescription": "Cycles Uops are not retiring (Precise Event)",
857 "CounterMask": "1"
858 },
859 {
860 "PEBS": "1",
861 "EventCode": "0xC2",
862 "Invert": "1",
863 "Counter": "0,1,2,3",
864 "UMask": "0x1",
865 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
866 "SampleAfterValue": "2000000",
867 "BriefDescription": "Total cycles using precise uop retired event (Precise Event)",
868 "CounterMask": "16"
869 },
870 {
871 "PEBS": "2",
872 "EventCode": "0xC0",
873 "Invert": "1",
874 "Counter": "0,1,2,3",
875 "UMask": "0x1",
876 "EventName": "INST_RETIRED.TOTAL_CYCLES_PS",
877 "SampleAfterValue": "2000000",
878 "BriefDescription": "Total cycles (Precise Event)",
879 "CounterMask": "16"
880 }
881] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemep/virtual-memory.json b/tools/perf/pmu-events/arch/x86/nehalemep/virtual-memory.json
new file mode 100644
index 000000000000..0596094e0ee9
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemep/virtual-memory.json
@@ -0,0 +1,109 @@
1[
2 {
3 "EventCode": "0x8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "DTLB_LOAD_MISSES.ANY",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "DTLB load misses"
9 },
10 {
11 "EventCode": "0x8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x20",
14 "EventName": "DTLB_LOAD_MISSES.PDE_MISS",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "DTLB load miss caused by low part of address"
17 },
18 {
19 "EventCode": "0x8",
20 "Counter": "0,1,2,3",
21 "UMask": "0x10",
22 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "DTLB second level hit"
25 },
26 {
27 "EventCode": "0x8",
28 "Counter": "0,1,2,3",
29 "UMask": "0x2",
30 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "DTLB load miss page walks complete"
33 },
34 {
35 "EventCode": "0x49",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "DTLB_MISSES.ANY",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "DTLB misses"
41 },
42 {
43 "EventCode": "0x49",
44 "Counter": "0,1,2,3",
45 "UMask": "0x10",
46 "EventName": "DTLB_MISSES.STLB_HIT",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "DTLB first level misses but second level hit"
49 },
50 {
51 "EventCode": "0x49",
52 "Counter": "0,1,2,3",
53 "UMask": "0x2",
54 "EventName": "DTLB_MISSES.WALK_COMPLETED",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "DTLB miss page walks"
57 },
58 {
59 "EventCode": "0xAE",
60 "Counter": "0,1,2,3",
61 "UMask": "0x1",
62 "EventName": "ITLB_FLUSH",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "ITLB flushes"
65 },
66 {
67 "PEBS": "1",
68 "EventCode": "0xC8",
69 "Counter": "0,1,2,3",
70 "UMask": "0x20",
71 "EventName": "ITLB_MISS_RETIRED",
72 "SampleAfterValue": "200000",
73 "BriefDescription": "Retired instructions that missed the ITLB (Precise Event)"
74 },
75 {
76 "EventCode": "0x85",
77 "Counter": "0,1,2,3",
78 "UMask": "0x1",
79 "EventName": "ITLB_MISSES.ANY",
80 "SampleAfterValue": "200000",
81 "BriefDescription": "ITLB miss"
82 },
83 {
84 "EventCode": "0x85",
85 "Counter": "0,1,2,3",
86 "UMask": "0x2",
87 "EventName": "ITLB_MISSES.WALK_COMPLETED",
88 "SampleAfterValue": "200000",
89 "BriefDescription": "ITLB miss page walks"
90 },
91 {
92 "PEBS": "1",
93 "EventCode": "0xCB",
94 "Counter": "0,1,2,3",
95 "UMask": "0x80",
96 "EventName": "MEM_LOAD_RETIRED.DTLB_MISS",
97 "SampleAfterValue": "200000",
98 "BriefDescription": "Retired loads that miss the DTLB (Precise Event)"
99 },
100 {
101 "PEBS": "1",
102 "EventCode": "0xC",
103 "Counter": "0,1,2,3",
104 "UMask": "0x1",
105 "EventName": "MEM_STORE_RETIRED.DTLB_MISS",
106 "SampleAfterValue": "200000",
107 "BriefDescription": "Retired stores that miss the DTLB (Precise Event)"
108 }
109] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemex/cache.json b/tools/perf/pmu-events/arch/x86/nehalemex/cache.json
new file mode 100644
index 000000000000..21a0f8fd057e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemex/cache.json
@@ -0,0 +1,3184 @@
1[
2 {
3 "EventCode": "0x63",
4 "Counter": "0,1",
5 "UMask": "0x2",
6 "EventName": "CACHE_LOCK_CYCLES.L1D",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles L1D locked"
9 },
10 {
11 "EventCode": "0x63",
12 "Counter": "0,1",
13 "UMask": "0x1",
14 "EventName": "CACHE_LOCK_CYCLES.L1D_L2",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Cycles L1D and L2 locked"
17 },
18 {
19 "EventCode": "0x51",
20 "Counter": "0,1",
21 "UMask": "0x4",
22 "EventName": "L1D.M_EVICT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "L1D cache lines replaced in M state"
25 },
26 {
27 "EventCode": "0x51",
28 "Counter": "0,1",
29 "UMask": "0x2",
30 "EventName": "L1D.M_REPL",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "L1D cache lines allocated in the M state"
33 },
34 {
35 "EventCode": "0x51",
36 "Counter": "0,1",
37 "UMask": "0x8",
38 "EventName": "L1D.M_SNOOP_EVICT",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "L1D snoop eviction of cache lines in M state"
41 },
42 {
43 "EventCode": "0x51",
44 "Counter": "0,1",
45 "UMask": "0x1",
46 "EventName": "L1D.REPL",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1 data cache lines allocated"
49 },
50 {
51 "EventCode": "0x43",
52 "Counter": "0,1",
53 "UMask": "0x1",
54 "EventName": "L1D_ALL_REF.ANY",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "All references to the L1 data cache"
57 },
58 {
59 "EventCode": "0x43",
60 "Counter": "0,1",
61 "UMask": "0x2",
62 "EventName": "L1D_ALL_REF.CACHEABLE",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "L1 data cacheable reads and writes"
65 },
66 {
67 "EventCode": "0x40",
68 "Counter": "0,1",
69 "UMask": "0x4",
70 "EventName": "L1D_CACHE_LD.E_STATE",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "L1 data cache read in E state"
73 },
74 {
75 "EventCode": "0x40",
76 "Counter": "0,1",
77 "UMask": "0x1",
78 "EventName": "L1D_CACHE_LD.I_STATE",
79 "SampleAfterValue": "2000000",
80 "BriefDescription": "L1 data cache read in I state (misses)"
81 },
82 {
83 "EventCode": "0x40",
84 "Counter": "0,1",
85 "UMask": "0x8",
86 "EventName": "L1D_CACHE_LD.M_STATE",
87 "SampleAfterValue": "2000000",
88 "BriefDescription": "L1 data cache read in M state"
89 },
90 {
91 "EventCode": "0x40",
92 "Counter": "0,1",
93 "UMask": "0xf",
94 "EventName": "L1D_CACHE_LD.MESI",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "L1 data cache reads"
97 },
98 {
99 "EventCode": "0x40",
100 "Counter": "0,1",
101 "UMask": "0x2",
102 "EventName": "L1D_CACHE_LD.S_STATE",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "L1 data cache read in S state"
105 },
106 {
107 "EventCode": "0x42",
108 "Counter": "0,1",
109 "UMask": "0x4",
110 "EventName": "L1D_CACHE_LOCK.E_STATE",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "L1 data cache load locks in E state"
113 },
114 {
115 "EventCode": "0x42",
116 "Counter": "0,1",
117 "UMask": "0x1",
118 "EventName": "L1D_CACHE_LOCK.HIT",
119 "SampleAfterValue": "2000000",
120 "BriefDescription": "L1 data cache load lock hits"
121 },
122 {
123 "EventCode": "0x42",
124 "Counter": "0,1",
125 "UMask": "0x8",
126 "EventName": "L1D_CACHE_LOCK.M_STATE",
127 "SampleAfterValue": "2000000",
128 "BriefDescription": "L1 data cache load locks in M state"
129 },
130 {
131 "EventCode": "0x42",
132 "Counter": "0,1",
133 "UMask": "0x2",
134 "EventName": "L1D_CACHE_LOCK.S_STATE",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "L1 data cache load locks in S state"
137 },
138 {
139 "EventCode": "0x53",
140 "Counter": "0,1",
141 "UMask": "0x1",
142 "EventName": "L1D_CACHE_LOCK_FB_HIT",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "L1D load lock accepted in fill buffer"
145 },
146 {
147 "EventCode": "0x52",
148 "Counter": "0,1",
149 "UMask": "0x1",
150 "EventName": "L1D_CACHE_PREFETCH_LOCK_FB_HIT",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "L1D prefetch load lock accepted in fill buffer"
153 },
154 {
155 "EventCode": "0x41",
156 "Counter": "0,1",
157 "UMask": "0x4",
158 "EventName": "L1D_CACHE_ST.E_STATE",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "L1 data cache stores in E state"
161 },
162 {
163 "EventCode": "0x41",
164 "Counter": "0,1",
165 "UMask": "0x8",
166 "EventName": "L1D_CACHE_ST.M_STATE",
167 "SampleAfterValue": "2000000",
168 "BriefDescription": "L1 data cache stores in M state"
169 },
170 {
171 "EventCode": "0x41",
172 "Counter": "0,1",
173 "UMask": "0x2",
174 "EventName": "L1D_CACHE_ST.S_STATE",
175 "SampleAfterValue": "2000000",
176 "BriefDescription": "L1 data cache stores in S state"
177 },
178 {
179 "EventCode": "0x4E",
180 "Counter": "0,1",
181 "UMask": "0x2",
182 "EventName": "L1D_PREFETCH.MISS",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "L1D hardware prefetch misses"
185 },
186 {
187 "EventCode": "0x4E",
188 "Counter": "0,1",
189 "UMask": "0x1",
190 "EventName": "L1D_PREFETCH.REQUESTS",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "L1D hardware prefetch requests"
193 },
194 {
195 "EventCode": "0x4E",
196 "Counter": "0,1",
197 "UMask": "0x4",
198 "EventName": "L1D_PREFETCH.TRIGGERS",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "L1D hardware prefetch requests triggered"
201 },
202 {
203 "EventCode": "0x28",
204 "Counter": "0,1,2,3",
205 "UMask": "0x4",
206 "EventName": "L1D_WB_L2.E_STATE",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "L1 writebacks to L2 in E state"
209 },
210 {
211 "EventCode": "0x28",
212 "Counter": "0,1,2,3",
213 "UMask": "0x1",
214 "EventName": "L1D_WB_L2.I_STATE",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "L1 writebacks to L2 in I state (misses)"
217 },
218 {
219 "EventCode": "0x28",
220 "Counter": "0,1,2,3",
221 "UMask": "0x8",
222 "EventName": "L1D_WB_L2.M_STATE",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "L1 writebacks to L2 in M state"
225 },
226 {
227 "EventCode": "0x28",
228 "Counter": "0,1,2,3",
229 "UMask": "0xf",
230 "EventName": "L1D_WB_L2.MESI",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "All L1 writebacks to L2"
233 },
234 {
235 "EventCode": "0x28",
236 "Counter": "0,1,2,3",
237 "UMask": "0x2",
238 "EventName": "L1D_WB_L2.S_STATE",
239 "SampleAfterValue": "100000",
240 "BriefDescription": "L1 writebacks to L2 in S state"
241 },
242 {
243 "EventCode": "0x26",
244 "Counter": "0,1,2,3",
245 "UMask": "0xff",
246 "EventName": "L2_DATA_RQSTS.ANY",
247 "SampleAfterValue": "200000",
248 "BriefDescription": "All L2 data requests"
249 },
250 {
251 "EventCode": "0x26",
252 "Counter": "0,1,2,3",
253 "UMask": "0x4",
254 "EventName": "L2_DATA_RQSTS.DEMAND.E_STATE",
255 "SampleAfterValue": "200000",
256 "BriefDescription": "L2 data demand loads in E state"
257 },
258 {
259 "EventCode": "0x26",
260 "Counter": "0,1,2,3",
261 "UMask": "0x1",
262 "EventName": "L2_DATA_RQSTS.DEMAND.I_STATE",
263 "SampleAfterValue": "200000",
264 "BriefDescription": "L2 data demand loads in I state (misses)"
265 },
266 {
267 "EventCode": "0x26",
268 "Counter": "0,1,2,3",
269 "UMask": "0x8",
270 "EventName": "L2_DATA_RQSTS.DEMAND.M_STATE",
271 "SampleAfterValue": "200000",
272 "BriefDescription": "L2 data demand loads in M state"
273 },
274 {
275 "EventCode": "0x26",
276 "Counter": "0,1,2,3",
277 "UMask": "0xf",
278 "EventName": "L2_DATA_RQSTS.DEMAND.MESI",
279 "SampleAfterValue": "200000",
280 "BriefDescription": "L2 data demand requests"
281 },
282 {
283 "EventCode": "0x26",
284 "Counter": "0,1,2,3",
285 "UMask": "0x2",
286 "EventName": "L2_DATA_RQSTS.DEMAND.S_STATE",
287 "SampleAfterValue": "200000",
288 "BriefDescription": "L2 data demand loads in S state"
289 },
290 {
291 "EventCode": "0x26",
292 "Counter": "0,1,2,3",
293 "UMask": "0x40",
294 "EventName": "L2_DATA_RQSTS.PREFETCH.E_STATE",
295 "SampleAfterValue": "200000",
296 "BriefDescription": "L2 data prefetches in E state"
297 },
298 {
299 "EventCode": "0x26",
300 "Counter": "0,1,2,3",
301 "UMask": "0x10",
302 "EventName": "L2_DATA_RQSTS.PREFETCH.I_STATE",
303 "SampleAfterValue": "200000",
304 "BriefDescription": "L2 data prefetches in the I state (misses)"
305 },
306 {
307 "EventCode": "0x26",
308 "Counter": "0,1,2,3",
309 "UMask": "0x80",
310 "EventName": "L2_DATA_RQSTS.PREFETCH.M_STATE",
311 "SampleAfterValue": "200000",
312 "BriefDescription": "L2 data prefetches in M state"
313 },
314 {
315 "EventCode": "0x26",
316 "Counter": "0,1,2,3",
317 "UMask": "0xf0",
318 "EventName": "L2_DATA_RQSTS.PREFETCH.MESI",
319 "SampleAfterValue": "200000",
320 "BriefDescription": "All L2 data prefetches"
321 },
322 {
323 "EventCode": "0x26",
324 "Counter": "0,1,2,3",
325 "UMask": "0x20",
326 "EventName": "L2_DATA_RQSTS.PREFETCH.S_STATE",
327 "SampleAfterValue": "200000",
328 "BriefDescription": "L2 data prefetches in the S state"
329 },
330 {
331 "EventCode": "0xF1",
332 "Counter": "0,1,2,3",
333 "UMask": "0x7",
334 "EventName": "L2_LINES_IN.ANY",
335 "SampleAfterValue": "100000",
336 "BriefDescription": "L2 lines alloacated"
337 },
338 {
339 "EventCode": "0xF1",
340 "Counter": "0,1,2,3",
341 "UMask": "0x4",
342 "EventName": "L2_LINES_IN.E_STATE",
343 "SampleAfterValue": "100000",
344 "BriefDescription": "L2 lines allocated in the E state"
345 },
346 {
347 "EventCode": "0xF1",
348 "Counter": "0,1,2,3",
349 "UMask": "0x2",
350 "EventName": "L2_LINES_IN.S_STATE",
351 "SampleAfterValue": "100000",
352 "BriefDescription": "L2 lines allocated in the S state"
353 },
354 {
355 "EventCode": "0xF2",
356 "Counter": "0,1,2,3",
357 "UMask": "0xf",
358 "EventName": "L2_LINES_OUT.ANY",
359 "SampleAfterValue": "100000",
360 "BriefDescription": "L2 lines evicted"
361 },
362 {
363 "EventCode": "0xF2",
364 "Counter": "0,1,2,3",
365 "UMask": "0x1",
366 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
367 "SampleAfterValue": "100000",
368 "BriefDescription": "L2 lines evicted by a demand request"
369 },
370 {
371 "EventCode": "0xF2",
372 "Counter": "0,1,2,3",
373 "UMask": "0x2",
374 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
375 "SampleAfterValue": "100000",
376 "BriefDescription": "L2 modified lines evicted by a demand request"
377 },
378 {
379 "EventCode": "0xF2",
380 "Counter": "0,1,2,3",
381 "UMask": "0x4",
382 "EventName": "L2_LINES_OUT.PREFETCH_CLEAN",
383 "SampleAfterValue": "100000",
384 "BriefDescription": "L2 lines evicted by a prefetch request"
385 },
386 {
387 "EventCode": "0xF2",
388 "Counter": "0,1,2,3",
389 "UMask": "0x8",
390 "EventName": "L2_LINES_OUT.PREFETCH_DIRTY",
391 "SampleAfterValue": "100000",
392 "BriefDescription": "L2 modified lines evicted by a prefetch request"
393 },
394 {
395 "EventCode": "0x24",
396 "Counter": "0,1,2,3",
397 "UMask": "0x10",
398 "EventName": "L2_RQSTS.IFETCH_HIT",
399 "SampleAfterValue": "200000",
400 "BriefDescription": "L2 instruction fetch hits"
401 },
402 {
403 "EventCode": "0x24",
404 "Counter": "0,1,2,3",
405 "UMask": "0x20",
406 "EventName": "L2_RQSTS.IFETCH_MISS",
407 "SampleAfterValue": "200000",
408 "BriefDescription": "L2 instruction fetch misses"
409 },
410 {
411 "EventCode": "0x24",
412 "Counter": "0,1,2,3",
413 "UMask": "0x30",
414 "EventName": "L2_RQSTS.IFETCHES",
415 "SampleAfterValue": "200000",
416 "BriefDescription": "L2 instruction fetches"
417 },
418 {
419 "EventCode": "0x24",
420 "Counter": "0,1,2,3",
421 "UMask": "0x1",
422 "EventName": "L2_RQSTS.LD_HIT",
423 "SampleAfterValue": "200000",
424 "BriefDescription": "L2 load hits"
425 },
426 {
427 "EventCode": "0x24",
428 "Counter": "0,1,2,3",
429 "UMask": "0x2",
430 "EventName": "L2_RQSTS.LD_MISS",
431 "SampleAfterValue": "200000",
432 "BriefDescription": "L2 load misses"
433 },
434 {
435 "EventCode": "0x24",
436 "Counter": "0,1,2,3",
437 "UMask": "0x3",
438 "EventName": "L2_RQSTS.LOADS",
439 "SampleAfterValue": "200000",
440 "BriefDescription": "L2 requests"
441 },
442 {
443 "EventCode": "0x24",
444 "Counter": "0,1,2,3",
445 "UMask": "0xaa",
446 "EventName": "L2_RQSTS.MISS",
447 "SampleAfterValue": "200000",
448 "BriefDescription": "All L2 misses"
449 },
450 {
451 "EventCode": "0x24",
452 "Counter": "0,1,2,3",
453 "UMask": "0x40",
454 "EventName": "L2_RQSTS.PREFETCH_HIT",
455 "SampleAfterValue": "200000",
456 "BriefDescription": "L2 prefetch hits"
457 },
458 {
459 "EventCode": "0x24",
460 "Counter": "0,1,2,3",
461 "UMask": "0x80",
462 "EventName": "L2_RQSTS.PREFETCH_MISS",
463 "SampleAfterValue": "200000",
464 "BriefDescription": "L2 prefetch misses"
465 },
466 {
467 "EventCode": "0x24",
468 "Counter": "0,1,2,3",
469 "UMask": "0xc0",
470 "EventName": "L2_RQSTS.PREFETCHES",
471 "SampleAfterValue": "200000",
472 "BriefDescription": "All L2 prefetches"
473 },
474 {
475 "EventCode": "0x24",
476 "Counter": "0,1,2,3",
477 "UMask": "0xff",
478 "EventName": "L2_RQSTS.REFERENCES",
479 "SampleAfterValue": "200000",
480 "BriefDescription": "All L2 requests"
481 },
482 {
483 "EventCode": "0x24",
484 "Counter": "0,1,2,3",
485 "UMask": "0x4",
486 "EventName": "L2_RQSTS.RFO_HIT",
487 "SampleAfterValue": "200000",
488 "BriefDescription": "L2 RFO hits"
489 },
490 {
491 "EventCode": "0x24",
492 "Counter": "0,1,2,3",
493 "UMask": "0x8",
494 "EventName": "L2_RQSTS.RFO_MISS",
495 "SampleAfterValue": "200000",
496 "BriefDescription": "L2 RFO misses"
497 },
498 {
499 "EventCode": "0x24",
500 "Counter": "0,1,2,3",
501 "UMask": "0xc",
502 "EventName": "L2_RQSTS.RFOS",
503 "SampleAfterValue": "200000",
504 "BriefDescription": "L2 RFO requests"
505 },
506 {
507 "EventCode": "0xF0",
508 "Counter": "0,1,2,3",
509 "UMask": "0x80",
510 "EventName": "L2_TRANSACTIONS.ANY",
511 "SampleAfterValue": "200000",
512 "BriefDescription": "All L2 transactions"
513 },
514 {
515 "EventCode": "0xF0",
516 "Counter": "0,1,2,3",
517 "UMask": "0x20",
518 "EventName": "L2_TRANSACTIONS.FILL",
519 "SampleAfterValue": "200000",
520 "BriefDescription": "L2 fill transactions"
521 },
522 {
523 "EventCode": "0xF0",
524 "Counter": "0,1,2,3",
525 "UMask": "0x4",
526 "EventName": "L2_TRANSACTIONS.IFETCH",
527 "SampleAfterValue": "200000",
528 "BriefDescription": "L2 instruction fetch transactions"
529 },
530 {
531 "EventCode": "0xF0",
532 "Counter": "0,1,2,3",
533 "UMask": "0x10",
534 "EventName": "L2_TRANSACTIONS.L1D_WB",
535 "SampleAfterValue": "200000",
536 "BriefDescription": "L1D writeback to L2 transactions"
537 },
538 {
539 "EventCode": "0xF0",
540 "Counter": "0,1,2,3",
541 "UMask": "0x1",
542 "EventName": "L2_TRANSACTIONS.LOAD",
543 "SampleAfterValue": "200000",
544 "BriefDescription": "L2 Load transactions"
545 },
546 {
547 "EventCode": "0xF0",
548 "Counter": "0,1,2,3",
549 "UMask": "0x8",
550 "EventName": "L2_TRANSACTIONS.PREFETCH",
551 "SampleAfterValue": "200000",
552 "BriefDescription": "L2 prefetch transactions"
553 },
554 {
555 "EventCode": "0xF0",
556 "Counter": "0,1,2,3",
557 "UMask": "0x2",
558 "EventName": "L2_TRANSACTIONS.RFO",
559 "SampleAfterValue": "200000",
560 "BriefDescription": "L2 RFO transactions"
561 },
562 {
563 "EventCode": "0xF0",
564 "Counter": "0,1,2,3",
565 "UMask": "0x40",
566 "EventName": "L2_TRANSACTIONS.WB",
567 "SampleAfterValue": "200000",
568 "BriefDescription": "L2 writeback to LLC transactions"
569 },
570 {
571 "EventCode": "0x27",
572 "Counter": "0,1,2,3",
573 "UMask": "0x40",
574 "EventName": "L2_WRITE.LOCK.E_STATE",
575 "SampleAfterValue": "100000",
576 "BriefDescription": "L2 demand lock RFOs in E state"
577 },
578 {
579 "EventCode": "0x27",
580 "Counter": "0,1,2,3",
581 "UMask": "0xe0",
582 "EventName": "L2_WRITE.LOCK.HIT",
583 "SampleAfterValue": "100000",
584 "BriefDescription": "All demand L2 lock RFOs that hit the cache"
585 },
586 {
587 "EventCode": "0x27",
588 "Counter": "0,1,2,3",
589 "UMask": "0x10",
590 "EventName": "L2_WRITE.LOCK.I_STATE",
591 "SampleAfterValue": "100000",
592 "BriefDescription": "L2 demand lock RFOs in I state (misses)"
593 },
594 {
595 "EventCode": "0x27",
596 "Counter": "0,1,2,3",
597 "UMask": "0x80",
598 "EventName": "L2_WRITE.LOCK.M_STATE",
599 "SampleAfterValue": "100000",
600 "BriefDescription": "L2 demand lock RFOs in M state"
601 },
602 {
603 "EventCode": "0x27",
604 "Counter": "0,1,2,3",
605 "UMask": "0xf0",
606 "EventName": "L2_WRITE.LOCK.MESI",
607 "SampleAfterValue": "100000",
608 "BriefDescription": "All demand L2 lock RFOs"
609 },
610 {
611 "EventCode": "0x27",
612 "Counter": "0,1,2,3",
613 "UMask": "0x20",
614 "EventName": "L2_WRITE.LOCK.S_STATE",
615 "SampleAfterValue": "100000",
616 "BriefDescription": "L2 demand lock RFOs in S state"
617 },
618 {
619 "EventCode": "0x27",
620 "Counter": "0,1,2,3",
621 "UMask": "0xe",
622 "EventName": "L2_WRITE.RFO.HIT",
623 "SampleAfterValue": "100000",
624 "BriefDescription": "All L2 demand store RFOs that hit the cache"
625 },
626 {
627 "EventCode": "0x27",
628 "Counter": "0,1,2,3",
629 "UMask": "0x1",
630 "EventName": "L2_WRITE.RFO.I_STATE",
631 "SampleAfterValue": "100000",
632 "BriefDescription": "L2 demand store RFOs in I state (misses)"
633 },
634 {
635 "EventCode": "0x27",
636 "Counter": "0,1,2,3",
637 "UMask": "0x8",
638 "EventName": "L2_WRITE.RFO.M_STATE",
639 "SampleAfterValue": "100000",
640 "BriefDescription": "L2 demand store RFOs in M state"
641 },
642 {
643 "EventCode": "0x27",
644 "Counter": "0,1,2,3",
645 "UMask": "0xf",
646 "EventName": "L2_WRITE.RFO.MESI",
647 "SampleAfterValue": "100000",
648 "BriefDescription": "All L2 demand store RFOs"
649 },
650 {
651 "EventCode": "0x27",
652 "Counter": "0,1,2,3",
653 "UMask": "0x2",
654 "EventName": "L2_WRITE.RFO.S_STATE",
655 "SampleAfterValue": "100000",
656 "BriefDescription": "L2 demand store RFOs in S state"
657 },
658 {
659 "EventCode": "0x2E",
660 "Counter": "0,1,2,3",
661 "UMask": "0x41",
662 "EventName": "LONGEST_LAT_CACHE.MISS",
663 "SampleAfterValue": "100000",
664 "BriefDescription": "Longest latency cache miss"
665 },
666 {
667 "EventCode": "0x2E",
668 "Counter": "0,1,2,3",
669 "UMask": "0x4f",
670 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
671 "SampleAfterValue": "200000",
672 "BriefDescription": "Longest latency cache reference"
673 },
674 {
675 "PEBS": "1",
676 "EventCode": "0xB",
677 "Counter": "0,1,2,3",
678 "UMask": "0x1",
679 "EventName": "MEM_INST_RETIRED.LOADS",
680 "SampleAfterValue": "2000000",
681 "BriefDescription": "Instructions retired which contains a load (Precise Event)"
682 },
683 {
684 "PEBS": "1",
685 "EventCode": "0xB",
686 "Counter": "0,1,2,3",
687 "UMask": "0x2",
688 "EventName": "MEM_INST_RETIRED.STORES",
689 "SampleAfterValue": "2000000",
690 "BriefDescription": "Instructions retired which contains a store (Precise Event)"
691 },
692 {
693 "PEBS": "1",
694 "EventCode": "0xCB",
695 "Counter": "0,1,2,3",
696 "UMask": "0x40",
697 "EventName": "MEM_LOAD_RETIRED.HIT_LFB",
698 "SampleAfterValue": "200000",
699 "BriefDescription": "Retired loads that miss L1D and hit an previously allocated LFB (Precise Event)"
700 },
701 {
702 "PEBS": "1",
703 "EventCode": "0xCB",
704 "Counter": "0,1,2,3",
705 "UMask": "0x1",
706 "EventName": "MEM_LOAD_RETIRED.L1D_HIT",
707 "SampleAfterValue": "2000000",
708 "BriefDescription": "Retired loads that hit the L1 data cache (Precise Event)"
709 },
710 {
711 "PEBS": "1",
712 "EventCode": "0xCB",
713 "Counter": "0,1,2,3",
714 "UMask": "0x2",
715 "EventName": "MEM_LOAD_RETIRED.L2_HIT",
716 "SampleAfterValue": "200000",
717 "BriefDescription": "Retired loads that hit the L2 cache (Precise Event)"
718 },
719 {
720 "PEBS": "1",
721 "EventCode": "0xCB",
722 "Counter": "0,1,2,3",
723 "UMask": "0x10",
724 "EventName": "MEM_LOAD_RETIRED.LLC_MISS",
725 "SampleAfterValue": "10000",
726 "BriefDescription": "Retired loads that miss the LLC cache (Precise Event)"
727 },
728 {
729 "PEBS": "1",
730 "EventCode": "0xCB",
731 "Counter": "0,1,2,3",
732 "UMask": "0x4",
733 "EventName": "MEM_LOAD_RETIRED.LLC_UNSHARED_HIT",
734 "SampleAfterValue": "40000",
735 "BriefDescription": "Retired loads that hit valid versions in the LLC cache (Precise Event)"
736 },
737 {
738 "PEBS": "1",
739 "EventCode": "0xCB",
740 "Counter": "0,1,2,3",
741 "UMask": "0x8",
742 "EventName": "MEM_LOAD_RETIRED.OTHER_CORE_L2_HIT_HITM",
743 "SampleAfterValue": "40000",
744 "BriefDescription": "Retired loads that hit sibling core's L2 in modified or unmodified states (Precise Event)"
745 },
746 {
747 "EventCode": "0xB0",
748 "Counter": "0,1,2,3",
749 "UMask": "0x40",
750 "EventName": "OFFCORE_REQUESTS.L1D_WRITEBACK",
751 "SampleAfterValue": "100000",
752 "BriefDescription": "Offcore L1 data cache writebacks"
753 },
754 {
755 "EventCode": "0xB2",
756 "Counter": "0,1,2,3",
757 "UMask": "0x1",
758 "EventName": "OFFCORE_REQUESTS_SQ_FULL",
759 "SampleAfterValue": "100000",
760 "BriefDescription": "Offcore requests blocked due to Super Queue full"
761 },
762 {
763 "EventCode": "0xF4",
764 "Counter": "0,1,2,3",
765 "UMask": "0x10",
766 "EventName": "SQ_MISC.SPLIT_LOCK",
767 "SampleAfterValue": "2000000",
768 "BriefDescription": "Super Queue lock splits across a cache line"
769 },
770 {
771 "EventCode": "0x6",
772 "Counter": "0,1,2,3",
773 "UMask": "0x4",
774 "EventName": "STORE_BLOCKS.AT_RET",
775 "SampleAfterValue": "200000",
776 "BriefDescription": "Loads delayed with at-Retirement block code"
777 },
778 {
779 "EventCode": "0x6",
780 "Counter": "0,1,2,3",
781 "UMask": "0x8",
782 "EventName": "STORE_BLOCKS.L1D_BLOCK",
783 "SampleAfterValue": "200000",
784 "BriefDescription": "Cacheable loads delayed with L1D block code"
785 },
786 {
787 "PEBS": "2",
788 "EventCode": "0xB",
789 "MSRValue": "0x0",
790 "Counter": "3",
791 "UMask": "0x10",
792 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_0",
793 "MSRIndex": "0x3F6",
794 "SampleAfterValue": "2000000",
795 "BriefDescription": "Memory instructions retired above 0 clocks (Precise Event)"
796 },
797 {
798 "PEBS": "2",
799 "EventCode": "0xB",
800 "MSRValue": "0x400",
801 "Counter": "3",
802 "UMask": "0x10",
803 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_1024",
804 "MSRIndex": "0x3F6",
805 "SampleAfterValue": "100",
806 "BriefDescription": "Memory instructions retired above 1024 clocks (Precise Event)"
807 },
808 {
809 "PEBS": "2",
810 "EventCode": "0xB",
811 "MSRValue": "0x80",
812 "Counter": "3",
813 "UMask": "0x10",
814 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_128",
815 "MSRIndex": "0x3F6",
816 "SampleAfterValue": "1000",
817 "BriefDescription": "Memory instructions retired above 128 clocks (Precise Event)"
818 },
819 {
820 "PEBS": "2",
821 "EventCode": "0xB",
822 "MSRValue": "0x10",
823 "Counter": "3",
824 "UMask": "0x10",
825 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16",
826 "MSRIndex": "0x3F6",
827 "SampleAfterValue": "10000",
828 "BriefDescription": "Memory instructions retired above 16 clocks (Precise Event)"
829 },
830 {
831 "PEBS": "2",
832 "EventCode": "0xB",
833 "MSRValue": "0x4000",
834 "Counter": "3",
835 "UMask": "0x10",
836 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16384",
837 "MSRIndex": "0x3F6",
838 "SampleAfterValue": "5",
839 "BriefDescription": "Memory instructions retired above 16384 clocks (Precise Event)"
840 },
841 {
842 "PEBS": "2",
843 "EventCode": "0xB",
844 "MSRValue": "0x800",
845 "Counter": "3",
846 "UMask": "0x10",
847 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_2048",
848 "MSRIndex": "0x3F6",
849 "SampleAfterValue": "50",
850 "BriefDescription": "Memory instructions retired above 2048 clocks (Precise Event)"
851 },
852 {
853 "PEBS": "2",
854 "EventCode": "0xB",
855 "MSRValue": "0x100",
856 "Counter": "3",
857 "UMask": "0x10",
858 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_256",
859 "MSRIndex": "0x3F6",
860 "SampleAfterValue": "500",
861 "BriefDescription": "Memory instructions retired above 256 clocks (Precise Event)"
862 },
863 {
864 "PEBS": "2",
865 "EventCode": "0xB",
866 "MSRValue": "0x20",
867 "Counter": "3",
868 "UMask": "0x10",
869 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32",
870 "MSRIndex": "0x3F6",
871 "SampleAfterValue": "5000",
872 "BriefDescription": "Memory instructions retired above 32 clocks (Precise Event)"
873 },
874 {
875 "PEBS": "2",
876 "EventCode": "0xB",
877 "MSRValue": "0x8000",
878 "Counter": "3",
879 "UMask": "0x10",
880 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32768",
881 "MSRIndex": "0x3F6",
882 "SampleAfterValue": "3",
883 "BriefDescription": "Memory instructions retired above 32768 clocks (Precise Event)"
884 },
885 {
886 "PEBS": "2",
887 "EventCode": "0xB",
888 "MSRValue": "0x4",
889 "Counter": "3",
890 "UMask": "0x10",
891 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4",
892 "MSRIndex": "0x3F6",
893 "SampleAfterValue": "50000",
894 "BriefDescription": "Memory instructions retired above 4 clocks (Precise Event)"
895 },
896 {
897 "PEBS": "2",
898 "EventCode": "0xB",
899 "MSRValue": "0x1000",
900 "Counter": "3",
901 "UMask": "0x10",
902 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4096",
903 "MSRIndex": "0x3F6",
904 "SampleAfterValue": "20",
905 "BriefDescription": "Memory instructions retired above 4096 clocks (Precise Event)"
906 },
907 {
908 "PEBS": "2",
909 "EventCode": "0xB",
910 "MSRValue": "0x200",
911 "Counter": "3",
912 "UMask": "0x10",
913 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_512",
914 "MSRIndex": "0x3F6",
915 "SampleAfterValue": "200",
916 "BriefDescription": "Memory instructions retired above 512 clocks (Precise Event)"
917 },
918 {
919 "PEBS": "2",
920 "EventCode": "0xB",
921 "MSRValue": "0x40",
922 "Counter": "3",
923 "UMask": "0x10",
924 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_64",
925 "MSRIndex": "0x3F6",
926 "SampleAfterValue": "2000",
927 "BriefDescription": "Memory instructions retired above 64 clocks (Precise Event)"
928 },
929 {
930 "PEBS": "2",
931 "EventCode": "0xB",
932 "MSRValue": "0x8",
933 "Counter": "3",
934 "UMask": "0x10",
935 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8",
936 "MSRIndex": "0x3F6",
937 "SampleAfterValue": "20000",
938 "BriefDescription": "Memory instructions retired above 8 clocks (Precise Event)"
939 },
940 {
941 "PEBS": "2",
942 "EventCode": "0xB",
943 "MSRValue": "0x2000",
944 "Counter": "3",
945 "UMask": "0x10",
946 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8192",
947 "MSRIndex": "0x3F6",
948 "SampleAfterValue": "10",
949 "BriefDescription": "Memory instructions retired above 8192 clocks (Precise Event)"
950 },
951 {
952 "EventCode": "0xB7",
953 "MSRValue": "0x7F11",
954 "Counter": "2",
955 "UMask": "0x1",
956 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_CACHE_DRAM",
957 "MSRIndex": "0x1A6",
958 "SampleAfterValue": "100000",
959 "BriefDescription": "Offcore data reads satisfied by any cache or DRAM",
960 "Offcore": "1"
961 },
962 {
963 "EventCode": "0xB7",
964 "MSRValue": "0xFF11",
965 "Counter": "2",
966 "UMask": "0x1",
967 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LOCATION",
968 "MSRIndex": "0x1A6",
969 "SampleAfterValue": "100000",
970 "BriefDescription": "All offcore data reads",
971 "Offcore": "1"
972 },
973 {
974 "EventCode": "0xB7",
975 "MSRValue": "0x8011",
976 "Counter": "2",
977 "UMask": "0x1",
978 "EventName": "OFFCORE_RESPONSE.ANY_DATA.IO_CSR_MMIO",
979 "MSRIndex": "0x1A6",
980 "SampleAfterValue": "100000",
981 "BriefDescription": "Offcore data reads satisfied by the IO, CSR, MMIO unit",
982 "Offcore": "1"
983 },
984 {
985 "EventCode": "0xB7",
986 "MSRValue": "0x111",
987 "Counter": "2",
988 "UMask": "0x1",
989 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_NO_OTHER_CORE",
990 "MSRIndex": "0x1A6",
991 "SampleAfterValue": "100000",
992 "BriefDescription": "Offcore data reads satisfied by the LLC and not found in a sibling core",
993 "Offcore": "1"
994 },
995 {
996 "EventCode": "0xB7",
997 "MSRValue": "0x211",
998 "Counter": "2",
999 "UMask": "0x1",
1000 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HIT",
1001 "MSRIndex": "0x1A6",
1002 "SampleAfterValue": "100000",
1003 "BriefDescription": "Offcore data reads satisfied by the LLC and HIT in a sibling core",
1004 "Offcore": "1"
1005 },
1006 {
1007 "EventCode": "0xB7",
1008 "MSRValue": "0x411",
1009 "Counter": "2",
1010 "UMask": "0x1",
1011 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HITM",
1012 "MSRIndex": "0x1A6",
1013 "SampleAfterValue": "100000",
1014 "BriefDescription": "Offcore data reads satisfied by the LLC and HITM in a sibling core",
1015 "Offcore": "1"
1016 },
1017 {
1018 "EventCode": "0xB7",
1019 "MSRValue": "0x711",
1020 "Counter": "2",
1021 "UMask": "0x1",
1022 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE",
1023 "MSRIndex": "0x1A6",
1024 "SampleAfterValue": "100000",
1025 "BriefDescription": "Offcore data reads satisfied by the LLC",
1026 "Offcore": "1"
1027 },
1028 {
1029 "EventCode": "0xB7",
1030 "MSRValue": "0x4711",
1031 "Counter": "2",
1032 "UMask": "0x1",
1033 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE_DRAM",
1034 "MSRIndex": "0x1A6",
1035 "SampleAfterValue": "100000",
1036 "BriefDescription": "Offcore data reads satisfied by the LLC or local DRAM",
1037 "Offcore": "1"
1038 },
1039 {
1040 "EventCode": "0xB7",
1041 "MSRValue": "0x1811",
1042 "Counter": "2",
1043 "UMask": "0x1",
1044 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE",
1045 "MSRIndex": "0x1A6",
1046 "SampleAfterValue": "100000",
1047 "BriefDescription": "Offcore data reads satisfied by a remote cache",
1048 "Offcore": "1"
1049 },
1050 {
1051 "EventCode": "0xB7",
1052 "MSRValue": "0x3811",
1053 "Counter": "2",
1054 "UMask": "0x1",
1055 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_DRAM",
1056 "MSRIndex": "0x1A6",
1057 "SampleAfterValue": "100000",
1058 "BriefDescription": "Offcore data reads satisfied by a remote cache or remote DRAM",
1059 "Offcore": "1"
1060 },
1061 {
1062 "EventCode": "0xB7",
1063 "MSRValue": "0x1011",
1064 "Counter": "2",
1065 "UMask": "0x1",
1066 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HIT",
1067 "MSRIndex": "0x1A6",
1068 "SampleAfterValue": "100000",
1069 "BriefDescription": "Offcore data reads that HIT in a remote cache",
1070 "Offcore": "1"
1071 },
1072 {
1073 "EventCode": "0xB7",
1074 "MSRValue": "0x811",
1075 "Counter": "2",
1076 "UMask": "0x1",
1077 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HITM",
1078 "MSRIndex": "0x1A6",
1079 "SampleAfterValue": "100000",
1080 "BriefDescription": "Offcore data reads that HITM in a remote cache",
1081 "Offcore": "1"
1082 },
1083 {
1084 "EventCode": "0xB7",
1085 "MSRValue": "0x7F44",
1086 "Counter": "2",
1087 "UMask": "0x1",
1088 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_CACHE_DRAM",
1089 "MSRIndex": "0x1A6",
1090 "SampleAfterValue": "100000",
1091 "BriefDescription": "Offcore code reads satisfied by any cache or DRAM",
1092 "Offcore": "1"
1093 },
1094 {
1095 "EventCode": "0xB7",
1096 "MSRValue": "0xFF44",
1097 "Counter": "2",
1098 "UMask": "0x1",
1099 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LOCATION",
1100 "MSRIndex": "0x1A6",
1101 "SampleAfterValue": "100000",
1102 "BriefDescription": "All offcore code reads",
1103 "Offcore": "1"
1104 },
1105 {
1106 "EventCode": "0xB7",
1107 "MSRValue": "0x8044",
1108 "Counter": "2",
1109 "UMask": "0x1",
1110 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.IO_CSR_MMIO",
1111 "MSRIndex": "0x1A6",
1112 "SampleAfterValue": "100000",
1113 "BriefDescription": "Offcore code reads satisfied by the IO, CSR, MMIO unit",
1114 "Offcore": "1"
1115 },
1116 {
1117 "EventCode": "0xB7",
1118 "MSRValue": "0x144",
1119 "Counter": "2",
1120 "UMask": "0x1",
1121 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_NO_OTHER_CORE",
1122 "MSRIndex": "0x1A6",
1123 "SampleAfterValue": "100000",
1124 "BriefDescription": "Offcore code reads satisfied by the LLC and not found in a sibling core",
1125 "Offcore": "1"
1126 },
1127 {
1128 "EventCode": "0xB7",
1129 "MSRValue": "0x244",
1130 "Counter": "2",
1131 "UMask": "0x1",
1132 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1133 "MSRIndex": "0x1A6",
1134 "SampleAfterValue": "100000",
1135 "BriefDescription": "Offcore code reads satisfied by the LLC and HIT in a sibling core",
1136 "Offcore": "1"
1137 },
1138 {
1139 "EventCode": "0xB7",
1140 "MSRValue": "0x444",
1141 "Counter": "2",
1142 "UMask": "0x1",
1143 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1144 "MSRIndex": "0x1A6",
1145 "SampleAfterValue": "100000",
1146 "BriefDescription": "Offcore code reads satisfied by the LLC and HITM in a sibling core",
1147 "Offcore": "1"
1148 },
1149 {
1150 "EventCode": "0xB7",
1151 "MSRValue": "0x744",
1152 "Counter": "2",
1153 "UMask": "0x1",
1154 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE",
1155 "MSRIndex": "0x1A6",
1156 "SampleAfterValue": "100000",
1157 "BriefDescription": "Offcore code reads satisfied by the LLC",
1158 "Offcore": "1"
1159 },
1160 {
1161 "EventCode": "0xB7",
1162 "MSRValue": "0x4744",
1163 "Counter": "2",
1164 "UMask": "0x1",
1165 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE_DRAM",
1166 "MSRIndex": "0x1A6",
1167 "SampleAfterValue": "100000",
1168 "BriefDescription": "Offcore code reads satisfied by the LLC or local DRAM",
1169 "Offcore": "1"
1170 },
1171 {
1172 "EventCode": "0xB7",
1173 "MSRValue": "0x1844",
1174 "Counter": "2",
1175 "UMask": "0x1",
1176 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE",
1177 "MSRIndex": "0x1A6",
1178 "SampleAfterValue": "100000",
1179 "BriefDescription": "Offcore code reads satisfied by a remote cache",
1180 "Offcore": "1"
1181 },
1182 {
1183 "EventCode": "0xB7",
1184 "MSRValue": "0x3844",
1185 "Counter": "2",
1186 "UMask": "0x1",
1187 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_DRAM",
1188 "MSRIndex": "0x1A6",
1189 "SampleAfterValue": "100000",
1190 "BriefDescription": "Offcore code reads satisfied by a remote cache or remote DRAM",
1191 "Offcore": "1"
1192 },
1193 {
1194 "EventCode": "0xB7",
1195 "MSRValue": "0x1044",
1196 "Counter": "2",
1197 "UMask": "0x1",
1198 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HIT",
1199 "MSRIndex": "0x1A6",
1200 "SampleAfterValue": "100000",
1201 "BriefDescription": "Offcore code reads that HIT in a remote cache",
1202 "Offcore": "1"
1203 },
1204 {
1205 "EventCode": "0xB7",
1206 "MSRValue": "0x844",
1207 "Counter": "2",
1208 "UMask": "0x1",
1209 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HITM",
1210 "MSRIndex": "0x1A6",
1211 "SampleAfterValue": "100000",
1212 "BriefDescription": "Offcore code reads that HITM in a remote cache",
1213 "Offcore": "1"
1214 },
1215 {
1216 "EventCode": "0xB7",
1217 "MSRValue": "0x7FFF",
1218 "Counter": "2",
1219 "UMask": "0x1",
1220 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_CACHE_DRAM",
1221 "MSRIndex": "0x1A6",
1222 "SampleAfterValue": "100000",
1223 "BriefDescription": "Offcore requests satisfied by any cache or DRAM",
1224 "Offcore": "1"
1225 },
1226 {
1227 "EventCode": "0xB7",
1228 "MSRValue": "0xFFFF",
1229 "Counter": "2",
1230 "UMask": "0x1",
1231 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LOCATION",
1232 "MSRIndex": "0x1A6",
1233 "SampleAfterValue": "100000",
1234 "BriefDescription": "All offcore requests",
1235 "Offcore": "1"
1236 },
1237 {
1238 "EventCode": "0xB7",
1239 "MSRValue": "0x80FF",
1240 "Counter": "2",
1241 "UMask": "0x1",
1242 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.IO_CSR_MMIO",
1243 "MSRIndex": "0x1A6",
1244 "SampleAfterValue": "100000",
1245 "BriefDescription": "Offcore requests satisfied by the IO, CSR, MMIO unit",
1246 "Offcore": "1"
1247 },
1248 {
1249 "EventCode": "0xB7",
1250 "MSRValue": "0x1FF",
1251 "Counter": "2",
1252 "UMask": "0x1",
1253 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_NO_OTHER_CORE",
1254 "MSRIndex": "0x1A6",
1255 "SampleAfterValue": "100000",
1256 "BriefDescription": "Offcore requests satisfied by the LLC and not found in a sibling core",
1257 "Offcore": "1"
1258 },
1259 {
1260 "EventCode": "0xB7",
1261 "MSRValue": "0x2FF",
1262 "Counter": "2",
1263 "UMask": "0x1",
1264 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HIT",
1265 "MSRIndex": "0x1A6",
1266 "SampleAfterValue": "100000",
1267 "BriefDescription": "Offcore requests satisfied by the LLC and HIT in a sibling core",
1268 "Offcore": "1"
1269 },
1270 {
1271 "EventCode": "0xB7",
1272 "MSRValue": "0x4FF",
1273 "Counter": "2",
1274 "UMask": "0x1",
1275 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HITM",
1276 "MSRIndex": "0x1A6",
1277 "SampleAfterValue": "100000",
1278 "BriefDescription": "Offcore requests satisfied by the LLC and HITM in a sibling core",
1279 "Offcore": "1"
1280 },
1281 {
1282 "EventCode": "0xB7",
1283 "MSRValue": "0x7FF",
1284 "Counter": "2",
1285 "UMask": "0x1",
1286 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE",
1287 "MSRIndex": "0x1A6",
1288 "SampleAfterValue": "100000",
1289 "BriefDescription": "Offcore requests satisfied by the LLC",
1290 "Offcore": "1"
1291 },
1292 {
1293 "EventCode": "0xB7",
1294 "MSRValue": "0x47FF",
1295 "Counter": "2",
1296 "UMask": "0x1",
1297 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE_DRAM",
1298 "MSRIndex": "0x1A6",
1299 "SampleAfterValue": "100000",
1300 "BriefDescription": "Offcore requests satisfied by the LLC or local DRAM",
1301 "Offcore": "1"
1302 },
1303 {
1304 "EventCode": "0xB7",
1305 "MSRValue": "0x18FF",
1306 "Counter": "2",
1307 "UMask": "0x1",
1308 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE",
1309 "MSRIndex": "0x1A6",
1310 "SampleAfterValue": "100000",
1311 "BriefDescription": "Offcore requests satisfied by a remote cache",
1312 "Offcore": "1"
1313 },
1314 {
1315 "EventCode": "0xB7",
1316 "MSRValue": "0x38FF",
1317 "Counter": "2",
1318 "UMask": "0x1",
1319 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_DRAM",
1320 "MSRIndex": "0x1A6",
1321 "SampleAfterValue": "100000",
1322 "BriefDescription": "Offcore requests satisfied by a remote cache or remote DRAM",
1323 "Offcore": "1"
1324 },
1325 {
1326 "EventCode": "0xB7",
1327 "MSRValue": "0x10FF",
1328 "Counter": "2",
1329 "UMask": "0x1",
1330 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HIT",
1331 "MSRIndex": "0x1A6",
1332 "SampleAfterValue": "100000",
1333 "BriefDescription": "Offcore requests that HIT in a remote cache",
1334 "Offcore": "1"
1335 },
1336 {
1337 "EventCode": "0xB7",
1338 "MSRValue": "0x8FF",
1339 "Counter": "2",
1340 "UMask": "0x1",
1341 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HITM",
1342 "MSRIndex": "0x1A6",
1343 "SampleAfterValue": "100000",
1344 "BriefDescription": "Offcore requests that HITM in a remote cache",
1345 "Offcore": "1"
1346 },
1347 {
1348 "EventCode": "0xB7",
1349 "MSRValue": "0x7F22",
1350 "Counter": "2",
1351 "UMask": "0x1",
1352 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_CACHE_DRAM",
1353 "MSRIndex": "0x1A6",
1354 "SampleAfterValue": "100000",
1355 "BriefDescription": "Offcore RFO requests satisfied by any cache or DRAM",
1356 "Offcore": "1"
1357 },
1358 {
1359 "EventCode": "0xB7",
1360 "MSRValue": "0xFF22",
1361 "Counter": "2",
1362 "UMask": "0x1",
1363 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LOCATION",
1364 "MSRIndex": "0x1A6",
1365 "SampleAfterValue": "100000",
1366 "BriefDescription": "All offcore RFO requests",
1367 "Offcore": "1"
1368 },
1369 {
1370 "EventCode": "0xB7",
1371 "MSRValue": "0x8022",
1372 "Counter": "2",
1373 "UMask": "0x1",
1374 "EventName": "OFFCORE_RESPONSE.ANY_RFO.IO_CSR_MMIO",
1375 "MSRIndex": "0x1A6",
1376 "SampleAfterValue": "100000",
1377 "BriefDescription": "Offcore RFO requests satisfied by the IO, CSR, MMIO unit",
1378 "Offcore": "1"
1379 },
1380 {
1381 "EventCode": "0xB7",
1382 "MSRValue": "0x122",
1383 "Counter": "2",
1384 "UMask": "0x1",
1385 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_NO_OTHER_CORE",
1386 "MSRIndex": "0x1A6",
1387 "SampleAfterValue": "100000",
1388 "BriefDescription": "Offcore RFO requests satisfied by the LLC and not found in a sibling core",
1389 "Offcore": "1"
1390 },
1391 {
1392 "EventCode": "0xB7",
1393 "MSRValue": "0x222",
1394 "Counter": "2",
1395 "UMask": "0x1",
1396 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HIT",
1397 "MSRIndex": "0x1A6",
1398 "SampleAfterValue": "100000",
1399 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HIT in a sibling core",
1400 "Offcore": "1"
1401 },
1402 {
1403 "EventCode": "0xB7",
1404 "MSRValue": "0x422",
1405 "Counter": "2",
1406 "UMask": "0x1",
1407 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HITM",
1408 "MSRIndex": "0x1A6",
1409 "SampleAfterValue": "100000",
1410 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HITM in a sibling core",
1411 "Offcore": "1"
1412 },
1413 {
1414 "EventCode": "0xB7",
1415 "MSRValue": "0x722",
1416 "Counter": "2",
1417 "UMask": "0x1",
1418 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE",
1419 "MSRIndex": "0x1A6",
1420 "SampleAfterValue": "100000",
1421 "BriefDescription": "Offcore RFO requests satisfied by the LLC",
1422 "Offcore": "1"
1423 },
1424 {
1425 "EventCode": "0xB7",
1426 "MSRValue": "0x4722",
1427 "Counter": "2",
1428 "UMask": "0x1",
1429 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE_DRAM",
1430 "MSRIndex": "0x1A6",
1431 "SampleAfterValue": "100000",
1432 "BriefDescription": "Offcore RFO requests satisfied by the LLC or local DRAM",
1433 "Offcore": "1"
1434 },
1435 {
1436 "EventCode": "0xB7",
1437 "MSRValue": "0x1822",
1438 "Counter": "2",
1439 "UMask": "0x1",
1440 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE",
1441 "MSRIndex": "0x1A6",
1442 "SampleAfterValue": "100000",
1443 "BriefDescription": "Offcore RFO requests satisfied by a remote cache",
1444 "Offcore": "1"
1445 },
1446 {
1447 "EventCode": "0xB7",
1448 "MSRValue": "0x3822",
1449 "Counter": "2",
1450 "UMask": "0x1",
1451 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_DRAM",
1452 "MSRIndex": "0x1A6",
1453 "SampleAfterValue": "100000",
1454 "BriefDescription": "Offcore RFO requests satisfied by a remote cache or remote DRAM",
1455 "Offcore": "1"
1456 },
1457 {
1458 "EventCode": "0xB7",
1459 "MSRValue": "0x1022",
1460 "Counter": "2",
1461 "UMask": "0x1",
1462 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HIT",
1463 "MSRIndex": "0x1A6",
1464 "SampleAfterValue": "100000",
1465 "BriefDescription": "Offcore RFO requests that HIT in a remote cache",
1466 "Offcore": "1"
1467 },
1468 {
1469 "EventCode": "0xB7",
1470 "MSRValue": "0x822",
1471 "Counter": "2",
1472 "UMask": "0x1",
1473 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HITM",
1474 "MSRIndex": "0x1A6",
1475 "SampleAfterValue": "100000",
1476 "BriefDescription": "Offcore RFO requests that HITM in a remote cache",
1477 "Offcore": "1"
1478 },
1479 {
1480 "EventCode": "0xB7",
1481 "MSRValue": "0x7F08",
1482 "Counter": "2",
1483 "UMask": "0x1",
1484 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_CACHE_DRAM",
1485 "MSRIndex": "0x1A6",
1486 "SampleAfterValue": "100000",
1487 "BriefDescription": "Offcore writebacks to any cache or DRAM.",
1488 "Offcore": "1"
1489 },
1490 {
1491 "EventCode": "0xB7",
1492 "MSRValue": "0xFF08",
1493 "Counter": "2",
1494 "UMask": "0x1",
1495 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LOCATION",
1496 "MSRIndex": "0x1A6",
1497 "SampleAfterValue": "100000",
1498 "BriefDescription": "All offcore writebacks",
1499 "Offcore": "1"
1500 },
1501 {
1502 "EventCode": "0xB7",
1503 "MSRValue": "0x8008",
1504 "Counter": "2",
1505 "UMask": "0x1",
1506 "EventName": "OFFCORE_RESPONSE.COREWB.IO_CSR_MMIO",
1507 "MSRIndex": "0x1A6",
1508 "SampleAfterValue": "100000",
1509 "BriefDescription": "Offcore writebacks to the IO, CSR, MMIO unit.",
1510 "Offcore": "1"
1511 },
1512 {
1513 "EventCode": "0xB7",
1514 "MSRValue": "0x108",
1515 "Counter": "2",
1516 "UMask": "0x1",
1517 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_NO_OTHER_CORE",
1518 "MSRIndex": "0x1A6",
1519 "SampleAfterValue": "100000",
1520 "BriefDescription": "Offcore writebacks to the LLC and not found in a sibling core",
1521 "Offcore": "1"
1522 },
1523 {
1524 "EventCode": "0xB7",
1525 "MSRValue": "0x408",
1526 "Counter": "2",
1527 "UMask": "0x1",
1528 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_OTHER_CORE_HITM",
1529 "MSRIndex": "0x1A6",
1530 "SampleAfterValue": "100000",
1531 "BriefDescription": "Offcore writebacks to the LLC and HITM in a sibling core",
1532 "Offcore": "1"
1533 },
1534 {
1535 "EventCode": "0xB7",
1536 "MSRValue": "0x708",
1537 "Counter": "2",
1538 "UMask": "0x1",
1539 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE",
1540 "MSRIndex": "0x1A6",
1541 "SampleAfterValue": "100000",
1542 "BriefDescription": "Offcore writebacks to the LLC",
1543 "Offcore": "1"
1544 },
1545 {
1546 "EventCode": "0xB7",
1547 "MSRValue": "0x4708",
1548 "Counter": "2",
1549 "UMask": "0x1",
1550 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE_DRAM",
1551 "MSRIndex": "0x1A6",
1552 "SampleAfterValue": "100000",
1553 "BriefDescription": "Offcore writebacks to the LLC or local DRAM",
1554 "Offcore": "1"
1555 },
1556 {
1557 "EventCode": "0xB7",
1558 "MSRValue": "0x1808",
1559 "Counter": "2",
1560 "UMask": "0x1",
1561 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE",
1562 "MSRIndex": "0x1A6",
1563 "SampleAfterValue": "100000",
1564 "BriefDescription": "Offcore writebacks to a remote cache",
1565 "Offcore": "1"
1566 },
1567 {
1568 "EventCode": "0xB7",
1569 "MSRValue": "0x3808",
1570 "Counter": "2",
1571 "UMask": "0x1",
1572 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_DRAM",
1573 "MSRIndex": "0x1A6",
1574 "SampleAfterValue": "100000",
1575 "BriefDescription": "Offcore writebacks to a remote cache or remote DRAM",
1576 "Offcore": "1"
1577 },
1578 {
1579 "EventCode": "0xB7",
1580 "MSRValue": "0x1008",
1581 "Counter": "2",
1582 "UMask": "0x1",
1583 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HIT",
1584 "MSRIndex": "0x1A6",
1585 "SampleAfterValue": "100000",
1586 "BriefDescription": "Offcore writebacks that HIT in a remote cache",
1587 "Offcore": "1"
1588 },
1589 {
1590 "EventCode": "0xB7",
1591 "MSRValue": "0x808",
1592 "Counter": "2",
1593 "UMask": "0x1",
1594 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HITM",
1595 "MSRIndex": "0x1A6",
1596 "SampleAfterValue": "100000",
1597 "BriefDescription": "Offcore writebacks that HITM in a remote cache",
1598 "Offcore": "1"
1599 },
1600 {
1601 "EventCode": "0xB7",
1602 "MSRValue": "0x7F77",
1603 "Counter": "2",
1604 "UMask": "0x1",
1605 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_CACHE_DRAM",
1606 "MSRIndex": "0x1A6",
1607 "SampleAfterValue": "100000",
1608 "BriefDescription": "Offcore code or data read requests satisfied by any cache or DRAM.",
1609 "Offcore": "1"
1610 },
1611 {
1612 "EventCode": "0xB7",
1613 "MSRValue": "0xFF77",
1614 "Counter": "2",
1615 "UMask": "0x1",
1616 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LOCATION",
1617 "MSRIndex": "0x1A6",
1618 "SampleAfterValue": "100000",
1619 "BriefDescription": "All offcore code or data read requests",
1620 "Offcore": "1"
1621 },
1622 {
1623 "EventCode": "0xB7",
1624 "MSRValue": "0x8077",
1625 "Counter": "2",
1626 "UMask": "0x1",
1627 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.IO_CSR_MMIO",
1628 "MSRIndex": "0x1A6",
1629 "SampleAfterValue": "100000",
1630 "BriefDescription": "Offcore code or data read requests satisfied by the IO, CSR, MMIO unit.",
1631 "Offcore": "1"
1632 },
1633 {
1634 "EventCode": "0xB7",
1635 "MSRValue": "0x177",
1636 "Counter": "2",
1637 "UMask": "0x1",
1638 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_NO_OTHER_CORE",
1639 "MSRIndex": "0x1A6",
1640 "SampleAfterValue": "100000",
1641 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and not found in a sibling core",
1642 "Offcore": "1"
1643 },
1644 {
1645 "EventCode": "0xB7",
1646 "MSRValue": "0x277",
1647 "Counter": "2",
1648 "UMask": "0x1",
1649 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1650 "MSRIndex": "0x1A6",
1651 "SampleAfterValue": "100000",
1652 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HIT in a sibling core",
1653 "Offcore": "1"
1654 },
1655 {
1656 "EventCode": "0xB7",
1657 "MSRValue": "0x477",
1658 "Counter": "2",
1659 "UMask": "0x1",
1660 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1661 "MSRIndex": "0x1A6",
1662 "SampleAfterValue": "100000",
1663 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HITM in a sibling core",
1664 "Offcore": "1"
1665 },
1666 {
1667 "EventCode": "0xB7",
1668 "MSRValue": "0x777",
1669 "Counter": "2",
1670 "UMask": "0x1",
1671 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE",
1672 "MSRIndex": "0x1A6",
1673 "SampleAfterValue": "100000",
1674 "BriefDescription": "Offcore code or data read requests satisfied by the LLC",
1675 "Offcore": "1"
1676 },
1677 {
1678 "EventCode": "0xB7",
1679 "MSRValue": "0x4777",
1680 "Counter": "2",
1681 "UMask": "0x1",
1682 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE_DRAM",
1683 "MSRIndex": "0x1A6",
1684 "SampleAfterValue": "100000",
1685 "BriefDescription": "Offcore code or data read requests satisfied by the LLC or local DRAM",
1686 "Offcore": "1"
1687 },
1688 {
1689 "EventCode": "0xB7",
1690 "MSRValue": "0x1877",
1691 "Counter": "2",
1692 "UMask": "0x1",
1693 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE",
1694 "MSRIndex": "0x1A6",
1695 "SampleAfterValue": "100000",
1696 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache",
1697 "Offcore": "1"
1698 },
1699 {
1700 "EventCode": "0xB7",
1701 "MSRValue": "0x3877",
1702 "Counter": "2",
1703 "UMask": "0x1",
1704 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_DRAM",
1705 "MSRIndex": "0x1A6",
1706 "SampleAfterValue": "100000",
1707 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache or remote DRAM",
1708 "Offcore": "1"
1709 },
1710 {
1711 "EventCode": "0xB7",
1712 "MSRValue": "0x1077",
1713 "Counter": "2",
1714 "UMask": "0x1",
1715 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HIT",
1716 "MSRIndex": "0x1A6",
1717 "SampleAfterValue": "100000",
1718 "BriefDescription": "Offcore code or data read requests that HIT in a remote cache",
1719 "Offcore": "1"
1720 },
1721 {
1722 "EventCode": "0xB7",
1723 "MSRValue": "0x877",
1724 "Counter": "2",
1725 "UMask": "0x1",
1726 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HITM",
1727 "MSRIndex": "0x1A6",
1728 "SampleAfterValue": "100000",
1729 "BriefDescription": "Offcore code or data read requests that HITM in a remote cache",
1730 "Offcore": "1"
1731 },
1732 {
1733 "EventCode": "0xB7",
1734 "MSRValue": "0x7F33",
1735 "Counter": "2",
1736 "UMask": "0x1",
1737 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_CACHE_DRAM",
1738 "MSRIndex": "0x1A6",
1739 "SampleAfterValue": "100000",
1740 "BriefDescription": "Offcore request = all data, response = any cache_dram",
1741 "Offcore": "1"
1742 },
1743 {
1744 "EventCode": "0xB7",
1745 "MSRValue": "0xFF33",
1746 "Counter": "2",
1747 "UMask": "0x1",
1748 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LOCATION",
1749 "MSRIndex": "0x1A6",
1750 "SampleAfterValue": "100000",
1751 "BriefDescription": "Offcore request = all data, response = any location",
1752 "Offcore": "1"
1753 },
1754 {
1755 "EventCode": "0xB7",
1756 "MSRValue": "0x8033",
1757 "Counter": "2",
1758 "UMask": "0x1",
1759 "EventName": "OFFCORE_RESPONSE.DATA_IN.IO_CSR_MMIO",
1760 "MSRIndex": "0x1A6",
1761 "SampleAfterValue": "100000",
1762 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the IO, CSR, MMIO unit",
1763 "Offcore": "1"
1764 },
1765 {
1766 "EventCode": "0xB7",
1767 "MSRValue": "0x133",
1768 "Counter": "2",
1769 "UMask": "0x1",
1770 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_NO_OTHER_CORE",
1771 "MSRIndex": "0x1A6",
1772 "SampleAfterValue": "100000",
1773 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the LLC and not found in a sibling core",
1774 "Offcore": "1"
1775 },
1776 {
1777 "EventCode": "0xB7",
1778 "MSRValue": "0x233",
1779 "Counter": "2",
1780 "UMask": "0x1",
1781 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HIT",
1782 "MSRIndex": "0x1A6",
1783 "SampleAfterValue": "100000",
1784 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HIT in a sibling core",
1785 "Offcore": "1"
1786 },
1787 {
1788 "EventCode": "0xB7",
1789 "MSRValue": "0x433",
1790 "Counter": "2",
1791 "UMask": "0x1",
1792 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HITM",
1793 "MSRIndex": "0x1A6",
1794 "SampleAfterValue": "100000",
1795 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HITM in a sibling core",
1796 "Offcore": "1"
1797 },
1798 {
1799 "EventCode": "0xB7",
1800 "MSRValue": "0x733",
1801 "Counter": "2",
1802 "UMask": "0x1",
1803 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE",
1804 "MSRIndex": "0x1A6",
1805 "SampleAfterValue": "100000",
1806 "BriefDescription": "Offcore request = all data, response = local cache",
1807 "Offcore": "1"
1808 },
1809 {
1810 "EventCode": "0xB7",
1811 "MSRValue": "0x4733",
1812 "Counter": "2",
1813 "UMask": "0x1",
1814 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE_DRAM",
1815 "MSRIndex": "0x1A6",
1816 "SampleAfterValue": "100000",
1817 "BriefDescription": "Offcore request = all data, response = local cache or dram",
1818 "Offcore": "1"
1819 },
1820 {
1821 "EventCode": "0xB7",
1822 "MSRValue": "0x1833",
1823 "Counter": "2",
1824 "UMask": "0x1",
1825 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE",
1826 "MSRIndex": "0x1A6",
1827 "SampleAfterValue": "100000",
1828 "BriefDescription": "Offcore request = all data, response = remote cache",
1829 "Offcore": "1"
1830 },
1831 {
1832 "EventCode": "0xB7",
1833 "MSRValue": "0x3833",
1834 "Counter": "2",
1835 "UMask": "0x1",
1836 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_DRAM",
1837 "MSRIndex": "0x1A6",
1838 "SampleAfterValue": "100000",
1839 "BriefDescription": "Offcore request = all data, response = remote cache or dram",
1840 "Offcore": "1"
1841 },
1842 {
1843 "EventCode": "0xB7",
1844 "MSRValue": "0x1033",
1845 "Counter": "2",
1846 "UMask": "0x1",
1847 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HIT",
1848 "MSRIndex": "0x1A6",
1849 "SampleAfterValue": "100000",
1850 "BriefDescription": "Offcore data reads, RFO's and prefetches that HIT in a remote cache ",
1851 "Offcore": "1"
1852 },
1853 {
1854 "EventCode": "0xB7",
1855 "MSRValue": "0x833",
1856 "Counter": "2",
1857 "UMask": "0x1",
1858 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HITM",
1859 "MSRIndex": "0x1A6",
1860 "SampleAfterValue": "100000",
1861 "BriefDescription": "Offcore data reads, RFO's and prefetches that HITM in a remote cache",
1862 "Offcore": "1"
1863 },
1864 {
1865 "EventCode": "0xB7",
1866 "MSRValue": "0x7F03",
1867 "Counter": "2",
1868 "UMask": "0x1",
1869 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_CACHE_DRAM",
1870 "MSRIndex": "0x1A6",
1871 "SampleAfterValue": "100000",
1872 "BriefDescription": "Offcore demand data requests satisfied by any cache or DRAM",
1873 "Offcore": "1"
1874 },
1875 {
1876 "EventCode": "0xB7",
1877 "MSRValue": "0xFF03",
1878 "Counter": "2",
1879 "UMask": "0x1",
1880 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LOCATION",
1881 "MSRIndex": "0x1A6",
1882 "SampleAfterValue": "100000",
1883 "BriefDescription": "All offcore demand data requests",
1884 "Offcore": "1"
1885 },
1886 {
1887 "EventCode": "0xB7",
1888 "MSRValue": "0x8003",
1889 "Counter": "2",
1890 "UMask": "0x1",
1891 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.IO_CSR_MMIO",
1892 "MSRIndex": "0x1A6",
1893 "SampleAfterValue": "100000",
1894 "BriefDescription": "Offcore demand data requests satisfied by the IO, CSR, MMIO unit.",
1895 "Offcore": "1"
1896 },
1897 {
1898 "EventCode": "0xB7",
1899 "MSRValue": "0x103",
1900 "Counter": "2",
1901 "UMask": "0x1",
1902 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_NO_OTHER_CORE",
1903 "MSRIndex": "0x1A6",
1904 "SampleAfterValue": "100000",
1905 "BriefDescription": "Offcore demand data requests satisfied by the LLC and not found in a sibling core",
1906 "Offcore": "1"
1907 },
1908 {
1909 "EventCode": "0xB7",
1910 "MSRValue": "0x203",
1911 "Counter": "2",
1912 "UMask": "0x1",
1913 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HIT",
1914 "MSRIndex": "0x1A6",
1915 "SampleAfterValue": "100000",
1916 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HIT in a sibling core",
1917 "Offcore": "1"
1918 },
1919 {
1920 "EventCode": "0xB7",
1921 "MSRValue": "0x403",
1922 "Counter": "2",
1923 "UMask": "0x1",
1924 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HITM",
1925 "MSRIndex": "0x1A6",
1926 "SampleAfterValue": "100000",
1927 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HITM in a sibling core",
1928 "Offcore": "1"
1929 },
1930 {
1931 "EventCode": "0xB7",
1932 "MSRValue": "0x703",
1933 "Counter": "2",
1934 "UMask": "0x1",
1935 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE",
1936 "MSRIndex": "0x1A6",
1937 "SampleAfterValue": "100000",
1938 "BriefDescription": "Offcore demand data requests satisfied by the LLC",
1939 "Offcore": "1"
1940 },
1941 {
1942 "EventCode": "0xB7",
1943 "MSRValue": "0x4703",
1944 "Counter": "2",
1945 "UMask": "0x1",
1946 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE_DRAM",
1947 "MSRIndex": "0x1A6",
1948 "SampleAfterValue": "100000",
1949 "BriefDescription": "Offcore demand data requests satisfied by the LLC or local DRAM",
1950 "Offcore": "1"
1951 },
1952 {
1953 "EventCode": "0xB7",
1954 "MSRValue": "0x1803",
1955 "Counter": "2",
1956 "UMask": "0x1",
1957 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE",
1958 "MSRIndex": "0x1A6",
1959 "SampleAfterValue": "100000",
1960 "BriefDescription": "Offcore demand data requests satisfied by a remote cache",
1961 "Offcore": "1"
1962 },
1963 {
1964 "EventCode": "0xB7",
1965 "MSRValue": "0x3803",
1966 "Counter": "2",
1967 "UMask": "0x1",
1968 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_DRAM",
1969 "MSRIndex": "0x1A6",
1970 "SampleAfterValue": "100000",
1971 "BriefDescription": "Offcore demand data requests satisfied by a remote cache or remote DRAM",
1972 "Offcore": "1"
1973 },
1974 {
1975 "EventCode": "0xB7",
1976 "MSRValue": "0x1003",
1977 "Counter": "2",
1978 "UMask": "0x1",
1979 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HIT",
1980 "MSRIndex": "0x1A6",
1981 "SampleAfterValue": "100000",
1982 "BriefDescription": "Offcore demand data requests that HIT in a remote cache",
1983 "Offcore": "1"
1984 },
1985 {
1986 "EventCode": "0xB7",
1987 "MSRValue": "0x803",
1988 "Counter": "2",
1989 "UMask": "0x1",
1990 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HITM",
1991 "MSRIndex": "0x1A6",
1992 "SampleAfterValue": "100000",
1993 "BriefDescription": "Offcore demand data requests that HITM in a remote cache",
1994 "Offcore": "1"
1995 },
1996 {
1997 "EventCode": "0xB7",
1998 "MSRValue": "0x7F01",
1999 "Counter": "2",
2000 "UMask": "0x1",
2001 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_CACHE_DRAM",
2002 "MSRIndex": "0x1A6",
2003 "SampleAfterValue": "100000",
2004 "BriefDescription": "Offcore demand data reads satisfied by any cache or DRAM.",
2005 "Offcore": "1"
2006 },
2007 {
2008 "EventCode": "0xB7",
2009 "MSRValue": "0xFF01",
2010 "Counter": "2",
2011 "UMask": "0x1",
2012 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LOCATION",
2013 "MSRIndex": "0x1A6",
2014 "SampleAfterValue": "100000",
2015 "BriefDescription": "All offcore demand data reads",
2016 "Offcore": "1"
2017 },
2018 {
2019 "EventCode": "0xB7",
2020 "MSRValue": "0x8001",
2021 "Counter": "2",
2022 "UMask": "0x1",
2023 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.IO_CSR_MMIO",
2024 "MSRIndex": "0x1A6",
2025 "SampleAfterValue": "100000",
2026 "BriefDescription": "Offcore demand data reads satisfied by the IO, CSR, MMIO unit",
2027 "Offcore": "1"
2028 },
2029 {
2030 "EventCode": "0xB7",
2031 "MSRValue": "0x101",
2032 "Counter": "2",
2033 "UMask": "0x1",
2034 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2035 "MSRIndex": "0x1A6",
2036 "SampleAfterValue": "100000",
2037 "BriefDescription": "Offcore demand data reads satisfied by the LLC and not found in a sibling core",
2038 "Offcore": "1"
2039 },
2040 {
2041 "EventCode": "0xB7",
2042 "MSRValue": "0x201",
2043 "Counter": "2",
2044 "UMask": "0x1",
2045 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2046 "MSRIndex": "0x1A6",
2047 "SampleAfterValue": "100000",
2048 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HIT in a sibling core",
2049 "Offcore": "1"
2050 },
2051 {
2052 "EventCode": "0xB7",
2053 "MSRValue": "0x401",
2054 "Counter": "2",
2055 "UMask": "0x1",
2056 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2057 "MSRIndex": "0x1A6",
2058 "SampleAfterValue": "100000",
2059 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HITM in a sibling core",
2060 "Offcore": "1"
2061 },
2062 {
2063 "EventCode": "0xB7",
2064 "MSRValue": "0x701",
2065 "Counter": "2",
2066 "UMask": "0x1",
2067 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE",
2068 "MSRIndex": "0x1A6",
2069 "SampleAfterValue": "100000",
2070 "BriefDescription": "Offcore demand data reads satisfied by the LLC",
2071 "Offcore": "1"
2072 },
2073 {
2074 "EventCode": "0xB7",
2075 "MSRValue": "0x4701",
2076 "Counter": "2",
2077 "UMask": "0x1",
2078 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE_DRAM",
2079 "MSRIndex": "0x1A6",
2080 "SampleAfterValue": "100000",
2081 "BriefDescription": "Offcore demand data reads satisfied by the LLC or local DRAM",
2082 "Offcore": "1"
2083 },
2084 {
2085 "EventCode": "0xB7",
2086 "MSRValue": "0x1801",
2087 "Counter": "2",
2088 "UMask": "0x1",
2089 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE",
2090 "MSRIndex": "0x1A6",
2091 "SampleAfterValue": "100000",
2092 "BriefDescription": "Offcore demand data reads satisfied by a remote cache",
2093 "Offcore": "1"
2094 },
2095 {
2096 "EventCode": "0xB7",
2097 "MSRValue": "0x3801",
2098 "Counter": "2",
2099 "UMask": "0x1",
2100 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_DRAM",
2101 "MSRIndex": "0x1A6",
2102 "SampleAfterValue": "100000",
2103 "BriefDescription": "Offcore demand data reads satisfied by a remote cache or remote DRAM",
2104 "Offcore": "1"
2105 },
2106 {
2107 "EventCode": "0xB7",
2108 "MSRValue": "0x1001",
2109 "Counter": "2",
2110 "UMask": "0x1",
2111 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HIT",
2112 "MSRIndex": "0x1A6",
2113 "SampleAfterValue": "100000",
2114 "BriefDescription": "Offcore demand data reads that HIT in a remote cache",
2115 "Offcore": "1"
2116 },
2117 {
2118 "EventCode": "0xB7",
2119 "MSRValue": "0x801",
2120 "Counter": "2",
2121 "UMask": "0x1",
2122 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HITM",
2123 "MSRIndex": "0x1A6",
2124 "SampleAfterValue": "100000",
2125 "BriefDescription": "Offcore demand data reads that HITM in a remote cache",
2126 "Offcore": "1"
2127 },
2128 {
2129 "EventCode": "0xB7",
2130 "MSRValue": "0x7F04",
2131 "Counter": "2",
2132 "UMask": "0x1",
2133 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_CACHE_DRAM",
2134 "MSRIndex": "0x1A6",
2135 "SampleAfterValue": "100000",
2136 "BriefDescription": "Offcore demand code reads satisfied by any cache or DRAM.",
2137 "Offcore": "1"
2138 },
2139 {
2140 "EventCode": "0xB7",
2141 "MSRValue": "0xFF04",
2142 "Counter": "2",
2143 "UMask": "0x1",
2144 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LOCATION",
2145 "MSRIndex": "0x1A6",
2146 "SampleAfterValue": "100000",
2147 "BriefDescription": "All offcore demand code reads",
2148 "Offcore": "1"
2149 },
2150 {
2151 "EventCode": "0xB7",
2152 "MSRValue": "0x8004",
2153 "Counter": "2",
2154 "UMask": "0x1",
2155 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.IO_CSR_MMIO",
2156 "MSRIndex": "0x1A6",
2157 "SampleAfterValue": "100000",
2158 "BriefDescription": "Offcore demand code reads satisfied by the IO, CSR, MMIO unit",
2159 "Offcore": "1"
2160 },
2161 {
2162 "EventCode": "0xB7",
2163 "MSRValue": "0x104",
2164 "Counter": "2",
2165 "UMask": "0x1",
2166 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_NO_OTHER_CORE",
2167 "MSRIndex": "0x1A6",
2168 "SampleAfterValue": "100000",
2169 "BriefDescription": "Offcore demand code reads satisfied by the LLC and not found in a sibling core",
2170 "Offcore": "1"
2171 },
2172 {
2173 "EventCode": "0xB7",
2174 "MSRValue": "0x204",
2175 "Counter": "2",
2176 "UMask": "0x1",
2177 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2178 "MSRIndex": "0x1A6",
2179 "SampleAfterValue": "100000",
2180 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HIT in a sibling core",
2181 "Offcore": "1"
2182 },
2183 {
2184 "EventCode": "0xB7",
2185 "MSRValue": "0x404",
2186 "Counter": "2",
2187 "UMask": "0x1",
2188 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2189 "MSRIndex": "0x1A6",
2190 "SampleAfterValue": "100000",
2191 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HITM in a sibling core",
2192 "Offcore": "1"
2193 },
2194 {
2195 "EventCode": "0xB7",
2196 "MSRValue": "0x704",
2197 "Counter": "2",
2198 "UMask": "0x1",
2199 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE",
2200 "MSRIndex": "0x1A6",
2201 "SampleAfterValue": "100000",
2202 "BriefDescription": "Offcore demand code reads satisfied by the LLC",
2203 "Offcore": "1"
2204 },
2205 {
2206 "EventCode": "0xB7",
2207 "MSRValue": "0x4704",
2208 "Counter": "2",
2209 "UMask": "0x1",
2210 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE_DRAM",
2211 "MSRIndex": "0x1A6",
2212 "SampleAfterValue": "100000",
2213 "BriefDescription": "Offcore demand code reads satisfied by the LLC or local DRAM",
2214 "Offcore": "1"
2215 },
2216 {
2217 "EventCode": "0xB7",
2218 "MSRValue": "0x1804",
2219 "Counter": "2",
2220 "UMask": "0x1",
2221 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE",
2222 "MSRIndex": "0x1A6",
2223 "SampleAfterValue": "100000",
2224 "BriefDescription": "Offcore demand code reads satisfied by a remote cache",
2225 "Offcore": "1"
2226 },
2227 {
2228 "EventCode": "0xB7",
2229 "MSRValue": "0x3804",
2230 "Counter": "2",
2231 "UMask": "0x1",
2232 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_DRAM",
2233 "MSRIndex": "0x1A6",
2234 "SampleAfterValue": "100000",
2235 "BriefDescription": "Offcore demand code reads satisfied by a remote cache or remote DRAM",
2236 "Offcore": "1"
2237 },
2238 {
2239 "EventCode": "0xB7",
2240 "MSRValue": "0x1004",
2241 "Counter": "2",
2242 "UMask": "0x1",
2243 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HIT",
2244 "MSRIndex": "0x1A6",
2245 "SampleAfterValue": "100000",
2246 "BriefDescription": "Offcore demand code reads that HIT in a remote cache",
2247 "Offcore": "1"
2248 },
2249 {
2250 "EventCode": "0xB7",
2251 "MSRValue": "0x804",
2252 "Counter": "2",
2253 "UMask": "0x1",
2254 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HITM",
2255 "MSRIndex": "0x1A6",
2256 "SampleAfterValue": "100000",
2257 "BriefDescription": "Offcore demand code reads that HITM in a remote cache",
2258 "Offcore": "1"
2259 },
2260 {
2261 "EventCode": "0xB7",
2262 "MSRValue": "0x7F02",
2263 "Counter": "2",
2264 "UMask": "0x1",
2265 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_CACHE_DRAM",
2266 "MSRIndex": "0x1A6",
2267 "SampleAfterValue": "100000",
2268 "BriefDescription": "Offcore demand RFO requests satisfied by any cache or DRAM.",
2269 "Offcore": "1"
2270 },
2271 {
2272 "EventCode": "0xB7",
2273 "MSRValue": "0xFF02",
2274 "Counter": "2",
2275 "UMask": "0x1",
2276 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LOCATION",
2277 "MSRIndex": "0x1A6",
2278 "SampleAfterValue": "100000",
2279 "BriefDescription": "All offcore demand RFO requests",
2280 "Offcore": "1"
2281 },
2282 {
2283 "EventCode": "0xB7",
2284 "MSRValue": "0x8002",
2285 "Counter": "2",
2286 "UMask": "0x1",
2287 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.IO_CSR_MMIO",
2288 "MSRIndex": "0x1A6",
2289 "SampleAfterValue": "100000",
2290 "BriefDescription": "Offcore demand RFO requests satisfied by the IO, CSR, MMIO unit",
2291 "Offcore": "1"
2292 },
2293 {
2294 "EventCode": "0xB7",
2295 "MSRValue": "0x102",
2296 "Counter": "2",
2297 "UMask": "0x1",
2298 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_NO_OTHER_CORE",
2299 "MSRIndex": "0x1A6",
2300 "SampleAfterValue": "100000",
2301 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and not found in a sibling core",
2302 "Offcore": "1"
2303 },
2304 {
2305 "EventCode": "0xB7",
2306 "MSRValue": "0x202",
2307 "Counter": "2",
2308 "UMask": "0x1",
2309 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HIT",
2310 "MSRIndex": "0x1A6",
2311 "SampleAfterValue": "100000",
2312 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HIT in a sibling core",
2313 "Offcore": "1"
2314 },
2315 {
2316 "EventCode": "0xB7",
2317 "MSRValue": "0x402",
2318 "Counter": "2",
2319 "UMask": "0x1",
2320 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HITM",
2321 "MSRIndex": "0x1A6",
2322 "SampleAfterValue": "100000",
2323 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HITM in a sibling core",
2324 "Offcore": "1"
2325 },
2326 {
2327 "EventCode": "0xB7",
2328 "MSRValue": "0x702",
2329 "Counter": "2",
2330 "UMask": "0x1",
2331 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE",
2332 "MSRIndex": "0x1A6",
2333 "SampleAfterValue": "100000",
2334 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC",
2335 "Offcore": "1"
2336 },
2337 {
2338 "EventCode": "0xB7",
2339 "MSRValue": "0x4702",
2340 "Counter": "2",
2341 "UMask": "0x1",
2342 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE_DRAM",
2343 "MSRIndex": "0x1A6",
2344 "SampleAfterValue": "100000",
2345 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC or local DRAM",
2346 "Offcore": "1"
2347 },
2348 {
2349 "EventCode": "0xB7",
2350 "MSRValue": "0x1802",
2351 "Counter": "2",
2352 "UMask": "0x1",
2353 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE",
2354 "MSRIndex": "0x1A6",
2355 "SampleAfterValue": "100000",
2356 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache",
2357 "Offcore": "1"
2358 },
2359 {
2360 "EventCode": "0xB7",
2361 "MSRValue": "0x3802",
2362 "Counter": "2",
2363 "UMask": "0x1",
2364 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_DRAM",
2365 "MSRIndex": "0x1A6",
2366 "SampleAfterValue": "100000",
2367 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache or remote DRAM",
2368 "Offcore": "1"
2369 },
2370 {
2371 "EventCode": "0xB7",
2372 "MSRValue": "0x1002",
2373 "Counter": "2",
2374 "UMask": "0x1",
2375 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HIT",
2376 "MSRIndex": "0x1A6",
2377 "SampleAfterValue": "100000",
2378 "BriefDescription": "Offcore demand RFO requests that HIT in a remote cache",
2379 "Offcore": "1"
2380 },
2381 {
2382 "EventCode": "0xB7",
2383 "MSRValue": "0x802",
2384 "Counter": "2",
2385 "UMask": "0x1",
2386 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HITM",
2387 "MSRIndex": "0x1A6",
2388 "SampleAfterValue": "100000",
2389 "BriefDescription": "Offcore demand RFO requests that HITM in a remote cache",
2390 "Offcore": "1"
2391 },
2392 {
2393 "EventCode": "0xB7",
2394 "MSRValue": "0x7F80",
2395 "Counter": "2",
2396 "UMask": "0x1",
2397 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_CACHE_DRAM",
2398 "MSRIndex": "0x1A6",
2399 "SampleAfterValue": "100000",
2400 "BriefDescription": "Offcore other requests satisfied by any cache or DRAM.",
2401 "Offcore": "1"
2402 },
2403 {
2404 "EventCode": "0xB7",
2405 "MSRValue": "0xFF80",
2406 "Counter": "2",
2407 "UMask": "0x1",
2408 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LOCATION",
2409 "MSRIndex": "0x1A6",
2410 "SampleAfterValue": "100000",
2411 "BriefDescription": "All offcore other requests",
2412 "Offcore": "1"
2413 },
2414 {
2415 "EventCode": "0xB7",
2416 "MSRValue": "0x8080",
2417 "Counter": "2",
2418 "UMask": "0x1",
2419 "EventName": "OFFCORE_RESPONSE.OTHER.IO_CSR_MMIO",
2420 "MSRIndex": "0x1A6",
2421 "SampleAfterValue": "100000",
2422 "BriefDescription": "Offcore other requests satisfied by the IO, CSR, MMIO unit",
2423 "Offcore": "1"
2424 },
2425 {
2426 "EventCode": "0xB7",
2427 "MSRValue": "0x180",
2428 "Counter": "2",
2429 "UMask": "0x1",
2430 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_NO_OTHER_CORE",
2431 "MSRIndex": "0x1A6",
2432 "SampleAfterValue": "100000",
2433 "BriefDescription": "Offcore other requests satisfied by the LLC and not found in a sibling core",
2434 "Offcore": "1"
2435 },
2436 {
2437 "EventCode": "0xB7",
2438 "MSRValue": "0x280",
2439 "Counter": "2",
2440 "UMask": "0x1",
2441 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HIT",
2442 "MSRIndex": "0x1A6",
2443 "SampleAfterValue": "100000",
2444 "BriefDescription": "Offcore other requests satisfied by the LLC and HIT in a sibling core",
2445 "Offcore": "1"
2446 },
2447 {
2448 "EventCode": "0xB7",
2449 "MSRValue": "0x480",
2450 "Counter": "2",
2451 "UMask": "0x1",
2452 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HITM",
2453 "MSRIndex": "0x1A6",
2454 "SampleAfterValue": "100000",
2455 "BriefDescription": "Offcore other requests satisfied by the LLC and HITM in a sibling core",
2456 "Offcore": "1"
2457 },
2458 {
2459 "EventCode": "0xB7",
2460 "MSRValue": "0x780",
2461 "Counter": "2",
2462 "UMask": "0x1",
2463 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE",
2464 "MSRIndex": "0x1A6",
2465 "SampleAfterValue": "100000",
2466 "BriefDescription": "Offcore other requests satisfied by the LLC",
2467 "Offcore": "1"
2468 },
2469 {
2470 "EventCode": "0xB7",
2471 "MSRValue": "0x4780",
2472 "Counter": "2",
2473 "UMask": "0x1",
2474 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE_DRAM",
2475 "MSRIndex": "0x1A6",
2476 "SampleAfterValue": "100000",
2477 "BriefDescription": "Offcore other requests satisfied by the LLC or local DRAM",
2478 "Offcore": "1"
2479 },
2480 {
2481 "EventCode": "0xB7",
2482 "MSRValue": "0x1880",
2483 "Counter": "2",
2484 "UMask": "0x1",
2485 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE",
2486 "MSRIndex": "0x1A6",
2487 "SampleAfterValue": "100000",
2488 "BriefDescription": "Offcore other requests satisfied by a remote cache",
2489 "Offcore": "1"
2490 },
2491 {
2492 "EventCode": "0xB7",
2493 "MSRValue": "0x3880",
2494 "Counter": "2",
2495 "UMask": "0x1",
2496 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_DRAM",
2497 "MSRIndex": "0x1A6",
2498 "SampleAfterValue": "100000",
2499 "BriefDescription": "Offcore other requests satisfied by a remote cache or remote DRAM",
2500 "Offcore": "1"
2501 },
2502 {
2503 "EventCode": "0xB7",
2504 "MSRValue": "0x1080",
2505 "Counter": "2",
2506 "UMask": "0x1",
2507 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HIT",
2508 "MSRIndex": "0x1A6",
2509 "SampleAfterValue": "100000",
2510 "BriefDescription": "Offcore other requests that HIT in a remote cache",
2511 "Offcore": "1"
2512 },
2513 {
2514 "EventCode": "0xB7",
2515 "MSRValue": "0x880",
2516 "Counter": "2",
2517 "UMask": "0x1",
2518 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HITM",
2519 "MSRIndex": "0x1A6",
2520 "SampleAfterValue": "100000",
2521 "BriefDescription": "Offcore other requests that HITM in a remote cache",
2522 "Offcore": "1"
2523 },
2524 {
2525 "EventCode": "0xB7",
2526 "MSRValue": "0x7F30",
2527 "Counter": "2",
2528 "UMask": "0x1",
2529 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_CACHE_DRAM",
2530 "MSRIndex": "0x1A6",
2531 "SampleAfterValue": "100000",
2532 "BriefDescription": "Offcore prefetch data requests satisfied by any cache or DRAM",
2533 "Offcore": "1"
2534 },
2535 {
2536 "EventCode": "0xB7",
2537 "MSRValue": "0xFF30",
2538 "Counter": "2",
2539 "UMask": "0x1",
2540 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LOCATION",
2541 "MSRIndex": "0x1A6",
2542 "SampleAfterValue": "100000",
2543 "BriefDescription": "All offcore prefetch data requests",
2544 "Offcore": "1"
2545 },
2546 {
2547 "EventCode": "0xB7",
2548 "MSRValue": "0x8030",
2549 "Counter": "2",
2550 "UMask": "0x1",
2551 "EventName": "OFFCORE_RESPONSE.PF_DATA.IO_CSR_MMIO",
2552 "MSRIndex": "0x1A6",
2553 "SampleAfterValue": "100000",
2554 "BriefDescription": "Offcore prefetch data requests satisfied by the IO, CSR, MMIO unit.",
2555 "Offcore": "1"
2556 },
2557 {
2558 "EventCode": "0xB7",
2559 "MSRValue": "0x130",
2560 "Counter": "2",
2561 "UMask": "0x1",
2562 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_NO_OTHER_CORE",
2563 "MSRIndex": "0x1A6",
2564 "SampleAfterValue": "100000",
2565 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and not found in a sibling core",
2566 "Offcore": "1"
2567 },
2568 {
2569 "EventCode": "0xB7",
2570 "MSRValue": "0x230",
2571 "Counter": "2",
2572 "UMask": "0x1",
2573 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HIT",
2574 "MSRIndex": "0x1A6",
2575 "SampleAfterValue": "100000",
2576 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HIT in a sibling core",
2577 "Offcore": "1"
2578 },
2579 {
2580 "EventCode": "0xB7",
2581 "MSRValue": "0x430",
2582 "Counter": "2",
2583 "UMask": "0x1",
2584 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HITM",
2585 "MSRIndex": "0x1A6",
2586 "SampleAfterValue": "100000",
2587 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HITM in a sibling core",
2588 "Offcore": "1"
2589 },
2590 {
2591 "EventCode": "0xB7",
2592 "MSRValue": "0x730",
2593 "Counter": "2",
2594 "UMask": "0x1",
2595 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE",
2596 "MSRIndex": "0x1A6",
2597 "SampleAfterValue": "100000",
2598 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC",
2599 "Offcore": "1"
2600 },
2601 {
2602 "EventCode": "0xB7",
2603 "MSRValue": "0x4730",
2604 "Counter": "2",
2605 "UMask": "0x1",
2606 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE_DRAM",
2607 "MSRIndex": "0x1A6",
2608 "SampleAfterValue": "100000",
2609 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC or local DRAM",
2610 "Offcore": "1"
2611 },
2612 {
2613 "EventCode": "0xB7",
2614 "MSRValue": "0x1830",
2615 "Counter": "2",
2616 "UMask": "0x1",
2617 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE",
2618 "MSRIndex": "0x1A6",
2619 "SampleAfterValue": "100000",
2620 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache",
2621 "Offcore": "1"
2622 },
2623 {
2624 "EventCode": "0xB7",
2625 "MSRValue": "0x3830",
2626 "Counter": "2",
2627 "UMask": "0x1",
2628 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_DRAM",
2629 "MSRIndex": "0x1A6",
2630 "SampleAfterValue": "100000",
2631 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache or remote DRAM",
2632 "Offcore": "1"
2633 },
2634 {
2635 "EventCode": "0xB7",
2636 "MSRValue": "0x1030",
2637 "Counter": "2",
2638 "UMask": "0x1",
2639 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HIT",
2640 "MSRIndex": "0x1A6",
2641 "SampleAfterValue": "100000",
2642 "BriefDescription": "Offcore prefetch data requests that HIT in a remote cache",
2643 "Offcore": "1"
2644 },
2645 {
2646 "EventCode": "0xB7",
2647 "MSRValue": "0x830",
2648 "Counter": "2",
2649 "UMask": "0x1",
2650 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HITM",
2651 "MSRIndex": "0x1A6",
2652 "SampleAfterValue": "100000",
2653 "BriefDescription": "Offcore prefetch data requests that HITM in a remote cache",
2654 "Offcore": "1"
2655 },
2656 {
2657 "EventCode": "0xB7",
2658 "MSRValue": "0x7F10",
2659 "Counter": "2",
2660 "UMask": "0x1",
2661 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_CACHE_DRAM",
2662 "MSRIndex": "0x1A6",
2663 "SampleAfterValue": "100000",
2664 "BriefDescription": "Offcore prefetch data reads satisfied by any cache or DRAM.",
2665 "Offcore": "1"
2666 },
2667 {
2668 "EventCode": "0xB7",
2669 "MSRValue": "0xFF10",
2670 "Counter": "2",
2671 "UMask": "0x1",
2672 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LOCATION",
2673 "MSRIndex": "0x1A6",
2674 "SampleAfterValue": "100000",
2675 "BriefDescription": "All offcore prefetch data reads",
2676 "Offcore": "1"
2677 },
2678 {
2679 "EventCode": "0xB7",
2680 "MSRValue": "0x8010",
2681 "Counter": "2",
2682 "UMask": "0x1",
2683 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.IO_CSR_MMIO",
2684 "MSRIndex": "0x1A6",
2685 "SampleAfterValue": "100000",
2686 "BriefDescription": "Offcore prefetch data reads satisfied by the IO, CSR, MMIO unit",
2687 "Offcore": "1"
2688 },
2689 {
2690 "EventCode": "0xB7",
2691 "MSRValue": "0x110",
2692 "Counter": "2",
2693 "UMask": "0x1",
2694 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2695 "MSRIndex": "0x1A6",
2696 "SampleAfterValue": "100000",
2697 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and not found in a sibling core",
2698 "Offcore": "1"
2699 },
2700 {
2701 "EventCode": "0xB7",
2702 "MSRValue": "0x210",
2703 "Counter": "2",
2704 "UMask": "0x1",
2705 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2706 "MSRIndex": "0x1A6",
2707 "SampleAfterValue": "100000",
2708 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HIT in a sibling core",
2709 "Offcore": "1"
2710 },
2711 {
2712 "EventCode": "0xB7",
2713 "MSRValue": "0x410",
2714 "Counter": "2",
2715 "UMask": "0x1",
2716 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2717 "MSRIndex": "0x1A6",
2718 "SampleAfterValue": "100000",
2719 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HITM in a sibling core",
2720 "Offcore": "1"
2721 },
2722 {
2723 "EventCode": "0xB7",
2724 "MSRValue": "0x710",
2725 "Counter": "2",
2726 "UMask": "0x1",
2727 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE",
2728 "MSRIndex": "0x1A6",
2729 "SampleAfterValue": "100000",
2730 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC",
2731 "Offcore": "1"
2732 },
2733 {
2734 "EventCode": "0xB7",
2735 "MSRValue": "0x4710",
2736 "Counter": "2",
2737 "UMask": "0x1",
2738 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE_DRAM",
2739 "MSRIndex": "0x1A6",
2740 "SampleAfterValue": "100000",
2741 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC or local DRAM",
2742 "Offcore": "1"
2743 },
2744 {
2745 "EventCode": "0xB7",
2746 "MSRValue": "0x1810",
2747 "Counter": "2",
2748 "UMask": "0x1",
2749 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE",
2750 "MSRIndex": "0x1A6",
2751 "SampleAfterValue": "100000",
2752 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache",
2753 "Offcore": "1"
2754 },
2755 {
2756 "EventCode": "0xB7",
2757 "MSRValue": "0x3810",
2758 "Counter": "2",
2759 "UMask": "0x1",
2760 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_DRAM",
2761 "MSRIndex": "0x1A6",
2762 "SampleAfterValue": "100000",
2763 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache or remote DRAM",
2764 "Offcore": "1"
2765 },
2766 {
2767 "EventCode": "0xB7",
2768 "MSRValue": "0x1010",
2769 "Counter": "2",
2770 "UMask": "0x1",
2771 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HIT",
2772 "MSRIndex": "0x1A6",
2773 "SampleAfterValue": "100000",
2774 "BriefDescription": "Offcore prefetch data reads that HIT in a remote cache",
2775 "Offcore": "1"
2776 },
2777 {
2778 "EventCode": "0xB7",
2779 "MSRValue": "0x810",
2780 "Counter": "2",
2781 "UMask": "0x1",
2782 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HITM",
2783 "MSRIndex": "0x1A6",
2784 "SampleAfterValue": "100000",
2785 "BriefDescription": "Offcore prefetch data reads that HITM in a remote cache",
2786 "Offcore": "1"
2787 },
2788 {
2789 "EventCode": "0xB7",
2790 "MSRValue": "0x7F40",
2791 "Counter": "2",
2792 "UMask": "0x1",
2793 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_CACHE_DRAM",
2794 "MSRIndex": "0x1A6",
2795 "SampleAfterValue": "100000",
2796 "BriefDescription": "Offcore prefetch code reads satisfied by any cache or DRAM.",
2797 "Offcore": "1"
2798 },
2799 {
2800 "EventCode": "0xB7",
2801 "MSRValue": "0xFF40",
2802 "Counter": "2",
2803 "UMask": "0x1",
2804 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LOCATION",
2805 "MSRIndex": "0x1A6",
2806 "SampleAfterValue": "100000",
2807 "BriefDescription": "All offcore prefetch code reads",
2808 "Offcore": "1"
2809 },
2810 {
2811 "EventCode": "0xB7",
2812 "MSRValue": "0x8040",
2813 "Counter": "2",
2814 "UMask": "0x1",
2815 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.IO_CSR_MMIO",
2816 "MSRIndex": "0x1A6",
2817 "SampleAfterValue": "100000",
2818 "BriefDescription": "Offcore prefetch code reads satisfied by the IO, CSR, MMIO unit",
2819 "Offcore": "1"
2820 },
2821 {
2822 "EventCode": "0xB7",
2823 "MSRValue": "0x140",
2824 "Counter": "2",
2825 "UMask": "0x1",
2826 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_NO_OTHER_CORE",
2827 "MSRIndex": "0x1A6",
2828 "SampleAfterValue": "100000",
2829 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and not found in a sibling core",
2830 "Offcore": "1"
2831 },
2832 {
2833 "EventCode": "0xB7",
2834 "MSRValue": "0x240",
2835 "Counter": "2",
2836 "UMask": "0x1",
2837 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2838 "MSRIndex": "0x1A6",
2839 "SampleAfterValue": "100000",
2840 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HIT in a sibling core",
2841 "Offcore": "1"
2842 },
2843 {
2844 "EventCode": "0xB7",
2845 "MSRValue": "0x440",
2846 "Counter": "2",
2847 "UMask": "0x1",
2848 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2849 "MSRIndex": "0x1A6",
2850 "SampleAfterValue": "100000",
2851 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HITM in a sibling core",
2852 "Offcore": "1"
2853 },
2854 {
2855 "EventCode": "0xB7",
2856 "MSRValue": "0x740",
2857 "Counter": "2",
2858 "UMask": "0x1",
2859 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE",
2860 "MSRIndex": "0x1A6",
2861 "SampleAfterValue": "100000",
2862 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC",
2863 "Offcore": "1"
2864 },
2865 {
2866 "EventCode": "0xB7",
2867 "MSRValue": "0x4740",
2868 "Counter": "2",
2869 "UMask": "0x1",
2870 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE_DRAM",
2871 "MSRIndex": "0x1A6",
2872 "SampleAfterValue": "100000",
2873 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC or local DRAM",
2874 "Offcore": "1"
2875 },
2876 {
2877 "EventCode": "0xB7",
2878 "MSRValue": "0x1840",
2879 "Counter": "2",
2880 "UMask": "0x1",
2881 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE",
2882 "MSRIndex": "0x1A6",
2883 "SampleAfterValue": "100000",
2884 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache",
2885 "Offcore": "1"
2886 },
2887 {
2888 "EventCode": "0xB7",
2889 "MSRValue": "0x3840",
2890 "Counter": "2",
2891 "UMask": "0x1",
2892 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_DRAM",
2893 "MSRIndex": "0x1A6",
2894 "SampleAfterValue": "100000",
2895 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache or remote DRAM",
2896 "Offcore": "1"
2897 },
2898 {
2899 "EventCode": "0xB7",
2900 "MSRValue": "0x1040",
2901 "Counter": "2",
2902 "UMask": "0x1",
2903 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HIT",
2904 "MSRIndex": "0x1A6",
2905 "SampleAfterValue": "100000",
2906 "BriefDescription": "Offcore prefetch code reads that HIT in a remote cache",
2907 "Offcore": "1"
2908 },
2909 {
2910 "EventCode": "0xB7",
2911 "MSRValue": "0x840",
2912 "Counter": "2",
2913 "UMask": "0x1",
2914 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HITM",
2915 "MSRIndex": "0x1A6",
2916 "SampleAfterValue": "100000",
2917 "BriefDescription": "Offcore prefetch code reads that HITM in a remote cache",
2918 "Offcore": "1"
2919 },
2920 {
2921 "EventCode": "0xB7",
2922 "MSRValue": "0x7F20",
2923 "Counter": "2",
2924 "UMask": "0x1",
2925 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_CACHE_DRAM",
2926 "MSRIndex": "0x1A6",
2927 "SampleAfterValue": "100000",
2928 "BriefDescription": "Offcore prefetch RFO requests satisfied by any cache or DRAM.",
2929 "Offcore": "1"
2930 },
2931 {
2932 "EventCode": "0xB7",
2933 "MSRValue": "0xFF20",
2934 "Counter": "2",
2935 "UMask": "0x1",
2936 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LOCATION",
2937 "MSRIndex": "0x1A6",
2938 "SampleAfterValue": "100000",
2939 "BriefDescription": "All offcore prefetch RFO requests",
2940 "Offcore": "1"
2941 },
2942 {
2943 "EventCode": "0xB7",
2944 "MSRValue": "0x8020",
2945 "Counter": "2",
2946 "UMask": "0x1",
2947 "EventName": "OFFCORE_RESPONSE.PF_RFO.IO_CSR_MMIO",
2948 "MSRIndex": "0x1A6",
2949 "SampleAfterValue": "100000",
2950 "BriefDescription": "Offcore prefetch RFO requests satisfied by the IO, CSR, MMIO unit",
2951 "Offcore": "1"
2952 },
2953 {
2954 "EventCode": "0xB7",
2955 "MSRValue": "0x120",
2956 "Counter": "2",
2957 "UMask": "0x1",
2958 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_NO_OTHER_CORE",
2959 "MSRIndex": "0x1A6",
2960 "SampleAfterValue": "100000",
2961 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and not found in a sibling core",
2962 "Offcore": "1"
2963 },
2964 {
2965 "EventCode": "0xB7",
2966 "MSRValue": "0x220",
2967 "Counter": "2",
2968 "UMask": "0x1",
2969 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HIT",
2970 "MSRIndex": "0x1A6",
2971 "SampleAfterValue": "100000",
2972 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HIT in a sibling core",
2973 "Offcore": "1"
2974 },
2975 {
2976 "EventCode": "0xB7",
2977 "MSRValue": "0x420",
2978 "Counter": "2",
2979 "UMask": "0x1",
2980 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HITM",
2981 "MSRIndex": "0x1A6",
2982 "SampleAfterValue": "100000",
2983 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HITM in a sibling core",
2984 "Offcore": "1"
2985 },
2986 {
2987 "EventCode": "0xB7",
2988 "MSRValue": "0x720",
2989 "Counter": "2",
2990 "UMask": "0x1",
2991 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE",
2992 "MSRIndex": "0x1A6",
2993 "SampleAfterValue": "100000",
2994 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC",
2995 "Offcore": "1"
2996 },
2997 {
2998 "EventCode": "0xB7",
2999 "MSRValue": "0x4720",
3000 "Counter": "2",
3001 "UMask": "0x1",
3002 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE_DRAM",
3003 "MSRIndex": "0x1A6",
3004 "SampleAfterValue": "100000",
3005 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC or local DRAM",
3006 "Offcore": "1"
3007 },
3008 {
3009 "EventCode": "0xB7",
3010 "MSRValue": "0x1820",
3011 "Counter": "2",
3012 "UMask": "0x1",
3013 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE",
3014 "MSRIndex": "0x1A6",
3015 "SampleAfterValue": "100000",
3016 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache",
3017 "Offcore": "1"
3018 },
3019 {
3020 "EventCode": "0xB7",
3021 "MSRValue": "0x3820",
3022 "Counter": "2",
3023 "UMask": "0x1",
3024 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_DRAM",
3025 "MSRIndex": "0x1A6",
3026 "SampleAfterValue": "100000",
3027 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache or remote DRAM",
3028 "Offcore": "1"
3029 },
3030 {
3031 "EventCode": "0xB7",
3032 "MSRValue": "0x1020",
3033 "Counter": "2",
3034 "UMask": "0x1",
3035 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HIT",
3036 "MSRIndex": "0x1A6",
3037 "SampleAfterValue": "100000",
3038 "BriefDescription": "Offcore prefetch RFO requests that HIT in a remote cache",
3039 "Offcore": "1"
3040 },
3041 {
3042 "EventCode": "0xB7",
3043 "MSRValue": "0x820",
3044 "Counter": "2",
3045 "UMask": "0x1",
3046 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HITM",
3047 "MSRIndex": "0x1A6",
3048 "SampleAfterValue": "100000",
3049 "BriefDescription": "Offcore prefetch RFO requests that HITM in a remote cache",
3050 "Offcore": "1"
3051 },
3052 {
3053 "EventCode": "0xB7",
3054 "MSRValue": "0x7F70",
3055 "Counter": "2",
3056 "UMask": "0x1",
3057 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_CACHE_DRAM",
3058 "MSRIndex": "0x1A6",
3059 "SampleAfterValue": "100000",
3060 "BriefDescription": "Offcore prefetch requests satisfied by any cache or DRAM.",
3061 "Offcore": "1"
3062 },
3063 {
3064 "EventCode": "0xB7",
3065 "MSRValue": "0xFF70",
3066 "Counter": "2",
3067 "UMask": "0x1",
3068 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LOCATION",
3069 "MSRIndex": "0x1A6",
3070 "SampleAfterValue": "100000",
3071 "BriefDescription": "All offcore prefetch requests",
3072 "Offcore": "1"
3073 },
3074 {
3075 "EventCode": "0xB7",
3076 "MSRValue": "0x8070",
3077 "Counter": "2",
3078 "UMask": "0x1",
3079 "EventName": "OFFCORE_RESPONSE.PREFETCH.IO_CSR_MMIO",
3080 "MSRIndex": "0x1A6",
3081 "SampleAfterValue": "100000",
3082 "BriefDescription": "Offcore prefetch requests satisfied by the IO, CSR, MMIO unit",
3083 "Offcore": "1"
3084 },
3085 {
3086 "EventCode": "0xB7",
3087 "MSRValue": "0x170",
3088 "Counter": "2",
3089 "UMask": "0x1",
3090 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_NO_OTHER_CORE",
3091 "MSRIndex": "0x1A6",
3092 "SampleAfterValue": "100000",
3093 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and not found in a sibling core",
3094 "Offcore": "1"
3095 },
3096 {
3097 "EventCode": "0xB7",
3098 "MSRValue": "0x270",
3099 "Counter": "2",
3100 "UMask": "0x1",
3101 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HIT",
3102 "MSRIndex": "0x1A6",
3103 "SampleAfterValue": "100000",
3104 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HIT in a sibling core",
3105 "Offcore": "1"
3106 },
3107 {
3108 "EventCode": "0xB7",
3109 "MSRValue": "0x470",
3110 "Counter": "2",
3111 "UMask": "0x1",
3112 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HITM",
3113 "MSRIndex": "0x1A6",
3114 "SampleAfterValue": "100000",
3115 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HITM in a sibling core",
3116 "Offcore": "1"
3117 },
3118 {
3119 "EventCode": "0xB7",
3120 "MSRValue": "0x770",
3121 "Counter": "2",
3122 "UMask": "0x1",
3123 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE",
3124 "MSRIndex": "0x1A6",
3125 "SampleAfterValue": "100000",
3126 "BriefDescription": "Offcore prefetch requests satisfied by the LLC",
3127 "Offcore": "1"
3128 },
3129 {
3130 "EventCode": "0xB7",
3131 "MSRValue": "0x4770",
3132 "Counter": "2",
3133 "UMask": "0x1",
3134 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE_DRAM",
3135 "MSRIndex": "0x1A6",
3136 "SampleAfterValue": "100000",
3137 "BriefDescription": "Offcore prefetch requests satisfied by the LLC or local DRAM",
3138 "Offcore": "1"
3139 },
3140 {
3141 "EventCode": "0xB7",
3142 "MSRValue": "0x1870",
3143 "Counter": "2",
3144 "UMask": "0x1",
3145 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE",
3146 "MSRIndex": "0x1A6",
3147 "SampleAfterValue": "100000",
3148 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache",
3149 "Offcore": "1"
3150 },
3151 {
3152 "EventCode": "0xB7",
3153 "MSRValue": "0x3870",
3154 "Counter": "2",
3155 "UMask": "0x1",
3156 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_DRAM",
3157 "MSRIndex": "0x1A6",
3158 "SampleAfterValue": "100000",
3159 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache or remote DRAM",
3160 "Offcore": "1"
3161 },
3162 {
3163 "EventCode": "0xB7",
3164 "MSRValue": "0x1070",
3165 "Counter": "2",
3166 "UMask": "0x1",
3167 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HIT",
3168 "MSRIndex": "0x1A6",
3169 "SampleAfterValue": "100000",
3170 "BriefDescription": "Offcore prefetch requests that HIT in a remote cache",
3171 "Offcore": "1"
3172 },
3173 {
3174 "EventCode": "0xB7",
3175 "MSRValue": "0x870",
3176 "Counter": "2",
3177 "UMask": "0x1",
3178 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HITM",
3179 "MSRIndex": "0x1A6",
3180 "SampleAfterValue": "100000",
3181 "BriefDescription": "Offcore prefetch requests that HITM in a remote cache",
3182 "Offcore": "1"
3183 }
3184] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemex/floating-point.json b/tools/perf/pmu-events/arch/x86/nehalemex/floating-point.json
new file mode 100644
index 000000000000..7d2f71a9dee3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemex/floating-point.json
@@ -0,0 +1,229 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xF7",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "FP_ASSIST.ALL",
8 "SampleAfterValue": "20000",
9 "BriefDescription": "X87 Floating point assists (Precise Event)"
10 },
11 {
12 "PEBS": "1",
13 "EventCode": "0xF7",
14 "Counter": "0,1,2,3",
15 "UMask": "0x4",
16 "EventName": "FP_ASSIST.INPUT",
17 "SampleAfterValue": "20000",
18 "BriefDescription": "X87 Floating poiint assists for invalid input value (Precise Event)"
19 },
20 {
21 "PEBS": "1",
22 "EventCode": "0xF7",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "FP_ASSIST.OUTPUT",
26 "SampleAfterValue": "20000",
27 "BriefDescription": "X87 Floating point assists for invalid output value (Precise Event)"
28 },
29 {
30 "EventCode": "0x10",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "FP_COMP_OPS_EXE.MMX",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "MMX Uops"
36 },
37 {
38 "EventCode": "0x10",
39 "Counter": "0,1,2,3",
40 "UMask": "0x80",
41 "EventName": "FP_COMP_OPS_EXE.SSE_DOUBLE_PRECISION",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "SSE* FP double precision Uops"
44 },
45 {
46 "EventCode": "0x10",
47 "Counter": "0,1,2,3",
48 "UMask": "0x4",
49 "EventName": "FP_COMP_OPS_EXE.SSE_FP",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "SSE and SSE2 FP Uops"
52 },
53 {
54 "EventCode": "0x10",
55 "Counter": "0,1,2,3",
56 "UMask": "0x10",
57 "EventName": "FP_COMP_OPS_EXE.SSE_FP_PACKED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "SSE FP packed Uops"
60 },
61 {
62 "EventCode": "0x10",
63 "Counter": "0,1,2,3",
64 "UMask": "0x20",
65 "EventName": "FP_COMP_OPS_EXE.SSE_FP_SCALAR",
66 "SampleAfterValue": "2000000",
67 "BriefDescription": "SSE FP scalar Uops"
68 },
69 {
70 "EventCode": "0x10",
71 "Counter": "0,1,2,3",
72 "UMask": "0x40",
73 "EventName": "FP_COMP_OPS_EXE.SSE_SINGLE_PRECISION",
74 "SampleAfterValue": "2000000",
75 "BriefDescription": "SSE* FP single precision Uops"
76 },
77 {
78 "EventCode": "0x10",
79 "Counter": "0,1,2,3",
80 "UMask": "0x8",
81 "EventName": "FP_COMP_OPS_EXE.SSE2_INTEGER",
82 "SampleAfterValue": "2000000",
83 "BriefDescription": "SSE2 integer Uops"
84 },
85 {
86 "EventCode": "0x10",
87 "Counter": "0,1,2,3",
88 "UMask": "0x1",
89 "EventName": "FP_COMP_OPS_EXE.X87",
90 "SampleAfterValue": "2000000",
91 "BriefDescription": "Computational floating-point operations executed"
92 },
93 {
94 "EventCode": "0xCC",
95 "Counter": "0,1,2,3",
96 "UMask": "0x3",
97 "EventName": "FP_MMX_TRANS.ANY",
98 "SampleAfterValue": "2000000",
99 "BriefDescription": "All Floating Point to and from MMX transitions"
100 },
101 {
102 "EventCode": "0xCC",
103 "Counter": "0,1,2,3",
104 "UMask": "0x1",
105 "EventName": "FP_MMX_TRANS.TO_FP",
106 "SampleAfterValue": "2000000",
107 "BriefDescription": "Transitions from MMX to Floating Point instructions"
108 },
109 {
110 "EventCode": "0xCC",
111 "Counter": "0,1,2,3",
112 "UMask": "0x2",
113 "EventName": "FP_MMX_TRANS.TO_MMX",
114 "SampleAfterValue": "2000000",
115 "BriefDescription": "Transitions from Floating Point to MMX instructions"
116 },
117 {
118 "EventCode": "0x12",
119 "Counter": "0,1,2,3",
120 "UMask": "0x4",
121 "EventName": "SIMD_INT_128.PACK",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "128 bit SIMD integer pack operations"
124 },
125 {
126 "EventCode": "0x12",
127 "Counter": "0,1,2,3",
128 "UMask": "0x20",
129 "EventName": "SIMD_INT_128.PACKED_ARITH",
130 "SampleAfterValue": "200000",
131 "BriefDescription": "128 bit SIMD integer arithmetic operations"
132 },
133 {
134 "EventCode": "0x12",
135 "Counter": "0,1,2,3",
136 "UMask": "0x10",
137 "EventName": "SIMD_INT_128.PACKED_LOGICAL",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "128 bit SIMD integer logical operations"
140 },
141 {
142 "EventCode": "0x12",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1",
145 "EventName": "SIMD_INT_128.PACKED_MPY",
146 "SampleAfterValue": "200000",
147 "BriefDescription": "128 bit SIMD integer multiply operations"
148 },
149 {
150 "EventCode": "0x12",
151 "Counter": "0,1,2,3",
152 "UMask": "0x2",
153 "EventName": "SIMD_INT_128.PACKED_SHIFT",
154 "SampleAfterValue": "200000",
155 "BriefDescription": "128 bit SIMD integer shift operations"
156 },
157 {
158 "EventCode": "0x12",
159 "Counter": "0,1,2,3",
160 "UMask": "0x40",
161 "EventName": "SIMD_INT_128.SHUFFLE_MOVE",
162 "SampleAfterValue": "200000",
163 "BriefDescription": "128 bit SIMD integer shuffle/move operations"
164 },
165 {
166 "EventCode": "0x12",
167 "Counter": "0,1,2,3",
168 "UMask": "0x8",
169 "EventName": "SIMD_INT_128.UNPACK",
170 "SampleAfterValue": "200000",
171 "BriefDescription": "128 bit SIMD integer unpack operations"
172 },
173 {
174 "EventCode": "0xFD",
175 "Counter": "0,1,2,3",
176 "UMask": "0x4",
177 "EventName": "SIMD_INT_64.PACK",
178 "SampleAfterValue": "200000",
179 "BriefDescription": "SIMD integer 64 bit pack operations"
180 },
181 {
182 "EventCode": "0xFD",
183 "Counter": "0,1,2,3",
184 "UMask": "0x20",
185 "EventName": "SIMD_INT_64.PACKED_ARITH",
186 "SampleAfterValue": "200000",
187 "BriefDescription": "SIMD integer 64 bit arithmetic operations"
188 },
189 {
190 "EventCode": "0xFD",
191 "Counter": "0,1,2,3",
192 "UMask": "0x10",
193 "EventName": "SIMD_INT_64.PACKED_LOGICAL",
194 "SampleAfterValue": "200000",
195 "BriefDescription": "SIMD integer 64 bit logical operations"
196 },
197 {
198 "EventCode": "0xFD",
199 "Counter": "0,1,2,3",
200 "UMask": "0x1",
201 "EventName": "SIMD_INT_64.PACKED_MPY",
202 "SampleAfterValue": "200000",
203 "BriefDescription": "SIMD integer 64 bit packed multiply operations"
204 },
205 {
206 "EventCode": "0xFD",
207 "Counter": "0,1,2,3",
208 "UMask": "0x2",
209 "EventName": "SIMD_INT_64.PACKED_SHIFT",
210 "SampleAfterValue": "200000",
211 "BriefDescription": "SIMD integer 64 bit shift operations"
212 },
213 {
214 "EventCode": "0xFD",
215 "Counter": "0,1,2,3",
216 "UMask": "0x40",
217 "EventName": "SIMD_INT_64.SHUFFLE_MOVE",
218 "SampleAfterValue": "200000",
219 "BriefDescription": "SIMD integer 64 bit shuffle/move operations"
220 },
221 {
222 "EventCode": "0xFD",
223 "Counter": "0,1,2,3",
224 "UMask": "0x8",
225 "EventName": "SIMD_INT_64.UNPACK",
226 "SampleAfterValue": "200000",
227 "BriefDescription": "SIMD integer 64 bit unpack operations"
228 }
229] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemex/frontend.json b/tools/perf/pmu-events/arch/x86/nehalemex/frontend.json
new file mode 100644
index 000000000000..e5e21e03444d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemex/frontend.json
@@ -0,0 +1,26 @@
1[
2 {
3 "EventCode": "0xD0",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "MACRO_INSTS.DECODED",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Instructions decoded"
9 },
10 {
11 "EventCode": "0xA6",
12 "Counter": "0,1,2,3",
13 "UMask": "0x1",
14 "EventName": "MACRO_INSTS.FUSIONS_DECODED",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Macro-fused instructions decoded"
17 },
18 {
19 "EventCode": "0x19",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "TWO_UOP_INSTS_DECODED",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Two Uop instructions decoded"
25 }
26] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemex/memory.json b/tools/perf/pmu-events/arch/x86/nehalemex/memory.json
new file mode 100644
index 000000000000..f914a4525b65
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemex/memory.json
@@ -0,0 +1,739 @@
1[
2 {
3 "EventCode": "0xB7",
4 "MSRValue": "0x6011",
5 "Counter": "2",
6 "UMask": "0x1",
7 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_DRAM",
8 "MSRIndex": "0x1A6",
9 "SampleAfterValue": "100000",
10 "BriefDescription": "Offcore data reads satisfied by any DRAM",
11 "Offcore": "1"
12 },
13 {
14 "EventCode": "0xB7",
15 "MSRValue": "0xF811",
16 "Counter": "2",
17 "UMask": "0x1",
18 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LLC_MISS",
19 "MSRIndex": "0x1A6",
20 "SampleAfterValue": "100000",
21 "BriefDescription": "Offcore data reads that missed the LLC",
22 "Offcore": "1"
23 },
24 {
25 "EventCode": "0xB7",
26 "MSRValue": "0x4011",
27 "Counter": "2",
28 "UMask": "0x1",
29 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_DRAM",
30 "MSRIndex": "0x1A6",
31 "SampleAfterValue": "100000",
32 "BriefDescription": "Offcore data reads satisfied by the local DRAM",
33 "Offcore": "1"
34 },
35 {
36 "EventCode": "0xB7",
37 "MSRValue": "0x2011",
38 "Counter": "2",
39 "UMask": "0x1",
40 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_DRAM",
41 "MSRIndex": "0x1A6",
42 "SampleAfterValue": "100000",
43 "BriefDescription": "Offcore data reads satisfied by a remote DRAM",
44 "Offcore": "1"
45 },
46 {
47 "EventCode": "0xB7",
48 "MSRValue": "0x6044",
49 "Counter": "2",
50 "UMask": "0x1",
51 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_DRAM",
52 "MSRIndex": "0x1A6",
53 "SampleAfterValue": "100000",
54 "BriefDescription": "Offcore code reads satisfied by any DRAM",
55 "Offcore": "1"
56 },
57 {
58 "EventCode": "0xB7",
59 "MSRValue": "0xF844",
60 "Counter": "2",
61 "UMask": "0x1",
62 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LLC_MISS",
63 "MSRIndex": "0x1A6",
64 "SampleAfterValue": "100000",
65 "BriefDescription": "Offcore code reads that missed the LLC",
66 "Offcore": "1"
67 },
68 {
69 "EventCode": "0xB7",
70 "MSRValue": "0x4044",
71 "Counter": "2",
72 "UMask": "0x1",
73 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_DRAM",
74 "MSRIndex": "0x1A6",
75 "SampleAfterValue": "100000",
76 "BriefDescription": "Offcore code reads satisfied by the local DRAM",
77 "Offcore": "1"
78 },
79 {
80 "EventCode": "0xB7",
81 "MSRValue": "0x2044",
82 "Counter": "2",
83 "UMask": "0x1",
84 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_DRAM",
85 "MSRIndex": "0x1A6",
86 "SampleAfterValue": "100000",
87 "BriefDescription": "Offcore code reads satisfied by a remote DRAM",
88 "Offcore": "1"
89 },
90 {
91 "EventCode": "0xB7",
92 "MSRValue": "0x60FF",
93 "Counter": "2",
94 "UMask": "0x1",
95 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_DRAM",
96 "MSRIndex": "0x1A6",
97 "SampleAfterValue": "100000",
98 "BriefDescription": "Offcore requests satisfied by any DRAM",
99 "Offcore": "1"
100 },
101 {
102 "EventCode": "0xB7",
103 "MSRValue": "0xF8FF",
104 "Counter": "2",
105 "UMask": "0x1",
106 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LLC_MISS",
107 "MSRIndex": "0x1A6",
108 "SampleAfterValue": "100000",
109 "BriefDescription": "Offcore requests that missed the LLC",
110 "Offcore": "1"
111 },
112 {
113 "EventCode": "0xB7",
114 "MSRValue": "0x40FF",
115 "Counter": "2",
116 "UMask": "0x1",
117 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_DRAM",
118 "MSRIndex": "0x1A6",
119 "SampleAfterValue": "100000",
120 "BriefDescription": "Offcore requests satisfied by the local DRAM",
121 "Offcore": "1"
122 },
123 {
124 "EventCode": "0xB7",
125 "MSRValue": "0x20FF",
126 "Counter": "2",
127 "UMask": "0x1",
128 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_DRAM",
129 "MSRIndex": "0x1A6",
130 "SampleAfterValue": "100000",
131 "BriefDescription": "Offcore requests satisfied by a remote DRAM",
132 "Offcore": "1"
133 },
134 {
135 "EventCode": "0xB7",
136 "MSRValue": "0x6022",
137 "Counter": "2",
138 "UMask": "0x1",
139 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_DRAM",
140 "MSRIndex": "0x1A6",
141 "SampleAfterValue": "100000",
142 "BriefDescription": "Offcore RFO requests satisfied by any DRAM",
143 "Offcore": "1"
144 },
145 {
146 "EventCode": "0xB7",
147 "MSRValue": "0xF822",
148 "Counter": "2",
149 "UMask": "0x1",
150 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LLC_MISS",
151 "MSRIndex": "0x1A6",
152 "SampleAfterValue": "100000",
153 "BriefDescription": "Offcore RFO requests that missed the LLC",
154 "Offcore": "1"
155 },
156 {
157 "EventCode": "0xB7",
158 "MSRValue": "0x4022",
159 "Counter": "2",
160 "UMask": "0x1",
161 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_DRAM",
162 "MSRIndex": "0x1A6",
163 "SampleAfterValue": "100000",
164 "BriefDescription": "Offcore RFO requests satisfied by the local DRAM",
165 "Offcore": "1"
166 },
167 {
168 "EventCode": "0xB7",
169 "MSRValue": "0x2022",
170 "Counter": "2",
171 "UMask": "0x1",
172 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_DRAM",
173 "MSRIndex": "0x1A6",
174 "SampleAfterValue": "100000",
175 "BriefDescription": "Offcore RFO requests satisfied by a remote DRAM",
176 "Offcore": "1"
177 },
178 {
179 "EventCode": "0xB7",
180 "MSRValue": "0x6008",
181 "Counter": "2",
182 "UMask": "0x1",
183 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_DRAM",
184 "MSRIndex": "0x1A6",
185 "SampleAfterValue": "100000",
186 "BriefDescription": "Offcore writebacks to any DRAM",
187 "Offcore": "1"
188 },
189 {
190 "EventCode": "0xB7",
191 "MSRValue": "0xF808",
192 "Counter": "2",
193 "UMask": "0x1",
194 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LLC_MISS",
195 "MSRIndex": "0x1A6",
196 "SampleAfterValue": "100000",
197 "BriefDescription": "Offcore writebacks that missed the LLC",
198 "Offcore": "1"
199 },
200 {
201 "EventCode": "0xB7",
202 "MSRValue": "0x4008",
203 "Counter": "2",
204 "UMask": "0x1",
205 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_DRAM",
206 "MSRIndex": "0x1A6",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "Offcore writebacks to the local DRAM",
209 "Offcore": "1"
210 },
211 {
212 "EventCode": "0xB7",
213 "MSRValue": "0x2008",
214 "Counter": "2",
215 "UMask": "0x1",
216 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_DRAM",
217 "MSRIndex": "0x1A6",
218 "SampleAfterValue": "100000",
219 "BriefDescription": "Offcore writebacks to a remote DRAM",
220 "Offcore": "1"
221 },
222 {
223 "EventCode": "0xB7",
224 "MSRValue": "0x6077",
225 "Counter": "2",
226 "UMask": "0x1",
227 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_DRAM",
228 "MSRIndex": "0x1A6",
229 "SampleAfterValue": "100000",
230 "BriefDescription": "Offcore code or data read requests satisfied by any DRAM",
231 "Offcore": "1"
232 },
233 {
234 "EventCode": "0xB7",
235 "MSRValue": "0xF877",
236 "Counter": "2",
237 "UMask": "0x1",
238 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LLC_MISS",
239 "MSRIndex": "0x1A6",
240 "SampleAfterValue": "100000",
241 "BriefDescription": "Offcore code or data read requests that missed the LLC",
242 "Offcore": "1"
243 },
244 {
245 "EventCode": "0xB7",
246 "MSRValue": "0x4077",
247 "Counter": "2",
248 "UMask": "0x1",
249 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_DRAM",
250 "MSRIndex": "0x1A6",
251 "SampleAfterValue": "100000",
252 "BriefDescription": "Offcore code or data read requests satisfied by the local DRAM",
253 "Offcore": "1"
254 },
255 {
256 "EventCode": "0xB7",
257 "MSRValue": "0x2077",
258 "Counter": "2",
259 "UMask": "0x1",
260 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_DRAM",
261 "MSRIndex": "0x1A6",
262 "SampleAfterValue": "100000",
263 "BriefDescription": "Offcore code or data read requests satisfied by a remote DRAM",
264 "Offcore": "1"
265 },
266 {
267 "EventCode": "0xB7",
268 "MSRValue": "0x6033",
269 "Counter": "2",
270 "UMask": "0x1",
271 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_DRAM",
272 "MSRIndex": "0x1A6",
273 "SampleAfterValue": "100000",
274 "BriefDescription": "Offcore request = all data, response = any DRAM",
275 "Offcore": "1"
276 },
277 {
278 "EventCode": "0xB7",
279 "MSRValue": "0xF833",
280 "Counter": "2",
281 "UMask": "0x1",
282 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LLC_MISS",
283 "MSRIndex": "0x1A6",
284 "SampleAfterValue": "100000",
285 "BriefDescription": "Offcore request = all data, response = any LLC miss",
286 "Offcore": "1"
287 },
288 {
289 "EventCode": "0xB7",
290 "MSRValue": "0x4033",
291 "Counter": "2",
292 "UMask": "0x1",
293 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_DRAM",
294 "MSRIndex": "0x1A6",
295 "SampleAfterValue": "100000",
296 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the local DRAM.",
297 "Offcore": "1"
298 },
299 {
300 "EventCode": "0xB7",
301 "MSRValue": "0x2033",
302 "Counter": "2",
303 "UMask": "0x1",
304 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_DRAM",
305 "MSRIndex": "0x1A6",
306 "SampleAfterValue": "100000",
307 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the remote DRAM",
308 "Offcore": "1"
309 },
310 {
311 "EventCode": "0xB7",
312 "MSRValue": "0x6003",
313 "Counter": "2",
314 "UMask": "0x1",
315 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_DRAM",
316 "MSRIndex": "0x1A6",
317 "SampleAfterValue": "100000",
318 "BriefDescription": "Offcore demand data requests satisfied by any DRAM",
319 "Offcore": "1"
320 },
321 {
322 "EventCode": "0xB7",
323 "MSRValue": "0xF803",
324 "Counter": "2",
325 "UMask": "0x1",
326 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LLC_MISS",
327 "MSRIndex": "0x1A6",
328 "SampleAfterValue": "100000",
329 "BriefDescription": "Offcore demand data requests that missed the LLC",
330 "Offcore": "1"
331 },
332 {
333 "EventCode": "0xB7",
334 "MSRValue": "0x4003",
335 "Counter": "2",
336 "UMask": "0x1",
337 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_DRAM",
338 "MSRIndex": "0x1A6",
339 "SampleAfterValue": "100000",
340 "BriefDescription": "Offcore demand data requests satisfied by the local DRAM",
341 "Offcore": "1"
342 },
343 {
344 "EventCode": "0xB7",
345 "MSRValue": "0x2003",
346 "Counter": "2",
347 "UMask": "0x1",
348 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_DRAM",
349 "MSRIndex": "0x1A6",
350 "SampleAfterValue": "100000",
351 "BriefDescription": "Offcore demand data requests satisfied by a remote DRAM",
352 "Offcore": "1"
353 },
354 {
355 "EventCode": "0xB7",
356 "MSRValue": "0x6001",
357 "Counter": "2",
358 "UMask": "0x1",
359 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_DRAM",
360 "MSRIndex": "0x1A6",
361 "SampleAfterValue": "100000",
362 "BriefDescription": "Offcore demand data reads satisfied by any DRAM",
363 "Offcore": "1"
364 },
365 {
366 "EventCode": "0xB7",
367 "MSRValue": "0xF801",
368 "Counter": "2",
369 "UMask": "0x1",
370 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LLC_MISS",
371 "MSRIndex": "0x1A6",
372 "SampleAfterValue": "100000",
373 "BriefDescription": "Offcore demand data reads that missed the LLC",
374 "Offcore": "1"
375 },
376 {
377 "EventCode": "0xB7",
378 "MSRValue": "0x4001",
379 "Counter": "2",
380 "UMask": "0x1",
381 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_DRAM",
382 "MSRIndex": "0x1A6",
383 "SampleAfterValue": "100000",
384 "BriefDescription": "Offcore demand data reads satisfied by the local DRAM",
385 "Offcore": "1"
386 },
387 {
388 "EventCode": "0xB7",
389 "MSRValue": "0x2001",
390 "Counter": "2",
391 "UMask": "0x1",
392 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_DRAM",
393 "MSRIndex": "0x1A6",
394 "SampleAfterValue": "100000",
395 "BriefDescription": "Offcore demand data reads satisfied by a remote DRAM",
396 "Offcore": "1"
397 },
398 {
399 "EventCode": "0xB7",
400 "MSRValue": "0x6004",
401 "Counter": "2",
402 "UMask": "0x1",
403 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_DRAM",
404 "MSRIndex": "0x1A6",
405 "SampleAfterValue": "100000",
406 "BriefDescription": "Offcore demand code reads satisfied by any DRAM",
407 "Offcore": "1"
408 },
409 {
410 "EventCode": "0xB7",
411 "MSRValue": "0xF804",
412 "Counter": "2",
413 "UMask": "0x1",
414 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LLC_MISS",
415 "MSRIndex": "0x1A6",
416 "SampleAfterValue": "100000",
417 "BriefDescription": "Offcore demand code reads that missed the LLC",
418 "Offcore": "1"
419 },
420 {
421 "EventCode": "0xB7",
422 "MSRValue": "0x4004",
423 "Counter": "2",
424 "UMask": "0x1",
425 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_DRAM",
426 "MSRIndex": "0x1A6",
427 "SampleAfterValue": "100000",
428 "BriefDescription": "Offcore demand code reads satisfied by the local DRAM",
429 "Offcore": "1"
430 },
431 {
432 "EventCode": "0xB7",
433 "MSRValue": "0x2004",
434 "Counter": "2",
435 "UMask": "0x1",
436 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_DRAM",
437 "MSRIndex": "0x1A6",
438 "SampleAfterValue": "100000",
439 "BriefDescription": "Offcore demand code reads satisfied by a remote DRAM",
440 "Offcore": "1"
441 },
442 {
443 "EventCode": "0xB7",
444 "MSRValue": "0x6002",
445 "Counter": "2",
446 "UMask": "0x1",
447 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_DRAM",
448 "MSRIndex": "0x1A6",
449 "SampleAfterValue": "100000",
450 "BriefDescription": "Offcore demand RFO requests satisfied by any DRAM",
451 "Offcore": "1"
452 },
453 {
454 "EventCode": "0xB7",
455 "MSRValue": "0xF802",
456 "Counter": "2",
457 "UMask": "0x1",
458 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LLC_MISS",
459 "MSRIndex": "0x1A6",
460 "SampleAfterValue": "100000",
461 "BriefDescription": "Offcore demand RFO requests that missed the LLC",
462 "Offcore": "1"
463 },
464 {
465 "EventCode": "0xB7",
466 "MSRValue": "0x4002",
467 "Counter": "2",
468 "UMask": "0x1",
469 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_DRAM",
470 "MSRIndex": "0x1A6",
471 "SampleAfterValue": "100000",
472 "BriefDescription": "Offcore demand RFO requests satisfied by the local DRAM",
473 "Offcore": "1"
474 },
475 {
476 "EventCode": "0xB7",
477 "MSRValue": "0x2002",
478 "Counter": "2",
479 "UMask": "0x1",
480 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_DRAM",
481 "MSRIndex": "0x1A6",
482 "SampleAfterValue": "100000",
483 "BriefDescription": "Offcore demand RFO requests satisfied by a remote DRAM",
484 "Offcore": "1"
485 },
486 {
487 "EventCode": "0xB7",
488 "MSRValue": "0x6080",
489 "Counter": "2",
490 "UMask": "0x1",
491 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_DRAM",
492 "MSRIndex": "0x1A6",
493 "SampleAfterValue": "100000",
494 "BriefDescription": "Offcore other requests satisfied by any DRAM",
495 "Offcore": "1"
496 },
497 {
498 "EventCode": "0xB7",
499 "MSRValue": "0xF880",
500 "Counter": "2",
501 "UMask": "0x1",
502 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LLC_MISS",
503 "MSRIndex": "0x1A6",
504 "SampleAfterValue": "100000",
505 "BriefDescription": "Offcore other requests that missed the LLC",
506 "Offcore": "1"
507 },
508 {
509 "EventCode": "0xB7",
510 "MSRValue": "0x2080",
511 "Counter": "2",
512 "UMask": "0x1",
513 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_DRAM",
514 "MSRIndex": "0x1A6",
515 "SampleAfterValue": "100000",
516 "BriefDescription": "Offcore other requests satisfied by a remote DRAM",
517 "Offcore": "1"
518 },
519 {
520 "EventCode": "0xB7",
521 "MSRValue": "0x6030",
522 "Counter": "2",
523 "UMask": "0x1",
524 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_DRAM",
525 "MSRIndex": "0x1A6",
526 "SampleAfterValue": "100000",
527 "BriefDescription": "Offcore prefetch data requests satisfied by any DRAM",
528 "Offcore": "1"
529 },
530 {
531 "EventCode": "0xB7",
532 "MSRValue": "0xF830",
533 "Counter": "2",
534 "UMask": "0x1",
535 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LLC_MISS",
536 "MSRIndex": "0x1A6",
537 "SampleAfterValue": "100000",
538 "BriefDescription": "Offcore prefetch data requests that missed the LLC",
539 "Offcore": "1"
540 },
541 {
542 "EventCode": "0xB7",
543 "MSRValue": "0x4030",
544 "Counter": "2",
545 "UMask": "0x1",
546 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_DRAM",
547 "MSRIndex": "0x1A6",
548 "SampleAfterValue": "100000",
549 "BriefDescription": "Offcore prefetch data requests satisfied by the local DRAM",
550 "Offcore": "1"
551 },
552 {
553 "EventCode": "0xB7",
554 "MSRValue": "0x2030",
555 "Counter": "2",
556 "UMask": "0x1",
557 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_DRAM",
558 "MSRIndex": "0x1A6",
559 "SampleAfterValue": "100000",
560 "BriefDescription": "Offcore prefetch data requests satisfied by a remote DRAM",
561 "Offcore": "1"
562 },
563 {
564 "EventCode": "0xB7",
565 "MSRValue": "0x6010",
566 "Counter": "2",
567 "UMask": "0x1",
568 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_DRAM",
569 "MSRIndex": "0x1A6",
570 "SampleAfterValue": "100000",
571 "BriefDescription": "Offcore prefetch data reads satisfied by any DRAM",
572 "Offcore": "1"
573 },
574 {
575 "EventCode": "0xB7",
576 "MSRValue": "0xF810",
577 "Counter": "2",
578 "UMask": "0x1",
579 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LLC_MISS",
580 "MSRIndex": "0x1A6",
581 "SampleAfterValue": "100000",
582 "BriefDescription": "Offcore prefetch data reads that missed the LLC",
583 "Offcore": "1"
584 },
585 {
586 "EventCode": "0xB7",
587 "MSRValue": "0x4010",
588 "Counter": "2",
589 "UMask": "0x1",
590 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_DRAM",
591 "MSRIndex": "0x1A6",
592 "SampleAfterValue": "100000",
593 "BriefDescription": "Offcore prefetch data reads satisfied by the local DRAM",
594 "Offcore": "1"
595 },
596 {
597 "EventCode": "0xB7",
598 "MSRValue": "0x2010",
599 "Counter": "2",
600 "UMask": "0x1",
601 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_DRAM",
602 "MSRIndex": "0x1A6",
603 "SampleAfterValue": "100000",
604 "BriefDescription": "Offcore prefetch data reads satisfied by a remote DRAM",
605 "Offcore": "1"
606 },
607 {
608 "EventCode": "0xB7",
609 "MSRValue": "0x6040",
610 "Counter": "2",
611 "UMask": "0x1",
612 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_DRAM",
613 "MSRIndex": "0x1A6",
614 "SampleAfterValue": "100000",
615 "BriefDescription": "Offcore prefetch code reads satisfied by any DRAM",
616 "Offcore": "1"
617 },
618 {
619 "EventCode": "0xB7",
620 "MSRValue": "0xF840",
621 "Counter": "2",
622 "UMask": "0x1",
623 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LLC_MISS",
624 "MSRIndex": "0x1A6",
625 "SampleAfterValue": "100000",
626 "BriefDescription": "Offcore prefetch code reads that missed the LLC",
627 "Offcore": "1"
628 },
629 {
630 "EventCode": "0xB7",
631 "MSRValue": "0x4040",
632 "Counter": "2",
633 "UMask": "0x1",
634 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_DRAM",
635 "MSRIndex": "0x1A6",
636 "SampleAfterValue": "100000",
637 "BriefDescription": "Offcore prefetch code reads satisfied by the local DRAM",
638 "Offcore": "1"
639 },
640 {
641 "EventCode": "0xB7",
642 "MSRValue": "0x2040",
643 "Counter": "2",
644 "UMask": "0x1",
645 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_DRAM",
646 "MSRIndex": "0x1A6",
647 "SampleAfterValue": "100000",
648 "BriefDescription": "Offcore prefetch code reads satisfied by a remote DRAM",
649 "Offcore": "1"
650 },
651 {
652 "EventCode": "0xB7",
653 "MSRValue": "0x6020",
654 "Counter": "2",
655 "UMask": "0x1",
656 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_DRAM",
657 "MSRIndex": "0x1A6",
658 "SampleAfterValue": "100000",
659 "BriefDescription": "Offcore prefetch RFO requests satisfied by any DRAM",
660 "Offcore": "1"
661 },
662 {
663 "EventCode": "0xB7",
664 "MSRValue": "0xF820",
665 "Counter": "2",
666 "UMask": "0x1",
667 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LLC_MISS",
668 "MSRIndex": "0x1A6",
669 "SampleAfterValue": "100000",
670 "BriefDescription": "Offcore prefetch RFO requests that missed the LLC",
671 "Offcore": "1"
672 },
673 {
674 "EventCode": "0xB7",
675 "MSRValue": "0x4020",
676 "Counter": "2",
677 "UMask": "0x1",
678 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_DRAM",
679 "MSRIndex": "0x1A6",
680 "SampleAfterValue": "100000",
681 "BriefDescription": "Offcore prefetch RFO requests satisfied by the local DRAM",
682 "Offcore": "1"
683 },
684 {
685 "EventCode": "0xB7",
686 "MSRValue": "0x2020",
687 "Counter": "2",
688 "UMask": "0x1",
689 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_DRAM",
690 "MSRIndex": "0x1A6",
691 "SampleAfterValue": "100000",
692 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote DRAM",
693 "Offcore": "1"
694 },
695 {
696 "EventCode": "0xB7",
697 "MSRValue": "0x6070",
698 "Counter": "2",
699 "UMask": "0x1",
700 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_DRAM",
701 "MSRIndex": "0x1A6",
702 "SampleAfterValue": "100000",
703 "BriefDescription": "Offcore prefetch requests satisfied by any DRAM",
704 "Offcore": "1"
705 },
706 {
707 "EventCode": "0xB7",
708 "MSRValue": "0xF870",
709 "Counter": "2",
710 "UMask": "0x1",
711 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LLC_MISS",
712 "MSRIndex": "0x1A6",
713 "SampleAfterValue": "100000",
714 "BriefDescription": "Offcore prefetch requests that missed the LLC",
715 "Offcore": "1"
716 },
717 {
718 "EventCode": "0xB7",
719 "MSRValue": "0x4070",
720 "Counter": "2",
721 "UMask": "0x1",
722 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_DRAM",
723 "MSRIndex": "0x1A6",
724 "SampleAfterValue": "100000",
725 "BriefDescription": "Offcore prefetch requests satisfied by the local DRAM",
726 "Offcore": "1"
727 },
728 {
729 "EventCode": "0xB7",
730 "MSRValue": "0x2070",
731 "Counter": "2",
732 "UMask": "0x1",
733 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_DRAM",
734 "MSRIndex": "0x1A6",
735 "SampleAfterValue": "100000",
736 "BriefDescription": "Offcore prefetch requests satisfied by a remote DRAM",
737 "Offcore": "1"
738 }
739] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemex/other.json b/tools/perf/pmu-events/arch/x86/nehalemex/other.json
new file mode 100644
index 000000000000..af0860622445
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemex/other.json
@@ -0,0 +1,210 @@
1[
2 {
3 "EventCode": "0xE8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "BPU_CLEARS.EARLY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Early Branch Prediciton Unit clears"
9 },
10 {
11 "EventCode": "0xE8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x2",
14 "EventName": "BPU_CLEARS.LATE",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Late Branch Prediction Unit clears"
17 },
18 {
19 "EventCode": "0xE5",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "BPU_MISSED_CALL_RET",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Branch prediction unit missed call or return"
25 },
26 {
27 "EventCode": "0xD5",
28 "Counter": "0,1,2,3",
29 "UMask": "0x1",
30 "EventName": "ES_REG_RENAMES",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "ES segment renames"
33 },
34 {
35 "EventCode": "0x6C",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "IO_TRANSACTIONS",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "I/O transactions"
41 },
42 {
43 "EventCode": "0x80",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "L1I.CYCLES_STALLED",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1I instruction fetch stall cycles"
49 },
50 {
51 "EventCode": "0x80",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "L1I.HITS",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1I instruction fetch hits"
57 },
58 {
59 "EventCode": "0x80",
60 "Counter": "0,1,2,3",
61 "UMask": "0x2",
62 "EventName": "L1I.MISSES",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "L1I instruction fetch misses"
65 },
66 {
67 "EventCode": "0x80",
68 "Counter": "0,1,2,3",
69 "UMask": "0x3",
70 "EventName": "L1I.READS",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "L1I Instruction fetches"
73 },
74 {
75 "EventCode": "0x82",
76 "Counter": "0,1,2,3",
77 "UMask": "0x1",
78 "EventName": "LARGE_ITLB.HIT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Large ITLB hit"
81 },
82 {
83 "EventCode": "0x13",
84 "Counter": "0,1,2,3",
85 "UMask": "0x7",
86 "EventName": "LOAD_DISPATCH.ANY",
87 "SampleAfterValue": "2000000",
88 "BriefDescription": "All loads dispatched"
89 },
90 {
91 "EventCode": "0x13",
92 "Counter": "0,1,2,3",
93 "UMask": "0x4",
94 "EventName": "LOAD_DISPATCH.MOB",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "Loads dispatched from the MOB"
97 },
98 {
99 "EventCode": "0x13",
100 "Counter": "0,1,2,3",
101 "UMask": "0x1",
102 "EventName": "LOAD_DISPATCH.RS",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Loads dispatched that bypass the MOB"
105 },
106 {
107 "EventCode": "0x13",
108 "Counter": "0,1,2,3",
109 "UMask": "0x2",
110 "EventName": "LOAD_DISPATCH.RS_DELAYED",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "Loads dispatched from stage 305"
113 },
114 {
115 "EventCode": "0x7",
116 "Counter": "0,1,2,3",
117 "UMask": "0x1",
118 "EventName": "PARTIAL_ADDRESS_ALIAS",
119 "SampleAfterValue": "200000",
120 "BriefDescription": "False dependencies due to partial address aliasing"
121 },
122 {
123 "EventCode": "0xD2",
124 "Counter": "0,1,2,3",
125 "UMask": "0xf",
126 "EventName": "RAT_STALLS.ANY",
127 "SampleAfterValue": "2000000",
128 "BriefDescription": "All RAT stall cycles"
129 },
130 {
131 "EventCode": "0xD2",
132 "Counter": "0,1,2,3",
133 "UMask": "0x1",
134 "EventName": "RAT_STALLS.FLAGS",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "Flag stall cycles"
137 },
138 {
139 "EventCode": "0xD2",
140 "Counter": "0,1,2,3",
141 "UMask": "0x2",
142 "EventName": "RAT_STALLS.REGISTERS",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "Partial register stall cycles"
145 },
146 {
147 "EventCode": "0xD2",
148 "Counter": "0,1,2,3",
149 "UMask": "0x4",
150 "EventName": "RAT_STALLS.ROB_READ_PORT",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "ROB read port stalls cycles"
153 },
154 {
155 "EventCode": "0xD2",
156 "Counter": "0,1,2,3",
157 "UMask": "0x8",
158 "EventName": "RAT_STALLS.SCOREBOARD",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "Scoreboard stall cycles"
161 },
162 {
163 "EventCode": "0x4",
164 "Counter": "0,1,2,3",
165 "UMask": "0x7",
166 "EventName": "SB_DRAIN.ANY",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "All Store buffer stall cycles"
169 },
170 {
171 "EventCode": "0xD4",
172 "Counter": "0,1,2,3",
173 "UMask": "0x1",
174 "EventName": "SEG_RENAME_STALLS",
175 "SampleAfterValue": "2000000",
176 "BriefDescription": "Segment rename stall cycles"
177 },
178 {
179 "EventCode": "0xB8",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "SNOOP_RESPONSE.HIT",
183 "SampleAfterValue": "100000",
184 "BriefDescription": "Thread responded HIT to snoop"
185 },
186 {
187 "EventCode": "0xB8",
188 "Counter": "0,1,2,3",
189 "UMask": "0x2",
190 "EventName": "SNOOP_RESPONSE.HITE",
191 "SampleAfterValue": "100000",
192 "BriefDescription": "Thread responded HITE to snoop"
193 },
194 {
195 "EventCode": "0xB8",
196 "Counter": "0,1,2,3",
197 "UMask": "0x4",
198 "EventName": "SNOOP_RESPONSE.HITM",
199 "SampleAfterValue": "100000",
200 "BriefDescription": "Thread responded HITM to snoop"
201 },
202 {
203 "EventCode": "0xF6",
204 "Counter": "0,1,2,3",
205 "UMask": "0x1",
206 "EventName": "SQ_FULL_STALL_CYCLES",
207 "SampleAfterValue": "2000000",
208 "BriefDescription": "Super Queue full stall cycles"
209 }
210] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemex/pipeline.json b/tools/perf/pmu-events/arch/x86/nehalemex/pipeline.json
new file mode 100644
index 000000000000..41006ddcd893
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemex/pipeline.json
@@ -0,0 +1,881 @@
1[
2 {
3 "EventCode": "0x14",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ARITH.CYCLES_DIV_BUSY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles the divider is busy"
9 },
10 {
11 "EventCode": "0x14",
12 "Invert": "1",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "ARITH.DIV",
16 "SampleAfterValue": "2000000",
17 "BriefDescription": "Divide Operations executed",
18 "CounterMask": "1",
19 "EdgeDetect": "1"
20 },
21 {
22 "EventCode": "0x14",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "ARITH.MUL",
26 "SampleAfterValue": "2000000",
27 "BriefDescription": "Multiply operations executed"
28 },
29 {
30 "EventCode": "0xE6",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "BACLEAR.BAD_TARGET",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "BACLEAR asserted with bad target address"
36 },
37 {
38 "EventCode": "0xE6",
39 "Counter": "0,1,2,3",
40 "UMask": "0x1",
41 "EventName": "BACLEAR.CLEAR",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "BACLEAR asserted, regardless of cause "
44 },
45 {
46 "EventCode": "0xA7",
47 "Counter": "0,1,2,3",
48 "UMask": "0x1",
49 "EventName": "BACLEAR_FORCE_IQ",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "Instruction queue forced BACLEAR"
52 },
53 {
54 "EventCode": "0xE0",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "BR_INST_DECODED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "Branch instructions decoded"
60 },
61 {
62 "EventCode": "0x88",
63 "Counter": "0,1,2,3",
64 "UMask": "0x7f",
65 "EventName": "BR_INST_EXEC.ANY",
66 "SampleAfterValue": "200000",
67 "BriefDescription": "Branch instructions executed"
68 },
69 {
70 "EventCode": "0x88",
71 "Counter": "0,1,2,3",
72 "UMask": "0x1",
73 "EventName": "BR_INST_EXEC.COND",
74 "SampleAfterValue": "200000",
75 "BriefDescription": "Conditional branch instructions executed"
76 },
77 {
78 "EventCode": "0x88",
79 "Counter": "0,1,2,3",
80 "UMask": "0x2",
81 "EventName": "BR_INST_EXEC.DIRECT",
82 "SampleAfterValue": "200000",
83 "BriefDescription": "Unconditional branches executed"
84 },
85 {
86 "EventCode": "0x88",
87 "Counter": "0,1,2,3",
88 "UMask": "0x10",
89 "EventName": "BR_INST_EXEC.DIRECT_NEAR_CALL",
90 "SampleAfterValue": "20000",
91 "BriefDescription": "Unconditional call branches executed"
92 },
93 {
94 "EventCode": "0x88",
95 "Counter": "0,1,2,3",
96 "UMask": "0x20",
97 "EventName": "BR_INST_EXEC.INDIRECT_NEAR_CALL",
98 "SampleAfterValue": "20000",
99 "BriefDescription": "Indirect call branches executed"
100 },
101 {
102 "EventCode": "0x88",
103 "Counter": "0,1,2,3",
104 "UMask": "0x4",
105 "EventName": "BR_INST_EXEC.INDIRECT_NON_CALL",
106 "SampleAfterValue": "20000",
107 "BriefDescription": "Indirect non call branches executed"
108 },
109 {
110 "EventCode": "0x88",
111 "Counter": "0,1,2,3",
112 "UMask": "0x30",
113 "EventName": "BR_INST_EXEC.NEAR_CALLS",
114 "SampleAfterValue": "20000",
115 "BriefDescription": "Call branches executed"
116 },
117 {
118 "EventCode": "0x88",
119 "Counter": "0,1,2,3",
120 "UMask": "0x7",
121 "EventName": "BR_INST_EXEC.NON_CALLS",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "All non call branches executed"
124 },
125 {
126 "EventCode": "0x88",
127 "Counter": "0,1,2,3",
128 "UMask": "0x8",
129 "EventName": "BR_INST_EXEC.RETURN_NEAR",
130 "SampleAfterValue": "20000",
131 "BriefDescription": "Indirect return branches executed"
132 },
133 {
134 "EventCode": "0x88",
135 "Counter": "0,1,2,3",
136 "UMask": "0x40",
137 "EventName": "BR_INST_EXEC.TAKEN",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "Taken branches executed"
140 },
141 {
142 "PEBS": "1",
143 "EventCode": "0xC4",
144 "Counter": "0,1,2,3",
145 "UMask": "0x4",
146 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
147 "SampleAfterValue": "200000",
148 "BriefDescription": "Retired branch instructions (Precise Event)"
149 },
150 {
151 "PEBS": "1",
152 "EventCode": "0xC4",
153 "Counter": "0,1,2,3",
154 "UMask": "0x1",
155 "EventName": "BR_INST_RETIRED.CONDITIONAL",
156 "SampleAfterValue": "200000",
157 "BriefDescription": "Retired conditional branch instructions (Precise Event)"
158 },
159 {
160 "PEBS": "1",
161 "EventCode": "0xC4",
162 "Counter": "0,1,2,3",
163 "UMask": "0x2",
164 "EventName": "BR_INST_RETIRED.NEAR_CALL",
165 "SampleAfterValue": "20000",
166 "BriefDescription": "Retired near call instructions (Precise Event)"
167 },
168 {
169 "EventCode": "0x89",
170 "Counter": "0,1,2,3",
171 "UMask": "0x7f",
172 "EventName": "BR_MISP_EXEC.ANY",
173 "SampleAfterValue": "20000",
174 "BriefDescription": "Mispredicted branches executed"
175 },
176 {
177 "EventCode": "0x89",
178 "Counter": "0,1,2,3",
179 "UMask": "0x1",
180 "EventName": "BR_MISP_EXEC.COND",
181 "SampleAfterValue": "20000",
182 "BriefDescription": "Mispredicted conditional branches executed"
183 },
184 {
185 "EventCode": "0x89",
186 "Counter": "0,1,2,3",
187 "UMask": "0x2",
188 "EventName": "BR_MISP_EXEC.DIRECT",
189 "SampleAfterValue": "20000",
190 "BriefDescription": "Mispredicted unconditional branches executed"
191 },
192 {
193 "EventCode": "0x89",
194 "Counter": "0,1,2,3",
195 "UMask": "0x10",
196 "EventName": "BR_MISP_EXEC.DIRECT_NEAR_CALL",
197 "SampleAfterValue": "2000",
198 "BriefDescription": "Mispredicted non call branches executed"
199 },
200 {
201 "EventCode": "0x89",
202 "Counter": "0,1,2,3",
203 "UMask": "0x20",
204 "EventName": "BR_MISP_EXEC.INDIRECT_NEAR_CALL",
205 "SampleAfterValue": "2000",
206 "BriefDescription": "Mispredicted indirect call branches executed"
207 },
208 {
209 "EventCode": "0x89",
210 "Counter": "0,1,2,3",
211 "UMask": "0x4",
212 "EventName": "BR_MISP_EXEC.INDIRECT_NON_CALL",
213 "SampleAfterValue": "2000",
214 "BriefDescription": "Mispredicted indirect non call branches executed"
215 },
216 {
217 "EventCode": "0x89",
218 "Counter": "0,1,2,3",
219 "UMask": "0x30",
220 "EventName": "BR_MISP_EXEC.NEAR_CALLS",
221 "SampleAfterValue": "2000",
222 "BriefDescription": "Mispredicted call branches executed"
223 },
224 {
225 "EventCode": "0x89",
226 "Counter": "0,1,2,3",
227 "UMask": "0x7",
228 "EventName": "BR_MISP_EXEC.NON_CALLS",
229 "SampleAfterValue": "20000",
230 "BriefDescription": "Mispredicted non call branches executed"
231 },
232 {
233 "EventCode": "0x89",
234 "Counter": "0,1,2,3",
235 "UMask": "0x8",
236 "EventName": "BR_MISP_EXEC.RETURN_NEAR",
237 "SampleAfterValue": "2000",
238 "BriefDescription": "Mispredicted return branches executed"
239 },
240 {
241 "EventCode": "0x89",
242 "Counter": "0,1,2,3",
243 "UMask": "0x40",
244 "EventName": "BR_MISP_EXEC.TAKEN",
245 "SampleAfterValue": "20000",
246 "BriefDescription": "Mispredicted taken branches executed"
247 },
248 {
249 "PEBS": "1",
250 "EventCode": "0xC5",
251 "Counter": "0,1,2,3",
252 "UMask": "0x2",
253 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
254 "SampleAfterValue": "2000",
255 "BriefDescription": "Mispredicted near retired calls (Precise Event)"
256 },
257 {
258 "EventCode": "0x0",
259 "Counter": "Fixed counter 3",
260 "UMask": "0x0",
261 "EventName": "CPU_CLK_UNHALTED.REF",
262 "SampleAfterValue": "2000000",
263 "BriefDescription": "Reference cycles when thread is not halted (fixed counter)"
264 },
265 {
266 "EventCode": "0x3C",
267 "Counter": "0,1,2,3",
268 "UMask": "0x1",
269 "EventName": "CPU_CLK_UNHALTED.REF_P",
270 "SampleAfterValue": "100000",
271 "BriefDescription": "Reference base clock (133 Mhz) cycles when thread is not halted (programmable counter)"
272 },
273 {
274 "EventCode": "0x0",
275 "Counter": "Fixed counter 2",
276 "UMask": "0x0",
277 "EventName": "CPU_CLK_UNHALTED.THREAD",
278 "SampleAfterValue": "2000000",
279 "BriefDescription": "Cycles when thread is not halted (fixed counter)"
280 },
281 {
282 "EventCode": "0x3C",
283 "Counter": "0,1,2,3",
284 "UMask": "0x0",
285 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
286 "SampleAfterValue": "2000000",
287 "BriefDescription": "Cycles when thread is not halted (programmable counter)"
288 },
289 {
290 "EventCode": "0x3C",
291 "Invert": "1",
292 "Counter": "0,1,2,3",
293 "UMask": "0x0",
294 "EventName": "CPU_CLK_UNHALTED.TOTAL_CYCLES",
295 "SampleAfterValue": "2000000",
296 "BriefDescription": "Total CPU cycles",
297 "CounterMask": "2"
298 },
299 {
300 "EventCode": "0x87",
301 "Counter": "0,1,2,3",
302 "UMask": "0xf",
303 "EventName": "ILD_STALL.ANY",
304 "SampleAfterValue": "2000000",
305 "BriefDescription": "Any Instruction Length Decoder stall cycles"
306 },
307 {
308 "EventCode": "0x87",
309 "Counter": "0,1,2,3",
310 "UMask": "0x4",
311 "EventName": "ILD_STALL.IQ_FULL",
312 "SampleAfterValue": "2000000",
313 "BriefDescription": "Instruction Queue full stall cycles"
314 },
315 {
316 "EventCode": "0x87",
317 "Counter": "0,1,2,3",
318 "UMask": "0x1",
319 "EventName": "ILD_STALL.LCP",
320 "SampleAfterValue": "2000000",
321 "BriefDescription": "Length Change Prefix stall cycles"
322 },
323 {
324 "EventCode": "0x87",
325 "Counter": "0,1,2,3",
326 "UMask": "0x2",
327 "EventName": "ILD_STALL.MRU",
328 "SampleAfterValue": "2000000",
329 "BriefDescription": "Stall cycles due to BPU MRU bypass"
330 },
331 {
332 "EventCode": "0x87",
333 "Counter": "0,1,2,3",
334 "UMask": "0x8",
335 "EventName": "ILD_STALL.REGEN",
336 "SampleAfterValue": "2000000",
337 "BriefDescription": "Regen stall cycles"
338 },
339 {
340 "EventCode": "0x18",
341 "Counter": "0,1,2,3",
342 "UMask": "0x1",
343 "EventName": "INST_DECODED.DEC0",
344 "SampleAfterValue": "2000000",
345 "BriefDescription": "Instructions that must be decoded by decoder 0"
346 },
347 {
348 "EventCode": "0x1E",
349 "Counter": "0,1,2,3",
350 "UMask": "0x1",
351 "EventName": "INST_QUEUE_WRITE_CYCLES",
352 "SampleAfterValue": "2000000",
353 "BriefDescription": "Cycles instructions are written to the instruction queue"
354 },
355 {
356 "EventCode": "0x17",
357 "Counter": "0,1,2,3",
358 "UMask": "0x1",
359 "EventName": "INST_QUEUE_WRITES",
360 "SampleAfterValue": "2000000",
361 "BriefDescription": "Instructions written to instruction queue."
362 },
363 {
364 "EventCode": "0x0",
365 "Counter": "Fixed counter 1",
366 "UMask": "0x0",
367 "EventName": "INST_RETIRED.ANY",
368 "SampleAfterValue": "2000000",
369 "BriefDescription": "Instructions retired (fixed counter)"
370 },
371 {
372 "PEBS": "1",
373 "EventCode": "0xC0",
374 "Counter": "0,1,2,3",
375 "UMask": "0x1",
376 "EventName": "INST_RETIRED.ANY_P",
377 "SampleAfterValue": "2000000",
378 "BriefDescription": "Instructions retired (Programmable counter and Precise Event)"
379 },
380 {
381 "PEBS": "1",
382 "EventCode": "0xC0",
383 "Counter": "0,1,2,3",
384 "UMask": "0x4",
385 "EventName": "INST_RETIRED.MMX",
386 "SampleAfterValue": "2000000",
387 "BriefDescription": "Retired MMX instructions (Precise Event)"
388 },
389 {
390 "PEBS": "1",
391 "EventCode": "0xC0",
392 "Invert": "1",
393 "Counter": "0,1,2,3",
394 "UMask": "0x1",
395 "EventName": "INST_RETIRED.TOTAL_CYCLES",
396 "SampleAfterValue": "2000000",
397 "BriefDescription": "Total cycles (Precise Event)",
398 "CounterMask": "16"
399 },
400 {
401 "PEBS": "1",
402 "EventCode": "0xC0",
403 "Counter": "0,1,2,3",
404 "UMask": "0x2",
405 "EventName": "INST_RETIRED.X87",
406 "SampleAfterValue": "2000000",
407 "BriefDescription": "Retired floating-point operations (Precise Event)"
408 },
409 {
410 "EventCode": "0x4C",
411 "Counter": "0,1",
412 "UMask": "0x1",
413 "EventName": "LOAD_HIT_PRE",
414 "SampleAfterValue": "200000",
415 "BriefDescription": "Load operations conflicting with software prefetches"
416 },
417 {
418 "EventCode": "0xA8",
419 "Counter": "0,1,2,3",
420 "UMask": "0x1",
421 "EventName": "LSD.ACTIVE",
422 "SampleAfterValue": "2000000",
423 "BriefDescription": "Cycles when uops were delivered by the LSD",
424 "CounterMask": "1"
425 },
426 {
427 "EventCode": "0xA8",
428 "Invert": "1",
429 "Counter": "0,1,2,3",
430 "UMask": "0x1",
431 "EventName": "LSD.INACTIVE",
432 "SampleAfterValue": "2000000",
433 "BriefDescription": "Cycles no uops were delivered by the LSD",
434 "CounterMask": "1"
435 },
436 {
437 "EventCode": "0x20",
438 "Counter": "0,1,2,3",
439 "UMask": "0x1",
440 "EventName": "LSD_OVERFLOW",
441 "SampleAfterValue": "2000000",
442 "BriefDescription": "Loops that can't stream from the instruction queue"
443 },
444 {
445 "EventCode": "0xC3",
446 "Counter": "0,1,2,3",
447 "UMask": "0x1",
448 "EventName": "MACHINE_CLEARS.CYCLES",
449 "SampleAfterValue": "20000",
450 "BriefDescription": "Cycles machine clear asserted"
451 },
452 {
453 "EventCode": "0xC3",
454 "Counter": "0,1,2,3",
455 "UMask": "0x2",
456 "EventName": "MACHINE_CLEARS.MEM_ORDER",
457 "SampleAfterValue": "20000",
458 "BriefDescription": "Execution pipeline restart due to Memory ordering conflicts"
459 },
460 {
461 "EventCode": "0xC3",
462 "Counter": "0,1,2,3",
463 "UMask": "0x4",
464 "EventName": "MACHINE_CLEARS.SMC",
465 "SampleAfterValue": "20000",
466 "BriefDescription": "Self-Modifying Code detected"
467 },
468 {
469 "EventCode": "0xA2",
470 "Counter": "0,1,2,3",
471 "UMask": "0x1",
472 "EventName": "RESOURCE_STALLS.ANY",
473 "SampleAfterValue": "2000000",
474 "BriefDescription": "Resource related stall cycles"
475 },
476 {
477 "EventCode": "0xA2",
478 "Counter": "0,1,2,3",
479 "UMask": "0x20",
480 "EventName": "RESOURCE_STALLS.FPCW",
481 "SampleAfterValue": "2000000",
482 "BriefDescription": "FPU control word write stall cycles"
483 },
484 {
485 "EventCode": "0xA2",
486 "Counter": "0,1,2,3",
487 "UMask": "0x2",
488 "EventName": "RESOURCE_STALLS.LOAD",
489 "SampleAfterValue": "2000000",
490 "BriefDescription": "Load buffer stall cycles"
491 },
492 {
493 "EventCode": "0xA2",
494 "Counter": "0,1,2,3",
495 "UMask": "0x40",
496 "EventName": "RESOURCE_STALLS.MXCSR",
497 "SampleAfterValue": "2000000",
498 "BriefDescription": "MXCSR rename stall cycles"
499 },
500 {
501 "EventCode": "0xA2",
502 "Counter": "0,1,2,3",
503 "UMask": "0x80",
504 "EventName": "RESOURCE_STALLS.OTHER",
505 "SampleAfterValue": "2000000",
506 "BriefDescription": "Other Resource related stall cycles"
507 },
508 {
509 "EventCode": "0xA2",
510 "Counter": "0,1,2,3",
511 "UMask": "0x10",
512 "EventName": "RESOURCE_STALLS.ROB_FULL",
513 "SampleAfterValue": "2000000",
514 "BriefDescription": "ROB full stall cycles"
515 },
516 {
517 "EventCode": "0xA2",
518 "Counter": "0,1,2,3",
519 "UMask": "0x4",
520 "EventName": "RESOURCE_STALLS.RS_FULL",
521 "SampleAfterValue": "2000000",
522 "BriefDescription": "Reservation Station full stall cycles"
523 },
524 {
525 "EventCode": "0xA2",
526 "Counter": "0,1,2,3",
527 "UMask": "0x8",
528 "EventName": "RESOURCE_STALLS.STORE",
529 "SampleAfterValue": "2000000",
530 "BriefDescription": "Store buffer stall cycles"
531 },
532 {
533 "PEBS": "1",
534 "EventCode": "0xC7",
535 "Counter": "0,1,2,3",
536 "UMask": "0x4",
537 "EventName": "SSEX_UOPS_RETIRED.PACKED_DOUBLE",
538 "SampleAfterValue": "200000",
539 "BriefDescription": "SIMD Packed-Double Uops retired (Precise Event)"
540 },
541 {
542 "PEBS": "1",
543 "EventCode": "0xC7",
544 "Counter": "0,1,2,3",
545 "UMask": "0x1",
546 "EventName": "SSEX_UOPS_RETIRED.PACKED_SINGLE",
547 "SampleAfterValue": "200000",
548 "BriefDescription": "SIMD Packed-Single Uops retired (Precise Event)"
549 },
550 {
551 "PEBS": "1",
552 "EventCode": "0xC7",
553 "Counter": "0,1,2,3",
554 "UMask": "0x8",
555 "EventName": "SSEX_UOPS_RETIRED.SCALAR_DOUBLE",
556 "SampleAfterValue": "200000",
557 "BriefDescription": "SIMD Scalar-Double Uops retired (Precise Event)"
558 },
559 {
560 "PEBS": "1",
561 "EventCode": "0xC7",
562 "Counter": "0,1,2,3",
563 "UMask": "0x2",
564 "EventName": "SSEX_UOPS_RETIRED.SCALAR_SINGLE",
565 "SampleAfterValue": "200000",
566 "BriefDescription": "SIMD Scalar-Single Uops retired (Precise Event)"
567 },
568 {
569 "PEBS": "1",
570 "EventCode": "0xC7",
571 "Counter": "0,1,2,3",
572 "UMask": "0x10",
573 "EventName": "SSEX_UOPS_RETIRED.VECTOR_INTEGER",
574 "SampleAfterValue": "200000",
575 "BriefDescription": "SIMD Vector Integer Uops retired (Precise Event)"
576 },
577 {
578 "EventCode": "0xDB",
579 "Counter": "0,1,2,3",
580 "UMask": "0x1",
581 "EventName": "UOP_UNFUSION",
582 "SampleAfterValue": "2000000",
583 "BriefDescription": "Uop unfusions due to FP exceptions"
584 },
585 {
586 "EventCode": "0xD1",
587 "Counter": "0,1,2,3",
588 "UMask": "0x4",
589 "EventName": "UOPS_DECODED.ESP_FOLDING",
590 "SampleAfterValue": "2000000",
591 "BriefDescription": "Stack pointer instructions decoded"
592 },
593 {
594 "EventCode": "0xD1",
595 "Counter": "0,1,2,3",
596 "UMask": "0x8",
597 "EventName": "UOPS_DECODED.ESP_SYNC",
598 "SampleAfterValue": "2000000",
599 "BriefDescription": "Stack pointer sync operations"
600 },
601 {
602 "EventCode": "0xD1",
603 "Counter": "0,1,2,3",
604 "UMask": "0x2",
605 "EventName": "UOPS_DECODED.MS_CYCLES_ACTIVE",
606 "SampleAfterValue": "2000000",
607 "BriefDescription": "Uops decoded by Microcode Sequencer",
608 "CounterMask": "1"
609 },
610 {
611 "EventCode": "0xD1",
612 "Invert": "1",
613 "Counter": "0,1,2,3",
614 "UMask": "0x1",
615 "EventName": "UOPS_DECODED.STALL_CYCLES",
616 "SampleAfterValue": "2000000",
617 "BriefDescription": "Cycles no Uops are decoded",
618 "CounterMask": "1"
619 },
620 {
621 "EventCode": "0xB1",
622 "Counter": "0,1,2,3",
623 "UMask": "0x3f",
624 "AnyThread": "1",
625 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES",
626 "SampleAfterValue": "2000000",
627 "BriefDescription": "Cycles Uops executed on any port (core count)",
628 "CounterMask": "1"
629 },
630 {
631 "EventCode": "0xB1",
632 "Counter": "0,1,2,3",
633 "UMask": "0x1f",
634 "AnyThread": "1",
635 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES_NO_PORT5",
636 "SampleAfterValue": "2000000",
637 "BriefDescription": "Cycles Uops executed on ports 0-4 (core count)",
638 "CounterMask": "1"
639 },
640 {
641 "EventCode": "0xB1",
642 "Invert": "1",
643 "Counter": "0,1,2,3",
644 "UMask": "0x3f",
645 "AnyThread": "1",
646 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT",
647 "SampleAfterValue": "2000000",
648 "BriefDescription": "Uops executed on any port (core count)",
649 "CounterMask": "1",
650 "EdgeDetect": "1"
651 },
652 {
653 "EventCode": "0xB1",
654 "Invert": "1",
655 "Counter": "0,1,2,3",
656 "UMask": "0x1f",
657 "AnyThread": "1",
658 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT_NO_PORT5",
659 "SampleAfterValue": "2000000",
660 "BriefDescription": "Uops executed on ports 0-4 (core count)",
661 "CounterMask": "1",
662 "EdgeDetect": "1"
663 },
664 {
665 "EventCode": "0xB1",
666 "Invert": "1",
667 "Counter": "0,1,2,3",
668 "UMask": "0x3f",
669 "AnyThread": "1",
670 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES",
671 "SampleAfterValue": "2000000",
672 "BriefDescription": "Cycles no Uops issued on any port (core count)",
673 "CounterMask": "1"
674 },
675 {
676 "EventCode": "0xB1",
677 "Invert": "1",
678 "Counter": "0,1,2,3",
679 "UMask": "0x1f",
680 "AnyThread": "1",
681 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES_NO_PORT5",
682 "SampleAfterValue": "2000000",
683 "BriefDescription": "Cycles no Uops issued on ports 0-4 (core count)",
684 "CounterMask": "1"
685 },
686 {
687 "EventCode": "0xB1",
688 "Counter": "0,1,2,3",
689 "UMask": "0x1",
690 "EventName": "UOPS_EXECUTED.PORT0",
691 "SampleAfterValue": "2000000",
692 "BriefDescription": "Uops executed on port 0"
693 },
694 {
695 "EventCode": "0xB1",
696 "Counter": "0,1,2,3",
697 "UMask": "0x40",
698 "EventName": "UOPS_EXECUTED.PORT015",
699 "SampleAfterValue": "2000000",
700 "BriefDescription": "Uops issued on ports 0, 1 or 5"
701 },
702 {
703 "EventCode": "0xB1",
704 "Invert": "1",
705 "Counter": "0,1,2,3",
706 "UMask": "0x40",
707 "EventName": "UOPS_EXECUTED.PORT015_STALL_CYCLES",
708 "SampleAfterValue": "2000000",
709 "BriefDescription": "Cycles no Uops issued on ports 0, 1 or 5",
710 "CounterMask": "1"
711 },
712 {
713 "EventCode": "0xB1",
714 "Counter": "0,1,2,3",
715 "UMask": "0x2",
716 "EventName": "UOPS_EXECUTED.PORT1",
717 "SampleAfterValue": "2000000",
718 "BriefDescription": "Uops executed on port 1"
719 },
720 {
721 "EventCode": "0xB1",
722 "Counter": "0,1,2,3",
723 "UMask": "0x4",
724 "AnyThread": "1",
725 "EventName": "UOPS_EXECUTED.PORT2_CORE",
726 "SampleAfterValue": "2000000",
727 "BriefDescription": "Uops executed on port 2 (core count)"
728 },
729 {
730 "EventCode": "0xB1",
731 "Counter": "0,1,2,3",
732 "UMask": "0x80",
733 "AnyThread": "1",
734 "EventName": "UOPS_EXECUTED.PORT234_CORE",
735 "SampleAfterValue": "2000000",
736 "BriefDescription": "Uops issued on ports 2, 3 or 4"
737 },
738 {
739 "EventCode": "0xB1",
740 "Counter": "0,1,2,3",
741 "UMask": "0x8",
742 "AnyThread": "1",
743 "EventName": "UOPS_EXECUTED.PORT3_CORE",
744 "SampleAfterValue": "2000000",
745 "BriefDescription": "Uops executed on port 3 (core count)"
746 },
747 {
748 "EventCode": "0xB1",
749 "Counter": "0,1,2,3",
750 "UMask": "0x10",
751 "AnyThread": "1",
752 "EventName": "UOPS_EXECUTED.PORT4_CORE",
753 "SampleAfterValue": "2000000",
754 "BriefDescription": "Uops executed on port 4 (core count)"
755 },
756 {
757 "EventCode": "0xB1",
758 "Counter": "0,1,2,3",
759 "UMask": "0x20",
760 "EventName": "UOPS_EXECUTED.PORT5",
761 "SampleAfterValue": "2000000",
762 "BriefDescription": "Uops executed on port 5"
763 },
764 {
765 "EventCode": "0xE",
766 "Counter": "0,1,2,3",
767 "UMask": "0x1",
768 "EventName": "UOPS_ISSUED.ANY",
769 "SampleAfterValue": "2000000",
770 "BriefDescription": "Uops issued"
771 },
772 {
773 "EventCode": "0xE",
774 "Invert": "1",
775 "Counter": "0,1,2,3",
776 "UMask": "0x1",
777 "AnyThread": "1",
778 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
779 "SampleAfterValue": "2000000",
780 "BriefDescription": "Cycles no Uops were issued on any thread",
781 "CounterMask": "1"
782 },
783 {
784 "EventCode": "0xE",
785 "Counter": "0,1,2,3",
786 "UMask": "0x1",
787 "AnyThread": "1",
788 "EventName": "UOPS_ISSUED.CYCLES_ALL_THREADS",
789 "SampleAfterValue": "2000000",
790 "BriefDescription": "Cycles Uops were issued on either thread",
791 "CounterMask": "1"
792 },
793 {
794 "EventCode": "0xE",
795 "Counter": "0,1,2,3",
796 "UMask": "0x2",
797 "EventName": "UOPS_ISSUED.FUSED",
798 "SampleAfterValue": "2000000",
799 "BriefDescription": "Fused Uops issued"
800 },
801 {
802 "EventCode": "0xE",
803 "Invert": "1",
804 "Counter": "0,1,2,3",
805 "UMask": "0x1",
806 "EventName": "UOPS_ISSUED.STALL_CYCLES",
807 "SampleAfterValue": "2000000",
808 "BriefDescription": "Cycles no Uops were issued",
809 "CounterMask": "1"
810 },
811 {
812 "PEBS": "1",
813 "EventCode": "0xC2",
814 "Counter": "0,1,2,3",
815 "UMask": "0x1",
816 "EventName": "UOPS_RETIRED.ACTIVE_CYCLES",
817 "SampleAfterValue": "2000000",
818 "BriefDescription": "Cycles Uops are being retired",
819 "CounterMask": "1"
820 },
821 {
822 "PEBS": "1",
823 "EventCode": "0xC2",
824 "Counter": "0,1,2,3",
825 "UMask": "0x1",
826 "EventName": "UOPS_RETIRED.ANY",
827 "SampleAfterValue": "2000000",
828 "BriefDescription": "Uops retired (Precise Event)"
829 },
830 {
831 "PEBS": "1",
832 "EventCode": "0xC2",
833 "Counter": "0,1,2,3",
834 "UMask": "0x4",
835 "EventName": "UOPS_RETIRED.MACRO_FUSED",
836 "SampleAfterValue": "2000000",
837 "BriefDescription": "Macro-fused Uops retired (Precise Event)"
838 },
839 {
840 "PEBS": "1",
841 "EventCode": "0xC2",
842 "Counter": "0,1,2,3",
843 "UMask": "0x2",
844 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
845 "SampleAfterValue": "2000000",
846 "BriefDescription": "Retirement slots used (Precise Event)"
847 },
848 {
849 "PEBS": "1",
850 "EventCode": "0xC2",
851 "Invert": "1",
852 "Counter": "0,1,2,3",
853 "UMask": "0x1",
854 "EventName": "UOPS_RETIRED.STALL_CYCLES",
855 "SampleAfterValue": "2000000",
856 "BriefDescription": "Cycles Uops are not retiring (Precise Event)",
857 "CounterMask": "1"
858 },
859 {
860 "PEBS": "1",
861 "EventCode": "0xC2",
862 "Invert": "1",
863 "Counter": "0,1,2,3",
864 "UMask": "0x1",
865 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
866 "SampleAfterValue": "2000000",
867 "BriefDescription": "Total cycles using precise uop retired event (Precise Event)",
868 "CounterMask": "16"
869 },
870 {
871 "PEBS": "2",
872 "EventCode": "0xC0",
873 "Invert": "1",
874 "Counter": "0,1,2,3",
875 "UMask": "0x1",
876 "EventName": "INST_RETIRED.TOTAL_CYCLES_PS",
877 "SampleAfterValue": "2000000",
878 "BriefDescription": "Total cycles (Precise Event)",
879 "CounterMask": "16"
880 }
881] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/nehalemex/virtual-memory.json b/tools/perf/pmu-events/arch/x86/nehalemex/virtual-memory.json
new file mode 100644
index 000000000000..0596094e0ee9
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/nehalemex/virtual-memory.json
@@ -0,0 +1,109 @@
1[
2 {
3 "EventCode": "0x8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "DTLB_LOAD_MISSES.ANY",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "DTLB load misses"
9 },
10 {
11 "EventCode": "0x8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x20",
14 "EventName": "DTLB_LOAD_MISSES.PDE_MISS",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "DTLB load miss caused by low part of address"
17 },
18 {
19 "EventCode": "0x8",
20 "Counter": "0,1,2,3",
21 "UMask": "0x10",
22 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "DTLB second level hit"
25 },
26 {
27 "EventCode": "0x8",
28 "Counter": "0,1,2,3",
29 "UMask": "0x2",
30 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "DTLB load miss page walks complete"
33 },
34 {
35 "EventCode": "0x49",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "DTLB_MISSES.ANY",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "DTLB misses"
41 },
42 {
43 "EventCode": "0x49",
44 "Counter": "0,1,2,3",
45 "UMask": "0x10",
46 "EventName": "DTLB_MISSES.STLB_HIT",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "DTLB first level misses but second level hit"
49 },
50 {
51 "EventCode": "0x49",
52 "Counter": "0,1,2,3",
53 "UMask": "0x2",
54 "EventName": "DTLB_MISSES.WALK_COMPLETED",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "DTLB miss page walks"
57 },
58 {
59 "EventCode": "0xAE",
60 "Counter": "0,1,2,3",
61 "UMask": "0x1",
62 "EventName": "ITLB_FLUSH",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "ITLB flushes"
65 },
66 {
67 "PEBS": "1",
68 "EventCode": "0xC8",
69 "Counter": "0,1,2,3",
70 "UMask": "0x20",
71 "EventName": "ITLB_MISS_RETIRED",
72 "SampleAfterValue": "200000",
73 "BriefDescription": "Retired instructions that missed the ITLB (Precise Event)"
74 },
75 {
76 "EventCode": "0x85",
77 "Counter": "0,1,2,3",
78 "UMask": "0x1",
79 "EventName": "ITLB_MISSES.ANY",
80 "SampleAfterValue": "200000",
81 "BriefDescription": "ITLB miss"
82 },
83 {
84 "EventCode": "0x85",
85 "Counter": "0,1,2,3",
86 "UMask": "0x2",
87 "EventName": "ITLB_MISSES.WALK_COMPLETED",
88 "SampleAfterValue": "200000",
89 "BriefDescription": "ITLB miss page walks"
90 },
91 {
92 "PEBS": "1",
93 "EventCode": "0xCB",
94 "Counter": "0,1,2,3",
95 "UMask": "0x80",
96 "EventName": "MEM_LOAD_RETIRED.DTLB_MISS",
97 "SampleAfterValue": "200000",
98 "BriefDescription": "Retired loads that miss the DTLB (Precise Event)"
99 },
100 {
101 "PEBS": "1",
102 "EventCode": "0xC",
103 "Counter": "0,1,2,3",
104 "UMask": "0x1",
105 "EventName": "MEM_STORE_RETIRED.DTLB_MISS",
106 "SampleAfterValue": "200000",
107 "BriefDescription": "Retired stores that miss the DTLB (Precise Event)"
108 }
109] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/sandybridge/cache.json b/tools/perf/pmu-events/arch/x86/sandybridge/cache.json
new file mode 100644
index 000000000000..bef73c499f83
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/sandybridge/cache.json
@@ -0,0 +1,1879 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xD0",
5 "Counter": "0,1,2,3",
6 "UMask": "0x11",
7 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_LOADS",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Retired load uops that miss the STLB.",
10 "CounterHTOff": "0,1,2,3"
11 },
12 {
13 "PEBS": "1",
14 "EventCode": "0xD0",
15 "Counter": "0,1,2,3",
16 "UMask": "0x12",
17 "EventName": "MEM_UOPS_RETIRED.STLB_MISS_STORES",
18 "SampleAfterValue": "100003",
19 "BriefDescription": "Retired store uops that miss the STLB.",
20 "CounterHTOff": "0,1,2,3"
21 },
22 {
23 "PEBS": "1",
24 "EventCode": "0xD0",
25 "Counter": "0,1,2,3",
26 "UMask": "0x21",
27 "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
28 "SampleAfterValue": "100007",
29 "BriefDescription": "Retired load uops with locked access.",
30 "CounterHTOff": "0,1,2,3"
31 },
32 {
33 "PEBS": "1",
34 "PublicDescription": "This event counts line-splitted load uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
35 "EventCode": "0xD0",
36 "Counter": "0,1,2,3",
37 "UMask": "0x41",
38 "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
39 "SampleAfterValue": "100003",
40 "BriefDescription": "Retired load uops that split across a cacheline boundary.",
41 "CounterHTOff": "0,1,2,3"
42 },
43 {
44 "PEBS": "1",
45 "PublicDescription": "This event counts line-splitted store uops retired to the architected path. A line split is across 64B cache-line which includes a page split (4K).",
46 "EventCode": "0xD0",
47 "Counter": "0,1,2,3",
48 "UMask": "0x42",
49 "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
50 "SampleAfterValue": "100003",
51 "BriefDescription": "Retired store uops that split across a cacheline boundary.",
52 "CounterHTOff": "0,1,2,3"
53 },
54 {
55 "PEBS": "1",
56 "PublicDescription": "This event counts the number of load uops retired",
57 "EventCode": "0xD0",
58 "Counter": "0,1,2,3",
59 "UMask": "0x81",
60 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
61 "SampleAfterValue": "2000003",
62 "BriefDescription": "All retired load uops.",
63 "CounterHTOff": "0,1,2,3"
64 },
65 {
66 "PEBS": "1",
67 "PublicDescription": "This event counts the number of store uops retired.",
68 "EventCode": "0xD0",
69 "Counter": "0,1,2,3",
70 "UMask": "0x82",
71 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
72 "SampleAfterValue": "2000003",
73 "BriefDescription": "All retired store uops.",
74 "CounterHTOff": "0,1,2,3"
75 },
76 {
77 "PEBS": "1",
78 "EventCode": "0xD1",
79 "Counter": "0,1,2,3",
80 "UMask": "0x1",
81 "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
82 "SampleAfterValue": "2000003",
83 "BriefDescription": "Retired load uops with L1 cache hits as data sources.",
84 "CounterHTOff": "0,1,2,3"
85 },
86 {
87 "PEBS": "1",
88 "EventCode": "0xD1",
89 "Counter": "0,1,2,3",
90 "UMask": "0x2",
91 "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
92 "SampleAfterValue": "100003",
93 "BriefDescription": "Retired load uops with L2 cache hits as data sources.",
94 "CounterHTOff": "0,1,2,3"
95 },
96 {
97 "PEBS": "1",
98 "PublicDescription": "This event counts retired load uops that hit in the last-level (L3) cache without snoops required.",
99 "EventCode": "0xD1",
100 "Counter": "0,1,2,3",
101 "UMask": "0x4",
102 "EventName": "MEM_LOAD_UOPS_RETIRED.LLC_HIT",
103 "SampleAfterValue": "50021",
104 "BriefDescription": "Retired load uops which data sources were data hits in LLC without snoops required.",
105 "CounterHTOff": "0,1,2,3"
106 },
107 {
108 "PEBS": "1",
109 "EventCode": "0xD1",
110 "Counter": "0,1,2,3",
111 "UMask": "0x40",
112 "EventName": "MEM_LOAD_UOPS_RETIRED.HIT_LFB",
113 "SampleAfterValue": "100003",
114 "BriefDescription": "Retired load uops which data sources were load uops missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
115 "CounterHTOff": "0,1,2,3"
116 },
117 {
118 "PEBS": "1",
119 "EventCode": "0xD2",
120 "Counter": "0,1,2,3",
121 "UMask": "0x1",
122 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS",
123 "SampleAfterValue": "20011",
124 "BriefDescription": "Retired load uops which data sources were LLC hit and cross-core snoop missed in on-pkg core cache.",
125 "CounterHTOff": "0,1,2,3"
126 },
127 {
128 "PEBS": "1",
129 "PublicDescription": "This event counts retired load uops that hit in the last-level cache (L3) and were found in a non-modified state in a neighboring core's private cache (same package). Since the last level cache is inclusive, hits to the L3 may require snooping the private L2 caches of any cores on the same socket that have the line. In this case, a snoop was required, and another L2 had the line in a non-modified state.",
130 "EventCode": "0xD2",
131 "Counter": "0,1,2,3",
132 "UMask": "0x2",
133 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT",
134 "SampleAfterValue": "20011",
135 "BriefDescription": "Retired load uops which data sources were LLC and cross-core snoop hits in on-pkg core cache.",
136 "CounterHTOff": "0,1,2,3"
137 },
138 {
139 "PEBS": "1",
140 "PublicDescription": "This event counts retired load uops that hit in the last-level cache (L3) and were found in a non-modified state in a neighboring core's private cache (same package). Since the last level cache is inclusive, hits to the L3 may require snooping the private L2 caches of any cores on the same socket that have the line. In this case, a snoop was required, and another L2 had the line in a modified state, so the line had to be invalidated in that L2 cache and transferred to the requesting L2.",
141 "EventCode": "0xD2",
142 "Counter": "0,1,2,3",
143 "UMask": "0x4",
144 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM",
145 "SampleAfterValue": "20011",
146 "BriefDescription": "Retired load uops which data sources were HitM responses from shared LLC.",
147 "CounterHTOff": "0,1,2,3"
148 },
149 {
150 "PEBS": "1",
151 "EventCode": "0xD2",
152 "Counter": "0,1,2,3",
153 "UMask": "0x8",
154 "EventName": "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_NONE",
155 "SampleAfterValue": "100003",
156 "BriefDescription": "Retired load uops which data sources were hits in LLC without snoops required.",
157 "CounterHTOff": "0,1,2,3"
158 },
159 {
160 "PEBS": "1",
161 "PublicDescription": "This event counts retired demand loads that missed the last-level (L3) cache. This means that the load is usually satisfied from memory in a client system or possibly from the remote socket in a server. Demand loads are non speculative load uops.",
162 "EventCode": "0xD4",
163 "Counter": "0,1,2,3",
164 "UMask": "0x2",
165 "EventName": "MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS",
166 "SampleAfterValue": "100007",
167 "BriefDescription": "Retired load uops with unknown information as data source in cache serviced the load.",
168 "CounterHTOff": "0,1,2,3"
169 },
170 {
171 "PublicDescription": "This event counts L1D data line replacements. Replacements occur when a new line is brought into the cache, causing eviction of a line loaded earlier. ",
172 "EventCode": "0x51",
173 "Counter": "0,1,2,3",
174 "UMask": "0x1",
175 "EventName": "L1D.REPLACEMENT",
176 "SampleAfterValue": "2000003",
177 "BriefDescription": "L1D data line replacements.",
178 "CounterHTOff": "0,1,2,3,4,5,6,7"
179 },
180 {
181 "EventCode": "0x51",
182 "Counter": "0,1,2,3",
183 "UMask": "0x2",
184 "EventName": "L1D.ALLOCATED_IN_M",
185 "SampleAfterValue": "2000003",
186 "BriefDescription": "Allocated L1D data cache lines in M state.",
187 "CounterHTOff": "0,1,2,3,4,5,6,7"
188 },
189 {
190 "EventCode": "0x51",
191 "Counter": "0,1,2,3",
192 "UMask": "0x4",
193 "EventName": "L1D.EVICTION",
194 "SampleAfterValue": "2000003",
195 "BriefDescription": "L1D data cache lines in M state evicted due to replacement.",
196 "CounterHTOff": "0,1,2,3,4,5,6,7"
197 },
198 {
199 "EventCode": "0x51",
200 "Counter": "0,1,2,3",
201 "UMask": "0x8",
202 "EventName": "L1D.ALL_M_REPLACEMENT",
203 "SampleAfterValue": "2000003",
204 "BriefDescription": "Cache lines in M state evicted out of L1D due to Snoop HitM or dirty line replacement.",
205 "CounterHTOff": "0,1,2,3,4,5,6,7"
206 },
207 {
208 "EventCode": "0x48",
209 "Counter": "2",
210 "UMask": "0x1",
211 "EventName": "L1D_PEND_MISS.PENDING",
212 "SampleAfterValue": "2000003",
213 "BriefDescription": "L1D miss oustandings duration in cycles.",
214 "CounterHTOff": "2"
215 },
216 {
217 "EventCode": "0x48",
218 "Counter": "2",
219 "UMask": "0x1",
220 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
221 "SampleAfterValue": "2000003",
222 "BriefDescription": "Cycles with L1D load Misses outstanding.",
223 "CounterMask": "1",
224 "CounterHTOff": "2"
225 },
226 {
227 "EventCode": "0x63",
228 "Counter": "0,1,2,3",
229 "UMask": "0x2",
230 "EventName": "LOCK_CYCLES.CACHE_LOCK_DURATION",
231 "SampleAfterValue": "2000003",
232 "BriefDescription": "Cycles when L1D is locked.",
233 "CounterHTOff": "0,1,2,3,4,5,6,7"
234 },
235 {
236 "EventCode": "0x60",
237 "Counter": "0,1,2,3",
238 "UMask": "0x1",
239 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
240 "SampleAfterValue": "2000003",
241 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
242 "CounterHTOff": "0,1,2,3,4,5,6,7"
243 },
244 {
245 "EventCode": "0x60",
246 "Counter": "0,1,2,3",
247 "UMask": "0x1",
248 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
249 "SampleAfterValue": "2000003",
250 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
251 "CounterMask": "1",
252 "CounterHTOff": "0,1,2,3,4,5,6,7"
253 },
254 {
255 "EventCode": "0x60",
256 "Counter": "0,1,2,3",
257 "UMask": "0x4",
258 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
259 "SampleAfterValue": "2000003",
260 "BriefDescription": "Offcore outstanding RFO store transactions in SuperQueue (SQ), queue to uncore.",
261 "CounterHTOff": "0,1,2,3,4,5,6,7"
262 },
263 {
264 "EventCode": "0x60",
265 "Counter": "0,1,2,3",
266 "UMask": "0x8",
267 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
268 "SampleAfterValue": "2000003",
269 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore.",
270 "CounterHTOff": "0,1,2,3,4,5,6,7"
271 },
272 {
273 "EventCode": "0x60",
274 "Counter": "0,1,2,3",
275 "UMask": "0x8",
276 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
277 "SampleAfterValue": "2000003",
278 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
279 "CounterMask": "1",
280 "CounterHTOff": "0,1,2,3,4,5,6,7"
281 },
282 {
283 "EventCode": "0xB0",
284 "Counter": "0,1,2,3",
285 "UMask": "0x1",
286 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
287 "SampleAfterValue": "100003",
288 "BriefDescription": "Demand Data Read requests sent to uncore.",
289 "CounterHTOff": "0,1,2,3,4,5,6,7"
290 },
291 {
292 "EventCode": "0xB0",
293 "Counter": "0,1,2,3",
294 "UMask": "0x2",
295 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
296 "SampleAfterValue": "100003",
297 "BriefDescription": "Cacheable and noncachaeble code read requests.",
298 "CounterHTOff": "0,1,2,3,4,5,6,7"
299 },
300 {
301 "EventCode": "0xB0",
302 "Counter": "0,1,2,3",
303 "UMask": "0x4",
304 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
305 "SampleAfterValue": "100003",
306 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM.",
307 "CounterHTOff": "0,1,2,3,4,5,6,7"
308 },
309 {
310 "EventCode": "0xB0",
311 "Counter": "0,1,2,3",
312 "UMask": "0x8",
313 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
314 "SampleAfterValue": "100003",
315 "BriefDescription": "Demand and prefetch data reads.",
316 "CounterHTOff": "0,1,2,3,4,5,6,7"
317 },
318 {
319 "EventCode": "0xB2",
320 "Counter": "0,1,2,3",
321 "UMask": "0x1",
322 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
323 "SampleAfterValue": "2000003",
324 "BriefDescription": "Cases when offcore requests buffer cannot take more entries for core.",
325 "CounterHTOff": "0,1,2,3,4,5,6,7"
326 },
327 {
328 "EventCode": "0x24",
329 "Counter": "0,1,2,3",
330 "UMask": "0x1",
331 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
332 "SampleAfterValue": "200003",
333 "BriefDescription": "Demand Data Read requests that hit L2 cache.",
334 "CounterHTOff": "0,1,2,3,4,5,6,7"
335 },
336 {
337 "EventCode": "0x24",
338 "Counter": "0,1,2,3",
339 "UMask": "0x4",
340 "EventName": "L2_RQSTS.RFO_HIT",
341 "SampleAfterValue": "200003",
342 "BriefDescription": "RFO requests that hit L2 cache.",
343 "CounterHTOff": "0,1,2,3,4,5,6,7"
344 },
345 {
346 "EventCode": "0x24",
347 "Counter": "0,1,2,3",
348 "UMask": "0x8",
349 "EventName": "L2_RQSTS.RFO_MISS",
350 "SampleAfterValue": "200003",
351 "BriefDescription": "RFO requests that miss L2 cache.",
352 "CounterHTOff": "0,1,2,3,4,5,6,7"
353 },
354 {
355 "EventCode": "0x24",
356 "Counter": "0,1,2,3",
357 "UMask": "0x10",
358 "EventName": "L2_RQSTS.CODE_RD_HIT",
359 "SampleAfterValue": "200003",
360 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
361 "CounterHTOff": "0,1,2,3,4,5,6,7"
362 },
363 {
364 "EventCode": "0x24",
365 "Counter": "0,1,2,3",
366 "UMask": "0x20",
367 "EventName": "L2_RQSTS.CODE_RD_MISS",
368 "SampleAfterValue": "200003",
369 "BriefDescription": "L2 cache misses when fetching instructions.",
370 "CounterHTOff": "0,1,2,3,4,5,6,7"
371 },
372 {
373 "EventCode": "0x24",
374 "Counter": "0,1,2,3",
375 "UMask": "0x40",
376 "EventName": "L2_RQSTS.PF_HIT",
377 "SampleAfterValue": "200003",
378 "BriefDescription": "Requests from the L2 hardware prefetchers that hit L2 cache.",
379 "CounterHTOff": "0,1,2,3,4,5,6,7"
380 },
381 {
382 "EventCode": "0x24",
383 "Counter": "0,1,2,3",
384 "UMask": "0x80",
385 "EventName": "L2_RQSTS.PF_MISS",
386 "SampleAfterValue": "200003",
387 "BriefDescription": "Requests from the L2 hardware prefetchers that miss L2 cache.",
388 "CounterHTOff": "0,1,2,3,4,5,6,7"
389 },
390 {
391 "EventCode": "0x27",
392 "Counter": "0,1,2,3",
393 "UMask": "0x1",
394 "EventName": "L2_STORE_LOCK_RQSTS.MISS",
395 "SampleAfterValue": "200003",
396 "BriefDescription": "RFOs that miss cache lines.",
397 "CounterHTOff": "0,1,2,3,4,5,6,7"
398 },
399 {
400 "EventCode": "0x27",
401 "Counter": "0,1,2,3",
402 "UMask": "0x4",
403 "EventName": "L2_STORE_LOCK_RQSTS.HIT_E",
404 "SampleAfterValue": "200003",
405 "BriefDescription": "RFOs that hit cache lines in E state.",
406 "CounterHTOff": "0,1,2,3,4,5,6,7"
407 },
408 {
409 "EventCode": "0x27",
410 "Counter": "0,1,2,3",
411 "UMask": "0x8",
412 "EventName": "L2_STORE_LOCK_RQSTS.HIT_M",
413 "SampleAfterValue": "200003",
414 "BriefDescription": "RFOs that hit cache lines in M state.",
415 "CounterHTOff": "0,1,2,3,4,5,6,7"
416 },
417 {
418 "EventCode": "0x27",
419 "Counter": "0,1,2,3",
420 "UMask": "0xf",
421 "EventName": "L2_STORE_LOCK_RQSTS.ALL",
422 "SampleAfterValue": "200003",
423 "BriefDescription": "RFOs that access cache lines in any state.",
424 "CounterHTOff": "0,1,2,3,4,5,6,7"
425 },
426 {
427 "EventCode": "0x28",
428 "Counter": "0,1,2,3",
429 "UMask": "0x1",
430 "EventName": "L2_L1D_WB_RQSTS.MISS",
431 "SampleAfterValue": "200003",
432 "BriefDescription": "Count the number of modified Lines evicted from L1 and missed L2. (Non-rejected WBs from the DCU.).",
433 "CounterHTOff": "0,1,2,3,4,5,6,7"
434 },
435 {
436 "EventCode": "0x28",
437 "Counter": "0,1,2,3",
438 "UMask": "0x2",
439 "EventName": "L2_L1D_WB_RQSTS.HIT_S",
440 "SampleAfterValue": "200003",
441 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in S state.",
442 "CounterHTOff": "0,1,2,3,4,5,6,7"
443 },
444 {
445 "EventCode": "0x28",
446 "Counter": "0,1,2,3",
447 "UMask": "0x4",
448 "EventName": "L2_L1D_WB_RQSTS.HIT_E",
449 "SampleAfterValue": "200003",
450 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in E state.",
451 "CounterHTOff": "0,1,2,3,4,5,6,7"
452 },
453 {
454 "EventCode": "0x28",
455 "Counter": "0,1,2,3",
456 "UMask": "0x8",
457 "EventName": "L2_L1D_WB_RQSTS.HIT_M",
458 "SampleAfterValue": "200003",
459 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in M state.",
460 "CounterHTOff": "0,1,2,3,4,5,6,7"
461 },
462 {
463 "EventCode": "0x28",
464 "Counter": "0,1,2,3",
465 "UMask": "0xf",
466 "EventName": "L2_L1D_WB_RQSTS.ALL",
467 "SampleAfterValue": "200003",
468 "BriefDescription": "Not rejected writebacks from L1D to L2 cache lines in any state.",
469 "CounterHTOff": "0,1,2,3,4,5,6,7"
470 },
471 {
472 "EventCode": "0xF0",
473 "Counter": "0,1,2,3",
474 "UMask": "0x1",
475 "EventName": "L2_TRANS.DEMAND_DATA_RD",
476 "SampleAfterValue": "200003",
477 "BriefDescription": "Demand Data Read requests that access L2 cache.",
478 "CounterHTOff": "0,1,2,3,4,5,6,7"
479 },
480 {
481 "EventCode": "0xF0",
482 "Counter": "0,1,2,3",
483 "UMask": "0x2",
484 "EventName": "L2_TRANS.RFO",
485 "SampleAfterValue": "200003",
486 "BriefDescription": "RFO requests that access L2 cache.",
487 "CounterHTOff": "0,1,2,3,4,5,6,7"
488 },
489 {
490 "EventCode": "0xF0",
491 "Counter": "0,1,2,3",
492 "UMask": "0x4",
493 "EventName": "L2_TRANS.CODE_RD",
494 "SampleAfterValue": "200003",
495 "BriefDescription": "L2 cache accesses when fetching instructions.",
496 "CounterHTOff": "0,1,2,3,4,5,6,7"
497 },
498 {
499 "EventCode": "0xF0",
500 "Counter": "0,1,2,3",
501 "UMask": "0x8",
502 "EventName": "L2_TRANS.ALL_PF",
503 "SampleAfterValue": "200003",
504 "BriefDescription": "L2 or LLC HW prefetches that access L2 cache.",
505 "CounterHTOff": "0,1,2,3,4,5,6,7"
506 },
507 {
508 "EventCode": "0xF0",
509 "Counter": "0,1,2,3",
510 "UMask": "0x10",
511 "EventName": "L2_TRANS.L1D_WB",
512 "SampleAfterValue": "200003",
513 "BriefDescription": "L1D writebacks that access L2 cache.",
514 "CounterHTOff": "0,1,2,3,4,5,6,7"
515 },
516 {
517 "EventCode": "0xF0",
518 "Counter": "0,1,2,3",
519 "UMask": "0x20",
520 "EventName": "L2_TRANS.L2_FILL",
521 "SampleAfterValue": "200003",
522 "BriefDescription": "L2 fill requests that access L2 cache.",
523 "CounterHTOff": "0,1,2,3,4,5,6,7"
524 },
525 {
526 "EventCode": "0xF0",
527 "Counter": "0,1,2,3",
528 "UMask": "0x40",
529 "EventName": "L2_TRANS.L2_WB",
530 "SampleAfterValue": "200003",
531 "BriefDescription": "L2 writebacks that access L2 cache.",
532 "CounterHTOff": "0,1,2,3,4,5,6,7"
533 },
534 {
535 "EventCode": "0xF0",
536 "Counter": "0,1,2,3",
537 "UMask": "0x80",
538 "EventName": "L2_TRANS.ALL_REQUESTS",
539 "SampleAfterValue": "200003",
540 "BriefDescription": "Transactions accessing L2 pipe.",
541 "CounterHTOff": "0,1,2,3,4,5,6,7"
542 },
543 {
544 "EventCode": "0xF1",
545 "Counter": "0,1,2,3",
546 "UMask": "0x1",
547 "EventName": "L2_LINES_IN.I",
548 "SampleAfterValue": "100003",
549 "BriefDescription": "L2 cache lines in I state filling L2.",
550 "CounterHTOff": "0,1,2,3,4,5,6,7"
551 },
552 {
553 "EventCode": "0xF1",
554 "Counter": "0,1,2,3",
555 "UMask": "0x2",
556 "EventName": "L2_LINES_IN.S",
557 "SampleAfterValue": "100003",
558 "BriefDescription": "L2 cache lines in S state filling L2.",
559 "CounterHTOff": "0,1,2,3,4,5,6,7"
560 },
561 {
562 "EventCode": "0xF1",
563 "Counter": "0,1,2,3",
564 "UMask": "0x4",
565 "EventName": "L2_LINES_IN.E",
566 "SampleAfterValue": "100003",
567 "BriefDescription": "L2 cache lines in E state filling L2.",
568 "CounterHTOff": "0,1,2,3,4,5,6,7"
569 },
570 {
571 "PublicDescription": "This event counts the number of L2 cache lines brought into the L2 cache. Lines are filled into the L2 cache when there was an L2 miss.",
572 "EventCode": "0xF1",
573 "Counter": "0,1,2,3",
574 "UMask": "0x7",
575 "EventName": "L2_LINES_IN.ALL",
576 "SampleAfterValue": "100003",
577 "BriefDescription": "L2 cache lines filling L2.",
578 "CounterHTOff": "0,1,2,3,4,5,6,7"
579 },
580 {
581 "EventCode": "0xF2",
582 "Counter": "0,1,2,3",
583 "UMask": "0x1",
584 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
585 "SampleAfterValue": "100003",
586 "BriefDescription": "Clean L2 cache lines evicted by demand.",
587 "CounterHTOff": "0,1,2,3,4,5,6,7"
588 },
589 {
590 "EventCode": "0xF2",
591 "Counter": "0,1,2,3",
592 "UMask": "0x2",
593 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
594 "SampleAfterValue": "100003",
595 "BriefDescription": "Dirty L2 cache lines evicted by demand.",
596 "CounterHTOff": "0,1,2,3,4,5,6,7"
597 },
598 {
599 "EventCode": "0xF2",
600 "Counter": "0,1,2,3",
601 "UMask": "0x4",
602 "EventName": "L2_LINES_OUT.PF_CLEAN",
603 "SampleAfterValue": "100003",
604 "BriefDescription": "Clean L2 cache lines evicted by L2 prefetch.",
605 "CounterHTOff": "0,1,2,3,4,5,6,7"
606 },
607 {
608 "EventCode": "0xF2",
609 "Counter": "0,1,2,3",
610 "UMask": "0x8",
611 "EventName": "L2_LINES_OUT.PF_DIRTY",
612 "SampleAfterValue": "100003",
613 "BriefDescription": "Dirty L2 cache lines evicted by L2 prefetch.",
614 "CounterHTOff": "0,1,2,3,4,5,6,7"
615 },
616 {
617 "EventCode": "0xF2",
618 "Counter": "0,1,2,3",
619 "UMask": "0xa",
620 "EventName": "L2_LINES_OUT.DIRTY_ALL",
621 "SampleAfterValue": "100003",
622 "BriefDescription": "Dirty L2 cache lines filling the L2.",
623 "CounterHTOff": "0,1,2,3,4,5,6,7"
624 },
625 {
626 "EventCode": "0x2E",
627 "Counter": "0,1,2,3",
628 "UMask": "0x41",
629 "EventName": "LONGEST_LAT_CACHE.MISS",
630 "SampleAfterValue": "100003",
631 "BriefDescription": "Core-originated cacheable demand requests missed LLC.",
632 "CounterHTOff": "0,1,2,3,4,5,6,7"
633 },
634 {
635 "EventCode": "0x2E",
636 "Counter": "0,1,2,3",
637 "UMask": "0x4f",
638 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
639 "SampleAfterValue": "100003",
640 "BriefDescription": "Core-originated cacheable demand requests that refer to LLC.",
641 "CounterHTOff": "0,1,2,3,4,5,6,7"
642 },
643 {
644 "EventCode": "0xF4",
645 "Counter": "0,1,2,3",
646 "UMask": "0x10",
647 "EventName": "SQ_MISC.SPLIT_LOCK",
648 "SampleAfterValue": "100003",
649 "BriefDescription": "Split locks in SQ.",
650 "CounterHTOff": "0,1,2,3,4,5,6,7"
651 },
652 {
653 "EventCode": "0x24",
654 "Counter": "0,1,2,3",
655 "UMask": "0x3",
656 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
657 "SampleAfterValue": "200003",
658 "BriefDescription": "Demand Data Read requests.",
659 "CounterHTOff": "0,1,2,3,4,5,6,7"
660 },
661 {
662 "EventCode": "0x24",
663 "Counter": "0,1,2,3",
664 "UMask": "0xc",
665 "EventName": "L2_RQSTS.ALL_RFO",
666 "SampleAfterValue": "200003",
667 "BriefDescription": "RFO requests to L2 cache.",
668 "CounterHTOff": "0,1,2,3,4,5,6,7"
669 },
670 {
671 "EventCode": "0x24",
672 "Counter": "0,1,2,3",
673 "UMask": "0x30",
674 "EventName": "L2_RQSTS.ALL_CODE_RD",
675 "SampleAfterValue": "200003",
676 "BriefDescription": "L2 code requests.",
677 "CounterHTOff": "0,1,2,3,4,5,6,7"
678 },
679 {
680 "EventCode": "0x24",
681 "Counter": "0,1,2,3",
682 "UMask": "0xc0",
683 "EventName": "L2_RQSTS.ALL_PF",
684 "SampleAfterValue": "200003",
685 "BriefDescription": "Requests from L2 hardware prefetchers.",
686 "CounterHTOff": "0,1,2,3,4,5,6,7"
687 },
688 {
689 "EventCode": "0xBF",
690 "Counter": "0,1,2,3",
691 "UMask": "0x5",
692 "EventName": "L1D_BLOCKS.BANK_CONFLICT_CYCLES",
693 "SampleAfterValue": "100003",
694 "BriefDescription": "Cycles when dispatched loads are cancelled due to L1D bank conflicts with other load ports.",
695 "CounterMask": "1",
696 "CounterHTOff": "0,1,2,3,4,5,6,7"
697 },
698 {
699 "EventCode": "0x60",
700 "Counter": "0,1,2,3",
701 "UMask": "0x4",
702 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
703 "SampleAfterValue": "2000003",
704 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle.",
705 "CounterMask": "1",
706 "CounterHTOff": "0,1,2,3,4,5,6,7"
707 },
708 {
709 "EventCode": "0x60",
710 "Counter": "0,1,2,3",
711 "UMask": "0x1",
712 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_C6",
713 "SampleAfterValue": "2000003",
714 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
715 "CounterMask": "6",
716 "CounterHTOff": "0,1,2,3,4,5,6,7"
717 },
718 {
719 "EventCode": "0x48",
720 "Counter": "2",
721 "UMask": "0x1",
722 "AnyThread": "1",
723 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
724 "SampleAfterValue": "2000003",
725 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
726 "CounterMask": "1",
727 "CounterHTOff": "2"
728 },
729 {
730 "EventCode": "0x48",
731 "Counter": "0,1,2,3",
732 "UMask": "0x2",
733 "EventName": "L1D_PEND_MISS.FB_FULL",
734 "SampleAfterValue": "2000003",
735 "BriefDescription": "Cycles a demand request was blocked due to Fill Buffers inavailability.",
736 "CounterMask": "1",
737 "CounterHTOff": "0,1,2,3,4,5,6,7"
738 },
739 {
740 "EventCode": "0xB7, 0xBB",
741 "MSRValue": "0x10003c0244",
742 "Counter": "0,1,2,3",
743 "UMask": "0x1",
744 "Offcore": "1",
745 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_HIT.HITM_OTHER_CORE",
746 "MSRIndex": "0x1a6,0x1a7",
747 "SampleAfterValue": "100003",
748 "BriefDescription": "Counts demand & prefetch code reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
749 "CounterHTOff": "0,1,2,3"
750 },
751 {
752 "EventCode": "0xB7, 0xBB",
753 "MSRValue": "0x1003c0244",
754 "Counter": "0,1,2,3",
755 "UMask": "0x1",
756 "Offcore": "1",
757 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_HIT.NO_SNOOP_NEEDED",
758 "MSRIndex": "0x1a6,0x1a7",
759 "SampleAfterValue": "100003",
760 "BriefDescription": "Counts demand & prefetch code reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
761 "CounterHTOff": "0,1,2,3"
762 },
763 {
764 "EventCode": "0xB7, 0xBB",
765 "MSRValue": "0x2003c0244",
766 "Counter": "0,1,2,3",
767 "UMask": "0x1",
768 "Offcore": "1",
769 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_HIT.SNOOP_MISS",
770 "MSRIndex": "0x1a6,0x1a7",
771 "SampleAfterValue": "100003",
772 "BriefDescription": "Counts demand & prefetch code reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
773 "CounterHTOff": "0,1,2,3"
774 },
775 {
776 "EventCode": "0xB7, 0xBB",
777 "MSRValue": "0x3f803c0091",
778 "Counter": "0,1,2,3",
779 "UMask": "0x1",
780 "Offcore": "1",
781 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.ANY_RESPONSE",
782 "MSRIndex": "0x1a6,0x1a7",
783 "SampleAfterValue": "100003",
784 "BriefDescription": "Counts all demand & prefetch data reads that hit in the LLC.",
785 "CounterHTOff": "0,1,2,3"
786 },
787 {
788 "EventCode": "0xB7, 0xBB",
789 "MSRValue": "0x4003c0091",
790 "Counter": "0,1,2,3",
791 "UMask": "0x1",
792 "Offcore": "1",
793 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
794 "MSRIndex": "0x1a6,0x1a7",
795 "SampleAfterValue": "100003",
796 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
797 "CounterHTOff": "0,1,2,3"
798 },
799 {
800 "EventCode": "0xB7, 0xBB",
801 "MSRValue": "0x10003c0091",
802 "Counter": "0,1,2,3",
803 "UMask": "0x1",
804 "Offcore": "1",
805 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
806 "MSRIndex": "0x1a6,0x1a7",
807 "SampleAfterValue": "100003",
808 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
809 "CounterHTOff": "0,1,2,3"
810 },
811 {
812 "EventCode": "0xB7, 0xBB",
813 "MSRValue": "0x1003c0091",
814 "Counter": "0,1,2,3",
815 "UMask": "0x1",
816 "Offcore": "1",
817 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
818 "MSRIndex": "0x1a6,0x1a7",
819 "SampleAfterValue": "100003",
820 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
821 "CounterHTOff": "0,1,2,3"
822 },
823 {
824 "EventCode": "0xB7, 0xBB",
825 "MSRValue": "0x2003c0091",
826 "Counter": "0,1,2,3",
827 "UMask": "0x1",
828 "Offcore": "1",
829 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_HIT.SNOOP_MISS",
830 "MSRIndex": "0x1a6,0x1a7",
831 "SampleAfterValue": "100003",
832 "BriefDescription": "Counts demand & prefetch data reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
833 "CounterHTOff": "0,1,2,3"
834 },
835 {
836 "EventCode": "0xB7, 0xBB",
837 "MSRValue": "0x3f803c0240",
838 "Counter": "0,1,2,3",
839 "UMask": "0x1",
840 "Offcore": "1",
841 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.LLC_HIT.ANY_RESPONSE",
842 "MSRIndex": "0x1a6,0x1a7",
843 "SampleAfterValue": "100003",
844 "BriefDescription": "Counts all prefetch code reads that hit in the LLC.",
845 "CounterHTOff": "0,1,2,3"
846 },
847 {
848 "EventCode": "0xB7, 0xBB",
849 "MSRValue": "0x4003c0240",
850 "Counter": "0,1,2,3",
851 "UMask": "0x1",
852 "Offcore": "1",
853 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
854 "MSRIndex": "0x1a6,0x1a7",
855 "SampleAfterValue": "100003",
856 "BriefDescription": "Counts prefetch code reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
857 "CounterHTOff": "0,1,2,3"
858 },
859 {
860 "EventCode": "0xB7, 0xBB",
861 "MSRValue": "0x10003c0240",
862 "Counter": "0,1,2,3",
863 "UMask": "0x1",
864 "Offcore": "1",
865 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.LLC_HIT.HITM_OTHER_CORE",
866 "MSRIndex": "0x1a6,0x1a7",
867 "SampleAfterValue": "100003",
868 "BriefDescription": "Counts prefetch code reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
869 "CounterHTOff": "0,1,2,3"
870 },
871 {
872 "EventCode": "0xB7, 0xBB",
873 "MSRValue": "0x1003c0240",
874 "Counter": "0,1,2,3",
875 "UMask": "0x1",
876 "Offcore": "1",
877 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.LLC_HIT.NO_SNOOP_NEEDED",
878 "MSRIndex": "0x1a6,0x1a7",
879 "SampleAfterValue": "100003",
880 "BriefDescription": "Counts prefetch code reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
881 "CounterHTOff": "0,1,2,3"
882 },
883 {
884 "EventCode": "0xB7, 0xBB",
885 "MSRValue": "0x2003c0240",
886 "Counter": "0,1,2,3",
887 "UMask": "0x1",
888 "Offcore": "1",
889 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.LLC_HIT.SNOOP_MISS",
890 "MSRIndex": "0x1a6,0x1a7",
891 "SampleAfterValue": "100003",
892 "BriefDescription": "Counts prefetch code reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
893 "CounterHTOff": "0,1,2,3"
894 },
895 {
896 "EventCode": "0xB7, 0xBB",
897 "MSRValue": "0x3f803c0090",
898 "Counter": "0,1,2,3",
899 "UMask": "0x1",
900 "Offcore": "1",
901 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.ANY_RESPONSE",
902 "MSRIndex": "0x1a6,0x1a7",
903 "SampleAfterValue": "100003",
904 "BriefDescription": "Counts all prefetch data reads that hit in the LLC.",
905 "CounterHTOff": "0,1,2,3"
906 },
907 {
908 "EventCode": "0xB7, 0xBB",
909 "MSRValue": "0x4003c0090",
910 "Counter": "0,1,2,3",
911 "UMask": "0x1",
912 "Offcore": "1",
913 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
914 "MSRIndex": "0x1a6,0x1a7",
915 "SampleAfterValue": "100003",
916 "BriefDescription": "Counts prefetch data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
917 "CounterHTOff": "0,1,2,3"
918 },
919 {
920 "EventCode": "0xB7, 0xBB",
921 "MSRValue": "0x10003c0090",
922 "Counter": "0,1,2,3",
923 "UMask": "0x1",
924 "Offcore": "1",
925 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
926 "MSRIndex": "0x1a6,0x1a7",
927 "SampleAfterValue": "100003",
928 "BriefDescription": "Counts prefetch data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
929 "CounterHTOff": "0,1,2,3"
930 },
931 {
932 "EventCode": "0xB7, 0xBB",
933 "MSRValue": "0x1003c0090",
934 "Counter": "0,1,2,3",
935 "UMask": "0x1",
936 "Offcore": "1",
937 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
938 "MSRIndex": "0x1a6,0x1a7",
939 "SampleAfterValue": "100003",
940 "BriefDescription": "Counts prefetch data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
941 "CounterHTOff": "0,1,2,3"
942 },
943 {
944 "EventCode": "0xB7, 0xBB",
945 "MSRValue": "0x2003c0090",
946 "Counter": "0,1,2,3",
947 "UMask": "0x1",
948 "Offcore": "1",
949 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_HIT.SNOOP_MISS",
950 "MSRIndex": "0x1a6,0x1a7",
951 "SampleAfterValue": "100003",
952 "BriefDescription": "Counts prefetch data reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
953 "CounterHTOff": "0,1,2,3"
954 },
955 {
956 "EventCode": "0xB7, 0xBB",
957 "MSRValue": "0x3f803c0120",
958 "Counter": "0,1,2,3",
959 "UMask": "0x1",
960 "Offcore": "1",
961 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.LLC_HIT.ANY_RESPONSE",
962 "MSRIndex": "0x1a6,0x1a7",
963 "SampleAfterValue": "100003",
964 "BriefDescription": "Counts all prefetch RFOs that hit in the LLC.",
965 "CounterHTOff": "0,1,2,3"
966 },
967 {
968 "EventCode": "0xB7, 0xBB",
969 "MSRValue": "0x4003c0120",
970 "Counter": "0,1,2,3",
971 "UMask": "0x1",
972 "Offcore": "1",
973 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
974 "MSRIndex": "0x1a6,0x1a7",
975 "SampleAfterValue": "100003",
976 "BriefDescription": "Counts prefetch RFOs that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
977 "CounterHTOff": "0,1,2,3"
978 },
979 {
980 "EventCode": "0xB7, 0xBB",
981 "MSRValue": "0x10003c0120",
982 "Counter": "0,1,2,3",
983 "UMask": "0x1",
984 "Offcore": "1",
985 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.LLC_HIT.HITM_OTHER_CORE",
986 "MSRIndex": "0x1a6,0x1a7",
987 "SampleAfterValue": "100003",
988 "BriefDescription": "Counts prefetch RFOs that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
989 "CounterHTOff": "0,1,2,3"
990 },
991 {
992 "EventCode": "0xB7, 0xBB",
993 "MSRValue": "0x1003c0120",
994 "Counter": "0,1,2,3",
995 "UMask": "0x1",
996 "Offcore": "1",
997 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.LLC_HIT.NO_SNOOP_NEEDED",
998 "MSRIndex": "0x1a6,0x1a7",
999 "SampleAfterValue": "100003",
1000 "BriefDescription": "Counts prefetch RFOs that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1001 "CounterHTOff": "0,1,2,3"
1002 },
1003 {
1004 "EventCode": "0xB7, 0xBB",
1005 "MSRValue": "0x2003c0120",
1006 "Counter": "0,1,2,3",
1007 "UMask": "0x1",
1008 "Offcore": "1",
1009 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.LLC_HIT.SNOOP_MISS",
1010 "MSRIndex": "0x1a6,0x1a7",
1011 "SampleAfterValue": "100003",
1012 "BriefDescription": "Counts prefetch RFOs that hit in the LLC and the snoops sent to sibling cores return clean response.",
1013 "CounterHTOff": "0,1,2,3"
1014 },
1015 {
1016 "EventCode": "0xB7, 0xBB",
1017 "MSRValue": "0x3f803c03f7",
1018 "Counter": "0,1,2,3",
1019 "UMask": "0x1",
1020 "Offcore": "1",
1021 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.ANY_RESPONSE",
1022 "MSRIndex": "0x1a6,0x1a7",
1023 "SampleAfterValue": "100003",
1024 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that hit in the LLC.",
1025 "CounterHTOff": "0,1,2,3"
1026 },
1027 {
1028 "EventCode": "0xB7, 0xBB",
1029 "MSRValue": "0x4003c03f7",
1030 "Counter": "0,1,2,3",
1031 "UMask": "0x1",
1032 "Offcore": "1",
1033 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1034 "MSRIndex": "0x1a6,0x1a7",
1035 "SampleAfterValue": "100003",
1036 "BriefDescription": "Counts data/code/rfo reads (demand & prefetch) that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1037 "CounterHTOff": "0,1,2,3"
1038 },
1039 {
1040 "EventCode": "0xB7, 0xBB",
1041 "MSRValue": "0x10003c03f7",
1042 "Counter": "0,1,2,3",
1043 "UMask": "0x1",
1044 "Offcore": "1",
1045 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.HITM_OTHER_CORE",
1046 "MSRIndex": "0x1a6,0x1a7",
1047 "SampleAfterValue": "100003",
1048 "BriefDescription": "Counts data/code/rfo reads (demand & prefetch) that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1049 "CounterHTOff": "0,1,2,3"
1050 },
1051 {
1052 "EventCode": "0xB7, 0xBB",
1053 "MSRValue": "0x1003c03f7",
1054 "Counter": "0,1,2,3",
1055 "UMask": "0x1",
1056 "Offcore": "1",
1057 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.NO_SNOOP_NEEDED",
1058 "MSRIndex": "0x1a6,0x1a7",
1059 "SampleAfterValue": "100003",
1060 "BriefDescription": "Counts data/code/rfo reads (demand & prefetch) that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1061 "CounterHTOff": "0,1,2,3"
1062 },
1063 {
1064 "EventCode": "0xB7, 0xBB",
1065 "MSRValue": "0x2003c03f7",
1066 "Counter": "0,1,2,3",
1067 "UMask": "0x1",
1068 "Offcore": "1",
1069 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_HIT.SNOOP_MISS",
1070 "MSRIndex": "0x1a6,0x1a7",
1071 "SampleAfterValue": "100003",
1072 "BriefDescription": "Counts data/code/rfo reads (demand & prefetch) that hit in the LLC and the snoops sent to sibling cores return clean response.",
1073 "CounterHTOff": "0,1,2,3"
1074 },
1075 {
1076 "EventCode": "0xB7, 0xBB",
1077 "MSRValue": "0x3f803c0122",
1078 "Counter": "0,1,2,3",
1079 "UMask": "0x1",
1080 "Offcore": "1",
1081 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.ANY_RESPONSE",
1082 "MSRIndex": "0x1a6,0x1a7",
1083 "SampleAfterValue": "100003",
1084 "BriefDescription": "Counts all demand & prefetch RFOs that hit in the LLC.",
1085 "CounterHTOff": "0,1,2,3"
1086 },
1087 {
1088 "EventCode": "0xB7, 0xBB",
1089 "MSRValue": "0x4003c0122",
1090 "Counter": "0,1,2,3",
1091 "UMask": "0x1",
1092 "Offcore": "1",
1093 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1094 "MSRIndex": "0x1a6,0x1a7",
1095 "SampleAfterValue": "100003",
1096 "BriefDescription": "Counts demand & prefetch RFOs that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1097 "CounterHTOff": "0,1,2,3"
1098 },
1099 {
1100 "EventCode": "0xB7, 0xBB",
1101 "MSRValue": "0x10003c0122",
1102 "Counter": "0,1,2,3",
1103 "UMask": "0x1",
1104 "Offcore": "1",
1105 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.HITM_OTHER_CORE",
1106 "MSRIndex": "0x1a6,0x1a7",
1107 "SampleAfterValue": "100003",
1108 "BriefDescription": "Counts demand & prefetch RFOs that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1109 "CounterHTOff": "0,1,2,3"
1110 },
1111 {
1112 "EventCode": "0xB7, 0xBB",
1113 "MSRValue": "0x1003c0122",
1114 "Counter": "0,1,2,3",
1115 "UMask": "0x1",
1116 "Offcore": "1",
1117 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.NO_SNOOP_NEEDED",
1118 "MSRIndex": "0x1a6,0x1a7",
1119 "SampleAfterValue": "100003",
1120 "BriefDescription": "Counts demand & prefetch RFOs that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1121 "CounterHTOff": "0,1,2,3"
1122 },
1123 {
1124 "EventCode": "0xB7, 0xBB",
1125 "MSRValue": "0x2003c0122",
1126 "Counter": "0,1,2,3",
1127 "UMask": "0x1",
1128 "Offcore": "1",
1129 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_HIT.SNOOP_MISS",
1130 "MSRIndex": "0x1a6,0x1a7",
1131 "SampleAfterValue": "100003",
1132 "BriefDescription": "Counts demand & prefetch RFOs that hit in the LLC and the snoops sent to sibling cores return clean response.",
1133 "CounterHTOff": "0,1,2,3"
1134 },
1135 {
1136 "EventCode": "0xB7, 0xBB",
1137 "MSRValue": "0x10008",
1138 "Counter": "0,1,2,3",
1139 "UMask": "0x1",
1140 "Offcore": "1",
1141 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
1142 "MSRIndex": "0x1a6,0x1a7",
1143 "SampleAfterValue": "100003",
1144 "BriefDescription": "COREWB & ANY_RESPONSE",
1145 "CounterHTOff": "0,1,2,3"
1146 },
1147 {
1148 "EventCode": "0xB7, 0xBB",
1149 "MSRValue": "0x3f803c0004",
1150 "Counter": "0,1,2,3",
1151 "UMask": "0x1",
1152 "Offcore": "1",
1153 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.ANY_RESPONSE",
1154 "MSRIndex": "0x1a6,0x1a7",
1155 "SampleAfterValue": "100003",
1156 "BriefDescription": "Counts all demand code reads that hit in the LLC.",
1157 "CounterHTOff": "0,1,2,3"
1158 },
1159 {
1160 "EventCode": "0xB7, 0xBB",
1161 "MSRValue": "0x4003c0004",
1162 "Counter": "0,1,2,3",
1163 "UMask": "0x1",
1164 "Offcore": "1",
1165 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1166 "MSRIndex": "0x1a6,0x1a7",
1167 "SampleAfterValue": "100003",
1168 "BriefDescription": "Counts demand code reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1169 "CounterHTOff": "0,1,2,3"
1170 },
1171 {
1172 "EventCode": "0xB7, 0xBB",
1173 "MSRValue": "0x10003c0004",
1174 "Counter": "0,1,2,3",
1175 "UMask": "0x1",
1176 "Offcore": "1",
1177 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.HITM_OTHER_CORE",
1178 "MSRIndex": "0x1a6,0x1a7",
1179 "SampleAfterValue": "100003",
1180 "BriefDescription": "Counts demand code reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1181 "CounterHTOff": "0,1,2,3"
1182 },
1183 {
1184 "EventCode": "0xB7, 0xBB",
1185 "MSRValue": "0x1003c0004",
1186 "Counter": "0,1,2,3",
1187 "UMask": "0x1",
1188 "Offcore": "1",
1189 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.NO_SNOOP_NEEDED",
1190 "MSRIndex": "0x1a6,0x1a7",
1191 "SampleAfterValue": "100003",
1192 "BriefDescription": "Counts demand code reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1193 "CounterHTOff": "0,1,2,3"
1194 },
1195 {
1196 "EventCode": "0xB7, 0xBB",
1197 "MSRValue": "0x2003c0004",
1198 "Counter": "0,1,2,3",
1199 "UMask": "0x1",
1200 "Offcore": "1",
1201 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_HIT.SNOOP_MISS",
1202 "MSRIndex": "0x1a6,0x1a7",
1203 "SampleAfterValue": "100003",
1204 "BriefDescription": "Counts demand code reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
1205 "CounterHTOff": "0,1,2,3"
1206 },
1207 {
1208 "EventCode": "0xB7, 0xBB",
1209 "MSRValue": "0x3f803c0001",
1210 "Counter": "0,1,2,3",
1211 "UMask": "0x1",
1212 "Offcore": "1",
1213 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.ANY_RESPONSE",
1214 "MSRIndex": "0x1a6,0x1a7",
1215 "SampleAfterValue": "100003",
1216 "BriefDescription": "Counts all demand data reads that hit in the LLC.",
1217 "CounterHTOff": "0,1,2,3"
1218 },
1219 {
1220 "EventCode": "0xB7, 0xBB",
1221 "MSRValue": "0x4003c0001",
1222 "Counter": "0,1,2,3",
1223 "UMask": "0x1",
1224 "Offcore": "1",
1225 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1226 "MSRIndex": "0x1a6,0x1a7",
1227 "SampleAfterValue": "100003",
1228 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1229 "CounterHTOff": "0,1,2,3"
1230 },
1231 {
1232 "EventCode": "0xB7, 0xBB",
1233 "MSRValue": "0x10003c0001",
1234 "Counter": "0,1,2,3",
1235 "UMask": "0x1",
1236 "Offcore": "1",
1237 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1238 "MSRIndex": "0x1a6,0x1a7",
1239 "SampleAfterValue": "100003",
1240 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1241 "CounterHTOff": "0,1,2,3"
1242 },
1243 {
1244 "EventCode": "0xB7, 0xBB",
1245 "MSRValue": "0x1003c0001",
1246 "Counter": "0,1,2,3",
1247 "UMask": "0x1",
1248 "Offcore": "1",
1249 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1250 "MSRIndex": "0x1a6,0x1a7",
1251 "SampleAfterValue": "100003",
1252 "BriefDescription": "Counts demand data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1253 "CounterHTOff": "0,1,2,3"
1254 },
1255 {
1256 "EventCode": "0xB7, 0xBB",
1257 "MSRValue": "0x2003c0001",
1258 "Counter": "0,1,2,3",
1259 "UMask": "0x1",
1260 "Offcore": "1",
1261 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT.SNOOP_MISS",
1262 "MSRIndex": "0x1a6,0x1a7",
1263 "SampleAfterValue": "100003",
1264 "BriefDescription": "Counts demand data reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
1265 "CounterHTOff": "0,1,2,3"
1266 },
1267 {
1268 "EventCode": "0xB7, 0xBB",
1269 "MSRValue": "0x3f803c0002",
1270 "Counter": "0,1,2,3",
1271 "UMask": "0x1",
1272 "Offcore": "1",
1273 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.ANY_RESPONSE",
1274 "MSRIndex": "0x1a6,0x1a7",
1275 "SampleAfterValue": "100003",
1276 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the LLC.",
1277 "CounterHTOff": "0,1,2,3"
1278 },
1279 {
1280 "EventCode": "0xB7, 0xBB",
1281 "MSRValue": "0x4003c0002",
1282 "Counter": "0,1,2,3",
1283 "UMask": "0x1",
1284 "Offcore": "1",
1285 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1286 "MSRIndex": "0x1a6,0x1a7",
1287 "SampleAfterValue": "100003",
1288 "BriefDescription": "Counts demand data writes (RFOs) that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1289 "CounterHTOff": "0,1,2,3"
1290 },
1291 {
1292 "EventCode": "0xB7, 0xBB",
1293 "MSRValue": "0x10003c0002",
1294 "Counter": "0,1,2,3",
1295 "UMask": "0x1",
1296 "Offcore": "1",
1297 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE",
1298 "MSRIndex": "0x1a6,0x1a7",
1299 "SampleAfterValue": "100003",
1300 "BriefDescription": "Counts demand data writes (RFOs) that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1301 "CounterHTOff": "0,1,2,3"
1302 },
1303 {
1304 "EventCode": "0xB7, 0xBB",
1305 "MSRValue": "0x1003c0002",
1306 "Counter": "0,1,2,3",
1307 "UMask": "0x1",
1308 "Offcore": "1",
1309 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.NO_SNOOP_NEEDED",
1310 "MSRIndex": "0x1a6,0x1a7",
1311 "SampleAfterValue": "100003",
1312 "BriefDescription": "Counts demand data writes (RFOs) that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1313 "CounterHTOff": "0,1,2,3"
1314 },
1315 {
1316 "EventCode": "0xB7, 0xBB",
1317 "MSRValue": "0x2003c0002",
1318 "Counter": "0,1,2,3",
1319 "UMask": "0x1",
1320 "Offcore": "1",
1321 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.SNOOP_MISS",
1322 "MSRIndex": "0x1a6,0x1a7",
1323 "SampleAfterValue": "100003",
1324 "BriefDescription": "Counts demand data writes (RFOs) that hit in the LLC and the snoops sent to sibling cores return clean response.",
1325 "CounterHTOff": "0,1,2,3"
1326 },
1327 {
1328 "EventCode": "0xB7, 0xBB",
1329 "MSRValue": "0x18000",
1330 "Counter": "0,1,2,3",
1331 "UMask": "0x1",
1332 "Offcore": "1",
1333 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_RESPONSE",
1334 "MSRIndex": "0x1a6,0x1a7",
1335 "SampleAfterValue": "100003",
1336 "BriefDescription": "Counts miscellaneous accesses that include port i/o, MMIO and uncacheable memory accesses. It also includes L2 hints sent to LLC to keep a line from being evicted out of the core caches.",
1337 "CounterHTOff": "0,1,2,3"
1338 },
1339 {
1340 "EventCode": "0xB7, 0xBB",
1341 "MSRValue": "0x803c8000",
1342 "Counter": "0,1,2,3",
1343 "UMask": "0x1",
1344 "Offcore": "1",
1345 "EventName": "OFFCORE_RESPONSE.OTHER.LRU_HINTS",
1346 "MSRIndex": "0x1a6,0x1a7",
1347 "SampleAfterValue": "100003",
1348 "BriefDescription": "Counts L2 hints sent to LLC to keep a line from being evicted out of the core caches.",
1349 "CounterHTOff": "0,1,2,3"
1350 },
1351 {
1352 "EventCode": "0xB7, 0xBB",
1353 "MSRValue": "0x2380408000",
1354 "Counter": "0,1,2,3",
1355 "UMask": "0x1",
1356 "Offcore": "1",
1357 "EventName": "OFFCORE_RESPONSE.OTHER.PORTIO_MMIO_UC",
1358 "MSRIndex": "0x1a6,0x1a7",
1359 "SampleAfterValue": "100003",
1360 "BriefDescription": "Counts miscellaneous accesses that include port i/o, MMIO and uncacheable memory accesses.",
1361 "CounterHTOff": "0,1,2,3"
1362 },
1363 {
1364 "EventCode": "0xB7, 0xBB",
1365 "MSRValue": "0x3f803c0040",
1366 "Counter": "0,1,2,3",
1367 "UMask": "0x1",
1368 "Offcore": "1",
1369 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.ANY_RESPONSE",
1370 "MSRIndex": "0x1a6,0x1a7",
1371 "SampleAfterValue": "100003",
1372 "BriefDescription": "Counts all prefetch (that bring data to L2) code reads that hit in the LLC.",
1373 "CounterHTOff": "0,1,2,3"
1374 },
1375 {
1376 "EventCode": "0xB7, 0xBB",
1377 "MSRValue": "0x4003c0040",
1378 "Counter": "0,1,2,3",
1379 "UMask": "0x1",
1380 "Offcore": "1",
1381 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1382 "MSRIndex": "0x1a6,0x1a7",
1383 "SampleAfterValue": "100003",
1384 "BriefDescription": "Counts prefetch (that bring data to L2) code reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1385 "CounterHTOff": "0,1,2,3"
1386 },
1387 {
1388 "EventCode": "0xB7, 0xBB",
1389 "MSRValue": "0x10003c0040",
1390 "Counter": "0,1,2,3",
1391 "UMask": "0x1",
1392 "Offcore": "1",
1393 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.HITM_OTHER_CORE",
1394 "MSRIndex": "0x1a6,0x1a7",
1395 "SampleAfterValue": "100003",
1396 "BriefDescription": "Counts prefetch (that bring data to L2) code reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1397 "CounterHTOff": "0,1,2,3"
1398 },
1399 {
1400 "EventCode": "0xB7, 0xBB",
1401 "MSRValue": "0x1003c0040",
1402 "Counter": "0,1,2,3",
1403 "UMask": "0x1",
1404 "Offcore": "1",
1405 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.NO_SNOOP_NEEDED",
1406 "MSRIndex": "0x1a6,0x1a7",
1407 "SampleAfterValue": "100003",
1408 "BriefDescription": "Counts prefetch (that bring data to L2) code reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1409 "CounterHTOff": "0,1,2,3"
1410 },
1411 {
1412 "EventCode": "0xB7, 0xBB",
1413 "MSRValue": "0x2003c0040",
1414 "Counter": "0,1,2,3",
1415 "UMask": "0x1",
1416 "Offcore": "1",
1417 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_HIT.SNOOP_MISS",
1418 "MSRIndex": "0x1a6,0x1a7",
1419 "SampleAfterValue": "100003",
1420 "BriefDescription": "Counts prefetch (that bring data to L2) code reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
1421 "CounterHTOff": "0,1,2,3"
1422 },
1423 {
1424 "EventCode": "0xB7, 0xBB",
1425 "MSRValue": "0x3f803c0010",
1426 "Counter": "0,1,2,3",
1427 "UMask": "0x1",
1428 "Offcore": "1",
1429 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.ANY_RESPONSE",
1430 "MSRIndex": "0x1a6,0x1a7",
1431 "SampleAfterValue": "100003",
1432 "BriefDescription": "Counts all prefetch (that bring data to L2) data reads that hit in the LLC.",
1433 "CounterHTOff": "0,1,2,3"
1434 },
1435 {
1436 "EventCode": "0xB7, 0xBB",
1437 "MSRValue": "0x4003c0010",
1438 "Counter": "0,1,2,3",
1439 "UMask": "0x1",
1440 "Offcore": "1",
1441 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1442 "MSRIndex": "0x1a6,0x1a7",
1443 "SampleAfterValue": "100003",
1444 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1445 "CounterHTOff": "0,1,2,3"
1446 },
1447 {
1448 "EventCode": "0xB7, 0xBB",
1449 "MSRValue": "0x10003c0010",
1450 "Counter": "0,1,2,3",
1451 "UMask": "0x1",
1452 "Offcore": "1",
1453 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1454 "MSRIndex": "0x1a6,0x1a7",
1455 "SampleAfterValue": "100003",
1456 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1457 "CounterHTOff": "0,1,2,3"
1458 },
1459 {
1460 "EventCode": "0xB7, 0xBB",
1461 "MSRValue": "0x1003c0010",
1462 "Counter": "0,1,2,3",
1463 "UMask": "0x1",
1464 "Offcore": "1",
1465 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1466 "MSRIndex": "0x1a6,0x1a7",
1467 "SampleAfterValue": "100003",
1468 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1469 "CounterHTOff": "0,1,2,3"
1470 },
1471 {
1472 "EventCode": "0xB7, 0xBB",
1473 "MSRValue": "0x2003c0010",
1474 "Counter": "0,1,2,3",
1475 "UMask": "0x1",
1476 "Offcore": "1",
1477 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_HIT.SNOOP_MISS",
1478 "MSRIndex": "0x1a6,0x1a7",
1479 "SampleAfterValue": "100003",
1480 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
1481 "CounterHTOff": "0,1,2,3"
1482 },
1483 {
1484 "EventCode": "0xB7, 0xBB",
1485 "MSRValue": "0x3f803c0020",
1486 "Counter": "0,1,2,3",
1487 "UMask": "0x1",
1488 "Offcore": "1",
1489 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_HIT.ANY_RESPONSE",
1490 "MSRIndex": "0x1a6,0x1a7",
1491 "SampleAfterValue": "100003",
1492 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that hit in the LLC.",
1493 "CounterHTOff": "0,1,2,3"
1494 },
1495 {
1496 "EventCode": "0xB7, 0xBB",
1497 "MSRValue": "0x4003c0020",
1498 "Counter": "0,1,2,3",
1499 "UMask": "0x1",
1500 "Offcore": "1",
1501 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1502 "MSRIndex": "0x1a6,0x1a7",
1503 "SampleAfterValue": "100003",
1504 "BriefDescription": "Counts prefetch (that bring data to L2) RFOs that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1505 "CounterHTOff": "0,1,2,3"
1506 },
1507 {
1508 "EventCode": "0xB7, 0xBB",
1509 "MSRValue": "0x10003c0020",
1510 "Counter": "0,1,2,3",
1511 "UMask": "0x1",
1512 "Offcore": "1",
1513 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_HIT.HITM_OTHER_CORE",
1514 "MSRIndex": "0x1a6,0x1a7",
1515 "SampleAfterValue": "100003",
1516 "BriefDescription": "Counts prefetch (that bring data to L2) RFOs that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1517 "CounterHTOff": "0,1,2,3"
1518 },
1519 {
1520 "EventCode": "0xB7, 0xBB",
1521 "MSRValue": "0x1003c0020",
1522 "Counter": "0,1,2,3",
1523 "UMask": "0x1",
1524 "Offcore": "1",
1525 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_HIT.NO_SNOOP_NEEDED",
1526 "MSRIndex": "0x1a6,0x1a7",
1527 "SampleAfterValue": "100003",
1528 "BriefDescription": "Counts prefetch (that bring data to L2) RFOs that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1529 "CounterHTOff": "0,1,2,3"
1530 },
1531 {
1532 "EventCode": "0xB7, 0xBB",
1533 "MSRValue": "0x2003c0020",
1534 "Counter": "0,1,2,3",
1535 "UMask": "0x1",
1536 "Offcore": "1",
1537 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_HIT.SNOOP_MISS",
1538 "MSRIndex": "0x1a6,0x1a7",
1539 "SampleAfterValue": "100003",
1540 "BriefDescription": "Counts prefetch (that bring data to L2) RFOs that hit in the LLC and the snoops sent to sibling cores return clean response.",
1541 "CounterHTOff": "0,1,2,3"
1542 },
1543 {
1544 "EventCode": "0xB7, 0xBB",
1545 "MSRValue": "0x3f803c0200",
1546 "Counter": "0,1,2,3",
1547 "UMask": "0x1",
1548 "Offcore": "1",
1549 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.ANY_RESPONSE",
1550 "MSRIndex": "0x1a6,0x1a7",
1551 "SampleAfterValue": "100003",
1552 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that hit in the LLC.",
1553 "CounterHTOff": "0,1,2,3"
1554 },
1555 {
1556 "EventCode": "0xB7, 0xBB",
1557 "MSRValue": "0x4003c0200",
1558 "Counter": "0,1,2,3",
1559 "UMask": "0x1",
1560 "Offcore": "1",
1561 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1562 "MSRIndex": "0x1a6,0x1a7",
1563 "SampleAfterValue": "100003",
1564 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1565 "CounterHTOff": "0,1,2,3"
1566 },
1567 {
1568 "EventCode": "0xB7, 0xBB",
1569 "MSRValue": "0x10003c0200",
1570 "Counter": "0,1,2,3",
1571 "UMask": "0x1",
1572 "Offcore": "1",
1573 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.HITM_OTHER_CORE",
1574 "MSRIndex": "0x1a6,0x1a7",
1575 "SampleAfterValue": "100003",
1576 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1577 "CounterHTOff": "0,1,2,3"
1578 },
1579 {
1580 "EventCode": "0xB7, 0xBB",
1581 "MSRValue": "0x1003c0200",
1582 "Counter": "0,1,2,3",
1583 "UMask": "0x1",
1584 "Offcore": "1",
1585 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.NO_SNOOP_NEEDED",
1586 "MSRIndex": "0x1a6,0x1a7",
1587 "SampleAfterValue": "100003",
1588 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1589 "CounterHTOff": "0,1,2,3"
1590 },
1591 {
1592 "EventCode": "0xB7, 0xBB",
1593 "MSRValue": "0x2003c0200",
1594 "Counter": "0,1,2,3",
1595 "UMask": "0x1",
1596 "Offcore": "1",
1597 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_HIT.SNOOP_MISS",
1598 "MSRIndex": "0x1a6,0x1a7",
1599 "SampleAfterValue": "100003",
1600 "BriefDescription": "Counts prefetch (that bring data to LLC only) code reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
1601 "CounterHTOff": "0,1,2,3"
1602 },
1603 {
1604 "EventCode": "0xB7, 0xBB",
1605 "MSRValue": "0x3f803c0080",
1606 "Counter": "0,1,2,3",
1607 "UMask": "0x1",
1608 "Offcore": "1",
1609 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.ANY_RESPONSE",
1610 "MSRIndex": "0x1a6,0x1a7",
1611 "SampleAfterValue": "100003",
1612 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the LLC.",
1613 "CounterHTOff": "0,1,2,3"
1614 },
1615 {
1616 "EventCode": "0xB7, 0xBB",
1617 "MSRValue": "0x4003c0080",
1618 "Counter": "0,1,2,3",
1619 "UMask": "0x1",
1620 "Offcore": "1",
1621 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1622 "MSRIndex": "0x1a6,0x1a7",
1623 "SampleAfterValue": "100003",
1624 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1625 "CounterHTOff": "0,1,2,3"
1626 },
1627 {
1628 "EventCode": "0xB7, 0xBB",
1629 "MSRValue": "0x10003c0080",
1630 "Counter": "0,1,2,3",
1631 "UMask": "0x1",
1632 "Offcore": "1",
1633 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.HITM_OTHER_CORE",
1634 "MSRIndex": "0x1a6,0x1a7",
1635 "SampleAfterValue": "100003",
1636 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1637 "CounterHTOff": "0,1,2,3"
1638 },
1639 {
1640 "EventCode": "0xB7, 0xBB",
1641 "MSRValue": "0x1003c0080",
1642 "Counter": "0,1,2,3",
1643 "UMask": "0x1",
1644 "Offcore": "1",
1645 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.NO_SNOOP_NEEDED",
1646 "MSRIndex": "0x1a6,0x1a7",
1647 "SampleAfterValue": "100003",
1648 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1649 "CounterHTOff": "0,1,2,3"
1650 },
1651 {
1652 "EventCode": "0xB7, 0xBB",
1653 "MSRValue": "0x2003c0080",
1654 "Counter": "0,1,2,3",
1655 "UMask": "0x1",
1656 "Offcore": "1",
1657 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_HIT.SNOOP_MISS",
1658 "MSRIndex": "0x1a6,0x1a7",
1659 "SampleAfterValue": "100003",
1660 "BriefDescription": "Counts prefetch (that bring data to LLC only) data reads that hit in the LLC and the snoops sent to sibling cores return clean response.",
1661 "CounterHTOff": "0,1,2,3"
1662 },
1663 {
1664 "EventCode": "0xB7, 0xBB",
1665 "MSRValue": "0x3f803c0100",
1666 "Counter": "0,1,2,3",
1667 "UMask": "0x1",
1668 "Offcore": "1",
1669 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_HIT.ANY_RESPONSE",
1670 "MSRIndex": "0x1a6,0x1a7",
1671 "SampleAfterValue": "100003",
1672 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the LLC.",
1673 "CounterHTOff": "0,1,2,3"
1674 },
1675 {
1676 "EventCode": "0xB7, 0xBB",
1677 "MSRValue": "0x4003c0100",
1678 "Counter": "0,1,2,3",
1679 "UMask": "0x1",
1680 "Offcore": "1",
1681 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_HIT.HIT_OTHER_CORE_NO_FWD",
1682 "MSRIndex": "0x1a6,0x1a7",
1683 "SampleAfterValue": "100003",
1684 "BriefDescription": "Counts prefetch (that bring data to LLC only) RFOs that hit in the LLC and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1685 "CounterHTOff": "0,1,2,3"
1686 },
1687 {
1688 "EventCode": "0xB7, 0xBB",
1689 "MSRValue": "0x10003c0100",
1690 "Counter": "0,1,2,3",
1691 "UMask": "0x1",
1692 "Offcore": "1",
1693 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_HIT.HITM_OTHER_CORE",
1694 "MSRIndex": "0x1a6,0x1a7",
1695 "SampleAfterValue": "100003",
1696 "BriefDescription": "Counts prefetch (that bring data to LLC only) RFOs that hit in the LLC and the snoop to one of the sibling cores hits the line in M state and the line is forwarded.",
1697 "CounterHTOff": "0,1,2,3"
1698 },
1699 {
1700 "EventCode": "0xB7, 0xBB",
1701 "MSRValue": "0x1003c0100",
1702 "Counter": "0,1,2,3",
1703 "UMask": "0x1",
1704 "Offcore": "1",
1705 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_HIT.NO_SNOOP_NEEDED",
1706 "MSRIndex": "0x1a6,0x1a7",
1707 "SampleAfterValue": "100003",
1708 "BriefDescription": "Counts prefetch (that bring data to LLC only) RFOs that hit in the LLC and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1709 "CounterHTOff": "0,1,2,3"
1710 },
1711 {
1712 "EventCode": "0xB7, 0xBB",
1713 "MSRValue": "0x2003c0100",
1714 "Counter": "0,1,2,3",
1715 "UMask": "0x1",
1716 "Offcore": "1",
1717 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_HIT.SNOOP_MISS",
1718 "MSRIndex": "0x1a6,0x1a7",
1719 "SampleAfterValue": "100003",
1720 "BriefDescription": "Counts prefetch (that bring data to LLC only) RFOs that hit in the LLC and the snoops sent to sibling cores return clean response.",
1721 "CounterHTOff": "0,1,2,3"
1722 },
1723 {
1724 "EventCode": "0xB7, 0xBB",
1725 "MSRValue": "0x10400",
1726 "Counter": "0,1,2,3",
1727 "UMask": "0x1",
1728 "Offcore": "1",
1729 "EventName": "OFFCORE_RESPONSE.SPLIT_LOCK_UC_LOCK.ANY_RESPONSE",
1730 "MSRIndex": "0x1a6,0x1a7",
1731 "SampleAfterValue": "100003",
1732 "BriefDescription": "Counts requests where the address of an atomic lock instruction spans a cache line boundary or the lock instruction is executed on uncacheable address.",
1733 "CounterHTOff": "0,1,2,3"
1734 },
1735 {
1736 "EventCode": "0xB7, 0xBB",
1737 "MSRValue": "0x10800",
1738 "Counter": "0,1,2,3",
1739 "UMask": "0x1",
1740 "Offcore": "1",
1741 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.ANY_RESPONSE",
1742 "MSRIndex": "0x1a6,0x1a7",
1743 "SampleAfterValue": "100003",
1744 "BriefDescription": "Counts non-temporal stores.",
1745 "CounterHTOff": "0,1,2,3"
1746 },
1747 {
1748 "EventCode": "0xB7, 0xBB",
1749 "MSRValue": "0x00010001",
1750 "Counter": "0,1,2,3",
1751 "UMask": "0x1",
1752 "Offcore": "1",
1753 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
1754 "MSRIndex": "0x1a6,0x1a7",
1755 "SampleAfterValue": "100003",
1756 "BriefDescription": "Counts all demand data reads .",
1757 "CounterHTOff": "0,1,2,3"
1758 },
1759 {
1760 "EventCode": "0xB7, 0xBB",
1761 "MSRValue": "0x00010002",
1762 "Counter": "0,1,2,3",
1763 "UMask": "0x1",
1764 "Offcore": "1",
1765 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_RESPONSE",
1766 "MSRIndex": "0x1a6,0x1a7",
1767 "SampleAfterValue": "100003",
1768 "BriefDescription": "Counts all demand rfo's .",
1769 "CounterHTOff": "0,1,2,3"
1770 },
1771 {
1772 "EventCode": "0xB7, 0xBB",
1773 "MSRValue": "0x00010004",
1774 "Counter": "0,1,2,3",
1775 "UMask": "0x1",
1776 "Offcore": "1",
1777 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
1778 "MSRIndex": "0x1a6,0x1a7",
1779 "SampleAfterValue": "100003",
1780 "BriefDescription": "Counts all demand code reads.",
1781 "CounterHTOff": "0,1,2,3"
1782 },
1783 {
1784 "EventCode": "0xB7, 0xBB",
1785 "MSRValue": "0x000105B3",
1786 "Counter": "0,1,2,3",
1787 "UMask": "0x1",
1788 "Offcore": "1",
1789 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.ANY_RESPONSE",
1790 "MSRIndex": "0x1a6,0x1a7",
1791 "SampleAfterValue": "100003",
1792 "BriefDescription": "Counts all demand & prefetch data reads.",
1793 "CounterHTOff": "0,1,2,3"
1794 },
1795 {
1796 "EventCode": "0xB7, 0xBB",
1797 "MSRValue": "0x00010122",
1798 "Counter": "0,1,2,3",
1799 "UMask": "0x1",
1800 "Offcore": "1",
1801 "EventName": "OFFCORE_RESPONSE.ALL_RFO.ANY_RESPONSE",
1802 "MSRIndex": "0x1a6,0x1a7",
1803 "SampleAfterValue": "100003",
1804 "BriefDescription": "Counts all demand & prefetch prefetch RFOs .",
1805 "CounterHTOff": "0,1,2,3"
1806 },
1807 {
1808 "EventCode": "0xB7, 0xBB",
1809 "MSRValue": "0x000107F7",
1810 "Counter": "0,1,2,3",
1811 "UMask": "0x1",
1812 "Offcore": "1",
1813 "EventName": "OFFCORE_RESPONSE.ALL_READS.ANY_RESPONSE",
1814 "MSRIndex": "0x1a6,0x1a7",
1815 "SampleAfterValue": "100003",
1816 "BriefDescription": "Counts all data/code/rfo references (demand & prefetch) .",
1817 "CounterHTOff": "0,1,2,3"
1818 },
1819 {
1820 "EventCode": "0xB7, 0xBB",
1821 "MSRValue": "0x10433",
1822 "Counter": "0,1,2,3",
1823 "UMask": "0x1",
1824 "Offcore": "1",
1825 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_RESPONSE",
1826 "MSRIndex": "0x1a6,0x1a7",
1827 "SampleAfterValue": "100003",
1828 "BriefDescription": " REQUEST = DATA_INTO_CORE and RESPONSE = ANY_RESPONSE",
1829 "CounterHTOff": "0,1,2,3"
1830 },
1831 {
1832 "EventCode": "0xB7, 0xBB",
1833 "MSRValue": "0x1000040002",
1834 "Counter": "0,1,2,3",
1835 "UMask": "0x1",
1836 "Offcore": "1",
1837 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_M.HITM",
1838 "MSRIndex": "0x1a6,0x1a7",
1839 "SampleAfterValue": "100003",
1840 "BriefDescription": " REQUEST = DEMAND_RFO and RESPONSE = LLC_HIT_M and SNOOP = HITM",
1841 "CounterHTOff": "0,1,2,3"
1842 },
1843 {
1844 "EventCode": "0xB7, 0xBB",
1845 "MSRValue": "0x10040",
1846 "Counter": "0,1,2,3",
1847 "UMask": "0x1",
1848 "Offcore": "1",
1849 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_RESPONSE",
1850 "MSRIndex": "0x1a6,0x1a7",
1851 "SampleAfterValue": "100003",
1852 "BriefDescription": " REQUEST = PF_RFO and RESPONSE = ANY_RESPONSE",
1853 "CounterHTOff": "0,1,2,3"
1854 },
1855 {
1856 "EventCode": "0xB7, 0xBB",
1857 "MSRValue": "0x10080",
1858 "Counter": "0,1,2,3",
1859 "UMask": "0x1",
1860 "Offcore": "1",
1861 "EventName": "OFFCORE_RESPONSE.PF_L_DATA_RD.ANY_RESPONSE",
1862 "MSRIndex": "0x1a6,0x1a7",
1863 "SampleAfterValue": "100003",
1864 "BriefDescription": " REQUEST = PF_LLC_DATA_RD and RESPONSE = ANY_RESPONSE",
1865 "CounterHTOff": "0,1,2,3"
1866 },
1867 {
1868 "EventCode": "0xB7, 0xBB",
1869 "MSRValue": "0x10200",
1870 "Counter": "0,1,2,3",
1871 "UMask": "0x1",
1872 "Offcore": "1",
1873 "EventName": "OFFCORE_RESPONSE.PF_L_IFETCH.ANY_RESPONSE",
1874 "MSRIndex": "0x1a6,0x1a7",
1875 "SampleAfterValue": "100003",
1876 "BriefDescription": " REQUEST = PF_LLC_IFETCH and RESPONSE = ANY_RESPONSE",
1877 "CounterHTOff": "0,1,2,3"
1878 }
1879] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/sandybridge/floating-point.json b/tools/perf/pmu-events/arch/x86/sandybridge/floating-point.json
new file mode 100644
index 000000000000..982eda48785e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/sandybridge/floating-point.json
@@ -0,0 +1,138 @@
1[
2 {
3 "EventCode": "0xC1",
4 "Counter": "0,1,2,3",
5 "UMask": "0x8",
6 "EventName": "OTHER_ASSISTS.AVX_STORE",
7 "SampleAfterValue": "100003",
8 "BriefDescription": "Number of GSSE memory assist for stores. GSSE microcode assist is being invoked whenever the hardware is unable to properly handle GSSE-256b operations.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0xC1",
13 "Counter": "0,1,2,3",
14 "UMask": "0x10",
15 "EventName": "OTHER_ASSISTS.AVX_TO_SSE",
16 "SampleAfterValue": "100003",
17 "BriefDescription": "Number of transitions from AVX-256 to legacy SSE when penalty applicable.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0xC1",
22 "Counter": "0,1,2,3",
23 "UMask": "0x20",
24 "EventName": "OTHER_ASSISTS.SSE_TO_AVX",
25 "SampleAfterValue": "100003",
26 "BriefDescription": "Number of transitions from SSE to AVX-256 when penalty applicable.",
27 "CounterHTOff": "0,1,2,3,4,5,6,7"
28 },
29 {
30 "EventCode": "0xCA",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "FP_ASSIST.X87_OUTPUT",
34 "SampleAfterValue": "100003",
35 "BriefDescription": "Number of X87 assists due to output value.",
36 "CounterHTOff": "0,1,2,3,4,5,6,7"
37 },
38 {
39 "EventCode": "0xCA",
40 "Counter": "0,1,2,3",
41 "UMask": "0x4",
42 "EventName": "FP_ASSIST.X87_INPUT",
43 "SampleAfterValue": "100003",
44 "BriefDescription": "Number of X87 assists due to input value.",
45 "CounterHTOff": "0,1,2,3,4,5,6,7"
46 },
47 {
48 "EventCode": "0xCA",
49 "Counter": "0,1,2,3",
50 "UMask": "0x8",
51 "EventName": "FP_ASSIST.SIMD_OUTPUT",
52 "SampleAfterValue": "100003",
53 "BriefDescription": "Number of SIMD FP assists due to Output values.",
54 "CounterHTOff": "0,1,2,3,4,5,6,7"
55 },
56 {
57 "EventCode": "0xCA",
58 "Counter": "0,1,2,3",
59 "UMask": "0x10",
60 "EventName": "FP_ASSIST.SIMD_INPUT",
61 "SampleAfterValue": "100003",
62 "BriefDescription": "Number of SIMD FP assists due to input values.",
63 "CounterHTOff": "0,1,2,3,4,5,6,7"
64 },
65 {
66 "EventCode": "0x10",
67 "Counter": "0,1,2,3",
68 "UMask": "0x1",
69 "EventName": "FP_COMP_OPS_EXE.X87",
70 "SampleAfterValue": "2000003",
71 "BriefDescription": "Number of FP Computational Uops Executed this cycle. The number of FADD, FSUB, FCOM, FMULs, integer MULsand IMULs, FDIVs, FPREMs, FSQRTS, integer DIVs, and IDIVs. This event does not distinguish an FADD used in the middle of a transcendental flow from a s.",
72 "CounterHTOff": "0,1,2,3,4,5,6,7"
73 },
74 {
75 "EventCode": "0x10",
76 "Counter": "0,1,2,3",
77 "UMask": "0x10",
78 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed double-precision uops issued this cycle.",
81 "CounterHTOff": "0,1,2,3,4,5,6,7"
82 },
83 {
84 "EventCode": "0x10",
85 "Counter": "0,1,2,3",
86 "UMask": "0x20",
87 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE",
88 "SampleAfterValue": "2000003",
89 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar single-precision uops issued this cycle.",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0x10",
94 "Counter": "0,1,2,3",
95 "UMask": "0x40",
96 "EventName": "FP_COMP_OPS_EXE.SSE_PACKED_SINGLE",
97 "SampleAfterValue": "2000003",
98 "BriefDescription": "Number of SSE* or AVX-128 FP Computational packed single-precision uops issued this cycle.",
99 "CounterHTOff": "0,1,2,3,4,5,6,7"
100 },
101 {
102 "EventCode": "0x10",
103 "Counter": "0,1,2,3",
104 "UMask": "0x80",
105 "EventName": "FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE",
106 "SampleAfterValue": "2000003",
107 "BriefDescription": "Number of SSE* or AVX-128 FP Computational scalar double-precision uops issued this cycle.",
108 "CounterHTOff": "0,1,2,3,4,5,6,7"
109 },
110 {
111 "EventCode": "0x11",
112 "Counter": "0,1,2,3",
113 "UMask": "0x1",
114 "EventName": "SIMD_FP_256.PACKED_SINGLE",
115 "SampleAfterValue": "2000003",
116 "BriefDescription": "Number of GSSE-256 Computational FP single precision uops issued this cycle.",
117 "CounterHTOff": "0,1,2,3,4,5,6,7"
118 },
119 {
120 "EventCode": "0x11",
121 "Counter": "0,1,2,3",
122 "UMask": "0x2",
123 "EventName": "SIMD_FP_256.PACKED_DOUBLE",
124 "SampleAfterValue": "2000003",
125 "BriefDescription": "Number of AVX-256 Computational FP double precision uops issued this cycle.",
126 "CounterHTOff": "0,1,2,3,4,5,6,7"
127 },
128 {
129 "EventCode": "0xCA",
130 "Counter": "0,1,2,3",
131 "UMask": "0x1e",
132 "EventName": "FP_ASSIST.ANY",
133 "SampleAfterValue": "100003",
134 "BriefDescription": "Cycles with any input/output SSE or FP assist.",
135 "CounterMask": "1",
136 "CounterHTOff": "0,1,2,3"
137 }
138] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/sandybridge/frontend.json b/tools/perf/pmu-events/arch/x86/sandybridge/frontend.json
new file mode 100644
index 000000000000..1b7b1dd36c68
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/sandybridge/frontend.json
@@ -0,0 +1,305 @@
1[
2 {
3 "EventCode": "0x80",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ICACHE.HIT",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and noncacheable, including UC fetches.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "PublicDescription": "This event counts the number of instruction cache, streaming buffer and victim cache misses. Counting includes unchacheable accesses.",
13 "EventCode": "0x80",
14 "Counter": "0,1,2,3",
15 "UMask": "0x2",
16 "EventName": "ICACHE.MISSES",
17 "SampleAfterValue": "200003",
18 "BriefDescription": "Instruction cache, streaming buffer and victim cache misses.",
19 "CounterHTOff": "0,1,2,3,4,5,6,7"
20 },
21 {
22 "EventCode": "0x79",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "IDQ.EMPTY",
26 "SampleAfterValue": "2000003",
27 "BriefDescription": "Instruction Decode Queue (IDQ) empty cycles.",
28 "CounterHTOff": "0,1,2,3"
29 },
30 {
31 "EventCode": "0x79",
32 "Counter": "0,1,2,3",
33 "UMask": "0x4",
34 "EventName": "IDQ.MITE_UOPS",
35 "SampleAfterValue": "2000003",
36 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path.",
37 "CounterHTOff": "0,1,2,3,4,5,6,7"
38 },
39 {
40 "EventCode": "0x79",
41 "Counter": "0,1,2,3",
42 "UMask": "0x8",
43 "EventName": "IDQ.DSB_UOPS",
44 "SampleAfterValue": "2000003",
45 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path.",
46 "CounterHTOff": "0,1,2,3,4,5,6,7"
47 },
48 {
49 "EventCode": "0x79",
50 "Counter": "0,1,2,3",
51 "UMask": "0x10",
52 "EventName": "IDQ.MS_DSB_UOPS",
53 "SampleAfterValue": "2000003",
54 "BriefDescription": "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "EventCode": "0x79",
59 "Counter": "0,1,2,3",
60 "UMask": "0x20",
61 "EventName": "IDQ.MS_MITE_UOPS",
62 "SampleAfterValue": "2000003",
63 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
64 "CounterHTOff": "0,1,2,3,4,5,6,7"
65 },
66 {
67 "EventCode": "0x79",
68 "Counter": "0,1,2,3",
69 "UMask": "0x30",
70 "EventName": "IDQ.MS_UOPS",
71 "SampleAfterValue": "2000003",
72 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "PublicDescription": "This event counts cycles during which the microcode sequencer assisted the front-end in delivering uops. Microcode assists are used for complex instructions or scenarios that can't be handled by the standard decoder. Using other instructions, if possible, will usually improve performance. See the Intel? 64 and IA-32 Architectures Optimization Reference Manual for more information.",
77 "EventCode": "0x79",
78 "Counter": "0,1,2,3",
79 "UMask": "0x30",
80 "EventName": "IDQ.MS_CYCLES",
81 "SampleAfterValue": "2000003",
82 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
83 "CounterMask": "1",
84 "CounterHTOff": "0,1,2,3,4,5,6,7"
85 },
86 {
87 "PublicDescription": "This event counts the number of uops not delivered to the back-end per cycle, per thread, when the back-end was not stalled. In the ideal case 4 uops can be delivered each cycle. The event counts the undelivered uops - so if 3 were delivered in one cycle, the counter would be incremented by 1 for that cycle (4 - 3). If the back-end is stalled, the count for this event is not incremented even when uops were not delivered, because the back-end would not have been able to accept them. This event is used in determining the front-end bound category of the top-down pipeline slots characterization.",
88 "EventCode": "0x9C",
89 "Counter": "0,1,2,3",
90 "UMask": "0x1",
91 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
92 "SampleAfterValue": "2000003",
93 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled .",
94 "CounterHTOff": "0,1,2,3"
95 },
96 {
97 "EventCode": "0x9C",
98 "Counter": "0,1,2,3",
99 "UMask": "0x1",
100 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
101 "SampleAfterValue": "2000003",
102 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
103 "CounterMask": "4",
104 "CounterHTOff": "0,1,2,3"
105 },
106 {
107 "EventCode": "0x9C",
108 "Counter": "0,1,2,3",
109 "UMask": "0x1",
110 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
111 "SampleAfterValue": "2000003",
112 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled.",
113 "CounterMask": "3",
114 "CounterHTOff": "0,1,2,3"
115 },
116 {
117 "EventCode": "0xAB",
118 "Counter": "0,1,2,3",
119 "UMask": "0x1",
120 "EventName": "DSB2MITE_SWITCHES.COUNT",
121 "SampleAfterValue": "2000003",
122 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switches.",
123 "CounterHTOff": "0,1,2,3,4,5,6,7"
124 },
125 {
126 "PublicDescription": "This event counts the cycles attributed to a switch from the Decoded Stream Buffer (DSB), which holds decoded instructions, to the legacy decode pipeline. It excludes cycles when the back-end cannot accept new micro-ops. The penalty for these switches is potentially several cycles of instruction starvation, where no micro-ops are delivered to the back-end.",
127 "EventCode": "0xAB",
128 "Counter": "0,1,2,3",
129 "UMask": "0x2",
130 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
131 "SampleAfterValue": "2000003",
132 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
133 "CounterHTOff": "0,1,2,3,4,5,6,7"
134 },
135 {
136 "EventCode": "0xAC",
137 "Counter": "0,1,2,3",
138 "UMask": "0x2",
139 "EventName": "DSB_FILL.OTHER_CANCEL",
140 "SampleAfterValue": "2000003",
141 "BriefDescription": "Cases of cancelling valid DSB fill not because of exceeding way limit.",
142 "CounterHTOff": "0,1,2,3,4,5,6,7"
143 },
144 {
145 "EventCode": "0xAC",
146 "Counter": "0,1,2,3",
147 "UMask": "0x8",
148 "EventName": "DSB_FILL.EXCEED_DSB_LINES",
149 "SampleAfterValue": "2000003",
150 "BriefDescription": "Cycles when Decode Stream Buffer (DSB) fill encounter more than 3 Decode Stream Buffer (DSB) lines.",
151 "CounterHTOff": "0,1,2,3,4,5,6,7"
152 },
153 {
154 "EventCode": "0x79",
155 "Counter": "0,1,2,3",
156 "UMask": "0x4",
157 "EventName": "IDQ.MITE_CYCLES",
158 "SampleAfterValue": "2000003",
159 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path.",
160 "CounterMask": "1",
161 "CounterHTOff": "0,1,2,3,4,5,6,7"
162 },
163 {
164 "EventCode": "0x79",
165 "Counter": "0,1,2,3",
166 "UMask": "0x8",
167 "EventName": "IDQ.DSB_CYCLES",
168 "SampleAfterValue": "2000003",
169 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path.",
170 "CounterMask": "1",
171 "CounterHTOff": "0,1,2,3,4,5,6,7"
172 },
173 {
174 "EventCode": "0x79",
175 "Counter": "0,1,2,3",
176 "UMask": "0x10",
177 "EventName": "IDQ.MS_DSB_CYCLES",
178 "SampleAfterValue": "2000003",
179 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy.",
180 "CounterMask": "1",
181 "CounterHTOff": "0,1,2,3,4,5,6,7"
182 },
183 {
184 "EventCode": "0x79",
185 "Counter": "0,1,2,3",
186 "UMask": "0x10",
187 "EdgeDetect": "1",
188 "EventName": "IDQ.MS_DSB_OCCUR",
189 "SampleAfterValue": "2000003",
190 "BriefDescription": "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequenser (MS) is busy.",
191 "CounterMask": "1",
192 "CounterHTOff": "0,1,2,3,4,5,6,7"
193 },
194 {
195 "EventCode": "0x9C",
196 "Counter": "0,1,2,3",
197 "UMask": "0x1",
198 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
199 "SampleAfterValue": "2000003",
200 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
201 "CounterMask": "2",
202 "CounterHTOff": "0,1,2,3"
203 },
204 {
205 "EventCode": "0x9C",
206 "Counter": "0,1,2,3",
207 "UMask": "0x1",
208 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
209 "SampleAfterValue": "2000003",
210 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
211 "CounterMask": "1",
212 "CounterHTOff": "0,1,2,3"
213 },
214 {
215 "EventCode": "0x9C",
216 "Invert": "1",
217 "Counter": "0,1,2,3",
218 "UMask": "0x1",
219 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_GE_1_UOP_DELIV.CORE",
220 "SampleAfterValue": "2000003",
221 "BriefDescription": "Cycles when 1 or more uops were delivered to the by the front end.",
222 "CounterMask": "4",
223 "CounterHTOff": "0,1,2,3"
224 },
225 {
226 "EventCode": "0x79",
227 "Counter": "0,1,2,3",
228 "UMask": "0x18",
229 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
230 "SampleAfterValue": "2000003",
231 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops.",
232 "CounterMask": "4",
233 "CounterHTOff": "0,1,2,3,4,5,6,7"
234 },
235 {
236 "EventCode": "0x79",
237 "Counter": "0,1,2,3",
238 "UMask": "0x18",
239 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
240 "SampleAfterValue": "2000003",
241 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop.",
242 "CounterMask": "1",
243 "CounterHTOff": "0,1,2,3,4,5,6,7"
244 },
245 {
246 "EventCode": "0x79",
247 "Counter": "0,1,2,3",
248 "UMask": "0x24",
249 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
250 "SampleAfterValue": "2000003",
251 "BriefDescription": "Cycles MITE is delivering 4 Uops.",
252 "CounterMask": "4",
253 "CounterHTOff": "0,1,2,3,4,5,6,7"
254 },
255 {
256 "EventCode": "0x79",
257 "Counter": "0,1,2,3",
258 "UMask": "0x24",
259 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
260 "SampleAfterValue": "2000003",
261 "BriefDescription": "Cycles MITE is delivering any Uop.",
262 "CounterMask": "1",
263 "CounterHTOff": "0,1,2,3,4,5,6,7"
264 },
265 {
266 "EventCode": "0xAC",
267 "Counter": "0,1,2,3",
268 "UMask": "0xa",
269 "EventName": "DSB_FILL.ALL_CANCEL",
270 "SampleAfterValue": "2000003",
271 "BriefDescription": "Cases of cancelling valid Decode Stream Buffer (DSB) fill not because of exceeding way limit.",
272 "CounterHTOff": "0,1,2,3,4,5,6,7"
273 },
274 {
275 "EventCode": "0x9C",
276 "Invert": "1",
277 "Counter": "0,1,2,3",
278 "UMask": "0x1",
279 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
280 "SampleAfterValue": "2000003",
281 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
282 "CounterMask": "1",
283 "CounterHTOff": "0,1,2,3"
284 },
285 {
286 "EventCode": "0x79",
287 "Counter": "0,1,2,3",
288 "UMask": "0x3c",
289 "EventName": "IDQ.MITE_ALL_UOPS",
290 "SampleAfterValue": "2000003",
291 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path.",
292 "CounterHTOff": "0,1,2,3,4,5,6,7"
293 },
294 {
295 "EventCode": "0x79",
296 "Counter": "0,1,2,3",
297 "UMask": "0x30",
298 "EdgeDetect": "1",
299 "EventName": "IDQ.MS_SWITCHES",
300 "SampleAfterValue": "2000003",
301 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
302 "CounterMask": "1",
303 "CounterHTOff": "0,1,2,3,4,5,6,7"
304 }
305] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/sandybridge/memory.json b/tools/perf/pmu-events/arch/x86/sandybridge/memory.json
new file mode 100644
index 000000000000..e6dfa89d00f3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/sandybridge/memory.json
@@ -0,0 +1,445 @@
1[
2 {
3 "PublicDescription": "This event counts the number of memory ordering Machine Clears detected. Memory Ordering Machine Clears can result from memory disambiguation, external snoops, or cross SMT-HW-thread snoop (stores) hitting load buffers. Machine clears can have a significant performance impact if they are happening frequently.",
4 "EventCode": "0xC3",
5 "Counter": "0,1,2,3",
6 "UMask": "0x2",
7 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PEBS": "2",
14 "EventCode": "0xCD",
15 "MSRValue": "0x4",
16 "Counter": "3",
17 "UMask": "0x1",
18 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
19 "MSRIndex": "0x3F6",
20 "SampleAfterValue": "100003",
21 "BriefDescription": "Loads with latency value being above 4 .",
22 "TakenAlone": "1",
23 "CounterHTOff": "3"
24 },
25 {
26 "PEBS": "2",
27 "EventCode": "0xCD",
28 "MSRValue": "0x8",
29 "Counter": "3",
30 "UMask": "0x1",
31 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
32 "MSRIndex": "0x3F6",
33 "SampleAfterValue": "50021",
34 "BriefDescription": "Loads with latency value being above 8.",
35 "TakenAlone": "1",
36 "CounterHTOff": "3"
37 },
38 {
39 "PEBS": "2",
40 "EventCode": "0xCD",
41 "MSRValue": "0x10",
42 "Counter": "3",
43 "UMask": "0x1",
44 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
45 "MSRIndex": "0x3F6",
46 "SampleAfterValue": "20011",
47 "BriefDescription": "Loads with latency value being above 16.",
48 "TakenAlone": "1",
49 "CounterHTOff": "3"
50 },
51 {
52 "PEBS": "2",
53 "EventCode": "0xCD",
54 "MSRValue": "0x20",
55 "Counter": "3",
56 "UMask": "0x1",
57 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
58 "MSRIndex": "0x3F6",
59 "SampleAfterValue": "100007",
60 "BriefDescription": "Loads with latency value being above 32.",
61 "TakenAlone": "1",
62 "CounterHTOff": "3"
63 },
64 {
65 "PEBS": "2",
66 "EventCode": "0xCD",
67 "MSRValue": "0x40",
68 "Counter": "3",
69 "UMask": "0x1",
70 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
71 "MSRIndex": "0x3F6",
72 "SampleAfterValue": "2003",
73 "BriefDescription": "Loads with latency value being above 64.",
74 "TakenAlone": "1",
75 "CounterHTOff": "3"
76 },
77 {
78 "PEBS": "2",
79 "EventCode": "0xCD",
80 "MSRValue": "0x80",
81 "Counter": "3",
82 "UMask": "0x1",
83 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
84 "MSRIndex": "0x3F6",
85 "SampleAfterValue": "1009",
86 "BriefDescription": "Loads with latency value being above 128.",
87 "TakenAlone": "1",
88 "CounterHTOff": "3"
89 },
90 {
91 "PEBS": "2",
92 "EventCode": "0xCD",
93 "MSRValue": "0x100",
94 "Counter": "3",
95 "UMask": "0x1",
96 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
97 "MSRIndex": "0x3F6",
98 "SampleAfterValue": "503",
99 "BriefDescription": "Loads with latency value being above 256.",
100 "TakenAlone": "1",
101 "CounterHTOff": "3"
102 },
103 {
104 "PEBS": "2",
105 "EventCode": "0xCD",
106 "MSRValue": "0x200",
107 "Counter": "3",
108 "UMask": "0x1",
109 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
110 "MSRIndex": "0x3F6",
111 "SampleAfterValue": "101",
112 "BriefDescription": "Loads with latency value being above 512.",
113 "TakenAlone": "1",
114 "CounterHTOff": "3"
115 },
116 {
117 "PEBS": "2",
118 "EventCode": "0xCD",
119 "Counter": "3",
120 "UMask": "0x2",
121 "EventName": "MEM_TRANS_RETIRED.PRECISE_STORE",
122 "SampleAfterValue": "2000003",
123 "BriefDescription": "Sample stores and collect precise store operation via PEBS record. PMC3 only. (Precise Event - PEBS).",
124 "PRECISE_STORE": "1",
125 "TakenAlone": "1",
126 "CounterHTOff": "3"
127 },
128 {
129 "EventCode": "0xBE",
130 "Counter": "0,1,2,3",
131 "UMask": "0x1",
132 "EventName": "PAGE_WALKS.LLC_MISS",
133 "SampleAfterValue": "100003",
134 "BriefDescription": "Number of any page walk that had a miss in LLC. Does not necessary cause a SUSPEND.",
135 "CounterHTOff": "0,1,2,3,4,5,6,7"
136 },
137 {
138 "EventCode": "0x05",
139 "Counter": "0,1,2,3",
140 "UMask": "0x1",
141 "EventName": "MISALIGN_MEM_REF.LOADS",
142 "SampleAfterValue": "2000003",
143 "BriefDescription": "Speculative cache line split load uops dispatched to L1 cache.",
144 "CounterHTOff": "0,1,2,3,4,5,6,7"
145 },
146 {
147 "EventCode": "0x05",
148 "Counter": "0,1,2,3",
149 "UMask": "0x2",
150 "EventName": "MISALIGN_MEM_REF.STORES",
151 "SampleAfterValue": "2000003",
152 "BriefDescription": "Speculative cache line split STA uops dispatched to L1 cache.",
153 "CounterHTOff": "0,1,2,3,4,5,6,7"
154 },
155 {
156 "EventCode": "0xB7, 0xBB",
157 "MSRValue": "0x300400244",
158 "Counter": "0,1,2,3",
159 "UMask": "0x1",
160 "Offcore": "1",
161 "EventName": "OFFCORE_RESPONSE.ALL_CODE_RD.LLC_MISS.DRAM",
162 "MSRIndex": "0x1a6,0x1a7",
163 "SampleAfterValue": "100003",
164 "BriefDescription": "Counts all demand & prefetch code reads that miss the LLC and the data returned from dram.",
165 "CounterHTOff": "0,1,2,3"
166 },
167 {
168 "EventCode": "0xB7, 0xBB",
169 "MSRValue": "0x300400091",
170 "Counter": "0,1,2,3",
171 "UMask": "0x1",
172 "Offcore": "1",
173 "EventName": "OFFCORE_RESPONSE.ALL_DATA_RD.LLC_MISS.DRAM",
174 "MSRIndex": "0x1a6,0x1a7",
175 "SampleAfterValue": "100003",
176 "BriefDescription": "Counts all demand & prefetch data reads that miss the LLC and the data returned from dram.",
177 "CounterHTOff": "0,1,2,3"
178 },
179 {
180 "EventCode": "0xB7, 0xBB",
181 "MSRValue": "0x300400240",
182 "Counter": "0,1,2,3",
183 "UMask": "0x1",
184 "Offcore": "1",
185 "EventName": "OFFCORE_RESPONSE.ALL_PF_CODE_RD.LLC_MISS.DRAM",
186 "MSRIndex": "0x1a6,0x1a7",
187 "SampleAfterValue": "100003",
188 "BriefDescription": "Counts all prefetch code reads that miss the LLC and the data returned from dram.",
189 "CounterHTOff": "0,1,2,3"
190 },
191 {
192 "EventCode": "0xB7, 0xBB",
193 "MSRValue": "0x300400090",
194 "Counter": "0,1,2,3",
195 "UMask": "0x1",
196 "Offcore": "1",
197 "EventName": "OFFCORE_RESPONSE.ALL_PF_DATA_RD.LLC_MISS.DRAM",
198 "MSRIndex": "0x1a6,0x1a7",
199 "SampleAfterValue": "100003",
200 "BriefDescription": "Counts all prefetch data reads that miss the LLC and the data returned from dram.",
201 "CounterHTOff": "0,1,2,3"
202 },
203 {
204 "EventCode": "0xB7, 0xBB",
205 "MSRValue": "0x300400120",
206 "Counter": "0,1,2,3",
207 "UMask": "0x1",
208 "Offcore": "1",
209 "EventName": "OFFCORE_RESPONSE.ALL_PF_RFO.LLC_MISS.DRAM",
210 "MSRIndex": "0x1a6,0x1a7",
211 "SampleAfterValue": "100003",
212 "BriefDescription": "Counts all prefetch RFOs that miss the LLC and the data returned from dram.",
213 "CounterHTOff": "0,1,2,3"
214 },
215 {
216 "EventCode": "0xB7, 0xBB",
217 "MSRValue": "0x3004003f7",
218 "Counter": "0,1,2,3",
219 "UMask": "0x1",
220 "Offcore": "1",
221 "EventName": "OFFCORE_RESPONSE.ALL_READS.LLC_MISS.DRAM",
222 "MSRIndex": "0x1a6,0x1a7",
223 "SampleAfterValue": "100003",
224 "BriefDescription": "Counts all data/code/rfo reads (demand & prefetch) that miss the LLC and the data returned from dram.",
225 "CounterHTOff": "0,1,2,3"
226 },
227 {
228 "EventCode": "0xB7, 0xBB",
229 "MSRValue": "0x300400122",
230 "Counter": "0,1,2,3",
231 "UMask": "0x1",
232 "Offcore": "1",
233 "EventName": "OFFCORE_RESPONSE.ALL_RFO.LLC_MISS.DRAM",
234 "MSRIndex": "0x1a6,0x1a7",
235 "SampleAfterValue": "100003",
236 "BriefDescription": "Counts all demand & prefetch RFOs that miss the LLC and the data returned from dram.",
237 "CounterHTOff": "0,1,2,3"
238 },
239 {
240 "EventCode": "0xB7, 0xBB",
241 "MSRValue": "0x300400004",
242 "Counter": "0,1,2,3",
243 "UMask": "0x1",
244 "Offcore": "1",
245 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.LLC_MISS.DRAM",
246 "MSRIndex": "0x1a6,0x1a7",
247 "SampleAfterValue": "100003",
248 "BriefDescription": "Counts demand code reads that miss the LLC and the data returned from dram.",
249 "CounterHTOff": "0,1,2,3"
250 },
251 {
252 "EventCode": "0xB7, 0xBB",
253 "MSRValue": "0x300400001",
254 "Counter": "0,1,2,3",
255 "UMask": "0x1",
256 "Offcore": "1",
257 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_MISS.DRAM",
258 "MSRIndex": "0x1a6,0x1a7",
259 "SampleAfterValue": "100003",
260 "BriefDescription": "Counts demand data reads that miss the LLC and the data returned from dram.",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "EventCode": "0xB7, 0xBB",
265 "MSRValue": "0x300400002",
266 "Counter": "0,1,2,3",
267 "UMask": "0x1",
268 "Offcore": "1",
269 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.DRAM",
270 "MSRIndex": "0x1a6,0x1a7",
271 "SampleAfterValue": "100003",
272 "BriefDescription": "Counts demand data writes (RFOs) that miss the LLC and the data returned from dram.",
273 "CounterHTOff": "0,1,2,3"
274 },
275 {
276 "EventCode": "0xB7, 0xBB",
277 "MSRValue": "0x300400040",
278 "Counter": "0,1,2,3",
279 "UMask": "0x1",
280 "Offcore": "1",
281 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.LLC_MISS.DRAM",
282 "MSRIndex": "0x1a6,0x1a7",
283 "SampleAfterValue": "100003",
284 "BriefDescription": "Counts all prefetch (that bring data to L2) code reads that miss the LLC and the data returned from dram.",
285 "CounterHTOff": "0,1,2,3"
286 },
287 {
288 "EventCode": "0xB7, 0xBB",
289 "MSRValue": "0x300400010",
290 "Counter": "0,1,2,3",
291 "UMask": "0x1",
292 "Offcore": "1",
293 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.LLC_MISS.DRAM",
294 "MSRIndex": "0x1a6,0x1a7",
295 "SampleAfterValue": "100003",
296 "BriefDescription": "Counts prefetch (that bring data to L2) data reads that miss the LLC and the data returned from dram.",
297 "CounterHTOff": "0,1,2,3"
298 },
299 {
300 "EventCode": "0xB7, 0xBB",
301 "MSRValue": "0x300400020",
302 "Counter": "0,1,2,3",
303 "UMask": "0x1",
304 "Offcore": "1",
305 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.LLC_MISS.DRAM",
306 "MSRIndex": "0x1a6,0x1a7",
307 "SampleAfterValue": "100003",
308 "BriefDescription": "Counts all prefetch (that bring data to L2) RFOs that miss the LLC and the data returned from dram.",
309 "CounterHTOff": "0,1,2,3"
310 },
311 {
312 "EventCode": "0xB7, 0xBB",
313 "MSRValue": "0x300400200",
314 "Counter": "0,1,2,3",
315 "UMask": "0x1",
316 "Offcore": "1",
317 "EventName": "OFFCORE_RESPONSE.PF_LLC_CODE_RD.LLC_MISS.DRAM",
318 "MSRIndex": "0x1a6,0x1a7",
319 "SampleAfterValue": "100003",
320 "BriefDescription": "Counts all prefetch (that bring data to LLC only) code reads that miss the LLC and the data returned from dram.",
321 "CounterHTOff": "0,1,2,3"
322 },
323 {
324 "EventCode": "0xB7, 0xBB",
325 "MSRValue": "0x300400080",
326 "Counter": "0,1,2,3",
327 "UMask": "0x1",
328 "Offcore": "1",
329 "EventName": "OFFCORE_RESPONSE.PF_LLC_DATA_RD.LLC_MISS.DRAM",
330 "MSRIndex": "0x1a6,0x1a7",
331 "SampleAfterValue": "100003",
332 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that miss the LLC and the data returned from dram.",
333 "CounterHTOff": "0,1,2,3"
334 },
335 {
336 "EventCode": "0xB7, 0xBB",
337 "MSRValue": "0x300400100",
338 "Counter": "0,1,2,3",
339 "UMask": "0x1",
340 "Offcore": "1",
341 "EventName": "OFFCORE_RESPONSE.PF_LLC_RFO.LLC_MISS.DRAM",
342 "MSRIndex": "0x1a6,0x1a7",
343 "SampleAfterValue": "100003",
344 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that miss the LLC and the data returned from dram.",
345 "CounterHTOff": "0,1,2,3"
346 },
347 {
348 "PublicDescription": "This event counts all data requests (demand/prefetch data reads and demand data writes (RFOs) that miss the LLC where the data is returned from local DRAM",
349 "EventCode": "0xB7, 0xBB",
350 "MSRValue": "0x6004001b3",
351 "Counter": "0,1,2,3",
352 "UMask": "0x1",
353 "Offcore": "1",
354 "EventName": "OFFCORE_RESPONSE.DATA_IN_SOCKET.LLC_MISS.LOCAL_DRAM",
355 "MSRIndex": "0x1a6,0x1a7",
356 "SampleAfterValue": "100003",
357 "BriefDescription": "Counts LLC replacements.",
358 "CounterHTOff": "0,1,2,3"
359 },
360 {
361 "PublicDescription": "This event counts any requests that miss the LLC where the data was returned from local DRAM",
362 "EventCode": "0xB7, 0xBB",
363 "MSRValue": "0x1f80408fff",
364 "Counter": "0,1,2,3",
365 "UMask": "0x1",
366 "Offcore": "1",
367 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM",
368 "MSRIndex": "0x1a6,0x1a7",
369 "SampleAfterValue": "100003",
370 "BriefDescription": " REQUEST = ANY_REQUEST and RESPONSE = LLC_MISS_LOCAL and SNOOP = DRAM",
371 "CounterHTOff": "0,1,2,3"
372 },
373 {
374 "EventCode": "0xB7, 0xBB",
375 "MSRValue": "0x17004001b3",
376 "Counter": "0,1,2,3",
377 "UMask": "0x1",
378 "Offcore": "1",
379 "EventName": "OFFCORE_RESPONSE.DATA_IN_SOCKET.LLC_MISS_LOCAL.ANY_LLC_HIT",
380 "MSRIndex": "0x1a6,0x1a7",
381 "SampleAfterValue": "100003",
382 "BriefDescription": " REQUEST = DATA_IN_SOCKET and RESPONSE = LLC_MISS_LOCAL and SNOOP = ANY_LLC_HIT",
383 "CounterHTOff": "0,1,2,3"
384 },
385 {
386 "EventCode": "0xB7, 0xBB",
387 "MSRValue": "0x1f80400004",
388 "Counter": "0,1,2,3",
389 "UMask": "0x1",
390 "Offcore": "1",
391 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_MISS_LOCAL.DRAM",
392 "MSRIndex": "0x1a6,0x1a7",
393 "SampleAfterValue": "100003",
394 "BriefDescription": " REQUEST = DEMAND_IFETCH and RESPONSE = LLC_MISS_LOCAL and SNOOP = DRAM",
395 "CounterHTOff": "0,1,2,3"
396 },
397 {
398 "EventCode": "0xB7, 0xBB",
399 "MSRValue": "0x1f80400010",
400 "Counter": "0,1,2,3",
401 "UMask": "0x1",
402 "Offcore": "1",
403 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_MISS_LOCAL.DRAM",
404 "MSRIndex": "0x1a6,0x1a7",
405 "SampleAfterValue": "100003",
406 "BriefDescription": " REQUEST = PF_DATA_RD and RESPONSE = LLC_MISS_LOCAL and SNOOP = DRAM",
407 "CounterHTOff": "0,1,2,3"
408 },
409 {
410 "EventCode": "0xB7, 0xBB",
411 "MSRValue": "0x1f80400040",
412 "Counter": "0,1,2,3",
413 "UMask": "0x1",
414 "Offcore": "1",
415 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_MISS_LOCAL.DRAM",
416 "MSRIndex": "0x1a6,0x1a7",
417 "SampleAfterValue": "100003",
418 "BriefDescription": " REQUEST = PF_RFO and RESPONSE = LLC_MISS_LOCAL and SNOOP = DRAM",
419 "CounterHTOff": "0,1,2,3"
420 },
421 {
422 "EventCode": "0xB7, 0xBB",
423 "MSRValue": "0x1f80400080",
424 "Counter": "0,1,2,3",
425 "UMask": "0x1",
426 "Offcore": "1",
427 "EventName": "OFFCORE_RESPONSE.PF_L_DATA_RD.LLC_MISS_LOCAL.DRAM",
428 "MSRIndex": "0x1a6,0x1a7",
429 "SampleAfterValue": "100003",
430 "BriefDescription": " REQUEST = PF_LLC_DATA_RD and RESPONSE = LLC_MISS_LOCAL and SNOOP = DRAM",
431 "CounterHTOff": "0,1,2,3"
432 },
433 {
434 "EventCode": "0xB7, 0xBB",
435 "MSRValue": "0x1f80400200",
436 "Counter": "0,1,2,3",
437 "UMask": "0x1",
438 "Offcore": "1",
439 "EventName": "OFFCORE_RESPONSE.PF_L_IFETCH.LLC_MISS_LOCAL.DRAM",
440 "MSRIndex": "0x1a6,0x1a7",
441 "SampleAfterValue": "100003",
442 "BriefDescription": " REQUEST = PF_LLC_IFETCH and RESPONSE = LLC_MISS_LOCAL and SNOOP = DRAM",
443 "CounterHTOff": "0,1,2,3"
444 }
445] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/sandybridge/other.json b/tools/perf/pmu-events/arch/x86/sandybridge/other.json
new file mode 100644
index 000000000000..64b195b82c50
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/sandybridge/other.json
@@ -0,0 +1,58 @@
1[
2 {
3 "EventCode": "0x17",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "INSTS_WRITTEN_TO_IQ.INSTS",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Valid instructions written to IQ per cycle.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0x5C",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "CPL_CYCLES.RING0",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Unhalted core cycles when the thread is in ring 0.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0x5C",
22 "Counter": "0,1,2,3",
23 "UMask": "0x1",
24 "EdgeDetect": "1",
25 "EventName": "CPL_CYCLES.RING0_TRANS",
26 "SampleAfterValue": "100007",
27 "BriefDescription": "Number of intervals between processor halts while thread is in ring 0.",
28 "CounterMask": "1",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "EventCode": "0x5C",
33 "Counter": "0,1,2,3",
34 "UMask": "0x2",
35 "EventName": "CPL_CYCLES.RING123",
36 "SampleAfterValue": "2000003",
37 "BriefDescription": "Unhalted core cycles when thread is in rings 1, 2, or 3.",
38 "CounterHTOff": "0,1,2,3,4,5,6,7"
39 },
40 {
41 "EventCode": "0x4E",
42 "Counter": "0,1,2,3",
43 "UMask": "0x2",
44 "EventName": "HW_PRE_REQ.DL1_MISS",
45 "SampleAfterValue": "2000003",
46 "BriefDescription": "Hardware Prefetch requests that miss the L1D cache. This accounts for both L1 streamer and IP-based (IPP) HW prefetchers. A request is being counted each time it access the cache & miss it, including if a block is applicable or if hit the Fill Buffer for .",
47 "CounterHTOff": "0,1,2,3,4,5,6,7"
48 },
49 {
50 "EventCode": "0x63",
51 "Counter": "0,1,2,3",
52 "UMask": "0x1",
53 "EventName": "LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION",
54 "SampleAfterValue": "2000003",
55 "BriefDescription": "Cycles when L1 and L2 are locked due to UC or split lock.",
56 "CounterHTOff": "0,1,2,3,4,5,6,7"
57 }
58] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/sandybridge/pipeline.json b/tools/perf/pmu-events/arch/x86/sandybridge/pipeline.json
new file mode 100644
index 000000000000..8a597e45ed84
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/sandybridge/pipeline.json
@@ -0,0 +1,1220 @@
1[
2 {
3 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. ",
4 "EventCode": "0x00",
5 "Counter": "Fixed counter 1",
6 "UMask": "0x1",
7 "EventName": "INST_RETIRED.ANY",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Instructions retired from execution.",
10 "CounterHTOff": "Fixed counter 1"
11 },
12 {
13 "PublicDescription": "This event counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. ",
14 "EventCode": "0x00",
15 "Counter": "Fixed counter 2",
16 "UMask": "0x2",
17 "EventName": "CPU_CLK_UNHALTED.THREAD",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Core cycles when the thread is not in halt state.",
20 "CounterHTOff": "Fixed counter 2"
21 },
22 {
23 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. This event has a constant ratio with the CPU_CLK_UNHALTED.REF_XCLK event. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. ",
24 "EventCode": "0x00",
25 "Counter": "Fixed counter 3",
26 "UMask": "0x3",
27 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Reference cycles when the core is not in halt state.",
30 "CounterHTOff": "Fixed counter 3"
31 },
32 {
33 "EventCode": "0x88",
34 "Counter": "0,1,2,3",
35 "UMask": "0x41",
36 "EventName": "BR_INST_EXEC.NONTAKEN_CONDITIONAL",
37 "SampleAfterValue": "200003",
38 "BriefDescription": "Not taken macro-conditional branches.",
39 "CounterHTOff": "0,1,2,3,4,5,6,7"
40 },
41 {
42 "EventCode": "0x88",
43 "Counter": "0,1,2,3",
44 "UMask": "0x81",
45 "EventName": "BR_INST_EXEC.TAKEN_CONDITIONAL",
46 "SampleAfterValue": "200003",
47 "BriefDescription": "Taken speculative and retired macro-conditional branches.",
48 "CounterHTOff": "0,1,2,3,4,5,6,7"
49 },
50 {
51 "EventCode": "0x88",
52 "Counter": "0,1,2,3",
53 "UMask": "0x82",
54 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_JUMP",
55 "SampleAfterValue": "200003",
56 "BriefDescription": "Taken speculative and retired macro-conditional branch instructions excluding calls and indirects.",
57 "CounterHTOff": "0,1,2,3,4,5,6,7"
58 },
59 {
60 "EventCode": "0x88",
61 "Counter": "0,1,2,3",
62 "UMask": "0x84",
63 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
64 "SampleAfterValue": "200003",
65 "BriefDescription": "Taken speculative and retired indirect branches excluding calls and returns.",
66 "CounterHTOff": "0,1,2,3,4,5,6,7"
67 },
68 {
69 "EventCode": "0x88",
70 "Counter": "0,1,2,3",
71 "UMask": "0x88",
72 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_RETURN",
73 "SampleAfterValue": "200003",
74 "BriefDescription": "Taken speculative and retired indirect branches with return mnemonic.",
75 "CounterHTOff": "0,1,2,3,4,5,6,7"
76 },
77 {
78 "EventCode": "0x88",
79 "Counter": "0,1,2,3",
80 "UMask": "0x90",
81 "EventName": "BR_INST_EXEC.TAKEN_DIRECT_NEAR_CALL",
82 "SampleAfterValue": "200003",
83 "BriefDescription": "Taken speculative and retired direct near calls.",
84 "CounterHTOff": "0,1,2,3,4,5,6,7"
85 },
86 {
87 "EventCode": "0x88",
88 "Counter": "0,1,2,3",
89 "UMask": "0xa0",
90 "EventName": "BR_INST_EXEC.TAKEN_INDIRECT_NEAR_CALL",
91 "SampleAfterValue": "200003",
92 "BriefDescription": "Taken speculative and retired indirect calls.",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "EventCode": "0x88",
97 "Counter": "0,1,2,3",
98 "UMask": "0xc1",
99 "EventName": "BR_INST_EXEC.ALL_CONDITIONAL",
100 "SampleAfterValue": "200003",
101 "BriefDescription": "Speculative and retired macro-conditional branches.",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0x88",
106 "Counter": "0,1,2,3",
107 "UMask": "0xc2",
108 "EventName": "BR_INST_EXEC.ALL_DIRECT_JMP",
109 "SampleAfterValue": "200003",
110 "BriefDescription": "Speculative and retired macro-unconditional branches excluding calls and indirects.",
111 "CounterHTOff": "0,1,2,3,4,5,6,7"
112 },
113 {
114 "EventCode": "0x88",
115 "Counter": "0,1,2,3",
116 "UMask": "0xc4",
117 "EventName": "BR_INST_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
118 "SampleAfterValue": "200003",
119 "BriefDescription": "Speculative and retired indirect branches excluding calls and returns.",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "EventCode": "0x88",
124 "Counter": "0,1,2,3",
125 "UMask": "0xc8",
126 "EventName": "BR_INST_EXEC.ALL_INDIRECT_NEAR_RETURN",
127 "SampleAfterValue": "200003",
128 "BriefDescription": "Speculative and retired indirect return branches.",
129 "CounterHTOff": "0,1,2,3,4,5,6,7"
130 },
131 {
132 "EventCode": "0x88",
133 "Counter": "0,1,2,3",
134 "UMask": "0xd0",
135 "EventName": "BR_INST_EXEC.ALL_DIRECT_NEAR_CALL",
136 "SampleAfterValue": "200003",
137 "BriefDescription": "Speculative and retired direct near calls.",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0x89",
142 "Counter": "0,1,2,3",
143 "UMask": "0x41",
144 "EventName": "BR_MISP_EXEC.NONTAKEN_CONDITIONAL",
145 "SampleAfterValue": "200003",
146 "BriefDescription": "Not taken speculative and retired mispredicted macro conditional branches.",
147 "CounterHTOff": "0,1,2,3,4,5,6,7"
148 },
149 {
150 "EventCode": "0x89",
151 "Counter": "0,1,2,3",
152 "UMask": "0x81",
153 "EventName": "BR_MISP_EXEC.TAKEN_CONDITIONAL",
154 "SampleAfterValue": "200003",
155 "BriefDescription": "Taken speculative and retired mispredicted macro conditional branches.",
156 "CounterHTOff": "0,1,2,3,4,5,6,7"
157 },
158 {
159 "EventCode": "0x89",
160 "Counter": "0,1,2,3",
161 "UMask": "0x84",
162 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_JUMP_NON_CALL_RET",
163 "SampleAfterValue": "200003",
164 "BriefDescription": "Taken speculative and retired mispredicted indirect branches excluding calls and returns.",
165 "CounterHTOff": "0,1,2,3,4,5,6,7"
166 },
167 {
168 "EventCode": "0x89",
169 "Counter": "0,1,2,3",
170 "UMask": "0x88",
171 "EventName": "BR_MISP_EXEC.TAKEN_RETURN_NEAR",
172 "SampleAfterValue": "200003",
173 "BriefDescription": "Taken speculative and retired mispredicted indirect branches with return mnemonic.",
174 "CounterHTOff": "0,1,2,3,4,5,6,7"
175 },
176 {
177 "EventCode": "0x89",
178 "Counter": "0,1,2,3",
179 "UMask": "0x90",
180 "EventName": "BR_MISP_EXEC.TAKEN_DIRECT_NEAR_CALL",
181 "SampleAfterValue": "200003",
182 "BriefDescription": "Taken speculative and retired mispredicted direct near calls.",
183 "CounterHTOff": "0,1,2,3,4,5,6,7"
184 },
185 {
186 "EventCode": "0x89",
187 "Counter": "0,1,2,3",
188 "UMask": "0xa0",
189 "EventName": "BR_MISP_EXEC.TAKEN_INDIRECT_NEAR_CALL",
190 "SampleAfterValue": "200003",
191 "BriefDescription": "Taken speculative and retired mispredicted indirect calls.",
192 "CounterHTOff": "0,1,2,3,4,5,6,7"
193 },
194 {
195 "EventCode": "0x89",
196 "Counter": "0,1,2,3",
197 "UMask": "0xc1",
198 "EventName": "BR_MISP_EXEC.ALL_CONDITIONAL",
199 "SampleAfterValue": "200003",
200 "BriefDescription": "Speculative and retired mispredicted macro conditional branches.",
201 "CounterHTOff": "0,1,2,3,4,5,6,7"
202 },
203 {
204 "EventCode": "0x89",
205 "Counter": "0,1,2,3",
206 "UMask": "0xc4",
207 "EventName": "BR_MISP_EXEC.ALL_INDIRECT_JUMP_NON_CALL_RET",
208 "SampleAfterValue": "200003",
209 "BriefDescription": "Mispredicted indirect branches excluding calls and returns.",
210 "CounterHTOff": "0,1,2,3,4,5,6,7"
211 },
212 {
213 "EventCode": "0x89",
214 "Counter": "0,1,2,3",
215 "UMask": "0xd0",
216 "EventName": "BR_MISP_EXEC.ALL_DIRECT_NEAR_CALL",
217 "SampleAfterValue": "200003",
218 "BriefDescription": "Speculative and retired mispredicted direct near calls.",
219 "CounterHTOff": "0,1,2,3,4,5,6,7"
220 },
221 {
222 "EventCode": "0x3C",
223 "Counter": "0,1,2,3",
224 "UMask": "0x0",
225 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
226 "SampleAfterValue": "2000003",
227 "BriefDescription": "Thread cycles when thread is not in halt state.",
228 "CounterHTOff": "0,1,2,3,4,5,6,7"
229 },
230 {
231 "EventCode": "0xA8",
232 "Counter": "0,1,2,3",
233 "UMask": "0x1",
234 "EventName": "LSD.UOPS",
235 "SampleAfterValue": "2000003",
236 "BriefDescription": "Number of Uops delivered by the LSD.",
237 "CounterHTOff": "0,1,2,3,4,5,6,7"
238 },
239 {
240 "EventCode": "0xA8",
241 "Counter": "0,1,2,3",
242 "UMask": "0x1",
243 "EventName": "LSD.CYCLES_ACTIVE",
244 "SampleAfterValue": "2000003",
245 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
246 "CounterMask": "1",
247 "CounterHTOff": "0,1,2,3,4,5,6,7"
248 },
249 {
250 "EventCode": "0x87",
251 "Counter": "0,1,2,3",
252 "UMask": "0x1",
253 "EventName": "ILD_STALL.LCP",
254 "SampleAfterValue": "2000003",
255 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
256 "CounterHTOff": "0,1,2,3,4,5,6,7"
257 },
258 {
259 "EventCode": "0x87",
260 "Counter": "0,1,2,3",
261 "UMask": "0x4",
262 "EventName": "ILD_STALL.IQ_FULL",
263 "SampleAfterValue": "2000003",
264 "BriefDescription": "Stall cycles because IQ is full.",
265 "CounterHTOff": "0,1,2,3,4,5,6,7"
266 },
267 {
268 "EventCode": "0x0D",
269 "Counter": "0,1,2,3",
270 "UMask": "0x40",
271 "EventName": "INT_MISC.RAT_STALL_CYCLES",
272 "SampleAfterValue": "2000003",
273 "BriefDescription": "Cycles when Resource Allocation Table (RAT) external stall is sent to Instruction Decode Queue (IDQ) for the thread.",
274 "CounterHTOff": "0,1,2,3,4,5,6,7"
275 },
276 {
277 "EventCode": "0x59",
278 "Counter": "0,1,2,3",
279 "UMask": "0x20",
280 "EventName": "PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP",
281 "SampleAfterValue": "2000003",
282 "BriefDescription": "Increments the number of flags-merge uops in flight each cycle.",
283 "CounterHTOff": "0,1,2,3,4,5,6,7"
284 },
285 {
286 "PublicDescription": "This event counts the number of cycles with at least one slow LEA uop being allocated. A uop is generally considered as slow LEA if it has three sources (for example, two sources and immediate) regardless of whether it is a result of LEA instruction or not. Examples of the slow LEA uop are or uops with base, index, and offset source operands using base and index reqisters, where base is EBR/RBP/R13, using RIP relative or 16-bit addressing modes. See the Intel? 64 and IA-32 Architectures Optimization Reference Manual for more details about slow LEA instructions.",
287 "EventCode": "0x59",
288 "Counter": "0,1,2,3",
289 "UMask": "0x40",
290 "EventName": "PARTIAL_RAT_STALLS.SLOW_LEA_WINDOW",
291 "SampleAfterValue": "2000003",
292 "BriefDescription": "Cycles with at least one slow LEA uop being allocated.",
293 "CounterHTOff": "0,1,2,3,4,5,6,7"
294 },
295 {
296 "EventCode": "0x59",
297 "Counter": "0,1,2,3",
298 "UMask": "0x80",
299 "EventName": "PARTIAL_RAT_STALLS.MUL_SINGLE_UOP",
300 "SampleAfterValue": "2000003",
301 "BriefDescription": "Multiply packed/scalar single precision uops allocated.",
302 "CounterHTOff": "0,1,2,3,4,5,6,7"
303 },
304 {
305 "EventCode": "0xA2",
306 "Counter": "0,1,2,3",
307 "UMask": "0x1",
308 "EventName": "RESOURCE_STALLS.ANY",
309 "SampleAfterValue": "2000003",
310 "BriefDescription": "Resource-related stall cycles.",
311 "CounterHTOff": "0,1,2,3,4,5,6,7"
312 },
313 {
314 "EventCode": "0xA2",
315 "Counter": "0,1,2,3",
316 "UMask": "0x2",
317 "EventName": "RESOURCE_STALLS.LB",
318 "SampleAfterValue": "2000003",
319 "BriefDescription": "Counts the cycles of stall due to lack of load buffers.",
320 "CounterHTOff": "0,1,2,3,4,5,6,7"
321 },
322 {
323 "EventCode": "0xA2",
324 "Counter": "0,1,2,3",
325 "UMask": "0x4",
326 "EventName": "RESOURCE_STALLS.RS",
327 "SampleAfterValue": "2000003",
328 "BriefDescription": "Cycles stalled due to no eligible RS entry available.",
329 "CounterHTOff": "0,1,2,3,4,5,6,7"
330 },
331 {
332 "EventCode": "0xA2",
333 "Counter": "0,1,2,3",
334 "UMask": "0x8",
335 "EventName": "RESOURCE_STALLS.SB",
336 "SampleAfterValue": "2000003",
337 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
338 "CounterHTOff": "0,1,2,3,4,5,6,7"
339 },
340 {
341 "EventCode": "0xA2",
342 "Counter": "0,1,2,3",
343 "UMask": "0x10",
344 "EventName": "RESOURCE_STALLS.ROB",
345 "SampleAfterValue": "2000003",
346 "BriefDescription": "Cycles stalled due to re-order buffer full.",
347 "CounterHTOff": "0,1,2,3,4,5,6,7"
348 },
349 {
350 "EventCode": "0x5B",
351 "Counter": "0,1,2,3",
352 "UMask": "0x40",
353 "EventName": "RESOURCE_STALLS2.BOB_FULL",
354 "SampleAfterValue": "2000003",
355 "BriefDescription": "Cycles when Allocator is stalled if BOB is full and new branch needs it.",
356 "CounterHTOff": "0,1,2,3,4,5,6,7"
357 },
358 {
359 "PublicDescription": "This event counts the number of Uops issued by the front-end of the pipeilne to the back-end.",
360 "EventCode": "0x0E",
361 "Counter": "0,1,2,3",
362 "UMask": "0x1",
363 "EventName": "UOPS_ISSUED.ANY",
364 "SampleAfterValue": "2000003",
365 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS).",
366 "CounterHTOff": "0,1,2,3,4,5,6,7"
367 },
368 {
369 "EventCode": "0x0E",
370 "Invert": "1",
371 "Counter": "0,1,2,3",
372 "UMask": "0x1",
373 "EventName": "UOPS_ISSUED.STALL_CYCLES",
374 "SampleAfterValue": "2000003",
375 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread.",
376 "CounterMask": "1",
377 "CounterHTOff": "0,1,2,3"
378 },
379 {
380 "EventCode": "0x0E",
381 "Invert": "1",
382 "Counter": "0,1,2,3",
383 "UMask": "0x1",
384 "AnyThread": "1",
385 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
386 "SampleAfterValue": "2000003",
387 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for all threads.",
388 "CounterMask": "1",
389 "CounterHTOff": "0,1,2,3"
390 },
391 {
392 "EventCode": "0x5E",
393 "Counter": "0,1,2,3",
394 "UMask": "0x1",
395 "EventName": "RS_EVENTS.EMPTY_CYCLES",
396 "SampleAfterValue": "2000003",
397 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread.",
398 "CounterHTOff": "0,1,2,3,4,5,6,7"
399 },
400 {
401 "EventCode": "0xCC",
402 "Counter": "0,1,2,3",
403 "UMask": "0x20",
404 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
405 "SampleAfterValue": "2000003",
406 "BriefDescription": "Count cases of saving new LBR.",
407 "CounterHTOff": "0,1,2,3,4,5,6,7"
408 },
409 {
410 "PublicDescription": "This event is incremented when self-modifying code (SMC) is detected, which causes a machine clear. Machine clears can have a significant performance impact if they are happening frequently.",
411 "EventCode": "0xC3",
412 "Counter": "0,1,2,3",
413 "UMask": "0x4",
414 "EventName": "MACHINE_CLEARS.SMC",
415 "SampleAfterValue": "100003",
416 "BriefDescription": "Self-modifying code (SMC) detected.",
417 "CounterHTOff": "0,1,2,3,4,5,6,7"
418 },
419 {
420 "PublicDescription": "Maskmov false fault - counts number of time ucode passes through Maskmov flow due to instruction's mask being 0 while the flow was completed without raising a fault.",
421 "EventCode": "0xC3",
422 "Counter": "0,1,2,3",
423 "UMask": "0x20",
424 "EventName": "MACHINE_CLEARS.MASKMOV",
425 "SampleAfterValue": "100003",
426 "BriefDescription": "This event counts the number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0.",
427 "CounterHTOff": "0,1,2,3,4,5,6,7"
428 },
429 {
430 "EventCode": "0xC0",
431 "Counter": "0,1,2,3",
432 "UMask": "0x0",
433 "EventName": "INST_RETIRED.ANY_P",
434 "SampleAfterValue": "2000003",
435 "BriefDescription": "Number of instructions retired. General Counter - architectural event.",
436 "CounterHTOff": "0,1,2,3,4,5,6,7"
437 },
438 {
439 "PEBS": "1",
440 "PublicDescription": "This event counts the number of micro-ops retired.",
441 "EventCode": "0xC2",
442 "Counter": "0,1,2,3",
443 "UMask": "0x1",
444 "EventName": "UOPS_RETIRED.ALL",
445 "SampleAfterValue": "2000003",
446 "BriefDescription": "Actually retired uops.",
447 "CounterHTOff": "0,1,2,3,4,5,6,7"
448 },
449 {
450 "PEBS": "1",
451 "PublicDescription": "This event counts the number of retirement slots used each cycle. There are potentially 4 slots that can be used each cycle - meaning, 4 micro-ops or 4 instructions could retire each cycle. This event is used in determining the 'Retiring' category of the Top-Down pipeline slots characterization.",
452 "EventCode": "0xC2",
453 "Counter": "0,1,2,3",
454 "UMask": "0x2",
455 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
456 "SampleAfterValue": "2000003",
457 "BriefDescription": "Retirement slots used.",
458 "CounterHTOff": "0,1,2,3,4,5,6,7"
459 },
460 {
461 "EventCode": "0xC2",
462 "Invert": "1",
463 "Counter": "0,1,2,3",
464 "UMask": "0x1",
465 "EventName": "UOPS_RETIRED.STALL_CYCLES",
466 "SampleAfterValue": "2000003",
467 "BriefDescription": "Cycles without actually retired uops.",
468 "CounterMask": "1",
469 "CounterHTOff": "0,1,2,3"
470 },
471 {
472 "EventCode": "0xC2",
473 "Invert": "1",
474 "Counter": "0,1,2,3",
475 "UMask": "0x1",
476 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
477 "SampleAfterValue": "2000003",
478 "BriefDescription": "Cycles with less than 10 actually retired uops.",
479 "CounterMask": "10",
480 "CounterHTOff": "0,1,2,3"
481 },
482 {
483 "PEBS": "1",
484 "EventCode": "0xC4",
485 "Counter": "0,1,2,3",
486 "UMask": "0x1",
487 "EventName": "BR_INST_RETIRED.CONDITIONAL",
488 "SampleAfterValue": "400009",
489 "BriefDescription": "Conditional branch instructions retired.",
490 "CounterHTOff": "0,1,2,3,4,5,6,7"
491 },
492 {
493 "PEBS": "1",
494 "EventCode": "0xC4",
495 "Counter": "0,1,2,3",
496 "UMask": "0x2",
497 "EventName": "BR_INST_RETIRED.NEAR_CALL",
498 "SampleAfterValue": "100007",
499 "BriefDescription": "Direct and indirect near call instructions retired.",
500 "CounterHTOff": "0,1,2,3,4,5,6,7"
501 },
502 {
503 "EventCode": "0xC4",
504 "Counter": "0,1,2,3",
505 "UMask": "0x0",
506 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
507 "SampleAfterValue": "400009",
508 "BriefDescription": "All (macro) branch instructions retired.",
509 "CounterHTOff": "0,1,2,3,4,5,6,7"
510 },
511 {
512 "PEBS": "1",
513 "EventCode": "0xC4",
514 "Counter": "0,1,2,3",
515 "UMask": "0x8",
516 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
517 "SampleAfterValue": "100007",
518 "BriefDescription": "Return instructions retired.",
519 "CounterHTOff": "0,1,2,3,4,5,6,7"
520 },
521 {
522 "EventCode": "0xC4",
523 "Counter": "0,1,2,3",
524 "UMask": "0x10",
525 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
526 "SampleAfterValue": "400009",
527 "BriefDescription": "Not taken branch instructions retired.",
528 "CounterHTOff": "0,1,2,3,4,5,6,7"
529 },
530 {
531 "PEBS": "1",
532 "EventCode": "0xC4",
533 "Counter": "0,1,2,3",
534 "UMask": "0x20",
535 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
536 "SampleAfterValue": "400009",
537 "BriefDescription": "Taken branch instructions retired.",
538 "CounterHTOff": "0,1,2,3,4,5,6,7"
539 },
540 {
541 "EventCode": "0xC4",
542 "Counter": "0,1,2,3",
543 "UMask": "0x40",
544 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
545 "SampleAfterValue": "100007",
546 "BriefDescription": "Far branch instructions retired.",
547 "CounterHTOff": "0,1,2,3,4,5,6,7"
548 },
549 {
550 "PEBS": "2",
551 "EventCode": "0xC4",
552 "Counter": "0,1,2,3",
553 "UMask": "0x4",
554 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
555 "SampleAfterValue": "400009",
556 "BriefDescription": "All (macro) branch instructions retired. (Precise Event - PEBS).",
557 "CounterHTOff": "0,1,2,3"
558 },
559 {
560 "PEBS": "1",
561 "EventCode": "0xC5",
562 "Counter": "0,1,2,3",
563 "UMask": "0x1",
564 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
565 "SampleAfterValue": "400009",
566 "BriefDescription": "Mispredicted conditional branch instructions retired.",
567 "CounterHTOff": "0,1,2,3,4,5,6,7"
568 },
569 {
570 "PEBS": "1",
571 "EventCode": "0xC5",
572 "Counter": "0,1,2,3",
573 "UMask": "0x2",
574 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
575 "SampleAfterValue": "100007",
576 "BriefDescription": "Direct and indirect mispredicted near call instructions retired.",
577 "CounterHTOff": "0,1,2,3,4,5,6,7"
578 },
579 {
580 "EventCode": "0xC5",
581 "Counter": "0,1,2,3",
582 "UMask": "0x0",
583 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
584 "SampleAfterValue": "400009",
585 "BriefDescription": "All mispredicted macro branch instructions retired.",
586 "CounterHTOff": "0,1,2,3,4,5,6,7"
587 },
588 {
589 "PEBS": "1",
590 "EventCode": "0xC5",
591 "Counter": "0,1,2,3",
592 "UMask": "0x10",
593 "EventName": "BR_MISP_RETIRED.NOT_TAKEN",
594 "SampleAfterValue": "400009",
595 "BriefDescription": "Mispredicted not taken branch instructions retired.",
596 "CounterHTOff": "0,1,2,3,4,5,6,7"
597 },
598 {
599 "PEBS": "1",
600 "EventCode": "0xC5",
601 "Counter": "0,1,2,3",
602 "UMask": "0x20",
603 "EventName": "BR_MISP_RETIRED.TAKEN",
604 "SampleAfterValue": "400009",
605 "BriefDescription": "Mispredicted taken branch instructions retired.",
606 "CounterHTOff": "0,1,2,3,4,5,6,7"
607 },
608 {
609 "PEBS": "2",
610 "PublicDescription": "Mispredicted macro branch instructions retired. (Precise Event - PEBS)",
611 "EventCode": "0xC5",
612 "Counter": "0,1,2,3",
613 "UMask": "0x4",
614 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
615 "SampleAfterValue": "400009",
616 "BriefDescription": "Mispredicted macro branch instructions retired. (Precise Event - PEBS).",
617 "CounterHTOff": "0,1,2,3"
618 },
619 {
620 "EventCode": "0xC1",
621 "Counter": "0,1,2,3",
622 "UMask": "0x2",
623 "EventName": "OTHER_ASSISTS.ITLB_MISS_RETIRED",
624 "SampleAfterValue": "100003",
625 "BriefDescription": "Retired instructions experiencing ITLB misses.",
626 "CounterHTOff": "0,1,2,3,4,5,6,7"
627 },
628 {
629 "EventCode": "0x14",
630 "Counter": "0,1,2,3",
631 "UMask": "0x1",
632 "EventName": "ARITH.FPU_DIV_ACTIVE",
633 "SampleAfterValue": "2000003",
634 "BriefDescription": "Cycles when divider is busy executing divide operations.",
635 "CounterHTOff": "0,1,2,3,4,5,6,7"
636 },
637 {
638 "PublicDescription": "This event counts the number of the divide operations executed.",
639 "EventCode": "0x14",
640 "Counter": "0,1,2,3",
641 "UMask": "0x1",
642 "EdgeDetect": "1",
643 "EventName": "ARITH.FPU_DIV",
644 "SampleAfterValue": "100003",
645 "BriefDescription": "Divide operations executed.",
646 "CounterMask": "1",
647 "CounterHTOff": "0,1,2,3,4,5,6,7"
648 },
649 {
650 "EventCode": "0xB1",
651 "Counter": "0,1,2,3",
652 "UMask": "0x1",
653 "EventName": "UOPS_DISPATCHED.THREAD",
654 "SampleAfterValue": "2000003",
655 "BriefDescription": "Uops dispatched per thread.",
656 "CounterHTOff": "0,1,2,3,4,5,6,7"
657 },
658 {
659 "EventCode": "0xB1",
660 "Counter": "0,1,2,3",
661 "UMask": "0x2",
662 "EventName": "UOPS_DISPATCHED.CORE",
663 "SampleAfterValue": "2000003",
664 "BriefDescription": "Uops dispatched from any thread.",
665 "CounterHTOff": "0,1,2,3,4,5,6,7"
666 },
667 {
668 "EventCode": "0xA1",
669 "Counter": "0,1,2,3",
670 "UMask": "0x1",
671 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
672 "SampleAfterValue": "2000003",
673 "BriefDescription": "Cycles per thread when uops are dispatched to port 0.",
674 "CounterHTOff": "0,1,2,3,4,5,6,7"
675 },
676 {
677 "EventCode": "0xA1",
678 "Counter": "0,1,2,3",
679 "UMask": "0x2",
680 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
681 "SampleAfterValue": "2000003",
682 "BriefDescription": "Cycles per thread when uops are dispatched to port 1.",
683 "CounterHTOff": "0,1,2,3,4,5,6,7"
684 },
685 {
686 "EventCode": "0xA1",
687 "Counter": "0,1,2,3",
688 "UMask": "0x40",
689 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
690 "SampleAfterValue": "2000003",
691 "BriefDescription": "Cycles per thread when uops are dispatched to port 4.",
692 "CounterHTOff": "0,1,2,3,4,5,6,7"
693 },
694 {
695 "EventCode": "0xA1",
696 "Counter": "0,1,2,3",
697 "UMask": "0x80",
698 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
699 "SampleAfterValue": "2000003",
700 "BriefDescription": "Cycles per thread when uops are dispatched to port 5.",
701 "CounterHTOff": "0,1,2,3,4,5,6,7"
702 },
703 {
704 "EventCode": "0xA3",
705 "Counter": "0,1,2,3",
706 "UMask": "0x4",
707 "EventName": "CYCLE_ACTIVITY.CYCLES_NO_DISPATCH",
708 "SampleAfterValue": "2000003",
709 "BriefDescription": "Each cycle there was no dispatch for this thread, increment by 1. Note this is connect to Umask 2. No dispatch can be deduced from the UOPS_EXECUTED event.",
710 "CounterMask": "4",
711 "CounterHTOff": "0,1,2,3"
712 },
713 {
714 "EventCode": "0xA3",
715 "Counter": "2",
716 "UMask": "0x2",
717 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_PENDING",
718 "SampleAfterValue": "2000003",
719 "BriefDescription": "Each cycle there was a miss-pending demand load this thread, increment by 1. Note this is in DCU and connected to Umask 1. Miss Pending demand load should be deduced by OR-ing increment bits of DCACHE_MISS_PEND.PENDING.",
720 "CounterMask": "2",
721 "CounterHTOff": "2"
722 },
723 {
724 "EventCode": "0xA3",
725 "Counter": "0,1,2,3",
726 "UMask": "0x1",
727 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_PENDING",
728 "SampleAfterValue": "2000003",
729 "BriefDescription": "Each cycle there was a MLC-miss pending demand load this thread (i.e. Non-completed valid SQ entry allocated for demand load and waiting for Uncore), increment by 1. Note this is in MLC and connected to Umask 0.",
730 "CounterMask": "1",
731 "CounterHTOff": "0,1,2,3,4,5,6,7"
732 },
733 {
734 "EventCode": "0xA3",
735 "Counter": "2",
736 "UMask": "0x6",
737 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_PENDING",
738 "SampleAfterValue": "2000003",
739 "BriefDescription": "Each cycle there was a miss-pending demand load this thread and no uops dispatched, increment by 1. Note this is in DCU and connected to Umask 1 and 2. Miss Pending demand load should be deduced by OR-ing increment bits of DCACHE_MISS_PEND.PENDING.",
740 "CounterMask": "6",
741 "CounterHTOff": "2"
742 },
743 {
744 "EventCode": "0xA3",
745 "Counter": "0,1,2,3",
746 "UMask": "0x5",
747 "EventName": "CYCLE_ACTIVITY.STALLS_L2_PENDING",
748 "SampleAfterValue": "2000003",
749 "BriefDescription": "Each cycle there was a MLC-miss pending demand load and no uops dispatched on this thread (i.e. Non-completed valid SQ entry allocated for demand load and waiting for Uncore), increment by 1. Note this is in MLC and connected to Umask 0 and 2.",
750 "CounterMask": "5",
751 "CounterHTOff": "0,1,2,3"
752 },
753 {
754 "EventCode": "0x4C",
755 "Counter": "0,1,2,3",
756 "UMask": "0x1",
757 "EventName": "LOAD_HIT_PRE.SW_PF",
758 "SampleAfterValue": "100003",
759 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for software prefetch.",
760 "CounterHTOff": "0,1,2,3,4,5,6,7"
761 },
762 {
763 "EventCode": "0x4C",
764 "Counter": "0,1,2,3",
765 "UMask": "0x2",
766 "EventName": "LOAD_HIT_PRE.HW_PF",
767 "SampleAfterValue": "100003",
768 "BriefDescription": "Not software-prefetch load dispatches that hit FB allocated for hardware prefetch.",
769 "CounterHTOff": "0,1,2,3,4,5,6,7"
770 },
771 {
772 "EventCode": "0x03",
773 "Counter": "0,1,2,3",
774 "UMask": "0x1",
775 "EventName": "LD_BLOCKS.DATA_UNKNOWN",
776 "SampleAfterValue": "100003",
777 "BriefDescription": "Loads delayed due to SB blocks, preceding store operations with known addresses but unknown data.",
778 "CounterHTOff": "0,1,2,3,4,5,6,7"
779 },
780 {
781 "PublicDescription": "This event counts loads that followed a store to the same address, where the data could not be forwarded inside the pipeline from the store to the load. The most common reason why store forwarding would be blocked is when a load's address range overlaps with a preceeding smaller uncompleted store. See the table of not supported store forwards in the Intel? 64 and IA-32 Architectures Optimization Reference Manual. The penalty for blocked store forwarding is that the load must wait for the store to complete before it can be issued.",
782 "EventCode": "0x03",
783 "Counter": "0,1,2,3",
784 "UMask": "0x2",
785 "EventName": "LD_BLOCKS.STORE_FORWARD",
786 "SampleAfterValue": "100003",
787 "BriefDescription": "Cases when loads get true Block-on-Store blocking code preventing store forwarding.",
788 "CounterHTOff": "0,1,2,3,4,5,6,7"
789 },
790 {
791 "EventCode": "0x03",
792 "Counter": "0,1,2,3",
793 "UMask": "0x8",
794 "EventName": "LD_BLOCKS.NO_SR",
795 "SampleAfterValue": "100003",
796 "BriefDescription": "This event counts the number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
797 "CounterHTOff": "0,1,2,3,4,5,6,7"
798 },
799 {
800 "EventCode": "0x03",
801 "Counter": "0,1,2,3",
802 "UMask": "0x10",
803 "EventName": "LD_BLOCKS.ALL_BLOCK",
804 "SampleAfterValue": "100003",
805 "BriefDescription": "Number of cases where any load ends up with a valid block-code written to the load buffer (including blocks due to Memory Order Buffer (MOB), Data Cache Unit (DCU), TLB, but load has no DCU miss).",
806 "CounterHTOff": "0,1,2,3,4,5,6,7"
807 },
808 {
809 "PublicDescription": "Aliasing occurs when a load is issued after a store and their memory addresses are offset by 4K. This event counts the number of loads that aliased with a preceding store, resulting in an extended address check in the pipeline. The enhanced address check typically has a performance penalty of 5 cycles.",
810 "EventCode": "0x07",
811 "Counter": "0,1,2,3",
812 "UMask": "0x1",
813 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
814 "SampleAfterValue": "100003",
815 "BriefDescription": "False dependencies in MOB due to partial compare.",
816 "CounterHTOff": "0,1,2,3,4,5,6,7"
817 },
818 {
819 "EventCode": "0x07",
820 "Counter": "0,1,2,3",
821 "UMask": "0x8",
822 "EventName": "LD_BLOCKS_PARTIAL.ALL_STA_BLOCK",
823 "SampleAfterValue": "100003",
824 "BriefDescription": "This event counts the number of times that load operations are temporarily blocked because of older stores, with addresses that are not yet known. A load operation may incur more than one block of this type.",
825 "CounterHTOff": "0,1,2,3,4,5,6,7"
826 },
827 {
828 "EventCode": "0xB6",
829 "Counter": "0,1,2,3",
830 "UMask": "0x1",
831 "EventName": "AGU_BYPASS_CANCEL.COUNT",
832 "SampleAfterValue": "100003",
833 "BriefDescription": "This event counts executed load operations with all the following traits: 1. addressing of the format [base + offset], 2. the offset is between 1 and 2047, 3. the address specified in the base register is in one page and the address [base+offset] is in an.",
834 "CounterHTOff": "0,1,2,3,4,5,6,7"
835 },
836 {
837 "EventCode": "0x3C",
838 "Counter": "0,1,2,3",
839 "UMask": "0x1",
840 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
841 "SampleAfterValue": "2000003",
842 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate).",
843 "CounterHTOff": "0,1,2,3,4,5,6,7"
844 },
845 {
846 "EventCode": "0x3C",
847 "Counter": "0,1,2,3",
848 "UMask": "0x2",
849 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
850 "SampleAfterValue": "2000003",
851 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other is halted.",
852 "CounterHTOff": "0,1,2,3"
853 },
854 {
855 "EventCode": "0xA1",
856 "Counter": "0,1,2,3",
857 "UMask": "0x1",
858 "AnyThread": "1",
859 "EventName": "UOPS_DISPATCHED_PORT.PORT_0_CORE",
860 "SampleAfterValue": "2000003",
861 "BriefDescription": "Cycles per core when uops are dispatched to port 0.",
862 "CounterHTOff": "0,1,2,3,4,5,6,7"
863 },
864 {
865 "EventCode": "0xA1",
866 "Counter": "0,1,2,3",
867 "UMask": "0x2",
868 "AnyThread": "1",
869 "EventName": "UOPS_DISPATCHED_PORT.PORT_1_CORE",
870 "SampleAfterValue": "2000003",
871 "BriefDescription": "Cycles per core when uops are dispatched to port 1.",
872 "CounterHTOff": "0,1,2,3,4,5,6,7"
873 },
874 {
875 "EventCode": "0xA1",
876 "Counter": "0,1,2,3",
877 "UMask": "0x40",
878 "AnyThread": "1",
879 "EventName": "UOPS_DISPATCHED_PORT.PORT_4_CORE",
880 "SampleAfterValue": "2000003",
881 "BriefDescription": "Cycles per core when uops are dispatched to port 4.",
882 "CounterHTOff": "0,1,2,3,4,5,6,7"
883 },
884 {
885 "EventCode": "0xA1",
886 "Counter": "0,1,2,3",
887 "UMask": "0x80",
888 "AnyThread": "1",
889 "EventName": "UOPS_DISPATCHED_PORT.PORT_5_CORE",
890 "SampleAfterValue": "2000003",
891 "BriefDescription": "Cycles per core when uops are dispatched to port 5.",
892 "CounterHTOff": "0,1,2,3,4,5,6,7"
893 },
894 {
895 "EventCode": "0xA1",
896 "Counter": "0,1,2,3",
897 "UMask": "0xc",
898 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
899 "SampleAfterValue": "2000003",
900 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 2.",
901 "CounterHTOff": "0,1,2,3,4,5,6,7"
902 },
903 {
904 "EventCode": "0xA1",
905 "Counter": "0,1,2,3",
906 "UMask": "0x30",
907 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
908 "SampleAfterValue": "2000003",
909 "BriefDescription": "Cycles per thread when load or STA uops are dispatched to port 3.",
910 "CounterHTOff": "0,1,2,3,4,5,6,7"
911 },
912 {
913 "EventCode": "0xA1",
914 "Counter": "0,1,2,3",
915 "UMask": "0xc",
916 "AnyThread": "1",
917 "EventName": "UOPS_DISPATCHED_PORT.PORT_2_CORE",
918 "SampleAfterValue": "2000003",
919 "BriefDescription": "Cycles per core when load or STA uops are dispatched to port 2.",
920 "CounterHTOff": "0,1,2,3,4,5,6,7"
921 },
922 {
923 "EventCode": "0xA1",
924 "Counter": "0,1,2,3",
925 "UMask": "0x30",
926 "AnyThread": "1",
927 "EventName": "UOPS_DISPATCHED_PORT.PORT_3_CORE",
928 "SampleAfterValue": "2000003",
929 "BriefDescription": "Cycles per core when load or STA uops are dispatched to port 3.",
930 "CounterHTOff": "0,1,2,3,4,5,6,7"
931 },
932 {
933 "PEBS": "2",
934 "EventCode": "0xC0",
935 "Counter": "1",
936 "UMask": "0x1",
937 "EventName": "INST_RETIRED.PREC_DIST",
938 "SampleAfterValue": "2000003",
939 "BriefDescription": "Instructions retired. (Precise Event - PEBS).",
940 "TakenAlone": "1",
941 "CounterHTOff": "1"
942 },
943 {
944 "EventCode": "0x5B",
945 "Counter": "0,1,2,3",
946 "UMask": "0xf",
947 "EventName": "RESOURCE_STALLS2.ALL_PRF_CONTROL",
948 "SampleAfterValue": "2000003",
949 "BriefDescription": "Resource stalls2 control structures full for physical registers.",
950 "CounterHTOff": "0,1,2,3,4,5,6,7"
951 },
952 {
953 "EventCode": "0x5B",
954 "Counter": "0,1,2,3",
955 "UMask": "0xc",
956 "EventName": "RESOURCE_STALLS2.ALL_FL_EMPTY",
957 "SampleAfterValue": "2000003",
958 "BriefDescription": "Cycles with either free list is empty.",
959 "CounterHTOff": "0,1,2,3,4,5,6,7"
960 },
961 {
962 "EventCode": "0xA2",
963 "Counter": "0,1,2,3",
964 "UMask": "0xe",
965 "EventName": "RESOURCE_STALLS.MEM_RS",
966 "SampleAfterValue": "2000003",
967 "BriefDescription": "Resource stalls due to memory buffers or Reservation Station (RS) being fully utilized.",
968 "CounterHTOff": "0,1,2,3,4,5,6,7"
969 },
970 {
971 "EventCode": "0xA2",
972 "Counter": "0,1,2,3",
973 "UMask": "0xf0",
974 "EventName": "RESOURCE_STALLS.OOO_RSRC",
975 "SampleAfterValue": "2000003",
976 "BriefDescription": "Resource stalls due to Rob being full, FCSW, MXCSR and OTHER.",
977 "CounterHTOff": "0,1,2,3,4,5,6,7"
978 },
979 {
980 "EventCode": "0x5B",
981 "Counter": "0,1,2,3",
982 "UMask": "0x4f",
983 "EventName": "RESOURCE_STALLS2.OOO_RSRC",
984 "SampleAfterValue": "2000003",
985 "BriefDescription": "Resource stalls out of order resources full.",
986 "CounterHTOff": "0,1,2,3,4,5,6,7"
987 },
988 {
989 "EventCode": "0xA2",
990 "Counter": "0,1,2,3",
991 "UMask": "0xa",
992 "EventName": "RESOURCE_STALLS.LB_SB",
993 "SampleAfterValue": "2000003",
994 "BriefDescription": "Resource stalls due to load or store buffers all being in use.",
995 "CounterHTOff": "0,1,2,3,4,5,6,7"
996 },
997 {
998 "EventCode": "0x0D",
999 "Counter": "0,1,2,3",
1000 "UMask": "0x3",
1001 "EventName": "INT_MISC.RECOVERY_CYCLES",
1002 "SampleAfterValue": "2000003",
1003 "BriefDescription": "Number of cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...).",
1004 "CounterMask": "1",
1005 "CounterHTOff": "0,1,2,3,4,5,6,7"
1006 },
1007 {
1008 "PublicDescription": "This event counts the number of cycles spent executing performance-sensitive flags-merging uops. For example, shift CL (merge_arith_flags). For more details, See the Intel? 64 and IA-32 Architectures Optimization Reference Manual.",
1009 "EventCode": "0x59",
1010 "Counter": "0,1,2,3",
1011 "UMask": "0x20",
1012 "EventName": "PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP_CYCLES",
1013 "SampleAfterValue": "2000003",
1014 "BriefDescription": "Performance sensitive flags-merging uops added by Sandy Bridge u-arch.",
1015 "CounterMask": "1",
1016 "CounterHTOff": "0,1,2,3,4,5,6,7"
1017 },
1018 {
1019 "EventCode": "0x0D",
1020 "Counter": "0,1,2,3",
1021 "UMask": "0x3",
1022 "EdgeDetect": "1",
1023 "EventName": "INT_MISC.RECOVERY_STALLS_COUNT",
1024 "SampleAfterValue": "2000003",
1025 "BriefDescription": "Number of occurences waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...).",
1026 "CounterMask": "1",
1027 "CounterHTOff": "0,1,2,3,4,5,6,7"
1028 },
1029 {
1030 "EventCode": "0xE6",
1031 "Counter": "0,1,2,3",
1032 "UMask": "0x1f",
1033 "EventName": "BACLEARS.ANY",
1034 "SampleAfterValue": "100003",
1035 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
1036 "CounterHTOff": "0,1,2,3,4,5,6,7"
1037 },
1038 {
1039 "EventCode": "0x88",
1040 "Counter": "0,1,2,3",
1041 "UMask": "0xff",
1042 "EventName": "BR_INST_EXEC.ALL_BRANCHES",
1043 "SampleAfterValue": "200003",
1044 "BriefDescription": "Speculative and retired branches.",
1045 "CounterHTOff": "0,1,2,3,4,5,6,7"
1046 },
1047 {
1048 "EventCode": "0x89",
1049 "Counter": "0,1,2,3",
1050 "UMask": "0xff",
1051 "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
1052 "SampleAfterValue": "200003",
1053 "BriefDescription": "Speculative and retired mispredicted macro conditional branches.",
1054 "CounterHTOff": "0,1,2,3,4,5,6,7"
1055 },
1056 {
1057 "EventCode": "0xC2",
1058 "Invert": "1",
1059 "Counter": "0,1,2,3",
1060 "UMask": "0x1",
1061 "EventName": "UOPS_RETIRED.CORE_STALL_CYCLES",
1062 "SampleAfterValue": "2000003",
1063 "BriefDescription": "Cycles without actually retired uops.",
1064 "CounterMask": "1",
1065 "CounterHTOff": "0,1,2,3"
1066 },
1067 {
1068 "EventCode": "0xA8",
1069 "Counter": "0,1,2,3",
1070 "UMask": "0x1",
1071 "EventName": "LSD.CYCLES_4_UOPS",
1072 "SampleAfterValue": "2000003",
1073 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
1074 "CounterMask": "4",
1075 "CounterHTOff": "0,1,2,3,4,5,6,7"
1076 },
1077 {
1078 "EventCode": "0xc3",
1079 "Counter": "0,1,2,3",
1080 "UMask": "0x1",
1081 "EdgeDetect": "1",
1082 "EventName": "MACHINE_CLEARS.COUNT",
1083 "SampleAfterValue": "100003",
1084 "BriefDescription": "Number of machine clears (nukes) of any type.",
1085 "CounterMask": "1",
1086 "CounterHTOff": "0,1,2,3,4,5,6,7"
1087 },
1088 {
1089 "EventCode": "0x5E",
1090 "Invert": "1",
1091 "Counter": "0,1,2,3",
1092 "UMask": "0x1",
1093 "EdgeDetect": "1",
1094 "EventName": "RS_EVENTS.EMPTY_END",
1095 "SampleAfterValue": "2000003",
1096 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
1097 "CounterMask": "1",
1098 "CounterHTOff": "0,1,2,3,4,5,6,7"
1099 },
1100 {
1101 "EventCode": "0x00",
1102 "Counter": "Fixed counter 2",
1103 "UMask": "0x2",
1104 "AnyThread": "1",
1105 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
1106 "SampleAfterValue": "2000003",
1107 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1108 "CounterHTOff": "Fixed counter 2"
1109 },
1110 {
1111 "EventCode": "0x3C",
1112 "Counter": "0,1,2,3",
1113 "UMask": "0x0",
1114 "AnyThread": "1",
1115 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
1116 "SampleAfterValue": "2000003",
1117 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
1118 "CounterHTOff": "0,1,2,3,4,5,6,7"
1119 },
1120 {
1121 "EventCode": "0x3C",
1122 "Counter": "0,1,2,3",
1123 "UMask": "0x1",
1124 "AnyThread": "1",
1125 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
1126 "SampleAfterValue": "2000003",
1127 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1128 "CounterHTOff": "0,1,2,3,4,5,6,7"
1129 },
1130 {
1131 "EventCode": "0x0D",
1132 "Counter": "0,1,2,3",
1133 "UMask": "0x3",
1134 "AnyThread": "1",
1135 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
1136 "SampleAfterValue": "2000003",
1137 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
1138 "CounterMask": "1",
1139 "CounterHTOff": "0,1,2,3,4,5,6,7"
1140 },
1141 {
1142 "EventCode": "0xB1",
1143 "Counter": "0,1,2,3",
1144 "UMask": "0x2",
1145 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
1146 "SampleAfterValue": "2000003",
1147 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
1148 "CounterMask": "1",
1149 "CounterHTOff": "0,1,2,3,4,5,6,7"
1150 },
1151 {
1152 "EventCode": "0xB1",
1153 "Counter": "0,1,2,3",
1154 "UMask": "0x2",
1155 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
1156 "SampleAfterValue": "2000003",
1157 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
1158 "CounterMask": "2",
1159 "CounterHTOff": "0,1,2,3,4,5,6,7"
1160 },
1161 {
1162 "EventCode": "0xB1",
1163 "Counter": "0,1,2,3",
1164 "UMask": "0x2",
1165 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
1166 "SampleAfterValue": "2000003",
1167 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
1168 "CounterMask": "3",
1169 "CounterHTOff": "0,1,2,3,4,5,6,7"
1170 },
1171 {
1172 "EventCode": "0xB1",
1173 "Counter": "0,1,2,3",
1174 "UMask": "0x2",
1175 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
1176 "SampleAfterValue": "2000003",
1177 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
1178 "CounterMask": "4",
1179 "CounterHTOff": "0,1,2,3,4,5,6,7"
1180 },
1181 {
1182 "EventCode": "0xB1",
1183 "Invert": "1",
1184 "Counter": "0,1,2,3",
1185 "UMask": "0x2",
1186 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
1187 "SampleAfterValue": "2000003",
1188 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
1189 "CounterHTOff": "0,1,2,3,4,5,6,7"
1190 },
1191 {
1192 "PublicDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate)",
1193 "EventCode": "0x3C",
1194 "Counter": "0,1,2,3",
1195 "UMask": "0x1",
1196 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
1197 "SampleAfterValue": "2000003",
1198 "BriefDescription": "Reference cycles when the thread is unhalted (counts at 100 MHz rate).",
1199 "CounterHTOff": "0,1,2,3,4,5,6,7"
1200 },
1201 {
1202 "EventCode": "0x3C",
1203 "Counter": "0,1,2,3",
1204 "UMask": "0x1",
1205 "AnyThread": "1",
1206 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
1207 "SampleAfterValue": "2000003",
1208 "BriefDescription": "Reference cycles when the at least one thread on the physical core is unhalted (counts at 100 MHz rate).",
1209 "CounterHTOff": "0,1,2,3,4,5,6,7"
1210 },
1211 {
1212 "EventCode": "0x3C",
1213 "Counter": "0,1,2,3",
1214 "UMask": "0x2",
1215 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
1216 "SampleAfterValue": "2000003",
1217 "BriefDescription": "Count XClk pulses when this thread is unhalted and the other thread is halted.",
1218 "CounterHTOff": "0,1,2,3,4,5,6,7"
1219 }
1220] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/sandybridge/virtual-memory.json b/tools/perf/pmu-events/arch/x86/sandybridge/virtual-memory.json
new file mode 100644
index 000000000000..a654ab771fce
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/sandybridge/virtual-memory.json
@@ -0,0 +1,149 @@
1[
2 {
3 "EventCode": "0xAE",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ITLB.ITLB_FLUSH",
7 "SampleAfterValue": "100007",
8 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0x4F",
13 "Counter": "0,1,2,3",
14 "UMask": "0x10",
15 "EventName": "EPT.WALK_CYCLES",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Cycle count for an Extended Page table walk. The Extended Page Directory cache is used by Virtual Machine operating systems while the guest operating systems use the standard TLB caches.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0x85",
22 "Counter": "0,1,2,3",
23 "UMask": "0x1",
24 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
25 "SampleAfterValue": "100003",
26 "BriefDescription": "Misses at all ITLB levels that cause page walks.",
27 "CounterHTOff": "0,1,2,3,4,5,6,7"
28 },
29 {
30 "EventCode": "0x85",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "ITLB_MISSES.WALK_COMPLETED",
34 "SampleAfterValue": "100003",
35 "BriefDescription": "Misses in all ITLB levels that cause completed page walks.",
36 "CounterHTOff": "0,1,2,3,4,5,6,7"
37 },
38 {
39 "PublicDescription": "This event count cycles when Page Miss Handler (PMH) is servicing page walks caused by ITLB misses.",
40 "EventCode": "0x85",
41 "Counter": "0,1,2,3",
42 "UMask": "0x4",
43 "EventName": "ITLB_MISSES.WALK_DURATION",
44 "SampleAfterValue": "2000003",
45 "BriefDescription": "Cycles when PMH is busy with page walks.",
46 "CounterHTOff": "0,1,2,3,4,5,6,7"
47 },
48 {
49 "EventCode": "0x85",
50 "Counter": "0,1,2,3",
51 "UMask": "0x10",
52 "EventName": "ITLB_MISSES.STLB_HIT",
53 "SampleAfterValue": "100003",
54 "BriefDescription": "Operations that miss the first ITLB level but hit the second and do not cause any page walks.",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "EventCode": "0x08",
59 "Counter": "0,1,2,3",
60 "UMask": "0x1",
61 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
62 "SampleAfterValue": "100003",
63 "BriefDescription": "Load misses in all DTLB levels that cause page walks.",
64 "CounterHTOff": "0,1,2,3,4,5,6,7"
65 },
66 {
67 "EventCode": "0x08",
68 "Counter": "0,1,2,3",
69 "UMask": "0x2",
70 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
71 "SampleAfterValue": "100003",
72 "BriefDescription": "Load misses at all DTLB levels that cause completed page walks.",
73 "CounterHTOff": "0,1,2,3,4,5,6,7"
74 },
75 {
76 "PublicDescription": "This event counts cycles when the page miss handler (PMH) is servicing page walks caused by DTLB load misses.",
77 "EventCode": "0x08",
78 "Counter": "0,1,2,3",
79 "UMask": "0x4",
80 "EventName": "DTLB_LOAD_MISSES.WALK_DURATION",
81 "SampleAfterValue": "2000003",
82 "BriefDescription": "Cycles when PMH is busy with page walks.",
83 "CounterHTOff": "0,1,2,3,4,5,6,7"
84 },
85 {
86 "PublicDescription": "This event counts load operations that miss the first DTLB level but hit the second and do not cause any page walks. The penalty in this case is approximately 7 cycles.",
87 "EventCode": "0x08",
88 "Counter": "0,1,2,3",
89 "UMask": "0x10",
90 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
91 "SampleAfterValue": "100003",
92 "BriefDescription": "Load operations that miss the first DTLB level but hit the second and do not cause page walks.",
93 "CounterHTOff": "0,1,2,3,4,5,6,7"
94 },
95 {
96 "EventCode": "0x49",
97 "Counter": "0,1,2,3",
98 "UMask": "0x1",
99 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
100 "SampleAfterValue": "100003",
101 "BriefDescription": "Store misses in all DTLB levels that cause page walks.",
102 "CounterHTOff": "0,1,2,3,4,5,6,7"
103 },
104 {
105 "EventCode": "0x49",
106 "Counter": "0,1,2,3",
107 "UMask": "0x2",
108 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
109 "SampleAfterValue": "100003",
110 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks.",
111 "CounterHTOff": "0,1,2,3,4,5,6,7"
112 },
113 {
114 "EventCode": "0x49",
115 "Counter": "0,1,2,3",
116 "UMask": "0x4",
117 "EventName": "DTLB_STORE_MISSES.WALK_DURATION",
118 "SampleAfterValue": "2000003",
119 "BriefDescription": "Cycles when PMH is busy with page walks.",
120 "CounterHTOff": "0,1,2,3,4,5,6,7"
121 },
122 {
123 "EventCode": "0x49",
124 "Counter": "0,1,2,3",
125 "UMask": "0x10",
126 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
127 "SampleAfterValue": "100003",
128 "BriefDescription": "Store operations that miss the first TLB level but hit the second and do not cause page walks.",
129 "CounterHTOff": "0,1,2,3,4,5,6,7"
130 },
131 {
132 "EventCode": "0xBD",
133 "Counter": "0,1,2,3",
134 "UMask": "0x1",
135 "EventName": "TLB_FLUSH.DTLB_THREAD",
136 "SampleAfterValue": "100007",
137 "BriefDescription": "DTLB flush attempts of the thread-specific entries.",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "EventCode": "0xBD",
142 "Counter": "0,1,2,3",
143 "UMask": "0x20",
144 "EventName": "TLB_FLUSH.STLB_ANY",
145 "SampleAfterValue": "100007",
146 "BriefDescription": "STLB flush attempts.",
147 "CounterHTOff": "0,1,2,3,4,5,6,7"
148 }
149] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/silvermont/cache.json b/tools/perf/pmu-events/arch/x86/silvermont/cache.json
new file mode 100644
index 000000000000..0bd1bc5302de
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/silvermont/cache.json
@@ -0,0 +1,811 @@
1[
2 {
3 "PublicDescription": "This event counts the number of demand and prefetch transactions that the L2 XQ rejects due to a full or near full condition which likely indicates back pressure from the IDI link. The XQ may reject transactions from the L2Q (non-cacheable requests), BBS (L2 misses) and WOB (L2 write-back victims).",
4 "EventCode": "0x30",
5 "Counter": "0,1",
6 "UMask": "0x0",
7 "EventName": "L2_REJECT_XQ.ALL",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Counts the number of request from the L2 that were not accepted into the XQ"
10 },
11 {
12 "PublicDescription": "Counts the number of (demand and L1 prefetchers) core requests rejected by the L2Q due to a full or nearly full w condition which likely indicates back pressure from L2Q. It also counts requests that would have gone directly to the XQ, but are rejected due to a full or nearly full condition, indicating back pressure from the IDI link. The L2Q may also reject transactions from a core to insure fairness between cores, or to delay a core?s dirty eviction when the address conflicts incoming external snoops. (Note that L2 prefetcher requests that are dropped are not counted by this event.)",
13 "EventCode": "0x31",
14 "Counter": "0,1",
15 "UMask": "0x0",
16 "EventName": "CORE_REJECT_L2Q.ALL",
17 "SampleAfterValue": "200003",
18 "BriefDescription": "Counts the number of request that were not accepted into the L2Q because the L2Q is FULL."
19 },
20 {
21 "PublicDescription": "This event counts requests originating from the core that references a cache line in the L2 cache.",
22 "EventCode": "0x2E",
23 "Counter": "0,1",
24 "UMask": "0x4f",
25 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
26 "SampleAfterValue": "200003",
27 "BriefDescription": "L2 cache requests from this core"
28 },
29 {
30 "PublicDescription": "This event counts the total number of L2 cache references and the number of L2 cache misses respectively.",
31 "EventCode": "0x2E",
32 "Counter": "0,1",
33 "UMask": "0x41",
34 "EventName": "LONGEST_LAT_CACHE.MISS",
35 "SampleAfterValue": "200003",
36 "BriefDescription": "L2 cache request misses"
37 },
38 {
39 "EventCode": "0x86",
40 "Counter": "0,1",
41 "UMask": "0x4",
42 "EventName": "FETCH_STALL.ICACHE_FILL_PENDING_CYCLES",
43 "SampleAfterValue": "200003",
44 "BriefDescription": "Counts the number of cycles the NIP stalls because of an icache miss. This is a cumulative count of cycles the NIP stalled for all icache misses."
45 },
46 {
47 "PEBS": "1",
48 "PublicDescription": "This event counts the number of retired loads that were prohibited from receiving forwarded data from the store because of address mismatch.",
49 "EventCode": "0x03",
50 "Counter": "0,1",
51 "UMask": "0x1",
52 "EventName": "REHABQ.LD_BLOCK_ST_FORWARD",
53 "SampleAfterValue": "200003",
54 "BriefDescription": "Loads blocked due to store forward restriction"
55 },
56 {
57 "PublicDescription": "This event counts the cases where a forward was technically possible, but did not occur because the store data was not available at the right time.",
58 "EventCode": "0x03",
59 "Counter": "0,1",
60 "UMask": "0x2",
61 "EventName": "REHABQ.LD_BLOCK_STD_NOTREADY",
62 "SampleAfterValue": "200003",
63 "BriefDescription": "Loads blocked due to store data not ready"
64 },
65 {
66 "PublicDescription": "This event counts the number of retire stores that experienced cache line boundary splits.",
67 "EventCode": "0x03",
68 "Counter": "0,1",
69 "UMask": "0x4",
70 "EventName": "REHABQ.ST_SPLITS",
71 "SampleAfterValue": "200003",
72 "BriefDescription": "Store uops that split cache line boundary"
73 },
74 {
75 "PEBS": "1",
76 "PublicDescription": "This event counts the number of retire loads that experienced cache line boundary splits.",
77 "EventCode": "0x03",
78 "Counter": "0,1",
79 "UMask": "0x8",
80 "EventName": "REHABQ.LD_SPLITS",
81 "SampleAfterValue": "200003",
82 "BriefDescription": "Load uops that split cache line boundary"
83 },
84 {
85 "PublicDescription": "This event counts the number of retired memory operations with lock semantics. These are either implicit locked instructions such as the XCHG instruction or instructions with an explicit LOCK prefix (0xF0).",
86 "EventCode": "0x03",
87 "Counter": "0,1",
88 "UMask": "0x10",
89 "EventName": "REHABQ.LOCK",
90 "SampleAfterValue": "200003",
91 "BriefDescription": "Uops with lock semantics"
92 },
93 {
94 "PublicDescription": "This event counts the number of retired stores that are delayed because there is not a store address buffer available.",
95 "EventCode": "0x03",
96 "Counter": "0,1",
97 "UMask": "0x20",
98 "EventName": "REHABQ.STA_FULL",
99 "SampleAfterValue": "200003",
100 "BriefDescription": "Store address buffer full"
101 },
102 {
103 "PublicDescription": "This event counts the number of load uops reissued from Rehabq.",
104 "EventCode": "0x03",
105 "Counter": "0,1",
106 "UMask": "0x40",
107 "EventName": "REHABQ.ANY_LD",
108 "SampleAfterValue": "200003",
109 "BriefDescription": "Any reissued load uops"
110 },
111 {
112 "PublicDescription": "This event counts the number of store uops reissued from Rehabq.",
113 "EventCode": "0x03",
114 "Counter": "0,1",
115 "UMask": "0x80",
116 "EventName": "REHABQ.ANY_ST",
117 "SampleAfterValue": "200003",
118 "BriefDescription": "Any reissued store uops"
119 },
120 {
121 "PublicDescription": "This event counts the number of load ops retired that miss in L1 Data cache. Note that prefetch misses will not be counted.",
122 "EventCode": "0x04",
123 "Counter": "0,1",
124 "UMask": "0x1",
125 "EventName": "MEM_UOPS_RETIRED.L1_MISS_LOADS",
126 "SampleAfterValue": "200003",
127 "BriefDescription": "Loads missed L1"
128 },
129 {
130 "PEBS": "1",
131 "PublicDescription": "This event counts the number of load ops retired that hit in the L2.",
132 "EventCode": "0x04",
133 "Counter": "0,1",
134 "UMask": "0x2",
135 "EventName": "MEM_UOPS_RETIRED.L2_HIT_LOADS",
136 "SampleAfterValue": "200003",
137 "BriefDescription": "Loads hit L2"
138 },
139 {
140 "PEBS": "1",
141 "PublicDescription": "This event counts the number of load ops retired that miss in the L2.",
142 "EventCode": "0x04",
143 "Counter": "0,1",
144 "UMask": "0x4",
145 "EventName": "MEM_UOPS_RETIRED.L2_MISS_LOADS",
146 "SampleAfterValue": "100007",
147 "BriefDescription": "Loads missed L2"
148 },
149 {
150 "PublicDescription": "This event counts the number of load ops retired that had UTLB miss.",
151 "EventCode": "0x04",
152 "Counter": "0,1",
153 "UMask": "0x10",
154 "EventName": "MEM_UOPS_RETIRED.UTLB_MISS",
155 "SampleAfterValue": "200003",
156 "BriefDescription": "Loads missed UTLB"
157 },
158 {
159 "PEBS": "1",
160 "PublicDescription": "This event counts the number of load ops retired that got data from the other core or from the other module.",
161 "EventCode": "0x04",
162 "Counter": "0,1",
163 "UMask": "0x20",
164 "EventName": "MEM_UOPS_RETIRED.HITM",
165 "SampleAfterValue": "200003",
166 "BriefDescription": "Cross core or cross module hitm"
167 },
168 {
169 "PublicDescription": "This event counts the number of load ops retired.",
170 "EventCode": "0x04",
171 "Counter": "0,1",
172 "UMask": "0x40",
173 "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
174 "SampleAfterValue": "200003",
175 "BriefDescription": "All Loads"
176 },
177 {
178 "PublicDescription": "This event counts the number of store ops retired.",
179 "EventCode": "0x04",
180 "Counter": "0,1",
181 "UMask": "0x80",
182 "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
183 "SampleAfterValue": "200003",
184 "BriefDescription": "All Stores"
185 },
186 {
187 "PublicDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction.",
188 "EventCode": "0xB7",
189 "Counter": "0,1",
190 "UMask": "0x1",
191 "EventName": "OFFCORE_RESPONSE",
192 "SampleAfterValue": "100007",
193 "BriefDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction"
194 },
195 {
196 "EventCode": "0xB7",
197 "MSRValue": "0x1680000044",
198 "Counter": "0,1",
199 "UMask": "0x1",
200 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_MISS.ANY",
201 "MSRIndex": "0x1a6,0x1a7",
202 "SampleAfterValue": "100007",
203 "BriefDescription": "Counts any code reads (demand & prefetch) that miss L2.",
204 "Offcore": "1"
205 },
206 {
207 "EventCode": "0xB7",
208 "MSRValue": "0x1000000044",
209 "Counter": "0,1",
210 "UMask": "0x1",
211 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_MISS.HITM_OTHER_CORE",
212 "MSRIndex": "0x1a6,0x1a7",
213 "SampleAfterValue": "100007",
214 "BriefDescription": "Counts any code reads (demand & prefetch) that hit in the other module where modified copies were found in other core's L1 cache.",
215 "Offcore": "1"
216 },
217 {
218 "EventCode": "0xB7",
219 "MSRValue": "0x0400000044",
220 "Counter": "0,1",
221 "UMask": "0x1",
222 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
223 "MSRIndex": "0x1a6,0x1a7",
224 "SampleAfterValue": "100007",
225 "BriefDescription": "Counts any code reads (demand & prefetch) that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
226 "Offcore": "1"
227 },
228 {
229 "EventCode": "0xB7",
230 "MSRValue": "0x0200000044",
231 "Counter": "0,1",
232 "UMask": "0x1",
233 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.L2_MISS.SNOOP_MISS",
234 "MSRIndex": "0x1a6,0x1a7",
235 "SampleAfterValue": "100007",
236 "BriefDescription": "Counts any code reads (demand & prefetch) that miss L2 with a snoop miss response.",
237 "Offcore": "1"
238 },
239 {
240 "EventCode": "0xB7",
241 "MSRValue": "0x0000010044",
242 "Counter": "0,1",
243 "UMask": "0x1",
244 "EventName": "OFFCORE_RESPONSE.ANY_CODE_RD.ANY_RESPONSE",
245 "MSRIndex": "0x1a6,0x1a7",
246 "SampleAfterValue": "100007",
247 "BriefDescription": "Counts any code reads (demand & prefetch) that have any response type.",
248 "Offcore": "1"
249 },
250 {
251 "EventCode": "0xB7",
252 "MSRValue": "0x1680000022",
253 "Counter": "0,1",
254 "UMask": "0x1",
255 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.ANY",
256 "MSRIndex": "0x1a6,0x1a7",
257 "SampleAfterValue": "100007",
258 "BriefDescription": "Counts any rfo reads (demand & prefetch) that miss L2.",
259 "Offcore": "1"
260 },
261 {
262 "EventCode": "0xB7",
263 "MSRValue": "0x1000000022",
264 "Counter": "0,1",
265 "UMask": "0x1",
266 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.HITM_OTHER_CORE",
267 "MSRIndex": "0x1a6,0x1a7",
268 "SampleAfterValue": "100007",
269 "BriefDescription": "Counts any rfo reads (demand & prefetch) that hit in the other module where modified copies were found in other core's L1 cache.",
270 "Offcore": "1"
271 },
272 {
273 "EventCode": "0xB7",
274 "MSRValue": "0x0400000022",
275 "Counter": "0,1",
276 "UMask": "0x1",
277 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.HIT_OTHER_CORE_NO_FWD",
278 "MSRIndex": "0x1a6,0x1a7",
279 "SampleAfterValue": "100007",
280 "BriefDescription": "Counts any rfo reads (demand & prefetch) that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
281 "Offcore": "1"
282 },
283 {
284 "EventCode": "0xB7",
285 "MSRValue": "0x0200000022",
286 "Counter": "0,1",
287 "UMask": "0x1",
288 "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.SNOOP_MISS",
289 "MSRIndex": "0x1a6,0x1a7",
290 "SampleAfterValue": "100007",
291 "BriefDescription": "Counts any rfo reads (demand & prefetch) that miss L2 with a snoop miss response.",
292 "Offcore": "1"
293 },
294 {
295 "EventCode": "0xB7",
296 "MSRValue": "0x0000010022",
297 "Counter": "0,1",
298 "UMask": "0x1",
299 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_RESPONSE",
300 "MSRIndex": "0x1a6,0x1a7",
301 "SampleAfterValue": "100007",
302 "BriefDescription": "Counts any rfo reads (demand & prefetch) that have any response type.",
303 "Offcore": "1"
304 },
305 {
306 "EventCode": "0xB7",
307 "MSRValue": "0x1680003091",
308 "Counter": "0,1",
309 "UMask": "0x1",
310 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.ANY",
311 "MSRIndex": "0x1a6,0x1a7",
312 "SampleAfterValue": "100007",
313 "BriefDescription": "Counts any data read (demand & prefetch) that miss L2.",
314 "Offcore": "1"
315 },
316 {
317 "EventCode": "0xB7",
318 "MSRValue": "0x1000003091",
319 "Counter": "0,1",
320 "UMask": "0x1",
321 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.HITM_OTHER_CORE",
322 "MSRIndex": "0x1a6,0x1a7",
323 "SampleAfterValue": "100007",
324 "BriefDescription": "Counts any data read (demand & prefetch) that hit in the other module where modified copies were found in other core's L1 cache.",
325 "Offcore": "1"
326 },
327 {
328 "EventCode": "0xB7",
329 "MSRValue": "0x0400003091",
330 "Counter": "0,1",
331 "UMask": "0x1",
332 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
333 "MSRIndex": "0x1a6,0x1a7",
334 "SampleAfterValue": "100007",
335 "BriefDescription": "Counts any data read (demand & prefetch) that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
336 "Offcore": "1"
337 },
338 {
339 "EventCode": "0xB7",
340 "MSRValue": "0x0200003091",
341 "Counter": "0,1",
342 "UMask": "0x1",
343 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.SNOOP_MISS",
344 "MSRIndex": "0x1a6,0x1a7",
345 "SampleAfterValue": "100007",
346 "BriefDescription": "Counts any data read (demand & prefetch) that miss L2 with a snoop miss response.",
347 "Offcore": "1"
348 },
349 {
350 "EventCode": "0xB7",
351 "MSRValue": "0x0000013091",
352 "Counter": "0,1",
353 "UMask": "0x1",
354 "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.ANY_RESPONSE",
355 "MSRIndex": "0x1a6,0x1a7",
356 "SampleAfterValue": "100007",
357 "BriefDescription": "Counts any data read (demand & prefetch) that have any response type.",
358 "Offcore": "1"
359 },
360 {
361 "EventCode": "0xB7",
362 "MSRValue": "0x1680004800",
363 "Counter": "0,1",
364 "UMask": "0x1",
365 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L2_MISS.ANY",
366 "MSRIndex": "0x1a6,0x1a7",
367 "SampleAfterValue": "100007",
368 "BriefDescription": "Counts streaming store that miss L2.",
369 "Offcore": "1"
370 },
371 {
372 "EventCode": "0xB7",
373 "MSRValue": "0x1000008008",
374 "Counter": "0,1",
375 "UMask": "0x1",
376 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.HITM_OTHER_CORE",
377 "MSRIndex": "0x1a6,0x1a7",
378 "SampleAfterValue": "100007",
379 "BriefDescription": "Counts any request that hit in the other module where modified copies were found in other core's L1 cache.",
380 "Offcore": "1"
381 },
382 {
383 "EventCode": "0xB7",
384 "MSRValue": "0x0400008008",
385 "Counter": "0,1",
386 "UMask": "0x1",
387 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.HIT_OTHER_CORE_NO_FWD",
388 "MSRIndex": "0x1a6,0x1a7",
389 "SampleAfterValue": "100007",
390 "BriefDescription": "Counts any request that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
391 "Offcore": "1"
392 },
393 {
394 "EventCode": "0xB7",
395 "MSRValue": "0x0200008008",
396 "Counter": "0,1",
397 "UMask": "0x1",
398 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.SNOOP_MISS",
399 "MSRIndex": "0x1a6,0x1a7",
400 "SampleAfterValue": "100007",
401 "BriefDescription": "Counts any request that miss L2 with a snoop miss response.",
402 "Offcore": "1"
403 },
404 {
405 "EventCode": "0xB7",
406 "MSRValue": "0x0000018008",
407 "Counter": "0,1",
408 "UMask": "0x1",
409 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_RESPONSE",
410 "MSRIndex": "0x1a6,0x1a7",
411 "SampleAfterValue": "100007",
412 "BriefDescription": "Counts any request that have any response type.",
413 "Offcore": "1"
414 },
415 {
416 "EventCode": "0xB7",
417 "MSRValue": "0x1680002000",
418 "Counter": "0,1",
419 "UMask": "0x1",
420 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.ANY",
421 "MSRIndex": "0x1a6,0x1a7",
422 "SampleAfterValue": "100007",
423 "BriefDescription": "Counts DCU hardware prefetcher data read that miss L2.",
424 "Offcore": "1"
425 },
426 {
427 "EventCode": "0xB7",
428 "MSRValue": "0x1000002000",
429 "Counter": "0,1",
430 "UMask": "0x1",
431 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.HITM_OTHER_CORE",
432 "MSRIndex": "0x1a6,0x1a7",
433 "SampleAfterValue": "100007",
434 "BriefDescription": "Counts DCU hardware prefetcher data read that hit in the other module where modified copies were found in other core's L1 cache.",
435 "Offcore": "1"
436 },
437 {
438 "EventCode": "0xB7",
439 "MSRValue": "0x0400002000",
440 "Counter": "0,1",
441 "UMask": "0x1",
442 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
443 "MSRIndex": "0x1a6,0x1a7",
444 "SampleAfterValue": "100007",
445 "BriefDescription": "Counts DCU hardware prefetcher data read that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
446 "Offcore": "1"
447 },
448 {
449 "EventCode": "0xB7",
450 "MSRValue": "0x0200002000",
451 "Counter": "0,1",
452 "UMask": "0x1",
453 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.SNOOP_MISS",
454 "MSRIndex": "0x1a6,0x1a7",
455 "SampleAfterValue": "100007",
456 "BriefDescription": "Counts DCU hardware prefetcher data read that miss L2 with a snoop miss response.",
457 "Offcore": "1"
458 },
459 {
460 "EventCode": "0xB7",
461 "MSRValue": "0x0000012000",
462 "Counter": "0,1",
463 "UMask": "0x1",
464 "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.ANY_RESPONSE",
465 "MSRIndex": "0x1a6,0x1a7",
466 "SampleAfterValue": "100007",
467 "BriefDescription": "Counts DCU hardware prefetcher data read that have any response type.",
468 "Offcore": "1"
469 },
470 {
471 "EventCode": "0xB7",
472 "MSRValue": "0x1680000100",
473 "Counter": "0,1",
474 "UMask": "0x1",
475 "EventName": "OFFCORE_RESPONSE.PARTIAL_WRITES.L2_MISS.ANY",
476 "MSRIndex": "0x1a6,0x1a7",
477 "SampleAfterValue": "100007",
478 "BriefDescription": "Countsof demand RFO requests to write to partial cache lines that miss L2.",
479 "Offcore": "1"
480 },
481 {
482 "EventCode": "0xB7",
483 "MSRValue": "0x1680000080",
484 "Counter": "0,1",
485 "UMask": "0x1",
486 "EventName": "OFFCORE_RESPONSE.PARTIAL_READS.L2_MISS.ANY",
487 "MSRIndex": "0x1a6,0x1a7",
488 "SampleAfterValue": "100007",
489 "BriefDescription": "Counts demand reads of partial cache lines (including UC and WC) that miss L2.",
490 "Offcore": "1"
491 },
492 {
493 "EventCode": "0xB7",
494 "MSRValue": "0x1680000040",
495 "Counter": "0,1",
496 "UMask": "0x1",
497 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_MISS.ANY",
498 "MSRIndex": "0x1a6,0x1a7",
499 "SampleAfterValue": "100007",
500 "BriefDescription": "Counts code reads generated by L2 prefetchers that miss L2.",
501 "Offcore": "1"
502 },
503 {
504 "EventCode": "0xB7",
505 "MSRValue": "0x0400000040",
506 "Counter": "0,1",
507 "UMask": "0x1",
508 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
509 "MSRIndex": "0x1a6,0x1a7",
510 "SampleAfterValue": "100007",
511 "BriefDescription": "Counts code reads generated by L2 prefetchers that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
512 "Offcore": "1"
513 },
514 {
515 "EventCode": "0xB7",
516 "MSRValue": "0x0200000040",
517 "Counter": "0,1",
518 "UMask": "0x1",
519 "EventName": "OFFCORE_RESPONSE.PF_L2_CODE_RD.L2_MISS.SNOOP_MISS",
520 "MSRIndex": "0x1a6,0x1a7",
521 "SampleAfterValue": "100007",
522 "BriefDescription": "Counts code reads generated by L2 prefetchers that miss L2 with a snoop miss response.",
523 "Offcore": "1"
524 },
525 {
526 "EventCode": "0xB7",
527 "MSRValue": "0x1680000020",
528 "Counter": "0,1",
529 "UMask": "0x1",
530 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.ANY",
531 "MSRIndex": "0x1a6,0x1a7",
532 "SampleAfterValue": "100007",
533 "BriefDescription": "Counts RFO requests generated by L2 prefetchers that miss L2.",
534 "Offcore": "1"
535 },
536 {
537 "EventCode": "0xB7",
538 "MSRValue": "0x1000000020",
539 "Counter": "0,1",
540 "UMask": "0x1",
541 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.HITM_OTHER_CORE",
542 "MSRIndex": "0x1a6,0x1a7",
543 "SampleAfterValue": "100007",
544 "BriefDescription": "Counts RFO requests generated by L2 prefetchers that hit in the other module where modified copies were found in other core's L1 cache.",
545 "Offcore": "1"
546 },
547 {
548 "EventCode": "0xB7",
549 "MSRValue": "0x0400000020",
550 "Counter": "0,1",
551 "UMask": "0x1",
552 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.HIT_OTHER_CORE_NO_FWD",
553 "MSRIndex": "0x1a6,0x1a7",
554 "SampleAfterValue": "100007",
555 "BriefDescription": "Counts RFO requests generated by L2 prefetchers that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
556 "Offcore": "1"
557 },
558 {
559 "EventCode": "0xB7",
560 "MSRValue": "0x0200000020",
561 "Counter": "0,1",
562 "UMask": "0x1",
563 "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.SNOOP_MISS",
564 "MSRIndex": "0x1a6,0x1a7",
565 "SampleAfterValue": "100007",
566 "BriefDescription": "Counts RFO requests generated by L2 prefetchers that miss L2 with a snoop miss response.",
567 "Offcore": "1"
568 },
569 {
570 "EventCode": "0xB7",
571 "MSRValue": "0x1680000010",
572 "Counter": "0,1",
573 "UMask": "0x1",
574 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.ANY",
575 "MSRIndex": "0x1a6,0x1a7",
576 "SampleAfterValue": "100007",
577 "BriefDescription": "Counts data cacheline reads generated by L2 prefetchers that miss L2.",
578 "Offcore": "1"
579 },
580 {
581 "EventCode": "0xB7",
582 "MSRValue": "0x1000000010",
583 "Counter": "0,1",
584 "UMask": "0x1",
585 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.HITM_OTHER_CORE",
586 "MSRIndex": "0x1a6,0x1a7",
587 "SampleAfterValue": "100007",
588 "BriefDescription": "Counts data cacheline reads generated by L2 prefetchers that hit in the other module where modified copies were found in other core's L1 cache.",
589 "Offcore": "1"
590 },
591 {
592 "EventCode": "0xB7",
593 "MSRValue": "0x0400000010",
594 "Counter": "0,1",
595 "UMask": "0x1",
596 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
597 "MSRIndex": "0x1a6,0x1a7",
598 "SampleAfterValue": "100007",
599 "BriefDescription": "Counts data cacheline reads generated by L2 prefetchers that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
600 "Offcore": "1"
601 },
602 {
603 "EventCode": "0xB7",
604 "MSRValue": "0x0200000010",
605 "Counter": "0,1",
606 "UMask": "0x1",
607 "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.SNOOP_MISS",
608 "MSRIndex": "0x1a6,0x1a7",
609 "SampleAfterValue": "100007",
610 "BriefDescription": "Counts data cacheline reads generated by L2 prefetchers that miss L2 with a snoop miss response.",
611 "Offcore": "1"
612 },
613 {
614 "EventCode": "0xB7",
615 "MSRValue": "0x1680000008",
616 "Counter": "0,1",
617 "UMask": "0x1",
618 "EventName": "OFFCORE_RESPONSE.COREWB.L2_MISS.ANY",
619 "MSRIndex": "0x1a6,0x1a7",
620 "SampleAfterValue": "100007",
621 "BriefDescription": "Counts writeback (modified to exclusive) that miss L2.",
622 "Offcore": "1"
623 },
624 {
625 "EventCode": "0xB7",
626 "MSRValue": "0x0080000008",
627 "Counter": "0,1",
628 "UMask": "0x1",
629 "EventName": "OFFCORE_RESPONSE.COREWB.L2_MISS.NO_SNOOP_NEEDED",
630 "MSRIndex": "0x1a6,0x1a7",
631 "SampleAfterValue": "100007",
632 "BriefDescription": "Counts writeback (modified to exclusive) that miss L2 with no details on snoop-related information.",
633 "Offcore": "1"
634 },
635 {
636 "EventCode": "0xB7",
637 "MSRValue": "0x4000000004",
638 "Counter": "0,1",
639 "UMask": "0x1",
640 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.OUTSTANDING",
641 "MSRIndex": "0x1a6",
642 "SampleAfterValue": "100007",
643 "BriefDescription": "Counts demand and DCU prefetch instruction cacheline that are are outstanding, per cycle, from the time of the L2 miss to when any response is received.",
644 "Offcore": "1"
645 },
646 {
647 "EventCode": "0xB7",
648 "MSRValue": "0x1680000004",
649 "Counter": "0,1",
650 "UMask": "0x1",
651 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.ANY",
652 "MSRIndex": "0x1a6,0x1a7",
653 "SampleAfterValue": "100007",
654 "BriefDescription": "Counts demand and DCU prefetch instruction cacheline that miss L2.",
655 "Offcore": "1"
656 },
657 {
658 "EventCode": "0xB7",
659 "MSRValue": "0x0400000004",
660 "Counter": "0,1",
661 "UMask": "0x1",
662 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
663 "MSRIndex": "0x1a6,0x1a7",
664 "SampleAfterValue": "100007",
665 "BriefDescription": "Counts demand and DCU prefetch instruction cacheline that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
666 "Offcore": "1"
667 },
668 {
669 "EventCode": "0xB7",
670 "MSRValue": "0x0200000004",
671 "Counter": "0,1",
672 "UMask": "0x1",
673 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.SNOOP_MISS",
674 "MSRIndex": "0x1a6,0x1a7",
675 "SampleAfterValue": "100007",
676 "BriefDescription": "Counts demand and DCU prefetch instruction cacheline that miss L2 with a snoop miss response.",
677 "Offcore": "1"
678 },
679 {
680 "EventCode": "0xB7",
681 "MSRValue": "0x0000010004",
682 "Counter": "0,1",
683 "UMask": "0x1",
684 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
685 "MSRIndex": "0x1a6,0x1a7",
686 "SampleAfterValue": "100007",
687 "BriefDescription": "Counts demand and DCU prefetch instruction cacheline that have any response type.",
688 "Offcore": "1"
689 },
690 {
691 "EventCode": "0xB7",
692 "MSRValue": "0x4000000002",
693 "Counter": "0,1",
694 "UMask": "0x1",
695 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.OUTSTANDING",
696 "MSRIndex": "0x1a6",
697 "SampleAfterValue": "100007",
698 "BriefDescription": "Counts demand and DCU prefetch RFOs that are are outstanding, per cycle, from the time of the L2 miss to when any response is received.",
699 "Offcore": "1"
700 },
701 {
702 "EventCode": "0xB7",
703 "MSRValue": "0x1680000002",
704 "Counter": "0,1",
705 "UMask": "0x1",
706 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.ANY",
707 "MSRIndex": "0x1a6,0x1a7",
708 "SampleAfterValue": "100007",
709 "BriefDescription": "Counts demand and DCU prefetch RFOs that miss L2.",
710 "Offcore": "1"
711 },
712 {
713 "EventCode": "0xB7",
714 "MSRValue": "0x1000000002",
715 "Counter": "0,1",
716 "UMask": "0x1",
717 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.HITM_OTHER_CORE",
718 "MSRIndex": "0x1a6,0x1a7",
719 "SampleAfterValue": "100007",
720 "BriefDescription": "Counts demand and DCU prefetch RFOs that hit in the other module where modified copies were found in other core's L1 cache.",
721 "Offcore": "1"
722 },
723 {
724 "EventCode": "0xB7",
725 "MSRValue": "0x0400000002",
726 "Counter": "0,1",
727 "UMask": "0x1",
728 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.HIT_OTHER_CORE_NO_FWD",
729 "MSRIndex": "0x1a6,0x1a7",
730 "SampleAfterValue": "100007",
731 "BriefDescription": "Counts demand and DCU prefetch RFOs that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
732 "Offcore": "1"
733 },
734 {
735 "EventCode": "0xB7",
736 "MSRValue": "0x0200000002",
737 "Counter": "0,1",
738 "UMask": "0x1",
739 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.SNOOP_MISS",
740 "MSRIndex": "0x1a6,0x1a7",
741 "SampleAfterValue": "100007",
742 "BriefDescription": "Counts demand and DCU prefetch RFOs that miss L2 with a snoop miss response.",
743 "Offcore": "1"
744 },
745 {
746 "EventCode": "0xB7",
747 "MSRValue": "0x4000000001",
748 "Counter": "0,1",
749 "UMask": "0x1",
750 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.OUTSTANDING",
751 "MSRIndex": "0x1a6",
752 "SampleAfterValue": "100007",
753 "BriefDescription": "Counts demand and DCU prefetch data read that are are outstanding, per cycle, from the time of the L2 miss to when any response is received.",
754 "Offcore": "1"
755 },
756 {
757 "EventCode": "0xB7",
758 "MSRValue": "0x1680000001",
759 "Counter": "0,1",
760 "UMask": "0x1",
761 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.ANY",
762 "MSRIndex": "0x1a6,0x1a7",
763 "SampleAfterValue": "100007",
764 "BriefDescription": "Counts demand and DCU prefetch data read that miss L2.",
765 "Offcore": "1"
766 },
767 {
768 "EventCode": "0xB7",
769 "MSRValue": "0x1000000001",
770 "Counter": "0,1",
771 "UMask": "0x1",
772 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.HITM_OTHER_CORE",
773 "MSRIndex": "0x1a6,0x1a7",
774 "SampleAfterValue": "100007",
775 "BriefDescription": "Counts demand and DCU prefetch data read that hit in the other module where modified copies were found in other core's L1 cache.",
776 "Offcore": "1"
777 },
778 {
779 "EventCode": "0xB7",
780 "MSRValue": "0x0400000001",
781 "Counter": "0,1",
782 "UMask": "0x1",
783 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.HIT_OTHER_CORE_NO_FWD",
784 "MSRIndex": "0x1a6,0x1a7",
785 "SampleAfterValue": "100007",
786 "BriefDescription": "Counts demand and DCU prefetch data read that miss L2 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
787 "Offcore": "1"
788 },
789 {
790 "EventCode": "0xB7",
791 "MSRValue": "0x0200000001",
792 "Counter": "0,1",
793 "UMask": "0x1",
794 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.SNOOP_MISS",
795 "MSRIndex": "0x1a6,0x1a7",
796 "SampleAfterValue": "100007",
797 "BriefDescription": "Counts demand and DCU prefetch data read that miss L2 with a snoop miss response.",
798 "Offcore": "1"
799 },
800 {
801 "EventCode": "0xB7",
802 "MSRValue": "0x0000010001",
803 "Counter": "0,1",
804 "UMask": "0x1",
805 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
806 "MSRIndex": "0x1a6,0x1a7",
807 "SampleAfterValue": "100007",
808 "BriefDescription": "Counts demand and DCU prefetch data read that have any response type.",
809 "Offcore": "1"
810 }
811] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/silvermont/frontend.json b/tools/perf/pmu-events/arch/x86/silvermont/frontend.json
new file mode 100644
index 000000000000..204473badf5a
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/silvermont/frontend.json
@@ -0,0 +1,47 @@
1[
2 {
3 "PublicDescription": "This event counts all instruction fetches, not including most uncacheable\r\nfetches.",
4 "EventCode": "0x80",
5 "Counter": "0,1",
6 "UMask": "0x3",
7 "EventName": "ICACHE.ACCESSES",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Instruction fetches"
10 },
11 {
12 "PublicDescription": "This event counts all instruction fetches from the instruction cache.",
13 "EventCode": "0x80",
14 "Counter": "0,1",
15 "UMask": "0x1",
16 "EventName": "ICACHE.HIT",
17 "SampleAfterValue": "200003",
18 "BriefDescription": "Instruction fetches from Icache"
19 },
20 {
21 "PublicDescription": "This event counts all instruction fetches that miss the Instruction cache or produce memory requests. This includes uncacheable fetches. An instruction fetch miss is counted only once and not once for every cycle it is outstanding.",
22 "EventCode": "0x80",
23 "Counter": "0,1",
24 "UMask": "0x2",
25 "EventName": "ICACHE.MISSES",
26 "SampleAfterValue": "200003",
27 "BriefDescription": "Icache miss"
28 },
29 {
30 "PublicDescription": "Counts the number of times the MSROM starts a flow of UOPS. It does not count every time a UOP is read from the microcode ROM. The most common case that this counts is when a micro-coded instruction is encountered by the front end of the machine. Other cases include when an instruction encounters a fault, trap, or microcode assist of any sort. The event will count MSROM startups for UOPS that are speculative, and subsequently cleared by branch mispredict or machine clear. Background: UOPS are produced by two mechanisms. Either they are generated by hardware that decodes instructions into UOPS, or they are delivered by a ROM (called the MSROM) that holds UOPS associated with a specific instruction. MSROM UOPS might also be delivered in response to some condition such as a fault or other exceptional condition. This event is an excellent mechanism for detecting instructions that require the use of MSROM instructions.",
31 "EventCode": "0xE7",
32 "Counter": "0,1",
33 "UMask": "0x1",
34 "EventName": "MS_DECODED.MS_ENTRY",
35 "SampleAfterValue": "200003",
36 "BriefDescription": "Counts the number of times entered into a ucode flow in the FEC. Includes inserted flows due to front-end detected faults or assists. Speculative count."
37 },
38 {
39 "PublicDescription": "Counts the number of times a decode restriction reduced the decode throughput due to wrong instruction length prediction.",
40 "EventCode": "0xE9",
41 "Counter": "0,1",
42 "UMask": "0x1",
43 "EventName": "DECODE_RESTRICTION.PREDECODE_WRONG",
44 "SampleAfterValue": "200003",
45 "BriefDescription": "Counts the number of times a decode restriction reduced the decode throughput due to wrong instruction length prediction"
46 }
47] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/silvermont/memory.json b/tools/perf/pmu-events/arch/x86/silvermont/memory.json
new file mode 100644
index 000000000000..d72e09a5f929
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/silvermont/memory.json
@@ -0,0 +1,11 @@
1[
2 {
3 "PublicDescription": "This event counts the number of times that pipeline was cleared due to memory ordering issues.",
4 "EventCode": "0xC3",
5 "Counter": "0,1",
6 "UMask": "0x2",
7 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
8 "SampleAfterValue": "200003",
9 "BriefDescription": "Stalls due to Memory ordering"
10 }
11] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/silvermont/pipeline.json b/tools/perf/pmu-events/arch/x86/silvermont/pipeline.json
new file mode 100644
index 000000000000..7468af99190a
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/silvermont/pipeline.json
@@ -0,0 +1,359 @@
1[
2 {
3 "PEBS": "1",
4 "PublicDescription": "ALL_BRANCHES counts the number of any branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
5 "EventCode": "0xC4",
6 "Counter": "0,1",
7 "UMask": "0x0",
8 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "Counts the number of branch instructions retired..."
11 },
12 {
13 "PEBS": "1",
14 "PublicDescription": "JCC counts the number of conditional branch (JCC) instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
15 "EventCode": "0xC4",
16 "Counter": "0,1",
17 "UMask": "0x7e",
18 "EventName": "BR_INST_RETIRED.JCC",
19 "SampleAfterValue": "200003",
20 "BriefDescription": "Counts the number of JCC branch instructions retired"
21 },
22 {
23 "PEBS": "1",
24 "PublicDescription": "TAKEN_JCC counts the number of taken conditional branch (JCC) instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
25 "EventCode": "0xC4",
26 "Counter": "0,1",
27 "UMask": "0xfe",
28 "EventName": "BR_INST_RETIRED.TAKEN_JCC",
29 "SampleAfterValue": "200003",
30 "BriefDescription": "Counts the number of taken JCC branch instructions retired"
31 },
32 {
33 "PEBS": "1",
34 "PublicDescription": "CALL counts the number of near CALL branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
35 "EventCode": "0xC4",
36 "Counter": "0,1",
37 "UMask": "0xf9",
38 "EventName": "BR_INST_RETIRED.CALL",
39 "SampleAfterValue": "200003",
40 "BriefDescription": "Counts the number of near CALL branch instructions retired"
41 },
42 {
43 "PEBS": "1",
44 "PublicDescription": "REL_CALL counts the number of near relative CALL branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
45 "EventCode": "0xC4",
46 "Counter": "0,1",
47 "UMask": "0xfd",
48 "EventName": "BR_INST_RETIRED.REL_CALL",
49 "SampleAfterValue": "200003",
50 "BriefDescription": "Counts the number of near relative CALL branch instructions retired"
51 },
52 {
53 "PEBS": "1",
54 "PublicDescription": "IND_CALL counts the number of near indirect CALL branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
55 "EventCode": "0xC4",
56 "Counter": "0,1",
57 "UMask": "0xfb",
58 "EventName": "BR_INST_RETIRED.IND_CALL",
59 "SampleAfterValue": "200003",
60 "BriefDescription": "Counts the number of near indirect CALL branch instructions retired"
61 },
62 {
63 "PEBS": "1",
64 "PublicDescription": "RETURN counts the number of near RET branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
65 "EventCode": "0xC4",
66 "Counter": "0,1",
67 "UMask": "0xf7",
68 "EventName": "BR_INST_RETIRED.RETURN",
69 "SampleAfterValue": "200003",
70 "BriefDescription": "Counts the number of near RET branch instructions retired"
71 },
72 {
73 "PEBS": "1",
74 "PublicDescription": "NON_RETURN_IND counts the number of near indirect JMP and near indirect CALL branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
75 "EventCode": "0xC4",
76 "Counter": "0,1",
77 "UMask": "0xeb",
78 "EventName": "BR_INST_RETIRED.NON_RETURN_IND",
79 "SampleAfterValue": "200003",
80 "BriefDescription": "Counts the number of near indirect JMP and near indirect CALL branch instructions retired"
81 },
82 {
83 "PEBS": "1",
84 "PublicDescription": "FAR counts the number of far branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
85 "EventCode": "0xC4",
86 "Counter": "0,1",
87 "UMask": "0xbf",
88 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
89 "SampleAfterValue": "200003",
90 "BriefDescription": "Counts the number of far branch instructions retired"
91 },
92 {
93 "PEBS": "1",
94 "PublicDescription": "ALL_BRANCHES counts the number of any mispredicted branch instructions retired. This umask is an architecturally defined event. This event counts the number of retired branch instructions that were mispredicted by the processor, categorized by type. A branch misprediction occurs when the processor predicts that the branch would be taken, but it is not, or vice-versa. When the misprediction is discovered, all the instructions executed in the wrong (speculative) path must be discarded, and the processor must start fetching from the correct path.",
95 "EventCode": "0xC5",
96 "Counter": "0,1",
97 "UMask": "0x0",
98 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
99 "SampleAfterValue": "200003",
100 "BriefDescription": "Counts the number of mispredicted branch instructions retired"
101 },
102 {
103 "PEBS": "1",
104 "PublicDescription": "JCC counts the number of mispredicted conditional branches (JCC) instructions retired. This event counts the number of retired branch instructions that were mispredicted by the processor, categorized by type. A branch misprediction occurs when the processor predicts that the branch would be taken, but it is not, or vice-versa. When the misprediction is discovered, all the instructions executed in the wrong (speculative) path must be discarded, and the processor must start fetching from the correct path.",
105 "EventCode": "0xC5",
106 "Counter": "0,1",
107 "UMask": "0x7e",
108 "EventName": "BR_MISP_RETIRED.JCC",
109 "SampleAfterValue": "200003",
110 "BriefDescription": "Counts the number of mispredicted JCC branch instructions retired"
111 },
112 {
113 "PEBS": "1",
114 "PublicDescription": "TAKEN_JCC counts the number of mispredicted taken conditional branch (JCC) instructions retired. This event counts the number of retired branch instructions that were mispredicted by the processor, categorized by type. A branch misprediction occurs when the processor predicts that the branch would be taken, but it is not, or vice-versa. When the misprediction is discovered, all the instructions executed in the wrong (speculative) path must be discarded, and the processor must start fetching from the correct path.",
115 "EventCode": "0xC5",
116 "Counter": "0,1",
117 "UMask": "0xfe",
118 "EventName": "BR_MISP_RETIRED.TAKEN_JCC",
119 "SampleAfterValue": "200003",
120 "BriefDescription": "Counts the number of mispredicted taken JCC branch instructions retired"
121 },
122 {
123 "PEBS": "1",
124 "PublicDescription": "IND_CALL counts the number of mispredicted near indirect CALL branch instructions retired. This event counts the number of retired branch instructions that were mispredicted by the processor, categorized by type. A branch misprediction occurs when the processor predicts that the branch would be taken, but it is not, or vice-versa. When the misprediction is discovered, all the instructions executed in the wrong (speculative) path must be discarded, and the processor must start fetching from the correct path.",
125 "EventCode": "0xC5",
126 "Counter": "0,1",
127 "UMask": "0xfb",
128 "EventName": "BR_MISP_RETIRED.IND_CALL",
129 "SampleAfterValue": "200003",
130 "BriefDescription": "Counts the number of mispredicted near indirect CALL branch instructions retired"
131 },
132 {
133 "PEBS": "1",
134 "PublicDescription": "RETURN counts the number of mispredicted near RET branch instructions retired. This event counts the number of retired branch instructions that were mispredicted by the processor, categorized by type. A branch misprediction occurs when the processor predicts that the branch would be taken, but it is not, or vice-versa. When the misprediction is discovered, all the instructions executed in the wrong (speculative) path must be discarded, and the processor must start fetching from the correct path.",
135 "EventCode": "0xC5",
136 "Counter": "0,1",
137 "UMask": "0xf7",
138 "EventName": "BR_MISP_RETIRED.RETURN",
139 "SampleAfterValue": "200003",
140 "BriefDescription": "Counts the number of mispredicted near RET branch instructions retired"
141 },
142 {
143 "PEBS": "1",
144 "PublicDescription": "NON_RETURN_IND counts the number of mispredicted near indirect JMP and near indirect CALL branch instructions retired. This event counts the number of retired branch instructions that were mispredicted by the processor, categorized by type. A branch misprediction occurs when the processor predicts that the branch would be taken, but it is not, or vice-versa. When the misprediction is discovered, all the instructions executed in the wrong (speculative) path must be discarded, and the processor must start fetching from the correct path.",
145 "EventCode": "0xC5",
146 "Counter": "0,1",
147 "UMask": "0xeb",
148 "EventName": "BR_MISP_RETIRED.NON_RETURN_IND",
149 "SampleAfterValue": "200003",
150 "BriefDescription": "Counts the number of mispredicted near indirect JMP and near indirect CALL branch instructions retired"
151 },
152 {
153 "PublicDescription": "This event counts the number of micro-ops retired that were supplied from MSROM.",
154 "EventCode": "0xC2",
155 "Counter": "0,1",
156 "UMask": "0x1",
157 "EventName": "UOPS_RETIRED.MS",
158 "SampleAfterValue": "2000003",
159 "BriefDescription": "MSROM micro-ops retired"
160 },
161 {
162 "PublicDescription": "This event counts the number of micro-ops retired. The processor decodes complex macro instructions into a sequence of simpler micro-ops. Most instructions are composed of one or two micro-ops. Some instructions are decoded into longer sequences such as repeat instructions, floating point transcendental instructions, and assists. In some cases micro-op sequences are fused or whole instructions are fused into one micro-op. See other UOPS_RETIRED events for differentiating retired fused and non-fused micro-ops.",
163 "EventCode": "0xC2",
164 "Counter": "0,1",
165 "UMask": "0x10",
166 "EventName": "UOPS_RETIRED.ALL",
167 "SampleAfterValue": "2000003",
168 "BriefDescription": "Micro-ops retired"
169 },
170 {
171 "PublicDescription": "This event counts the number of times that a program writes to a code section. Self-modifying code causes a severe penalty in all Intel? architecture processors.",
172 "EventCode": "0xC3",
173 "Counter": "0,1",
174 "UMask": "0x1",
175 "EventName": "MACHINE_CLEARS.SMC",
176 "SampleAfterValue": "200003",
177 "BriefDescription": "Self-Modifying Code detected"
178 },
179 {
180 "PublicDescription": "This event counts the number of times that pipeline stalled due to FP operations needing assists.",
181 "EventCode": "0xC3",
182 "Counter": "0,1",
183 "UMask": "0x4",
184 "EventName": "MACHINE_CLEARS.FP_ASSIST",
185 "SampleAfterValue": "200003",
186 "BriefDescription": "Stalls due to FP assists"
187 },
188 {
189 "PublicDescription": "Machine clears happen when something happens in the machine that causes the hardware to need to take special care to get the right answer. When such a condition is signaled on an instruction, the front end of the machine is notified that it must restart, so no more instructions will be decoded from the current path. All instructions \"older\" than this one will be allowed to finish. This instruction and all \"younger\" instructions must be cleared, since they must not be allowed to complete. Essentially, the hardware waits until the problematic instruction is the oldest instruction in the machine. This means all older instructions are retired, and all pending stores (from older instructions) are completed. Then the new path of instructions from the front end are allowed to start into the machine. There are many conditions that might cause a machine clear (including the receipt of an interrupt, or a trap or a fault). All those conditions (including but not limited to MACHINE_CLEARS.MEMORY_ORDERING, MACHINE_CLEARS.SMC, and MACHINE_CLEARS.FP_ASSIST) are captured in the ANY event. In addition, some conditions can be specifically counted (i.e. SMC, MEMORY_ORDERING, FP_ASSIST). However, the sum of SMC, MEMORY_ORDERING, and FP_ASSIST machine clears will not necessarily equal the number of ANY.",
190 "EventCode": "0xC3",
191 "Counter": "0,1",
192 "UMask": "0x8",
193 "EventName": "MACHINE_CLEARS.ALL",
194 "SampleAfterValue": "200003",
195 "BriefDescription": "Counts all machine clears"
196 },
197 {
198 "PublicDescription": "Counts the number of cycles when no uops are allocated and the ROB is full (less than 2 entries available).",
199 "EventCode": "0xCA",
200 "Counter": "0,1",
201 "UMask": "0x1",
202 "EventName": "NO_ALLOC_CYCLES.ROB_FULL",
203 "SampleAfterValue": "200003",
204 "BriefDescription": "Counts the number of cycles when no uops are allocated and the ROB is full (less than 2 entries available)"
205 },
206 {
207 "PublicDescription": "Counts the number of cycles when no uops are allocated and the alloc pipe is stalled waiting for a mispredicted jump to retire. After the misprediction is detected, the front end will start immediately but the allocate pipe stalls until the mispredicted.",
208 "EventCode": "0xCA",
209 "Counter": "0,1",
210 "UMask": "0x4",
211 "EventName": "NO_ALLOC_CYCLES.MISPREDICTS",
212 "SampleAfterValue": "200003",
213 "BriefDescription": "Counts the number of cycles when no uops are allocated and the alloc pipe is stalled waiting for a mispredicted jump to retire. After the misprediction is detected, the front end will start immediately but the allocate pipe stalls until the mispredicted "
214 },
215 {
216 "EventCode": "0xCA",
217 "Counter": "0,1",
218 "UMask": "0x20",
219 "EventName": "NO_ALLOC_CYCLES.RAT_STALL",
220 "SampleAfterValue": "200003",
221 "BriefDescription": "Counts the number of cycles when no uops are allocated and a RATstall is asserted."
222 },
223 {
224 "PublicDescription": "The NO_ALLOC_CYCLES.NOT_DELIVERED event is used to measure front-end inefficiencies, i.e. when front-end of the machine is not delivering micro-ops to the back-end and the back-end is not stalled. This event can be used to identify if the machine is truly front-end bound. When this event occurs, it is an indication that the front-end of the machine is operating at less than its theoretical peak performance. Background: We can think of the processor pipeline as being divided into 2 broader parts: Front-end and Back-end. Front-end is responsible for fetching the instruction, decoding into micro-ops (uops) in machine understandable format and putting them into a micro-op queue to be consumed by back end. The back-end then takes these micro-ops, allocates the required resources. When all resources are ready, micro-ops are executed. If the back-end is not ready to accept micro-ops from the front-end, then we do not want to count these as front-end bottlenecks. However, whenever we have bottlenecks in the back-end, we will have allocation unit stalls and eventually forcing the front-end to wait until the back-end is ready to receive more UOPS. This event counts the cycles only when back-end is requesting more uops and front-end is not able to provide them. Some examples of conditions that cause front-end efficiencies are: Icache misses, ITLB misses, and decoder restrictions that limit the the front-end bandwidth.",
225 "EventCode": "0xCA",
226 "Counter": "0,1",
227 "UMask": "0x50",
228 "EventName": "NO_ALLOC_CYCLES.NOT_DELIVERED",
229 "SampleAfterValue": "200003",
230 "BriefDescription": "Counts the number of cycles when no uops are allocated, the IQ is empty, and no other condition is blocking allocation."
231 },
232 {
233 "PublicDescription": "The NO_ALLOC_CYCLES.ALL event counts the number of cycles when the front-end does not provide any instructions to be allocated for any reason. This event indicates the cycles where an allocation stalls occurs, and no UOPS are allocated in that cycle.",
234 "EventCode": "0xCA",
235 "Counter": "0,1",
236 "UMask": "0x3f",
237 "EventName": "NO_ALLOC_CYCLES.ALL",
238 "SampleAfterValue": "200003",
239 "BriefDescription": "Counts the number of cycles when no uops are allocated for any reason."
240 },
241 {
242 "PublicDescription": "Counts the number of cycles and allocation pipeline is stalled and is waiting for a free MEC reservation station entry. The cycles should be appropriately counted in case of the cracked ops e.g. In case of a cracked load-op, the load portion is sent to M.",
243 "EventCode": "0xCB",
244 "Counter": "0,1",
245 "UMask": "0x1",
246 "EventName": "RS_FULL_STALL.MEC",
247 "SampleAfterValue": "200003",
248 "BriefDescription": "Counts the number of cycles and allocation pipeline is stalled and is waiting for a free MEC reservation station entry. The cycles should be appropriately counted in case of the cracked ops e.g. In case of a cracked load-op, the load portion is sent to M"
249 },
250 {
251 "EventCode": "0xCB",
252 "Counter": "0,1",
253 "UMask": "0x1f",
254 "EventName": "RS_FULL_STALL.ALL",
255 "SampleAfterValue": "200003",
256 "BriefDescription": "Counts the number of cycles the Alloc pipeline is stalled when any one of the RSs (IEC, FPC and MEC) is full. This event is a superset of all the individual RS stall event counts."
257 },
258 {
259 "PublicDescription": "This event counts the number of instructions that retire execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. The counter continues counting during hardware interrupts, traps, and inside interrupt handlers.",
260 "EventCode": "0xC0",
261 "Counter": "0,1",
262 "UMask": "0x0",
263 "EventName": "INST_RETIRED.ANY_P",
264 "SampleAfterValue": "2000003",
265 "BriefDescription": "Instructions retired"
266 },
267 {
268 "PublicDescription": "Cycles the divider is busy.This event counts the cycles when the divide unit is unable to accept a new divide UOP because it is busy processing a previously dispatched UOP. The cycles will be counted irrespective of whether or not another divide UOP is waiting to enter the divide unit (from the RS). This event might count cycles while a divide is in progress even if the RS is empty. The divide instruction is one of the longest latency instructions in the machine. Hence, it has a special event associated with it to help determine if divides are delaying the retirement of instructions.",
269 "EventCode": "0xCD",
270 "Counter": "0,1",
271 "UMask": "0x1",
272 "EventName": "CYCLES_DIV_BUSY.ALL",
273 "SampleAfterValue": "2000003",
274 "BriefDescription": "Cycles the divider is busy. Does not imply a stall waiting for the divider."
275 },
276 {
277 "PublicDescription": "This event counts the number of instructions that retire. For instructions that consist of multiple micro-ops, this event counts exactly once, as the last micro-op of the instruction retires. The event continues counting while instructions retire, including during interrupt service routines caused by hardware interrupts, faults or traps. Background: Modern microprocessors employ extensive pipelining and speculative techniques. Since sometimes an instruction is started but never completed, the notion of \"retirement\" is introduced. A retired instruction is one that commits its states. Or stated differently, an instruction might be abandoned at some point. No instruction is truly finished until it retires. This counter measures the number of completed instructions. The fixed event is INST_RETIRED.ANY and the programmable event is INST_RETIRED.ANY_P.",
278 "EventCode": "0x00",
279 "Counter": "Fixed counter 1",
280 "UMask": "0x1",
281 "EventName": "INST_RETIRED.ANY",
282 "SampleAfterValue": "2000003",
283 "BriefDescription": "Fixed Counter: Counts the number of instructions retired"
284 },
285 {
286 "PublicDescription": "Counts the number of core cycles while the core is not in a halt state. The core enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time. For this reason this event may have a changing ratio with regards to time. In systems with a constant core frequency, this event can give you a measurement of the elapsed time while the core was not in halt state by dividing the event count by the core frequency. This event is architecturally defined and is a designated fixed counter. CPU_CLK_UNHALTED.CORE and CPU_CLK_UNHALTED.CORE_P use the core frequency which may change from time to time. CPU_CLK_UNHALTE.REF_TSC and CPU_CLK_UNHALTED.REF are not affected by core frequency changes but counts as if the core is running at the maximum frequency all the time. The fixed events are CPU_CLK_UNHALTED.CORE and CPU_CLK_UNHALTED.REF_TSC and the programmable events are CPU_CLK_UNHALTED.CORE_P and CPU_CLK_UNHALTED.REF.",
287 "EventCode": "0x00",
288 "Counter": "Fixed counter 2",
289 "UMask": "0x2",
290 "EventName": "CPU_CLK_UNHALTED.CORE",
291 "SampleAfterValue": "2000003",
292 "BriefDescription": "Fixed Counter: Counts the number of unhalted core clock cycles"
293 },
294 {
295 "PublicDescription": "Counts the number of reference cycles while the core is not in a halt state. The core enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time. This event is not affected by core frequency changes but counts as if the core is running at the maximum frequency all the time. Divide this event count by core frequency to determine the elapsed time while the core was not in halt state. Divide this event count by core frequency to determine the elapsed time while the core was not in halt state. This event is architecturally defined and is a designated fixed counter. CPU_CLK_UNHALTED.CORE and CPU_CLK_UNHALTED.CORE_P use the core frequency which may change from time to time. CPU_CLK_UNHALTE.REF_TSC and CPU_CLK_UNHALTED.REF are not affected by core frequency changes but counts as if the core is running at the maximum frequency all the time. The fixed events are CPU_CLK_UNHALTED.CORE and CPU_CLK_UNHALTED.REF_TSC and the programmable events are CPU_CLK_UNHALTED.CORE_P and CPU_CLK_UNHALTED.REF.",
296 "EventCode": "0x00",
297 "Counter": "Fixed counter 3",
298 "UMask": "0x3",
299 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
300 "SampleAfterValue": "2000003",
301 "BriefDescription": "Fixed Counter: Counts the number of unhalted reference clock cycles"
302 },
303 {
304 "PublicDescription": "This event counts the number of core cycles while the core is not in a halt state. The core enters the halt state when it is running the HLT instruction. In mobile systems the core frequency may change from time to time. For this reason this event may have a changing ratio with regards to time.",
305 "EventCode": "0x3C",
306 "Counter": "0,1",
307 "UMask": "0x0",
308 "EventName": "CPU_CLK_UNHALTED.CORE_P",
309 "SampleAfterValue": "2000003",
310 "BriefDescription": "Core cycles when core is not halted"
311 },
312 {
313 "PublicDescription": "This event counts the number of reference cycles that the core is not in a halt state. The core enters the halt state when it is running the HLT instruction. In mobile systems the core frequency may change from time. This event is not affected by core frequency changes but counts as if the core is running at the maximum frequency all the time.",
314 "EventCode": "0x3C",
315 "Counter": "0,1",
316 "UMask": "0x1",
317 "EventName": "CPU_CLK_UNHALTED.REF",
318 "SampleAfterValue": "2000003",
319 "BriefDescription": "Reference cycles when core is not halted"
320 },
321 {
322 "PublicDescription": "The BACLEARS event counts the number of times the front end is resteered, mainly when the Branch Prediction Unit cannot provide a correct prediction and this is corrected by the Branch Address Calculator at the front end. The BACLEARS.ANY event counts the number of baclears for any type of branch.",
323 "EventCode": "0xE6",
324 "Counter": "0,1",
325 "UMask": "0x1",
326 "EventName": "BACLEARS.ALL",
327 "SampleAfterValue": "200003",
328 "BriefDescription": "Counts the number of baclears"
329 },
330 {
331 "PublicDescription": "The BACLEARS event counts the number of times the front end is resteered, mainly when the Branch Prediction Unit cannot provide a correct prediction and this is corrected by the Branch Address Calculator at the front end. The BACLEARS.RETURN event counts the number of RETURN baclears.",
332 "EventCode": "0xE6",
333 "Counter": "0,1",
334 "UMask": "0x8",
335 "EventName": "BACLEARS.RETURN",
336 "SampleAfterValue": "200003",
337 "BriefDescription": "Counts the number of RETURN baclears"
338 },
339 {
340 "PublicDescription": "The BACLEARS event counts the number of times the front end is resteered, mainly when the Branch Prediction Unit cannot provide a correct prediction and this is corrected by the Branch Address Calculator at the front end. The BACLEARS.COND event counts the number of JCC (Jump on Condtional Code) baclears.",
341 "EventCode": "0xE6",
342 "Counter": "0,1",
343 "UMask": "0x10",
344 "EventName": "BACLEARS.COND",
345 "SampleAfterValue": "200003",
346 "BriefDescription": "Counts the number of JCC baclears"
347 },
348 {
349 "PEBS": "2",
350 "PublicDescription": "ALL_TAKEN_BRANCHES counts the number of all taken branch instructions retired. Branch prediction predicts the branch target and enables the processor to begin executing instructions long before the branch true execution path is known. All branches utilize the branch prediction unit (BPU) for prediction. This unit predicts the target address not only based on the EIP of the branch but also based on the execution path through which execution reached this EIP. The BPU can efficiently predict the following branch types: conditional branches, direct calls and jumps, indirect calls and jumps, returns.",
351 "EventCode": "0xC4",
352 "Counter": "0,1",
353 "UMask": "0x80",
354 "PEBScounters": "0,1",
355 "EventName": "BR_INST_RETIRED.ALL_TAKEN_BRANCHES",
356 "SampleAfterValue": "200003",
357 "BriefDescription": "Counts the number of taken branch instructions retired"
358 }
359] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/silvermont/virtual-memory.json b/tools/perf/pmu-events/arch/x86/silvermont/virtual-memory.json
new file mode 100644
index 000000000000..ad31479f8f60
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/silvermont/virtual-memory.json
@@ -0,0 +1,69 @@
1[
2 {
3 "PEBS": "1",
4 "PublicDescription": "This event counts the number of load ops retired that had DTLB miss.",
5 "EventCode": "0x04",
6 "Counter": "0,1",
7 "UMask": "0x8",
8 "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_LOADS",
9 "SampleAfterValue": "200003",
10 "BriefDescription": "Loads missed DTLB"
11 },
12 {
13 "PublicDescription": "This event counts when a data (D) page walk is completed or started. Since a page walk implies a TLB miss, the number of TLB misses can be counted by counting the number of pagewalks.",
14 "EventCode": "0x05",
15 "Counter": "0,1",
16 "UMask": "0x1",
17 "EventName": "PAGE_WALKS.D_SIDE_WALKS",
18 "SampleAfterValue": "100003",
19 "BriefDescription": "D-side page-walks",
20 "EdgeDetect": "1"
21 },
22 {
23 "PublicDescription": "This event counts every cycle when a D-side (walks due to a load) page walk is in progress. Page walk duration divided by number of page walks is the average duration of page-walks.",
24 "EventCode": "0x05",
25 "Counter": "0,1",
26 "UMask": "0x1",
27 "EventName": "PAGE_WALKS.D_SIDE_CYCLES",
28 "SampleAfterValue": "200003",
29 "BriefDescription": "Duration of D-side page-walks in core cycles"
30 },
31 {
32 "PublicDescription": "This event counts when an instruction (I) page walk is completed or started. Since a page walk implies a TLB miss, the number of TLB misses can be counted by counting the number of pagewalks.",
33 "EventCode": "0x05",
34 "Counter": "0,1",
35 "UMask": "0x2",
36 "EventName": "PAGE_WALKS.I_SIDE_WALKS",
37 "SampleAfterValue": "100003",
38 "BriefDescription": "I-side page-walks",
39 "EdgeDetect": "1"
40 },
41 {
42 "PublicDescription": "This event counts every cycle when a I-side (walks due to an instruction fetch) page walk is in progress. Page walk duration divided by number of page walks is the average duration of page-walks.",
43 "EventCode": "0x05",
44 "Counter": "0,1",
45 "UMask": "0x2",
46 "EventName": "PAGE_WALKS.I_SIDE_CYCLES",
47 "SampleAfterValue": "200003",
48 "BriefDescription": "Duration of I-side page-walks in core cycles"
49 },
50 {
51 "PublicDescription": "This event counts when a data (D) page walk or an instruction (I) page walk is completed or started. Since a page walk implies a TLB miss, the number of TLB misses can be counted by counting the number of pagewalks.",
52 "EventCode": "0x05",
53 "Counter": "0,1",
54 "UMask": "0x3",
55 "EventName": "PAGE_WALKS.WALKS",
56 "SampleAfterValue": "100003",
57 "BriefDescription": "Total page walks that are completed (I-side and D-side)",
58 "EdgeDetect": "1"
59 },
60 {
61 "PublicDescription": "This event counts every cycle when a data (D) page walk or instruction (I) page walk is in progress. Since a pagewalk implies a TLB miss, the approximate cost of a TLB miss can be determined from this event.",
62 "EventCode": "0x05",
63 "Counter": "0,1",
64 "UMask": "0x3",
65 "EventName": "PAGE_WALKS.CYCLES",
66 "SampleAfterValue": "200003",
67 "BriefDescription": "Total cycles for all the page walks. (I-side and D-side)"
68 }
69] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/skylake/cache.json b/tools/perf/pmu-events/arch/x86/skylake/cache.json
new file mode 100644
index 000000000000..0551a9ba865d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/skylake/cache.json
@@ -0,0 +1,4299 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xD0",
5 "Counter": "0,1,2,3",
6 "UMask": "0x11",
7 "EventName": "MEM_INST_RETIRED.STLB_MISS_LOADS",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Retired load instructions that miss the STLB.",
10 "CounterHTOff": "0,1,2,3",
11 "Data_LA": "1"
12 },
13 {
14 "PEBS": "1",
15 "EventCode": "0xD0",
16 "Counter": "0,1,2,3",
17 "UMask": "0x12",
18 "EventName": "MEM_INST_RETIRED.STLB_MISS_STORES",
19 "SampleAfterValue": "100003",
20 "BriefDescription": "Retired store instructions that miss the STLB.",
21 "CounterHTOff": "0,1,2,3",
22 "Data_LA": "1",
23 "L1_Hit_Indication": "1"
24 },
25 {
26 "PEBS": "1",
27 "EventCode": "0xD0",
28 "Counter": "0,1,2,3",
29 "UMask": "0x21",
30 "EventName": "MEM_INST_RETIRED.LOCK_LOADS",
31 "SampleAfterValue": "100007",
32 "BriefDescription": "Retired load instructions with locked access.",
33 "CounterHTOff": "0,1,2,3",
34 "Data_LA": "1"
35 },
36 {
37 "PEBS": "1",
38 "EventCode": "0xD0",
39 "Counter": "0,1,2,3",
40 "UMask": "0x41",
41 "EventName": "MEM_INST_RETIRED.SPLIT_LOADS",
42 "SampleAfterValue": "100003",
43 "BriefDescription": "Retired load instructions that split across a cacheline boundary.",
44 "CounterHTOff": "0,1,2,3",
45 "Data_LA": "1"
46 },
47 {
48 "PEBS": "1",
49 "EventCode": "0xD0",
50 "Counter": "0,1,2,3",
51 "UMask": "0x42",
52 "EventName": "MEM_INST_RETIRED.SPLIT_STORES",
53 "SampleAfterValue": "100003",
54 "BriefDescription": "Retired store instructions that split across a cacheline boundary.",
55 "CounterHTOff": "0,1,2,3",
56 "Data_LA": "1",
57 "L1_Hit_Indication": "1"
58 },
59 {
60 "PEBS": "1",
61 "EventCode": "0xD0",
62 "Counter": "0,1,2,3",
63 "UMask": "0x81",
64 "EventName": "MEM_INST_RETIRED.ALL_LOADS",
65 "SampleAfterValue": "2000003",
66 "BriefDescription": "All retired load instructions.",
67 "CounterHTOff": "0,1,2,3",
68 "Data_LA": "1"
69 },
70 {
71 "PEBS": "1",
72 "EventCode": "0xD0",
73 "Counter": "0,1,2,3",
74 "UMask": "0x82",
75 "EventName": "MEM_INST_RETIRED.ALL_STORES",
76 "SampleAfterValue": "2000003",
77 "BriefDescription": "All retired store instructions.",
78 "CounterHTOff": "0,1,2,3",
79 "Data_LA": "1",
80 "L1_Hit_Indication": "1"
81 },
82 {
83 "PEBS": "1",
84 "PublicDescription": "Retired load instructions with L1 cache hits as data sources.",
85 "EventCode": "0xD1",
86 "Counter": "0,1,2,3",
87 "UMask": "0x1",
88 "EventName": "MEM_LOAD_RETIRED.L1_HIT",
89 "SampleAfterValue": "2000003",
90 "BriefDescription": "Retired load instructions with L1 cache hits as data sources",
91 "CounterHTOff": "0,1,2,3",
92 "Data_LA": "1"
93 },
94 {
95 "PEBS": "1",
96 "PublicDescription": "Retired load instructions with L2 cache hits as data sources.",
97 "EventCode": "0xD1",
98 "Counter": "0,1,2,3",
99 "UMask": "0x2",
100 "EventName": "MEM_LOAD_RETIRED.L2_HIT",
101 "SampleAfterValue": "100003",
102 "BriefDescription": "Retired load instructions with L2 cache hits as data sources",
103 "CounterHTOff": "0,1,2,3",
104 "Data_LA": "1"
105 },
106 {
107 "PEBS": "1",
108 "PublicDescription": "Retired load instructions with L3 cache hits as data sources.",
109 "EventCode": "0xD1",
110 "Counter": "0,1,2,3",
111 "UMask": "0x4",
112 "EventName": "MEM_LOAD_RETIRED.L3_HIT",
113 "SampleAfterValue": "50021",
114 "BriefDescription": "Retired load instructions with L3 cache hits as data sources",
115 "CounterHTOff": "0,1,2,3",
116 "Data_LA": "1"
117 },
118 {
119 "PEBS": "1",
120 "PublicDescription": "Retired load instructions missed L1 cache as data sources.",
121 "EventCode": "0xD1",
122 "Counter": "0,1,2,3",
123 "UMask": "0x8",
124 "EventName": "MEM_LOAD_RETIRED.L1_MISS",
125 "SampleAfterValue": "100003",
126 "BriefDescription": "Retired load instructions missed L1 cache as data sources",
127 "CounterHTOff": "0,1,2,3",
128 "Data_LA": "1"
129 },
130 {
131 "PEBS": "1",
132 "PublicDescription": "Retired load instructions missed L2 cache as data sources.",
133 "EventCode": "0xD1",
134 "Counter": "0,1,2,3",
135 "UMask": "0x10",
136 "EventName": "MEM_LOAD_RETIRED.L2_MISS",
137 "SampleAfterValue": "50021",
138 "BriefDescription": "Retired load instructions missed L2 cache as data sources",
139 "CounterHTOff": "0,1,2,3",
140 "Data_LA": "1"
141 },
142 {
143 "PEBS": "1",
144 "PublicDescription": "Retired load instructions missed L3 cache as data sources.",
145 "EventCode": "0xD1",
146 "Counter": "0,1,2,3",
147 "UMask": "0x20",
148 "EventName": "MEM_LOAD_RETIRED.L3_MISS",
149 "SampleAfterValue": "100007",
150 "BriefDescription": "Retired load instructions missed L3 cache as data sources",
151 "CounterHTOff": "0,1,2,3",
152 "Data_LA": "1"
153 },
154 {
155 "PEBS": "1",
156 "PublicDescription": "Retired load instructions which data sources were load missed L1 but hit FB due to preceding miss to the same cache line with data not ready.",
157 "EventCode": "0xD1",
158 "Counter": "0,1,2,3",
159 "UMask": "0x40",
160 "EventName": "MEM_LOAD_RETIRED.FB_HIT",
161 "SampleAfterValue": "100007",
162 "BriefDescription": "Retired load instructions which data sources were load missed L1 but hit FB due to preceding miss to the same cache line with data not ready",
163 "CounterHTOff": "0,1,2,3",
164 "Data_LA": "1"
165 },
166 {
167 "PEBS": "1",
168 "EventCode": "0xD2",
169 "Counter": "0,1,2,3",
170 "UMask": "0x1",
171 "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS",
172 "SampleAfterValue": "20011",
173 "BriefDescription": "Retired load instructions which data sources were L3 hit and cross-core snoop missed in on-pkg core cache.",
174 "CounterHTOff": "0,1,2,3",
175 "Data_LA": "1"
176 },
177 {
178 "PEBS": "1",
179 "PublicDescription": "Retired load instructions which data sources were L3 and cross-core snoop hits in on-pkg core cache.",
180 "EventCode": "0xD2",
181 "Counter": "0,1,2,3",
182 "UMask": "0x2",
183 "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT",
184 "SampleAfterValue": "20011",
185 "BriefDescription": "Retired load instructions which data sources were L3 and cross-core snoop hits in on-pkg core cache",
186 "CounterHTOff": "0,1,2,3",
187 "Data_LA": "1"
188 },
189 {
190 "PEBS": "1",
191 "PublicDescription": "Retired load instructions which data sources were HitM responses from shared L3.",
192 "EventCode": "0xD2",
193 "Counter": "0,1,2,3",
194 "UMask": "0x4",
195 "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM",
196 "SampleAfterValue": "20011",
197 "BriefDescription": "Retired load instructions which data sources were HitM responses from shared L3",
198 "CounterHTOff": "0,1,2,3",
199 "Data_LA": "1"
200 },
201 {
202 "PEBS": "1",
203 "PublicDescription": "Retired load instructions which data sources were hits in L3 without snoops required.",
204 "EventCode": "0xD2",
205 "Counter": "0,1,2,3",
206 "UMask": "0x8",
207 "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_NONE",
208 "SampleAfterValue": "100003",
209 "BriefDescription": "Retired load instructions which data sources were hits in L3 without snoops required",
210 "CounterHTOff": "0,1,2,3",
211 "Data_LA": "1"
212 },
213 {
214 "PEBS": "1",
215 "EventCode": "0xD4",
216 "Counter": "0,1,2,3",
217 "UMask": "0x4",
218 "EventName": "MEM_LOAD_MISC_RETIRED.UC",
219 "SampleAfterValue": "100007",
220 "BriefDescription": "Retired instructions with at least 1 uncacheable load or lock.",
221 "CounterHTOff": "0,1,2,3",
222 "Data_LA": "1"
223 },
224 {
225 "PublicDescription": "This event counts L1D data line replacements including opportunistic replacements, and replacements that require stall-for-replace or block-for-replace.",
226 "EventCode": "0x51",
227 "Counter": "0,1,2,3",
228 "UMask": "0x1",
229 "EventName": "L1D.REPLACEMENT",
230 "SampleAfterValue": "2000003",
231 "BriefDescription": "L1D data line replacements",
232 "CounterHTOff": "0,1,2,3,4,5,6,7"
233 },
234 {
235 "PublicDescription": "This event counts duration of L1D miss outstanding, that is each cycle number of Fill Buffers (FB) outstanding required by Demand Reads. FB either is held by demand loads, or it is held by non-demand loads and gets hit at least once by demand. The valid outstanding interval is defined until the FB deallocation by one of the following ways: from FB allocation, if FB is allocated by demand\n from the demand Hit FB, if it is allocated by hardware or software prefetch.\nNote: In the L1D, a Demand Read contains cacheable or noncacheable demand loads, including ones causing cache-line splits and reads due to page walks resulted from any request type.",
236 "EventCode": "0x48",
237 "Counter": "0,1,2,3",
238 "UMask": "0x1",
239 "EventName": "L1D_PEND_MISS.PENDING",
240 "SampleAfterValue": "2000003",
241 "BriefDescription": "L1D miss outstandings duration in cycles",
242 "CounterHTOff": "0,1,2,3,4,5,6,7"
243 },
244 {
245 "EventCode": "0x48",
246 "Counter": "0,1,2,3",
247 "UMask": "0x2",
248 "EventName": "L1D_PEND_MISS.FB_FULL",
249 "SampleAfterValue": "2000003",
250 "BriefDescription": "Number of times a request needed a FB entry but there was no entry available for it. That is the FB unavailability was dominant reason for blocking the request. A request includes cacheable/uncacheable demands that is load, store or SW prefetch.",
251 "CounterHTOff": "0,1,2,3,4,5,6,7"
252 },
253 {
254 "PublicDescription": "This event counts duration of L1D miss outstanding in cycles.",
255 "EventCode": "0x48",
256 "Counter": "0,1,2,3",
257 "UMask": "0x1",
258 "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
259 "SampleAfterValue": "2000003",
260 "BriefDescription": "Cycles with L1D load Misses outstanding.",
261 "CounterMask": "1",
262 "CounterHTOff": "0,1,2,3,4,5,6,7"
263 },
264 {
265 "PublicDescription": "This event counts the Demand Data Read requests sent to uncore. Use it in conjunction with OFFCORE_REQUESTS_OUTSTANDING to determine average latency in the uncore.",
266 "EventCode": "0xB0",
267 "Counter": "0,1,2,3",
268 "UMask": "0x1",
269 "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
270 "SampleAfterValue": "100003",
271 "BriefDescription": "Demand Data Read requests sent to uncore",
272 "CounterHTOff": "0,1,2,3,4,5,6,7"
273 },
274 {
275 "PublicDescription": "This event counts both cacheable and noncachaeble code read requests.",
276 "EventCode": "0xB0",
277 "Counter": "0,1,2,3",
278 "UMask": "0x2",
279 "EventName": "OFFCORE_REQUESTS.DEMAND_CODE_RD",
280 "SampleAfterValue": "100003",
281 "BriefDescription": "Cacheable and noncachaeble code read requests",
282 "CounterHTOff": "0,1,2,3,4,5,6,7"
283 },
284 {
285 "PublicDescription": "This event counts the demand RFO (read for ownership) requests including regular RFOs, locks, ItoM.",
286 "EventCode": "0xB0",
287 "Counter": "0,1,2,3",
288 "UMask": "0x4",
289 "EventName": "OFFCORE_REQUESTS.DEMAND_RFO",
290 "SampleAfterValue": "100003",
291 "BriefDescription": "Demand RFO requests including regular RFOs, locks, ItoM",
292 "CounterHTOff": "0,1,2,3,4,5,6,7"
293 },
294 {
295 "PublicDescription": "This event counts the demand and prefetch data reads. All Core Data Reads include cacheable 'Demands' and L2 prefetchers (not L3 prefetchers). Counting also covers reads due to page walks resulted from any request type.",
296 "EventCode": "0xB0",
297 "Counter": "0,1,2,3",
298 "UMask": "0x8",
299 "EventName": "OFFCORE_REQUESTS.ALL_DATA_RD",
300 "SampleAfterValue": "100003",
301 "BriefDescription": "Demand and prefetch data reads",
302 "CounterHTOff": "0,1,2,3,4,5,6,7"
303 },
304 {
305 "PublicDescription": "This event counts memory transactions reached the super queue including requests initiated by the core, all L3 prefetches, page walks, and so on.",
306 "EventCode": "0xB0",
307 "Counter": "0,1,2,3",
308 "UMask": "0x80",
309 "EventName": "OFFCORE_REQUESTS.ALL_REQUESTS",
310 "SampleAfterValue": "100003",
311 "BriefDescription": "Any memory transaction that reached the SQ.",
312 "CounterHTOff": "0,1,2,3,4,5,6,7"
313 },
314 {
315 "PublicDescription": "This event counts the number of offcore outstanding Demand Data Read transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor. See the corresponding Umask under OFFCORE_REQUESTS.\nNote: A prefetch promoted to Demand is counted from the promotion point.",
316 "EventCode": "0x60",
317 "Counter": "0,1,2,3",
318 "UMask": "0x1",
319 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD",
320 "SampleAfterValue": "2000003",
321 "BriefDescription": "Offcore outstanding Demand Data Read transactions in uncore queue.",
322 "CounterHTOff": "0,1,2,3,4,5,6,7"
323 },
324 {
325 "PublicDescription": "This event counts the number of offcore outstanding Code Reads transactions in the super queue every cycle. The 'Offcore outstanding' state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
326 "EventCode": "0x60",
327 "Counter": "0,1,2,3",
328 "UMask": "0x2",
329 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_CODE_RD",
330 "SampleAfterValue": "2000003",
331 "BriefDescription": "Offcore outstanding Code Reads transactions in the SuperQueue (SQ), queue to uncore, every cycle. ",
332 "CounterHTOff": "0,1,2,3,4,5,6,7"
333 },
334 {
335 "PublicDescription": "This event counts the number of offcore outstanding RFO (store) transactions in the super queue (SQ) every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
336 "EventCode": "0x60",
337 "Counter": "0,1,2,3",
338 "UMask": "0x4",
339 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO",
340 "SampleAfterValue": "2000003",
341 "BriefDescription": "Offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore, every cycle",
342 "CounterHTOff": "0,1,2,3,4,5,6,7"
343 },
344 {
345 "PublicDescription": "This event counts the number of offcore outstanding cacheable Core Data Read transactions in the super queue every cycle. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
346 "EventCode": "0x60",
347 "Counter": "0,1,2,3",
348 "UMask": "0x8",
349 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
350 "SampleAfterValue": "2000003",
351 "BriefDescription": "Offcore outstanding cacheable Core Data Read transactions in SuperQueue (SQ), queue to uncore",
352 "CounterHTOff": "0,1,2,3,4,5,6,7"
353 },
354 {
355 "PublicDescription": "This event counts cycles when offcore outstanding Demand Data Read transactions are present in the super queue (SQ). A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation).",
356 "EventCode": "0x60",
357 "Counter": "0,1,2,3",
358 "UMask": "0x1",
359 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD",
360 "SampleAfterValue": "2000003",
361 "BriefDescription": "Cycles when offcore outstanding Demand Data Read transactions are present in SuperQueue (SQ), queue to uncore",
362 "CounterMask": "1",
363 "CounterHTOff": "0,1,2,3,4,5,6,7"
364 },
365 {
366 "PublicDescription": "This event counts cycles when offcore outstanding cacheable Core Data Read transactions are present in the super queue. A transaction is considered to be in the Offcore outstanding state between L2 miss and transaction completion sent to requestor (SQ de-allocation). See corresponding Umask under OFFCORE_REQUESTS.",
367 "EventCode": "0x60",
368 "Counter": "0,1,2,3",
369 "UMask": "0x8",
370 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
371 "SampleAfterValue": "2000003",
372 "BriefDescription": "Cycles when offcore outstanding cacheable Core Data Read transactions are present in SuperQueue (SQ), queue to uncore.",
373 "CounterMask": "1",
374 "CounterHTOff": "0,1,2,3,4,5,6,7"
375 },
376 {
377 "PublicDescription": "This event counts the number of cases when the offcore requests buffer cannot take more entries for the core. This can happen when the superqueue does not contain eligible entries, or when L1D writeback pending FIFO requests is full.\nNote: Writeback pending FIFO has six entries.",
378 "EventCode": "0xB2",
379 "Counter": "0,1,2,3",
380 "UMask": "0x1",
381 "EventName": "OFFCORE_REQUESTS_BUFFER.SQ_FULL",
382 "SampleAfterValue": "2000003",
383 "BriefDescription": "Offcore requests buffer cannot take more entries for this thread core.",
384 "CounterHTOff": "0,1,2,3,4,5,6,7"
385 },
386 {
387 "PublicDescription": "This event counts L2 writebacks that access L2 cache.",
388 "EventCode": "0xF0",
389 "Counter": "0,1,2,3",
390 "UMask": "0x40",
391 "EventName": "L2_TRANS.L2_WB",
392 "SampleAfterValue": "200003",
393 "BriefDescription": "L2 writebacks that access L2 cache",
394 "CounterHTOff": "0,1,2,3,4,5,6,7"
395 },
396 {
397 "PublicDescription": "This event counts core-originated cacheable demand requests that miss the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
398 "EventCode": "0x2E",
399 "Counter": "0,1,2,3",
400 "UMask": "0x41",
401 "Errata": "SKL057",
402 "EventName": "LONGEST_LAT_CACHE.MISS",
403 "SampleAfterValue": "100003",
404 "BriefDescription": "Core-originated cacheable demand requests missed L3",
405 "CounterHTOff": "0,1,2,3,4,5,6,7"
406 },
407 {
408 "PublicDescription": "This event counts core-originated cacheable demand requests that refer to the last level cache (LLC). Demand requests include loads, RFOs, and hardware prefetches from L1D, and instruction fetches from IFU.",
409 "EventCode": "0x2E",
410 "Counter": "0,1,2,3",
411 "UMask": "0x4f",
412 "Errata": "SKL057",
413 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
414 "SampleAfterValue": "100003",
415 "BriefDescription": "Core-originated cacheable demand requests that refer to L3",
416 "CounterHTOff": "0,1,2,3,4,5,6,7"
417 },
418 {
419 "PublicDescription": "This event counts the number of cache line split locks sent to the uncore.",
420 "EventCode": "0xF4",
421 "Counter": "0,1,2,3",
422 "UMask": "0x10",
423 "EventName": "SQ_MISC.SPLIT_LOCK",
424 "SampleAfterValue": "100003",
425 "BriefDescription": "Number of cache line split locks sent to uncore.",
426 "CounterHTOff": "0,1,2,3,4,5,6,7"
427 },
428 {
429 "PublicDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction.",
430 "EventCode": "0xB7, 0xBB",
431 "Counter": "0,1,2,3",
432 "UMask": "0x1",
433 "EventName": "OFFCORE_RESPONSE",
434 "SampleAfterValue": "100003",
435 "BriefDescription": "Offcore response can be programmed only with a specific pair of event select and counter MSR, and with specific event codes and predefine mask bit value in a dedicated MSR to specify attributes of the offcore transaction",
436 "CounterHTOff": "0,1,2,3"
437 },
438 {
439 "PublicDescription": "This event counts the number of demand Data Read requests that miss L2 cache. Only not rejected loads are counted.",
440 "EventCode": "0x24",
441 "Counter": "0,1,2,3",
442 "UMask": "0x21",
443 "EventName": "L2_RQSTS.DEMAND_DATA_RD_MISS",
444 "SampleAfterValue": "200003",
445 "BriefDescription": "Demand Data Read miss L2, no rejects",
446 "CounterHTOff": "0,1,2,3,4,5,6,7"
447 },
448 {
449 "PublicDescription": "This event counts the number of demand Data Read requests that hit L2 cache. Only not rejected loads are counted.",
450 "EventCode": "0x24",
451 "Counter": "0,1,2,3",
452 "UMask": "0x41",
453 "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
454 "SampleAfterValue": "200003",
455 "BriefDescription": "Demand Data Read requests that hit L2 cache",
456 "CounterHTOff": "0,1,2,3,4,5,6,7"
457 },
458 {
459 "PublicDescription": "This event counts the number of demand Data Read requests (including requests from L1D hardware prefetchers). These loads may hit or miss L2 cache. Only non rejected loads are counted.",
460 "EventCode": "0x24",
461 "Counter": "0,1,2,3",
462 "UMask": "0xe1",
463 "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
464 "SampleAfterValue": "200003",
465 "BriefDescription": "Demand Data Read requests",
466 "CounterHTOff": "0,1,2,3,4,5,6,7"
467 },
468 {
469 "PublicDescription": "This event counts the total number of RFO (read for ownership) requests to L2 cache. L2 RFO requests include both L1D demand RFO misses as well as L1D RFO prefetches.",
470 "EventCode": "0x24",
471 "Counter": "0,1,2,3",
472 "UMask": "0xe2",
473 "EventName": "L2_RQSTS.ALL_RFO",
474 "SampleAfterValue": "200003",
475 "BriefDescription": "RFO requests to L2 cache",
476 "CounterHTOff": "0,1,2,3,4,5,6,7"
477 },
478 {
479 "PublicDescription": "This event counts the total number of L2 code requests.",
480 "EventCode": "0x24",
481 "Counter": "0,1,2,3",
482 "UMask": "0xe4",
483 "EventName": "L2_RQSTS.ALL_CODE_RD",
484 "SampleAfterValue": "200003",
485 "BriefDescription": "L2 code requests",
486 "CounterHTOff": "0,1,2,3,4,5,6,7"
487 },
488 {
489 "PublicDescription": "This event counts the total number of requests from the L2 hardware prefetchers.",
490 "EventCode": "0x24",
491 "Counter": "0,1,2,3",
492 "UMask": "0xf8",
493 "EventName": "L2_RQSTS.ALL_PF",
494 "SampleAfterValue": "200003",
495 "BriefDescription": "Requests from the L1/L2/L3 hardware prefetchers or Load software prefetches",
496 "CounterHTOff": "0,1,2,3,4,5,6,7"
497 },
498 {
499 "PublicDescription": "Requests from the L1/L2/L3 hardware prefetchers or Load software prefetches that miss L2 cache.",
500 "EventCode": "0x24",
501 "Counter": "0,1,2,3",
502 "UMask": "0x38",
503 "EventName": "L2_RQSTS.PF_MISS",
504 "SampleAfterValue": "200003",
505 "BriefDescription": "Requests from the L1/L2/L3 hardware prefetchers or Load software prefetches that miss L2 cache",
506 "CounterHTOff": "0,1,2,3,4,5,6,7"
507 },
508 {
509 "PublicDescription": "Requests from the L1/L2/L3 hardware prefetchers or Load software prefetches that hit L2 cache.",
510 "EventCode": "0x24",
511 "Counter": "0,1,2,3",
512 "UMask": "0xd8",
513 "EventName": "L2_RQSTS.PF_HIT",
514 "SampleAfterValue": "200003",
515 "BriefDescription": "Requests from the L1/L2/L3 hardware prefetchers or Load software prefetches that hit L2 cache",
516 "CounterHTOff": "0,1,2,3,4,5,6,7"
517 },
518 {
519 "PublicDescription": "RFO requests that hit L2 cache.",
520 "EventCode": "0x24",
521 "Counter": "0,1,2,3",
522 "UMask": "0x42",
523 "EventName": "L2_RQSTS.RFO_HIT",
524 "SampleAfterValue": "200003",
525 "BriefDescription": "RFO requests that hit L2 cache",
526 "CounterHTOff": "0,1,2,3,4,5,6,7"
527 },
528 {
529 "PublicDescription": "RFO requests that miss L2 cache.",
530 "EventCode": "0x24",
531 "Counter": "0,1,2,3",
532 "UMask": "0x22",
533 "EventName": "L2_RQSTS.RFO_MISS",
534 "SampleAfterValue": "200003",
535 "BriefDescription": "RFO requests that miss L2 cache",
536 "CounterHTOff": "0,1,2,3,4,5,6,7"
537 },
538 {
539 "EventCode": "0x24",
540 "Counter": "0,1,2,3",
541 "UMask": "0x44",
542 "EventName": "L2_RQSTS.CODE_RD_HIT",
543 "SampleAfterValue": "200003",
544 "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "PublicDescription": "L2 cache misses when fetching instructions.",
549 "EventCode": "0x24",
550 "Counter": "0,1,2,3",
551 "UMask": "0x24",
552 "EventName": "L2_RQSTS.CODE_RD_MISS",
553 "SampleAfterValue": "200003",
554 "BriefDescription": "L2 cache misses when fetching instructions",
555 "CounterHTOff": "0,1,2,3,4,5,6,7"
556 },
557 {
558 "PublicDescription": "Demand requests that miss L2 cache.",
559 "EventCode": "0x24",
560 "Counter": "0,1,2,3",
561 "UMask": "0x27",
562 "EventName": "L2_RQSTS.ALL_DEMAND_MISS",
563 "SampleAfterValue": "200003",
564 "BriefDescription": "Demand requests that miss L2 cache",
565 "CounterHTOff": "0,1,2,3,4,5,6,7"
566 },
567 {
568 "PublicDescription": "Demand requests to L2 cache.",
569 "EventCode": "0x24",
570 "Counter": "0,1,2,3",
571 "UMask": "0xe7",
572 "EventName": "L2_RQSTS.ALL_DEMAND_REFERENCES",
573 "SampleAfterValue": "200003",
574 "BriefDescription": "Demand requests to L2 cache",
575 "CounterHTOff": "0,1,2,3,4,5,6,7"
576 },
577 {
578 "PublicDescription": "All requests that miss L2 cache.",
579 "EventCode": "0x24",
580 "Counter": "0,1,2,3",
581 "UMask": "0x3f",
582 "EventName": "L2_RQSTS.MISS",
583 "SampleAfterValue": "200003",
584 "BriefDescription": "All requests that miss L2 cache",
585 "CounterHTOff": "0,1,2,3,4,5,6,7"
586 },
587 {
588 "PublicDescription": "All L2 requests.",
589 "EventCode": "0x24",
590 "Counter": "0,1,2,3",
591 "UMask": "0xff",
592 "EventName": "L2_RQSTS.REFERENCES",
593 "SampleAfterValue": "200003",
594 "BriefDescription": "All L2 requests",
595 "CounterHTOff": "0,1,2,3,4,5,6,7"
596 },
597 {
598 "EventCode": "0xF2",
599 "Counter": "0,1,2,3",
600 "UMask": "0x1",
601 "EventName": "L2_LINES_OUT.SILENT",
602 "SampleAfterValue": "200003",
603 "BriefDescription": "Counts the number of lines that are silently dropped by L2 cache when triggered by an L2 cache fill. These lines are typically in Shared or Exclusive state. A non-threaded event.",
604 "CounterHTOff": "0,1,2,3,4,5,6,7"
605 },
606 {
607 "EventCode": "0xF2",
608 "Counter": "0,1,2,3",
609 "UMask": "0x2",
610 "EventName": "L2_LINES_OUT.NON_SILENT",
611 "SampleAfterValue": "200003",
612 "BriefDescription": "Counts the number of lines that are evicted by L2 cache when triggered by an L2 cache fill. Those lines are in Modified state. Modified lines are written back to L3",
613 "CounterHTOff": "0,1,2,3,4,5,6,7"
614 },
615 {
616 "PublicDescription": "Counts the number of lines that have been hardware prefetched but not used and now evicted by L2 cache.",
617 "EventCode": "0xF2",
618 "Counter": "0,1,2,3",
619 "UMask": "0x4",
620 "EventName": "L2_LINES_OUT.USELESS_PREF",
621 "SampleAfterValue": "200003",
622 "BriefDescription": "Counts the number of lines that have been hardware prefetched but not used and now evicted by L2 cache",
623 "CounterHTOff": "0,1,2,3,4,5,6,7"
624 },
625 {
626 "PublicDescription": "This event counts the number of L2 cache lines filling the L2. Counting does not cover rejects.",
627 "EventCode": "0xF1",
628 "Counter": "0,1,2,3",
629 "UMask": "0x1f",
630 "EventName": "L2_LINES_IN.ALL",
631 "SampleAfterValue": "100003",
632 "BriefDescription": "L2 cache lines filling L2",
633 "CounterHTOff": "0,1,2,3,4,5,6,7"
634 },
635 {
636 "PublicDescription": "This event counts the number of offcore outstanding Code Reads transactions in the super queue every cycle. The 'Offcore outstanding' state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
637 "EventCode": "0x60",
638 "Counter": "0,1,2,3",
639 "UMask": "0x2",
640 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_CODE_RD",
641 "SampleAfterValue": "2000003",
642 "BriefDescription": "Cycles with offcore outstanding Code Reads transactions in the SuperQueue (SQ), queue to uncore.",
643 "CounterMask": "1",
644 "CounterHTOff": "0,1,2,3,4,5,6,7"
645 },
646 {
647 "PublicDescription": "This event counts the number of offcore outstanding demand rfo Reads transactions in the super queue every cycle. The 'Offcore outstanding' state of the transaction lasts from the L2 miss until the sending transaction completion to requestor (SQ deallocation). See the corresponding Umask under OFFCORE_REQUESTS.",
648 "EventCode": "0x60",
649 "Counter": "0,1,2,3",
650 "UMask": "0x4",
651 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
652 "SampleAfterValue": "2000003",
653 "BriefDescription": "Cycles with offcore outstanding demand rfo reads transactions in SuperQueue (SQ), queue to uncore.",
654 "CounterMask": "1",
655 "CounterHTOff": "0,1,2,3,4,5,6,7"
656 },
657 {
658 "EventCode": "0x48",
659 "Counter": "0,1,2,3",
660 "UMask": "0x1",
661 "AnyThread": "1",
662 "EventName": "L1D_PEND_MISS.PENDING_CYCLES_ANY",
663 "SampleAfterValue": "2000003",
664 "BriefDescription": "Cycles with L1D load Misses outstanding from any thread on physical core.",
665 "CounterMask": "1",
666 "CounterHTOff": "0,1,2,3,4,5,6,7"
667 },
668 {
669 "EventCode": "0x60",
670 "Counter": "0,1,2,3",
671 "UMask": "0x1",
672 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD_GE_6",
673 "SampleAfterValue": "2000003",
674 "BriefDescription": "Cycles with at least 6 offcore outstanding Demand Data Read transactions in uncore queue.",
675 "CounterMask": "6",
676 "CounterHTOff": "0,1,2,3,4,5,6,7"
677 },
678 {
679 "EventCode": "0xF2",
680 "Counter": "0,1,2,3",
681 "UMask": "0x4",
682 "EventName": "L2_LINES_OUT.USELESS_HWPF",
683 "SampleAfterValue": "200003",
684 "BriefDescription": "Counts the number of lines that have been hardware prefetched but not used and now evicted by L2 cache",
685 "CounterHTOff": "0,1,2,3,4,5,6,7"
686 },
687 {
688 "EventCode": "0xB7, 0xBB",
689 "MSRValue": "0x3fc0408000 ",
690 "Counter": "0,1,2,3",
691 "UMask": "0x1",
692 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.ANY_SNOOP",
693 "MSRIndex": "0x1a6,0x1a7",
694 "SampleAfterValue": "100003",
695 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & ANY_SNOOP",
696 "Offcore": "1",
697 "CounterHTOff": "0,1,2,3"
698 },
699 {
700 "EventCode": "0xB7, 0xBB",
701 "MSRValue": "0x1000408000 ",
702 "Counter": "0,1,2,3",
703 "UMask": "0x1",
704 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.SNOOP_HITM",
705 "MSRIndex": "0x1a6,0x1a7",
706 "SampleAfterValue": "100003",
707 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & SNOOP_HITM",
708 "Offcore": "1",
709 "CounterHTOff": "0,1,2,3"
710 },
711 {
712 "EventCode": "0xB7, 0xBB",
713 "MSRValue": "0x0400408000 ",
714 "Counter": "0,1,2,3",
715 "UMask": "0x1",
716 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.SNOOP_HIT_NO_FWD",
717 "MSRIndex": "0x1a6,0x1a7",
718 "SampleAfterValue": "100003",
719 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & SNOOP_HIT_NO_FWD",
720 "Offcore": "1",
721 "CounterHTOff": "0,1,2,3"
722 },
723 {
724 "EventCode": "0xB7, 0xBB",
725 "MSRValue": "0x0200408000 ",
726 "Counter": "0,1,2,3",
727 "UMask": "0x1",
728 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.SNOOP_MISS",
729 "MSRIndex": "0x1a6,0x1a7",
730 "SampleAfterValue": "100003",
731 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & SNOOP_MISS",
732 "Offcore": "1",
733 "CounterHTOff": "0,1,2,3"
734 },
735 {
736 "EventCode": "0xB7, 0xBB",
737 "MSRValue": "0x0100408000 ",
738 "Counter": "0,1,2,3",
739 "UMask": "0x1",
740 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.SNOOP_NOT_NEEDED",
741 "MSRIndex": "0x1a6,0x1a7",
742 "SampleAfterValue": "100003",
743 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & SNOOP_NOT_NEEDED",
744 "Offcore": "1",
745 "CounterHTOff": "0,1,2,3"
746 },
747 {
748 "EventCode": "0xB7, 0xBB",
749 "MSRValue": "0x0080408000 ",
750 "Counter": "0,1,2,3",
751 "UMask": "0x1",
752 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.SNOOP_NONE",
753 "MSRIndex": "0x1a6,0x1a7",
754 "SampleAfterValue": "100003",
755 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & SNOOP_NONE",
756 "Offcore": "1",
757 "CounterHTOff": "0,1,2,3"
758 },
759 {
760 "EventCode": "0xB7, 0xBB",
761 "MSRValue": "0x0040408000 ",
762 "Counter": "0,1,2,3",
763 "UMask": "0x1",
764 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.SPL_HIT",
765 "MSRIndex": "0x1a6,0x1a7",
766 "SampleAfterValue": "100003",
767 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & SPL_HIT",
768 "Offcore": "1",
769 "CounterHTOff": "0,1,2,3"
770 },
771 {
772 "EventCode": "0xB7, 0xBB",
773 "MSRValue": "0x3fc01c8000 ",
774 "Counter": "0,1,2,3",
775 "UMask": "0x1",
776 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.ANY_SNOOP",
777 "MSRIndex": "0x1a6,0x1a7",
778 "SampleAfterValue": "100003",
779 "BriefDescription": "OTHER & L3_HIT & ANY_SNOOP",
780 "Offcore": "1",
781 "CounterHTOff": "0,1,2,3"
782 },
783 {
784 "EventCode": "0xB7, 0xBB",
785 "MSRValue": "0x10001c8000 ",
786 "Counter": "0,1,2,3",
787 "UMask": "0x1",
788 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_HITM",
789 "MSRIndex": "0x1a6,0x1a7",
790 "SampleAfterValue": "100003",
791 "BriefDescription": "OTHER & L3_HIT & SNOOP_HITM",
792 "Offcore": "1",
793 "CounterHTOff": "0,1,2,3"
794 },
795 {
796 "EventCode": "0xB7, 0xBB",
797 "MSRValue": "0x04001c8000 ",
798 "Counter": "0,1,2,3",
799 "UMask": "0x1",
800 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_HIT_NO_FWD",
801 "MSRIndex": "0x1a6,0x1a7",
802 "SampleAfterValue": "100003",
803 "BriefDescription": "Counts any other requests that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
804 "Offcore": "1",
805 "CounterHTOff": "0,1,2,3"
806 },
807 {
808 "EventCode": "0xB7, 0xBB",
809 "MSRValue": "0x02001c8000 ",
810 "Counter": "0,1,2,3",
811 "UMask": "0x1",
812 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_MISS",
813 "MSRIndex": "0x1a6,0x1a7",
814 "SampleAfterValue": "100003",
815 "BriefDescription": "Counts any other requests that hit in the L3 and the snoops sent to sibling cores return clean response.",
816 "Offcore": "1",
817 "CounterHTOff": "0,1,2,3"
818 },
819 {
820 "EventCode": "0xB7, 0xBB",
821 "MSRValue": "0x01001c8000 ",
822 "Counter": "0,1,2,3",
823 "UMask": "0x1",
824 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_NOT_NEEDED",
825 "MSRIndex": "0x1a6,0x1a7",
826 "SampleAfterValue": "100003",
827 "BriefDescription": "Counts any other requests that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
828 "Offcore": "1",
829 "CounterHTOff": "0,1,2,3"
830 },
831 {
832 "EventCode": "0xB7, 0xBB",
833 "MSRValue": "0x00801c8000 ",
834 "Counter": "0,1,2,3",
835 "UMask": "0x1",
836 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_NONE",
837 "MSRIndex": "0x1a6,0x1a7",
838 "SampleAfterValue": "100003",
839 "BriefDescription": "OTHER & L3_HIT & SNOOP_NONE",
840 "Offcore": "1",
841 "CounterHTOff": "0,1,2,3"
842 },
843 {
844 "EventCode": "0xB7, 0xBB",
845 "MSRValue": "0x00401c8000 ",
846 "Counter": "0,1,2,3",
847 "UMask": "0x1",
848 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SPL_HIT",
849 "MSRIndex": "0x1a6,0x1a7",
850 "SampleAfterValue": "100003",
851 "BriefDescription": "OTHER & L3_HIT & SPL_HIT",
852 "Offcore": "1",
853 "CounterHTOff": "0,1,2,3"
854 },
855 {
856 "EventCode": "0xB7, 0xBB",
857 "MSRValue": "0x3fc0108000 ",
858 "Counter": "0,1,2,3",
859 "UMask": "0x1",
860 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.ANY_SNOOP",
861 "MSRIndex": "0x1a6,0x1a7",
862 "SampleAfterValue": "100003",
863 "BriefDescription": "OTHER & L3_HIT_S & ANY_SNOOP",
864 "Offcore": "1",
865 "CounterHTOff": "0,1,2,3"
866 },
867 {
868 "EventCode": "0xB7, 0xBB",
869 "MSRValue": "0x1000108000 ",
870 "Counter": "0,1,2,3",
871 "UMask": "0x1",
872 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.SNOOP_HITM",
873 "MSRIndex": "0x1a6,0x1a7",
874 "SampleAfterValue": "100003",
875 "BriefDescription": "OTHER & L3_HIT_S & SNOOP_HITM",
876 "Offcore": "1",
877 "CounterHTOff": "0,1,2,3"
878 },
879 {
880 "EventCode": "0xB7, 0xBB",
881 "MSRValue": "0x0400108000 ",
882 "Counter": "0,1,2,3",
883 "UMask": "0x1",
884 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.SNOOP_HIT_NO_FWD",
885 "MSRIndex": "0x1a6,0x1a7",
886 "SampleAfterValue": "100003",
887 "BriefDescription": "OTHER & L3_HIT_S & SNOOP_HIT_NO_FWD",
888 "Offcore": "1",
889 "CounterHTOff": "0,1,2,3"
890 },
891 {
892 "EventCode": "0xB7, 0xBB",
893 "MSRValue": "0x0200108000 ",
894 "Counter": "0,1,2,3",
895 "UMask": "0x1",
896 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.SNOOP_MISS",
897 "MSRIndex": "0x1a6,0x1a7",
898 "SampleAfterValue": "100003",
899 "BriefDescription": "OTHER & L3_HIT_S & SNOOP_MISS",
900 "Offcore": "1",
901 "CounterHTOff": "0,1,2,3"
902 },
903 {
904 "EventCode": "0xB7, 0xBB",
905 "MSRValue": "0x0100108000 ",
906 "Counter": "0,1,2,3",
907 "UMask": "0x1",
908 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.SNOOP_NOT_NEEDED",
909 "MSRIndex": "0x1a6,0x1a7",
910 "SampleAfterValue": "100003",
911 "BriefDescription": "OTHER & L3_HIT_S & SNOOP_NOT_NEEDED",
912 "Offcore": "1",
913 "CounterHTOff": "0,1,2,3"
914 },
915 {
916 "EventCode": "0xB7, 0xBB",
917 "MSRValue": "0x0080108000 ",
918 "Counter": "0,1,2,3",
919 "UMask": "0x1",
920 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.SNOOP_NONE",
921 "MSRIndex": "0x1a6,0x1a7",
922 "SampleAfterValue": "100003",
923 "BriefDescription": "OTHER & L3_HIT_S & SNOOP_NONE",
924 "Offcore": "1",
925 "CounterHTOff": "0,1,2,3"
926 },
927 {
928 "EventCode": "0xB7, 0xBB",
929 "MSRValue": "0x0040108000 ",
930 "Counter": "0,1,2,3",
931 "UMask": "0x1",
932 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.SPL_HIT",
933 "MSRIndex": "0x1a6,0x1a7",
934 "SampleAfterValue": "100003",
935 "BriefDescription": "OTHER & L3_HIT_S & SPL_HIT",
936 "Offcore": "1",
937 "CounterHTOff": "0,1,2,3"
938 },
939 {
940 "EventCode": "0xB7, 0xBB",
941 "MSRValue": "0x3fc0088000 ",
942 "Counter": "0,1,2,3",
943 "UMask": "0x1",
944 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.ANY_SNOOP",
945 "MSRIndex": "0x1a6,0x1a7",
946 "SampleAfterValue": "100003",
947 "BriefDescription": "OTHER & L3_HIT_E & ANY_SNOOP",
948 "Offcore": "1",
949 "CounterHTOff": "0,1,2,3"
950 },
951 {
952 "EventCode": "0xB7, 0xBB",
953 "MSRValue": "0x1000088000 ",
954 "Counter": "0,1,2,3",
955 "UMask": "0x1",
956 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.SNOOP_HITM",
957 "MSRIndex": "0x1a6,0x1a7",
958 "SampleAfterValue": "100003",
959 "BriefDescription": "OTHER & L3_HIT_E & SNOOP_HITM",
960 "Offcore": "1",
961 "CounterHTOff": "0,1,2,3"
962 },
963 {
964 "EventCode": "0xB7, 0xBB",
965 "MSRValue": "0x0400088000 ",
966 "Counter": "0,1,2,3",
967 "UMask": "0x1",
968 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.SNOOP_HIT_NO_FWD",
969 "MSRIndex": "0x1a6,0x1a7",
970 "SampleAfterValue": "100003",
971 "BriefDescription": "OTHER & L3_HIT_E & SNOOP_HIT_NO_FWD",
972 "Offcore": "1",
973 "CounterHTOff": "0,1,2,3"
974 },
975 {
976 "EventCode": "0xB7, 0xBB",
977 "MSRValue": "0x0200088000 ",
978 "Counter": "0,1,2,3",
979 "UMask": "0x1",
980 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.SNOOP_MISS",
981 "MSRIndex": "0x1a6,0x1a7",
982 "SampleAfterValue": "100003",
983 "BriefDescription": "OTHER & L3_HIT_E & SNOOP_MISS",
984 "Offcore": "1",
985 "CounterHTOff": "0,1,2,3"
986 },
987 {
988 "EventCode": "0xB7, 0xBB",
989 "MSRValue": "0x0100088000 ",
990 "Counter": "0,1,2,3",
991 "UMask": "0x1",
992 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.SNOOP_NOT_NEEDED",
993 "MSRIndex": "0x1a6,0x1a7",
994 "SampleAfterValue": "100003",
995 "BriefDescription": "OTHER & L3_HIT_E & SNOOP_NOT_NEEDED",
996 "Offcore": "1",
997 "CounterHTOff": "0,1,2,3"
998 },
999 {
1000 "EventCode": "0xB7, 0xBB",
1001 "MSRValue": "0x0080088000 ",
1002 "Counter": "0,1,2,3",
1003 "UMask": "0x1",
1004 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.SNOOP_NONE",
1005 "MSRIndex": "0x1a6,0x1a7",
1006 "SampleAfterValue": "100003",
1007 "BriefDescription": "OTHER & L3_HIT_E & SNOOP_NONE",
1008 "Offcore": "1",
1009 "CounterHTOff": "0,1,2,3"
1010 },
1011 {
1012 "EventCode": "0xB7, 0xBB",
1013 "MSRValue": "0x0040088000 ",
1014 "Counter": "0,1,2,3",
1015 "UMask": "0x1",
1016 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.SPL_HIT",
1017 "MSRIndex": "0x1a6,0x1a7",
1018 "SampleAfterValue": "100003",
1019 "BriefDescription": "OTHER & L3_HIT_E & SPL_HIT",
1020 "Offcore": "1",
1021 "CounterHTOff": "0,1,2,3"
1022 },
1023 {
1024 "EventCode": "0xB7, 0xBB",
1025 "MSRValue": "0x3fc0048000 ",
1026 "Counter": "0,1,2,3",
1027 "UMask": "0x1",
1028 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.ANY_SNOOP",
1029 "MSRIndex": "0x1a6,0x1a7",
1030 "SampleAfterValue": "100003",
1031 "BriefDescription": "OTHER & L3_HIT_M & ANY_SNOOP",
1032 "Offcore": "1",
1033 "CounterHTOff": "0,1,2,3"
1034 },
1035 {
1036 "EventCode": "0xB7, 0xBB",
1037 "MSRValue": "0x1000048000 ",
1038 "Counter": "0,1,2,3",
1039 "UMask": "0x1",
1040 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.SNOOP_HITM",
1041 "MSRIndex": "0x1a6,0x1a7",
1042 "SampleAfterValue": "100003",
1043 "BriefDescription": "OTHER & L3_HIT_M & SNOOP_HITM",
1044 "Offcore": "1",
1045 "CounterHTOff": "0,1,2,3"
1046 },
1047 {
1048 "EventCode": "0xB7, 0xBB",
1049 "MSRValue": "0x0400048000 ",
1050 "Counter": "0,1,2,3",
1051 "UMask": "0x1",
1052 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.SNOOP_HIT_NO_FWD",
1053 "MSRIndex": "0x1a6,0x1a7",
1054 "SampleAfterValue": "100003",
1055 "BriefDescription": "OTHER & L3_HIT_M & SNOOP_HIT_NO_FWD",
1056 "Offcore": "1",
1057 "CounterHTOff": "0,1,2,3"
1058 },
1059 {
1060 "EventCode": "0xB7, 0xBB",
1061 "MSRValue": "0x0200048000 ",
1062 "Counter": "0,1,2,3",
1063 "UMask": "0x1",
1064 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.SNOOP_MISS",
1065 "MSRIndex": "0x1a6,0x1a7",
1066 "SampleAfterValue": "100003",
1067 "BriefDescription": "OTHER & L3_HIT_M & SNOOP_MISS",
1068 "Offcore": "1",
1069 "CounterHTOff": "0,1,2,3"
1070 },
1071 {
1072 "EventCode": "0xB7, 0xBB",
1073 "MSRValue": "0x0100048000 ",
1074 "Counter": "0,1,2,3",
1075 "UMask": "0x1",
1076 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.SNOOP_NOT_NEEDED",
1077 "MSRIndex": "0x1a6,0x1a7",
1078 "SampleAfterValue": "100003",
1079 "BriefDescription": "OTHER & L3_HIT_M & SNOOP_NOT_NEEDED",
1080 "Offcore": "1",
1081 "CounterHTOff": "0,1,2,3"
1082 },
1083 {
1084 "EventCode": "0xB7, 0xBB",
1085 "MSRValue": "0x0080048000 ",
1086 "Counter": "0,1,2,3",
1087 "UMask": "0x1",
1088 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.SNOOP_NONE",
1089 "MSRIndex": "0x1a6,0x1a7",
1090 "SampleAfterValue": "100003",
1091 "BriefDescription": "OTHER & L3_HIT_M & SNOOP_NONE",
1092 "Offcore": "1",
1093 "CounterHTOff": "0,1,2,3"
1094 },
1095 {
1096 "EventCode": "0xB7, 0xBB",
1097 "MSRValue": "0x0040048000 ",
1098 "Counter": "0,1,2,3",
1099 "UMask": "0x1",
1100 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.SPL_HIT",
1101 "MSRIndex": "0x1a6,0x1a7",
1102 "SampleAfterValue": "100003",
1103 "BriefDescription": "OTHER & L3_HIT_M & SPL_HIT",
1104 "Offcore": "1",
1105 "CounterHTOff": "0,1,2,3"
1106 },
1107 {
1108 "EventCode": "0xB7, 0xBB",
1109 "MSRValue": "0x3fc0028000 ",
1110 "Counter": "0,1,2,3",
1111 "UMask": "0x1",
1112 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.ANY_SNOOP",
1113 "MSRIndex": "0x1a6,0x1a7",
1114 "SampleAfterValue": "100003",
1115 "BriefDescription": "OTHER & SUPPLIER_NONE & ANY_SNOOP",
1116 "Offcore": "1",
1117 "CounterHTOff": "0,1,2,3"
1118 },
1119 {
1120 "EventCode": "0xB7, 0xBB",
1121 "MSRValue": "0x1000028000 ",
1122 "Counter": "0,1,2,3",
1123 "UMask": "0x1",
1124 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_HITM",
1125 "MSRIndex": "0x1a6,0x1a7",
1126 "SampleAfterValue": "100003",
1127 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_HITM",
1128 "Offcore": "1",
1129 "CounterHTOff": "0,1,2,3"
1130 },
1131 {
1132 "EventCode": "0xB7, 0xBB",
1133 "MSRValue": "0x0400028000 ",
1134 "Counter": "0,1,2,3",
1135 "UMask": "0x1",
1136 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1137 "MSRIndex": "0x1a6,0x1a7",
1138 "SampleAfterValue": "100003",
1139 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1140 "Offcore": "1",
1141 "CounterHTOff": "0,1,2,3"
1142 },
1143 {
1144 "EventCode": "0xB7, 0xBB",
1145 "MSRValue": "0x0200028000 ",
1146 "Counter": "0,1,2,3",
1147 "UMask": "0x1",
1148 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_MISS",
1149 "MSRIndex": "0x1a6,0x1a7",
1150 "SampleAfterValue": "100003",
1151 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_MISS",
1152 "Offcore": "1",
1153 "CounterHTOff": "0,1,2,3"
1154 },
1155 {
1156 "EventCode": "0xB7, 0xBB",
1157 "MSRValue": "0x0100028000 ",
1158 "Counter": "0,1,2,3",
1159 "UMask": "0x1",
1160 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1161 "MSRIndex": "0x1a6,0x1a7",
1162 "SampleAfterValue": "100003",
1163 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1164 "Offcore": "1",
1165 "CounterHTOff": "0,1,2,3"
1166 },
1167 {
1168 "EventCode": "0xB7, 0xBB",
1169 "MSRValue": "0x0080028000 ",
1170 "Counter": "0,1,2,3",
1171 "UMask": "0x1",
1172 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_NONE",
1173 "MSRIndex": "0x1a6,0x1a7",
1174 "SampleAfterValue": "100003",
1175 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_NONE",
1176 "Offcore": "1",
1177 "CounterHTOff": "0,1,2,3"
1178 },
1179 {
1180 "EventCode": "0xB7, 0xBB",
1181 "MSRValue": "0x0040028000 ",
1182 "Counter": "0,1,2,3",
1183 "UMask": "0x1",
1184 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SPL_HIT",
1185 "MSRIndex": "0x1a6,0x1a7",
1186 "SampleAfterValue": "100003",
1187 "BriefDescription": "OTHER & SUPPLIER_NONE & SPL_HIT",
1188 "Offcore": "1",
1189 "CounterHTOff": "0,1,2,3"
1190 },
1191 {
1192 "EventCode": "0xB7, 0xBB",
1193 "MSRValue": "0x0000018000 ",
1194 "Counter": "0,1,2,3",
1195 "UMask": "0x1",
1196 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_RESPONSE",
1197 "MSRIndex": "0x1a6,0x1a7",
1198 "SampleAfterValue": "100003",
1199 "BriefDescription": "Counts any other requests that have any response type.",
1200 "Offcore": "1",
1201 "CounterHTOff": "0,1,2,3"
1202 },
1203 {
1204 "EventCode": "0xB7, 0xBB",
1205 "MSRValue": "0x3fc0400800 ",
1206 "Counter": "0,1,2,3",
1207 "UMask": "0x1",
1208 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.ANY_SNOOP",
1209 "MSRIndex": "0x1a6,0x1a7",
1210 "SampleAfterValue": "100003",
1211 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & ANY_SNOOP",
1212 "Offcore": "1",
1213 "CounterHTOff": "0,1,2,3"
1214 },
1215 {
1216 "EventCode": "0xB7, 0xBB",
1217 "MSRValue": "0x1000400800 ",
1218 "Counter": "0,1,2,3",
1219 "UMask": "0x1",
1220 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.SNOOP_HITM",
1221 "MSRIndex": "0x1a6,0x1a7",
1222 "SampleAfterValue": "100003",
1223 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & SNOOP_HITM",
1224 "Offcore": "1",
1225 "CounterHTOff": "0,1,2,3"
1226 },
1227 {
1228 "EventCode": "0xB7, 0xBB",
1229 "MSRValue": "0x0400400800 ",
1230 "Counter": "0,1,2,3",
1231 "UMask": "0x1",
1232 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.SNOOP_HIT_NO_FWD",
1233 "MSRIndex": "0x1a6,0x1a7",
1234 "SampleAfterValue": "100003",
1235 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & SNOOP_HIT_NO_FWD",
1236 "Offcore": "1",
1237 "CounterHTOff": "0,1,2,3"
1238 },
1239 {
1240 "EventCode": "0xB7, 0xBB",
1241 "MSRValue": "0x0200400800 ",
1242 "Counter": "0,1,2,3",
1243 "UMask": "0x1",
1244 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.SNOOP_MISS",
1245 "MSRIndex": "0x1a6,0x1a7",
1246 "SampleAfterValue": "100003",
1247 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & SNOOP_MISS",
1248 "Offcore": "1",
1249 "CounterHTOff": "0,1,2,3"
1250 },
1251 {
1252 "EventCode": "0xB7, 0xBB",
1253 "MSRValue": "0x0100400800 ",
1254 "Counter": "0,1,2,3",
1255 "UMask": "0x1",
1256 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.SNOOP_NOT_NEEDED",
1257 "MSRIndex": "0x1a6,0x1a7",
1258 "SampleAfterValue": "100003",
1259 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & SNOOP_NOT_NEEDED",
1260 "Offcore": "1",
1261 "CounterHTOff": "0,1,2,3"
1262 },
1263 {
1264 "EventCode": "0xB7, 0xBB",
1265 "MSRValue": "0x0080400800 ",
1266 "Counter": "0,1,2,3",
1267 "UMask": "0x1",
1268 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.SNOOP_NONE",
1269 "MSRIndex": "0x1a6,0x1a7",
1270 "SampleAfterValue": "100003",
1271 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & SNOOP_NONE",
1272 "Offcore": "1",
1273 "CounterHTOff": "0,1,2,3"
1274 },
1275 {
1276 "EventCode": "0xB7, 0xBB",
1277 "MSRValue": "0x0040400800 ",
1278 "Counter": "0,1,2,3",
1279 "UMask": "0x1",
1280 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.SPL_HIT",
1281 "MSRIndex": "0x1a6,0x1a7",
1282 "SampleAfterValue": "100003",
1283 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & SPL_HIT",
1284 "Offcore": "1",
1285 "CounterHTOff": "0,1,2,3"
1286 },
1287 {
1288 "EventCode": "0xB7, 0xBB",
1289 "MSRValue": "0x3fc01c0800 ",
1290 "Counter": "0,1,2,3",
1291 "UMask": "0x1",
1292 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.ANY_SNOOP",
1293 "MSRIndex": "0x1a6,0x1a7",
1294 "SampleAfterValue": "100003",
1295 "BriefDescription": "STREAMING_STORES & L3_HIT & ANY_SNOOP",
1296 "Offcore": "1",
1297 "CounterHTOff": "0,1,2,3"
1298 },
1299 {
1300 "EventCode": "0xB7, 0xBB",
1301 "MSRValue": "0x10001c0800 ",
1302 "Counter": "0,1,2,3",
1303 "UMask": "0x1",
1304 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.SNOOP_HITM",
1305 "MSRIndex": "0x1a6,0x1a7",
1306 "SampleAfterValue": "100003",
1307 "BriefDescription": "STREAMING_STORES & L3_HIT & SNOOP_HITM",
1308 "Offcore": "1",
1309 "CounterHTOff": "0,1,2,3"
1310 },
1311 {
1312 "EventCode": "0xB7, 0xBB",
1313 "MSRValue": "0x04001c0800 ",
1314 "Counter": "0,1,2,3",
1315 "UMask": "0x1",
1316 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.SNOOP_HIT_NO_FWD",
1317 "MSRIndex": "0x1a6,0x1a7",
1318 "SampleAfterValue": "100003",
1319 "BriefDescription": "Counts streaming stores that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1320 "Offcore": "1",
1321 "CounterHTOff": "0,1,2,3"
1322 },
1323 {
1324 "EventCode": "0xB7, 0xBB",
1325 "MSRValue": "0x02001c0800 ",
1326 "Counter": "0,1,2,3",
1327 "UMask": "0x1",
1328 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.SNOOP_MISS",
1329 "MSRIndex": "0x1a6,0x1a7",
1330 "SampleAfterValue": "100003",
1331 "BriefDescription": "Counts streaming stores that hit in the L3 and the snoops sent to sibling cores return clean response.",
1332 "Offcore": "1",
1333 "CounterHTOff": "0,1,2,3"
1334 },
1335 {
1336 "EventCode": "0xB7, 0xBB",
1337 "MSRValue": "0x01001c0800 ",
1338 "Counter": "0,1,2,3",
1339 "UMask": "0x1",
1340 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.SNOOP_NOT_NEEDED",
1341 "MSRIndex": "0x1a6,0x1a7",
1342 "SampleAfterValue": "100003",
1343 "BriefDescription": "Counts streaming stores that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1344 "Offcore": "1",
1345 "CounterHTOff": "0,1,2,3"
1346 },
1347 {
1348 "EventCode": "0xB7, 0xBB",
1349 "MSRValue": "0x00801c0800 ",
1350 "Counter": "0,1,2,3",
1351 "UMask": "0x1",
1352 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.SNOOP_NONE",
1353 "MSRIndex": "0x1a6,0x1a7",
1354 "SampleAfterValue": "100003",
1355 "BriefDescription": "STREAMING_STORES & L3_HIT & SNOOP_NONE",
1356 "Offcore": "1",
1357 "CounterHTOff": "0,1,2,3"
1358 },
1359 {
1360 "EventCode": "0xB7, 0xBB",
1361 "MSRValue": "0x00401c0800 ",
1362 "Counter": "0,1,2,3",
1363 "UMask": "0x1",
1364 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.SPL_HIT",
1365 "MSRIndex": "0x1a6,0x1a7",
1366 "SampleAfterValue": "100003",
1367 "BriefDescription": "STREAMING_STORES & L3_HIT & SPL_HIT",
1368 "Offcore": "1",
1369 "CounterHTOff": "0,1,2,3"
1370 },
1371 {
1372 "EventCode": "0xB7, 0xBB",
1373 "MSRValue": "0x3fc0100800 ",
1374 "Counter": "0,1,2,3",
1375 "UMask": "0x1",
1376 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.ANY_SNOOP",
1377 "MSRIndex": "0x1a6,0x1a7",
1378 "SampleAfterValue": "100003",
1379 "BriefDescription": "STREAMING_STORES & L3_HIT_S & ANY_SNOOP",
1380 "Offcore": "1",
1381 "CounterHTOff": "0,1,2,3"
1382 },
1383 {
1384 "EventCode": "0xB7, 0xBB",
1385 "MSRValue": "0x1000100800 ",
1386 "Counter": "0,1,2,3",
1387 "UMask": "0x1",
1388 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.SNOOP_HITM",
1389 "MSRIndex": "0x1a6,0x1a7",
1390 "SampleAfterValue": "100003",
1391 "BriefDescription": "STREAMING_STORES & L3_HIT_S & SNOOP_HITM",
1392 "Offcore": "1",
1393 "CounterHTOff": "0,1,2,3"
1394 },
1395 {
1396 "EventCode": "0xB7, 0xBB",
1397 "MSRValue": "0x0400100800 ",
1398 "Counter": "0,1,2,3",
1399 "UMask": "0x1",
1400 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.SNOOP_HIT_NO_FWD",
1401 "MSRIndex": "0x1a6,0x1a7",
1402 "SampleAfterValue": "100003",
1403 "BriefDescription": "STREAMING_STORES & L3_HIT_S & SNOOP_HIT_NO_FWD",
1404 "Offcore": "1",
1405 "CounterHTOff": "0,1,2,3"
1406 },
1407 {
1408 "EventCode": "0xB7, 0xBB",
1409 "MSRValue": "0x0200100800 ",
1410 "Counter": "0,1,2,3",
1411 "UMask": "0x1",
1412 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.SNOOP_MISS",
1413 "MSRIndex": "0x1a6,0x1a7",
1414 "SampleAfterValue": "100003",
1415 "BriefDescription": "STREAMING_STORES & L3_HIT_S & SNOOP_MISS",
1416 "Offcore": "1",
1417 "CounterHTOff": "0,1,2,3"
1418 },
1419 {
1420 "EventCode": "0xB7, 0xBB",
1421 "MSRValue": "0x0100100800 ",
1422 "Counter": "0,1,2,3",
1423 "UMask": "0x1",
1424 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.SNOOP_NOT_NEEDED",
1425 "MSRIndex": "0x1a6,0x1a7",
1426 "SampleAfterValue": "100003",
1427 "BriefDescription": "STREAMING_STORES & L3_HIT_S & SNOOP_NOT_NEEDED",
1428 "Offcore": "1",
1429 "CounterHTOff": "0,1,2,3"
1430 },
1431 {
1432 "EventCode": "0xB7, 0xBB",
1433 "MSRValue": "0x0080100800 ",
1434 "Counter": "0,1,2,3",
1435 "UMask": "0x1",
1436 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.SNOOP_NONE",
1437 "MSRIndex": "0x1a6,0x1a7",
1438 "SampleAfterValue": "100003",
1439 "BriefDescription": "STREAMING_STORES & L3_HIT_S & SNOOP_NONE",
1440 "Offcore": "1",
1441 "CounterHTOff": "0,1,2,3"
1442 },
1443 {
1444 "EventCode": "0xB7, 0xBB",
1445 "MSRValue": "0x0040100800 ",
1446 "Counter": "0,1,2,3",
1447 "UMask": "0x1",
1448 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.SPL_HIT",
1449 "MSRIndex": "0x1a6,0x1a7",
1450 "SampleAfterValue": "100003",
1451 "BriefDescription": "STREAMING_STORES & L3_HIT_S & SPL_HIT",
1452 "Offcore": "1",
1453 "CounterHTOff": "0,1,2,3"
1454 },
1455 {
1456 "EventCode": "0xB7, 0xBB",
1457 "MSRValue": "0x3fc0080800 ",
1458 "Counter": "0,1,2,3",
1459 "UMask": "0x1",
1460 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.ANY_SNOOP",
1461 "MSRIndex": "0x1a6,0x1a7",
1462 "SampleAfterValue": "100003",
1463 "BriefDescription": "STREAMING_STORES & L3_HIT_E & ANY_SNOOP",
1464 "Offcore": "1",
1465 "CounterHTOff": "0,1,2,3"
1466 },
1467 {
1468 "EventCode": "0xB7, 0xBB",
1469 "MSRValue": "0x1000080800 ",
1470 "Counter": "0,1,2,3",
1471 "UMask": "0x1",
1472 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.SNOOP_HITM",
1473 "MSRIndex": "0x1a6,0x1a7",
1474 "SampleAfterValue": "100003",
1475 "BriefDescription": "STREAMING_STORES & L3_HIT_E & SNOOP_HITM",
1476 "Offcore": "1",
1477 "CounterHTOff": "0,1,2,3"
1478 },
1479 {
1480 "EventCode": "0xB7, 0xBB",
1481 "MSRValue": "0x0400080800 ",
1482 "Counter": "0,1,2,3",
1483 "UMask": "0x1",
1484 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.SNOOP_HIT_NO_FWD",
1485 "MSRIndex": "0x1a6,0x1a7",
1486 "SampleAfterValue": "100003",
1487 "BriefDescription": "STREAMING_STORES & L3_HIT_E & SNOOP_HIT_NO_FWD",
1488 "Offcore": "1",
1489 "CounterHTOff": "0,1,2,3"
1490 },
1491 {
1492 "EventCode": "0xB7, 0xBB",
1493 "MSRValue": "0x0200080800 ",
1494 "Counter": "0,1,2,3",
1495 "UMask": "0x1",
1496 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.SNOOP_MISS",
1497 "MSRIndex": "0x1a6,0x1a7",
1498 "SampleAfterValue": "100003",
1499 "BriefDescription": "STREAMING_STORES & L3_HIT_E & SNOOP_MISS",
1500 "Offcore": "1",
1501 "CounterHTOff": "0,1,2,3"
1502 },
1503 {
1504 "EventCode": "0xB7, 0xBB",
1505 "MSRValue": "0x0100080800 ",
1506 "Counter": "0,1,2,3",
1507 "UMask": "0x1",
1508 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.SNOOP_NOT_NEEDED",
1509 "MSRIndex": "0x1a6,0x1a7",
1510 "SampleAfterValue": "100003",
1511 "BriefDescription": "STREAMING_STORES & L3_HIT_E & SNOOP_NOT_NEEDED",
1512 "Offcore": "1",
1513 "CounterHTOff": "0,1,2,3"
1514 },
1515 {
1516 "EventCode": "0xB7, 0xBB",
1517 "MSRValue": "0x0080080800 ",
1518 "Counter": "0,1,2,3",
1519 "UMask": "0x1",
1520 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.SNOOP_NONE",
1521 "MSRIndex": "0x1a6,0x1a7",
1522 "SampleAfterValue": "100003",
1523 "BriefDescription": "STREAMING_STORES & L3_HIT_E & SNOOP_NONE",
1524 "Offcore": "1",
1525 "CounterHTOff": "0,1,2,3"
1526 },
1527 {
1528 "EventCode": "0xB7, 0xBB",
1529 "MSRValue": "0x0040080800 ",
1530 "Counter": "0,1,2,3",
1531 "UMask": "0x1",
1532 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.SPL_HIT",
1533 "MSRIndex": "0x1a6,0x1a7",
1534 "SampleAfterValue": "100003",
1535 "BriefDescription": "STREAMING_STORES & L3_HIT_E & SPL_HIT",
1536 "Offcore": "1",
1537 "CounterHTOff": "0,1,2,3"
1538 },
1539 {
1540 "EventCode": "0xB7, 0xBB",
1541 "MSRValue": "0x3fc0040800 ",
1542 "Counter": "0,1,2,3",
1543 "UMask": "0x1",
1544 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.ANY_SNOOP",
1545 "MSRIndex": "0x1a6,0x1a7",
1546 "SampleAfterValue": "100003",
1547 "BriefDescription": "STREAMING_STORES & L3_HIT_M & ANY_SNOOP",
1548 "Offcore": "1",
1549 "CounterHTOff": "0,1,2,3"
1550 },
1551 {
1552 "EventCode": "0xB7, 0xBB",
1553 "MSRValue": "0x1000040800 ",
1554 "Counter": "0,1,2,3",
1555 "UMask": "0x1",
1556 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.SNOOP_HITM",
1557 "MSRIndex": "0x1a6,0x1a7",
1558 "SampleAfterValue": "100003",
1559 "BriefDescription": "STREAMING_STORES & L3_HIT_M & SNOOP_HITM",
1560 "Offcore": "1",
1561 "CounterHTOff": "0,1,2,3"
1562 },
1563 {
1564 "EventCode": "0xB7, 0xBB",
1565 "MSRValue": "0x0400040800 ",
1566 "Counter": "0,1,2,3",
1567 "UMask": "0x1",
1568 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.SNOOP_HIT_NO_FWD",
1569 "MSRIndex": "0x1a6,0x1a7",
1570 "SampleAfterValue": "100003",
1571 "BriefDescription": "STREAMING_STORES & L3_HIT_M & SNOOP_HIT_NO_FWD",
1572 "Offcore": "1",
1573 "CounterHTOff": "0,1,2,3"
1574 },
1575 {
1576 "EventCode": "0xB7, 0xBB",
1577 "MSRValue": "0x0200040800 ",
1578 "Counter": "0,1,2,3",
1579 "UMask": "0x1",
1580 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.SNOOP_MISS",
1581 "MSRIndex": "0x1a6,0x1a7",
1582 "SampleAfterValue": "100003",
1583 "BriefDescription": "STREAMING_STORES & L3_HIT_M & SNOOP_MISS",
1584 "Offcore": "1",
1585 "CounterHTOff": "0,1,2,3"
1586 },
1587 {
1588 "EventCode": "0xB7, 0xBB",
1589 "MSRValue": "0x0100040800 ",
1590 "Counter": "0,1,2,3",
1591 "UMask": "0x1",
1592 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.SNOOP_NOT_NEEDED",
1593 "MSRIndex": "0x1a6,0x1a7",
1594 "SampleAfterValue": "100003",
1595 "BriefDescription": "STREAMING_STORES & L3_HIT_M & SNOOP_NOT_NEEDED",
1596 "Offcore": "1",
1597 "CounterHTOff": "0,1,2,3"
1598 },
1599 {
1600 "EventCode": "0xB7, 0xBB",
1601 "MSRValue": "0x0080040800 ",
1602 "Counter": "0,1,2,3",
1603 "UMask": "0x1",
1604 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.SNOOP_NONE",
1605 "MSRIndex": "0x1a6,0x1a7",
1606 "SampleAfterValue": "100003",
1607 "BriefDescription": "STREAMING_STORES & L3_HIT_M & SNOOP_NONE",
1608 "Offcore": "1",
1609 "CounterHTOff": "0,1,2,3"
1610 },
1611 {
1612 "EventCode": "0xB7, 0xBB",
1613 "MSRValue": "0x0040040800 ",
1614 "Counter": "0,1,2,3",
1615 "UMask": "0x1",
1616 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.SPL_HIT",
1617 "MSRIndex": "0x1a6,0x1a7",
1618 "SampleAfterValue": "100003",
1619 "BriefDescription": "STREAMING_STORES & L3_HIT_M & SPL_HIT",
1620 "Offcore": "1",
1621 "CounterHTOff": "0,1,2,3"
1622 },
1623 {
1624 "EventCode": "0xB7, 0xBB",
1625 "MSRValue": "0x3fc0020800 ",
1626 "Counter": "0,1,2,3",
1627 "UMask": "0x1",
1628 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.ANY_SNOOP",
1629 "MSRIndex": "0x1a6,0x1a7",
1630 "SampleAfterValue": "100003",
1631 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & ANY_SNOOP",
1632 "Offcore": "1",
1633 "CounterHTOff": "0,1,2,3"
1634 },
1635 {
1636 "EventCode": "0xB7, 0xBB",
1637 "MSRValue": "0x1000020800 ",
1638 "Counter": "0,1,2,3",
1639 "UMask": "0x1",
1640 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.SNOOP_HITM",
1641 "MSRIndex": "0x1a6,0x1a7",
1642 "SampleAfterValue": "100003",
1643 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & SNOOP_HITM",
1644 "Offcore": "1",
1645 "CounterHTOff": "0,1,2,3"
1646 },
1647 {
1648 "EventCode": "0xB7, 0xBB",
1649 "MSRValue": "0x0400020800 ",
1650 "Counter": "0,1,2,3",
1651 "UMask": "0x1",
1652 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
1653 "MSRIndex": "0x1a6,0x1a7",
1654 "SampleAfterValue": "100003",
1655 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
1656 "Offcore": "1",
1657 "CounterHTOff": "0,1,2,3"
1658 },
1659 {
1660 "EventCode": "0xB7, 0xBB",
1661 "MSRValue": "0x0200020800 ",
1662 "Counter": "0,1,2,3",
1663 "UMask": "0x1",
1664 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.SNOOP_MISS",
1665 "MSRIndex": "0x1a6,0x1a7",
1666 "SampleAfterValue": "100003",
1667 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & SNOOP_MISS",
1668 "Offcore": "1",
1669 "CounterHTOff": "0,1,2,3"
1670 },
1671 {
1672 "EventCode": "0xB7, 0xBB",
1673 "MSRValue": "0x0100020800 ",
1674 "Counter": "0,1,2,3",
1675 "UMask": "0x1",
1676 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
1677 "MSRIndex": "0x1a6,0x1a7",
1678 "SampleAfterValue": "100003",
1679 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
1680 "Offcore": "1",
1681 "CounterHTOff": "0,1,2,3"
1682 },
1683 {
1684 "EventCode": "0xB7, 0xBB",
1685 "MSRValue": "0x0080020800 ",
1686 "Counter": "0,1,2,3",
1687 "UMask": "0x1",
1688 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.SNOOP_NONE",
1689 "MSRIndex": "0x1a6,0x1a7",
1690 "SampleAfterValue": "100003",
1691 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & SNOOP_NONE",
1692 "Offcore": "1",
1693 "CounterHTOff": "0,1,2,3"
1694 },
1695 {
1696 "EventCode": "0xB7, 0xBB",
1697 "MSRValue": "0x0040020800 ",
1698 "Counter": "0,1,2,3",
1699 "UMask": "0x1",
1700 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.SPL_HIT",
1701 "MSRIndex": "0x1a6,0x1a7",
1702 "SampleAfterValue": "100003",
1703 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & SPL_HIT",
1704 "Offcore": "1",
1705 "CounterHTOff": "0,1,2,3"
1706 },
1707 {
1708 "EventCode": "0xB7, 0xBB",
1709 "MSRValue": "0x0000010800 ",
1710 "Counter": "0,1,2,3",
1711 "UMask": "0x1",
1712 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.ANY_RESPONSE",
1713 "MSRIndex": "0x1a6,0x1a7",
1714 "SampleAfterValue": "100003",
1715 "BriefDescription": "Counts streaming stores that have any response type.",
1716 "Offcore": "1",
1717 "CounterHTOff": "0,1,2,3"
1718 },
1719 {
1720 "EventCode": "0xB7, 0xBB",
1721 "MSRValue": "0x3fc0400100 ",
1722 "Counter": "0,1,2,3",
1723 "UMask": "0x1",
1724 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.ANY_SNOOP",
1725 "MSRIndex": "0x1a6,0x1a7",
1726 "SampleAfterValue": "100003",
1727 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & ANY_SNOOP",
1728 "Offcore": "1",
1729 "CounterHTOff": "0,1,2,3"
1730 },
1731 {
1732 "EventCode": "0xB7, 0xBB",
1733 "MSRValue": "0x1000400100 ",
1734 "Counter": "0,1,2,3",
1735 "UMask": "0x1",
1736 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.SNOOP_HITM",
1737 "MSRIndex": "0x1a6,0x1a7",
1738 "SampleAfterValue": "100003",
1739 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & SNOOP_HITM",
1740 "Offcore": "1",
1741 "CounterHTOff": "0,1,2,3"
1742 },
1743 {
1744 "EventCode": "0xB7, 0xBB",
1745 "MSRValue": "0x0400400100 ",
1746 "Counter": "0,1,2,3",
1747 "UMask": "0x1",
1748 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.SNOOP_HIT_NO_FWD",
1749 "MSRIndex": "0x1a6,0x1a7",
1750 "SampleAfterValue": "100003",
1751 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & SNOOP_HIT_NO_FWD",
1752 "Offcore": "1",
1753 "CounterHTOff": "0,1,2,3"
1754 },
1755 {
1756 "EventCode": "0xB7, 0xBB",
1757 "MSRValue": "0x0200400100 ",
1758 "Counter": "0,1,2,3",
1759 "UMask": "0x1",
1760 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.SNOOP_MISS",
1761 "MSRIndex": "0x1a6,0x1a7",
1762 "SampleAfterValue": "100003",
1763 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & SNOOP_MISS",
1764 "Offcore": "1",
1765 "CounterHTOff": "0,1,2,3"
1766 },
1767 {
1768 "EventCode": "0xB7, 0xBB",
1769 "MSRValue": "0x0100400100 ",
1770 "Counter": "0,1,2,3",
1771 "UMask": "0x1",
1772 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.SNOOP_NOT_NEEDED",
1773 "MSRIndex": "0x1a6,0x1a7",
1774 "SampleAfterValue": "100003",
1775 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & SNOOP_NOT_NEEDED",
1776 "Offcore": "1",
1777 "CounterHTOff": "0,1,2,3"
1778 },
1779 {
1780 "EventCode": "0xB7, 0xBB",
1781 "MSRValue": "0x0080400100 ",
1782 "Counter": "0,1,2,3",
1783 "UMask": "0x1",
1784 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.SNOOP_NONE",
1785 "MSRIndex": "0x1a6,0x1a7",
1786 "SampleAfterValue": "100003",
1787 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & SNOOP_NONE",
1788 "Offcore": "1",
1789 "CounterHTOff": "0,1,2,3"
1790 },
1791 {
1792 "EventCode": "0xB7, 0xBB",
1793 "MSRValue": "0x0040400100 ",
1794 "Counter": "0,1,2,3",
1795 "UMask": "0x1",
1796 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.SPL_HIT",
1797 "MSRIndex": "0x1a6,0x1a7",
1798 "SampleAfterValue": "100003",
1799 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & SPL_HIT",
1800 "Offcore": "1",
1801 "CounterHTOff": "0,1,2,3"
1802 },
1803 {
1804 "EventCode": "0xB7, 0xBB",
1805 "MSRValue": "0x3fc01c0100 ",
1806 "Counter": "0,1,2,3",
1807 "UMask": "0x1",
1808 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.ANY_SNOOP",
1809 "MSRIndex": "0x1a6,0x1a7",
1810 "SampleAfterValue": "100003",
1811 "BriefDescription": "PF_L3_RFO & L3_HIT & ANY_SNOOP",
1812 "Offcore": "1",
1813 "CounterHTOff": "0,1,2,3"
1814 },
1815 {
1816 "EventCode": "0xB7, 0xBB",
1817 "MSRValue": "0x10001c0100 ",
1818 "Counter": "0,1,2,3",
1819 "UMask": "0x1",
1820 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_HITM",
1821 "MSRIndex": "0x1a6,0x1a7",
1822 "SampleAfterValue": "100003",
1823 "BriefDescription": "PF_L3_RFO & L3_HIT & SNOOP_HITM",
1824 "Offcore": "1",
1825 "CounterHTOff": "0,1,2,3"
1826 },
1827 {
1828 "EventCode": "0xB7, 0xBB",
1829 "MSRValue": "0x04001c0100 ",
1830 "Counter": "0,1,2,3",
1831 "UMask": "0x1",
1832 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_HIT_NO_FWD",
1833 "MSRIndex": "0x1a6,0x1a7",
1834 "SampleAfterValue": "100003",
1835 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
1836 "Offcore": "1",
1837 "CounterHTOff": "0,1,2,3"
1838 },
1839 {
1840 "EventCode": "0xB7, 0xBB",
1841 "MSRValue": "0x02001c0100 ",
1842 "Counter": "0,1,2,3",
1843 "UMask": "0x1",
1844 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_MISS",
1845 "MSRIndex": "0x1a6,0x1a7",
1846 "SampleAfterValue": "100003",
1847 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 and the snoops sent to sibling cores return clean response.",
1848 "Offcore": "1",
1849 "CounterHTOff": "0,1,2,3"
1850 },
1851 {
1852 "EventCode": "0xB7, 0xBB",
1853 "MSRValue": "0x01001c0100 ",
1854 "Counter": "0,1,2,3",
1855 "UMask": "0x1",
1856 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_NOT_NEEDED",
1857 "MSRIndex": "0x1a6,0x1a7",
1858 "SampleAfterValue": "100003",
1859 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
1860 "Offcore": "1",
1861 "CounterHTOff": "0,1,2,3"
1862 },
1863 {
1864 "EventCode": "0xB7, 0xBB",
1865 "MSRValue": "0x00801c0100 ",
1866 "Counter": "0,1,2,3",
1867 "UMask": "0x1",
1868 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_NONE",
1869 "MSRIndex": "0x1a6,0x1a7",
1870 "SampleAfterValue": "100003",
1871 "BriefDescription": "PF_L3_RFO & L3_HIT & SNOOP_NONE",
1872 "Offcore": "1",
1873 "CounterHTOff": "0,1,2,3"
1874 },
1875 {
1876 "EventCode": "0xB7, 0xBB",
1877 "MSRValue": "0x00401c0100 ",
1878 "Counter": "0,1,2,3",
1879 "UMask": "0x1",
1880 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SPL_HIT",
1881 "MSRIndex": "0x1a6,0x1a7",
1882 "SampleAfterValue": "100003",
1883 "BriefDescription": "PF_L3_RFO & L3_HIT & SPL_HIT",
1884 "Offcore": "1",
1885 "CounterHTOff": "0,1,2,3"
1886 },
1887 {
1888 "EventCode": "0xB7, 0xBB",
1889 "MSRValue": "0x3fc0100100 ",
1890 "Counter": "0,1,2,3",
1891 "UMask": "0x1",
1892 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.ANY_SNOOP",
1893 "MSRIndex": "0x1a6,0x1a7",
1894 "SampleAfterValue": "100003",
1895 "BriefDescription": "PF_L3_RFO & L3_HIT_S & ANY_SNOOP",
1896 "Offcore": "1",
1897 "CounterHTOff": "0,1,2,3"
1898 },
1899 {
1900 "EventCode": "0xB7, 0xBB",
1901 "MSRValue": "0x1000100100 ",
1902 "Counter": "0,1,2,3",
1903 "UMask": "0x1",
1904 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.SNOOP_HITM",
1905 "MSRIndex": "0x1a6,0x1a7",
1906 "SampleAfterValue": "100003",
1907 "BriefDescription": "PF_L3_RFO & L3_HIT_S & SNOOP_HITM",
1908 "Offcore": "1",
1909 "CounterHTOff": "0,1,2,3"
1910 },
1911 {
1912 "EventCode": "0xB7, 0xBB",
1913 "MSRValue": "0x0400100100 ",
1914 "Counter": "0,1,2,3",
1915 "UMask": "0x1",
1916 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.SNOOP_HIT_NO_FWD",
1917 "MSRIndex": "0x1a6,0x1a7",
1918 "SampleAfterValue": "100003",
1919 "BriefDescription": "PF_L3_RFO & L3_HIT_S & SNOOP_HIT_NO_FWD",
1920 "Offcore": "1",
1921 "CounterHTOff": "0,1,2,3"
1922 },
1923 {
1924 "EventCode": "0xB7, 0xBB",
1925 "MSRValue": "0x0200100100 ",
1926 "Counter": "0,1,2,3",
1927 "UMask": "0x1",
1928 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.SNOOP_MISS",
1929 "MSRIndex": "0x1a6,0x1a7",
1930 "SampleAfterValue": "100003",
1931 "BriefDescription": "PF_L3_RFO & L3_HIT_S & SNOOP_MISS",
1932 "Offcore": "1",
1933 "CounterHTOff": "0,1,2,3"
1934 },
1935 {
1936 "EventCode": "0xB7, 0xBB",
1937 "MSRValue": "0x0100100100 ",
1938 "Counter": "0,1,2,3",
1939 "UMask": "0x1",
1940 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.SNOOP_NOT_NEEDED",
1941 "MSRIndex": "0x1a6,0x1a7",
1942 "SampleAfterValue": "100003",
1943 "BriefDescription": "PF_L3_RFO & L3_HIT_S & SNOOP_NOT_NEEDED",
1944 "Offcore": "1",
1945 "CounterHTOff": "0,1,2,3"
1946 },
1947 {
1948 "EventCode": "0xB7, 0xBB",
1949 "MSRValue": "0x0080100100 ",
1950 "Counter": "0,1,2,3",
1951 "UMask": "0x1",
1952 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.SNOOP_NONE",
1953 "MSRIndex": "0x1a6,0x1a7",
1954 "SampleAfterValue": "100003",
1955 "BriefDescription": "PF_L3_RFO & L3_HIT_S & SNOOP_NONE",
1956 "Offcore": "1",
1957 "CounterHTOff": "0,1,2,3"
1958 },
1959 {
1960 "EventCode": "0xB7, 0xBB",
1961 "MSRValue": "0x0040100100 ",
1962 "Counter": "0,1,2,3",
1963 "UMask": "0x1",
1964 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.SPL_HIT",
1965 "MSRIndex": "0x1a6,0x1a7",
1966 "SampleAfterValue": "100003",
1967 "BriefDescription": "PF_L3_RFO & L3_HIT_S & SPL_HIT",
1968 "Offcore": "1",
1969 "CounterHTOff": "0,1,2,3"
1970 },
1971 {
1972 "EventCode": "0xB7, 0xBB",
1973 "MSRValue": "0x3fc0080100 ",
1974 "Counter": "0,1,2,3",
1975 "UMask": "0x1",
1976 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.ANY_SNOOP",
1977 "MSRIndex": "0x1a6,0x1a7",
1978 "SampleAfterValue": "100003",
1979 "BriefDescription": "PF_L3_RFO & L3_HIT_E & ANY_SNOOP",
1980 "Offcore": "1",
1981 "CounterHTOff": "0,1,2,3"
1982 },
1983 {
1984 "EventCode": "0xB7, 0xBB",
1985 "MSRValue": "0x1000080100 ",
1986 "Counter": "0,1,2,3",
1987 "UMask": "0x1",
1988 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.SNOOP_HITM",
1989 "MSRIndex": "0x1a6,0x1a7",
1990 "SampleAfterValue": "100003",
1991 "BriefDescription": "PF_L3_RFO & L3_HIT_E & SNOOP_HITM",
1992 "Offcore": "1",
1993 "CounterHTOff": "0,1,2,3"
1994 },
1995 {
1996 "EventCode": "0xB7, 0xBB",
1997 "MSRValue": "0x0400080100 ",
1998 "Counter": "0,1,2,3",
1999 "UMask": "0x1",
2000 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.SNOOP_HIT_NO_FWD",
2001 "MSRIndex": "0x1a6,0x1a7",
2002 "SampleAfterValue": "100003",
2003 "BriefDescription": "PF_L3_RFO & L3_HIT_E & SNOOP_HIT_NO_FWD",
2004 "Offcore": "1",
2005 "CounterHTOff": "0,1,2,3"
2006 },
2007 {
2008 "EventCode": "0xB7, 0xBB",
2009 "MSRValue": "0x0200080100 ",
2010 "Counter": "0,1,2,3",
2011 "UMask": "0x1",
2012 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.SNOOP_MISS",
2013 "MSRIndex": "0x1a6,0x1a7",
2014 "SampleAfterValue": "100003",
2015 "BriefDescription": "PF_L3_RFO & L3_HIT_E & SNOOP_MISS",
2016 "Offcore": "1",
2017 "CounterHTOff": "0,1,2,3"
2018 },
2019 {
2020 "EventCode": "0xB7, 0xBB",
2021 "MSRValue": "0x0100080100 ",
2022 "Counter": "0,1,2,3",
2023 "UMask": "0x1",
2024 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.SNOOP_NOT_NEEDED",
2025 "MSRIndex": "0x1a6,0x1a7",
2026 "SampleAfterValue": "100003",
2027 "BriefDescription": "PF_L3_RFO & L3_HIT_E & SNOOP_NOT_NEEDED",
2028 "Offcore": "1",
2029 "CounterHTOff": "0,1,2,3"
2030 },
2031 {
2032 "EventCode": "0xB7, 0xBB",
2033 "MSRValue": "0x0080080100 ",
2034 "Counter": "0,1,2,3",
2035 "UMask": "0x1",
2036 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.SNOOP_NONE",
2037 "MSRIndex": "0x1a6,0x1a7",
2038 "SampleAfterValue": "100003",
2039 "BriefDescription": "PF_L3_RFO & L3_HIT_E & SNOOP_NONE",
2040 "Offcore": "1",
2041 "CounterHTOff": "0,1,2,3"
2042 },
2043 {
2044 "EventCode": "0xB7, 0xBB",
2045 "MSRValue": "0x0040080100 ",
2046 "Counter": "0,1,2,3",
2047 "UMask": "0x1",
2048 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.SPL_HIT",
2049 "MSRIndex": "0x1a6,0x1a7",
2050 "SampleAfterValue": "100003",
2051 "BriefDescription": "PF_L3_RFO & L3_HIT_E & SPL_HIT",
2052 "Offcore": "1",
2053 "CounterHTOff": "0,1,2,3"
2054 },
2055 {
2056 "EventCode": "0xB7, 0xBB",
2057 "MSRValue": "0x3fc0040100 ",
2058 "Counter": "0,1,2,3",
2059 "UMask": "0x1",
2060 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.ANY_SNOOP",
2061 "MSRIndex": "0x1a6,0x1a7",
2062 "SampleAfterValue": "100003",
2063 "BriefDescription": "PF_L3_RFO & L3_HIT_M & ANY_SNOOP",
2064 "Offcore": "1",
2065 "CounterHTOff": "0,1,2,3"
2066 },
2067 {
2068 "EventCode": "0xB7, 0xBB",
2069 "MSRValue": "0x1000040100 ",
2070 "Counter": "0,1,2,3",
2071 "UMask": "0x1",
2072 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.SNOOP_HITM",
2073 "MSRIndex": "0x1a6,0x1a7",
2074 "SampleAfterValue": "100003",
2075 "BriefDescription": "PF_L3_RFO & L3_HIT_M & SNOOP_HITM",
2076 "Offcore": "1",
2077 "CounterHTOff": "0,1,2,3"
2078 },
2079 {
2080 "EventCode": "0xB7, 0xBB",
2081 "MSRValue": "0x0400040100 ",
2082 "Counter": "0,1,2,3",
2083 "UMask": "0x1",
2084 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.SNOOP_HIT_NO_FWD",
2085 "MSRIndex": "0x1a6,0x1a7",
2086 "SampleAfterValue": "100003",
2087 "BriefDescription": "PF_L3_RFO & L3_HIT_M & SNOOP_HIT_NO_FWD",
2088 "Offcore": "1",
2089 "CounterHTOff": "0,1,2,3"
2090 },
2091 {
2092 "EventCode": "0xB7, 0xBB",
2093 "MSRValue": "0x0200040100 ",
2094 "Counter": "0,1,2,3",
2095 "UMask": "0x1",
2096 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.SNOOP_MISS",
2097 "MSRIndex": "0x1a6,0x1a7",
2098 "SampleAfterValue": "100003",
2099 "BriefDescription": "PF_L3_RFO & L3_HIT_M & SNOOP_MISS",
2100 "Offcore": "1",
2101 "CounterHTOff": "0,1,2,3"
2102 },
2103 {
2104 "EventCode": "0xB7, 0xBB",
2105 "MSRValue": "0x0100040100 ",
2106 "Counter": "0,1,2,3",
2107 "UMask": "0x1",
2108 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.SNOOP_NOT_NEEDED",
2109 "MSRIndex": "0x1a6,0x1a7",
2110 "SampleAfterValue": "100003",
2111 "BriefDescription": "PF_L3_RFO & L3_HIT_M & SNOOP_NOT_NEEDED",
2112 "Offcore": "1",
2113 "CounterHTOff": "0,1,2,3"
2114 },
2115 {
2116 "EventCode": "0xB7, 0xBB",
2117 "MSRValue": "0x0080040100 ",
2118 "Counter": "0,1,2,3",
2119 "UMask": "0x1",
2120 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.SNOOP_NONE",
2121 "MSRIndex": "0x1a6,0x1a7",
2122 "SampleAfterValue": "100003",
2123 "BriefDescription": "PF_L3_RFO & L3_HIT_M & SNOOP_NONE",
2124 "Offcore": "1",
2125 "CounterHTOff": "0,1,2,3"
2126 },
2127 {
2128 "EventCode": "0xB7, 0xBB",
2129 "MSRValue": "0x0040040100 ",
2130 "Counter": "0,1,2,3",
2131 "UMask": "0x1",
2132 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.SPL_HIT",
2133 "MSRIndex": "0x1a6,0x1a7",
2134 "SampleAfterValue": "100003",
2135 "BriefDescription": "PF_L3_RFO & L3_HIT_M & SPL_HIT",
2136 "Offcore": "1",
2137 "CounterHTOff": "0,1,2,3"
2138 },
2139 {
2140 "EventCode": "0xB7, 0xBB",
2141 "MSRValue": "0x3fc0020100 ",
2142 "Counter": "0,1,2,3",
2143 "UMask": "0x1",
2144 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.ANY_SNOOP",
2145 "MSRIndex": "0x1a6,0x1a7",
2146 "SampleAfterValue": "100003",
2147 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & ANY_SNOOP",
2148 "Offcore": "1",
2149 "CounterHTOff": "0,1,2,3"
2150 },
2151 {
2152 "EventCode": "0xB7, 0xBB",
2153 "MSRValue": "0x1000020100 ",
2154 "Counter": "0,1,2,3",
2155 "UMask": "0x1",
2156 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_HITM",
2157 "MSRIndex": "0x1a6,0x1a7",
2158 "SampleAfterValue": "100003",
2159 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_HITM",
2160 "Offcore": "1",
2161 "CounterHTOff": "0,1,2,3"
2162 },
2163 {
2164 "EventCode": "0xB7, 0xBB",
2165 "MSRValue": "0x0400020100 ",
2166 "Counter": "0,1,2,3",
2167 "UMask": "0x1",
2168 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2169 "MSRIndex": "0x1a6,0x1a7",
2170 "SampleAfterValue": "100003",
2171 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2172 "Offcore": "1",
2173 "CounterHTOff": "0,1,2,3"
2174 },
2175 {
2176 "EventCode": "0xB7, 0xBB",
2177 "MSRValue": "0x0200020100 ",
2178 "Counter": "0,1,2,3",
2179 "UMask": "0x1",
2180 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_MISS",
2181 "MSRIndex": "0x1a6,0x1a7",
2182 "SampleAfterValue": "100003",
2183 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_MISS",
2184 "Offcore": "1",
2185 "CounterHTOff": "0,1,2,3"
2186 },
2187 {
2188 "EventCode": "0xB7, 0xBB",
2189 "MSRValue": "0x0100020100 ",
2190 "Counter": "0,1,2,3",
2191 "UMask": "0x1",
2192 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2193 "MSRIndex": "0x1a6,0x1a7",
2194 "SampleAfterValue": "100003",
2195 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2196 "Offcore": "1",
2197 "CounterHTOff": "0,1,2,3"
2198 },
2199 {
2200 "EventCode": "0xB7, 0xBB",
2201 "MSRValue": "0x0080020100 ",
2202 "Counter": "0,1,2,3",
2203 "UMask": "0x1",
2204 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_NONE",
2205 "MSRIndex": "0x1a6,0x1a7",
2206 "SampleAfterValue": "100003",
2207 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_NONE",
2208 "Offcore": "1",
2209 "CounterHTOff": "0,1,2,3"
2210 },
2211 {
2212 "EventCode": "0xB7, 0xBB",
2213 "MSRValue": "0x0040020100 ",
2214 "Counter": "0,1,2,3",
2215 "UMask": "0x1",
2216 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SPL_HIT",
2217 "MSRIndex": "0x1a6,0x1a7",
2218 "SampleAfterValue": "100003",
2219 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SPL_HIT",
2220 "Offcore": "1",
2221 "CounterHTOff": "0,1,2,3"
2222 },
2223 {
2224 "EventCode": "0xB7, 0xBB",
2225 "MSRValue": "0x0000010100 ",
2226 "Counter": "0,1,2,3",
2227 "UMask": "0x1",
2228 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.ANY_RESPONSE",
2229 "MSRIndex": "0x1a6,0x1a7",
2230 "SampleAfterValue": "100003",
2231 "BriefDescription": "Counts all prefetch (that bring data to LLC only) RFOs that have any response type.",
2232 "Offcore": "1",
2233 "CounterHTOff": "0,1,2,3"
2234 },
2235 {
2236 "EventCode": "0xB7, 0xBB",
2237 "MSRValue": "0x3fc0400080 ",
2238 "Counter": "0,1,2,3",
2239 "UMask": "0x1",
2240 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.ANY_SNOOP",
2241 "MSRIndex": "0x1a6,0x1a7",
2242 "SampleAfterValue": "100003",
2243 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & ANY_SNOOP",
2244 "Offcore": "1",
2245 "CounterHTOff": "0,1,2,3"
2246 },
2247 {
2248 "EventCode": "0xB7, 0xBB",
2249 "MSRValue": "0x1000400080 ",
2250 "Counter": "0,1,2,3",
2251 "UMask": "0x1",
2252 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_HITM",
2253 "MSRIndex": "0x1a6,0x1a7",
2254 "SampleAfterValue": "100003",
2255 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_HITM",
2256 "Offcore": "1",
2257 "CounterHTOff": "0,1,2,3"
2258 },
2259 {
2260 "EventCode": "0xB7, 0xBB",
2261 "MSRValue": "0x0400400080 ",
2262 "Counter": "0,1,2,3",
2263 "UMask": "0x1",
2264 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_HIT_NO_FWD",
2265 "MSRIndex": "0x1a6,0x1a7",
2266 "SampleAfterValue": "100003",
2267 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_HIT_NO_FWD",
2268 "Offcore": "1",
2269 "CounterHTOff": "0,1,2,3"
2270 },
2271 {
2272 "EventCode": "0xB7, 0xBB",
2273 "MSRValue": "0x0200400080 ",
2274 "Counter": "0,1,2,3",
2275 "UMask": "0x1",
2276 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_MISS",
2277 "MSRIndex": "0x1a6,0x1a7",
2278 "SampleAfterValue": "100003",
2279 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_MISS",
2280 "Offcore": "1",
2281 "CounterHTOff": "0,1,2,3"
2282 },
2283 {
2284 "EventCode": "0xB7, 0xBB",
2285 "MSRValue": "0x0100400080 ",
2286 "Counter": "0,1,2,3",
2287 "UMask": "0x1",
2288 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_NOT_NEEDED",
2289 "MSRIndex": "0x1a6,0x1a7",
2290 "SampleAfterValue": "100003",
2291 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_NOT_NEEDED",
2292 "Offcore": "1",
2293 "CounterHTOff": "0,1,2,3"
2294 },
2295 {
2296 "EventCode": "0xB7, 0xBB",
2297 "MSRValue": "0x0080400080 ",
2298 "Counter": "0,1,2,3",
2299 "UMask": "0x1",
2300 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_NONE",
2301 "MSRIndex": "0x1a6,0x1a7",
2302 "SampleAfterValue": "100003",
2303 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_NONE",
2304 "Offcore": "1",
2305 "CounterHTOff": "0,1,2,3"
2306 },
2307 {
2308 "EventCode": "0xB7, 0xBB",
2309 "MSRValue": "0x0040400080 ",
2310 "Counter": "0,1,2,3",
2311 "UMask": "0x1",
2312 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.SPL_HIT",
2313 "MSRIndex": "0x1a6,0x1a7",
2314 "SampleAfterValue": "100003",
2315 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & SPL_HIT",
2316 "Offcore": "1",
2317 "CounterHTOff": "0,1,2,3"
2318 },
2319 {
2320 "EventCode": "0xB7, 0xBB",
2321 "MSRValue": "0x3fc01c0080 ",
2322 "Counter": "0,1,2,3",
2323 "UMask": "0x1",
2324 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.ANY_SNOOP",
2325 "MSRIndex": "0x1a6,0x1a7",
2326 "SampleAfterValue": "100003",
2327 "BriefDescription": "PF_L3_DATA_RD & L3_HIT & ANY_SNOOP",
2328 "Offcore": "1",
2329 "CounterHTOff": "0,1,2,3"
2330 },
2331 {
2332 "EventCode": "0xB7, 0xBB",
2333 "MSRValue": "0x10001c0080 ",
2334 "Counter": "0,1,2,3",
2335 "UMask": "0x1",
2336 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_HITM",
2337 "MSRIndex": "0x1a6,0x1a7",
2338 "SampleAfterValue": "100003",
2339 "BriefDescription": "PF_L3_DATA_RD & L3_HIT & SNOOP_HITM",
2340 "Offcore": "1",
2341 "CounterHTOff": "0,1,2,3"
2342 },
2343 {
2344 "EventCode": "0xB7, 0xBB",
2345 "MSRValue": "0x04001c0080 ",
2346 "Counter": "0,1,2,3",
2347 "UMask": "0x1",
2348 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_HIT_NO_FWD",
2349 "MSRIndex": "0x1a6,0x1a7",
2350 "SampleAfterValue": "100003",
2351 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2352 "Offcore": "1",
2353 "CounterHTOff": "0,1,2,3"
2354 },
2355 {
2356 "EventCode": "0xB7, 0xBB",
2357 "MSRValue": "0x02001c0080 ",
2358 "Counter": "0,1,2,3",
2359 "UMask": "0x1",
2360 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_MISS",
2361 "MSRIndex": "0x1a6,0x1a7",
2362 "SampleAfterValue": "100003",
2363 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 and the snoops sent to sibling cores return clean response.",
2364 "Offcore": "1",
2365 "CounterHTOff": "0,1,2,3"
2366 },
2367 {
2368 "EventCode": "0xB7, 0xBB",
2369 "MSRValue": "0x01001c0080 ",
2370 "Counter": "0,1,2,3",
2371 "UMask": "0x1",
2372 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_NOT_NEEDED",
2373 "MSRIndex": "0x1a6,0x1a7",
2374 "SampleAfterValue": "100003",
2375 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2376 "Offcore": "1",
2377 "CounterHTOff": "0,1,2,3"
2378 },
2379 {
2380 "EventCode": "0xB7, 0xBB",
2381 "MSRValue": "0x00801c0080 ",
2382 "Counter": "0,1,2,3",
2383 "UMask": "0x1",
2384 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_NONE",
2385 "MSRIndex": "0x1a6,0x1a7",
2386 "SampleAfterValue": "100003",
2387 "BriefDescription": "PF_L3_DATA_RD & L3_HIT & SNOOP_NONE",
2388 "Offcore": "1",
2389 "CounterHTOff": "0,1,2,3"
2390 },
2391 {
2392 "EventCode": "0xB7, 0xBB",
2393 "MSRValue": "0x00401c0080 ",
2394 "Counter": "0,1,2,3",
2395 "UMask": "0x1",
2396 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SPL_HIT",
2397 "MSRIndex": "0x1a6,0x1a7",
2398 "SampleAfterValue": "100003",
2399 "BriefDescription": "PF_L3_DATA_RD & L3_HIT & SPL_HIT",
2400 "Offcore": "1",
2401 "CounterHTOff": "0,1,2,3"
2402 },
2403 {
2404 "EventCode": "0xB7, 0xBB",
2405 "MSRValue": "0x3fc0100080 ",
2406 "Counter": "0,1,2,3",
2407 "UMask": "0x1",
2408 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.ANY_SNOOP",
2409 "MSRIndex": "0x1a6,0x1a7",
2410 "SampleAfterValue": "100003",
2411 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & ANY_SNOOP",
2412 "Offcore": "1",
2413 "CounterHTOff": "0,1,2,3"
2414 },
2415 {
2416 "EventCode": "0xB7, 0xBB",
2417 "MSRValue": "0x1000100080 ",
2418 "Counter": "0,1,2,3",
2419 "UMask": "0x1",
2420 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.SNOOP_HITM",
2421 "MSRIndex": "0x1a6,0x1a7",
2422 "SampleAfterValue": "100003",
2423 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & SNOOP_HITM",
2424 "Offcore": "1",
2425 "CounterHTOff": "0,1,2,3"
2426 },
2427 {
2428 "EventCode": "0xB7, 0xBB",
2429 "MSRValue": "0x0400100080 ",
2430 "Counter": "0,1,2,3",
2431 "UMask": "0x1",
2432 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.SNOOP_HIT_NO_FWD",
2433 "MSRIndex": "0x1a6,0x1a7",
2434 "SampleAfterValue": "100003",
2435 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & SNOOP_HIT_NO_FWD",
2436 "Offcore": "1",
2437 "CounterHTOff": "0,1,2,3"
2438 },
2439 {
2440 "EventCode": "0xB7, 0xBB",
2441 "MSRValue": "0x0200100080 ",
2442 "Counter": "0,1,2,3",
2443 "UMask": "0x1",
2444 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.SNOOP_MISS",
2445 "MSRIndex": "0x1a6,0x1a7",
2446 "SampleAfterValue": "100003",
2447 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & SNOOP_MISS",
2448 "Offcore": "1",
2449 "CounterHTOff": "0,1,2,3"
2450 },
2451 {
2452 "EventCode": "0xB7, 0xBB",
2453 "MSRValue": "0x0100100080 ",
2454 "Counter": "0,1,2,3",
2455 "UMask": "0x1",
2456 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.SNOOP_NOT_NEEDED",
2457 "MSRIndex": "0x1a6,0x1a7",
2458 "SampleAfterValue": "100003",
2459 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & SNOOP_NOT_NEEDED",
2460 "Offcore": "1",
2461 "CounterHTOff": "0,1,2,3"
2462 },
2463 {
2464 "EventCode": "0xB7, 0xBB",
2465 "MSRValue": "0x0080100080 ",
2466 "Counter": "0,1,2,3",
2467 "UMask": "0x1",
2468 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.SNOOP_NONE",
2469 "MSRIndex": "0x1a6,0x1a7",
2470 "SampleAfterValue": "100003",
2471 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & SNOOP_NONE",
2472 "Offcore": "1",
2473 "CounterHTOff": "0,1,2,3"
2474 },
2475 {
2476 "EventCode": "0xB7, 0xBB",
2477 "MSRValue": "0x0040100080 ",
2478 "Counter": "0,1,2,3",
2479 "UMask": "0x1",
2480 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.SPL_HIT",
2481 "MSRIndex": "0x1a6,0x1a7",
2482 "SampleAfterValue": "100003",
2483 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & SPL_HIT",
2484 "Offcore": "1",
2485 "CounterHTOff": "0,1,2,3"
2486 },
2487 {
2488 "EventCode": "0xB7, 0xBB",
2489 "MSRValue": "0x3fc0080080 ",
2490 "Counter": "0,1,2,3",
2491 "UMask": "0x1",
2492 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.ANY_SNOOP",
2493 "MSRIndex": "0x1a6,0x1a7",
2494 "SampleAfterValue": "100003",
2495 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & ANY_SNOOP",
2496 "Offcore": "1",
2497 "CounterHTOff": "0,1,2,3"
2498 },
2499 {
2500 "EventCode": "0xB7, 0xBB",
2501 "MSRValue": "0x1000080080 ",
2502 "Counter": "0,1,2,3",
2503 "UMask": "0x1",
2504 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.SNOOP_HITM",
2505 "MSRIndex": "0x1a6,0x1a7",
2506 "SampleAfterValue": "100003",
2507 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & SNOOP_HITM",
2508 "Offcore": "1",
2509 "CounterHTOff": "0,1,2,3"
2510 },
2511 {
2512 "EventCode": "0xB7, 0xBB",
2513 "MSRValue": "0x0400080080 ",
2514 "Counter": "0,1,2,3",
2515 "UMask": "0x1",
2516 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.SNOOP_HIT_NO_FWD",
2517 "MSRIndex": "0x1a6,0x1a7",
2518 "SampleAfterValue": "100003",
2519 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & SNOOP_HIT_NO_FWD",
2520 "Offcore": "1",
2521 "CounterHTOff": "0,1,2,3"
2522 },
2523 {
2524 "EventCode": "0xB7, 0xBB",
2525 "MSRValue": "0x0200080080 ",
2526 "Counter": "0,1,2,3",
2527 "UMask": "0x1",
2528 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.SNOOP_MISS",
2529 "MSRIndex": "0x1a6,0x1a7",
2530 "SampleAfterValue": "100003",
2531 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & SNOOP_MISS",
2532 "Offcore": "1",
2533 "CounterHTOff": "0,1,2,3"
2534 },
2535 {
2536 "EventCode": "0xB7, 0xBB",
2537 "MSRValue": "0x0100080080 ",
2538 "Counter": "0,1,2,3",
2539 "UMask": "0x1",
2540 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.SNOOP_NOT_NEEDED",
2541 "MSRIndex": "0x1a6,0x1a7",
2542 "SampleAfterValue": "100003",
2543 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & SNOOP_NOT_NEEDED",
2544 "Offcore": "1",
2545 "CounterHTOff": "0,1,2,3"
2546 },
2547 {
2548 "EventCode": "0xB7, 0xBB",
2549 "MSRValue": "0x0080080080 ",
2550 "Counter": "0,1,2,3",
2551 "UMask": "0x1",
2552 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.SNOOP_NONE",
2553 "MSRIndex": "0x1a6,0x1a7",
2554 "SampleAfterValue": "100003",
2555 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & SNOOP_NONE",
2556 "Offcore": "1",
2557 "CounterHTOff": "0,1,2,3"
2558 },
2559 {
2560 "EventCode": "0xB7, 0xBB",
2561 "MSRValue": "0x0040080080 ",
2562 "Counter": "0,1,2,3",
2563 "UMask": "0x1",
2564 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.SPL_HIT",
2565 "MSRIndex": "0x1a6,0x1a7",
2566 "SampleAfterValue": "100003",
2567 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & SPL_HIT",
2568 "Offcore": "1",
2569 "CounterHTOff": "0,1,2,3"
2570 },
2571 {
2572 "EventCode": "0xB7, 0xBB",
2573 "MSRValue": "0x3fc0040080 ",
2574 "Counter": "0,1,2,3",
2575 "UMask": "0x1",
2576 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.ANY_SNOOP",
2577 "MSRIndex": "0x1a6,0x1a7",
2578 "SampleAfterValue": "100003",
2579 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & ANY_SNOOP",
2580 "Offcore": "1",
2581 "CounterHTOff": "0,1,2,3"
2582 },
2583 {
2584 "EventCode": "0xB7, 0xBB",
2585 "MSRValue": "0x1000040080 ",
2586 "Counter": "0,1,2,3",
2587 "UMask": "0x1",
2588 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.SNOOP_HITM",
2589 "MSRIndex": "0x1a6,0x1a7",
2590 "SampleAfterValue": "100003",
2591 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & SNOOP_HITM",
2592 "Offcore": "1",
2593 "CounterHTOff": "0,1,2,3"
2594 },
2595 {
2596 "EventCode": "0xB7, 0xBB",
2597 "MSRValue": "0x0400040080 ",
2598 "Counter": "0,1,2,3",
2599 "UMask": "0x1",
2600 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.SNOOP_HIT_NO_FWD",
2601 "MSRIndex": "0x1a6,0x1a7",
2602 "SampleAfterValue": "100003",
2603 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & SNOOP_HIT_NO_FWD",
2604 "Offcore": "1",
2605 "CounterHTOff": "0,1,2,3"
2606 },
2607 {
2608 "EventCode": "0xB7, 0xBB",
2609 "MSRValue": "0x0200040080 ",
2610 "Counter": "0,1,2,3",
2611 "UMask": "0x1",
2612 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.SNOOP_MISS",
2613 "MSRIndex": "0x1a6,0x1a7",
2614 "SampleAfterValue": "100003",
2615 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & SNOOP_MISS",
2616 "Offcore": "1",
2617 "CounterHTOff": "0,1,2,3"
2618 },
2619 {
2620 "EventCode": "0xB7, 0xBB",
2621 "MSRValue": "0x0100040080 ",
2622 "Counter": "0,1,2,3",
2623 "UMask": "0x1",
2624 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.SNOOP_NOT_NEEDED",
2625 "MSRIndex": "0x1a6,0x1a7",
2626 "SampleAfterValue": "100003",
2627 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & SNOOP_NOT_NEEDED",
2628 "Offcore": "1",
2629 "CounterHTOff": "0,1,2,3"
2630 },
2631 {
2632 "EventCode": "0xB7, 0xBB",
2633 "MSRValue": "0x0080040080 ",
2634 "Counter": "0,1,2,3",
2635 "UMask": "0x1",
2636 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.SNOOP_NONE",
2637 "MSRIndex": "0x1a6,0x1a7",
2638 "SampleAfterValue": "100003",
2639 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & SNOOP_NONE",
2640 "Offcore": "1",
2641 "CounterHTOff": "0,1,2,3"
2642 },
2643 {
2644 "EventCode": "0xB7, 0xBB",
2645 "MSRValue": "0x0040040080 ",
2646 "Counter": "0,1,2,3",
2647 "UMask": "0x1",
2648 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.SPL_HIT",
2649 "MSRIndex": "0x1a6,0x1a7",
2650 "SampleAfterValue": "100003",
2651 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & SPL_HIT",
2652 "Offcore": "1",
2653 "CounterHTOff": "0,1,2,3"
2654 },
2655 {
2656 "EventCode": "0xB7, 0xBB",
2657 "MSRValue": "0x3fc0020080 ",
2658 "Counter": "0,1,2,3",
2659 "UMask": "0x1",
2660 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.ANY_SNOOP",
2661 "MSRIndex": "0x1a6,0x1a7",
2662 "SampleAfterValue": "100003",
2663 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & ANY_SNOOP",
2664 "Offcore": "1",
2665 "CounterHTOff": "0,1,2,3"
2666 },
2667 {
2668 "EventCode": "0xB7, 0xBB",
2669 "MSRValue": "0x1000020080 ",
2670 "Counter": "0,1,2,3",
2671 "UMask": "0x1",
2672 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_HITM",
2673 "MSRIndex": "0x1a6,0x1a7",
2674 "SampleAfterValue": "100003",
2675 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_HITM",
2676 "Offcore": "1",
2677 "CounterHTOff": "0,1,2,3"
2678 },
2679 {
2680 "EventCode": "0xB7, 0xBB",
2681 "MSRValue": "0x0400020080 ",
2682 "Counter": "0,1,2,3",
2683 "UMask": "0x1",
2684 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
2685 "MSRIndex": "0x1a6,0x1a7",
2686 "SampleAfterValue": "100003",
2687 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
2688 "Offcore": "1",
2689 "CounterHTOff": "0,1,2,3"
2690 },
2691 {
2692 "EventCode": "0xB7, 0xBB",
2693 "MSRValue": "0x0200020080 ",
2694 "Counter": "0,1,2,3",
2695 "UMask": "0x1",
2696 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_MISS",
2697 "MSRIndex": "0x1a6,0x1a7",
2698 "SampleAfterValue": "100003",
2699 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_MISS",
2700 "Offcore": "1",
2701 "CounterHTOff": "0,1,2,3"
2702 },
2703 {
2704 "EventCode": "0xB7, 0xBB",
2705 "MSRValue": "0x0100020080 ",
2706 "Counter": "0,1,2,3",
2707 "UMask": "0x1",
2708 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
2709 "MSRIndex": "0x1a6,0x1a7",
2710 "SampleAfterValue": "100003",
2711 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
2712 "Offcore": "1",
2713 "CounterHTOff": "0,1,2,3"
2714 },
2715 {
2716 "EventCode": "0xB7, 0xBB",
2717 "MSRValue": "0x0080020080 ",
2718 "Counter": "0,1,2,3",
2719 "UMask": "0x1",
2720 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_NONE",
2721 "MSRIndex": "0x1a6,0x1a7",
2722 "SampleAfterValue": "100003",
2723 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_NONE",
2724 "Offcore": "1",
2725 "CounterHTOff": "0,1,2,3"
2726 },
2727 {
2728 "EventCode": "0xB7, 0xBB",
2729 "MSRValue": "0x0040020080 ",
2730 "Counter": "0,1,2,3",
2731 "UMask": "0x1",
2732 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SPL_HIT",
2733 "MSRIndex": "0x1a6,0x1a7",
2734 "SampleAfterValue": "100003",
2735 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SPL_HIT",
2736 "Offcore": "1",
2737 "CounterHTOff": "0,1,2,3"
2738 },
2739 {
2740 "EventCode": "0xB7, 0xBB",
2741 "MSRValue": "0x0000010080 ",
2742 "Counter": "0,1,2,3",
2743 "UMask": "0x1",
2744 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.ANY_RESPONSE",
2745 "MSRIndex": "0x1a6,0x1a7",
2746 "SampleAfterValue": "100003",
2747 "BriefDescription": "Counts all prefetch (that bring data to LLC only) data reads that have any response type.",
2748 "Offcore": "1",
2749 "CounterHTOff": "0,1,2,3"
2750 },
2751 {
2752 "EventCode": "0xB7, 0xBB",
2753 "MSRValue": "0x3fc0400004 ",
2754 "Counter": "0,1,2,3",
2755 "UMask": "0x1",
2756 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.ANY_SNOOP",
2757 "MSRIndex": "0x1a6,0x1a7",
2758 "SampleAfterValue": "100003",
2759 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & ANY_SNOOP",
2760 "Offcore": "1",
2761 "CounterHTOff": "0,1,2,3"
2762 },
2763 {
2764 "EventCode": "0xB7, 0xBB",
2765 "MSRValue": "0x1000400004 ",
2766 "Counter": "0,1,2,3",
2767 "UMask": "0x1",
2768 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.SNOOP_HITM",
2769 "MSRIndex": "0x1a6,0x1a7",
2770 "SampleAfterValue": "100003",
2771 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & SNOOP_HITM",
2772 "Offcore": "1",
2773 "CounterHTOff": "0,1,2,3"
2774 },
2775 {
2776 "EventCode": "0xB7, 0xBB",
2777 "MSRValue": "0x0400400004 ",
2778 "Counter": "0,1,2,3",
2779 "UMask": "0x1",
2780 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.SNOOP_HIT_NO_FWD",
2781 "MSRIndex": "0x1a6,0x1a7",
2782 "SampleAfterValue": "100003",
2783 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & SNOOP_HIT_NO_FWD",
2784 "Offcore": "1",
2785 "CounterHTOff": "0,1,2,3"
2786 },
2787 {
2788 "EventCode": "0xB7, 0xBB",
2789 "MSRValue": "0x0200400004 ",
2790 "Counter": "0,1,2,3",
2791 "UMask": "0x1",
2792 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.SNOOP_MISS",
2793 "MSRIndex": "0x1a6,0x1a7",
2794 "SampleAfterValue": "100003",
2795 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & SNOOP_MISS",
2796 "Offcore": "1",
2797 "CounterHTOff": "0,1,2,3"
2798 },
2799 {
2800 "EventCode": "0xB7, 0xBB",
2801 "MSRValue": "0x0100400004 ",
2802 "Counter": "0,1,2,3",
2803 "UMask": "0x1",
2804 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.SNOOP_NOT_NEEDED",
2805 "MSRIndex": "0x1a6,0x1a7",
2806 "SampleAfterValue": "100003",
2807 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & SNOOP_NOT_NEEDED",
2808 "Offcore": "1",
2809 "CounterHTOff": "0,1,2,3"
2810 },
2811 {
2812 "EventCode": "0xB7, 0xBB",
2813 "MSRValue": "0x0080400004 ",
2814 "Counter": "0,1,2,3",
2815 "UMask": "0x1",
2816 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.SNOOP_NONE",
2817 "MSRIndex": "0x1a6,0x1a7",
2818 "SampleAfterValue": "100003",
2819 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & SNOOP_NONE",
2820 "Offcore": "1",
2821 "CounterHTOff": "0,1,2,3"
2822 },
2823 {
2824 "EventCode": "0xB7, 0xBB",
2825 "MSRValue": "0x0040400004 ",
2826 "Counter": "0,1,2,3",
2827 "UMask": "0x1",
2828 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.SPL_HIT",
2829 "MSRIndex": "0x1a6,0x1a7",
2830 "SampleAfterValue": "100003",
2831 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & SPL_HIT",
2832 "Offcore": "1",
2833 "CounterHTOff": "0,1,2,3"
2834 },
2835 {
2836 "EventCode": "0xB7, 0xBB",
2837 "MSRValue": "0x3fc01c0004 ",
2838 "Counter": "0,1,2,3",
2839 "UMask": "0x1",
2840 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.ANY_SNOOP",
2841 "MSRIndex": "0x1a6,0x1a7",
2842 "SampleAfterValue": "100003",
2843 "BriefDescription": "DEMAND_CODE_RD & L3_HIT & ANY_SNOOP",
2844 "Offcore": "1",
2845 "CounterHTOff": "0,1,2,3"
2846 },
2847 {
2848 "EventCode": "0xB7, 0xBB",
2849 "MSRValue": "0x10001c0004 ",
2850 "Counter": "0,1,2,3",
2851 "UMask": "0x1",
2852 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_HITM",
2853 "MSRIndex": "0x1a6,0x1a7",
2854 "SampleAfterValue": "100003",
2855 "BriefDescription": "DEMAND_CODE_RD & L3_HIT & SNOOP_HITM",
2856 "Offcore": "1",
2857 "CounterHTOff": "0,1,2,3"
2858 },
2859 {
2860 "EventCode": "0xB7, 0xBB",
2861 "MSRValue": "0x04001c0004 ",
2862 "Counter": "0,1,2,3",
2863 "UMask": "0x1",
2864 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_HIT_NO_FWD",
2865 "MSRIndex": "0x1a6,0x1a7",
2866 "SampleAfterValue": "100003",
2867 "BriefDescription": "Counts all demand code reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
2868 "Offcore": "1",
2869 "CounterHTOff": "0,1,2,3"
2870 },
2871 {
2872 "EventCode": "0xB7, 0xBB",
2873 "MSRValue": "0x02001c0004 ",
2874 "Counter": "0,1,2,3",
2875 "UMask": "0x1",
2876 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_MISS",
2877 "MSRIndex": "0x1a6,0x1a7",
2878 "SampleAfterValue": "100003",
2879 "BriefDescription": "Counts all demand code reads that hit in the L3 and the snoops sent to sibling cores return clean response.",
2880 "Offcore": "1",
2881 "CounterHTOff": "0,1,2,3"
2882 },
2883 {
2884 "EventCode": "0xB7, 0xBB",
2885 "MSRValue": "0x01001c0004 ",
2886 "Counter": "0,1,2,3",
2887 "UMask": "0x1",
2888 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_NOT_NEEDED",
2889 "MSRIndex": "0x1a6,0x1a7",
2890 "SampleAfterValue": "100003",
2891 "BriefDescription": "Counts all demand code reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
2892 "Offcore": "1",
2893 "CounterHTOff": "0,1,2,3"
2894 },
2895 {
2896 "EventCode": "0xB7, 0xBB",
2897 "MSRValue": "0x00801c0004 ",
2898 "Counter": "0,1,2,3",
2899 "UMask": "0x1",
2900 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_NONE",
2901 "MSRIndex": "0x1a6,0x1a7",
2902 "SampleAfterValue": "100003",
2903 "BriefDescription": "DEMAND_CODE_RD & L3_HIT & SNOOP_NONE",
2904 "Offcore": "1",
2905 "CounterHTOff": "0,1,2,3"
2906 },
2907 {
2908 "EventCode": "0xB7, 0xBB",
2909 "MSRValue": "0x00401c0004 ",
2910 "Counter": "0,1,2,3",
2911 "UMask": "0x1",
2912 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SPL_HIT",
2913 "MSRIndex": "0x1a6,0x1a7",
2914 "SampleAfterValue": "100003",
2915 "BriefDescription": "DEMAND_CODE_RD & L3_HIT & SPL_HIT",
2916 "Offcore": "1",
2917 "CounterHTOff": "0,1,2,3"
2918 },
2919 {
2920 "EventCode": "0xB7, 0xBB",
2921 "MSRValue": "0x3fc0100004 ",
2922 "Counter": "0,1,2,3",
2923 "UMask": "0x1",
2924 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.ANY_SNOOP",
2925 "MSRIndex": "0x1a6,0x1a7",
2926 "SampleAfterValue": "100003",
2927 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & ANY_SNOOP",
2928 "Offcore": "1",
2929 "CounterHTOff": "0,1,2,3"
2930 },
2931 {
2932 "EventCode": "0xB7, 0xBB",
2933 "MSRValue": "0x1000100004 ",
2934 "Counter": "0,1,2,3",
2935 "UMask": "0x1",
2936 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.SNOOP_HITM",
2937 "MSRIndex": "0x1a6,0x1a7",
2938 "SampleAfterValue": "100003",
2939 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & SNOOP_HITM",
2940 "Offcore": "1",
2941 "CounterHTOff": "0,1,2,3"
2942 },
2943 {
2944 "EventCode": "0xB7, 0xBB",
2945 "MSRValue": "0x0400100004 ",
2946 "Counter": "0,1,2,3",
2947 "UMask": "0x1",
2948 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.SNOOP_HIT_NO_FWD",
2949 "MSRIndex": "0x1a6,0x1a7",
2950 "SampleAfterValue": "100003",
2951 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & SNOOP_HIT_NO_FWD",
2952 "Offcore": "1",
2953 "CounterHTOff": "0,1,2,3"
2954 },
2955 {
2956 "EventCode": "0xB7, 0xBB",
2957 "MSRValue": "0x0200100004 ",
2958 "Counter": "0,1,2,3",
2959 "UMask": "0x1",
2960 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.SNOOP_MISS",
2961 "MSRIndex": "0x1a6,0x1a7",
2962 "SampleAfterValue": "100003",
2963 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & SNOOP_MISS",
2964 "Offcore": "1",
2965 "CounterHTOff": "0,1,2,3"
2966 },
2967 {
2968 "EventCode": "0xB7, 0xBB",
2969 "MSRValue": "0x0100100004 ",
2970 "Counter": "0,1,2,3",
2971 "UMask": "0x1",
2972 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.SNOOP_NOT_NEEDED",
2973 "MSRIndex": "0x1a6,0x1a7",
2974 "SampleAfterValue": "100003",
2975 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & SNOOP_NOT_NEEDED",
2976 "Offcore": "1",
2977 "CounterHTOff": "0,1,2,3"
2978 },
2979 {
2980 "EventCode": "0xB7, 0xBB",
2981 "MSRValue": "0x0080100004 ",
2982 "Counter": "0,1,2,3",
2983 "UMask": "0x1",
2984 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.SNOOP_NONE",
2985 "MSRIndex": "0x1a6,0x1a7",
2986 "SampleAfterValue": "100003",
2987 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & SNOOP_NONE",
2988 "Offcore": "1",
2989 "CounterHTOff": "0,1,2,3"
2990 },
2991 {
2992 "EventCode": "0xB7, 0xBB",
2993 "MSRValue": "0x0040100004 ",
2994 "Counter": "0,1,2,3",
2995 "UMask": "0x1",
2996 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.SPL_HIT",
2997 "MSRIndex": "0x1a6,0x1a7",
2998 "SampleAfterValue": "100003",
2999 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & SPL_HIT",
3000 "Offcore": "1",
3001 "CounterHTOff": "0,1,2,3"
3002 },
3003 {
3004 "EventCode": "0xB7, 0xBB",
3005 "MSRValue": "0x3fc0080004 ",
3006 "Counter": "0,1,2,3",
3007 "UMask": "0x1",
3008 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.ANY_SNOOP",
3009 "MSRIndex": "0x1a6,0x1a7",
3010 "SampleAfterValue": "100003",
3011 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & ANY_SNOOP",
3012 "Offcore": "1",
3013 "CounterHTOff": "0,1,2,3"
3014 },
3015 {
3016 "EventCode": "0xB7, 0xBB",
3017 "MSRValue": "0x1000080004 ",
3018 "Counter": "0,1,2,3",
3019 "UMask": "0x1",
3020 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.SNOOP_HITM",
3021 "MSRIndex": "0x1a6,0x1a7",
3022 "SampleAfterValue": "100003",
3023 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & SNOOP_HITM",
3024 "Offcore": "1",
3025 "CounterHTOff": "0,1,2,3"
3026 },
3027 {
3028 "EventCode": "0xB7, 0xBB",
3029 "MSRValue": "0x0400080004 ",
3030 "Counter": "0,1,2,3",
3031 "UMask": "0x1",
3032 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.SNOOP_HIT_NO_FWD",
3033 "MSRIndex": "0x1a6,0x1a7",
3034 "SampleAfterValue": "100003",
3035 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & SNOOP_HIT_NO_FWD",
3036 "Offcore": "1",
3037 "CounterHTOff": "0,1,2,3"
3038 },
3039 {
3040 "EventCode": "0xB7, 0xBB",
3041 "MSRValue": "0x0200080004 ",
3042 "Counter": "0,1,2,3",
3043 "UMask": "0x1",
3044 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.SNOOP_MISS",
3045 "MSRIndex": "0x1a6,0x1a7",
3046 "SampleAfterValue": "100003",
3047 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & SNOOP_MISS",
3048 "Offcore": "1",
3049 "CounterHTOff": "0,1,2,3"
3050 },
3051 {
3052 "EventCode": "0xB7, 0xBB",
3053 "MSRValue": "0x0100080004 ",
3054 "Counter": "0,1,2,3",
3055 "UMask": "0x1",
3056 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.SNOOP_NOT_NEEDED",
3057 "MSRIndex": "0x1a6,0x1a7",
3058 "SampleAfterValue": "100003",
3059 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & SNOOP_NOT_NEEDED",
3060 "Offcore": "1",
3061 "CounterHTOff": "0,1,2,3"
3062 },
3063 {
3064 "EventCode": "0xB7, 0xBB",
3065 "MSRValue": "0x0080080004 ",
3066 "Counter": "0,1,2,3",
3067 "UMask": "0x1",
3068 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.SNOOP_NONE",
3069 "MSRIndex": "0x1a6,0x1a7",
3070 "SampleAfterValue": "100003",
3071 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & SNOOP_NONE",
3072 "Offcore": "1",
3073 "CounterHTOff": "0,1,2,3"
3074 },
3075 {
3076 "EventCode": "0xB7, 0xBB",
3077 "MSRValue": "0x0040080004 ",
3078 "Counter": "0,1,2,3",
3079 "UMask": "0x1",
3080 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.SPL_HIT",
3081 "MSRIndex": "0x1a6,0x1a7",
3082 "SampleAfterValue": "100003",
3083 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & SPL_HIT",
3084 "Offcore": "1",
3085 "CounterHTOff": "0,1,2,3"
3086 },
3087 {
3088 "EventCode": "0xB7, 0xBB",
3089 "MSRValue": "0x3fc0040004 ",
3090 "Counter": "0,1,2,3",
3091 "UMask": "0x1",
3092 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.ANY_SNOOP",
3093 "MSRIndex": "0x1a6,0x1a7",
3094 "SampleAfterValue": "100003",
3095 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & ANY_SNOOP",
3096 "Offcore": "1",
3097 "CounterHTOff": "0,1,2,3"
3098 },
3099 {
3100 "EventCode": "0xB7, 0xBB",
3101 "MSRValue": "0x1000040004 ",
3102 "Counter": "0,1,2,3",
3103 "UMask": "0x1",
3104 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.SNOOP_HITM",
3105 "MSRIndex": "0x1a6,0x1a7",
3106 "SampleAfterValue": "100003",
3107 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & SNOOP_HITM",
3108 "Offcore": "1",
3109 "CounterHTOff": "0,1,2,3"
3110 },
3111 {
3112 "EventCode": "0xB7, 0xBB",
3113 "MSRValue": "0x0400040004 ",
3114 "Counter": "0,1,2,3",
3115 "UMask": "0x1",
3116 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.SNOOP_HIT_NO_FWD",
3117 "MSRIndex": "0x1a6,0x1a7",
3118 "SampleAfterValue": "100003",
3119 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & SNOOP_HIT_NO_FWD",
3120 "Offcore": "1",
3121 "CounterHTOff": "0,1,2,3"
3122 },
3123 {
3124 "EventCode": "0xB7, 0xBB",
3125 "MSRValue": "0x0200040004 ",
3126 "Counter": "0,1,2,3",
3127 "UMask": "0x1",
3128 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.SNOOP_MISS",
3129 "MSRIndex": "0x1a6,0x1a7",
3130 "SampleAfterValue": "100003",
3131 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & SNOOP_MISS",
3132 "Offcore": "1",
3133 "CounterHTOff": "0,1,2,3"
3134 },
3135 {
3136 "EventCode": "0xB7, 0xBB",
3137 "MSRValue": "0x0100040004 ",
3138 "Counter": "0,1,2,3",
3139 "UMask": "0x1",
3140 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.SNOOP_NOT_NEEDED",
3141 "MSRIndex": "0x1a6,0x1a7",
3142 "SampleAfterValue": "100003",
3143 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & SNOOP_NOT_NEEDED",
3144 "Offcore": "1",
3145 "CounterHTOff": "0,1,2,3"
3146 },
3147 {
3148 "EventCode": "0xB7, 0xBB",
3149 "MSRValue": "0x0080040004 ",
3150 "Counter": "0,1,2,3",
3151 "UMask": "0x1",
3152 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.SNOOP_NONE",
3153 "MSRIndex": "0x1a6,0x1a7",
3154 "SampleAfterValue": "100003",
3155 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & SNOOP_NONE",
3156 "Offcore": "1",
3157 "CounterHTOff": "0,1,2,3"
3158 },
3159 {
3160 "EventCode": "0xB7, 0xBB",
3161 "MSRValue": "0x0040040004 ",
3162 "Counter": "0,1,2,3",
3163 "UMask": "0x1",
3164 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.SPL_HIT",
3165 "MSRIndex": "0x1a6,0x1a7",
3166 "SampleAfterValue": "100003",
3167 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & SPL_HIT",
3168 "Offcore": "1",
3169 "CounterHTOff": "0,1,2,3"
3170 },
3171 {
3172 "EventCode": "0xB7, 0xBB",
3173 "MSRValue": "0x3fc0020004 ",
3174 "Counter": "0,1,2,3",
3175 "UMask": "0x1",
3176 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.ANY_SNOOP",
3177 "MSRIndex": "0x1a6,0x1a7",
3178 "SampleAfterValue": "100003",
3179 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & ANY_SNOOP",
3180 "Offcore": "1",
3181 "CounterHTOff": "0,1,2,3"
3182 },
3183 {
3184 "EventCode": "0xB7, 0xBB",
3185 "MSRValue": "0x1000020004 ",
3186 "Counter": "0,1,2,3",
3187 "UMask": "0x1",
3188 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_HITM",
3189 "MSRIndex": "0x1a6,0x1a7",
3190 "SampleAfterValue": "100003",
3191 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_HITM",
3192 "Offcore": "1",
3193 "CounterHTOff": "0,1,2,3"
3194 },
3195 {
3196 "EventCode": "0xB7, 0xBB",
3197 "MSRValue": "0x0400020004 ",
3198 "Counter": "0,1,2,3",
3199 "UMask": "0x1",
3200 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
3201 "MSRIndex": "0x1a6,0x1a7",
3202 "SampleAfterValue": "100003",
3203 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
3204 "Offcore": "1",
3205 "CounterHTOff": "0,1,2,3"
3206 },
3207 {
3208 "EventCode": "0xB7, 0xBB",
3209 "MSRValue": "0x0200020004 ",
3210 "Counter": "0,1,2,3",
3211 "UMask": "0x1",
3212 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_MISS",
3213 "MSRIndex": "0x1a6,0x1a7",
3214 "SampleAfterValue": "100003",
3215 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_MISS",
3216 "Offcore": "1",
3217 "CounterHTOff": "0,1,2,3"
3218 },
3219 {
3220 "EventCode": "0xB7, 0xBB",
3221 "MSRValue": "0x0100020004 ",
3222 "Counter": "0,1,2,3",
3223 "UMask": "0x1",
3224 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
3225 "MSRIndex": "0x1a6,0x1a7",
3226 "SampleAfterValue": "100003",
3227 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
3228 "Offcore": "1",
3229 "CounterHTOff": "0,1,2,3"
3230 },
3231 {
3232 "EventCode": "0xB7, 0xBB",
3233 "MSRValue": "0x0080020004 ",
3234 "Counter": "0,1,2,3",
3235 "UMask": "0x1",
3236 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_NONE",
3237 "MSRIndex": "0x1a6,0x1a7",
3238 "SampleAfterValue": "100003",
3239 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_NONE",
3240 "Offcore": "1",
3241 "CounterHTOff": "0,1,2,3"
3242 },
3243 {
3244 "EventCode": "0xB7, 0xBB",
3245 "MSRValue": "0x0040020004 ",
3246 "Counter": "0,1,2,3",
3247 "UMask": "0x1",
3248 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SPL_HIT",
3249 "MSRIndex": "0x1a6,0x1a7",
3250 "SampleAfterValue": "100003",
3251 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SPL_HIT",
3252 "Offcore": "1",
3253 "CounterHTOff": "0,1,2,3"
3254 },
3255 {
3256 "EventCode": "0xB7, 0xBB",
3257 "MSRValue": "0x0000010004 ",
3258 "Counter": "0,1,2,3",
3259 "UMask": "0x1",
3260 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
3261 "MSRIndex": "0x1a6,0x1a7",
3262 "SampleAfterValue": "100003",
3263 "BriefDescription": "Counts all demand code reads that have any response type.",
3264 "Offcore": "1",
3265 "CounterHTOff": "0,1,2,3"
3266 },
3267 {
3268 "EventCode": "0xB7, 0xBB",
3269 "MSRValue": "0x3fc0400002 ",
3270 "Counter": "0,1,2,3",
3271 "UMask": "0x1",
3272 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.ANY_SNOOP",
3273 "MSRIndex": "0x1a6,0x1a7",
3274 "SampleAfterValue": "100003",
3275 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & ANY_SNOOP",
3276 "Offcore": "1",
3277 "CounterHTOff": "0,1,2,3"
3278 },
3279 {
3280 "EventCode": "0xB7, 0xBB",
3281 "MSRValue": "0x1000400002 ",
3282 "Counter": "0,1,2,3",
3283 "UMask": "0x1",
3284 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.SNOOP_HITM",
3285 "MSRIndex": "0x1a6,0x1a7",
3286 "SampleAfterValue": "100003",
3287 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & SNOOP_HITM",
3288 "Offcore": "1",
3289 "CounterHTOff": "0,1,2,3"
3290 },
3291 {
3292 "EventCode": "0xB7, 0xBB",
3293 "MSRValue": "0x0400400002 ",
3294 "Counter": "0,1,2,3",
3295 "UMask": "0x1",
3296 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.SNOOP_HIT_NO_FWD",
3297 "MSRIndex": "0x1a6,0x1a7",
3298 "SampleAfterValue": "100003",
3299 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & SNOOP_HIT_NO_FWD",
3300 "Offcore": "1",
3301 "CounterHTOff": "0,1,2,3"
3302 },
3303 {
3304 "EventCode": "0xB7, 0xBB",
3305 "MSRValue": "0x0200400002 ",
3306 "Counter": "0,1,2,3",
3307 "UMask": "0x1",
3308 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.SNOOP_MISS",
3309 "MSRIndex": "0x1a6,0x1a7",
3310 "SampleAfterValue": "100003",
3311 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & SNOOP_MISS",
3312 "Offcore": "1",
3313 "CounterHTOff": "0,1,2,3"
3314 },
3315 {
3316 "EventCode": "0xB7, 0xBB",
3317 "MSRValue": "0x0100400002 ",
3318 "Counter": "0,1,2,3",
3319 "UMask": "0x1",
3320 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.SNOOP_NOT_NEEDED",
3321 "MSRIndex": "0x1a6,0x1a7",
3322 "SampleAfterValue": "100003",
3323 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & SNOOP_NOT_NEEDED",
3324 "Offcore": "1",
3325 "CounterHTOff": "0,1,2,3"
3326 },
3327 {
3328 "EventCode": "0xB7, 0xBB",
3329 "MSRValue": "0x0080400002 ",
3330 "Counter": "0,1,2,3",
3331 "UMask": "0x1",
3332 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.SNOOP_NONE",
3333 "MSRIndex": "0x1a6,0x1a7",
3334 "SampleAfterValue": "100003",
3335 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & SNOOP_NONE",
3336 "Offcore": "1",
3337 "CounterHTOff": "0,1,2,3"
3338 },
3339 {
3340 "EventCode": "0xB7, 0xBB",
3341 "MSRValue": "0x0040400002 ",
3342 "Counter": "0,1,2,3",
3343 "UMask": "0x1",
3344 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.SPL_HIT",
3345 "MSRIndex": "0x1a6,0x1a7",
3346 "SampleAfterValue": "100003",
3347 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & SPL_HIT",
3348 "Offcore": "1",
3349 "CounterHTOff": "0,1,2,3"
3350 },
3351 {
3352 "EventCode": "0xB7, 0xBB",
3353 "MSRValue": "0x3fc01c0002 ",
3354 "Counter": "0,1,2,3",
3355 "UMask": "0x1",
3356 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.ANY_SNOOP",
3357 "MSRIndex": "0x1a6,0x1a7",
3358 "SampleAfterValue": "100003",
3359 "BriefDescription": "DEMAND_RFO & L3_HIT & ANY_SNOOP",
3360 "Offcore": "1",
3361 "CounterHTOff": "0,1,2,3"
3362 },
3363 {
3364 "EventCode": "0xB7, 0xBB",
3365 "MSRValue": "0x10001c0002 ",
3366 "Counter": "0,1,2,3",
3367 "UMask": "0x1",
3368 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM",
3369 "MSRIndex": "0x1a6,0x1a7",
3370 "SampleAfterValue": "100003",
3371 "BriefDescription": "DEMAND_RFO & L3_HIT & SNOOP_HITM",
3372 "Offcore": "1",
3373 "CounterHTOff": "0,1,2,3"
3374 },
3375 {
3376 "EventCode": "0xB7, 0xBB",
3377 "MSRValue": "0x04001c0002 ",
3378 "Counter": "0,1,2,3",
3379 "UMask": "0x1",
3380 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HIT_NO_FWD",
3381 "MSRIndex": "0x1a6,0x1a7",
3382 "SampleAfterValue": "100003",
3383 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
3384 "Offcore": "1",
3385 "CounterHTOff": "0,1,2,3"
3386 },
3387 {
3388 "EventCode": "0xB7, 0xBB",
3389 "MSRValue": "0x02001c0002 ",
3390 "Counter": "0,1,2,3",
3391 "UMask": "0x1",
3392 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_MISS",
3393 "MSRIndex": "0x1a6,0x1a7",
3394 "SampleAfterValue": "100003",
3395 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and the snoops sent to sibling cores return clean response.",
3396 "Offcore": "1",
3397 "CounterHTOff": "0,1,2,3"
3398 },
3399 {
3400 "EventCode": "0xB7, 0xBB",
3401 "MSRValue": "0x01001c0002 ",
3402 "Counter": "0,1,2,3",
3403 "UMask": "0x1",
3404 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_NOT_NEEDED",
3405 "MSRIndex": "0x1a6,0x1a7",
3406 "SampleAfterValue": "100003",
3407 "BriefDescription": "Counts all demand data writes (RFOs) that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
3408 "Offcore": "1",
3409 "CounterHTOff": "0,1,2,3"
3410 },
3411 {
3412 "EventCode": "0xB7, 0xBB",
3413 "MSRValue": "0x00801c0002 ",
3414 "Counter": "0,1,2,3",
3415 "UMask": "0x1",
3416 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_NONE",
3417 "MSRIndex": "0x1a6,0x1a7",
3418 "SampleAfterValue": "100003",
3419 "BriefDescription": "DEMAND_RFO & L3_HIT & SNOOP_NONE",
3420 "Offcore": "1",
3421 "CounterHTOff": "0,1,2,3"
3422 },
3423 {
3424 "EventCode": "0xB7, 0xBB",
3425 "MSRValue": "0x00401c0002 ",
3426 "Counter": "0,1,2,3",
3427 "UMask": "0x1",
3428 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SPL_HIT",
3429 "MSRIndex": "0x1a6,0x1a7",
3430 "SampleAfterValue": "100003",
3431 "BriefDescription": "DEMAND_RFO & L3_HIT & SPL_HIT",
3432 "Offcore": "1",
3433 "CounterHTOff": "0,1,2,3"
3434 },
3435 {
3436 "EventCode": "0xB7, 0xBB",
3437 "MSRValue": "0x3fc0100002 ",
3438 "Counter": "0,1,2,3",
3439 "UMask": "0x1",
3440 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.ANY_SNOOP",
3441 "MSRIndex": "0x1a6,0x1a7",
3442 "SampleAfterValue": "100003",
3443 "BriefDescription": "DEMAND_RFO & L3_HIT_S & ANY_SNOOP",
3444 "Offcore": "1",
3445 "CounterHTOff": "0,1,2,3"
3446 },
3447 {
3448 "EventCode": "0xB7, 0xBB",
3449 "MSRValue": "0x1000100002 ",
3450 "Counter": "0,1,2,3",
3451 "UMask": "0x1",
3452 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.SNOOP_HITM",
3453 "MSRIndex": "0x1a6,0x1a7",
3454 "SampleAfterValue": "100003",
3455 "BriefDescription": "DEMAND_RFO & L3_HIT_S & SNOOP_HITM",
3456 "Offcore": "1",
3457 "CounterHTOff": "0,1,2,3"
3458 },
3459 {
3460 "EventCode": "0xB7, 0xBB",
3461 "MSRValue": "0x0400100002 ",
3462 "Counter": "0,1,2,3",
3463 "UMask": "0x1",
3464 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.SNOOP_HIT_NO_FWD",
3465 "MSRIndex": "0x1a6,0x1a7",
3466 "SampleAfterValue": "100003",
3467 "BriefDescription": "DEMAND_RFO & L3_HIT_S & SNOOP_HIT_NO_FWD",
3468 "Offcore": "1",
3469 "CounterHTOff": "0,1,2,3"
3470 },
3471 {
3472 "EventCode": "0xB7, 0xBB",
3473 "MSRValue": "0x0200100002 ",
3474 "Counter": "0,1,2,3",
3475 "UMask": "0x1",
3476 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.SNOOP_MISS",
3477 "MSRIndex": "0x1a6,0x1a7",
3478 "SampleAfterValue": "100003",
3479 "BriefDescription": "DEMAND_RFO & L3_HIT_S & SNOOP_MISS",
3480 "Offcore": "1",
3481 "CounterHTOff": "0,1,2,3"
3482 },
3483 {
3484 "EventCode": "0xB7, 0xBB",
3485 "MSRValue": "0x0100100002 ",
3486 "Counter": "0,1,2,3",
3487 "UMask": "0x1",
3488 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.SNOOP_NOT_NEEDED",
3489 "MSRIndex": "0x1a6,0x1a7",
3490 "SampleAfterValue": "100003",
3491 "BriefDescription": "DEMAND_RFO & L3_HIT_S & SNOOP_NOT_NEEDED",
3492 "Offcore": "1",
3493 "CounterHTOff": "0,1,2,3"
3494 },
3495 {
3496 "EventCode": "0xB7, 0xBB",
3497 "MSRValue": "0x0080100002 ",
3498 "Counter": "0,1,2,3",
3499 "UMask": "0x1",
3500 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.SNOOP_NONE",
3501 "MSRIndex": "0x1a6,0x1a7",
3502 "SampleAfterValue": "100003",
3503 "BriefDescription": "DEMAND_RFO & L3_HIT_S & SNOOP_NONE",
3504 "Offcore": "1",
3505 "CounterHTOff": "0,1,2,3"
3506 },
3507 {
3508 "EventCode": "0xB7, 0xBB",
3509 "MSRValue": "0x0040100002 ",
3510 "Counter": "0,1,2,3",
3511 "UMask": "0x1",
3512 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.SPL_HIT",
3513 "MSRIndex": "0x1a6,0x1a7",
3514 "SampleAfterValue": "100003",
3515 "BriefDescription": "DEMAND_RFO & L3_HIT_S & SPL_HIT",
3516 "Offcore": "1",
3517 "CounterHTOff": "0,1,2,3"
3518 },
3519 {
3520 "EventCode": "0xB7, 0xBB",
3521 "MSRValue": "0x3fc0080002 ",
3522 "Counter": "0,1,2,3",
3523 "UMask": "0x1",
3524 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.ANY_SNOOP",
3525 "MSRIndex": "0x1a6,0x1a7",
3526 "SampleAfterValue": "100003",
3527 "BriefDescription": "DEMAND_RFO & L3_HIT_E & ANY_SNOOP",
3528 "Offcore": "1",
3529 "CounterHTOff": "0,1,2,3"
3530 },
3531 {
3532 "EventCode": "0xB7, 0xBB",
3533 "MSRValue": "0x1000080002 ",
3534 "Counter": "0,1,2,3",
3535 "UMask": "0x1",
3536 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.SNOOP_HITM",
3537 "MSRIndex": "0x1a6,0x1a7",
3538 "SampleAfterValue": "100003",
3539 "BriefDescription": "DEMAND_RFO & L3_HIT_E & SNOOP_HITM",
3540 "Offcore": "1",
3541 "CounterHTOff": "0,1,2,3"
3542 },
3543 {
3544 "EventCode": "0xB7, 0xBB",
3545 "MSRValue": "0x0400080002 ",
3546 "Counter": "0,1,2,3",
3547 "UMask": "0x1",
3548 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.SNOOP_HIT_NO_FWD",
3549 "MSRIndex": "0x1a6,0x1a7",
3550 "SampleAfterValue": "100003",
3551 "BriefDescription": "DEMAND_RFO & L3_HIT_E & SNOOP_HIT_NO_FWD",
3552 "Offcore": "1",
3553 "CounterHTOff": "0,1,2,3"
3554 },
3555 {
3556 "EventCode": "0xB7, 0xBB",
3557 "MSRValue": "0x0200080002 ",
3558 "Counter": "0,1,2,3",
3559 "UMask": "0x1",
3560 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.SNOOP_MISS",
3561 "MSRIndex": "0x1a6,0x1a7",
3562 "SampleAfterValue": "100003",
3563 "BriefDescription": "DEMAND_RFO & L3_HIT_E & SNOOP_MISS",
3564 "Offcore": "1",
3565 "CounterHTOff": "0,1,2,3"
3566 },
3567 {
3568 "EventCode": "0xB7, 0xBB",
3569 "MSRValue": "0x0100080002 ",
3570 "Counter": "0,1,2,3",
3571 "UMask": "0x1",
3572 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.SNOOP_NOT_NEEDED",
3573 "MSRIndex": "0x1a6,0x1a7",
3574 "SampleAfterValue": "100003",
3575 "BriefDescription": "DEMAND_RFO & L3_HIT_E & SNOOP_NOT_NEEDED",
3576 "Offcore": "1",
3577 "CounterHTOff": "0,1,2,3"
3578 },
3579 {
3580 "EventCode": "0xB7, 0xBB",
3581 "MSRValue": "0x0080080002 ",
3582 "Counter": "0,1,2,3",
3583 "UMask": "0x1",
3584 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.SNOOP_NONE",
3585 "MSRIndex": "0x1a6,0x1a7",
3586 "SampleAfterValue": "100003",
3587 "BriefDescription": "DEMAND_RFO & L3_HIT_E & SNOOP_NONE",
3588 "Offcore": "1",
3589 "CounterHTOff": "0,1,2,3"
3590 },
3591 {
3592 "EventCode": "0xB7, 0xBB",
3593 "MSRValue": "0x0040080002 ",
3594 "Counter": "0,1,2,3",
3595 "UMask": "0x1",
3596 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.SPL_HIT",
3597 "MSRIndex": "0x1a6,0x1a7",
3598 "SampleAfterValue": "100003",
3599 "BriefDescription": "DEMAND_RFO & L3_HIT_E & SPL_HIT",
3600 "Offcore": "1",
3601 "CounterHTOff": "0,1,2,3"
3602 },
3603 {
3604 "EventCode": "0xB7, 0xBB",
3605 "MSRValue": "0x3fc0040002 ",
3606 "Counter": "0,1,2,3",
3607 "UMask": "0x1",
3608 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.ANY_SNOOP",
3609 "MSRIndex": "0x1a6,0x1a7",
3610 "SampleAfterValue": "100003",
3611 "BriefDescription": "DEMAND_RFO & L3_HIT_M & ANY_SNOOP",
3612 "Offcore": "1",
3613 "CounterHTOff": "0,1,2,3"
3614 },
3615 {
3616 "EventCode": "0xB7, 0xBB",
3617 "MSRValue": "0x1000040002 ",
3618 "Counter": "0,1,2,3",
3619 "UMask": "0x1",
3620 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.SNOOP_HITM",
3621 "MSRIndex": "0x1a6,0x1a7",
3622 "SampleAfterValue": "100003",
3623 "BriefDescription": "DEMAND_RFO & L3_HIT_M & SNOOP_HITM",
3624 "Offcore": "1",
3625 "CounterHTOff": "0,1,2,3"
3626 },
3627 {
3628 "EventCode": "0xB7, 0xBB",
3629 "MSRValue": "0x0400040002 ",
3630 "Counter": "0,1,2,3",
3631 "UMask": "0x1",
3632 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.SNOOP_HIT_NO_FWD",
3633 "MSRIndex": "0x1a6,0x1a7",
3634 "SampleAfterValue": "100003",
3635 "BriefDescription": "DEMAND_RFO & L3_HIT_M & SNOOP_HIT_NO_FWD",
3636 "Offcore": "1",
3637 "CounterHTOff": "0,1,2,3"
3638 },
3639 {
3640 "EventCode": "0xB7, 0xBB",
3641 "MSRValue": "0x0200040002 ",
3642 "Counter": "0,1,2,3",
3643 "UMask": "0x1",
3644 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.SNOOP_MISS",
3645 "MSRIndex": "0x1a6,0x1a7",
3646 "SampleAfterValue": "100003",
3647 "BriefDescription": "DEMAND_RFO & L3_HIT_M & SNOOP_MISS",
3648 "Offcore": "1",
3649 "CounterHTOff": "0,1,2,3"
3650 },
3651 {
3652 "EventCode": "0xB7, 0xBB",
3653 "MSRValue": "0x0100040002 ",
3654 "Counter": "0,1,2,3",
3655 "UMask": "0x1",
3656 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.SNOOP_NOT_NEEDED",
3657 "MSRIndex": "0x1a6,0x1a7",
3658 "SampleAfterValue": "100003",
3659 "BriefDescription": "DEMAND_RFO & L3_HIT_M & SNOOP_NOT_NEEDED",
3660 "Offcore": "1",
3661 "CounterHTOff": "0,1,2,3"
3662 },
3663 {
3664 "EventCode": "0xB7, 0xBB",
3665 "MSRValue": "0x0080040002 ",
3666 "Counter": "0,1,2,3",
3667 "UMask": "0x1",
3668 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.SNOOP_NONE",
3669 "MSRIndex": "0x1a6,0x1a7",
3670 "SampleAfterValue": "100003",
3671 "BriefDescription": "DEMAND_RFO & L3_HIT_M & SNOOP_NONE",
3672 "Offcore": "1",
3673 "CounterHTOff": "0,1,2,3"
3674 },
3675 {
3676 "EventCode": "0xB7, 0xBB",
3677 "MSRValue": "0x0040040002 ",
3678 "Counter": "0,1,2,3",
3679 "UMask": "0x1",
3680 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.SPL_HIT",
3681 "MSRIndex": "0x1a6,0x1a7",
3682 "SampleAfterValue": "100003",
3683 "BriefDescription": "DEMAND_RFO & L3_HIT_M & SPL_HIT",
3684 "Offcore": "1",
3685 "CounterHTOff": "0,1,2,3"
3686 },
3687 {
3688 "EventCode": "0xB7, 0xBB",
3689 "MSRValue": "0x3fc0020002 ",
3690 "Counter": "0,1,2,3",
3691 "UMask": "0x1",
3692 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.ANY_SNOOP",
3693 "MSRIndex": "0x1a6,0x1a7",
3694 "SampleAfterValue": "100003",
3695 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & ANY_SNOOP",
3696 "Offcore": "1",
3697 "CounterHTOff": "0,1,2,3"
3698 },
3699 {
3700 "EventCode": "0xB7, 0xBB",
3701 "MSRValue": "0x1000020002 ",
3702 "Counter": "0,1,2,3",
3703 "UMask": "0x1",
3704 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.SNOOP_HITM",
3705 "MSRIndex": "0x1a6,0x1a7",
3706 "SampleAfterValue": "100003",
3707 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & SNOOP_HITM",
3708 "Offcore": "1",
3709 "CounterHTOff": "0,1,2,3"
3710 },
3711 {
3712 "EventCode": "0xB7, 0xBB",
3713 "MSRValue": "0x0400020002 ",
3714 "Counter": "0,1,2,3",
3715 "UMask": "0x1",
3716 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
3717 "MSRIndex": "0x1a6,0x1a7",
3718 "SampleAfterValue": "100003",
3719 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
3720 "Offcore": "1",
3721 "CounterHTOff": "0,1,2,3"
3722 },
3723 {
3724 "EventCode": "0xB7, 0xBB",
3725 "MSRValue": "0x0200020002 ",
3726 "Counter": "0,1,2,3",
3727 "UMask": "0x1",
3728 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.SNOOP_MISS",
3729 "MSRIndex": "0x1a6,0x1a7",
3730 "SampleAfterValue": "100003",
3731 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & SNOOP_MISS",
3732 "Offcore": "1",
3733 "CounterHTOff": "0,1,2,3"
3734 },
3735 {
3736 "EventCode": "0xB7, 0xBB",
3737 "MSRValue": "0x0100020002 ",
3738 "Counter": "0,1,2,3",
3739 "UMask": "0x1",
3740 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
3741 "MSRIndex": "0x1a6,0x1a7",
3742 "SampleAfterValue": "100003",
3743 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
3744 "Offcore": "1",
3745 "CounterHTOff": "0,1,2,3"
3746 },
3747 {
3748 "EventCode": "0xB7, 0xBB",
3749 "MSRValue": "0x0080020002 ",
3750 "Counter": "0,1,2,3",
3751 "UMask": "0x1",
3752 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.SNOOP_NONE",
3753 "MSRIndex": "0x1a6,0x1a7",
3754 "SampleAfterValue": "100003",
3755 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & SNOOP_NONE",
3756 "Offcore": "1",
3757 "CounterHTOff": "0,1,2,3"
3758 },
3759 {
3760 "EventCode": "0xB7, 0xBB",
3761 "MSRValue": "0x0040020002 ",
3762 "Counter": "0,1,2,3",
3763 "UMask": "0x1",
3764 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.SPL_HIT",
3765 "MSRIndex": "0x1a6,0x1a7",
3766 "SampleAfterValue": "100003",
3767 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & SPL_HIT",
3768 "Offcore": "1",
3769 "CounterHTOff": "0,1,2,3"
3770 },
3771 {
3772 "EventCode": "0xB7, 0xBB",
3773 "MSRValue": "0x0000010002 ",
3774 "Counter": "0,1,2,3",
3775 "UMask": "0x1",
3776 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_RESPONSE",
3777 "MSRIndex": "0x1a6,0x1a7",
3778 "SampleAfterValue": "100003",
3779 "BriefDescription": "Counts all demand data writes (RFOs) that have any response type.",
3780 "Offcore": "1",
3781 "CounterHTOff": "0,1,2,3"
3782 },
3783 {
3784 "EventCode": "0xB7, 0xBB",
3785 "MSRValue": "0x3fc0400001 ",
3786 "Counter": "0,1,2,3",
3787 "UMask": "0x1",
3788 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.ANY_SNOOP",
3789 "MSRIndex": "0x1a6,0x1a7",
3790 "SampleAfterValue": "100003",
3791 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & ANY_SNOOP",
3792 "Offcore": "1",
3793 "CounterHTOff": "0,1,2,3"
3794 },
3795 {
3796 "EventCode": "0xB7, 0xBB",
3797 "MSRValue": "0x1000400001 ",
3798 "Counter": "0,1,2,3",
3799 "UMask": "0x1",
3800 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_HITM",
3801 "MSRIndex": "0x1a6,0x1a7",
3802 "SampleAfterValue": "100003",
3803 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_HITM",
3804 "Offcore": "1",
3805 "CounterHTOff": "0,1,2,3"
3806 },
3807 {
3808 "EventCode": "0xB7, 0xBB",
3809 "MSRValue": "0x0400400001 ",
3810 "Counter": "0,1,2,3",
3811 "UMask": "0x1",
3812 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_HIT_NO_FWD",
3813 "MSRIndex": "0x1a6,0x1a7",
3814 "SampleAfterValue": "100003",
3815 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_HIT_NO_FWD",
3816 "Offcore": "1",
3817 "CounterHTOff": "0,1,2,3"
3818 },
3819 {
3820 "EventCode": "0xB7, 0xBB",
3821 "MSRValue": "0x0200400001 ",
3822 "Counter": "0,1,2,3",
3823 "UMask": "0x1",
3824 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_MISS",
3825 "MSRIndex": "0x1a6,0x1a7",
3826 "SampleAfterValue": "100003",
3827 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_MISS",
3828 "Offcore": "1",
3829 "CounterHTOff": "0,1,2,3"
3830 },
3831 {
3832 "EventCode": "0xB7, 0xBB",
3833 "MSRValue": "0x0100400001 ",
3834 "Counter": "0,1,2,3",
3835 "UMask": "0x1",
3836 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_NOT_NEEDED",
3837 "MSRIndex": "0x1a6,0x1a7",
3838 "SampleAfterValue": "100003",
3839 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_NOT_NEEDED",
3840 "Offcore": "1",
3841 "CounterHTOff": "0,1,2,3"
3842 },
3843 {
3844 "EventCode": "0xB7, 0xBB",
3845 "MSRValue": "0x0080400001 ",
3846 "Counter": "0,1,2,3",
3847 "UMask": "0x1",
3848 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_NONE",
3849 "MSRIndex": "0x1a6,0x1a7",
3850 "SampleAfterValue": "100003",
3851 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_NONE",
3852 "Offcore": "1",
3853 "CounterHTOff": "0,1,2,3"
3854 },
3855 {
3856 "EventCode": "0xB7, 0xBB",
3857 "MSRValue": "0x0040400001 ",
3858 "Counter": "0,1,2,3",
3859 "UMask": "0x1",
3860 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.SPL_HIT",
3861 "MSRIndex": "0x1a6,0x1a7",
3862 "SampleAfterValue": "100003",
3863 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & SPL_HIT",
3864 "Offcore": "1",
3865 "CounterHTOff": "0,1,2,3"
3866 },
3867 {
3868 "EventCode": "0xB7, 0xBB",
3869 "MSRValue": "0x3fc01c0001 ",
3870 "Counter": "0,1,2,3",
3871 "UMask": "0x1",
3872 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.ANY_SNOOP",
3873 "MSRIndex": "0x1a6,0x1a7",
3874 "SampleAfterValue": "100003",
3875 "BriefDescription": "DEMAND_DATA_RD & L3_HIT & ANY_SNOOP",
3876 "Offcore": "1",
3877 "CounterHTOff": "0,1,2,3"
3878 },
3879 {
3880 "EventCode": "0xB7, 0xBB",
3881 "MSRValue": "0x10001c0001 ",
3882 "Counter": "0,1,2,3",
3883 "UMask": "0x1",
3884 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM",
3885 "MSRIndex": "0x1a6,0x1a7",
3886 "SampleAfterValue": "100003",
3887 "BriefDescription": "DEMAND_DATA_RD & L3_HIT & SNOOP_HITM",
3888 "Offcore": "1",
3889 "CounterHTOff": "0,1,2,3"
3890 },
3891 {
3892 "EventCode": "0xB7, 0xBB",
3893 "MSRValue": "0x04001c0001 ",
3894 "Counter": "0,1,2,3",
3895 "UMask": "0x1",
3896 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_NO_FWD",
3897 "MSRIndex": "0x1a6,0x1a7",
3898 "SampleAfterValue": "100003",
3899 "BriefDescription": "Counts demand data reads that hit in the L3 and the snoops to sibling cores hit in either E/S state and the line is not forwarded.",
3900 "Offcore": "1",
3901 "CounterHTOff": "0,1,2,3"
3902 },
3903 {
3904 "EventCode": "0xB7, 0xBB",
3905 "MSRValue": "0x02001c0001 ",
3906 "Counter": "0,1,2,3",
3907 "UMask": "0x1",
3908 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_MISS",
3909 "MSRIndex": "0x1a6,0x1a7",
3910 "SampleAfterValue": "100003",
3911 "BriefDescription": "Counts demand data reads that hit in the L3 and the snoops sent to sibling cores return clean response.",
3912 "Offcore": "1",
3913 "CounterHTOff": "0,1,2,3"
3914 },
3915 {
3916 "EventCode": "0xB7, 0xBB",
3917 "MSRValue": "0x01001c0001 ",
3918 "Counter": "0,1,2,3",
3919 "UMask": "0x1",
3920 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_NOT_NEEDED",
3921 "MSRIndex": "0x1a6,0x1a7",
3922 "SampleAfterValue": "100003",
3923 "BriefDescription": "Counts demand data reads that hit in the L3 and sibling core snoops are not needed as either the core-valid bit is not set or the shared line is present in multiple cores.",
3924 "Offcore": "1",
3925 "CounterHTOff": "0,1,2,3"
3926 },
3927 {
3928 "EventCode": "0xB7, 0xBB",
3929 "MSRValue": "0x00801c0001 ",
3930 "Counter": "0,1,2,3",
3931 "UMask": "0x1",
3932 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_NONE",
3933 "MSRIndex": "0x1a6,0x1a7",
3934 "SampleAfterValue": "100003",
3935 "BriefDescription": "DEMAND_DATA_RD & L3_HIT & SNOOP_NONE",
3936 "Offcore": "1",
3937 "CounterHTOff": "0,1,2,3"
3938 },
3939 {
3940 "EventCode": "0xB7, 0xBB",
3941 "MSRValue": "0x00401c0001 ",
3942 "Counter": "0,1,2,3",
3943 "UMask": "0x1",
3944 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SPL_HIT",
3945 "MSRIndex": "0x1a6,0x1a7",
3946 "SampleAfterValue": "100003",
3947 "BriefDescription": "DEMAND_DATA_RD & L3_HIT & SPL_HIT",
3948 "Offcore": "1",
3949 "CounterHTOff": "0,1,2,3"
3950 },
3951 {
3952 "EventCode": "0xB7, 0xBB",
3953 "MSRValue": "0x3fc0100001 ",
3954 "Counter": "0,1,2,3",
3955 "UMask": "0x1",
3956 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.ANY_SNOOP",
3957 "MSRIndex": "0x1a6,0x1a7",
3958 "SampleAfterValue": "100003",
3959 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & ANY_SNOOP",
3960 "Offcore": "1",
3961 "CounterHTOff": "0,1,2,3"
3962 },
3963 {
3964 "EventCode": "0xB7, 0xBB",
3965 "MSRValue": "0x1000100001 ",
3966 "Counter": "0,1,2,3",
3967 "UMask": "0x1",
3968 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.SNOOP_HITM",
3969 "MSRIndex": "0x1a6,0x1a7",
3970 "SampleAfterValue": "100003",
3971 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & SNOOP_HITM",
3972 "Offcore": "1",
3973 "CounterHTOff": "0,1,2,3"
3974 },
3975 {
3976 "EventCode": "0xB7, 0xBB",
3977 "MSRValue": "0x0400100001 ",
3978 "Counter": "0,1,2,3",
3979 "UMask": "0x1",
3980 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.SNOOP_HIT_NO_FWD",
3981 "MSRIndex": "0x1a6,0x1a7",
3982 "SampleAfterValue": "100003",
3983 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & SNOOP_HIT_NO_FWD",
3984 "Offcore": "1",
3985 "CounterHTOff": "0,1,2,3"
3986 },
3987 {
3988 "EventCode": "0xB7, 0xBB",
3989 "MSRValue": "0x0200100001 ",
3990 "Counter": "0,1,2,3",
3991 "UMask": "0x1",
3992 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.SNOOP_MISS",
3993 "MSRIndex": "0x1a6,0x1a7",
3994 "SampleAfterValue": "100003",
3995 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & SNOOP_MISS",
3996 "Offcore": "1",
3997 "CounterHTOff": "0,1,2,3"
3998 },
3999 {
4000 "EventCode": "0xB7, 0xBB",
4001 "MSRValue": "0x0100100001 ",
4002 "Counter": "0,1,2,3",
4003 "UMask": "0x1",
4004 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.SNOOP_NOT_NEEDED",
4005 "MSRIndex": "0x1a6,0x1a7",
4006 "SampleAfterValue": "100003",
4007 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & SNOOP_NOT_NEEDED",
4008 "Offcore": "1",
4009 "CounterHTOff": "0,1,2,3"
4010 },
4011 {
4012 "EventCode": "0xB7, 0xBB",
4013 "MSRValue": "0x0080100001 ",
4014 "Counter": "0,1,2,3",
4015 "UMask": "0x1",
4016 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.SNOOP_NONE",
4017 "MSRIndex": "0x1a6,0x1a7",
4018 "SampleAfterValue": "100003",
4019 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & SNOOP_NONE",
4020 "Offcore": "1",
4021 "CounterHTOff": "0,1,2,3"
4022 },
4023 {
4024 "EventCode": "0xB7, 0xBB",
4025 "MSRValue": "0x0040100001 ",
4026 "Counter": "0,1,2,3",
4027 "UMask": "0x1",
4028 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.SPL_HIT",
4029 "MSRIndex": "0x1a6,0x1a7",
4030 "SampleAfterValue": "100003",
4031 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & SPL_HIT",
4032 "Offcore": "1",
4033 "CounterHTOff": "0,1,2,3"
4034 },
4035 {
4036 "EventCode": "0xB7, 0xBB",
4037 "MSRValue": "0x3fc0080001 ",
4038 "Counter": "0,1,2,3",
4039 "UMask": "0x1",
4040 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.ANY_SNOOP",
4041 "MSRIndex": "0x1a6,0x1a7",
4042 "SampleAfterValue": "100003",
4043 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & ANY_SNOOP",
4044 "Offcore": "1",
4045 "CounterHTOff": "0,1,2,3"
4046 },
4047 {
4048 "EventCode": "0xB7, 0xBB",
4049 "MSRValue": "0x1000080001 ",
4050 "Counter": "0,1,2,3",
4051 "UMask": "0x1",
4052 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.SNOOP_HITM",
4053 "MSRIndex": "0x1a6,0x1a7",
4054 "SampleAfterValue": "100003",
4055 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & SNOOP_HITM",
4056 "Offcore": "1",
4057 "CounterHTOff": "0,1,2,3"
4058 },
4059 {
4060 "EventCode": "0xB7, 0xBB",
4061 "MSRValue": "0x0400080001 ",
4062 "Counter": "0,1,2,3",
4063 "UMask": "0x1",
4064 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.SNOOP_HIT_NO_FWD",
4065 "MSRIndex": "0x1a6,0x1a7",
4066 "SampleAfterValue": "100003",
4067 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & SNOOP_HIT_NO_FWD",
4068 "Offcore": "1",
4069 "CounterHTOff": "0,1,2,3"
4070 },
4071 {
4072 "EventCode": "0xB7, 0xBB",
4073 "MSRValue": "0x0200080001 ",
4074 "Counter": "0,1,2,3",
4075 "UMask": "0x1",
4076 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.SNOOP_MISS",
4077 "MSRIndex": "0x1a6,0x1a7",
4078 "SampleAfterValue": "100003",
4079 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & SNOOP_MISS",
4080 "Offcore": "1",
4081 "CounterHTOff": "0,1,2,3"
4082 },
4083 {
4084 "EventCode": "0xB7, 0xBB",
4085 "MSRValue": "0x0100080001 ",
4086 "Counter": "0,1,2,3",
4087 "UMask": "0x1",
4088 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.SNOOP_NOT_NEEDED",
4089 "MSRIndex": "0x1a6,0x1a7",
4090 "SampleAfterValue": "100003",
4091 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & SNOOP_NOT_NEEDED",
4092 "Offcore": "1",
4093 "CounterHTOff": "0,1,2,3"
4094 },
4095 {
4096 "EventCode": "0xB7, 0xBB",
4097 "MSRValue": "0x0080080001 ",
4098 "Counter": "0,1,2,3",
4099 "UMask": "0x1",
4100 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.SNOOP_NONE",
4101 "MSRIndex": "0x1a6,0x1a7",
4102 "SampleAfterValue": "100003",
4103 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & SNOOP_NONE",
4104 "Offcore": "1",
4105 "CounterHTOff": "0,1,2,3"
4106 },
4107 {
4108 "EventCode": "0xB7, 0xBB",
4109 "MSRValue": "0x0040080001 ",
4110 "Counter": "0,1,2,3",
4111 "UMask": "0x1",
4112 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.SPL_HIT",
4113 "MSRIndex": "0x1a6,0x1a7",
4114 "SampleAfterValue": "100003",
4115 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & SPL_HIT",
4116 "Offcore": "1",
4117 "CounterHTOff": "0,1,2,3"
4118 },
4119 {
4120 "EventCode": "0xB7, 0xBB",
4121 "MSRValue": "0x3fc0040001 ",
4122 "Counter": "0,1,2,3",
4123 "UMask": "0x1",
4124 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.ANY_SNOOP",
4125 "MSRIndex": "0x1a6,0x1a7",
4126 "SampleAfterValue": "100003",
4127 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & ANY_SNOOP",
4128 "Offcore": "1",
4129 "CounterHTOff": "0,1,2,3"
4130 },
4131 {
4132 "EventCode": "0xB7, 0xBB",
4133 "MSRValue": "0x1000040001 ",
4134 "Counter": "0,1,2,3",
4135 "UMask": "0x1",
4136 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.SNOOP_HITM",
4137 "MSRIndex": "0x1a6,0x1a7",
4138 "SampleAfterValue": "100003",
4139 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & SNOOP_HITM",
4140 "Offcore": "1",
4141 "CounterHTOff": "0,1,2,3"
4142 },
4143 {
4144 "EventCode": "0xB7, 0xBB",
4145 "MSRValue": "0x0400040001 ",
4146 "Counter": "0,1,2,3",
4147 "UMask": "0x1",
4148 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.SNOOP_HIT_NO_FWD",
4149 "MSRIndex": "0x1a6,0x1a7",
4150 "SampleAfterValue": "100003",
4151 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & SNOOP_HIT_NO_FWD",
4152 "Offcore": "1",
4153 "CounterHTOff": "0,1,2,3"
4154 },
4155 {
4156 "EventCode": "0xB7, 0xBB",
4157 "MSRValue": "0x0200040001 ",
4158 "Counter": "0,1,2,3",
4159 "UMask": "0x1",
4160 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.SNOOP_MISS",
4161 "MSRIndex": "0x1a6,0x1a7",
4162 "SampleAfterValue": "100003",
4163 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & SNOOP_MISS",
4164 "Offcore": "1",
4165 "CounterHTOff": "0,1,2,3"
4166 },
4167 {
4168 "EventCode": "0xB7, 0xBB",
4169 "MSRValue": "0x0100040001 ",
4170 "Counter": "0,1,2,3",
4171 "UMask": "0x1",
4172 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.SNOOP_NOT_NEEDED",
4173 "MSRIndex": "0x1a6,0x1a7",
4174 "SampleAfterValue": "100003",
4175 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & SNOOP_NOT_NEEDED",
4176 "Offcore": "1",
4177 "CounterHTOff": "0,1,2,3"
4178 },
4179 {
4180 "EventCode": "0xB7, 0xBB",
4181 "MSRValue": "0x0080040001 ",
4182 "Counter": "0,1,2,3",
4183 "UMask": "0x1",
4184 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.SNOOP_NONE",
4185 "MSRIndex": "0x1a6,0x1a7",
4186 "SampleAfterValue": "100003",
4187 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & SNOOP_NONE",
4188 "Offcore": "1",
4189 "CounterHTOff": "0,1,2,3"
4190 },
4191 {
4192 "EventCode": "0xB7, 0xBB",
4193 "MSRValue": "0x0040040001 ",
4194 "Counter": "0,1,2,3",
4195 "UMask": "0x1",
4196 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.SPL_HIT",
4197 "MSRIndex": "0x1a6,0x1a7",
4198 "SampleAfterValue": "100003",
4199 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & SPL_HIT",
4200 "Offcore": "1",
4201 "CounterHTOff": "0,1,2,3"
4202 },
4203 {
4204 "EventCode": "0xB7, 0xBB",
4205 "MSRValue": "0x3fc0020001 ",
4206 "Counter": "0,1,2,3",
4207 "UMask": "0x1",
4208 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.ANY_SNOOP",
4209 "MSRIndex": "0x1a6,0x1a7",
4210 "SampleAfterValue": "100003",
4211 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & ANY_SNOOP",
4212 "Offcore": "1",
4213 "CounterHTOff": "0,1,2,3"
4214 },
4215 {
4216 "EventCode": "0xB7, 0xBB",
4217 "MSRValue": "0x1000020001 ",
4218 "Counter": "0,1,2,3",
4219 "UMask": "0x1",
4220 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_HITM",
4221 "MSRIndex": "0x1a6,0x1a7",
4222 "SampleAfterValue": "100003",
4223 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_HITM",
4224 "Offcore": "1",
4225 "CounterHTOff": "0,1,2,3"
4226 },
4227 {
4228 "EventCode": "0xB7, 0xBB",
4229 "MSRValue": "0x0400020001 ",
4230 "Counter": "0,1,2,3",
4231 "UMask": "0x1",
4232 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_HIT_NO_FWD",
4233 "MSRIndex": "0x1a6,0x1a7",
4234 "SampleAfterValue": "100003",
4235 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_HIT_NO_FWD",
4236 "Offcore": "1",
4237 "CounterHTOff": "0,1,2,3"
4238 },
4239 {
4240 "EventCode": "0xB7, 0xBB",
4241 "MSRValue": "0x0200020001 ",
4242 "Counter": "0,1,2,3",
4243 "UMask": "0x1",
4244 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_MISS",
4245 "MSRIndex": "0x1a6,0x1a7",
4246 "SampleAfterValue": "100003",
4247 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_MISS",
4248 "Offcore": "1",
4249 "CounterHTOff": "0,1,2,3"
4250 },
4251 {
4252 "EventCode": "0xB7, 0xBB",
4253 "MSRValue": "0x0100020001 ",
4254 "Counter": "0,1,2,3",
4255 "UMask": "0x1",
4256 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_NOT_NEEDED",
4257 "MSRIndex": "0x1a6,0x1a7",
4258 "SampleAfterValue": "100003",
4259 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_NOT_NEEDED",
4260 "Offcore": "1",
4261 "CounterHTOff": "0,1,2,3"
4262 },
4263 {
4264 "EventCode": "0xB7, 0xBB",
4265 "MSRValue": "0x0080020001 ",
4266 "Counter": "0,1,2,3",
4267 "UMask": "0x1",
4268 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_NONE",
4269 "MSRIndex": "0x1a6,0x1a7",
4270 "SampleAfterValue": "100003",
4271 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_NONE",
4272 "Offcore": "1",
4273 "CounterHTOff": "0,1,2,3"
4274 },
4275 {
4276 "EventCode": "0xB7, 0xBB",
4277 "MSRValue": "0x0040020001 ",
4278 "Counter": "0,1,2,3",
4279 "UMask": "0x1",
4280 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SPL_HIT",
4281 "MSRIndex": "0x1a6,0x1a7",
4282 "SampleAfterValue": "100003",
4283 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SPL_HIT",
4284 "Offcore": "1",
4285 "CounterHTOff": "0,1,2,3"
4286 },
4287 {
4288 "EventCode": "0xB7, 0xBB",
4289 "MSRValue": "0x0000010001 ",
4290 "Counter": "0,1,2,3",
4291 "UMask": "0x1",
4292 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
4293 "MSRIndex": "0x1a6,0x1a7",
4294 "SampleAfterValue": "100003",
4295 "BriefDescription": "Counts demand data reads that have any response type.",
4296 "Offcore": "1",
4297 "CounterHTOff": "0,1,2,3"
4298 }
4299] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/skylake/floating-point.json b/tools/perf/pmu-events/arch/x86/skylake/floating-point.json
new file mode 100644
index 000000000000..3c6b59af5d54
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/skylake/floating-point.json
@@ -0,0 +1,68 @@
1[
2 {
3 "EventCode": "0xC7",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Number of SSE/AVX computational scalar double precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0xC7",
13 "Counter": "0,1,2,3",
14 "UMask": "0x2",
15 "EventName": "FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
16 "SampleAfterValue": "2000003",
17 "BriefDescription": "Number of SSE/AVX computational scalar single precision floating-point instructions retired. Each count represents 1 computation. Applies to SSE* and AVX* scalar single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT FM(N)ADD/SUB. FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0xC7",
22 "Counter": "0,1,2,3",
23 "UMask": "0x4",
24 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE",
25 "SampleAfterValue": "2000003",
26 "BriefDescription": "Number of SSE/AVX computational 128-bit packed double precision floating-point instructions retired. Each count represents 2 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
27 "CounterHTOff": "0,1,2,3,4,5,6,7"
28 },
29 {
30 "PublicDescription": "Number of SSE/AVX computational 128-bit packed single precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
31 "EventCode": "0xC7",
32 "Counter": "0,1,2,3",
33 "UMask": "0x8",
34 "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE",
35 "SampleAfterValue": "2000003",
36 "BriefDescription": "Number of SSE/AVX computational 128-bit packed single precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element. ",
37 "CounterHTOff": "0,1,2,3,4,5,6,7"
38 },
39 {
40 "EventCode": "0xC7",
41 "Counter": "0,1,2,3",
42 "UMask": "0x10",
43 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE",
44 "SampleAfterValue": "2000003",
45 "BriefDescription": "Number of SSE/AVX computational 256-bit packed double precision floating-point instructions retired. Each count represents 4 computations. Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
46 "CounterHTOff": "0,1,2,3,4,5,6,7"
47 },
48 {
49 "EventCode": "0xC7",
50 "Counter": "0,1,2,3",
51 "UMask": "0x20",
52 "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE",
53 "SampleAfterValue": "2000003",
54 "BriefDescription": "Number of SSE/AVX computational 256-bit packed single precision floating-point instructions retired. Each count represents 8 computations. Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP RSQRT SQRT DPP FM(N)ADD/SUB. DPP and FM(N)ADD/SUB instructions count twice as they perform multiple calculations per element.",
55 "CounterHTOff": "0,1,2,3,4,5,6,7"
56 },
57 {
58 "PublicDescription": "This event counts cycles with any input and output SSE or x87 FP assist. If an input and output assist are detected on the same cycle the event increments by 1.",
59 "EventCode": "0xCA",
60 "Counter": "0,1,2,3",
61 "UMask": "0x1e",
62 "EventName": "FP_ASSIST.ANY",
63 "SampleAfterValue": "100003",
64 "BriefDescription": "Cycles with any input/output SSE or FP assist",
65 "CounterMask": "1",
66 "CounterHTOff": "0,1,2,3,4,5,6,7"
67 }
68] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/skylake/frontend.json b/tools/perf/pmu-events/arch/x86/skylake/frontend.json
new file mode 100644
index 000000000000..e697dbd63e6e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/skylake/frontend.json
@@ -0,0 +1,472 @@
1[
2 {
3 "EventCode": "0x80",
4 "Counter": "0,1,2,3",
5 "UMask": "0x4",
6 "EventName": "ICACHE_16B.IFDATA_STALL",
7 "SampleAfterValue": "2000003",
8 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction cache miss.",
9 "CounterHTOff": "0,1,2,3,4,5,6,7"
10 },
11 {
12 "EventCode": "0x83",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "ICACHE_64B.IFTAG_HIT",
16 "SampleAfterValue": "200003",
17 "BriefDescription": "Instruction fetch tag lookups that hit in the instruction cache (L1I). Counts at 64-byte cache-line granularity.",
18 "CounterHTOff": "0,1,2,3,4,5,6,7"
19 },
20 {
21 "EventCode": "0x83",
22 "Counter": "0,1,2,3",
23 "UMask": "0x2",
24 "EventName": "ICACHE_64B.IFTAG_MISS",
25 "SampleAfterValue": "200003",
26 "BriefDescription": "Instruction fetch tag lookups that miss in the instruction cache (L1I). Counts at 64-byte cache-line granularity.",
27 "CounterHTOff": "0,1,2,3,4,5,6,7"
28 },
29 {
30 "EventCode": "0x83",
31 "Counter": "0,1,2,3",
32 "UMask": "0x4",
33 "EventName": "ICACHE_64B.IFTAG_STALL",
34 "SampleAfterValue": "200003",
35 "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction cache tag miss.",
36 "CounterHTOff": "0,1,2,3,4,5,6,7"
37 },
38 {
39 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may 'bypass' the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
40 "EventCode": "0x79",
41 "Counter": "0,1,2,3",
42 "UMask": "0x4",
43 "EventName": "IDQ.MITE_UOPS",
44 "SampleAfterValue": "2000003",
45 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
46 "CounterHTOff": "0,1,2,3,4,5,6,7"
47 },
48 {
49 "PublicDescription": "This event counts the number of uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may 'bypass' the IDQ.",
50 "EventCode": "0x79",
51 "Counter": "0,1,2,3",
52 "UMask": "0x8",
53 "EventName": "IDQ.DSB_UOPS",
54 "SampleAfterValue": "2000003",
55 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
56 "CounterHTOff": "0,1,2,3,4,5,6,7"
57 },
58 {
59 "PublicDescription": "This event counts the number of uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may 'bypass' the IDQ.",
60 "EventCode": "0x79",
61 "Counter": "0,1,2,3",
62 "UMask": "0x20",
63 "EventName": "IDQ.MS_MITE_UOPS",
64 "SampleAfterValue": "2000003",
65 "BriefDescription": "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
66 "CounterHTOff": "0,1,2,3,4,5,6,7"
67 },
68 {
69 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may 'bypass' the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
70 "EventCode": "0x79",
71 "Counter": "0,1,2,3",
72 "UMask": "0x30",
73 "EventName": "IDQ.MS_CYCLES",
74 "SampleAfterValue": "2000003",
75 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
76 "CounterMask": "1",
77 "CounterHTOff": "0,1,2,3,4,5,6,7"
78 },
79 {
80 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may 'bypass' the IDQ.",
81 "EventCode": "0x79",
82 "Counter": "0,1,2,3",
83 "UMask": "0x4",
84 "EventName": "IDQ.MITE_CYCLES",
85 "SampleAfterValue": "2000003",
86 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path",
87 "CounterMask": "1",
88 "CounterHTOff": "0,1,2,3,4,5,6,7"
89 },
90 {
91 "PublicDescription": "This event counts cycles during which uops are being delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may 'bypass' the IDQ.",
92 "EventCode": "0x79",
93 "Counter": "0,1,2,3",
94 "UMask": "0x8",
95 "EventName": "IDQ.DSB_CYCLES",
96 "SampleAfterValue": "2000003",
97 "BriefDescription": "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
98 "CounterMask": "1",
99 "CounterHTOff": "0,1,2,3,4,5,6,7"
100 },
101 {
102 "PublicDescription": "This event counts cycles during which uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while the Microcode Sequencer (MS) is busy. Counting includes uops that may 'bypass' the IDQ.",
103 "EventCode": "0x79",
104 "Counter": "0,1,2,3",
105 "UMask": "0x10",
106 "EventName": "IDQ.MS_DSB_CYCLES",
107 "SampleAfterValue": "2000003",
108 "BriefDescription": "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
109 "CounterMask": "1",
110 "CounterHTOff": "0,1,2,3,4,5,6,7"
111 },
112 {
113 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may 'bypass' the IDQ.",
114 "EventCode": "0x79",
115 "Counter": "0,1,2,3",
116 "UMask": "0x18",
117 "EventName": "IDQ.ALL_DSB_CYCLES_4_UOPS",
118 "SampleAfterValue": "2000003",
119 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
120 "CounterMask": "4",
121 "CounterHTOff": "0,1,2,3,4,5,6,7"
122 },
123 {
124 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path. Counting includes uops that may 'bypass' the IDQ.",
125 "EventCode": "0x79",
126 "Counter": "0,1,2,3",
127 "UMask": "0x18",
128 "EventName": "IDQ.ALL_DSB_CYCLES_ANY_UOPS",
129 "SampleAfterValue": "2000003",
130 "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
131 "CounterMask": "1",
132 "CounterHTOff": "0,1,2,3,4,5,6,7"
133 },
134 {
135 "PublicDescription": "This event counts the number of cycles 4 uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may 'bypass' the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
136 "EventCode": "0x79",
137 "Counter": "0,1,2,3",
138 "UMask": "0x24",
139 "EventName": "IDQ.ALL_MITE_CYCLES_4_UOPS",
140 "SampleAfterValue": "2000003",
141 "BriefDescription": "Cycles MITE is delivering 4 Uops",
142 "CounterMask": "4",
143 "CounterHTOff": "0,1,2,3,4,5,6,7"
144 },
145 {
146 "PublicDescription": "This event counts the number of cycles uops were delivered to Instruction Decode Queue (IDQ) from the MITE path. Counting includes uops that may 'bypass' the IDQ. This also means that uops are not being delivered from the Decode Stream Buffer (DSB).",
147 "EventCode": "0x79",
148 "Counter": "0,1,2,3",
149 "UMask": "0x24",
150 "EventName": "IDQ.ALL_MITE_CYCLES_ANY_UOPS",
151 "SampleAfterValue": "2000003",
152 "BriefDescription": "Cycles MITE is delivering any Uop",
153 "CounterMask": "1",
154 "CounterHTOff": "0,1,2,3,4,5,6,7"
155 },
156 {
157 "PublicDescription": "This event counts the number of uops not delivered to Resource Allocation Table (RAT) per thread adding ?4 ? x? when Resource Allocation Table (RAT) is not stalled and Instruction Decode Queue (IDQ) delivers x uops to Resource Allocation Table (RAT) (where x belongs to {0,1,2,3}). Counting does not cover cases when:\n a. IDQ-Resource Allocation Table (RAT) pipe serves the other thread\n\n b. Resource Allocation Table (RAT) is stalled for the thread (including uop drops and clear BE conditions)\n \n c. Instruction Decode Queue (IDQ) delivers four uops.",
158 "EventCode": "0x9C",
159 "Counter": "0,1,2,3",
160 "UMask": "0x1",
161 "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
162 "SampleAfterValue": "2000003",
163 "BriefDescription": "Uops not delivered to Resource Allocation Table (RAT) per thread when backend of the machine is not stalled",
164 "CounterHTOff": "0,1,2,3,4,5,6,7"
165 },
166 {
167 "PublicDescription": "This event counts, on the per-thread basis, cycles when no uops are delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core =4.",
168 "EventCode": "0x9C",
169 "Counter": "0,1,2,3",
170 "UMask": "0x1",
171 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
172 "SampleAfterValue": "2000003",
173 "BriefDescription": "Cycles per thread when 4 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
174 "CounterMask": "4",
175 "CounterHTOff": "0,1,2,3,4,5,6,7"
176 },
177 {
178 "PublicDescription": "This event counts, on the per-thread basis, cycles when less than 1 uop is delivered to Resource Allocation Table (RAT). IDQ_Uops_Not_Delivered.core >=3.",
179 "EventCode": "0x9C",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_1_UOP_DELIV.CORE",
183 "SampleAfterValue": "2000003",
184 "BriefDescription": "Cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend of the machine is not stalled",
185 "CounterMask": "3",
186 "CounterHTOff": "0,1,2,3,4,5,6,7"
187 },
188 {
189 "EventCode": "0x9C",
190 "Counter": "0,1,2,3",
191 "UMask": "0x1",
192 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_2_UOP_DELIV.CORE",
193 "SampleAfterValue": "2000003",
194 "BriefDescription": "Cycles with less than 2 uops delivered by the front end.",
195 "CounterMask": "2",
196 "CounterHTOff": "0,1,2,3,4,5,6,7"
197 },
198 {
199 "EventCode": "0x9C",
200 "Counter": "0,1,2,3",
201 "UMask": "0x1",
202 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_LE_3_UOP_DELIV.CORE",
203 "SampleAfterValue": "2000003",
204 "BriefDescription": "Cycles with less than 3 uops delivered by the front end.",
205 "CounterMask": "1",
206 "CounterHTOff": "0,1,2,3,4,5,6,7"
207 },
208 {
209 "EventCode": "0x9C",
210 "Invert": "1",
211 "Counter": "0,1,2,3",
212 "UMask": "0x1",
213 "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
214 "SampleAfterValue": "2000003",
215 "BriefDescription": "Counts cycles FE delivered 4 uops or Resource Allocation Table (RAT) was stalling FE.",
216 "CounterMask": "1",
217 "CounterHTOff": "0,1,2,3,4,5,6,7"
218 },
219 {
220 "PublicDescription": "This event counts Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles. These cycles do not include uops routed through because of the switch itself, for example, when Instruction Decode Queue (IDQ) pre-allocation is unavailable, or Instruction Decode Queue (IDQ) is full. SBD-to-MITE switch true penalty cycles happen after the merge mux (MM) receives Decode Stream Buffer (DSB) Sync-indication until receiving the first MITE uop. \nMM is placed before Instruction Decode Queue (IDQ) to merge uops being fed from the MITE and Decode Stream Buffer (DSB) paths. Decode Stream Buffer (DSB) inserts the Sync-indication whenever a Decode Stream Buffer (DSB)-to-MITE switch occurs.\nPenalty: A Decode Stream Buffer (DSB) hit followed by a Decode Stream Buffer (DSB) miss can cost up to six cycles in which no uops are delivered to the IDQ. Most often, such switches from the Decode Stream Buffer (DSB) to the legacy pipeline cost 0?2 cycles.",
221 "EventCode": "0xAB",
222 "Counter": "0,1,2,3",
223 "UMask": "0x2",
224 "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
225 "SampleAfterValue": "2000003",
226 "BriefDescription": "Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles.",
227 "CounterHTOff": "0,1,2,3,4,5,6,7"
228 },
229 {
230 "PEBS": "1",
231 "EventCode": "0xC6",
232 "MSRValue": "0x11",
233 "Counter": "0,1,2,3",
234 "UMask": "0x1",
235 "EventName": "FRONTEND_RETIRED.DSB_MISS",
236 "MSRIndex": "0x3F7",
237 "SampleAfterValue": "100007",
238 "BriefDescription": "Retired Instructions who experienced decode stream buffer (DSB - the decoded instruction-cache) miss.",
239 "TakenAlone": "1",
240 "CounterHTOff": "0,1,2,3"
241 },
242 {
243 "PEBS": "1",
244 "EventCode": "0xC6",
245 "MSRValue": "0x12",
246 "Counter": "0,1,2,3",
247 "UMask": "0x1",
248 "EventName": "FRONTEND_RETIRED.L1I_MISS",
249 "MSRIndex": "0x3F7",
250 "SampleAfterValue": "100007",
251 "BriefDescription": "Retired Instructions who experienced Instruction L1 Cache true miss.",
252 "TakenAlone": "1",
253 "CounterHTOff": "0,1,2,3"
254 },
255 {
256 "PEBS": "1",
257 "EventCode": "0xC6",
258 "MSRValue": "0x13",
259 "Counter": "0,1,2,3",
260 "UMask": "0x1",
261 "EventName": "FRONTEND_RETIRED.L2_MISS",
262 "MSRIndex": "0x3F7",
263 "SampleAfterValue": "100007",
264 "BriefDescription": "Retired Instructions who experienced Instruction L2 Cache true miss.",
265 "TakenAlone": "1",
266 "CounterHTOff": "0,1,2,3"
267 },
268 {
269 "PEBS": "1",
270 "EventCode": "0xC6",
271 "MSRValue": "0x14",
272 "Counter": "0,1,2,3",
273 "UMask": "0x1",
274 "EventName": "FRONTEND_RETIRED.ITLB_MISS",
275 "MSRIndex": "0x3F7",
276 "SampleAfterValue": "100007",
277 "BriefDescription": "Retired Instructions who experienced iTLB true miss.",
278 "TakenAlone": "1",
279 "CounterHTOff": "0,1,2,3"
280 },
281 {
282 "PEBS": "1",
283 "EventCode": "0xC6",
284 "MSRValue": "0x15",
285 "Counter": "0,1,2,3",
286 "UMask": "0x1",
287 "EventName": "FRONTEND_RETIRED.STLB_MISS",
288 "MSRIndex": "0x3F7",
289 "SampleAfterValue": "100007",
290 "BriefDescription": "Retired Instructions who experienced STLB (2nd level TLB) true miss.",
291 "TakenAlone": "1",
292 "CounterHTOff": "0,1,2,3"
293 },
294 {
295 "PEBS": "1",
296 "EventCode": "0xC6",
297 "MSRValue": "0x400206",
298 "Counter": "0,1,2,3",
299 "UMask": "0x1",
300 "EventName": "FRONTEND_RETIRED.LATENCY_GE_2",
301 "MSRIndex": "0x3F7",
302 "SampleAfterValue": "100007",
303 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 2 cycles which was not interrupted by a back-end stall.",
304 "TakenAlone": "1",
305 "CounterHTOff": "0,1,2,3"
306 },
307 {
308 "PEBS": "1",
309 "EventCode": "0xC6",
310 "MSRValue": "0x200206",
311 "Counter": "0,1,2,3",
312 "UMask": "0x1",
313 "EventName": "FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_2",
314 "MSRIndex": "0x3F7",
315 "SampleAfterValue": "100007",
316 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end had at least 2 bubble-slots for a period of 2 cycles which was not interrupted by a back-end stall.",
317 "TakenAlone": "1",
318 "CounterHTOff": "0,1,2,3"
319 },
320 {
321 "PEBS": "1",
322 "EventCode": "0xC6",
323 "MSRValue": "0x400406",
324 "Counter": "0,1,2,3",
325 "UMask": "0x1",
326 "EventName": "FRONTEND_RETIRED.LATENCY_GE_4",
327 "MSRIndex": "0x3F7",
328 "SampleAfterValue": "100007",
329 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 4 cycles which was not interrupted by a back-end stall.",
330 "TakenAlone": "1",
331 "CounterHTOff": "0,1,2,3"
332 },
333 {
334 "PublicDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer.",
335 "EventCode": "0x79",
336 "Counter": "0,1,2,3",
337 "UMask": "0x30",
338 "EdgeDetect": "1",
339 "EventName": "IDQ.MS_SWITCHES",
340 "SampleAfterValue": "2000003",
341 "BriefDescription": "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer",
342 "CounterMask": "1",
343 "CounterHTOff": "0,1,2,3,4,5,6,7"
344 },
345 {
346 "PublicDescription": "This event counts the total number of uops delivered to Instruction Decode Queue (IDQ) while the Microcode Sequenser (MS) is busy. Counting includes uops that may 'bypass' the IDQ. Uops maybe initiated by Decode Stream Buffer (DSB) or MITE.",
347 "EventCode": "0x79",
348 "Counter": "0,1,2,3",
349 "UMask": "0x30",
350 "EventName": "IDQ.MS_UOPS",
351 "SampleAfterValue": "2000003",
352 "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) while Microcode Sequenser (MS) is busy",
353 "CounterHTOff": "0,1,2,3,4,5,6,7"
354 },
355 {
356 "PEBS": "1",
357 "EventCode": "0xC6",
358 "MSRValue": "0x400806",
359 "Counter": "0,1,2,3",
360 "UMask": "0x1",
361 "EventName": "FRONTEND_RETIRED.LATENCY_GE_8",
362 "MSRIndex": "0x3F7",
363 "SampleAfterValue": "100007",
364 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 8 cycles which was not interrupted by a back-end stall.",
365 "TakenAlone": "1",
366 "CounterHTOff": "0,1,2,3"
367 },
368 {
369 "PEBS": "1",
370 "EventCode": "0xC6",
371 "MSRValue": "0x401006",
372 "Counter": "0,1,2,3",
373 "UMask": "0x1",
374 "EventName": "FRONTEND_RETIRED.LATENCY_GE_16",
375 "MSRIndex": "0x3F7",
376 "SampleAfterValue": "100007",
377 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 16 cycles which was not interrupted by a back-end stall.",
378 "TakenAlone": "1",
379 "CounterHTOff": "0,1,2,3"
380 },
381 {
382 "PEBS": "1",
383 "EventCode": "0xC6",
384 "MSRValue": "0x402006",
385 "Counter": "0,1,2,3",
386 "UMask": "0x1",
387 "EventName": "FRONTEND_RETIRED.LATENCY_GE_32",
388 "MSRIndex": "0x3F7",
389 "SampleAfterValue": "100007",
390 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 32 cycles which was not interrupted by a back-end stall.",
391 "TakenAlone": "1",
392 "CounterHTOff": "0,1,2,3"
393 },
394 {
395 "PEBS": "1",
396 "EventCode": "0xC6",
397 "MSRValue": "0x404006",
398 "Counter": "0,1,2,3",
399 "UMask": "0x1",
400 "EventName": "FRONTEND_RETIRED.LATENCY_GE_64",
401 "MSRIndex": "0x3F7",
402 "SampleAfterValue": "100007",
403 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 64 cycles which was not interrupted by a back-end stall.",
404 "TakenAlone": "1",
405 "CounterHTOff": "0,1,2,3"
406 },
407 {
408 "PEBS": "1",
409 "EventCode": "0xC6",
410 "MSRValue": "0x408006",
411 "Counter": "0,1,2,3",
412 "UMask": "0x1",
413 "EventName": "FRONTEND_RETIRED.LATENCY_GE_128",
414 "MSRIndex": "0x3F7",
415 "SampleAfterValue": "100007",
416 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 128 cycles which was not interrupted by a back-end stall.",
417 "TakenAlone": "1",
418 "CounterHTOff": "0,1,2,3"
419 },
420 {
421 "PEBS": "1",
422 "EventCode": "0xC6",
423 "MSRValue": "0x410006",
424 "Counter": "0,1,2,3",
425 "UMask": "0x1",
426 "EventName": "FRONTEND_RETIRED.LATENCY_GE_256",
427 "MSRIndex": "0x3F7",
428 "SampleAfterValue": "100007",
429 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 256 cycles which was not interrupted by a back-end stall.",
430 "TakenAlone": "1",
431 "CounterHTOff": "0,1,2,3"
432 },
433 {
434 "PEBS": "1",
435 "EventCode": "0xC6",
436 "MSRValue": "0x420006",
437 "Counter": "0,1,2,3",
438 "UMask": "0x1",
439 "EventName": "FRONTEND_RETIRED.LATENCY_GE_512",
440 "MSRIndex": "0x3F7",
441 "SampleAfterValue": "100007",
442 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 512 cycles which was not interrupted by a back-end stall.",
443 "TakenAlone": "1",
444 "CounterHTOff": "0,1,2,3"
445 },
446 {
447 "PEBS": "1",
448 "EventCode": "0xC6",
449 "MSRValue": "0x100206",
450 "Counter": "0,1,2,3",
451 "UMask": "0x1",
452 "EventName": "FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_1",
453 "MSRIndex": "0x3F7",
454 "SampleAfterValue": "100007",
455 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end had at least 1 bubble-slot for a period of 2 cycles which was not interrupted by a back-end stall.",
456 "TakenAlone": "1",
457 "CounterHTOff": "0,1,2,3"
458 },
459 {
460 "PEBS": "1",
461 "EventCode": "0xC6",
462 "MSRValue": "0x300206",
463 "Counter": "0,1,2,3",
464 "UMask": "0x1",
465 "EventName": "FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_3",
466 "MSRIndex": "0x3F7",
467 "SampleAfterValue": "100007",
468 "BriefDescription": "Retired instructions that are fetched after an interval where the front-end had at least 3 bubble-slots for a period of 2 cycles which was not interrupted by a back-end stall.",
469 "TakenAlone": "1",
470 "CounterHTOff": "0,1,2,3"
471 }
472] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/skylake/memory.json b/tools/perf/pmu-events/arch/x86/skylake/memory.json
new file mode 100644
index 000000000000..d7fd5b06825b
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/skylake/memory.json
@@ -0,0 +1,2309 @@
1[
2 {
3 "PublicDescription": "Unfriendly TSX abort triggered by a flowmarker.",
4 "EventCode": "0x5d",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "TX_EXEC.MISC1",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Counts the number of times a class of instructions that may cause a transactional abort was executed. Since this is the count of execution, it may not always cause a transactional abort.",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "PublicDescription": "Unfriendly TSX abort triggered by a vzeroupper instruction.",
14 "EventCode": "0x5d",
15 "Counter": "0,1,2,3",
16 "UMask": "0x2",
17 "EventName": "TX_EXEC.MISC2",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Counts the number of times a class of instructions (e.g., vzeroupper) that may cause a transactional abort was executed inside a transactional region",
20 "CounterHTOff": "0,1,2,3,4,5,6,7"
21 },
22 {
23 "PublicDescription": "Unfriendly TSX abort triggered by a nest count that is too deep.",
24 "EventCode": "0x5d",
25 "Counter": "0,1,2,3",
26 "UMask": "0x4",
27 "EventName": "TX_EXEC.MISC3",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Counts the number of times an instruction execution caused the transactional nest count supported to be exceeded",
30 "CounterHTOff": "0,1,2,3,4,5,6,7"
31 },
32 {
33 "PublicDescription": "RTM region detected inside HLE.",
34 "EventCode": "0x5d",
35 "Counter": "0,1,2,3",
36 "UMask": "0x8",
37 "EventName": "TX_EXEC.MISC4",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Counts the number of times a XBEGIN instruction was executed inside an HLE transactional region.",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "PublicDescription": "Counts the number of times an HLE XACQUIRE instruction was executed inside an RTM transactional region.",
44 "EventCode": "0x5d",
45 "Counter": "0,1,2,3",
46 "UMask": "0x10",
47 "EventName": "TX_EXEC.MISC5",
48 "SampleAfterValue": "2000003",
49 "BriefDescription": "Counts the number of times an HLE XACQUIRE instruction was executed inside an RTM transactional region",
50 "CounterHTOff": "0,1,2,3,4,5,6,7"
51 },
52 {
53 "PublicDescription": "Number of times we entered an HLE region\n does not count nested transactions.",
54 "EventCode": "0xC8",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "HLE_RETIRED.START",
58 "SampleAfterValue": "2000003",
59 "BriefDescription": "Number of times an HLE execution started.",
60 "CounterHTOff": "0,1,2,3,4,5,6,7"
61 },
62 {
63 "PublicDescription": "Number of times HLE commit succeeded.",
64 "EventCode": "0xC8",
65 "Counter": "0,1,2,3",
66 "UMask": "0x2",
67 "EventName": "HLE_RETIRED.COMMIT",
68 "SampleAfterValue": "2000003",
69 "BriefDescription": "Number of times an HLE execution successfully committed",
70 "CounterHTOff": "0,1,2,3,4,5,6,7"
71 },
72 {
73 "PEBS": "1",
74 "PublicDescription": "Number of times HLE abort was triggered.",
75 "EventCode": "0xC8",
76 "Counter": "0,1,2,3",
77 "UMask": "0x4",
78 "EventName": "HLE_RETIRED.ABORTED",
79 "SampleAfterValue": "2000003",
80 "BriefDescription": "Number of times an HLE execution aborted due to any reasons (multiple categories may count as one). ",
81 "CounterHTOff": "0,1,2,3,4,5,6,7"
82 },
83 {
84 "EventCode": "0xC8",
85 "Counter": "0,1,2,3",
86 "UMask": "0x8",
87 "EventName": "HLE_RETIRED.ABORTED_MEM",
88 "SampleAfterValue": "2000003",
89 "BriefDescription": "Number of times an HLE execution aborted due to various memory events (e.g., read/write capacity and conflicts).",
90 "CounterHTOff": "0,1,2,3,4,5,6,7"
91 },
92 {
93 "EventCode": "0xC8",
94 "Counter": "0,1,2,3",
95 "UMask": "0x10",
96 "EventName": "HLE_RETIRED.ABORTED_TIMER",
97 "SampleAfterValue": "2000003",
98 "BriefDescription": "Number of times an HLE execution aborted due to hardware timer expiration.",
99 "CounterHTOff": "0,1,2,3,4,5,6,7"
100 },
101 {
102 "PublicDescription": "Number of times an HLE execution aborted due to HLE-unfriendly instructions and certain unfriendly events (such as AD assists etc.).",
103 "EventCode": "0xC8",
104 "Counter": "0,1,2,3",
105 "UMask": "0x20",
106 "EventName": "HLE_RETIRED.ABORTED_UNFRIENDLY",
107 "SampleAfterValue": "2000003",
108 "BriefDescription": "Number of times an HLE execution aborted due to HLE-unfriendly instructions and certain unfriendly events (such as AD assists etc.). ",
109 "CounterHTOff": "0,1,2,3,4,5,6,7"
110 },
111 {
112 "PublicDescription": "Number of times an HLE execution aborted due to incompatible memory type.",
113 "EventCode": "0xC8",
114 "Counter": "0,1,2,3",
115 "UMask": "0x40",
116 "EventName": "HLE_RETIRED.ABORTED_MEMTYPE",
117 "SampleAfterValue": "2000003",
118 "BriefDescription": "Number of times an HLE execution aborted due to incompatible memory type",
119 "CounterHTOff": "0,1,2,3,4,5,6,7"
120 },
121 {
122 "EventCode": "0xC8",
123 "Counter": "0,1,2,3",
124 "UMask": "0x80",
125 "EventName": "HLE_RETIRED.ABORTED_EVENTS",
126 "SampleAfterValue": "2000003",
127 "BriefDescription": "Number of times an HLE execution aborted due to unfriendly events (such as interrupts).",
128 "CounterHTOff": "0,1,2,3,4,5,6,7"
129 },
130 {
131 "PublicDescription": "Number of times we entered an RTM region\n does not count nested transactions.",
132 "EventCode": "0xC9",
133 "Counter": "0,1,2,3",
134 "UMask": "0x1",
135 "EventName": "RTM_RETIRED.START",
136 "SampleAfterValue": "2000003",
137 "BriefDescription": "Number of times an RTM execution started.",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "Number of times RTM commit succeeded.",
142 "EventCode": "0xC9",
143 "Counter": "0,1,2,3",
144 "UMask": "0x2",
145 "EventName": "RTM_RETIRED.COMMIT",
146 "SampleAfterValue": "2000003",
147 "BriefDescription": "Number of times an RTM execution successfully committed",
148 "CounterHTOff": "0,1,2,3,4,5,6,7"
149 },
150 {
151 "PEBS": "1",
152 "PublicDescription": "Number of times RTM abort was triggered.",
153 "EventCode": "0xC9",
154 "Counter": "0,1,2,3",
155 "UMask": "0x4",
156 "EventName": "RTM_RETIRED.ABORTED",
157 "SampleAfterValue": "2000003",
158 "BriefDescription": "Number of times an RTM execution aborted due to any reasons (multiple categories may count as one). ",
159 "CounterHTOff": "0,1,2,3,4,5,6,7"
160 },
161 {
162 "PublicDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts).",
163 "EventCode": "0xC9",
164 "Counter": "0,1,2,3",
165 "UMask": "0x8",
166 "EventName": "RTM_RETIRED.ABORTED_MEM",
167 "SampleAfterValue": "2000003",
168 "BriefDescription": "Number of times an RTM execution aborted due to various memory events (e.g. read/write capacity and conflicts)",
169 "CounterHTOff": "0,1,2,3,4,5,6,7"
170 },
171 {
172 "EventCode": "0xC9",
173 "Counter": "0,1,2,3",
174 "UMask": "0x10",
175 "EventName": "RTM_RETIRED.ABORTED_TIMER",
176 "SampleAfterValue": "2000003",
177 "BriefDescription": "Number of times an RTM execution aborted due to uncommon conditions.",
178 "CounterHTOff": "0,1,2,3,4,5,6,7"
179 },
180 {
181 "PublicDescription": "Number of times an RTM execution aborted due to HLE-unfriendly instructions.",
182 "EventCode": "0xC9",
183 "Counter": "0,1,2,3",
184 "UMask": "0x20",
185 "EventName": "RTM_RETIRED.ABORTED_UNFRIENDLY",
186 "SampleAfterValue": "2000003",
187 "BriefDescription": "Number of times an RTM execution aborted due to HLE-unfriendly instructions",
188 "CounterHTOff": "0,1,2,3,4,5,6,7"
189 },
190 {
191 "PublicDescription": "Number of times an RTM execution aborted due to incompatible memory type.",
192 "EventCode": "0xC9",
193 "Counter": "0,1,2,3",
194 "UMask": "0x40",
195 "EventName": "RTM_RETIRED.ABORTED_MEMTYPE",
196 "SampleAfterValue": "2000003",
197 "BriefDescription": "Number of times an RTM execution aborted due to incompatible memory type",
198 "CounterHTOff": "0,1,2,3,4,5,6,7"
199 },
200 {
201 "PublicDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt).",
202 "EventCode": "0xC9",
203 "Counter": "0,1,2,3",
204 "UMask": "0x80",
205 "EventName": "RTM_RETIRED.ABORTED_EVENTS",
206 "SampleAfterValue": "2000003",
207 "BriefDescription": "Number of times an RTM execution aborted due to none of the previous 4 categories (e.g. interrupt)",
208 "CounterHTOff": "0,1,2,3,4,5,6,7"
209 },
210 {
211 "PublicDescription": "This event counts the number of memory ordering Machine Clears detected. Memory Ordering Machine Clears can result from one of the following:\n1. memory disambiguation,\n2. external snoop, or\n3. cross SMT-HW-thread snoop (stores) hitting load buffer.",
212 "EventCode": "0xC3",
213 "Counter": "0,1,2,3",
214 "UMask": "0x2",
215 "Errata": "SKL089",
216 "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
217 "SampleAfterValue": "100003",
218 "BriefDescription": "Counts the number of machine clears due to memory order conflicts.",
219 "CounterHTOff": "0,1,2,3,4,5,6,7"
220 },
221 {
222 "PEBS": "2",
223 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 4 cycles. Reported latency may be longer than just the memory latency.",
224 "EventCode": "0xCD",
225 "MSRValue": "0x4",
226 "Counter": "0,1,2,3",
227 "UMask": "0x1",
228 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
229 "MSRIndex": "0x3F6",
230 "SampleAfterValue": "100003",
231 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 4 cycles.",
232 "TakenAlone": "1",
233 "CounterHTOff": "0,1,2,3"
234 },
235 {
236 "PEBS": "2",
237 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 8 cycles. Reported latency may be longer than just the memory latency.",
238 "EventCode": "0xCD",
239 "MSRValue": "0x8",
240 "Counter": "0,1,2,3",
241 "UMask": "0x1",
242 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
243 "MSRIndex": "0x3F6",
244 "SampleAfterValue": "50021",
245 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 8 cycles.",
246 "TakenAlone": "1",
247 "CounterHTOff": "0,1,2,3"
248 },
249 {
250 "PEBS": "2",
251 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 16 cycles. Reported latency may be longer than just the memory latency.",
252 "EventCode": "0xCD",
253 "MSRValue": "0x10",
254 "Counter": "0,1,2,3",
255 "UMask": "0x1",
256 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
257 "MSRIndex": "0x3F6",
258 "SampleAfterValue": "20011",
259 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 16 cycles.",
260 "TakenAlone": "1",
261 "CounterHTOff": "0,1,2,3"
262 },
263 {
264 "PEBS": "2",
265 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 32 cycles. Reported latency may be longer than just the memory latency.",
266 "EventCode": "0xCD",
267 "MSRValue": "0x20",
268 "Counter": "0,1,2,3",
269 "UMask": "0x1",
270 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
271 "MSRIndex": "0x3F6",
272 "SampleAfterValue": "100007",
273 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 32 cycles.",
274 "TakenAlone": "1",
275 "CounterHTOff": "0,1,2,3"
276 },
277 {
278 "PEBS": "2",
279 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 64 cycles. Reported latency may be longer than just the memory latency.",
280 "EventCode": "0xCD",
281 "MSRValue": "0x40",
282 "Counter": "0,1,2,3",
283 "UMask": "0x1",
284 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
285 "MSRIndex": "0x3F6",
286 "SampleAfterValue": "2003",
287 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 64 cycles.",
288 "TakenAlone": "1",
289 "CounterHTOff": "0,1,2,3"
290 },
291 {
292 "PEBS": "2",
293 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 128 cycles. Reported latency may be longer than just the memory latency.",
294 "EventCode": "0xCD",
295 "MSRValue": "0x80",
296 "Counter": "0,1,2,3",
297 "UMask": "0x1",
298 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
299 "MSRIndex": "0x3F6",
300 "SampleAfterValue": "1009",
301 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 128 cycles.",
302 "TakenAlone": "1",
303 "CounterHTOff": "0,1,2,3"
304 },
305 {
306 "PEBS": "2",
307 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 256 cycles. Reported latency may be longer than just the memory latency.",
308 "EventCode": "0xCD",
309 "MSRValue": "0x100",
310 "Counter": "0,1,2,3",
311 "UMask": "0x1",
312 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
313 "MSRIndex": "0x3F6",
314 "SampleAfterValue": "503",
315 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 256 cycles.",
316 "TakenAlone": "1",
317 "CounterHTOff": "0,1,2,3"
318 },
319 {
320 "PEBS": "2",
321 "PublicDescription": "Counts loads when the latency from first dispatch to completion is greater than 512 cycles. Reported latency may be longer than just the memory latency.",
322 "EventCode": "0xCD",
323 "MSRValue": "0x200",
324 "Counter": "0,1,2,3",
325 "UMask": "0x1",
326 "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
327 "MSRIndex": "0x3F6",
328 "SampleAfterValue": "101",
329 "BriefDescription": "Counts loads when the latency from first dispatch to completion is greater than 512 cycles.",
330 "TakenAlone": "1",
331 "CounterHTOff": "0,1,2,3"
332 },
333 {
334 "PublicDescription": "Number of times a TSX line had a cache conflict.",
335 "EventCode": "0x54",
336 "Counter": "0,1,2,3",
337 "UMask": "0x1",
338 "EventName": "TX_MEM.ABORT_CONFLICT",
339 "SampleAfterValue": "2000003",
340 "BriefDescription": "Number of times a transactional abort was signaled due to a data conflict on a transactionally accessed address",
341 "CounterHTOff": "0,1,2,3,4,5,6,7"
342 },
343 {
344 "EventCode": "0x54",
345 "Counter": "0,1,2,3",
346 "UMask": "0x2",
347 "EventName": "TX_MEM.ABORT_CAPACITY",
348 "SampleAfterValue": "2000003",
349 "BriefDescription": "Number of times a transactional abort was signaled due to a data capacity limitation for transactional reads or writes.",
350 "CounterHTOff": "0,1,2,3,4,5,6,7"
351 },
352 {
353 "PublicDescription": "Number of times a TSX Abort was triggered due to a non-release/commit store to lock.",
354 "EventCode": "0x54",
355 "Counter": "0,1,2,3",
356 "UMask": "0x4",
357 "EventName": "TX_MEM.ABORT_HLE_STORE_TO_ELIDED_LOCK",
358 "SampleAfterValue": "2000003",
359 "BriefDescription": "Number of times a HLE transactional region aborted due to a non XRELEASE prefixed instruction writing to an elided lock in the elision buffer",
360 "CounterHTOff": "0,1,2,3,4,5,6,7"
361 },
362 {
363 "PublicDescription": "Number of times a TSX Abort was triggered due to commit but Lock Buffer not empty.",
364 "EventCode": "0x54",
365 "Counter": "0,1,2,3",
366 "UMask": "0x8",
367 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_NOT_EMPTY",
368 "SampleAfterValue": "2000003",
369 "BriefDescription": "Number of times an HLE transactional execution aborted due to NoAllocatedElisionBuffer being non-zero.",
370 "CounterHTOff": "0,1,2,3,4,5,6,7"
371 },
372 {
373 "PublicDescription": "Number of times a TSX Abort was triggered due to release/commit but data and address mismatch.",
374 "EventCode": "0x54",
375 "Counter": "0,1,2,3",
376 "UMask": "0x10",
377 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_MISMATCH",
378 "SampleAfterValue": "2000003",
379 "BriefDescription": "Number of times an HLE transactional execution aborted due to XRELEASE lock not satisfying the address and value requirements in the elision buffer",
380 "CounterHTOff": "0,1,2,3,4,5,6,7"
381 },
382 {
383 "PublicDescription": "Number of times a TSX Abort was triggered due to attempting an unsupported alignment from Lock Buffer.",
384 "EventCode": "0x54",
385 "Counter": "0,1,2,3",
386 "UMask": "0x20",
387 "EventName": "TX_MEM.ABORT_HLE_ELISION_BUFFER_UNSUPPORTED_ALIGNMENT",
388 "SampleAfterValue": "2000003",
389 "BriefDescription": "Number of times an HLE transactional execution aborted due to an unsupported read alignment from the elision buffer.",
390 "CounterHTOff": "0,1,2,3,4,5,6,7"
391 },
392 {
393 "PublicDescription": "Number of times we could not allocate Lock Buffer.",
394 "EventCode": "0x54",
395 "Counter": "0,1,2,3",
396 "UMask": "0x40",
397 "EventName": "TX_MEM.HLE_ELISION_BUFFER_FULL",
398 "SampleAfterValue": "2000003",
399 "BriefDescription": "Number of times HLE lock could not be elided due to ElisionBufferAvailable being zero.",
400 "CounterHTOff": "0,1,2,3,4,5,6,7"
401 },
402 {
403 "PublicDescription": "Demand Data Read requests who miss L3 cache.",
404 "EventCode": "0xB0",
405 "Counter": "0,1,2,3",
406 "UMask": "0x10",
407 "EventName": "OFFCORE_REQUESTS.L3_MISS_DEMAND_DATA_RD",
408 "SampleAfterValue": "100003",
409 "BriefDescription": "Demand Data Read requests who miss L3 cache",
410 "CounterHTOff": "0,1,2,3,4,5,6,7"
411 },
412 {
413 "EventCode": "0x60",
414 "Counter": "0,1,2,3",
415 "UMask": "0x10",
416 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.L3_MISS_DEMAND_DATA_RD",
417 "SampleAfterValue": "2000003",
418 "BriefDescription": "Counts number of Offcore outstanding Demand Data Read requests that miss L3 cache in the superQ every cycle.",
419 "CounterHTOff": "0,1,2,3,4,5,6,7"
420 },
421 {
422 "EventCode": "0xA3",
423 "Counter": "0,1,2,3",
424 "UMask": "0x2",
425 "EventName": "CYCLE_ACTIVITY.CYCLES_L3_MISS",
426 "SampleAfterValue": "2000003",
427 "BriefDescription": "Cycles while L3 cache miss demand load is outstanding.",
428 "CounterMask": "2",
429 "CounterHTOff": "0,1,2,3,4,5,6,7"
430 },
431 {
432 "EventCode": "0xA3",
433 "Counter": "0,1,2,3",
434 "UMask": "0x6",
435 "EventName": "CYCLE_ACTIVITY.STALLS_L3_MISS",
436 "SampleAfterValue": "2000003",
437 "BriefDescription": "Execution stalls while L3 cache miss demand load is outstanding.",
438 "CounterMask": "6",
439 "CounterHTOff": "0,1,2,3,4,5,6,7"
440 },
441 {
442 "EventCode": "0x60",
443 "Counter": "0,1,2,3",
444 "UMask": "0x10",
445 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_L3_MISS_DEMAND_DATA_RD",
446 "SampleAfterValue": "2000003",
447 "BriefDescription": "Cycles with at least 1 Demand Data Read requests who miss L3 cache in the superQ.",
448 "CounterMask": "1",
449 "CounterHTOff": "0,1,2,3,4,5,6,7"
450 },
451 {
452 "EventCode": "0x60",
453 "Counter": "0,1,2,3",
454 "UMask": "0x10",
455 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.L3_MISS_DEMAND_DATA_RD_GE_6",
456 "SampleAfterValue": "2000003",
457 "BriefDescription": "Cycles with at least 6 Demand Data Read requests that miss L3 cache in the superQ.",
458 "CounterMask": "6",
459 "CounterHTOff": "0,1,2,3,4,5,6,7"
460 },
461 {
462 "EventCode": "0xB7, 0xBB",
463 "MSRValue": "0x3ffc008000 ",
464 "Counter": "0,1,2,3",
465 "UMask": "0x1",
466 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.ANY_SNOOP",
467 "MSRIndex": "0x1a6,0x1a7",
468 "SampleAfterValue": "100003",
469 "BriefDescription": "OTHER & L3_MISS & ANY_SNOOP",
470 "Offcore": "1",
471 "CounterHTOff": "0,1,2,3"
472 },
473 {
474 "EventCode": "0xB7, 0xBB",
475 "MSRValue": "0x203c008000 ",
476 "Counter": "0,1,2,3",
477 "UMask": "0x1",
478 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_NON_DRAM",
479 "MSRIndex": "0x1a6,0x1a7",
480 "SampleAfterValue": "100003",
481 "BriefDescription": "OTHER & L3_MISS & SNOOP_NON_DRAM",
482 "Offcore": "1",
483 "CounterHTOff": "0,1,2,3"
484 },
485 {
486 "EventCode": "0xB7, 0xBB",
487 "MSRValue": "0x103c008000 ",
488 "Counter": "0,1,2,3",
489 "UMask": "0x1",
490 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_HITM",
491 "MSRIndex": "0x1a6,0x1a7",
492 "SampleAfterValue": "100003",
493 "BriefDescription": "OTHER & L3_MISS & SNOOP_HITM",
494 "Offcore": "1",
495 "CounterHTOff": "0,1,2,3"
496 },
497 {
498 "EventCode": "0xB7, 0xBB",
499 "MSRValue": "0x043c008000 ",
500 "Counter": "0,1,2,3",
501 "UMask": "0x1",
502 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_HIT_NO_FWD",
503 "MSRIndex": "0x1a6,0x1a7",
504 "SampleAfterValue": "100003",
505 "BriefDescription": "OTHER & L3_MISS & SNOOP_HIT_NO_FWD",
506 "Offcore": "1",
507 "CounterHTOff": "0,1,2,3"
508 },
509 {
510 "EventCode": "0xB7, 0xBB",
511 "MSRValue": "0x023c008000 ",
512 "Counter": "0,1,2,3",
513 "UMask": "0x1",
514 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_MISS",
515 "MSRIndex": "0x1a6,0x1a7",
516 "SampleAfterValue": "100003",
517 "BriefDescription": "OTHER & L3_MISS & SNOOP_MISS",
518 "Offcore": "1",
519 "CounterHTOff": "0,1,2,3"
520 },
521 {
522 "EventCode": "0xB7, 0xBB",
523 "MSRValue": "0x013c008000 ",
524 "Counter": "0,1,2,3",
525 "UMask": "0x1",
526 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_NOT_NEEDED",
527 "MSRIndex": "0x1a6,0x1a7",
528 "SampleAfterValue": "100003",
529 "BriefDescription": "OTHER & L3_MISS & SNOOP_NOT_NEEDED",
530 "Offcore": "1",
531 "CounterHTOff": "0,1,2,3"
532 },
533 {
534 "EventCode": "0xB7, 0xBB",
535 "MSRValue": "0x00bc008000 ",
536 "Counter": "0,1,2,3",
537 "UMask": "0x1",
538 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SNOOP_NONE",
539 "MSRIndex": "0x1a6,0x1a7",
540 "SampleAfterValue": "100003",
541 "BriefDescription": "OTHER & L3_MISS & SNOOP_NONE",
542 "Offcore": "1",
543 "CounterHTOff": "0,1,2,3"
544 },
545 {
546 "EventCode": "0xB7, 0xBB",
547 "MSRValue": "0x007c008000 ",
548 "Counter": "0,1,2,3",
549 "UMask": "0x1",
550 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS.SPL_HIT",
551 "MSRIndex": "0x1a6,0x1a7",
552 "SampleAfterValue": "100003",
553 "BriefDescription": "OTHER & L3_MISS & SPL_HIT",
554 "Offcore": "1",
555 "CounterHTOff": "0,1,2,3"
556 },
557 {
558 "EventCode": "0xB7, 0xBB",
559 "MSRValue": "0x3fc4008000 ",
560 "Counter": "0,1,2,3",
561 "UMask": "0x1",
562 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
563 "MSRIndex": "0x1a6,0x1a7",
564 "SampleAfterValue": "100003",
565 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
566 "Offcore": "1",
567 "CounterHTOff": "0,1,2,3"
568 },
569 {
570 "EventCode": "0xB7, 0xBB",
571 "MSRValue": "0x2004008000 ",
572 "Counter": "0,1,2,3",
573 "UMask": "0x1",
574 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
575 "MSRIndex": "0x1a6,0x1a7",
576 "SampleAfterValue": "100003",
577 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
578 "Offcore": "1",
579 "CounterHTOff": "0,1,2,3"
580 },
581 {
582 "EventCode": "0xB7, 0xBB",
583 "MSRValue": "0x1004008000 ",
584 "Counter": "0,1,2,3",
585 "UMask": "0x1",
586 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
587 "MSRIndex": "0x1a6,0x1a7",
588 "SampleAfterValue": "100003",
589 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
590 "Offcore": "1",
591 "CounterHTOff": "0,1,2,3"
592 },
593 {
594 "EventCode": "0xB7, 0xBB",
595 "MSRValue": "0x0404008000 ",
596 "Counter": "0,1,2,3",
597 "UMask": "0x1",
598 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
599 "MSRIndex": "0x1a6,0x1a7",
600 "SampleAfterValue": "100003",
601 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
602 "Offcore": "1",
603 "CounterHTOff": "0,1,2,3"
604 },
605 {
606 "EventCode": "0xB7, 0xBB",
607 "MSRValue": "0x0204008000 ",
608 "Counter": "0,1,2,3",
609 "UMask": "0x1",
610 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
611 "MSRIndex": "0x1a6,0x1a7",
612 "SampleAfterValue": "100003",
613 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
614 "Offcore": "1",
615 "CounterHTOff": "0,1,2,3"
616 },
617 {
618 "EventCode": "0xB7, 0xBB",
619 "MSRValue": "0x0104008000 ",
620 "Counter": "0,1,2,3",
621 "UMask": "0x1",
622 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
623 "MSRIndex": "0x1a6,0x1a7",
624 "SampleAfterValue": "100003",
625 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
626 "Offcore": "1",
627 "CounterHTOff": "0,1,2,3"
628 },
629 {
630 "EventCode": "0xB7, 0xBB",
631 "MSRValue": "0x0084008000 ",
632 "Counter": "0,1,2,3",
633 "UMask": "0x1",
634 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
635 "MSRIndex": "0x1a6,0x1a7",
636 "SampleAfterValue": "100003",
637 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
638 "Offcore": "1",
639 "CounterHTOff": "0,1,2,3"
640 },
641 {
642 "EventCode": "0xB7, 0xBB",
643 "MSRValue": "0x0044008000 ",
644 "Counter": "0,1,2,3",
645 "UMask": "0x1",
646 "EventName": "OFFCORE_RESPONSE.OTHER.L3_MISS_LOCAL_DRAM.SPL_HIT",
647 "MSRIndex": "0x1a6,0x1a7",
648 "SampleAfterValue": "100003",
649 "BriefDescription": "OTHER & L3_MISS_LOCAL_DRAM & SPL_HIT",
650 "Offcore": "1",
651 "CounterHTOff": "0,1,2,3"
652 },
653 {
654 "EventCode": "0xB7, 0xBB",
655 "MSRValue": "0x2000408000 ",
656 "Counter": "0,1,2,3",
657 "UMask": "0x1",
658 "EventName": "OFFCORE_RESPONSE.OTHER.L4_HIT_LOCAL_L4.SNOOP_NON_DRAM",
659 "MSRIndex": "0x1a6,0x1a7",
660 "SampleAfterValue": "100003",
661 "BriefDescription": "OTHER & L4_HIT_LOCAL_L4 & SNOOP_NON_DRAM",
662 "Offcore": "1",
663 "CounterHTOff": "0,1,2,3"
664 },
665 {
666 "EventCode": "0xB7, 0xBB",
667 "MSRValue": "0x20001c8000 ",
668 "Counter": "0,1,2,3",
669 "UMask": "0x1",
670 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT.SNOOP_NON_DRAM",
671 "MSRIndex": "0x1a6,0x1a7",
672 "SampleAfterValue": "100003",
673 "BriefDescription": "OTHER & L3_HIT & SNOOP_NON_DRAM",
674 "Offcore": "1",
675 "CounterHTOff": "0,1,2,3"
676 },
677 {
678 "EventCode": "0xB7, 0xBB",
679 "MSRValue": "0x2000108000 ",
680 "Counter": "0,1,2,3",
681 "UMask": "0x1",
682 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_S.SNOOP_NON_DRAM",
683 "MSRIndex": "0x1a6,0x1a7",
684 "SampleAfterValue": "100003",
685 "BriefDescription": "OTHER & L3_HIT_S & SNOOP_NON_DRAM",
686 "Offcore": "1",
687 "CounterHTOff": "0,1,2,3"
688 },
689 {
690 "EventCode": "0xB7, 0xBB",
691 "MSRValue": "0x2000088000 ",
692 "Counter": "0,1,2,3",
693 "UMask": "0x1",
694 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_E.SNOOP_NON_DRAM",
695 "MSRIndex": "0x1a6,0x1a7",
696 "SampleAfterValue": "100003",
697 "BriefDescription": "OTHER & L3_HIT_E & SNOOP_NON_DRAM",
698 "Offcore": "1",
699 "CounterHTOff": "0,1,2,3"
700 },
701 {
702 "EventCode": "0xB7, 0xBB",
703 "MSRValue": "0x2000048000 ",
704 "Counter": "0,1,2,3",
705 "UMask": "0x1",
706 "EventName": "OFFCORE_RESPONSE.OTHER.L3_HIT_M.SNOOP_NON_DRAM",
707 "MSRIndex": "0x1a6,0x1a7",
708 "SampleAfterValue": "100003",
709 "BriefDescription": "OTHER & L3_HIT_M & SNOOP_NON_DRAM",
710 "Offcore": "1",
711 "CounterHTOff": "0,1,2,3"
712 },
713 {
714 "EventCode": "0xB7, 0xBB",
715 "MSRValue": "0x2000028000 ",
716 "Counter": "0,1,2,3",
717 "UMask": "0x1",
718 "EventName": "OFFCORE_RESPONSE.OTHER.SUPPLIER_NONE.SNOOP_NON_DRAM",
719 "MSRIndex": "0x1a6,0x1a7",
720 "SampleAfterValue": "100003",
721 "BriefDescription": "OTHER & SUPPLIER_NONE & SNOOP_NON_DRAM",
722 "Offcore": "1",
723 "CounterHTOff": "0,1,2,3"
724 },
725 {
726 "EventCode": "0xB7, 0xBB",
727 "MSRValue": "0x3ffc000800 ",
728 "Counter": "0,1,2,3",
729 "UMask": "0x1",
730 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.ANY_SNOOP",
731 "MSRIndex": "0x1a6,0x1a7",
732 "SampleAfterValue": "100003",
733 "BriefDescription": "STREAMING_STORES & L3_MISS & ANY_SNOOP",
734 "Offcore": "1",
735 "CounterHTOff": "0,1,2,3"
736 },
737 {
738 "EventCode": "0xB7, 0xBB",
739 "MSRValue": "0x203c000800 ",
740 "Counter": "0,1,2,3",
741 "UMask": "0x1",
742 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.SNOOP_NON_DRAM",
743 "MSRIndex": "0x1a6,0x1a7",
744 "SampleAfterValue": "100003",
745 "BriefDescription": "STREAMING_STORES & L3_MISS & SNOOP_NON_DRAM",
746 "Offcore": "1",
747 "CounterHTOff": "0,1,2,3"
748 },
749 {
750 "EventCode": "0xB7, 0xBB",
751 "MSRValue": "0x103c000800 ",
752 "Counter": "0,1,2,3",
753 "UMask": "0x1",
754 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.SNOOP_HITM",
755 "MSRIndex": "0x1a6,0x1a7",
756 "SampleAfterValue": "100003",
757 "BriefDescription": "STREAMING_STORES & L3_MISS & SNOOP_HITM",
758 "Offcore": "1",
759 "CounterHTOff": "0,1,2,3"
760 },
761 {
762 "EventCode": "0xB7, 0xBB",
763 "MSRValue": "0x043c000800 ",
764 "Counter": "0,1,2,3",
765 "UMask": "0x1",
766 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.SNOOP_HIT_NO_FWD",
767 "MSRIndex": "0x1a6,0x1a7",
768 "SampleAfterValue": "100003",
769 "BriefDescription": "STREAMING_STORES & L3_MISS & SNOOP_HIT_NO_FWD",
770 "Offcore": "1",
771 "CounterHTOff": "0,1,2,3"
772 },
773 {
774 "EventCode": "0xB7, 0xBB",
775 "MSRValue": "0x023c000800 ",
776 "Counter": "0,1,2,3",
777 "UMask": "0x1",
778 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.SNOOP_MISS",
779 "MSRIndex": "0x1a6,0x1a7",
780 "SampleAfterValue": "100003",
781 "BriefDescription": "STREAMING_STORES & L3_MISS & SNOOP_MISS",
782 "Offcore": "1",
783 "CounterHTOff": "0,1,2,3"
784 },
785 {
786 "EventCode": "0xB7, 0xBB",
787 "MSRValue": "0x013c000800 ",
788 "Counter": "0,1,2,3",
789 "UMask": "0x1",
790 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.SNOOP_NOT_NEEDED",
791 "MSRIndex": "0x1a6,0x1a7",
792 "SampleAfterValue": "100003",
793 "BriefDescription": "STREAMING_STORES & L3_MISS & SNOOP_NOT_NEEDED",
794 "Offcore": "1",
795 "CounterHTOff": "0,1,2,3"
796 },
797 {
798 "EventCode": "0xB7, 0xBB",
799 "MSRValue": "0x00bc000800 ",
800 "Counter": "0,1,2,3",
801 "UMask": "0x1",
802 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.SNOOP_NONE",
803 "MSRIndex": "0x1a6,0x1a7",
804 "SampleAfterValue": "100003",
805 "BriefDescription": "STREAMING_STORES & L3_MISS & SNOOP_NONE",
806 "Offcore": "1",
807 "CounterHTOff": "0,1,2,3"
808 },
809 {
810 "EventCode": "0xB7, 0xBB",
811 "MSRValue": "0x007c000800 ",
812 "Counter": "0,1,2,3",
813 "UMask": "0x1",
814 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS.SPL_HIT",
815 "MSRIndex": "0x1a6,0x1a7",
816 "SampleAfterValue": "100003",
817 "BriefDescription": "STREAMING_STORES & L3_MISS & SPL_HIT",
818 "Offcore": "1",
819 "CounterHTOff": "0,1,2,3"
820 },
821 {
822 "EventCode": "0xB7, 0xBB",
823 "MSRValue": "0x3fc4000800 ",
824 "Counter": "0,1,2,3",
825 "UMask": "0x1",
826 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
827 "MSRIndex": "0x1a6,0x1a7",
828 "SampleAfterValue": "100003",
829 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
830 "Offcore": "1",
831 "CounterHTOff": "0,1,2,3"
832 },
833 {
834 "EventCode": "0xB7, 0xBB",
835 "MSRValue": "0x2004000800 ",
836 "Counter": "0,1,2,3",
837 "UMask": "0x1",
838 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
839 "MSRIndex": "0x1a6,0x1a7",
840 "SampleAfterValue": "100003",
841 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
842 "Offcore": "1",
843 "CounterHTOff": "0,1,2,3"
844 },
845 {
846 "EventCode": "0xB7, 0xBB",
847 "MSRValue": "0x1004000800 ",
848 "Counter": "0,1,2,3",
849 "UMask": "0x1",
850 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
851 "MSRIndex": "0x1a6,0x1a7",
852 "SampleAfterValue": "100003",
853 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
854 "Offcore": "1",
855 "CounterHTOff": "0,1,2,3"
856 },
857 {
858 "EventCode": "0xB7, 0xBB",
859 "MSRValue": "0x0404000800 ",
860 "Counter": "0,1,2,3",
861 "UMask": "0x1",
862 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
863 "MSRIndex": "0x1a6,0x1a7",
864 "SampleAfterValue": "100003",
865 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
866 "Offcore": "1",
867 "CounterHTOff": "0,1,2,3"
868 },
869 {
870 "EventCode": "0xB7, 0xBB",
871 "MSRValue": "0x0204000800 ",
872 "Counter": "0,1,2,3",
873 "UMask": "0x1",
874 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
875 "MSRIndex": "0x1a6,0x1a7",
876 "SampleAfterValue": "100003",
877 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
878 "Offcore": "1",
879 "CounterHTOff": "0,1,2,3"
880 },
881 {
882 "EventCode": "0xB7, 0xBB",
883 "MSRValue": "0x0104000800 ",
884 "Counter": "0,1,2,3",
885 "UMask": "0x1",
886 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
887 "MSRIndex": "0x1a6,0x1a7",
888 "SampleAfterValue": "100003",
889 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
890 "Offcore": "1",
891 "CounterHTOff": "0,1,2,3"
892 },
893 {
894 "EventCode": "0xB7, 0xBB",
895 "MSRValue": "0x0084000800 ",
896 "Counter": "0,1,2,3",
897 "UMask": "0x1",
898 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
899 "MSRIndex": "0x1a6,0x1a7",
900 "SampleAfterValue": "100003",
901 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
902 "Offcore": "1",
903 "CounterHTOff": "0,1,2,3"
904 },
905 {
906 "EventCode": "0xB7, 0xBB",
907 "MSRValue": "0x0044000800 ",
908 "Counter": "0,1,2,3",
909 "UMask": "0x1",
910 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_MISS_LOCAL_DRAM.SPL_HIT",
911 "MSRIndex": "0x1a6,0x1a7",
912 "SampleAfterValue": "100003",
913 "BriefDescription": "STREAMING_STORES & L3_MISS_LOCAL_DRAM & SPL_HIT",
914 "Offcore": "1",
915 "CounterHTOff": "0,1,2,3"
916 },
917 {
918 "EventCode": "0xB7, 0xBB",
919 "MSRValue": "0x2000400800 ",
920 "Counter": "0,1,2,3",
921 "UMask": "0x1",
922 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L4_HIT_LOCAL_L4.SNOOP_NON_DRAM",
923 "MSRIndex": "0x1a6,0x1a7",
924 "SampleAfterValue": "100003",
925 "BriefDescription": "STREAMING_STORES & L4_HIT_LOCAL_L4 & SNOOP_NON_DRAM",
926 "Offcore": "1",
927 "CounterHTOff": "0,1,2,3"
928 },
929 {
930 "EventCode": "0xB7, 0xBB",
931 "MSRValue": "0x20001c0800 ",
932 "Counter": "0,1,2,3",
933 "UMask": "0x1",
934 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT.SNOOP_NON_DRAM",
935 "MSRIndex": "0x1a6,0x1a7",
936 "SampleAfterValue": "100003",
937 "BriefDescription": "STREAMING_STORES & L3_HIT & SNOOP_NON_DRAM",
938 "Offcore": "1",
939 "CounterHTOff": "0,1,2,3"
940 },
941 {
942 "EventCode": "0xB7, 0xBB",
943 "MSRValue": "0x2000100800 ",
944 "Counter": "0,1,2,3",
945 "UMask": "0x1",
946 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_S.SNOOP_NON_DRAM",
947 "MSRIndex": "0x1a6,0x1a7",
948 "SampleAfterValue": "100003",
949 "BriefDescription": "STREAMING_STORES & L3_HIT_S & SNOOP_NON_DRAM",
950 "Offcore": "1",
951 "CounterHTOff": "0,1,2,3"
952 },
953 {
954 "EventCode": "0xB7, 0xBB",
955 "MSRValue": "0x2000080800 ",
956 "Counter": "0,1,2,3",
957 "UMask": "0x1",
958 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_E.SNOOP_NON_DRAM",
959 "MSRIndex": "0x1a6,0x1a7",
960 "SampleAfterValue": "100003",
961 "BriefDescription": "STREAMING_STORES & L3_HIT_E & SNOOP_NON_DRAM",
962 "Offcore": "1",
963 "CounterHTOff": "0,1,2,3"
964 },
965 {
966 "EventCode": "0xB7, 0xBB",
967 "MSRValue": "0x2000040800 ",
968 "Counter": "0,1,2,3",
969 "UMask": "0x1",
970 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L3_HIT_M.SNOOP_NON_DRAM",
971 "MSRIndex": "0x1a6,0x1a7",
972 "SampleAfterValue": "100003",
973 "BriefDescription": "STREAMING_STORES & L3_HIT_M & SNOOP_NON_DRAM",
974 "Offcore": "1",
975 "CounterHTOff": "0,1,2,3"
976 },
977 {
978 "EventCode": "0xB7, 0xBB",
979 "MSRValue": "0x2000020800 ",
980 "Counter": "0,1,2,3",
981 "UMask": "0x1",
982 "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.SUPPLIER_NONE.SNOOP_NON_DRAM",
983 "MSRIndex": "0x1a6,0x1a7",
984 "SampleAfterValue": "100003",
985 "BriefDescription": "STREAMING_STORES & SUPPLIER_NONE & SNOOP_NON_DRAM",
986 "Offcore": "1",
987 "CounterHTOff": "0,1,2,3"
988 },
989 {
990 "EventCode": "0xB7, 0xBB",
991 "MSRValue": "0x3ffc000100 ",
992 "Counter": "0,1,2,3",
993 "UMask": "0x1",
994 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.ANY_SNOOP",
995 "MSRIndex": "0x1a6,0x1a7",
996 "SampleAfterValue": "100003",
997 "BriefDescription": "PF_L3_RFO & L3_MISS & ANY_SNOOP",
998 "Offcore": "1",
999 "CounterHTOff": "0,1,2,3"
1000 },
1001 {
1002 "EventCode": "0xB7, 0xBB",
1003 "MSRValue": "0x203c000100 ",
1004 "Counter": "0,1,2,3",
1005 "UMask": "0x1",
1006 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_NON_DRAM",
1007 "MSRIndex": "0x1a6,0x1a7",
1008 "SampleAfterValue": "100003",
1009 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_NON_DRAM",
1010 "Offcore": "1",
1011 "CounterHTOff": "0,1,2,3"
1012 },
1013 {
1014 "EventCode": "0xB7, 0xBB",
1015 "MSRValue": "0x103c000100 ",
1016 "Counter": "0,1,2,3",
1017 "UMask": "0x1",
1018 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_HITM",
1019 "MSRIndex": "0x1a6,0x1a7",
1020 "SampleAfterValue": "100003",
1021 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_HITM",
1022 "Offcore": "1",
1023 "CounterHTOff": "0,1,2,3"
1024 },
1025 {
1026 "EventCode": "0xB7, 0xBB",
1027 "MSRValue": "0x043c000100 ",
1028 "Counter": "0,1,2,3",
1029 "UMask": "0x1",
1030 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_HIT_NO_FWD",
1031 "MSRIndex": "0x1a6,0x1a7",
1032 "SampleAfterValue": "100003",
1033 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_HIT_NO_FWD",
1034 "Offcore": "1",
1035 "CounterHTOff": "0,1,2,3"
1036 },
1037 {
1038 "EventCode": "0xB7, 0xBB",
1039 "MSRValue": "0x023c000100 ",
1040 "Counter": "0,1,2,3",
1041 "UMask": "0x1",
1042 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_MISS",
1043 "MSRIndex": "0x1a6,0x1a7",
1044 "SampleAfterValue": "100003",
1045 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_MISS",
1046 "Offcore": "1",
1047 "CounterHTOff": "0,1,2,3"
1048 },
1049 {
1050 "EventCode": "0xB7, 0xBB",
1051 "MSRValue": "0x013c000100 ",
1052 "Counter": "0,1,2,3",
1053 "UMask": "0x1",
1054 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_NOT_NEEDED",
1055 "MSRIndex": "0x1a6,0x1a7",
1056 "SampleAfterValue": "100003",
1057 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_NOT_NEEDED",
1058 "Offcore": "1",
1059 "CounterHTOff": "0,1,2,3"
1060 },
1061 {
1062 "EventCode": "0xB7, 0xBB",
1063 "MSRValue": "0x00bc000100 ",
1064 "Counter": "0,1,2,3",
1065 "UMask": "0x1",
1066 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SNOOP_NONE",
1067 "MSRIndex": "0x1a6,0x1a7",
1068 "SampleAfterValue": "100003",
1069 "BriefDescription": "PF_L3_RFO & L3_MISS & SNOOP_NONE",
1070 "Offcore": "1",
1071 "CounterHTOff": "0,1,2,3"
1072 },
1073 {
1074 "EventCode": "0xB7, 0xBB",
1075 "MSRValue": "0x007c000100 ",
1076 "Counter": "0,1,2,3",
1077 "UMask": "0x1",
1078 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS.SPL_HIT",
1079 "MSRIndex": "0x1a6,0x1a7",
1080 "SampleAfterValue": "100003",
1081 "BriefDescription": "PF_L3_RFO & L3_MISS & SPL_HIT",
1082 "Offcore": "1",
1083 "CounterHTOff": "0,1,2,3"
1084 },
1085 {
1086 "EventCode": "0xB7, 0xBB",
1087 "MSRValue": "0x3fc4000100 ",
1088 "Counter": "0,1,2,3",
1089 "UMask": "0x1",
1090 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1091 "MSRIndex": "0x1a6,0x1a7",
1092 "SampleAfterValue": "100003",
1093 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1094 "Offcore": "1",
1095 "CounterHTOff": "0,1,2,3"
1096 },
1097 {
1098 "EventCode": "0xB7, 0xBB",
1099 "MSRValue": "0x2004000100 ",
1100 "Counter": "0,1,2,3",
1101 "UMask": "0x1",
1102 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1103 "MSRIndex": "0x1a6,0x1a7",
1104 "SampleAfterValue": "100003",
1105 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1106 "Offcore": "1",
1107 "CounterHTOff": "0,1,2,3"
1108 },
1109 {
1110 "EventCode": "0xB7, 0xBB",
1111 "MSRValue": "0x1004000100 ",
1112 "Counter": "0,1,2,3",
1113 "UMask": "0x1",
1114 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1115 "MSRIndex": "0x1a6,0x1a7",
1116 "SampleAfterValue": "100003",
1117 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1118 "Offcore": "1",
1119 "CounterHTOff": "0,1,2,3"
1120 },
1121 {
1122 "EventCode": "0xB7, 0xBB",
1123 "MSRValue": "0x0404000100 ",
1124 "Counter": "0,1,2,3",
1125 "UMask": "0x1",
1126 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1127 "MSRIndex": "0x1a6,0x1a7",
1128 "SampleAfterValue": "100003",
1129 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1130 "Offcore": "1",
1131 "CounterHTOff": "0,1,2,3"
1132 },
1133 {
1134 "EventCode": "0xB7, 0xBB",
1135 "MSRValue": "0x0204000100 ",
1136 "Counter": "0,1,2,3",
1137 "UMask": "0x1",
1138 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1139 "MSRIndex": "0x1a6,0x1a7",
1140 "SampleAfterValue": "100003",
1141 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1142 "Offcore": "1",
1143 "CounterHTOff": "0,1,2,3"
1144 },
1145 {
1146 "EventCode": "0xB7, 0xBB",
1147 "MSRValue": "0x0104000100 ",
1148 "Counter": "0,1,2,3",
1149 "UMask": "0x1",
1150 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1151 "MSRIndex": "0x1a6,0x1a7",
1152 "SampleAfterValue": "100003",
1153 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1154 "Offcore": "1",
1155 "CounterHTOff": "0,1,2,3"
1156 },
1157 {
1158 "EventCode": "0xB7, 0xBB",
1159 "MSRValue": "0x0084000100 ",
1160 "Counter": "0,1,2,3",
1161 "UMask": "0x1",
1162 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1163 "MSRIndex": "0x1a6,0x1a7",
1164 "SampleAfterValue": "100003",
1165 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1166 "Offcore": "1",
1167 "CounterHTOff": "0,1,2,3"
1168 },
1169 {
1170 "EventCode": "0xB7, 0xBB",
1171 "MSRValue": "0x0044000100 ",
1172 "Counter": "0,1,2,3",
1173 "UMask": "0x1",
1174 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_MISS_LOCAL_DRAM.SPL_HIT",
1175 "MSRIndex": "0x1a6,0x1a7",
1176 "SampleAfterValue": "100003",
1177 "BriefDescription": "PF_L3_RFO & L3_MISS_LOCAL_DRAM & SPL_HIT",
1178 "Offcore": "1",
1179 "CounterHTOff": "0,1,2,3"
1180 },
1181 {
1182 "EventCode": "0xB7, 0xBB",
1183 "MSRValue": "0x2000400100 ",
1184 "Counter": "0,1,2,3",
1185 "UMask": "0x1",
1186 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L4_HIT_LOCAL_L4.SNOOP_NON_DRAM",
1187 "MSRIndex": "0x1a6,0x1a7",
1188 "SampleAfterValue": "100003",
1189 "BriefDescription": "PF_L3_RFO & L4_HIT_LOCAL_L4 & SNOOP_NON_DRAM",
1190 "Offcore": "1",
1191 "CounterHTOff": "0,1,2,3"
1192 },
1193 {
1194 "EventCode": "0xB7, 0xBB",
1195 "MSRValue": "0x20001c0100 ",
1196 "Counter": "0,1,2,3",
1197 "UMask": "0x1",
1198 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT.SNOOP_NON_DRAM",
1199 "MSRIndex": "0x1a6,0x1a7",
1200 "SampleAfterValue": "100003",
1201 "BriefDescription": "PF_L3_RFO & L3_HIT & SNOOP_NON_DRAM",
1202 "Offcore": "1",
1203 "CounterHTOff": "0,1,2,3"
1204 },
1205 {
1206 "EventCode": "0xB7, 0xBB",
1207 "MSRValue": "0x2000100100 ",
1208 "Counter": "0,1,2,3",
1209 "UMask": "0x1",
1210 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_S.SNOOP_NON_DRAM",
1211 "MSRIndex": "0x1a6,0x1a7",
1212 "SampleAfterValue": "100003",
1213 "BriefDescription": "PF_L3_RFO & L3_HIT_S & SNOOP_NON_DRAM",
1214 "Offcore": "1",
1215 "CounterHTOff": "0,1,2,3"
1216 },
1217 {
1218 "EventCode": "0xB7, 0xBB",
1219 "MSRValue": "0x2000080100 ",
1220 "Counter": "0,1,2,3",
1221 "UMask": "0x1",
1222 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_E.SNOOP_NON_DRAM",
1223 "MSRIndex": "0x1a6,0x1a7",
1224 "SampleAfterValue": "100003",
1225 "BriefDescription": "PF_L3_RFO & L3_HIT_E & SNOOP_NON_DRAM",
1226 "Offcore": "1",
1227 "CounterHTOff": "0,1,2,3"
1228 },
1229 {
1230 "EventCode": "0xB7, 0xBB",
1231 "MSRValue": "0x2000040100 ",
1232 "Counter": "0,1,2,3",
1233 "UMask": "0x1",
1234 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.L3_HIT_M.SNOOP_NON_DRAM",
1235 "MSRIndex": "0x1a6,0x1a7",
1236 "SampleAfterValue": "100003",
1237 "BriefDescription": "PF_L3_RFO & L3_HIT_M & SNOOP_NON_DRAM",
1238 "Offcore": "1",
1239 "CounterHTOff": "0,1,2,3"
1240 },
1241 {
1242 "EventCode": "0xB7, 0xBB",
1243 "MSRValue": "0x2000020100 ",
1244 "Counter": "0,1,2,3",
1245 "UMask": "0x1",
1246 "EventName": "OFFCORE_RESPONSE.PF_L3_RFO.SUPPLIER_NONE.SNOOP_NON_DRAM",
1247 "MSRIndex": "0x1a6,0x1a7",
1248 "SampleAfterValue": "100003",
1249 "BriefDescription": "PF_L3_RFO & SUPPLIER_NONE & SNOOP_NON_DRAM",
1250 "Offcore": "1",
1251 "CounterHTOff": "0,1,2,3"
1252 },
1253 {
1254 "EventCode": "0xB7, 0xBB",
1255 "MSRValue": "0x3ffc000080 ",
1256 "Counter": "0,1,2,3",
1257 "UMask": "0x1",
1258 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.ANY_SNOOP",
1259 "MSRIndex": "0x1a6,0x1a7",
1260 "SampleAfterValue": "100003",
1261 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & ANY_SNOOP",
1262 "Offcore": "1",
1263 "CounterHTOff": "0,1,2,3"
1264 },
1265 {
1266 "EventCode": "0xB7, 0xBB",
1267 "MSRValue": "0x203c000080 ",
1268 "Counter": "0,1,2,3",
1269 "UMask": "0x1",
1270 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_NON_DRAM",
1271 "MSRIndex": "0x1a6,0x1a7",
1272 "SampleAfterValue": "100003",
1273 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_NON_DRAM",
1274 "Offcore": "1",
1275 "CounterHTOff": "0,1,2,3"
1276 },
1277 {
1278 "EventCode": "0xB7, 0xBB",
1279 "MSRValue": "0x103c000080 ",
1280 "Counter": "0,1,2,3",
1281 "UMask": "0x1",
1282 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_HITM",
1283 "MSRIndex": "0x1a6,0x1a7",
1284 "SampleAfterValue": "100003",
1285 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_HITM",
1286 "Offcore": "1",
1287 "CounterHTOff": "0,1,2,3"
1288 },
1289 {
1290 "EventCode": "0xB7, 0xBB",
1291 "MSRValue": "0x043c000080 ",
1292 "Counter": "0,1,2,3",
1293 "UMask": "0x1",
1294 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_HIT_NO_FWD",
1295 "MSRIndex": "0x1a6,0x1a7",
1296 "SampleAfterValue": "100003",
1297 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_HIT_NO_FWD",
1298 "Offcore": "1",
1299 "CounterHTOff": "0,1,2,3"
1300 },
1301 {
1302 "EventCode": "0xB7, 0xBB",
1303 "MSRValue": "0x023c000080 ",
1304 "Counter": "0,1,2,3",
1305 "UMask": "0x1",
1306 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_MISS",
1307 "MSRIndex": "0x1a6,0x1a7",
1308 "SampleAfterValue": "100003",
1309 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_MISS",
1310 "Offcore": "1",
1311 "CounterHTOff": "0,1,2,3"
1312 },
1313 {
1314 "EventCode": "0xB7, 0xBB",
1315 "MSRValue": "0x013c000080 ",
1316 "Counter": "0,1,2,3",
1317 "UMask": "0x1",
1318 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_NOT_NEEDED",
1319 "MSRIndex": "0x1a6,0x1a7",
1320 "SampleAfterValue": "100003",
1321 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_NOT_NEEDED",
1322 "Offcore": "1",
1323 "CounterHTOff": "0,1,2,3"
1324 },
1325 {
1326 "EventCode": "0xB7, 0xBB",
1327 "MSRValue": "0x00bc000080 ",
1328 "Counter": "0,1,2,3",
1329 "UMask": "0x1",
1330 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SNOOP_NONE",
1331 "MSRIndex": "0x1a6,0x1a7",
1332 "SampleAfterValue": "100003",
1333 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SNOOP_NONE",
1334 "Offcore": "1",
1335 "CounterHTOff": "0,1,2,3"
1336 },
1337 {
1338 "EventCode": "0xB7, 0xBB",
1339 "MSRValue": "0x007c000080 ",
1340 "Counter": "0,1,2,3",
1341 "UMask": "0x1",
1342 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS.SPL_HIT",
1343 "MSRIndex": "0x1a6,0x1a7",
1344 "SampleAfterValue": "100003",
1345 "BriefDescription": "PF_L3_DATA_RD & L3_MISS & SPL_HIT",
1346 "Offcore": "1",
1347 "CounterHTOff": "0,1,2,3"
1348 },
1349 {
1350 "EventCode": "0xB7, 0xBB",
1351 "MSRValue": "0x3fc4000080 ",
1352 "Counter": "0,1,2,3",
1353 "UMask": "0x1",
1354 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1355 "MSRIndex": "0x1a6,0x1a7",
1356 "SampleAfterValue": "100003",
1357 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1358 "Offcore": "1",
1359 "CounterHTOff": "0,1,2,3"
1360 },
1361 {
1362 "EventCode": "0xB7, 0xBB",
1363 "MSRValue": "0x2004000080 ",
1364 "Counter": "0,1,2,3",
1365 "UMask": "0x1",
1366 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1367 "MSRIndex": "0x1a6,0x1a7",
1368 "SampleAfterValue": "100003",
1369 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1370 "Offcore": "1",
1371 "CounterHTOff": "0,1,2,3"
1372 },
1373 {
1374 "EventCode": "0xB7, 0xBB",
1375 "MSRValue": "0x1004000080 ",
1376 "Counter": "0,1,2,3",
1377 "UMask": "0x1",
1378 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1379 "MSRIndex": "0x1a6,0x1a7",
1380 "SampleAfterValue": "100003",
1381 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1382 "Offcore": "1",
1383 "CounterHTOff": "0,1,2,3"
1384 },
1385 {
1386 "EventCode": "0xB7, 0xBB",
1387 "MSRValue": "0x0404000080 ",
1388 "Counter": "0,1,2,3",
1389 "UMask": "0x1",
1390 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1391 "MSRIndex": "0x1a6,0x1a7",
1392 "SampleAfterValue": "100003",
1393 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1394 "Offcore": "1",
1395 "CounterHTOff": "0,1,2,3"
1396 },
1397 {
1398 "EventCode": "0xB7, 0xBB",
1399 "MSRValue": "0x0204000080 ",
1400 "Counter": "0,1,2,3",
1401 "UMask": "0x1",
1402 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1403 "MSRIndex": "0x1a6,0x1a7",
1404 "SampleAfterValue": "100003",
1405 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1406 "Offcore": "1",
1407 "CounterHTOff": "0,1,2,3"
1408 },
1409 {
1410 "EventCode": "0xB7, 0xBB",
1411 "MSRValue": "0x0104000080 ",
1412 "Counter": "0,1,2,3",
1413 "UMask": "0x1",
1414 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1415 "MSRIndex": "0x1a6,0x1a7",
1416 "SampleAfterValue": "100003",
1417 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1418 "Offcore": "1",
1419 "CounterHTOff": "0,1,2,3"
1420 },
1421 {
1422 "EventCode": "0xB7, 0xBB",
1423 "MSRValue": "0x0084000080 ",
1424 "Counter": "0,1,2,3",
1425 "UMask": "0x1",
1426 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1427 "MSRIndex": "0x1a6,0x1a7",
1428 "SampleAfterValue": "100003",
1429 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1430 "Offcore": "1",
1431 "CounterHTOff": "0,1,2,3"
1432 },
1433 {
1434 "EventCode": "0xB7, 0xBB",
1435 "MSRValue": "0x0044000080 ",
1436 "Counter": "0,1,2,3",
1437 "UMask": "0x1",
1438 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_MISS_LOCAL_DRAM.SPL_HIT",
1439 "MSRIndex": "0x1a6,0x1a7",
1440 "SampleAfterValue": "100003",
1441 "BriefDescription": "PF_L3_DATA_RD & L3_MISS_LOCAL_DRAM & SPL_HIT",
1442 "Offcore": "1",
1443 "CounterHTOff": "0,1,2,3"
1444 },
1445 {
1446 "EventCode": "0xB7, 0xBB",
1447 "MSRValue": "0x2000400080 ",
1448 "Counter": "0,1,2,3",
1449 "UMask": "0x1",
1450 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_NON_DRAM",
1451 "MSRIndex": "0x1a6,0x1a7",
1452 "SampleAfterValue": "100003",
1453 "BriefDescription": "PF_L3_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_NON_DRAM",
1454 "Offcore": "1",
1455 "CounterHTOff": "0,1,2,3"
1456 },
1457 {
1458 "EventCode": "0xB7, 0xBB",
1459 "MSRValue": "0x20001c0080 ",
1460 "Counter": "0,1,2,3",
1461 "UMask": "0x1",
1462 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT.SNOOP_NON_DRAM",
1463 "MSRIndex": "0x1a6,0x1a7",
1464 "SampleAfterValue": "100003",
1465 "BriefDescription": "PF_L3_DATA_RD & L3_HIT & SNOOP_NON_DRAM",
1466 "Offcore": "1",
1467 "CounterHTOff": "0,1,2,3"
1468 },
1469 {
1470 "EventCode": "0xB7, 0xBB",
1471 "MSRValue": "0x2000100080 ",
1472 "Counter": "0,1,2,3",
1473 "UMask": "0x1",
1474 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_S.SNOOP_NON_DRAM",
1475 "MSRIndex": "0x1a6,0x1a7",
1476 "SampleAfterValue": "100003",
1477 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_S & SNOOP_NON_DRAM",
1478 "Offcore": "1",
1479 "CounterHTOff": "0,1,2,3"
1480 },
1481 {
1482 "EventCode": "0xB7, 0xBB",
1483 "MSRValue": "0x2000080080 ",
1484 "Counter": "0,1,2,3",
1485 "UMask": "0x1",
1486 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_E.SNOOP_NON_DRAM",
1487 "MSRIndex": "0x1a6,0x1a7",
1488 "SampleAfterValue": "100003",
1489 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_E & SNOOP_NON_DRAM",
1490 "Offcore": "1",
1491 "CounterHTOff": "0,1,2,3"
1492 },
1493 {
1494 "EventCode": "0xB7, 0xBB",
1495 "MSRValue": "0x2000040080 ",
1496 "Counter": "0,1,2,3",
1497 "UMask": "0x1",
1498 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.L3_HIT_M.SNOOP_NON_DRAM",
1499 "MSRIndex": "0x1a6,0x1a7",
1500 "SampleAfterValue": "100003",
1501 "BriefDescription": "PF_L3_DATA_RD & L3_HIT_M & SNOOP_NON_DRAM",
1502 "Offcore": "1",
1503 "CounterHTOff": "0,1,2,3"
1504 },
1505 {
1506 "EventCode": "0xB7, 0xBB",
1507 "MSRValue": "0x2000020080 ",
1508 "Counter": "0,1,2,3",
1509 "UMask": "0x1",
1510 "EventName": "OFFCORE_RESPONSE.PF_L3_DATA_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
1511 "MSRIndex": "0x1a6,0x1a7",
1512 "SampleAfterValue": "100003",
1513 "BriefDescription": "PF_L3_DATA_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
1514 "Offcore": "1",
1515 "CounterHTOff": "0,1,2,3"
1516 },
1517 {
1518 "EventCode": "0xB7, 0xBB",
1519 "MSRValue": "0x3ffc000004 ",
1520 "Counter": "0,1,2,3",
1521 "UMask": "0x1",
1522 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.ANY_SNOOP",
1523 "MSRIndex": "0x1a6,0x1a7",
1524 "SampleAfterValue": "100003",
1525 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & ANY_SNOOP",
1526 "Offcore": "1",
1527 "CounterHTOff": "0,1,2,3"
1528 },
1529 {
1530 "EventCode": "0xB7, 0xBB",
1531 "MSRValue": "0x203c000004 ",
1532 "Counter": "0,1,2,3",
1533 "UMask": "0x1",
1534 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_NON_DRAM",
1535 "MSRIndex": "0x1a6,0x1a7",
1536 "SampleAfterValue": "100003",
1537 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_NON_DRAM",
1538 "Offcore": "1",
1539 "CounterHTOff": "0,1,2,3"
1540 },
1541 {
1542 "EventCode": "0xB7, 0xBB",
1543 "MSRValue": "0x103c000004 ",
1544 "Counter": "0,1,2,3",
1545 "UMask": "0x1",
1546 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_HITM",
1547 "MSRIndex": "0x1a6,0x1a7",
1548 "SampleAfterValue": "100003",
1549 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_HITM",
1550 "Offcore": "1",
1551 "CounterHTOff": "0,1,2,3"
1552 },
1553 {
1554 "EventCode": "0xB7, 0xBB",
1555 "MSRValue": "0x043c000004 ",
1556 "Counter": "0,1,2,3",
1557 "UMask": "0x1",
1558 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_HIT_NO_FWD",
1559 "MSRIndex": "0x1a6,0x1a7",
1560 "SampleAfterValue": "100003",
1561 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_HIT_NO_FWD",
1562 "Offcore": "1",
1563 "CounterHTOff": "0,1,2,3"
1564 },
1565 {
1566 "EventCode": "0xB7, 0xBB",
1567 "MSRValue": "0x023c000004 ",
1568 "Counter": "0,1,2,3",
1569 "UMask": "0x1",
1570 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_MISS",
1571 "MSRIndex": "0x1a6,0x1a7",
1572 "SampleAfterValue": "100003",
1573 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_MISS",
1574 "Offcore": "1",
1575 "CounterHTOff": "0,1,2,3"
1576 },
1577 {
1578 "EventCode": "0xB7, 0xBB",
1579 "MSRValue": "0x013c000004 ",
1580 "Counter": "0,1,2,3",
1581 "UMask": "0x1",
1582 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_NOT_NEEDED",
1583 "MSRIndex": "0x1a6,0x1a7",
1584 "SampleAfterValue": "100003",
1585 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_NOT_NEEDED",
1586 "Offcore": "1",
1587 "CounterHTOff": "0,1,2,3"
1588 },
1589 {
1590 "EventCode": "0xB7, 0xBB",
1591 "MSRValue": "0x00bc000004 ",
1592 "Counter": "0,1,2,3",
1593 "UMask": "0x1",
1594 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SNOOP_NONE",
1595 "MSRIndex": "0x1a6,0x1a7",
1596 "SampleAfterValue": "100003",
1597 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SNOOP_NONE",
1598 "Offcore": "1",
1599 "CounterHTOff": "0,1,2,3"
1600 },
1601 {
1602 "EventCode": "0xB7, 0xBB",
1603 "MSRValue": "0x007c000004 ",
1604 "Counter": "0,1,2,3",
1605 "UMask": "0x1",
1606 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS.SPL_HIT",
1607 "MSRIndex": "0x1a6,0x1a7",
1608 "SampleAfterValue": "100003",
1609 "BriefDescription": "DEMAND_CODE_RD & L3_MISS & SPL_HIT",
1610 "Offcore": "1",
1611 "CounterHTOff": "0,1,2,3"
1612 },
1613 {
1614 "EventCode": "0xB7, 0xBB",
1615 "MSRValue": "0x3fc4000004 ",
1616 "Counter": "0,1,2,3",
1617 "UMask": "0x1",
1618 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1619 "MSRIndex": "0x1a6,0x1a7",
1620 "SampleAfterValue": "100003",
1621 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1622 "Offcore": "1",
1623 "CounterHTOff": "0,1,2,3"
1624 },
1625 {
1626 "EventCode": "0xB7, 0xBB",
1627 "MSRValue": "0x2004000004 ",
1628 "Counter": "0,1,2,3",
1629 "UMask": "0x1",
1630 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1631 "MSRIndex": "0x1a6,0x1a7",
1632 "SampleAfterValue": "100003",
1633 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1634 "Offcore": "1",
1635 "CounterHTOff": "0,1,2,3"
1636 },
1637 {
1638 "EventCode": "0xB7, 0xBB",
1639 "MSRValue": "0x1004000004 ",
1640 "Counter": "0,1,2,3",
1641 "UMask": "0x1",
1642 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1643 "MSRIndex": "0x1a6,0x1a7",
1644 "SampleAfterValue": "100003",
1645 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1646 "Offcore": "1",
1647 "CounterHTOff": "0,1,2,3"
1648 },
1649 {
1650 "EventCode": "0xB7, 0xBB",
1651 "MSRValue": "0x0404000004 ",
1652 "Counter": "0,1,2,3",
1653 "UMask": "0x1",
1654 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1655 "MSRIndex": "0x1a6,0x1a7",
1656 "SampleAfterValue": "100003",
1657 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1658 "Offcore": "1",
1659 "CounterHTOff": "0,1,2,3"
1660 },
1661 {
1662 "EventCode": "0xB7, 0xBB",
1663 "MSRValue": "0x0204000004 ",
1664 "Counter": "0,1,2,3",
1665 "UMask": "0x1",
1666 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1667 "MSRIndex": "0x1a6,0x1a7",
1668 "SampleAfterValue": "100003",
1669 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1670 "Offcore": "1",
1671 "CounterHTOff": "0,1,2,3"
1672 },
1673 {
1674 "EventCode": "0xB7, 0xBB",
1675 "MSRValue": "0x0104000004 ",
1676 "Counter": "0,1,2,3",
1677 "UMask": "0x1",
1678 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1679 "MSRIndex": "0x1a6,0x1a7",
1680 "SampleAfterValue": "100003",
1681 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1682 "Offcore": "1",
1683 "CounterHTOff": "0,1,2,3"
1684 },
1685 {
1686 "EventCode": "0xB7, 0xBB",
1687 "MSRValue": "0x0084000004 ",
1688 "Counter": "0,1,2,3",
1689 "UMask": "0x1",
1690 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1691 "MSRIndex": "0x1a6,0x1a7",
1692 "SampleAfterValue": "100003",
1693 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1694 "Offcore": "1",
1695 "CounterHTOff": "0,1,2,3"
1696 },
1697 {
1698 "EventCode": "0xB7, 0xBB",
1699 "MSRValue": "0x0044000004 ",
1700 "Counter": "0,1,2,3",
1701 "UMask": "0x1",
1702 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_MISS_LOCAL_DRAM.SPL_HIT",
1703 "MSRIndex": "0x1a6,0x1a7",
1704 "SampleAfterValue": "100003",
1705 "BriefDescription": "DEMAND_CODE_RD & L3_MISS_LOCAL_DRAM & SPL_HIT",
1706 "Offcore": "1",
1707 "CounterHTOff": "0,1,2,3"
1708 },
1709 {
1710 "EventCode": "0xB7, 0xBB",
1711 "MSRValue": "0x2000400004 ",
1712 "Counter": "0,1,2,3",
1713 "UMask": "0x1",
1714 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L4_HIT_LOCAL_L4.SNOOP_NON_DRAM",
1715 "MSRIndex": "0x1a6,0x1a7",
1716 "SampleAfterValue": "100003",
1717 "BriefDescription": "DEMAND_CODE_RD & L4_HIT_LOCAL_L4 & SNOOP_NON_DRAM",
1718 "Offcore": "1",
1719 "CounterHTOff": "0,1,2,3"
1720 },
1721 {
1722 "EventCode": "0xB7, 0xBB",
1723 "MSRValue": "0x20001c0004 ",
1724 "Counter": "0,1,2,3",
1725 "UMask": "0x1",
1726 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT.SNOOP_NON_DRAM",
1727 "MSRIndex": "0x1a6,0x1a7",
1728 "SampleAfterValue": "100003",
1729 "BriefDescription": "DEMAND_CODE_RD & L3_HIT & SNOOP_NON_DRAM",
1730 "Offcore": "1",
1731 "CounterHTOff": "0,1,2,3"
1732 },
1733 {
1734 "EventCode": "0xB7, 0xBB",
1735 "MSRValue": "0x2000100004 ",
1736 "Counter": "0,1,2,3",
1737 "UMask": "0x1",
1738 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_S.SNOOP_NON_DRAM",
1739 "MSRIndex": "0x1a6,0x1a7",
1740 "SampleAfterValue": "100003",
1741 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_S & SNOOP_NON_DRAM",
1742 "Offcore": "1",
1743 "CounterHTOff": "0,1,2,3"
1744 },
1745 {
1746 "EventCode": "0xB7, 0xBB",
1747 "MSRValue": "0x2000080004 ",
1748 "Counter": "0,1,2,3",
1749 "UMask": "0x1",
1750 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_E.SNOOP_NON_DRAM",
1751 "MSRIndex": "0x1a6,0x1a7",
1752 "SampleAfterValue": "100003",
1753 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_E & SNOOP_NON_DRAM",
1754 "Offcore": "1",
1755 "CounterHTOff": "0,1,2,3"
1756 },
1757 {
1758 "EventCode": "0xB7, 0xBB",
1759 "MSRValue": "0x2000040004 ",
1760 "Counter": "0,1,2,3",
1761 "UMask": "0x1",
1762 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L3_HIT_M.SNOOP_NON_DRAM",
1763 "MSRIndex": "0x1a6,0x1a7",
1764 "SampleAfterValue": "100003",
1765 "BriefDescription": "DEMAND_CODE_RD & L3_HIT_M & SNOOP_NON_DRAM",
1766 "Offcore": "1",
1767 "CounterHTOff": "0,1,2,3"
1768 },
1769 {
1770 "EventCode": "0xB7, 0xBB",
1771 "MSRValue": "0x2000020004 ",
1772 "Counter": "0,1,2,3",
1773 "UMask": "0x1",
1774 "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
1775 "MSRIndex": "0x1a6,0x1a7",
1776 "SampleAfterValue": "100003",
1777 "BriefDescription": "DEMAND_CODE_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
1778 "Offcore": "1",
1779 "CounterHTOff": "0,1,2,3"
1780 },
1781 {
1782 "EventCode": "0xB7, 0xBB",
1783 "MSRValue": "0x3ffc000002 ",
1784 "Counter": "0,1,2,3",
1785 "UMask": "0x1",
1786 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.ANY_SNOOP",
1787 "MSRIndex": "0x1a6,0x1a7",
1788 "SampleAfterValue": "100003",
1789 "BriefDescription": "DEMAND_RFO & L3_MISS & ANY_SNOOP",
1790 "Offcore": "1",
1791 "CounterHTOff": "0,1,2,3"
1792 },
1793 {
1794 "EventCode": "0xB7, 0xBB",
1795 "MSRValue": "0x203c000002 ",
1796 "Counter": "0,1,2,3",
1797 "UMask": "0x1",
1798 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_NON_DRAM",
1799 "MSRIndex": "0x1a6,0x1a7",
1800 "SampleAfterValue": "100003",
1801 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_NON_DRAM",
1802 "Offcore": "1",
1803 "CounterHTOff": "0,1,2,3"
1804 },
1805 {
1806 "EventCode": "0xB7, 0xBB",
1807 "MSRValue": "0x103c000002 ",
1808 "Counter": "0,1,2,3",
1809 "UMask": "0x1",
1810 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_HITM",
1811 "MSRIndex": "0x1a6,0x1a7",
1812 "SampleAfterValue": "100003",
1813 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_HITM",
1814 "Offcore": "1",
1815 "CounterHTOff": "0,1,2,3"
1816 },
1817 {
1818 "EventCode": "0xB7, 0xBB",
1819 "MSRValue": "0x043c000002 ",
1820 "Counter": "0,1,2,3",
1821 "UMask": "0x1",
1822 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_HIT_NO_FWD",
1823 "MSRIndex": "0x1a6,0x1a7",
1824 "SampleAfterValue": "100003",
1825 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_HIT_NO_FWD",
1826 "Offcore": "1",
1827 "CounterHTOff": "0,1,2,3"
1828 },
1829 {
1830 "EventCode": "0xB7, 0xBB",
1831 "MSRValue": "0x023c000002 ",
1832 "Counter": "0,1,2,3",
1833 "UMask": "0x1",
1834 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_MISS",
1835 "MSRIndex": "0x1a6,0x1a7",
1836 "SampleAfterValue": "100003",
1837 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_MISS",
1838 "Offcore": "1",
1839 "CounterHTOff": "0,1,2,3"
1840 },
1841 {
1842 "EventCode": "0xB7, 0xBB",
1843 "MSRValue": "0x013c000002 ",
1844 "Counter": "0,1,2,3",
1845 "UMask": "0x1",
1846 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_NOT_NEEDED",
1847 "MSRIndex": "0x1a6,0x1a7",
1848 "SampleAfterValue": "100003",
1849 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_NOT_NEEDED",
1850 "Offcore": "1",
1851 "CounterHTOff": "0,1,2,3"
1852 },
1853 {
1854 "EventCode": "0xB7, 0xBB",
1855 "MSRValue": "0x00bc000002 ",
1856 "Counter": "0,1,2,3",
1857 "UMask": "0x1",
1858 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SNOOP_NONE",
1859 "MSRIndex": "0x1a6,0x1a7",
1860 "SampleAfterValue": "100003",
1861 "BriefDescription": "DEMAND_RFO & L3_MISS & SNOOP_NONE",
1862 "Offcore": "1",
1863 "CounterHTOff": "0,1,2,3"
1864 },
1865 {
1866 "EventCode": "0xB7, 0xBB",
1867 "MSRValue": "0x007c000002 ",
1868 "Counter": "0,1,2,3",
1869 "UMask": "0x1",
1870 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.SPL_HIT",
1871 "MSRIndex": "0x1a6,0x1a7",
1872 "SampleAfterValue": "100003",
1873 "BriefDescription": "DEMAND_RFO & L3_MISS & SPL_HIT",
1874 "Offcore": "1",
1875 "CounterHTOff": "0,1,2,3"
1876 },
1877 {
1878 "EventCode": "0xB7, 0xBB",
1879 "MSRValue": "0x3fc4000002 ",
1880 "Counter": "0,1,2,3",
1881 "UMask": "0x1",
1882 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
1883 "MSRIndex": "0x1a6,0x1a7",
1884 "SampleAfterValue": "100003",
1885 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
1886 "Offcore": "1",
1887 "CounterHTOff": "0,1,2,3"
1888 },
1889 {
1890 "EventCode": "0xB7, 0xBB",
1891 "MSRValue": "0x2004000002 ",
1892 "Counter": "0,1,2,3",
1893 "UMask": "0x1",
1894 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
1895 "MSRIndex": "0x1a6,0x1a7",
1896 "SampleAfterValue": "100003",
1897 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
1898 "Offcore": "1",
1899 "CounterHTOff": "0,1,2,3"
1900 },
1901 {
1902 "EventCode": "0xB7, 0xBB",
1903 "MSRValue": "0x1004000002 ",
1904 "Counter": "0,1,2,3",
1905 "UMask": "0x1",
1906 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
1907 "MSRIndex": "0x1a6,0x1a7",
1908 "SampleAfterValue": "100003",
1909 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
1910 "Offcore": "1",
1911 "CounterHTOff": "0,1,2,3"
1912 },
1913 {
1914 "EventCode": "0xB7, 0xBB",
1915 "MSRValue": "0x0404000002 ",
1916 "Counter": "0,1,2,3",
1917 "UMask": "0x1",
1918 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
1919 "MSRIndex": "0x1a6,0x1a7",
1920 "SampleAfterValue": "100003",
1921 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
1922 "Offcore": "1",
1923 "CounterHTOff": "0,1,2,3"
1924 },
1925 {
1926 "EventCode": "0xB7, 0xBB",
1927 "MSRValue": "0x0204000002 ",
1928 "Counter": "0,1,2,3",
1929 "UMask": "0x1",
1930 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
1931 "MSRIndex": "0x1a6,0x1a7",
1932 "SampleAfterValue": "100003",
1933 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
1934 "Offcore": "1",
1935 "CounterHTOff": "0,1,2,3"
1936 },
1937 {
1938 "EventCode": "0xB7, 0xBB",
1939 "MSRValue": "0x0104000002 ",
1940 "Counter": "0,1,2,3",
1941 "UMask": "0x1",
1942 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
1943 "MSRIndex": "0x1a6,0x1a7",
1944 "SampleAfterValue": "100003",
1945 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
1946 "Offcore": "1",
1947 "CounterHTOff": "0,1,2,3"
1948 },
1949 {
1950 "EventCode": "0xB7, 0xBB",
1951 "MSRValue": "0x0084000002 ",
1952 "Counter": "0,1,2,3",
1953 "UMask": "0x1",
1954 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
1955 "MSRIndex": "0x1a6,0x1a7",
1956 "SampleAfterValue": "100003",
1957 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
1958 "Offcore": "1",
1959 "CounterHTOff": "0,1,2,3"
1960 },
1961 {
1962 "EventCode": "0xB7, 0xBB",
1963 "MSRValue": "0x0044000002 ",
1964 "Counter": "0,1,2,3",
1965 "UMask": "0x1",
1966 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS_LOCAL_DRAM.SPL_HIT",
1967 "MSRIndex": "0x1a6,0x1a7",
1968 "SampleAfterValue": "100003",
1969 "BriefDescription": "DEMAND_RFO & L3_MISS_LOCAL_DRAM & SPL_HIT",
1970 "Offcore": "1",
1971 "CounterHTOff": "0,1,2,3"
1972 },
1973 {
1974 "EventCode": "0xB7, 0xBB",
1975 "MSRValue": "0x2000400002 ",
1976 "Counter": "0,1,2,3",
1977 "UMask": "0x1",
1978 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L4_HIT_LOCAL_L4.SNOOP_NON_DRAM",
1979 "MSRIndex": "0x1a6,0x1a7",
1980 "SampleAfterValue": "100003",
1981 "BriefDescription": "DEMAND_RFO & L4_HIT_LOCAL_L4 & SNOOP_NON_DRAM",
1982 "Offcore": "1",
1983 "CounterHTOff": "0,1,2,3"
1984 },
1985 {
1986 "EventCode": "0xB7, 0xBB",
1987 "MSRValue": "0x20001c0002 ",
1988 "Counter": "0,1,2,3",
1989 "UMask": "0x1",
1990 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_NON_DRAM",
1991 "MSRIndex": "0x1a6,0x1a7",
1992 "SampleAfterValue": "100003",
1993 "BriefDescription": "DEMAND_RFO & L3_HIT & SNOOP_NON_DRAM",
1994 "Offcore": "1",
1995 "CounterHTOff": "0,1,2,3"
1996 },
1997 {
1998 "EventCode": "0xB7, 0xBB",
1999 "MSRValue": "0x2000100002 ",
2000 "Counter": "0,1,2,3",
2001 "UMask": "0x1",
2002 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_S.SNOOP_NON_DRAM",
2003 "MSRIndex": "0x1a6,0x1a7",
2004 "SampleAfterValue": "100003",
2005 "BriefDescription": "DEMAND_RFO & L3_HIT_S & SNOOP_NON_DRAM",
2006 "Offcore": "1",
2007 "CounterHTOff": "0,1,2,3"
2008 },
2009 {
2010 "EventCode": "0xB7, 0xBB",
2011 "MSRValue": "0x2000080002 ",
2012 "Counter": "0,1,2,3",
2013 "UMask": "0x1",
2014 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_E.SNOOP_NON_DRAM",
2015 "MSRIndex": "0x1a6,0x1a7",
2016 "SampleAfterValue": "100003",
2017 "BriefDescription": "DEMAND_RFO & L3_HIT_E & SNOOP_NON_DRAM",
2018 "Offcore": "1",
2019 "CounterHTOff": "0,1,2,3"
2020 },
2021 {
2022 "EventCode": "0xB7, 0xBB",
2023 "MSRValue": "0x2000040002 ",
2024 "Counter": "0,1,2,3",
2025 "UMask": "0x1",
2026 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT_M.SNOOP_NON_DRAM",
2027 "MSRIndex": "0x1a6,0x1a7",
2028 "SampleAfterValue": "100003",
2029 "BriefDescription": "DEMAND_RFO & L3_HIT_M & SNOOP_NON_DRAM",
2030 "Offcore": "1",
2031 "CounterHTOff": "0,1,2,3"
2032 },
2033 {
2034 "EventCode": "0xB7, 0xBB",
2035 "MSRValue": "0x2000020002 ",
2036 "Counter": "0,1,2,3",
2037 "UMask": "0x1",
2038 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.SUPPLIER_NONE.SNOOP_NON_DRAM",
2039 "MSRIndex": "0x1a6,0x1a7",
2040 "SampleAfterValue": "100003",
2041 "BriefDescription": "DEMAND_RFO & SUPPLIER_NONE & SNOOP_NON_DRAM",
2042 "Offcore": "1",
2043 "CounterHTOff": "0,1,2,3"
2044 },
2045 {
2046 "EventCode": "0xB7, 0xBB",
2047 "MSRValue": "0x3ffc000001 ",
2048 "Counter": "0,1,2,3",
2049 "UMask": "0x1",
2050 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.ANY_SNOOP",
2051 "MSRIndex": "0x1a6,0x1a7",
2052 "SampleAfterValue": "100003",
2053 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & ANY_SNOOP",
2054 "Offcore": "1",
2055 "CounterHTOff": "0,1,2,3"
2056 },
2057 {
2058 "EventCode": "0xB7, 0xBB",
2059 "MSRValue": "0x203c000001 ",
2060 "Counter": "0,1,2,3",
2061 "UMask": "0x1",
2062 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_NON_DRAM",
2063 "MSRIndex": "0x1a6,0x1a7",
2064 "SampleAfterValue": "100003",
2065 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_NON_DRAM",
2066 "Offcore": "1",
2067 "CounterHTOff": "0,1,2,3"
2068 },
2069 {
2070 "EventCode": "0xB7, 0xBB",
2071 "MSRValue": "0x103c000001 ",
2072 "Counter": "0,1,2,3",
2073 "UMask": "0x1",
2074 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_HITM",
2075 "MSRIndex": "0x1a6,0x1a7",
2076 "SampleAfterValue": "100003",
2077 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_HITM",
2078 "Offcore": "1",
2079 "CounterHTOff": "0,1,2,3"
2080 },
2081 {
2082 "EventCode": "0xB7, 0xBB",
2083 "MSRValue": "0x043c000001 ",
2084 "Counter": "0,1,2,3",
2085 "UMask": "0x1",
2086 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_HIT_NO_FWD",
2087 "MSRIndex": "0x1a6,0x1a7",
2088 "SampleAfterValue": "100003",
2089 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_HIT_NO_FWD",
2090 "Offcore": "1",
2091 "CounterHTOff": "0,1,2,3"
2092 },
2093 {
2094 "EventCode": "0xB7, 0xBB",
2095 "MSRValue": "0x023c000001 ",
2096 "Counter": "0,1,2,3",
2097 "UMask": "0x1",
2098 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_MISS",
2099 "MSRIndex": "0x1a6,0x1a7",
2100 "SampleAfterValue": "100003",
2101 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_MISS",
2102 "Offcore": "1",
2103 "CounterHTOff": "0,1,2,3"
2104 },
2105 {
2106 "EventCode": "0xB7, 0xBB",
2107 "MSRValue": "0x013c000001 ",
2108 "Counter": "0,1,2,3",
2109 "UMask": "0x1",
2110 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_NOT_NEEDED",
2111 "MSRIndex": "0x1a6,0x1a7",
2112 "SampleAfterValue": "100003",
2113 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_NOT_NEEDED",
2114 "Offcore": "1",
2115 "CounterHTOff": "0,1,2,3"
2116 },
2117 {
2118 "EventCode": "0xB7, 0xBB",
2119 "MSRValue": "0x00bc000001 ",
2120 "Counter": "0,1,2,3",
2121 "UMask": "0x1",
2122 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SNOOP_NONE",
2123 "MSRIndex": "0x1a6,0x1a7",
2124 "SampleAfterValue": "100003",
2125 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SNOOP_NONE",
2126 "Offcore": "1",
2127 "CounterHTOff": "0,1,2,3"
2128 },
2129 {
2130 "EventCode": "0xB7, 0xBB",
2131 "MSRValue": "0x007c000001 ",
2132 "Counter": "0,1,2,3",
2133 "UMask": "0x1",
2134 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS.SPL_HIT",
2135 "MSRIndex": "0x1a6,0x1a7",
2136 "SampleAfterValue": "100003",
2137 "BriefDescription": "DEMAND_DATA_RD & L3_MISS & SPL_HIT",
2138 "Offcore": "1",
2139 "CounterHTOff": "0,1,2,3"
2140 },
2141 {
2142 "EventCode": "0xB7, 0xBB",
2143 "MSRValue": "0x3fc4000001 ",
2144 "Counter": "0,1,2,3",
2145 "UMask": "0x1",
2146 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.ANY_SNOOP",
2147 "MSRIndex": "0x1a6,0x1a7",
2148 "SampleAfterValue": "100003",
2149 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & ANY_SNOOP",
2150 "Offcore": "1",
2151 "CounterHTOff": "0,1,2,3"
2152 },
2153 {
2154 "EventCode": "0xB7, 0xBB",
2155 "MSRValue": "0x2004000001 ",
2156 "Counter": "0,1,2,3",
2157 "UMask": "0x1",
2158 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NON_DRAM",
2159 "MSRIndex": "0x1a6,0x1a7",
2160 "SampleAfterValue": "100003",
2161 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NON_DRAM",
2162 "Offcore": "1",
2163 "CounterHTOff": "0,1,2,3"
2164 },
2165 {
2166 "EventCode": "0xB7, 0xBB",
2167 "MSRValue": "0x1004000001 ",
2168 "Counter": "0,1,2,3",
2169 "UMask": "0x1",
2170 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HITM",
2171 "MSRIndex": "0x1a6,0x1a7",
2172 "SampleAfterValue": "100003",
2173 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HITM",
2174 "Offcore": "1",
2175 "CounterHTOff": "0,1,2,3"
2176 },
2177 {
2178 "EventCode": "0xB7, 0xBB",
2179 "MSRValue": "0x0404000001 ",
2180 "Counter": "0,1,2,3",
2181 "UMask": "0x1",
2182 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_HIT_NO_FWD",
2183 "MSRIndex": "0x1a6,0x1a7",
2184 "SampleAfterValue": "100003",
2185 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_HIT_NO_FWD",
2186 "Offcore": "1",
2187 "CounterHTOff": "0,1,2,3"
2188 },
2189 {
2190 "EventCode": "0xB7, 0xBB",
2191 "MSRValue": "0x0204000001 ",
2192 "Counter": "0,1,2,3",
2193 "UMask": "0x1",
2194 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_MISS",
2195 "MSRIndex": "0x1a6,0x1a7",
2196 "SampleAfterValue": "100003",
2197 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_MISS",
2198 "Offcore": "1",
2199 "CounterHTOff": "0,1,2,3"
2200 },
2201 {
2202 "EventCode": "0xB7, 0xBB",
2203 "MSRValue": "0x0104000001 ",
2204 "Counter": "0,1,2,3",
2205 "UMask": "0x1",
2206 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NOT_NEEDED",
2207 "MSRIndex": "0x1a6,0x1a7",
2208 "SampleAfterValue": "100003",
2209 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NOT_NEEDED",
2210 "Offcore": "1",
2211 "CounterHTOff": "0,1,2,3"
2212 },
2213 {
2214 "EventCode": "0xB7, 0xBB",
2215 "MSRValue": "0x0084000001 ",
2216 "Counter": "0,1,2,3",
2217 "UMask": "0x1",
2218 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SNOOP_NONE",
2219 "MSRIndex": "0x1a6,0x1a7",
2220 "SampleAfterValue": "100003",
2221 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SNOOP_NONE",
2222 "Offcore": "1",
2223 "CounterHTOff": "0,1,2,3"
2224 },
2225 {
2226 "EventCode": "0xB7, 0xBB",
2227 "MSRValue": "0x0044000001 ",
2228 "Counter": "0,1,2,3",
2229 "UMask": "0x1",
2230 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_MISS_LOCAL_DRAM.SPL_HIT",
2231 "MSRIndex": "0x1a6,0x1a7",
2232 "SampleAfterValue": "100003",
2233 "BriefDescription": "DEMAND_DATA_RD & L3_MISS_LOCAL_DRAM & SPL_HIT",
2234 "Offcore": "1",
2235 "CounterHTOff": "0,1,2,3"
2236 },
2237 {
2238 "EventCode": "0xB7, 0xBB",
2239 "MSRValue": "0x2000400001 ",
2240 "Counter": "0,1,2,3",
2241 "UMask": "0x1",
2242 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L4_HIT_LOCAL_L4.SNOOP_NON_DRAM",
2243 "MSRIndex": "0x1a6,0x1a7",
2244 "SampleAfterValue": "100003",
2245 "BriefDescription": "DEMAND_DATA_RD & L4_HIT_LOCAL_L4 & SNOOP_NON_DRAM",
2246 "Offcore": "1",
2247 "CounterHTOff": "0,1,2,3"
2248 },
2249 {
2250 "EventCode": "0xB7, 0xBB",
2251 "MSRValue": "0x20001c0001 ",
2252 "Counter": "0,1,2,3",
2253 "UMask": "0x1",
2254 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_NON_DRAM",
2255 "MSRIndex": "0x1a6,0x1a7",
2256 "SampleAfterValue": "100003",
2257 "BriefDescription": "DEMAND_DATA_RD & L3_HIT & SNOOP_NON_DRAM",
2258 "Offcore": "1",
2259 "CounterHTOff": "0,1,2,3"
2260 },
2261 {
2262 "EventCode": "0xB7, 0xBB",
2263 "MSRValue": "0x2000100001 ",
2264 "Counter": "0,1,2,3",
2265 "UMask": "0x1",
2266 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_S.SNOOP_NON_DRAM",
2267 "MSRIndex": "0x1a6,0x1a7",
2268 "SampleAfterValue": "100003",
2269 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_S & SNOOP_NON_DRAM",
2270 "Offcore": "1",
2271 "CounterHTOff": "0,1,2,3"
2272 },
2273 {
2274 "EventCode": "0xB7, 0xBB",
2275 "MSRValue": "0x2000080001 ",
2276 "Counter": "0,1,2,3",
2277 "UMask": "0x1",
2278 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_E.SNOOP_NON_DRAM",
2279 "MSRIndex": "0x1a6,0x1a7",
2280 "SampleAfterValue": "100003",
2281 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_E & SNOOP_NON_DRAM",
2282 "Offcore": "1",
2283 "CounterHTOff": "0,1,2,3"
2284 },
2285 {
2286 "EventCode": "0xB7, 0xBB",
2287 "MSRValue": "0x2000040001 ",
2288 "Counter": "0,1,2,3",
2289 "UMask": "0x1",
2290 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT_M.SNOOP_NON_DRAM",
2291 "MSRIndex": "0x1a6,0x1a7",
2292 "SampleAfterValue": "100003",
2293 "BriefDescription": "DEMAND_DATA_RD & L3_HIT_M & SNOOP_NON_DRAM",
2294 "Offcore": "1",
2295 "CounterHTOff": "0,1,2,3"
2296 },
2297 {
2298 "EventCode": "0xB7, 0xBB",
2299 "MSRValue": "0x2000020001 ",
2300 "Counter": "0,1,2,3",
2301 "UMask": "0x1",
2302 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.SUPPLIER_NONE.SNOOP_NON_DRAM",
2303 "MSRIndex": "0x1a6,0x1a7",
2304 "SampleAfterValue": "100003",
2305 "BriefDescription": "DEMAND_DATA_RD & SUPPLIER_NONE & SNOOP_NON_DRAM",
2306 "Offcore": "1",
2307 "CounterHTOff": "0,1,2,3"
2308 }
2309] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/skylake/other.json b/tools/perf/pmu-events/arch/x86/skylake/other.json
new file mode 100644
index 000000000000..cfdc323acc82
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/skylake/other.json
@@ -0,0 +1,12 @@
1[
2 {
3 "PublicDescription": "This event counts the number of hardware interruptions received by the processor.",
4 "EventCode": "0xCB",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "HW_INTERRUPTS.RECEIVED",
8 "SampleAfterValue": "100003",
9 "BriefDescription": "Number of hardware interrupts received by the processor.",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 }
12] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/skylake/pipeline.json b/tools/perf/pmu-events/arch/x86/skylake/pipeline.json
new file mode 100644
index 000000000000..0f7adb809be3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/skylake/pipeline.json
@@ -0,0 +1,939 @@
1[
2 {
3 "PublicDescription": "This event counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. \nNotes: INST_RETIRED.ANY is counted by a designated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. INST_RETIRED.ANY_P is counted by a programmable counter and it is an architectural performance event. \nCounting: Faulting executions of GETSEC/VM entry/VM Exit/MWait will not count as retired instructions.",
4 "EventCode": "0x00",
5 "Counter": "Fixed counter 1",
6 "UMask": "0x1",
7 "EventName": "INST_RETIRED.ANY",
8 "SampleAfterValue": "2000003",
9 "BriefDescription": "Instructions retired from execution.",
10 "CounterHTOff": "Fixed counter 1"
11 },
12 {
13 "PublicDescription": "This event counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events.",
14 "EventCode": "0x00",
15 "Counter": "Fixed counter 2",
16 "UMask": "0x2",
17 "EventName": "CPU_CLK_UNHALTED.THREAD",
18 "SampleAfterValue": "2000003",
19 "BriefDescription": "Core cycles when the thread is not in halt state",
20 "CounterHTOff": "Fixed counter 2"
21 },
22 {
23 "PublicDescription": "This event counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. This event has a constant ratio with the CPU_CLK_UNHALTED.REF_XCLK event. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. Note: On all current platforms this event stops counting during 'throttling (TM)' states duty off periods the processor is 'halted'. The counter update is done at a lower clock rate then the core clock the overflow status bit for this counter may appear 'sticky'. After the counter has overflowed and software clears the overflow status bit and resets the counter to less than MAX. The reset value to the counter is not clocked immediately so the overflow status bit will flip 'high (1)' and generate another PMI (if enabled) after which the reset value gets clocked into the counter. Therefore, software will get the interrupt, read the overflow status bit '1 for bit 34 while the counter value is less than MAX. Software should ignore this case.",
24 "EventCode": "0x00",
25 "Counter": "Fixed counter 3",
26 "UMask": "0x3",
27 "EventName": "CPU_CLK_UNHALTED.REF_TSC",
28 "SampleAfterValue": "2000003",
29 "BriefDescription": "Reference cycles when the core is not in halt state.",
30 "CounterHTOff": "Fixed counter 3"
31 },
32 {
33 "PublicDescription": "This is an architectural event that counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling. For this reason, this event may have a changing ratio with regards to wall clock time.",
34 "EventCode": "0x3C",
35 "Counter": "0,1,2,3",
36 "UMask": "0x0",
37 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
38 "SampleAfterValue": "2000003",
39 "BriefDescription": "Thread cycles when thread is not in halt state",
40 "CounterHTOff": "0,1,2,3,4,5,6,7"
41 },
42 {
43 "EventCode": "0xE6",
44 "Counter": "0,1,2,3",
45 "UMask": "0x1",
46 "EventName": "BACLEARS.ANY",
47 "SampleAfterValue": "100003",
48 "BriefDescription": "Counts the total number when the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end.",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "EventCode": "0xA8",
53 "Counter": "0,1,2,3",
54 "UMask": "0x1",
55 "EventName": "LSD.UOPS",
56 "SampleAfterValue": "2000003",
57 "BriefDescription": "Number of Uops delivered by the LSD.",
58 "CounterHTOff": "0,1,2,3,4,5,6,7"
59 },
60 {
61 "PublicDescription": "This event counts stalls occured due to changing prefix length (66, 67 or REX.W when they change the length of the decoded instruction). Occurrences counting is proportional to the number of prefixes in a 16B-line. This may result in the following penalties: three-cycle penalty for each LCP in a 16-byte chunk.",
62 "EventCode": "0x87",
63 "Counter": "0,1,2,3",
64 "UMask": "0x1",
65 "EventName": "ILD_STALL.LCP",
66 "SampleAfterValue": "2000003",
67 "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
68 "CounterHTOff": "0,1,2,3,4,5,6,7"
69 },
70 {
71 "PublicDescription": "Cycles checkpoints in Resource Allocation Table (RAT) are recovering from JEClear or machine clear.",
72 "EventCode": "0x0D",
73 "Counter": "0,1,2,3",
74 "UMask": "0x1",
75 "EventName": "INT_MISC.RECOVERY_CYCLES",
76 "SampleAfterValue": "2000003",
77 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for this thread (e.g. misprediction or memory nuke)",
78 "CounterHTOff": "0,1,2,3,4,5,6,7"
79 },
80 {
81 "EventCode": "0x0D",
82 "Counter": "0,1,2,3",
83 "UMask": "0x80",
84 "EventName": "INT_MISC.CLEAR_RESTEER_CYCLES",
85 "SampleAfterValue": "2000003",
86 "BriefDescription": "Cycles the issue-stage is waiting for front-end to fetch from resteered path following branch misprediction or machine clear events.",
87 "CounterHTOff": "0,1,2,3,4,5,6,7"
88 },
89 {
90 "PublicDescription": "This event counts resource-related stall cycles. Reasons for stalls can be as follows:\n - *any* u-arch structure got full (LB, SB, RS, ROB, BOB, LM, Physical Register Reclaim Table (PRRT), or Physical History Table (PHT) slots)\n - *any* u-arch structure got empty (like INT/SIMD FreeLists)\n - FPU control word (FPCW), MXCSR\nand others. This counts cycles that the pipeline backend blocked uop delivery from the front end.",
91 "EventCode": "0xA2",
92 "Counter": "0,1,2,3",
93 "UMask": "0x1",
94 "EventName": "RESOURCE_STALLS.ANY",
95 "SampleAfterValue": "2000003",
96 "BriefDescription": "Resource-related stall cycles",
97 "CounterHTOff": "0,1,2,3,4,5,6,7"
98 },
99 {
100 "PublicDescription": "This event counts stall cycles caused by the store buffer (SB) overflow (excluding draining from synch). This counts cycles that the pipeline backend blocked uop delivery from the front end.",
101 "EventCode": "0xA2",
102 "Counter": "0,1,2,3",
103 "UMask": "0x8",
104 "EventName": "RESOURCE_STALLS.SB",
105 "SampleAfterValue": "2000003",
106 "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
107 "CounterHTOff": "0,1,2,3,4,5,6,7"
108 },
109 {
110 "PublicDescription": "This event counts the number of Uops issued by the Resource Allocation Table (RAT) to the reservation station (RS).",
111 "EventCode": "0x0E",
112 "Counter": "0,1,2,3",
113 "UMask": "0x1",
114 "EventName": "UOPS_ISSUED.ANY",
115 "SampleAfterValue": "2000003",
116 "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
117 "CounterHTOff": "0,1,2,3,4,5,6,7"
118 },
119 {
120 "EventCode": "0x0E",
121 "Counter": "0,1,2,3",
122 "UMask": "0x20",
123 "EventName": "UOPS_ISSUED.SLOW_LEA",
124 "SampleAfterValue": "2000003",
125 "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
126 "CounterHTOff": "0,1,2,3,4,5,6,7"
127 },
128 {
129 "PublicDescription": "This event counts cycles during which the Resource Allocation Table (RAT) does not issue any Uops to the reservation station (RS) for the current thread.",
130 "EventCode": "0x0E",
131 "Invert": "1",
132 "Counter": "0,1,2,3",
133 "UMask": "0x1",
134 "EventName": "UOPS_ISSUED.STALL_CYCLES",
135 "SampleAfterValue": "2000003",
136 "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread",
137 "CounterMask": "1",
138 "CounterHTOff": "0,1,2,3,4,5,6,7"
139 },
140 {
141 "PublicDescription": "This event counts cycles during which the reservation station (RS) is empty for the thread.\nNote: In ST-mode, not active thread should drive 0. This is usually caused by severely costly branch mispredictions, or allocator/FE issues.",
142 "EventCode": "0x5E",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1",
145 "EventName": "RS_EVENTS.EMPTY_CYCLES",
146 "SampleAfterValue": "2000003",
147 "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
148 "CounterHTOff": "0,1,2,3,4,5,6,7"
149 },
150 {
151 "EventCode": "0x5E",
152 "Invert": "1",
153 "Counter": "0,1,2,3",
154 "UMask": "0x1",
155 "EdgeDetect": "1",
156 "EventName": "RS_EVENTS.EMPTY_END",
157 "SampleAfterValue": "2000003",
158 "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
159 "CounterMask": "1",
160 "CounterHTOff": "0,1,2,3,4,5,6,7"
161 },
162 {
163 "PublicDescription": "Increments when an entry is added to the Last Branch Record (LBR) array (or removed from the array in case of RETURNs in call stack mode). The event requires LBR enable via IA32_DEBUGCTL MSR and branch type selection via MSR_LBR_SELECT.",
164 "EventCode": "0xCC",
165 "Counter": "0,1,2,3",
166 "UMask": "0x20",
167 "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
168 "SampleAfterValue": "2000003",
169 "BriefDescription": "Increments whenever there is an update to the LBR array.",
170 "CounterHTOff": "0,1,2,3,4,5,6,7"
171 },
172 {
173 "PublicDescription": "Number of machine clears (nukes) of any type.",
174 "EventCode": "0xC3",
175 "Counter": "0,1,2,3",
176 "UMask": "0x1",
177 "EdgeDetect": "1",
178 "EventName": "MACHINE_CLEARS.COUNT",
179 "SampleAfterValue": "100003",
180 "BriefDescription": "Number of machine clears (nukes) of any type. ",
181 "CounterMask": "1",
182 "CounterHTOff": "0,1,2,3,4,5,6,7"
183 },
184 {
185 "PublicDescription": "This event counts self-modifying code (SMC) detected, which causes a machine clear.",
186 "EventCode": "0xC3",
187 "Counter": "0,1,2,3",
188 "UMask": "0x4",
189 "EventName": "MACHINE_CLEARS.SMC",
190 "SampleAfterValue": "100003",
191 "BriefDescription": "Self-modifying code (SMC) detected.",
192 "CounterHTOff": "0,1,2,3,4,5,6,7"
193 },
194 {
195 "PublicDescription": "This event counts the number of instructions (EOMs) retired. Counting covers macro-fused instructions individually (that is, increments by two).",
196 "EventCode": "0xC0",
197 "Counter": "0,1,2,3",
198 "UMask": "0x0",
199 "Errata": "SKL091, SKL044",
200 "EventName": "INST_RETIRED.ANY_P",
201 "SampleAfterValue": "2000003",
202 "BriefDescription": "Number of instructions retired. General Counter - architectural event",
203 "CounterHTOff": "0,1,2,3,4,5,6,7"
204 },
205 {
206 "PEBS": "2",
207 "PublicDescription": "This is a precise version (that is, uses PEBS) of the event that counts instructions retired.",
208 "EventCode": "0xC0",
209 "Counter": "1",
210 "UMask": "0x1",
211 "Errata": "SKL091, SKL044",
212 "EventName": "INST_RETIRED.PREC_DIST",
213 "SampleAfterValue": "2000003",
214 "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
215 "CounterHTOff": "1"
216 },
217 {
218 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts the number of retirement slots used.",
219 "EventCode": "0xC2",
220 "Counter": "0,1,2,3",
221 "UMask": "0x2",
222 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
223 "SampleAfterValue": "2000003",
224 "BriefDescription": "Retirement slots used.",
225 "CounterHTOff": "0,1,2,3,4,5,6,7"
226 },
227 {
228 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts cycles without actually retired uops.",
229 "EventCode": "0xC2",
230 "Invert": "1",
231 "Counter": "0,1,2,3",
232 "UMask": "0x1",
233 "EventName": "UOPS_RETIRED.STALL_CYCLES",
234 "SampleAfterValue": "2000003",
235 "BriefDescription": "Cycles without actually retired uops.",
236 "CounterMask": "1",
237 "CounterHTOff": "0,1,2,3,4,5,6,7"
238 },
239 {
240 "PublicDescription": "Number of cycles using always true condition (uops_ret < 16) applied to non PEBS uops retired event.",
241 "EventCode": "0xC2",
242 "Invert": "1",
243 "Counter": "0,1,2,3",
244 "UMask": "0x1",
245 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
246 "SampleAfterValue": "2000003",
247 "BriefDescription": "Cycles with less than 10 actually retired uops.",
248 "CounterMask": "10",
249 "CounterHTOff": "0,1,2,3,4,5,6,7"
250 },
251 {
252 "PEBS": "1",
253 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts conditional branch instructions retired.",
254 "EventCode": "0xC4",
255 "Counter": "0,1,2,3",
256 "UMask": "0x1",
257 "Errata": "SKL091",
258 "EventName": "BR_INST_RETIRED.CONDITIONAL",
259 "SampleAfterValue": "400009",
260 "BriefDescription": "Conditional branch instructions retired.",
261 "CounterHTOff": "0,1,2,3,4,5,6,7"
262 },
263 {
264 "PEBS": "1",
265 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts both direct and indirect near call instructions retired.",
266 "EventCode": "0xC4",
267 "Counter": "0,1,2,3",
268 "UMask": "0x2",
269 "Errata": "SKL091",
270 "EventName": "BR_INST_RETIRED.NEAR_CALL",
271 "SampleAfterValue": "100007",
272 "BriefDescription": "Direct and indirect near call instructions retired.",
273 "CounterHTOff": "0,1,2,3,4,5,6,7"
274 },
275 {
276 "PublicDescription": "This event counts all (macro) branch instructions retired.",
277 "EventCode": "0xC4",
278 "Counter": "0,1,2,3",
279 "UMask": "0x0",
280 "Errata": "SKL091",
281 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
282 "SampleAfterValue": "400009",
283 "BriefDescription": "All (macro) branch instructions retired.",
284 "CounterHTOff": "0,1,2,3,4,5,6,7"
285 },
286 {
287 "PEBS": "1",
288 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts return instructions retired.",
289 "EventCode": "0xC4",
290 "Counter": "0,1,2,3",
291 "UMask": "0x8",
292 "Errata": "SKL091",
293 "EventName": "BR_INST_RETIRED.NEAR_RETURN",
294 "SampleAfterValue": "100007",
295 "BriefDescription": "Return instructions retired.",
296 "CounterHTOff": "0,1,2,3,4,5,6,7"
297 },
298 {
299 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts not taken branch instructions retired.",
300 "EventCode": "0xC4",
301 "Counter": "0,1,2,3",
302 "UMask": "0x10",
303 "Errata": "SKL091",
304 "EventName": "BR_INST_RETIRED.NOT_TAKEN",
305 "SampleAfterValue": "400009",
306 "BriefDescription": "Not taken branch instructions retired.",
307 "CounterHTOff": "0,1,2,3,4,5,6,7"
308 },
309 {
310 "PEBS": "1",
311 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts taken branch instructions retired.",
312 "EventCode": "0xC4",
313 "Counter": "0,1,2,3",
314 "UMask": "0x20",
315 "Errata": "SKL091",
316 "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
317 "SampleAfterValue": "400009",
318 "BriefDescription": "Taken branch instructions retired.",
319 "CounterHTOff": "0,1,2,3,4,5,6,7"
320 },
321 {
322 "PEBS": "1",
323 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts far branch instructions retired.",
324 "EventCode": "0xC4",
325 "Counter": "0,1,2,3",
326 "UMask": "0x40",
327 "Errata": "SKL091",
328 "EventName": "BR_INST_RETIRED.FAR_BRANCH",
329 "SampleAfterValue": "100007",
330 "BriefDescription": "Far branch instructions retired.",
331 "CounterHTOff": "0,1,2,3,4,5,6,7"
332 },
333 {
334 "PEBS": "2",
335 "PublicDescription": "This is a precise version of BR_INST_RETIRED.ALL_BRANCHES that counts all (macro) branch instructions retired.",
336 "EventCode": "0xC4",
337 "Counter": "0,1,2,3",
338 "UMask": "0x4",
339 "Errata": "SKL091",
340 "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
341 "SampleAfterValue": "400009",
342 "BriefDescription": "All (macro) branch instructions retired. ",
343 "CounterHTOff": "0,1,2,3"
344 },
345 {
346 "PEBS": "1",
347 "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted conditional branch instructions retired.",
348 "EventCode": "0xC5",
349 "Counter": "0,1,2,3",
350 "UMask": "0x1",
351 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
352 "SampleAfterValue": "400009",
353 "BriefDescription": "Mispredicted conditional branch instructions retired.",
354 "CounterHTOff": "0,1,2,3,4,5,6,7"
355 },
356 {
357 "PEBS": "1",
358 "PublicDescription": "This event counts both taken and not taken retired mispredicted direct and indirect near calls, including both register and memory indirect.",
359 "EventCode": "0xC5",
360 "Counter": "0,1,2,3",
361 "UMask": "0x2",
362 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
363 "SampleAfterValue": "400009",
364 "BriefDescription": "Mispredicted direct and indirect near call instructions retired.",
365 "CounterHTOff": "0,1,2,3,4,5,6,7"
366 },
367 {
368 "PublicDescription": "This event counts all mispredicted macro branch instructions retired.",
369 "EventCode": "0xC5",
370 "Counter": "0,1,2,3",
371 "UMask": "0x0",
372 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
373 "SampleAfterValue": "400009",
374 "BriefDescription": "All mispredicted macro branch instructions retired.",
375 "CounterHTOff": "0,1,2,3,4,5,6,7"
376 },
377 {
378 "PEBS": "1",
379 "EventCode": "0xC5",
380 "Counter": "0,1,2,3",
381 "UMask": "0x20",
382 "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
383 "SampleAfterValue": "400009",
384 "BriefDescription": "Number of near branch instructions retired that were mispredicted and taken.",
385 "CounterHTOff": "0,1,2,3,4,5,6,7"
386 },
387 {
388 "PEBS": "2",
389 "PublicDescription": "This is a precise version of BR_MISP_RETIRED.ALL_BRANCHES that counts all mispredicted macro branch instructions retired.",
390 "EventCode": "0xC5",
391 "Counter": "0,1,2,3",
392 "UMask": "0x4",
393 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
394 "SampleAfterValue": "400009",
395 "BriefDescription": "Mispredicted macro branch instructions retired. ",
396 "CounterHTOff": "0,1,2,3"
397 },
398 {
399 "PublicDescription": "Number of uops to be executed per-thread each cycle.",
400 "EventCode": "0xB1",
401 "Counter": "0,1,2,3",
402 "UMask": "0x1",
403 "EventName": "UOPS_EXECUTED.THREAD",
404 "SampleAfterValue": "2000003",
405 "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
406 "CounterHTOff": "0,1,2,3,4,5,6,7"
407 },
408 {
409 "PublicDescription": "Number of uops executed from any thread.",
410 "EventCode": "0xB1",
411 "Counter": "0,1,2,3",
412 "UMask": "0x2",
413 "EventName": "UOPS_EXECUTED.CORE",
414 "SampleAfterValue": "2000003",
415 "BriefDescription": "Number of uops executed on the core.",
416 "CounterHTOff": "0,1,2,3,4,5,6,7"
417 },
418 {
419 "EventCode": "0xB1",
420 "Counter": "0,1,2,3",
421 "UMask": "0x10",
422 "EventName": "UOPS_EXECUTED.X87",
423 "SampleAfterValue": "2000003",
424 "BriefDescription": "Counts the number of x87 uops dispatched.",
425 "CounterHTOff": "0,1,2,3,4,5,6,7"
426 },
427 {
428 "PublicDescription": "This event counts cycles during which no uops were dispatched from the Reservation Station (RS) per thread.",
429 "EventCode": "0xB1",
430 "Invert": "1",
431 "Counter": "0,1,2,3",
432 "UMask": "0x1",
433 "EventName": "UOPS_EXECUTED.STALL_CYCLES",
434 "SampleAfterValue": "2000003",
435 "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
436 "CounterMask": "1",
437 "CounterHTOff": "0,1,2,3,4,5,6,7"
438 },
439 {
440 "PublicDescription": "Cycles where at least 1 uop was executed per-thread.",
441 "EventCode": "0xB1",
442 "Counter": "0,1,2,3",
443 "UMask": "0x1",
444 "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
445 "SampleAfterValue": "2000003",
446 "BriefDescription": "Cycles where at least 1 uop was executed per-thread",
447 "CounterMask": "1",
448 "CounterHTOff": "0,1,2,3,4,5,6,7"
449 },
450 {
451 "PublicDescription": "Cycles where at least 2 uops were executed per-thread.",
452 "EventCode": "0xB1",
453 "Counter": "0,1,2,3",
454 "UMask": "0x1",
455 "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
456 "SampleAfterValue": "2000003",
457 "BriefDescription": "Cycles where at least 2 uops were executed per-thread",
458 "CounterMask": "2",
459 "CounterHTOff": "0,1,2,3,4,5,6,7"
460 },
461 {
462 "PublicDescription": "Cycles where at least 3 uops were executed per-thread.",
463 "EventCode": "0xB1",
464 "Counter": "0,1,2,3",
465 "UMask": "0x1",
466 "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
467 "SampleAfterValue": "2000003",
468 "BriefDescription": "Cycles where at least 3 uops were executed per-thread",
469 "CounterMask": "3",
470 "CounterHTOff": "0,1,2,3,4,5,6,7"
471 },
472 {
473 "PublicDescription": "Cycles where at least 4 uops were executed per-thread.",
474 "EventCode": "0xB1",
475 "Counter": "0,1,2,3",
476 "UMask": "0x1",
477 "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
478 "SampleAfterValue": "2000003",
479 "BriefDescription": "Cycles where at least 4 uops were executed per-thread",
480 "CounterMask": "4",
481 "CounterHTOff": "0,1,2,3,4,5,6,7"
482 },
483 {
484 "EventCode": "0xA6",
485 "Counter": "0,1,2,3",
486 "UMask": "0x1",
487 "EventName": "EXE_ACTIVITY.EXE_BOUND_0_PORTS",
488 "SampleAfterValue": "2000003",
489 "BriefDescription": "Cycles where no uops were executed, the Reservation Station was not empty, the Store Buffer was full and there was no outstanding load.",
490 "CounterHTOff": "0,1,2,3,4,5,6,7"
491 },
492 {
493 "EventCode": "0xA6",
494 "Counter": "0,1,2,3",
495 "UMask": "0x2",
496 "EventName": "EXE_ACTIVITY.1_PORTS_UTIL",
497 "SampleAfterValue": "2000003",
498 "BriefDescription": "Cycles total of 1 uop is executed on all ports and Reservation Station was not empty.",
499 "CounterHTOff": "0,1,2,3,4,5,6,7"
500 },
501 {
502 "EventCode": "0xA6",
503 "Counter": "0,1,2,3",
504 "UMask": "0x4",
505 "EventName": "EXE_ACTIVITY.2_PORTS_UTIL",
506 "SampleAfterValue": "2000003",
507 "BriefDescription": "Cycles total of 2 uops are executed on all ports and Reservation Station was not empty.",
508 "CounterHTOff": "0,1,2,3,4,5,6,7"
509 },
510 {
511 "EventCode": "0xA6",
512 "Counter": "0,1,2,3",
513 "UMask": "0x8",
514 "EventName": "EXE_ACTIVITY.3_PORTS_UTIL",
515 "SampleAfterValue": "2000003",
516 "BriefDescription": "Cycles total of 3 uops are executed on all ports and Reservation Station was not empty.",
517 "CounterHTOff": "0,1,2,3,4,5,6,7"
518 },
519 {
520 "EventCode": "0xA6",
521 "Counter": "0,1,2,3",
522 "UMask": "0x10",
523 "EventName": "EXE_ACTIVITY.4_PORTS_UTIL",
524 "SampleAfterValue": "2000003",
525 "BriefDescription": "Cycles total of 4 uops are executed on all ports and Reservation Station was not empty.",
526 "CounterHTOff": "0,1,2,3,4,5,6,7"
527 },
528 {
529 "EventCode": "0xA6",
530 "Counter": "0,1,2,3",
531 "UMask": "0x40",
532 "EventName": "EXE_ACTIVITY.BOUND_ON_STORES",
533 "SampleAfterValue": "2000003",
534 "BriefDescription": "Cycles where the Store Buffer was full and no outstanding load.",
535 "CounterHTOff": "0,1,2,3,4,5,6,7"
536 },
537 {
538 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 0.",
539 "EventCode": "0xA1",
540 "Counter": "0,1,2,3",
541 "UMask": "0x1",
542 "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
543 "SampleAfterValue": "2000003",
544 "BriefDescription": "Cycles per thread when uops are executed in port 0",
545 "CounterHTOff": "0,1,2,3,4,5,6,7"
546 },
547 {
548 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 1.",
549 "EventCode": "0xA1",
550 "Counter": "0,1,2,3",
551 "UMask": "0x2",
552 "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
553 "SampleAfterValue": "2000003",
554 "BriefDescription": "Cycles per thread when uops are executed in port 1",
555 "CounterHTOff": "0,1,2,3,4,5,6,7"
556 },
557 {
558 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 2.",
559 "EventCode": "0xA1",
560 "Counter": "0,1,2,3",
561 "UMask": "0x4",
562 "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
563 "SampleAfterValue": "2000003",
564 "BriefDescription": "Cycles per thread when uops are executed in port 2",
565 "CounterHTOff": "0,1,2,3,4,5,6,7"
566 },
567 {
568 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 3.",
569 "EventCode": "0xA1",
570 "Counter": "0,1,2,3",
571 "UMask": "0x8",
572 "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
573 "SampleAfterValue": "2000003",
574 "BriefDescription": "Cycles per thread when uops are executed in port 3",
575 "CounterHTOff": "0,1,2,3,4,5,6,7"
576 },
577 {
578 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 4.",
579 "EventCode": "0xA1",
580 "Counter": "0,1,2,3",
581 "UMask": "0x10",
582 "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
583 "SampleAfterValue": "2000003",
584 "BriefDescription": "Cycles per thread when uops are executed in port 4",
585 "CounterHTOff": "0,1,2,3,4,5,6,7"
586 },
587 {
588 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 5.",
589 "EventCode": "0xA1",
590 "Counter": "0,1,2,3",
591 "UMask": "0x20",
592 "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
593 "SampleAfterValue": "2000003",
594 "BriefDescription": "Cycles per thread when uops are executed in port 5",
595 "CounterHTOff": "0,1,2,3,4,5,6,7"
596 },
597 {
598 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 6.",
599 "EventCode": "0xA1",
600 "Counter": "0,1,2,3",
601 "UMask": "0x40",
602 "EventName": "UOPS_DISPATCHED_PORT.PORT_6",
603 "SampleAfterValue": "2000003",
604 "BriefDescription": "Cycles per thread when uops are executed in port 6",
605 "CounterHTOff": "0,1,2,3,4,5,6,7"
606 },
607 {
608 "PublicDescription": "This event counts, on the per-thread basis, cycles during which uops are dispatched from the Reservation Station (RS) to port 7.",
609 "EventCode": "0xA1",
610 "Counter": "0,1,2,3",
611 "UMask": "0x80",
612 "EventName": "UOPS_DISPATCHED_PORT.PORT_7",
613 "SampleAfterValue": "2000003",
614 "BriefDescription": "Cycles per thread when uops are executed in port 7",
615 "CounterHTOff": "0,1,2,3,4,5,6,7"
616 },
617 {
618 "EventCode": "0xA3",
619 "Counter": "0,1,2,3",
620 "UMask": "0x4",
621 "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
622 "SampleAfterValue": "2000003",
623 "BriefDescription": "Total execution stalls.",
624 "CounterMask": "4",
625 "CounterHTOff": "0,1,2,3,4,5,6,7"
626 },
627 {
628 "EventCode": "0xA3",
629 "Counter": "0,1,2,3",
630 "UMask": "0x8",
631 "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
632 "SampleAfterValue": "2000003",
633 "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
634 "CounterMask": "8",
635 "CounterHTOff": "0,1,2,3,4,5,6,7"
636 },
637 {
638 "EventCode": "0xA3",
639 "Counter": "0,1,2,3",
640 "UMask": "0xc",
641 "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
642 "SampleAfterValue": "2000003",
643 "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
644 "CounterMask": "12",
645 "CounterHTOff": "0,1,2,3,4,5,6,7"
646 },
647 {
648 "PublicDescription": "This event counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the software prefetch. It can also be incremented by some lock instructions. So it should only be used with profiling so that the locks can be excluded by asm inspection of the nearby instructions.",
649 "EventCode": "0x4C",
650 "Counter": "0,1,2,3",
651 "UMask": "0x1",
652 "EventName": "LOAD_HIT_PRE.SW_PF",
653 "SampleAfterValue": "100003",
654 "BriefDescription": "Demand load dispatches that hit L1D fill buffer (FB) allocated for software prefetch.",
655 "CounterHTOff": "0,1,2,3,4,5,6,7"
656 },
657 {
658 "PublicDescription": "This event counts how many times the load operation got the true Block-on-Store blocking code preventing store forwarding. This includes cases when:\n - preceding store conflicts with the load (incomplete overlap)\n\n - store forwarding is impossible due to u-arch limitations\n\n - preceding lock RMW operations are not forwarded\n\n - store has the no-forward bit set (uncacheable/page-split/masked stores)\n\n - all-blocking stores are used (mostly, fences and port I/O)\n\nand others.\nThe most common case is a load blocked due to its address range overlapping with a preceding smaller uncompleted store. Note: This event does not take into account cases of out-of-SW-control (for example, SbTailHit), unknown physical STA, and cases of blocking loads on store due to being non-WB memory type or a lock. These cases are covered by other events.\nSee the table of not supported store forwards in the Optimization Guide.",
659 "EventCode": "0x03",
660 "Counter": "0,1,2,3",
661 "UMask": "0x2",
662 "EventName": "LD_BLOCKS.STORE_FORWARD",
663 "SampleAfterValue": "100003",
664 "BriefDescription": "Loads blocked by overlapping with store buffer that cannot be forwarded .",
665 "CounterHTOff": "0,1,2,3,4,5,6,7"
666 },
667 {
668 "PublicDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
669 "EventCode": "0x03",
670 "Counter": "0,1,2,3",
671 "UMask": "0x8",
672 "EventName": "LD_BLOCKS.NO_SR",
673 "SampleAfterValue": "100003",
674 "BriefDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use",
675 "CounterHTOff": "0,1,2,3,4,5,6,7"
676 },
677 {
678 "PublicDescription": "This event counts false dependencies in MOB when the partial comparison upon loose net check and dependency was resolved by the Enhanced Loose net mechanism. This may not result in high performance penalties. Loose net checks can fail when loads and stores are 4k aliased.",
679 "EventCode": "0x07",
680 "Counter": "0,1,2,3",
681 "UMask": "0x1",
682 "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
683 "SampleAfterValue": "100003",
684 "BriefDescription": "False dependencies in MOB due to partial compare on address.",
685 "CounterHTOff": "0,1,2,3,4,5,6,7"
686 },
687 {
688 "EventCode": "0xA3",
689 "Counter": "0,1,2,3",
690 "UMask": "0x1",
691 "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
692 "SampleAfterValue": "2000003",
693 "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
694 "CounterMask": "1",
695 "CounterHTOff": "0,1,2,3,4,5,6,7"
696 },
697 {
698 "EventCode": "0xA3",
699 "Counter": "0,1,2,3",
700 "UMask": "0x5",
701 "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
702 "SampleAfterValue": "2000003",
703 "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
704 "CounterMask": "5",
705 "CounterHTOff": "0,1,2,3,4,5,6,7"
706 },
707 {
708 "EventCode": "0xA3",
709 "Counter": "0,1,2,3",
710 "UMask": "0x10",
711 "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
712 "SampleAfterValue": "2000003",
713 "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
714 "CounterMask": "16",
715 "CounterHTOff": "0,1,2,3,4,5,6,7"
716 },
717 {
718 "EventCode": "0xA3",
719 "Counter": "0,1,2,3",
720 "UMask": "0x14",
721 "EventName": "CYCLE_ACTIVITY.STALLS_MEM_ANY",
722 "SampleAfterValue": "2000003",
723 "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
724 "CounterMask": "20",
725 "CounterHTOff": "0,1,2,3"
726 },
727 {
728 "EventCode": "0x3C",
729 "Counter": "0,1,2,3",
730 "UMask": "0x1",
731 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
732 "SampleAfterValue": "2503",
733 "BriefDescription": "Core crystal clock cycles when the thread is unhalted.",
734 "CounterHTOff": "0,1,2,3,4,5,6,7"
735 },
736 {
737 "EventCode": "0x3C",
738 "Counter": "0,1,2,3",
739 "UMask": "0x2",
740 "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
741 "SampleAfterValue": "2000003",
742 "BriefDescription": "Core crystal clock cycles when this thread is unhalted and the other thread is halted.",
743 "CounterHTOff": "0,1,2,3,4,5,6,7"
744 },
745 {
746 "PEBS": "2",
747 "PublicDescription": "Number of cycles using an always true condition applied to PEBS instructions retired event. (inst_ret< 16)",
748 "EventCode": "0xC0",
749 "Invert": "1",
750 "Counter": "0,2,3",
751 "UMask": "0x1",
752 "Errata": "SKL091, SKL044",
753 "EventName": "INST_RETIRED.TOTAL_CYCLES_PS",
754 "SampleAfterValue": "2000003",
755 "BriefDescription": "Number of cycles using always true condition applied to PEBS instructions retired event.",
756 "CounterMask": "10",
757 "CounterHTOff": "0,2,3"
758 },
759 {
760 "EventCode": "0x14",
761 "Counter": "0,1,2,3",
762 "UMask": "0x1",
763 "EventName": "ARITH.DIVIDER_ACTIVE",
764 "SampleAfterValue": "2000003",
765 "BriefDescription": "Cycles when divide unit is busy executing divide or square root operations. Accounts for integer and floating-point operations.",
766 "CounterMask": "1",
767 "CounterHTOff": "0,1,2,3,4,5,6,7"
768 },
769 {
770 "EventCode": "0xA8",
771 "Counter": "0,1,2,3",
772 "UMask": "0x1",
773 "EventName": "LSD.CYCLES_ACTIVE",
774 "SampleAfterValue": "2000003",
775 "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
776 "CounterMask": "1",
777 "CounterHTOff": "0,1,2,3,4,5,6,7"
778 },
779 {
780 "EventCode": "0xA8",
781 "Counter": "0,1,2,3",
782 "UMask": "0x1",
783 "EventName": "LSD.CYCLES_4_UOPS",
784 "SampleAfterValue": "2000003",
785 "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder.",
786 "CounterMask": "4",
787 "CounterHTOff": "0,1,2,3,4,5,6,7"
788 },
789 {
790 "EventCode": "0xC1",
791 "Counter": "0,1,2,3",
792 "UMask": "0x3f",
793 "EventName": "OTHER_ASSISTS.ANY",
794 "SampleAfterValue": "100003",
795 "BriefDescription": "Number of times a microcode assist is invoked by HW other than FP-assist. Examples include AD (page Access Dirty) and AVX* related assists.",
796 "CounterHTOff": "0,1,2,3,4,5,6,7"
797 },
798 {
799 "PublicDescription": "This event counts the number of Blend Uops issued by the Resource Allocation Table (RAT) to the reservation station (RS) in order to preserve upper bits of vector registers. Starting the Skylake microarchitecture, these Blend uops are needed since every Intel SSE instruction executed in Dirty Upper State needs to preserve bits 128-255 of the destination register.\r\nFor more information, refer to ?Mixing Intel AVX and Intel SSE Code? section of the Optimization Guide.",
800 "EventCode": "0x0E",
801 "Counter": "0,1,2,3",
802 "UMask": "0x2",
803 "EventName": "UOPS_ISSUED.VECTOR_WIDTH_MISMATCH",
804 "SampleAfterValue": "2000003",
805 "BriefDescription": "Uops inserted at issue-stage in order to preserve upper bits of vector registers.",
806 "CounterHTOff": "0,1,2,3,4,5,6,7"
807 },
808 {
809 "EventCode": "0x00",
810 "Counter": "Fixed counter 2",
811 "UMask": "0x2",
812 "AnyThread": "1",
813 "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
814 "SampleAfterValue": "2000003",
815 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
816 "CounterHTOff": "Fixed counter 2"
817 },
818 {
819 "EventCode": "0x3C",
820 "Counter": "0,1,2,3",
821 "UMask": "0x0",
822 "AnyThread": "1",
823 "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
824 "SampleAfterValue": "2000003",
825 "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
826 "CounterHTOff": "0,1,2,3,4,5,6,7"
827 },
828 {
829 "EventCode": "0x3C",
830 "Counter": "0,1,2,3",
831 "UMask": "0x1",
832 "AnyThread": "1",
833 "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
834 "SampleAfterValue": "2503",
835 "BriefDescription": "Core crystal clock cycles when at least one thread on the physical core is unhalted.",
836 "CounterHTOff": "0,1,2,3,4,5,6,7"
837 },
838 {
839 "EventCode": "0x0D",
840 "Counter": "0,1,2,3",
841 "UMask": "0x1",
842 "AnyThread": "1",
843 "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
844 "SampleAfterValue": "2000003",
845 "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
846 "CounterHTOff": "0,1,2,3,4,5,6,7"
847 },
848 {
849 "EventCode": "0xB1",
850 "Counter": "0,1,2,3",
851 "UMask": "0x2",
852 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
853 "SampleAfterValue": "2000003",
854 "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
855 "CounterMask": "1",
856 "CounterHTOff": "0,1,2,3,4,5,6,7"
857 },
858 {
859 "EventCode": "0xB1",
860 "Counter": "0,1,2,3",
861 "UMask": "0x2",
862 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
863 "SampleAfterValue": "2000003",
864 "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
865 "CounterMask": "2",
866 "CounterHTOff": "0,1,2,3,4,5,6,7"
867 },
868 {
869 "EventCode": "0xB1",
870 "Counter": "0,1,2,3",
871 "UMask": "0x2",
872 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
873 "SampleAfterValue": "2000003",
874 "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
875 "CounterMask": "3",
876 "CounterHTOff": "0,1,2,3,4,5,6,7"
877 },
878 {
879 "EventCode": "0xB1",
880 "Counter": "0,1,2,3",
881 "UMask": "0x2",
882 "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
883 "SampleAfterValue": "2000003",
884 "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
885 "CounterMask": "4",
886 "CounterHTOff": "0,1,2,3,4,5,6,7"
887 },
888 {
889 "EventCode": "0xB1",
890 "Invert": "1",
891 "Counter": "0,1,2,3",
892 "UMask": "0x2",
893 "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
894 "SampleAfterValue": "2000003",
895 "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
896 "CounterMask": "1",
897 "CounterHTOff": "0,1,2,3,4,5,6,7"
898 },
899 {
900 "PublicDescription": "This event counts when the Current Privilege Level (CPL) transitions from ring 1, 2 or 3 to ring 0 (Kernel).",
901 "EventCode": "0x3C",
902 "Counter": "0,1,2,3",
903 "UMask": "0x0",
904 "EdgeDetect": "1",
905 "EventName": "CPU_CLK_UNHALTED.RING0_TRANS",
906 "SampleAfterValue": "100007",
907 "BriefDescription": "Counts when there is a transition from ring 1, 2 or 3 to ring 0.",
908 "CounterMask": "1",
909 "CounterHTOff": "0,1,2,3,4,5,6,7"
910 },
911 {
912 "EventCode": "0x3C",
913 "Counter": "0,1,2,3",
914 "UMask": "0x1",
915 "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
916 "SampleAfterValue": "2503",
917 "BriefDescription": "Core crystal clock cycles when the thread is unhalted.",
918 "CounterHTOff": "0,1,2,3,4,5,6,7"
919 },
920 {
921 "EventCode": "0x3C",
922 "Counter": "0,1,2,3",
923 "UMask": "0x1",
924 "AnyThread": "1",
925 "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
926 "SampleAfterValue": "2503",
927 "BriefDescription": "Core crystal clock cycles when at least one thread on the physical core is unhalted.",
928 "CounterHTOff": "0,1,2,3,4,5,6,7"
929 },
930 {
931 "EventCode": "0x3C",
932 "Counter": "0,1,2,3",
933 "UMask": "0x2",
934 "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
935 "SampleAfterValue": "2503",
936 "BriefDescription": "Core crystal clock cycles when this thread is unhalted and the other thread is halted.",
937 "CounterHTOff": "0,1,2,3,4,5,6,7"
938 }
939] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/skylake/virtual-memory.json b/tools/perf/pmu-events/arch/x86/skylake/virtual-memory.json
new file mode 100644
index 000000000000..02f32cbf6789
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/skylake/virtual-memory.json
@@ -0,0 +1,272 @@
1[
2 {
3 "PublicDescription": "This event counts the number of flushes of the big or small ITLB pages. Counting include both TLB Flush (covering all sets) and TLB Set Clear (set-specific).",
4 "EventCode": "0xAE",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "ITLB.ITLB_FLUSH",
8 "SampleAfterValue": "100007",
9 "BriefDescription": "Flushing of the Instruction TLB (ITLB) pages, includes 4k/2M/4M pages.",
10 "CounterHTOff": "0,1,2,3,4,5,6,7"
11 },
12 {
13 "EventCode": "0x4F",
14 "Counter": "0,1,2,3",
15 "UMask": "0x10",
16 "EventName": "EPT.WALK_PENDING",
17 "SampleAfterValue": "2000003",
18 "BriefDescription": "Counts 1 per cycle for each PMH that is busy with a EPT (Extended Page Table) walk for any request type.",
19 "CounterHTOff": "0,1,2,3,4,5,6,7"
20 },
21 {
22 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
23 "EventCode": "0x85",
24 "Counter": "0,1,2,3",
25 "UMask": "0x1",
26 "EventName": "ITLB_MISSES.MISS_CAUSES_A_WALK",
27 "SampleAfterValue": "100003",
28 "BriefDescription": "Misses at all ITLB levels that cause page walks",
29 "CounterHTOff": "0,1,2,3,4,5,6,7"
30 },
31 {
32 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
33 "EventCode": "0x85",
34 "Counter": "0,1,2,3",
35 "UMask": "0x2",
36 "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
37 "SampleAfterValue": "100003",
38 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (4K)",
39 "CounterHTOff": "0,1,2,3,4,5,6,7"
40 },
41 {
42 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
43 "EventCode": "0x85",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
47 "SampleAfterValue": "100003",
48 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (2M/4M)",
49 "CounterHTOff": "0,1,2,3,4,5,6,7"
50 },
51 {
52 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
53 "EventCode": "0x85",
54 "Counter": "0,1,2,3",
55 "UMask": "0x8",
56 "EventName": "ITLB_MISSES.WALK_COMPLETED_1G",
57 "SampleAfterValue": "100003",
58 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (1G)",
59 "CounterHTOff": "0,1,2,3,4,5,6,7"
60 },
61 {
62 "EventCode": "0x85",
63 "Counter": "0,1,2,3",
64 "UMask": "0x10",
65 "EventName": "ITLB_MISSES.WALK_PENDING",
66 "SampleAfterValue": "100003",
67 "BriefDescription": "Counts 1 per cycle for each PMH that is busy with a page walk for an instruction fetch request. EPT page walk duration are excluded in Skylake. ",
68 "CounterHTOff": "0,1,2,3,4,5,6,7"
69 },
70 {
71 "EventCode": "0x85",
72 "Counter": "0,1,2,3",
73 "UMask": "0x20",
74 "EventName": "ITLB_MISSES.STLB_HIT",
75 "SampleAfterValue": "100003",
76 "BriefDescription": "Instruction fetch requests that miss the ITLB and hit the STLB.",
77 "CounterHTOff": "0,1,2,3,4,5,6,7"
78 },
79 {
80 "PublicDescription": "This event counts load misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
81 "EventCode": "0x08",
82 "Counter": "0,1,2,3",
83 "UMask": "0x1",
84 "EventName": "DTLB_LOAD_MISSES.MISS_CAUSES_A_WALK",
85 "SampleAfterValue": "100003",
86 "BriefDescription": "Load misses in all DTLB levels that cause page walks",
87 "CounterHTOff": "0,1,2,3,4,5,6,7"
88 },
89 {
90 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
91 "EventCode": "0x08",
92 "Counter": "0,1,2,3",
93 "UMask": "0x2",
94 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
95 "SampleAfterValue": "2000003",
96 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (4K).",
97 "CounterHTOff": "0,1,2,3,4,5,6,7"
98 },
99 {
100 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
101 "EventCode": "0x08",
102 "Counter": "0,1,2,3",
103 "UMask": "0x4",
104 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
105 "SampleAfterValue": "2000003",
106 "BriefDescription": "Demand load Miss in all translation lookaside buffer (TLB) levels causes a page walk that completes (2M/4M).",
107 "CounterHTOff": "0,1,2,3,4,5,6,7"
108 },
109 {
110 "PublicDescription": "This event counts load misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
111 "EventCode": "0x08",
112 "Counter": "0,1,2,3",
113 "UMask": "0x8",
114 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1G",
115 "SampleAfterValue": "2000003",
116 "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (1G)",
117 "CounterHTOff": "0,1,2,3,4,5,6,7"
118 },
119 {
120 "EventCode": "0x08",
121 "Counter": "0,1,2,3",
122 "UMask": "0x10",
123 "EventName": "DTLB_LOAD_MISSES.WALK_PENDING",
124 "SampleAfterValue": "2000003",
125 "BriefDescription": "Counts 1 per cycle for each PMH that is busy with a page walk for a load. EPT page walk duration are excluded in Skylake. ",
126 "CounterHTOff": "0,1,2,3,4,5,6,7"
127 },
128 {
129 "EventCode": "0x08",
130 "Counter": "0,1,2,3",
131 "UMask": "0x20",
132 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
133 "SampleAfterValue": "2000003",
134 "BriefDescription": "Loads that miss the DTLB and hit the STLB.",
135 "CounterHTOff": "0,1,2,3,4,5,6,7"
136 },
137 {
138 "PublicDescription": "This event counts store misses in all DTLB levels that cause page walks of any page size (4K/2M/4M/1G).",
139 "EventCode": "0x49",
140 "Counter": "0,1,2,3",
141 "UMask": "0x1",
142 "EventName": "DTLB_STORE_MISSES.MISS_CAUSES_A_WALK",
143 "SampleAfterValue": "100003",
144 "BriefDescription": "Store misses in all DTLB levels that cause page walks",
145 "CounterHTOff": "0,1,2,3,4,5,6,7"
146 },
147 {
148 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (4K page size). The page walk can end with or without a fault.",
149 "EventCode": "0x49",
150 "Counter": "0,1,2,3",
151 "UMask": "0x2",
152 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
153 "SampleAfterValue": "100003",
154 "BriefDescription": "Store miss in all TLB levels causes a page walk that completes. (4K)",
155 "CounterHTOff": "0,1,2,3,4,5,6,7"
156 },
157 {
158 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (2M and 4M page sizes). The page walk can end with or without a fault.",
159 "EventCode": "0x49",
160 "Counter": "0,1,2,3",
161 "UMask": "0x4",
162 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
163 "SampleAfterValue": "100003",
164 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (2M/4M)",
165 "CounterHTOff": "0,1,2,3,4,5,6,7"
166 },
167 {
168 "PublicDescription": "This event counts store misses in all DTLB levels that cause a completed page walk (1G page size). The page walk can end with or without a fault.",
169 "EventCode": "0x49",
170 "Counter": "0,1,2,3",
171 "UMask": "0x8",
172 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1G",
173 "SampleAfterValue": "100003",
174 "BriefDescription": "Store misses in all DTLB levels that cause completed page walks (1G)",
175 "CounterHTOff": "0,1,2,3,4,5,6,7"
176 },
177 {
178 "EventCode": "0x49",
179 "Counter": "0,1,2,3",
180 "UMask": "0x10",
181 "EventName": "DTLB_STORE_MISSES.WALK_PENDING",
182 "SampleAfterValue": "2000003",
183 "BriefDescription": "Counts 1 per cycle for each PMH that is busy with a page walk for a store. EPT page walk duration are excluded in Skylake. ",
184 "CounterHTOff": "0,1,2,3,4,5,6,7"
185 },
186 {
187 "EventCode": "0x49",
188 "Counter": "0,1,2,3",
189 "UMask": "0x20",
190 "EventName": "DTLB_STORE_MISSES.STLB_HIT",
191 "SampleAfterValue": "100003",
192 "BriefDescription": "Stores that miss the DTLB and hit the STLB.",
193 "CounterHTOff": "0,1,2,3,4,5,6,7"
194 },
195 {
196 "PublicDescription": "This event counts the number of DTLB flush attempts of the thread-specific entries.",
197 "EventCode": "0xBD",
198 "Counter": "0,1,2,3",
199 "UMask": "0x1",
200 "EventName": "TLB_FLUSH.DTLB_THREAD",
201 "SampleAfterValue": "100007",
202 "BriefDescription": "DTLB flush attempts of the thread-specific entries",
203 "CounterHTOff": "0,1,2,3,4,5,6,7"
204 },
205 {
206 "PublicDescription": "This event counts the number of any STLB flush attempts (such as entire, VPID, PCID, InvPage, CR3 write, and so on).",
207 "EventCode": "0xBD",
208 "Counter": "0,1,2,3",
209 "UMask": "0x20",
210 "EventName": "TLB_FLUSH.STLB_ANY",
211 "SampleAfterValue": "100007",
212 "BriefDescription": "STLB flush attempts",
213 "CounterHTOff": "0,1,2,3,4,5,6,7"
214 },
215 {
216 "EventCode": "0x85",
217 "Counter": "0,1,2,3",
218 "UMask": "0xe",
219 "EventName": "ITLB_MISSES.WALK_COMPLETED",
220 "SampleAfterValue": "100003",
221 "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (All page sizes)",
222 "CounterHTOff": "0,1,2,3,4,5,6,7"
223 },
224 {
225 "EventCode": "0x08",
226 "Counter": "0,1,2,3",
227 "UMask": "0xe",
228 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
229 "SampleAfterValue": "100003",
230 "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (All page sizes)",
231 "CounterHTOff": "0,1,2,3,4,5,6,7"
232 },
233 {
234 "EventCode": "0x49",
235 "Counter": "0,1,2,3",
236 "UMask": "0xe",
237 "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
238 "SampleAfterValue": "100003",
239 "BriefDescription": "Store misses in all TLB levels causes a page walk that completes. (All page sizes)",
240 "CounterHTOff": "0,1,2,3,4,5,6,7"
241 },
242 {
243 "EventCode": "0x49",
244 "Counter": "0,1,2,3",
245 "UMask": "0x10",
246 "EventName": "DTLB_STORE_MISSES.WALK_ACTIVE",
247 "SampleAfterValue": "100003",
248 "BriefDescription": "Cycles when at least one PMH is busy with a page walk for a store. EPT page walk duration are excluded in Skylake. ",
249 "CounterMask": "1",
250 "CounterHTOff": "0,1,2,3,4,5,6,7"
251 },
252 {
253 "EventCode": "0x08",
254 "Counter": "0,1,2,3",
255 "UMask": "0x10",
256 "EventName": "DTLB_LOAD_MISSES.WALK_ACTIVE",
257 "SampleAfterValue": "100003",
258 "BriefDescription": "Cycles when at least one PMH is busy with a page walk for a load. EPT page walk duration are excluded in Skylake. ",
259 "CounterMask": "1",
260 "CounterHTOff": "0,1,2,3,4,5,6,7"
261 },
262 {
263 "EventCode": "0x85",
264 "Counter": "0,1,2,3",
265 "UMask": "0x10",
266 "EventName": "ITLB_MISSES.WALK_ACTIVE",
267 "SampleAfterValue": "100003",
268 "BriefDescription": "Cycles when at least one PMH is busy with a page walk for code (instruction fetch) request. EPT page walk duration are excluded in Skylake.",
269 "CounterMask": "1",
270 "CounterHTOff": "0,1,2,3,4,5,6,7"
271 }
272] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-dp/cache.json b/tools/perf/pmu-events/arch/x86/westmereep-dp/cache.json
new file mode 100644
index 000000000000..6e61ae20d01a
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-dp/cache.json
@@ -0,0 +1,2817 @@
1[
2 {
3 "EventCode": "0x63",
4 "Counter": "0,1",
5 "UMask": "0x2",
6 "EventName": "CACHE_LOCK_CYCLES.L1D",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles L1D locked"
9 },
10 {
11 "EventCode": "0x63",
12 "Counter": "0,1",
13 "UMask": "0x1",
14 "EventName": "CACHE_LOCK_CYCLES.L1D_L2",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Cycles L1D and L2 locked"
17 },
18 {
19 "EventCode": "0x51",
20 "Counter": "0,1",
21 "UMask": "0x4",
22 "EventName": "L1D.M_EVICT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "L1D cache lines replaced in M state"
25 },
26 {
27 "EventCode": "0x51",
28 "Counter": "0,1",
29 "UMask": "0x2",
30 "EventName": "L1D.M_REPL",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "L1D cache lines allocated in the M state"
33 },
34 {
35 "EventCode": "0x51",
36 "Counter": "0,1",
37 "UMask": "0x8",
38 "EventName": "L1D.M_SNOOP_EVICT",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "L1D snoop eviction of cache lines in M state"
41 },
42 {
43 "EventCode": "0x51",
44 "Counter": "0,1",
45 "UMask": "0x1",
46 "EventName": "L1D.REPL",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1 data cache lines allocated"
49 },
50 {
51 "EventCode": "0x52",
52 "Counter": "0,1",
53 "UMask": "0x1",
54 "EventName": "L1D_CACHE_PREFETCH_LOCK_FB_HIT",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1D prefetch load lock accepted in fill buffer"
57 },
58 {
59 "EventCode": "0x4E",
60 "Counter": "0,1",
61 "UMask": "0x2",
62 "EventName": "L1D_PREFETCH.MISS",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "L1D hardware prefetch misses"
65 },
66 {
67 "EventCode": "0x4E",
68 "Counter": "0,1",
69 "UMask": "0x1",
70 "EventName": "L1D_PREFETCH.REQUESTS",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "L1D hardware prefetch requests"
73 },
74 {
75 "EventCode": "0x4E",
76 "Counter": "0,1",
77 "UMask": "0x4",
78 "EventName": "L1D_PREFETCH.TRIGGERS",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "L1D hardware prefetch requests triggered"
81 },
82 {
83 "EventCode": "0x28",
84 "Counter": "0,1,2,3",
85 "UMask": "0x4",
86 "EventName": "L1D_WB_L2.E_STATE",
87 "SampleAfterValue": "100000",
88 "BriefDescription": "L1 writebacks to L2 in E state"
89 },
90 {
91 "EventCode": "0x28",
92 "Counter": "0,1,2,3",
93 "UMask": "0x1",
94 "EventName": "L1D_WB_L2.I_STATE",
95 "SampleAfterValue": "100000",
96 "BriefDescription": "L1 writebacks to L2 in I state (misses)"
97 },
98 {
99 "EventCode": "0x28",
100 "Counter": "0,1,2,3",
101 "UMask": "0x8",
102 "EventName": "L1D_WB_L2.M_STATE",
103 "SampleAfterValue": "100000",
104 "BriefDescription": "L1 writebacks to L2 in M state"
105 },
106 {
107 "EventCode": "0x28",
108 "Counter": "0,1,2,3",
109 "UMask": "0xf",
110 "EventName": "L1D_WB_L2.MESI",
111 "SampleAfterValue": "100000",
112 "BriefDescription": "All L1 writebacks to L2"
113 },
114 {
115 "EventCode": "0x28",
116 "Counter": "0,1,2,3",
117 "UMask": "0x2",
118 "EventName": "L1D_WB_L2.S_STATE",
119 "SampleAfterValue": "100000",
120 "BriefDescription": "L1 writebacks to L2 in S state"
121 },
122 {
123 "EventCode": "0x26",
124 "Counter": "0,1,2,3",
125 "UMask": "0xff",
126 "EventName": "L2_DATA_RQSTS.ANY",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "All L2 data requests"
129 },
130 {
131 "EventCode": "0x26",
132 "Counter": "0,1,2,3",
133 "UMask": "0x4",
134 "EventName": "L2_DATA_RQSTS.DEMAND.E_STATE",
135 "SampleAfterValue": "200000",
136 "BriefDescription": "L2 data demand loads in E state"
137 },
138 {
139 "EventCode": "0x26",
140 "Counter": "0,1,2,3",
141 "UMask": "0x1",
142 "EventName": "L2_DATA_RQSTS.DEMAND.I_STATE",
143 "SampleAfterValue": "200000",
144 "BriefDescription": "L2 data demand loads in I state (misses)"
145 },
146 {
147 "EventCode": "0x26",
148 "Counter": "0,1,2,3",
149 "UMask": "0x8",
150 "EventName": "L2_DATA_RQSTS.DEMAND.M_STATE",
151 "SampleAfterValue": "200000",
152 "BriefDescription": "L2 data demand loads in M state"
153 },
154 {
155 "EventCode": "0x26",
156 "Counter": "0,1,2,3",
157 "UMask": "0xf",
158 "EventName": "L2_DATA_RQSTS.DEMAND.MESI",
159 "SampleAfterValue": "200000",
160 "BriefDescription": "L2 data demand requests"
161 },
162 {
163 "EventCode": "0x26",
164 "Counter": "0,1,2,3",
165 "UMask": "0x2",
166 "EventName": "L2_DATA_RQSTS.DEMAND.S_STATE",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "L2 data demand loads in S state"
169 },
170 {
171 "EventCode": "0x26",
172 "Counter": "0,1,2,3",
173 "UMask": "0x40",
174 "EventName": "L2_DATA_RQSTS.PREFETCH.E_STATE",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "L2 data prefetches in E state"
177 },
178 {
179 "EventCode": "0x26",
180 "Counter": "0,1,2,3",
181 "UMask": "0x10",
182 "EventName": "L2_DATA_RQSTS.PREFETCH.I_STATE",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "L2 data prefetches in the I state (misses)"
185 },
186 {
187 "EventCode": "0x26",
188 "Counter": "0,1,2,3",
189 "UMask": "0x80",
190 "EventName": "L2_DATA_RQSTS.PREFETCH.M_STATE",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "L2 data prefetches in M state"
193 },
194 {
195 "EventCode": "0x26",
196 "Counter": "0,1,2,3",
197 "UMask": "0xf0",
198 "EventName": "L2_DATA_RQSTS.PREFETCH.MESI",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "All L2 data prefetches"
201 },
202 {
203 "EventCode": "0x26",
204 "Counter": "0,1,2,3",
205 "UMask": "0x20",
206 "EventName": "L2_DATA_RQSTS.PREFETCH.S_STATE",
207 "SampleAfterValue": "200000",
208 "BriefDescription": "L2 data prefetches in the S state"
209 },
210 {
211 "EventCode": "0xF1",
212 "Counter": "0,1,2,3",
213 "UMask": "0x7",
214 "EventName": "L2_LINES_IN.ANY",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "L2 lines alloacated"
217 },
218 {
219 "EventCode": "0xF1",
220 "Counter": "0,1,2,3",
221 "UMask": "0x4",
222 "EventName": "L2_LINES_IN.E_STATE",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "L2 lines allocated in the E state"
225 },
226 {
227 "EventCode": "0xF1",
228 "Counter": "0,1,2,3",
229 "UMask": "0x2",
230 "EventName": "L2_LINES_IN.S_STATE",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "L2 lines allocated in the S state"
233 },
234 {
235 "EventCode": "0xF2",
236 "Counter": "0,1,2,3",
237 "UMask": "0xf",
238 "EventName": "L2_LINES_OUT.ANY",
239 "SampleAfterValue": "100000",
240 "BriefDescription": "L2 lines evicted"
241 },
242 {
243 "EventCode": "0xF2",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
247 "SampleAfterValue": "100000",
248 "BriefDescription": "L2 lines evicted by a demand request"
249 },
250 {
251 "EventCode": "0xF2",
252 "Counter": "0,1,2,3",
253 "UMask": "0x2",
254 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
255 "SampleAfterValue": "100000",
256 "BriefDescription": "L2 modified lines evicted by a demand request"
257 },
258 {
259 "EventCode": "0xF2",
260 "Counter": "0,1,2,3",
261 "UMask": "0x4",
262 "EventName": "L2_LINES_OUT.PREFETCH_CLEAN",
263 "SampleAfterValue": "100000",
264 "BriefDescription": "L2 lines evicted by a prefetch request"
265 },
266 {
267 "EventCode": "0xF2",
268 "Counter": "0,1,2,3",
269 "UMask": "0x8",
270 "EventName": "L2_LINES_OUT.PREFETCH_DIRTY",
271 "SampleAfterValue": "100000",
272 "BriefDescription": "L2 modified lines evicted by a prefetch request"
273 },
274 {
275 "EventCode": "0x24",
276 "Counter": "0,1,2,3",
277 "UMask": "0x10",
278 "EventName": "L2_RQSTS.IFETCH_HIT",
279 "SampleAfterValue": "200000",
280 "BriefDescription": "L2 instruction fetch hits"
281 },
282 {
283 "EventCode": "0x24",
284 "Counter": "0,1,2,3",
285 "UMask": "0x20",
286 "EventName": "L2_RQSTS.IFETCH_MISS",
287 "SampleAfterValue": "200000",
288 "BriefDescription": "L2 instruction fetch misses"
289 },
290 {
291 "EventCode": "0x24",
292 "Counter": "0,1,2,3",
293 "UMask": "0x30",
294 "EventName": "L2_RQSTS.IFETCHES",
295 "SampleAfterValue": "200000",
296 "BriefDescription": "L2 instruction fetches"
297 },
298 {
299 "EventCode": "0x24",
300 "Counter": "0,1,2,3",
301 "UMask": "0x1",
302 "EventName": "L2_RQSTS.LD_HIT",
303 "SampleAfterValue": "200000",
304 "BriefDescription": "L2 load hits"
305 },
306 {
307 "EventCode": "0x24",
308 "Counter": "0,1,2,3",
309 "UMask": "0x2",
310 "EventName": "L2_RQSTS.LD_MISS",
311 "SampleAfterValue": "200000",
312 "BriefDescription": "L2 load misses"
313 },
314 {
315 "EventCode": "0x24",
316 "Counter": "0,1,2,3",
317 "UMask": "0x3",
318 "EventName": "L2_RQSTS.LOADS",
319 "SampleAfterValue": "200000",
320 "BriefDescription": "L2 requests"
321 },
322 {
323 "EventCode": "0x24",
324 "Counter": "0,1,2,3",
325 "UMask": "0xaa",
326 "EventName": "L2_RQSTS.MISS",
327 "SampleAfterValue": "200000",
328 "BriefDescription": "All L2 misses"
329 },
330 {
331 "EventCode": "0x24",
332 "Counter": "0,1,2,3",
333 "UMask": "0x40",
334 "EventName": "L2_RQSTS.PREFETCH_HIT",
335 "SampleAfterValue": "200000",
336 "BriefDescription": "L2 prefetch hits"
337 },
338 {
339 "EventCode": "0x24",
340 "Counter": "0,1,2,3",
341 "UMask": "0x80",
342 "EventName": "L2_RQSTS.PREFETCH_MISS",
343 "SampleAfterValue": "200000",
344 "BriefDescription": "L2 prefetch misses"
345 },
346 {
347 "EventCode": "0x24",
348 "Counter": "0,1,2,3",
349 "UMask": "0xc0",
350 "EventName": "L2_RQSTS.PREFETCHES",
351 "SampleAfterValue": "200000",
352 "BriefDescription": "All L2 prefetches"
353 },
354 {
355 "EventCode": "0x24",
356 "Counter": "0,1,2,3",
357 "UMask": "0xff",
358 "EventName": "L2_RQSTS.REFERENCES",
359 "SampleAfterValue": "200000",
360 "BriefDescription": "All L2 requests"
361 },
362 {
363 "EventCode": "0x24",
364 "Counter": "0,1,2,3",
365 "UMask": "0x4",
366 "EventName": "L2_RQSTS.RFO_HIT",
367 "SampleAfterValue": "200000",
368 "BriefDescription": "L2 RFO hits"
369 },
370 {
371 "EventCode": "0x24",
372 "Counter": "0,1,2,3",
373 "UMask": "0x8",
374 "EventName": "L2_RQSTS.RFO_MISS",
375 "SampleAfterValue": "200000",
376 "BriefDescription": "L2 RFO misses"
377 },
378 {
379 "EventCode": "0x24",
380 "Counter": "0,1,2,3",
381 "UMask": "0xc",
382 "EventName": "L2_RQSTS.RFOS",
383 "SampleAfterValue": "200000",
384 "BriefDescription": "L2 RFO requests"
385 },
386 {
387 "EventCode": "0xF0",
388 "Counter": "0,1,2,3",
389 "UMask": "0x80",
390 "EventName": "L2_TRANSACTIONS.ANY",
391 "SampleAfterValue": "200000",
392 "BriefDescription": "All L2 transactions"
393 },
394 {
395 "EventCode": "0xF0",
396 "Counter": "0,1,2,3",
397 "UMask": "0x20",
398 "EventName": "L2_TRANSACTIONS.FILL",
399 "SampleAfterValue": "200000",
400 "BriefDescription": "L2 fill transactions"
401 },
402 {
403 "EventCode": "0xF0",
404 "Counter": "0,1,2,3",
405 "UMask": "0x4",
406 "EventName": "L2_TRANSACTIONS.IFETCH",
407 "SampleAfterValue": "200000",
408 "BriefDescription": "L2 instruction fetch transactions"
409 },
410 {
411 "EventCode": "0xF0",
412 "Counter": "0,1,2,3",
413 "UMask": "0x10",
414 "EventName": "L2_TRANSACTIONS.L1D_WB",
415 "SampleAfterValue": "200000",
416 "BriefDescription": "L1D writeback to L2 transactions"
417 },
418 {
419 "EventCode": "0xF0",
420 "Counter": "0,1,2,3",
421 "UMask": "0x1",
422 "EventName": "L2_TRANSACTIONS.LOAD",
423 "SampleAfterValue": "200000",
424 "BriefDescription": "L2 Load transactions"
425 },
426 {
427 "EventCode": "0xF0",
428 "Counter": "0,1,2,3",
429 "UMask": "0x8",
430 "EventName": "L2_TRANSACTIONS.PREFETCH",
431 "SampleAfterValue": "200000",
432 "BriefDescription": "L2 prefetch transactions"
433 },
434 {
435 "EventCode": "0xF0",
436 "Counter": "0,1,2,3",
437 "UMask": "0x2",
438 "EventName": "L2_TRANSACTIONS.RFO",
439 "SampleAfterValue": "200000",
440 "BriefDescription": "L2 RFO transactions"
441 },
442 {
443 "EventCode": "0xF0",
444 "Counter": "0,1,2,3",
445 "UMask": "0x40",
446 "EventName": "L2_TRANSACTIONS.WB",
447 "SampleAfterValue": "200000",
448 "BriefDescription": "L2 writeback to LLC transactions"
449 },
450 {
451 "EventCode": "0x27",
452 "Counter": "0,1,2,3",
453 "UMask": "0x40",
454 "EventName": "L2_WRITE.LOCK.E_STATE",
455 "SampleAfterValue": "100000",
456 "BriefDescription": "L2 demand lock RFOs in E state"
457 },
458 {
459 "EventCode": "0x27",
460 "Counter": "0,1,2,3",
461 "UMask": "0xe0",
462 "EventName": "L2_WRITE.LOCK.HIT",
463 "SampleAfterValue": "100000",
464 "BriefDescription": "All demand L2 lock RFOs that hit the cache"
465 },
466 {
467 "EventCode": "0x27",
468 "Counter": "0,1,2,3",
469 "UMask": "0x10",
470 "EventName": "L2_WRITE.LOCK.I_STATE",
471 "SampleAfterValue": "100000",
472 "BriefDescription": "L2 demand lock RFOs in I state (misses)"
473 },
474 {
475 "EventCode": "0x27",
476 "Counter": "0,1,2,3",
477 "UMask": "0x80",
478 "EventName": "L2_WRITE.LOCK.M_STATE",
479 "SampleAfterValue": "100000",
480 "BriefDescription": "L2 demand lock RFOs in M state"
481 },
482 {
483 "EventCode": "0x27",
484 "Counter": "0,1,2,3",
485 "UMask": "0xf0",
486 "EventName": "L2_WRITE.LOCK.MESI",
487 "SampleAfterValue": "100000",
488 "BriefDescription": "All demand L2 lock RFOs"
489 },
490 {
491 "EventCode": "0x27",
492 "Counter": "0,1,2,3",
493 "UMask": "0x20",
494 "EventName": "L2_WRITE.LOCK.S_STATE",
495 "SampleAfterValue": "100000",
496 "BriefDescription": "L2 demand lock RFOs in S state"
497 },
498 {
499 "EventCode": "0x27",
500 "Counter": "0,1,2,3",
501 "UMask": "0xe",
502 "EventName": "L2_WRITE.RFO.HIT",
503 "SampleAfterValue": "100000",
504 "BriefDescription": "All L2 demand store RFOs that hit the cache"
505 },
506 {
507 "EventCode": "0x27",
508 "Counter": "0,1,2,3",
509 "UMask": "0x1",
510 "EventName": "L2_WRITE.RFO.I_STATE",
511 "SampleAfterValue": "100000",
512 "BriefDescription": "L2 demand store RFOs in I state (misses)"
513 },
514 {
515 "EventCode": "0x27",
516 "Counter": "0,1,2,3",
517 "UMask": "0x8",
518 "EventName": "L2_WRITE.RFO.M_STATE",
519 "SampleAfterValue": "100000",
520 "BriefDescription": "L2 demand store RFOs in M state"
521 },
522 {
523 "EventCode": "0x27",
524 "Counter": "0,1,2,3",
525 "UMask": "0xf",
526 "EventName": "L2_WRITE.RFO.MESI",
527 "SampleAfterValue": "100000",
528 "BriefDescription": "All L2 demand store RFOs"
529 },
530 {
531 "EventCode": "0x27",
532 "Counter": "0,1,2,3",
533 "UMask": "0x2",
534 "EventName": "L2_WRITE.RFO.S_STATE",
535 "SampleAfterValue": "100000",
536 "BriefDescription": "L2 demand store RFOs in S state"
537 },
538 {
539 "EventCode": "0x2E",
540 "Counter": "0,1,2,3",
541 "UMask": "0x41",
542 "EventName": "LONGEST_LAT_CACHE.MISS",
543 "SampleAfterValue": "100000",
544 "BriefDescription": "Longest latency cache miss"
545 },
546 {
547 "EventCode": "0x2E",
548 "Counter": "0,1,2,3",
549 "UMask": "0x4f",
550 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
551 "SampleAfterValue": "200000",
552 "BriefDescription": "Longest latency cache reference"
553 },
554 {
555 "PEBS": "1",
556 "EventCode": "0xB",
557 "Counter": "0,1,2,3",
558 "UMask": "0x1",
559 "EventName": "MEM_INST_RETIRED.LOADS",
560 "SampleAfterValue": "2000000",
561 "BriefDescription": "Instructions retired which contains a load (Precise Event)"
562 },
563 {
564 "PEBS": "1",
565 "EventCode": "0xB",
566 "Counter": "0,1,2,3",
567 "UMask": "0x2",
568 "EventName": "MEM_INST_RETIRED.STORES",
569 "SampleAfterValue": "2000000",
570 "BriefDescription": "Instructions retired which contains a store (Precise Event)"
571 },
572 {
573 "PEBS": "1",
574 "EventCode": "0xCB",
575 "Counter": "0,1,2,3",
576 "UMask": "0x40",
577 "EventName": "MEM_LOAD_RETIRED.HIT_LFB",
578 "SampleAfterValue": "200000",
579 "BriefDescription": "Retired loads that miss L1D and hit an previously allocated LFB (Precise Event)"
580 },
581 {
582 "PEBS": "1",
583 "EventCode": "0xCB",
584 "Counter": "0,1,2,3",
585 "UMask": "0x1",
586 "EventName": "MEM_LOAD_RETIRED.L1D_HIT",
587 "SampleAfterValue": "2000000",
588 "BriefDescription": "Retired loads that hit the L1 data cache (Precise Event)"
589 },
590 {
591 "PEBS": "1",
592 "EventCode": "0xCB",
593 "Counter": "0,1,2,3",
594 "UMask": "0x2",
595 "EventName": "MEM_LOAD_RETIRED.L2_HIT",
596 "SampleAfterValue": "200000",
597 "BriefDescription": "Retired loads that hit the L2 cache (Precise Event)"
598 },
599 {
600 "PEBS": "1",
601 "EventCode": "0xCB",
602 "Counter": "0,1,2,3",
603 "UMask": "0x10",
604 "EventName": "MEM_LOAD_RETIRED.LLC_MISS",
605 "SampleAfterValue": "10000",
606 "BriefDescription": "Retired loads that miss the LLC cache (Precise Event)"
607 },
608 {
609 "PEBS": "1",
610 "EventCode": "0xCB",
611 "Counter": "0,1,2,3",
612 "UMask": "0x4",
613 "EventName": "MEM_LOAD_RETIRED.LLC_UNSHARED_HIT",
614 "SampleAfterValue": "40000",
615 "BriefDescription": "Retired loads that hit valid versions in the LLC cache (Precise Event)"
616 },
617 {
618 "PEBS": "1",
619 "EventCode": "0xCB",
620 "Counter": "0,1,2,3",
621 "UMask": "0x8",
622 "EventName": "MEM_LOAD_RETIRED.OTHER_CORE_L2_HIT_HITM",
623 "SampleAfterValue": "40000",
624 "BriefDescription": "Retired loads that hit sibling core's L2 in modified or unmodified states (Precise Event)"
625 },
626 {
627 "EventCode": "0xB0",
628 "Counter": "0,1,2,3",
629 "UMask": "0x80",
630 "EventName": "OFFCORE_REQUESTS.ANY",
631 "SampleAfterValue": "100000",
632 "BriefDescription": "All offcore requests"
633 },
634 {
635 "EventCode": "0xB0",
636 "Counter": "0,1,2,3",
637 "UMask": "0x8",
638 "EventName": "OFFCORE_REQUESTS.ANY.READ",
639 "SampleAfterValue": "100000",
640 "BriefDescription": "Offcore read requests"
641 },
642 {
643 "EventCode": "0xB0",
644 "Counter": "0,1,2,3",
645 "UMask": "0x10",
646 "EventName": "OFFCORE_REQUESTS.ANY.RFO",
647 "SampleAfterValue": "100000",
648 "BriefDescription": "Offcore RFO requests"
649 },
650 {
651 "EventCode": "0xB0",
652 "Counter": "0,1,2,3",
653 "UMask": "0x2",
654 "EventName": "OFFCORE_REQUESTS.DEMAND.READ_CODE",
655 "SampleAfterValue": "100000",
656 "BriefDescription": "Offcore demand code read requests"
657 },
658 {
659 "EventCode": "0xB0",
660 "Counter": "0,1,2,3",
661 "UMask": "0x1",
662 "EventName": "OFFCORE_REQUESTS.DEMAND.READ_DATA",
663 "SampleAfterValue": "100000",
664 "BriefDescription": "Offcore demand data read requests"
665 },
666 {
667 "EventCode": "0xB0",
668 "Counter": "0,1,2,3",
669 "UMask": "0x4",
670 "EventName": "OFFCORE_REQUESTS.DEMAND.RFO",
671 "SampleAfterValue": "100000",
672 "BriefDescription": "Offcore demand RFO requests"
673 },
674 {
675 "EventCode": "0xB0",
676 "Counter": "0,1,2,3",
677 "UMask": "0x40",
678 "EventName": "OFFCORE_REQUESTS.L1D_WRITEBACK",
679 "SampleAfterValue": "100000",
680 "BriefDescription": "Offcore L1 data cache writebacks"
681 },
682 {
683 "EventCode": "0x60",
684 "UMask": "0x8",
685 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ANY.READ",
686 "SampleAfterValue": "2000000",
687 "BriefDescription": "Outstanding offcore reads"
688 },
689 {
690 "EventCode": "0x60",
691 "UMask": "0x8",
692 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ANY.READ_NOT_EMPTY",
693 "SampleAfterValue": "2000000",
694 "BriefDescription": "Cycles offcore reads busy",
695 "CounterMask": "1"
696 },
697 {
698 "EventCode": "0x60",
699 "UMask": "0x2",
700 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_CODE",
701 "SampleAfterValue": "2000000",
702 "BriefDescription": "Outstanding offcore demand code reads"
703 },
704 {
705 "EventCode": "0x60",
706 "UMask": "0x2",
707 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_CODE_NOT_EMPTY",
708 "SampleAfterValue": "2000000",
709 "BriefDescription": "Cycles offcore demand code read busy",
710 "CounterMask": "1"
711 },
712 {
713 "EventCode": "0x60",
714 "UMask": "0x1",
715 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_DATA",
716 "SampleAfterValue": "2000000",
717 "BriefDescription": "Outstanding offcore demand data reads"
718 },
719 {
720 "EventCode": "0x60",
721 "UMask": "0x1",
722 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_DATA_NOT_EMPTY",
723 "SampleAfterValue": "2000000",
724 "BriefDescription": "Cycles offcore demand data read busy",
725 "CounterMask": "1"
726 },
727 {
728 "EventCode": "0x60",
729 "UMask": "0x4",
730 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.RFO",
731 "SampleAfterValue": "2000000",
732 "BriefDescription": "Outstanding offcore demand RFOs"
733 },
734 {
735 "EventCode": "0x60",
736 "UMask": "0x4",
737 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.RFO_NOT_EMPTY",
738 "SampleAfterValue": "2000000",
739 "BriefDescription": "Cycles offcore demand RFOs busy",
740 "CounterMask": "1"
741 },
742 {
743 "EventCode": "0xB2",
744 "Counter": "0,1,2,3",
745 "UMask": "0x1",
746 "EventName": "OFFCORE_REQUESTS_SQ_FULL",
747 "SampleAfterValue": "100000",
748 "BriefDescription": "Offcore requests blocked due to Super Queue full"
749 },
750 {
751 "EventCode": "0xF4",
752 "Counter": "0,1,2,3",
753 "UMask": "0x4",
754 "EventName": "SQ_MISC.LRU_HINTS",
755 "SampleAfterValue": "2000000",
756 "BriefDescription": "Super Queue LRU hints sent to LLC"
757 },
758 {
759 "EventCode": "0xF4",
760 "Counter": "0,1,2,3",
761 "UMask": "0x10",
762 "EventName": "SQ_MISC.SPLIT_LOCK",
763 "SampleAfterValue": "2000000",
764 "BriefDescription": "Super Queue lock splits across a cache line"
765 },
766 {
767 "EventCode": "0x6",
768 "Counter": "0,1,2,3",
769 "UMask": "0x4",
770 "EventName": "STORE_BLOCKS.AT_RET",
771 "SampleAfterValue": "200000",
772 "BriefDescription": "Loads delayed with at-Retirement block code"
773 },
774 {
775 "EventCode": "0x6",
776 "Counter": "0,1,2,3",
777 "UMask": "0x8",
778 "EventName": "STORE_BLOCKS.L1D_BLOCK",
779 "SampleAfterValue": "200000",
780 "BriefDescription": "Cacheable loads delayed with L1D block code"
781 },
782 {
783 "PEBS": "2",
784 "EventCode": "0xB",
785 "MSRValue": "0x0",
786 "Counter": "3",
787 "UMask": "0x10",
788 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_0",
789 "MSRIndex": "0x3F6",
790 "SampleAfterValue": "2000000",
791 "BriefDescription": "Memory instructions retired above 0 clocks (Precise Event)"
792 },
793 {
794 "PEBS": "2",
795 "EventCode": "0xB",
796 "MSRValue": "0x400",
797 "Counter": "3",
798 "UMask": "0x10",
799 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_1024",
800 "MSRIndex": "0x3F6",
801 "SampleAfterValue": "100",
802 "BriefDescription": "Memory instructions retired above 1024 clocks (Precise Event)"
803 },
804 {
805 "PEBS": "2",
806 "EventCode": "0xB",
807 "MSRValue": "0x80",
808 "Counter": "3",
809 "UMask": "0x10",
810 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_128",
811 "MSRIndex": "0x3F6",
812 "SampleAfterValue": "1000",
813 "BriefDescription": "Memory instructions retired above 128 clocks (Precise Event)"
814 },
815 {
816 "PEBS": "2",
817 "EventCode": "0xB",
818 "MSRValue": "0x10",
819 "Counter": "3",
820 "UMask": "0x10",
821 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16",
822 "MSRIndex": "0x3F6",
823 "SampleAfterValue": "10000",
824 "BriefDescription": "Memory instructions retired above 16 clocks (Precise Event)"
825 },
826 {
827 "PEBS": "2",
828 "EventCode": "0xB",
829 "MSRValue": "0x4000",
830 "Counter": "3",
831 "UMask": "0x10",
832 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16384",
833 "MSRIndex": "0x3F6",
834 "SampleAfterValue": "5",
835 "BriefDescription": "Memory instructions retired above 16384 clocks (Precise Event)"
836 },
837 {
838 "PEBS": "2",
839 "EventCode": "0xB",
840 "MSRValue": "0x800",
841 "Counter": "3",
842 "UMask": "0x10",
843 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_2048",
844 "MSRIndex": "0x3F6",
845 "SampleAfterValue": "50",
846 "BriefDescription": "Memory instructions retired above 2048 clocks (Precise Event)"
847 },
848 {
849 "PEBS": "2",
850 "EventCode": "0xB",
851 "MSRValue": "0x100",
852 "Counter": "3",
853 "UMask": "0x10",
854 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_256",
855 "MSRIndex": "0x3F6",
856 "SampleAfterValue": "500",
857 "BriefDescription": "Memory instructions retired above 256 clocks (Precise Event)"
858 },
859 {
860 "PEBS": "2",
861 "EventCode": "0xB",
862 "MSRValue": "0x20",
863 "Counter": "3",
864 "UMask": "0x10",
865 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32",
866 "MSRIndex": "0x3F6",
867 "SampleAfterValue": "5000",
868 "BriefDescription": "Memory instructions retired above 32 clocks (Precise Event)"
869 },
870 {
871 "PEBS": "2",
872 "EventCode": "0xB",
873 "MSRValue": "0x8000",
874 "Counter": "3",
875 "UMask": "0x10",
876 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32768",
877 "MSRIndex": "0x3F6",
878 "SampleAfterValue": "3",
879 "BriefDescription": "Memory instructions retired above 32768 clocks (Precise Event)"
880 },
881 {
882 "PEBS": "2",
883 "EventCode": "0xB",
884 "MSRValue": "0x4",
885 "Counter": "3",
886 "UMask": "0x10",
887 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4",
888 "MSRIndex": "0x3F6",
889 "SampleAfterValue": "50000",
890 "BriefDescription": "Memory instructions retired above 4 clocks (Precise Event)"
891 },
892 {
893 "PEBS": "2",
894 "EventCode": "0xB",
895 "MSRValue": "0x1000",
896 "Counter": "3",
897 "UMask": "0x10",
898 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4096",
899 "MSRIndex": "0x3F6",
900 "SampleAfterValue": "20",
901 "BriefDescription": "Memory instructions retired above 4096 clocks (Precise Event)"
902 },
903 {
904 "PEBS": "2",
905 "EventCode": "0xB",
906 "MSRValue": "0x200",
907 "Counter": "3",
908 "UMask": "0x10",
909 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_512",
910 "MSRIndex": "0x3F6",
911 "SampleAfterValue": "200",
912 "BriefDescription": "Memory instructions retired above 512 clocks (Precise Event)"
913 },
914 {
915 "PEBS": "2",
916 "EventCode": "0xB",
917 "MSRValue": "0x40",
918 "Counter": "3",
919 "UMask": "0x10",
920 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_64",
921 "MSRIndex": "0x3F6",
922 "SampleAfterValue": "2000",
923 "BriefDescription": "Memory instructions retired above 64 clocks (Precise Event)"
924 },
925 {
926 "PEBS": "2",
927 "EventCode": "0xB",
928 "MSRValue": "0x8",
929 "Counter": "3",
930 "UMask": "0x10",
931 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8",
932 "MSRIndex": "0x3F6",
933 "SampleAfterValue": "20000",
934 "BriefDescription": "Memory instructions retired above 8 clocks (Precise Event)"
935 },
936 {
937 "PEBS": "2",
938 "EventCode": "0xB",
939 "MSRValue": "0x2000",
940 "Counter": "3",
941 "UMask": "0x10",
942 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8192",
943 "MSRIndex": "0x3F6",
944 "SampleAfterValue": "10",
945 "BriefDescription": "Memory instructions retired above 8192 clocks (Precise Event)"
946 },
947 {
948 "EventCode": "0xB7, 0xBB",
949 "MSRValue": "0x5011",
950 "Counter": "0,1,2,3",
951 "UMask": "0x1",
952 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
953 "MSRIndex": "0x1a6,0x1a7",
954 "SampleAfterValue": "100000",
955 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
956 "Offcore": "1"
957 },
958 {
959 "EventCode": "0xB7, 0xBB",
960 "MSRValue": "0x7f11",
961 "Counter": "0,1,2,3",
962 "UMask": "0x1",
963 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_CACHE_DRAM",
964 "MSRIndex": "0x1a6,0x1a7",
965 "SampleAfterValue": "100000",
966 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = ANY_CACHE_DRAM",
967 "Offcore": "1"
968 },
969 {
970 "EventCode": "0xB7, 0xBB",
971 "MSRValue": "0xff11",
972 "Counter": "0,1,2,3",
973 "UMask": "0x1",
974 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LOCATION",
975 "MSRIndex": "0x1a6,0x1a7",
976 "SampleAfterValue": "100000",
977 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = ANY_LOCATION",
978 "Offcore": "1"
979 },
980 {
981 "EventCode": "0xB7, 0xBB",
982 "MSRValue": "0x8011",
983 "Counter": "0,1,2,3",
984 "UMask": "0x1",
985 "EventName": "OFFCORE_RESPONSE.ANY_DATA.IO_CSR_MMIO",
986 "MSRIndex": "0x1a6,0x1a7",
987 "SampleAfterValue": "100000",
988 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = IO_CSR_MMIO",
989 "Offcore": "1"
990 },
991 {
992 "EventCode": "0xB7, 0xBB",
993 "MSRValue": "0x111",
994 "Counter": "0,1,2,3",
995 "UMask": "0x1",
996 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_NO_OTHER_CORE",
997 "MSRIndex": "0x1a6,0x1a7",
998 "SampleAfterValue": "100000",
999 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1000 "Offcore": "1"
1001 },
1002 {
1003 "EventCode": "0xB7, 0xBB",
1004 "MSRValue": "0x211",
1005 "Counter": "0,1,2,3",
1006 "UMask": "0x1",
1007 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HIT",
1008 "MSRIndex": "0x1a6,0x1a7",
1009 "SampleAfterValue": "100000",
1010 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1011 "Offcore": "1"
1012 },
1013 {
1014 "EventCode": "0xB7, 0xBB",
1015 "MSRValue": "0x411",
1016 "Counter": "0,1,2,3",
1017 "UMask": "0x1",
1018 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HITM",
1019 "MSRIndex": "0x1a6,0x1a7",
1020 "SampleAfterValue": "100000",
1021 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1022 "Offcore": "1"
1023 },
1024 {
1025 "EventCode": "0xB7, 0xBB",
1026 "MSRValue": "0x711",
1027 "Counter": "0,1,2,3",
1028 "UMask": "0x1",
1029 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE",
1030 "MSRIndex": "0x1a6,0x1a7",
1031 "SampleAfterValue": "100000",
1032 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = LOCAL_CACHE",
1033 "Offcore": "1"
1034 },
1035 {
1036 "EventCode": "0xB7, 0xBB",
1037 "MSRValue": "0x1011",
1038 "Counter": "0,1,2,3",
1039 "UMask": "0x1",
1040 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1041 "MSRIndex": "0x1a6,0x1a7",
1042 "SampleAfterValue": "100000",
1043 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1044 "Offcore": "1"
1045 },
1046 {
1047 "EventCode": "0xB7, 0xBB",
1048 "MSRValue": "0x811",
1049 "Counter": "0,1,2,3",
1050 "UMask": "0x1",
1051 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HITM",
1052 "MSRIndex": "0x1a6,0x1a7",
1053 "SampleAfterValue": "100000",
1054 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = REMOTE_CACHE_HITM",
1055 "Offcore": "1"
1056 },
1057 {
1058 "EventCode": "0xB7, 0xBB",
1059 "MSRValue": "0x5044",
1060 "Counter": "0,1,2,3",
1061 "UMask": "0x1",
1062 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1063 "MSRIndex": "0x1a6,0x1a7",
1064 "SampleAfterValue": "100000",
1065 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1066 "Offcore": "1"
1067 },
1068 {
1069 "EventCode": "0xB7, 0xBB",
1070 "MSRValue": "0x7f44",
1071 "Counter": "0,1,2,3",
1072 "UMask": "0x1",
1073 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_CACHE_DRAM",
1074 "MSRIndex": "0x1a6,0x1a7",
1075 "SampleAfterValue": "100000",
1076 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = ANY_CACHE_DRAM",
1077 "Offcore": "1"
1078 },
1079 {
1080 "EventCode": "0xB7, 0xBB",
1081 "MSRValue": "0xff44",
1082 "Counter": "0,1,2,3",
1083 "UMask": "0x1",
1084 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LOCATION",
1085 "MSRIndex": "0x1a6,0x1a7",
1086 "SampleAfterValue": "100000",
1087 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = ANY_LOCATION",
1088 "Offcore": "1"
1089 },
1090 {
1091 "EventCode": "0xB7, 0xBB",
1092 "MSRValue": "0x8044",
1093 "Counter": "0,1,2,3",
1094 "UMask": "0x1",
1095 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.IO_CSR_MMIO",
1096 "MSRIndex": "0x1a6,0x1a7",
1097 "SampleAfterValue": "100000",
1098 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = IO_CSR_MMIO",
1099 "Offcore": "1"
1100 },
1101 {
1102 "EventCode": "0xB7, 0xBB",
1103 "MSRValue": "0x144",
1104 "Counter": "0,1,2,3",
1105 "UMask": "0x1",
1106 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_NO_OTHER_CORE",
1107 "MSRIndex": "0x1a6,0x1a7",
1108 "SampleAfterValue": "100000",
1109 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1110 "Offcore": "1"
1111 },
1112 {
1113 "EventCode": "0xB7, 0xBB",
1114 "MSRValue": "0x244",
1115 "Counter": "0,1,2,3",
1116 "UMask": "0x1",
1117 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1118 "MSRIndex": "0x1a6,0x1a7",
1119 "SampleAfterValue": "100000",
1120 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1121 "Offcore": "1"
1122 },
1123 {
1124 "EventCode": "0xB7, 0xBB",
1125 "MSRValue": "0x444",
1126 "Counter": "0,1,2,3",
1127 "UMask": "0x1",
1128 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1129 "MSRIndex": "0x1a6,0x1a7",
1130 "SampleAfterValue": "100000",
1131 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1132 "Offcore": "1"
1133 },
1134 {
1135 "EventCode": "0xB7, 0xBB",
1136 "MSRValue": "0x744",
1137 "Counter": "0,1,2,3",
1138 "UMask": "0x1",
1139 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE",
1140 "MSRIndex": "0x1a6,0x1a7",
1141 "SampleAfterValue": "100000",
1142 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = LOCAL_CACHE",
1143 "Offcore": "1"
1144 },
1145 {
1146 "EventCode": "0xB7, 0xBB",
1147 "MSRValue": "0x1044",
1148 "Counter": "0,1,2,3",
1149 "UMask": "0x1",
1150 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1151 "MSRIndex": "0x1a6,0x1a7",
1152 "SampleAfterValue": "100000",
1153 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1154 "Offcore": "1"
1155 },
1156 {
1157 "EventCode": "0xB7, 0xBB",
1158 "MSRValue": "0x844",
1159 "Counter": "0,1,2,3",
1160 "UMask": "0x1",
1161 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HITM",
1162 "MSRIndex": "0x1a6,0x1a7",
1163 "SampleAfterValue": "100000",
1164 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = REMOTE_CACHE_HITM",
1165 "Offcore": "1"
1166 },
1167 {
1168 "EventCode": "0xB7, 0xBB",
1169 "MSRValue": "0x50ff",
1170 "Counter": "0,1,2,3",
1171 "UMask": "0x1",
1172 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1173 "MSRIndex": "0x1a6,0x1a7",
1174 "SampleAfterValue": "100000",
1175 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1176 "Offcore": "1"
1177 },
1178 {
1179 "EventCode": "0xB7, 0xBB",
1180 "MSRValue": "0x7fff",
1181 "Counter": "0,1,2,3",
1182 "UMask": "0x1",
1183 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_CACHE_DRAM",
1184 "MSRIndex": "0x1a6,0x1a7",
1185 "SampleAfterValue": "100000",
1186 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = ANY_CACHE_DRAM",
1187 "Offcore": "1"
1188 },
1189 {
1190 "EventCode": "0xB7, 0xBB",
1191 "MSRValue": "0xffff",
1192 "Counter": "0,1,2,3",
1193 "UMask": "0x1",
1194 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LOCATION",
1195 "MSRIndex": "0x1a6,0x1a7",
1196 "SampleAfterValue": "100000",
1197 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = ANY_LOCATION",
1198 "Offcore": "1"
1199 },
1200 {
1201 "EventCode": "0xB7, 0xBB",
1202 "MSRValue": "0x80ff",
1203 "Counter": "0,1,2,3",
1204 "UMask": "0x1",
1205 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.IO_CSR_MMIO",
1206 "MSRIndex": "0x1a6,0x1a7",
1207 "SampleAfterValue": "100000",
1208 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = IO_CSR_MMIO",
1209 "Offcore": "1"
1210 },
1211 {
1212 "EventCode": "0xB7, 0xBB",
1213 "MSRValue": "0x1ff",
1214 "Counter": "0,1,2,3",
1215 "UMask": "0x1",
1216 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_NO_OTHER_CORE",
1217 "MSRIndex": "0x1a6,0x1a7",
1218 "SampleAfterValue": "100000",
1219 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1220 "Offcore": "1"
1221 },
1222 {
1223 "EventCode": "0xB7, 0xBB",
1224 "MSRValue": "0x2ff",
1225 "Counter": "0,1,2,3",
1226 "UMask": "0x1",
1227 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HIT",
1228 "MSRIndex": "0x1a6,0x1a7",
1229 "SampleAfterValue": "100000",
1230 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1231 "Offcore": "1"
1232 },
1233 {
1234 "EventCode": "0xB7, 0xBB",
1235 "MSRValue": "0x4ff",
1236 "Counter": "0,1,2,3",
1237 "UMask": "0x1",
1238 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HITM",
1239 "MSRIndex": "0x1a6,0x1a7",
1240 "SampleAfterValue": "100000",
1241 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1242 "Offcore": "1"
1243 },
1244 {
1245 "EventCode": "0xB7, 0xBB",
1246 "MSRValue": "0x7ff",
1247 "Counter": "0,1,2,3",
1248 "UMask": "0x1",
1249 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE",
1250 "MSRIndex": "0x1a6,0x1a7",
1251 "SampleAfterValue": "100000",
1252 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = LOCAL_CACHE",
1253 "Offcore": "1"
1254 },
1255 {
1256 "EventCode": "0xB7, 0xBB",
1257 "MSRValue": "0x10ff",
1258 "Counter": "0,1,2,3",
1259 "UMask": "0x1",
1260 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1261 "MSRIndex": "0x1a6,0x1a7",
1262 "SampleAfterValue": "100000",
1263 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1264 "Offcore": "1"
1265 },
1266 {
1267 "EventCode": "0xB7, 0xBB",
1268 "MSRValue": "0x8ff",
1269 "Counter": "0,1,2,3",
1270 "UMask": "0x1",
1271 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HITM",
1272 "MSRIndex": "0x1a6,0x1a7",
1273 "SampleAfterValue": "100000",
1274 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = REMOTE_CACHE_HITM",
1275 "Offcore": "1"
1276 },
1277 {
1278 "EventCode": "0xB7, 0xBB",
1279 "MSRValue": "0x5022",
1280 "Counter": "0,1,2,3",
1281 "UMask": "0x1",
1282 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1283 "MSRIndex": "0x1a6,0x1a7",
1284 "SampleAfterValue": "100000",
1285 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1286 "Offcore": "1"
1287 },
1288 {
1289 "EventCode": "0xB7, 0xBB",
1290 "MSRValue": "0x7f22",
1291 "Counter": "0,1,2,3",
1292 "UMask": "0x1",
1293 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_CACHE_DRAM",
1294 "MSRIndex": "0x1a6,0x1a7",
1295 "SampleAfterValue": "100000",
1296 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = ANY_CACHE_DRAM",
1297 "Offcore": "1"
1298 },
1299 {
1300 "EventCode": "0xB7, 0xBB",
1301 "MSRValue": "0xff22",
1302 "Counter": "0,1,2,3",
1303 "UMask": "0x1",
1304 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LOCATION",
1305 "MSRIndex": "0x1a6,0x1a7",
1306 "SampleAfterValue": "100000",
1307 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = ANY_LOCATION",
1308 "Offcore": "1"
1309 },
1310 {
1311 "EventCode": "0xB7, 0xBB",
1312 "MSRValue": "0x8022",
1313 "Counter": "0,1,2,3",
1314 "UMask": "0x1",
1315 "EventName": "OFFCORE_RESPONSE.ANY_RFO.IO_CSR_MMIO",
1316 "MSRIndex": "0x1a6,0x1a7",
1317 "SampleAfterValue": "100000",
1318 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = IO_CSR_MMIO",
1319 "Offcore": "1"
1320 },
1321 {
1322 "EventCode": "0xB7, 0xBB",
1323 "MSRValue": "0x122",
1324 "Counter": "0,1,2,3",
1325 "UMask": "0x1",
1326 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_NO_OTHER_CORE",
1327 "MSRIndex": "0x1a6,0x1a7",
1328 "SampleAfterValue": "100000",
1329 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1330 "Offcore": "1"
1331 },
1332 {
1333 "EventCode": "0xB7, 0xBB",
1334 "MSRValue": "0x222",
1335 "Counter": "0,1,2,3",
1336 "UMask": "0x1",
1337 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HIT",
1338 "MSRIndex": "0x1a6,0x1a7",
1339 "SampleAfterValue": "100000",
1340 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1341 "Offcore": "1"
1342 },
1343 {
1344 "EventCode": "0xB7, 0xBB",
1345 "MSRValue": "0x422",
1346 "Counter": "0,1,2,3",
1347 "UMask": "0x1",
1348 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HITM",
1349 "MSRIndex": "0x1a6,0x1a7",
1350 "SampleAfterValue": "100000",
1351 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1352 "Offcore": "1"
1353 },
1354 {
1355 "EventCode": "0xB7, 0xBB",
1356 "MSRValue": "0x722",
1357 "Counter": "0,1,2,3",
1358 "UMask": "0x1",
1359 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE",
1360 "MSRIndex": "0x1a6,0x1a7",
1361 "SampleAfterValue": "100000",
1362 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = LOCAL_CACHE",
1363 "Offcore": "1"
1364 },
1365 {
1366 "EventCode": "0xB7, 0xBB",
1367 "MSRValue": "0x1022",
1368 "Counter": "0,1,2,3",
1369 "UMask": "0x1",
1370 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1371 "MSRIndex": "0x1a6,0x1a7",
1372 "SampleAfterValue": "100000",
1373 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1374 "Offcore": "1"
1375 },
1376 {
1377 "EventCode": "0xB7, 0xBB",
1378 "MSRValue": "0x822",
1379 "Counter": "0,1,2,3",
1380 "UMask": "0x1",
1381 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HITM",
1382 "MSRIndex": "0x1a6,0x1a7",
1383 "SampleAfterValue": "100000",
1384 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = REMOTE_CACHE_HITM",
1385 "Offcore": "1"
1386 },
1387 {
1388 "EventCode": "0xB7, 0xBB",
1389 "MSRValue": "0x5008",
1390 "Counter": "0,1,2,3",
1391 "UMask": "0x1",
1392 "EventName": "OFFCORE_RESPONSE.COREWB.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1393 "MSRIndex": "0x1a6,0x1a7",
1394 "SampleAfterValue": "100000",
1395 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1396 "Offcore": "1"
1397 },
1398 {
1399 "EventCode": "0xB7, 0xBB",
1400 "MSRValue": "0x7f08",
1401 "Counter": "0,1,2,3",
1402 "UMask": "0x1",
1403 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_CACHE_DRAM",
1404 "MSRIndex": "0x1a6,0x1a7",
1405 "SampleAfterValue": "100000",
1406 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = ANY_CACHE_DRAM",
1407 "Offcore": "1"
1408 },
1409 {
1410 "EventCode": "0xB7, 0xBB",
1411 "MSRValue": "0xff08",
1412 "Counter": "0,1,2,3",
1413 "UMask": "0x1",
1414 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LOCATION",
1415 "MSRIndex": "0x1a6,0x1a7",
1416 "SampleAfterValue": "100000",
1417 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = ANY_LOCATION",
1418 "Offcore": "1"
1419 },
1420 {
1421 "EventCode": "0xB7, 0xBB",
1422 "MSRValue": "0x8008",
1423 "Counter": "0,1,2,3",
1424 "UMask": "0x1",
1425 "EventName": "OFFCORE_RESPONSE.COREWB.IO_CSR_MMIO",
1426 "MSRIndex": "0x1a6,0x1a7",
1427 "SampleAfterValue": "100000",
1428 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = IO_CSR_MMIO",
1429 "Offcore": "1"
1430 },
1431 {
1432 "EventCode": "0xB7, 0xBB",
1433 "MSRValue": "0x108",
1434 "Counter": "0,1,2,3",
1435 "UMask": "0x1",
1436 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_NO_OTHER_CORE",
1437 "MSRIndex": "0x1a6,0x1a7",
1438 "SampleAfterValue": "100000",
1439 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1440 "Offcore": "1"
1441 },
1442 {
1443 "EventCode": "0xB7, 0xBB",
1444 "MSRValue": "0x208",
1445 "Counter": "0,1,2,3",
1446 "UMask": "0x1",
1447 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_OTHER_CORE_HIT",
1448 "MSRIndex": "0x1a6,0x1a7",
1449 "SampleAfterValue": "100000",
1450 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1451 "Offcore": "1"
1452 },
1453 {
1454 "EventCode": "0xB7, 0xBB",
1455 "MSRValue": "0x408",
1456 "Counter": "0,1,2,3",
1457 "UMask": "0x1",
1458 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_OTHER_CORE_HITM",
1459 "MSRIndex": "0x1a6,0x1a7",
1460 "SampleAfterValue": "100000",
1461 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1462 "Offcore": "1"
1463 },
1464 {
1465 "EventCode": "0xB7, 0xBB",
1466 "MSRValue": "0x708",
1467 "Counter": "0,1,2,3",
1468 "UMask": "0x1",
1469 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE",
1470 "MSRIndex": "0x1a6,0x1a7",
1471 "SampleAfterValue": "100000",
1472 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = LOCAL_CACHE",
1473 "Offcore": "1"
1474 },
1475 {
1476 "EventCode": "0xB7, 0xBB",
1477 "MSRValue": "0x1008",
1478 "Counter": "0,1,2,3",
1479 "UMask": "0x1",
1480 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1481 "MSRIndex": "0x1a6,0x1a7",
1482 "SampleAfterValue": "100000",
1483 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1484 "Offcore": "1"
1485 },
1486 {
1487 "EventCode": "0xB7, 0xBB",
1488 "MSRValue": "0x808",
1489 "Counter": "0,1,2,3",
1490 "UMask": "0x1",
1491 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HITM",
1492 "MSRIndex": "0x1a6,0x1a7",
1493 "SampleAfterValue": "100000",
1494 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = REMOTE_CACHE_HITM",
1495 "Offcore": "1"
1496 },
1497 {
1498 "EventCode": "0xB7, 0xBB",
1499 "MSRValue": "0x5077",
1500 "Counter": "0,1,2,3",
1501 "UMask": "0x1",
1502 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1503 "MSRIndex": "0x1a6,0x1a7",
1504 "SampleAfterValue": "100000",
1505 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1506 "Offcore": "1"
1507 },
1508 {
1509 "EventCode": "0xB7, 0xBB",
1510 "MSRValue": "0x7f77",
1511 "Counter": "0,1,2,3",
1512 "UMask": "0x1",
1513 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_CACHE_DRAM",
1514 "MSRIndex": "0x1a6,0x1a7",
1515 "SampleAfterValue": "100000",
1516 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = ANY_CACHE_DRAM",
1517 "Offcore": "1"
1518 },
1519 {
1520 "EventCode": "0xB7, 0xBB",
1521 "MSRValue": "0xff77",
1522 "Counter": "0,1,2,3",
1523 "UMask": "0x1",
1524 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LOCATION",
1525 "MSRIndex": "0x1a6,0x1a7",
1526 "SampleAfterValue": "100000",
1527 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = ANY_LOCATION",
1528 "Offcore": "1"
1529 },
1530 {
1531 "EventCode": "0xB7, 0xBB",
1532 "MSRValue": "0x8077",
1533 "Counter": "0,1,2,3",
1534 "UMask": "0x1",
1535 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.IO_CSR_MMIO",
1536 "MSRIndex": "0x1a6,0x1a7",
1537 "SampleAfterValue": "100000",
1538 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = IO_CSR_MMIO",
1539 "Offcore": "1"
1540 },
1541 {
1542 "EventCode": "0xB7, 0xBB",
1543 "MSRValue": "0x177",
1544 "Counter": "0,1,2,3",
1545 "UMask": "0x1",
1546 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_NO_OTHER_CORE",
1547 "MSRIndex": "0x1a6,0x1a7",
1548 "SampleAfterValue": "100000",
1549 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1550 "Offcore": "1"
1551 },
1552 {
1553 "EventCode": "0xB7, 0xBB",
1554 "MSRValue": "0x277",
1555 "Counter": "0,1,2,3",
1556 "UMask": "0x1",
1557 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1558 "MSRIndex": "0x1a6,0x1a7",
1559 "SampleAfterValue": "100000",
1560 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1561 "Offcore": "1"
1562 },
1563 {
1564 "EventCode": "0xB7, 0xBB",
1565 "MSRValue": "0x477",
1566 "Counter": "0,1,2,3",
1567 "UMask": "0x1",
1568 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1569 "MSRIndex": "0x1a6,0x1a7",
1570 "SampleAfterValue": "100000",
1571 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1572 "Offcore": "1"
1573 },
1574 {
1575 "EventCode": "0xB7, 0xBB",
1576 "MSRValue": "0x777",
1577 "Counter": "0,1,2,3",
1578 "UMask": "0x1",
1579 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE",
1580 "MSRIndex": "0x1a6,0x1a7",
1581 "SampleAfterValue": "100000",
1582 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = LOCAL_CACHE",
1583 "Offcore": "1"
1584 },
1585 {
1586 "EventCode": "0xB7, 0xBB",
1587 "MSRValue": "0x1077",
1588 "Counter": "0,1,2,3",
1589 "UMask": "0x1",
1590 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1591 "MSRIndex": "0x1a6,0x1a7",
1592 "SampleAfterValue": "100000",
1593 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1594 "Offcore": "1"
1595 },
1596 {
1597 "EventCode": "0xB7, 0xBB",
1598 "MSRValue": "0x877",
1599 "Counter": "0,1,2,3",
1600 "UMask": "0x1",
1601 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HITM",
1602 "MSRIndex": "0x1a6,0x1a7",
1603 "SampleAfterValue": "100000",
1604 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = REMOTE_CACHE_HITM",
1605 "Offcore": "1"
1606 },
1607 {
1608 "EventCode": "0xB7, 0xBB",
1609 "MSRValue": "0x5033",
1610 "Counter": "0,1,2,3",
1611 "UMask": "0x1",
1612 "EventName": "OFFCORE_RESPONSE.DATA_IN.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1613 "MSRIndex": "0x1a6,0x1a7",
1614 "SampleAfterValue": "100000",
1615 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1616 "Offcore": "1"
1617 },
1618 {
1619 "EventCode": "0xB7, 0xBB",
1620 "MSRValue": "0x7f33",
1621 "Counter": "0,1,2,3",
1622 "UMask": "0x1",
1623 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_CACHE_DRAM",
1624 "MSRIndex": "0x1a6,0x1a7",
1625 "SampleAfterValue": "100000",
1626 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = ANY_CACHE_DRAM",
1627 "Offcore": "1"
1628 },
1629 {
1630 "EventCode": "0xB7, 0xBB",
1631 "MSRValue": "0xff33",
1632 "Counter": "0,1,2,3",
1633 "UMask": "0x1",
1634 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LOCATION",
1635 "MSRIndex": "0x1a6,0x1a7",
1636 "SampleAfterValue": "100000",
1637 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = ANY_LOCATION",
1638 "Offcore": "1"
1639 },
1640 {
1641 "EventCode": "0xB7, 0xBB",
1642 "MSRValue": "0x8033",
1643 "Counter": "0,1,2,3",
1644 "UMask": "0x1",
1645 "EventName": "OFFCORE_RESPONSE.DATA_IN.IO_CSR_MMIO",
1646 "MSRIndex": "0x1a6,0x1a7",
1647 "SampleAfterValue": "100000",
1648 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = IO_CSR_MMIO",
1649 "Offcore": "1"
1650 },
1651 {
1652 "EventCode": "0xB7, 0xBB",
1653 "MSRValue": "0x133",
1654 "Counter": "0,1,2,3",
1655 "UMask": "0x1",
1656 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_NO_OTHER_CORE",
1657 "MSRIndex": "0x1a6,0x1a7",
1658 "SampleAfterValue": "100000",
1659 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1660 "Offcore": "1"
1661 },
1662 {
1663 "EventCode": "0xB7, 0xBB",
1664 "MSRValue": "0x233",
1665 "Counter": "0,1,2,3",
1666 "UMask": "0x1",
1667 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HIT",
1668 "MSRIndex": "0x1a6,0x1a7",
1669 "SampleAfterValue": "100000",
1670 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1671 "Offcore": "1"
1672 },
1673 {
1674 "EventCode": "0xB7, 0xBB",
1675 "MSRValue": "0x433",
1676 "Counter": "0,1,2,3",
1677 "UMask": "0x1",
1678 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HITM",
1679 "MSRIndex": "0x1a6,0x1a7",
1680 "SampleAfterValue": "100000",
1681 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1682 "Offcore": "1"
1683 },
1684 {
1685 "EventCode": "0xB7, 0xBB",
1686 "MSRValue": "0x733",
1687 "Counter": "0,1,2,3",
1688 "UMask": "0x1",
1689 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE",
1690 "MSRIndex": "0x1a6,0x1a7",
1691 "SampleAfterValue": "100000",
1692 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = LOCAL_CACHE",
1693 "Offcore": "1"
1694 },
1695 {
1696 "EventCode": "0xB7, 0xBB",
1697 "MSRValue": "0x1033",
1698 "Counter": "0,1,2,3",
1699 "UMask": "0x1",
1700 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1701 "MSRIndex": "0x1a6,0x1a7",
1702 "SampleAfterValue": "100000",
1703 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1704 "Offcore": "1"
1705 },
1706 {
1707 "EventCode": "0xB7, 0xBB",
1708 "MSRValue": "0x833",
1709 "Counter": "0,1,2,3",
1710 "UMask": "0x1",
1711 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HITM",
1712 "MSRIndex": "0x1a6,0x1a7",
1713 "SampleAfterValue": "100000",
1714 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = REMOTE_CACHE_HITM",
1715 "Offcore": "1"
1716 },
1717 {
1718 "EventCode": "0xB7, 0xBB",
1719 "MSRValue": "0x5003",
1720 "Counter": "0,1,2,3",
1721 "UMask": "0x1",
1722 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1723 "MSRIndex": "0x1a6,0x1a7",
1724 "SampleAfterValue": "100000",
1725 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1726 "Offcore": "1"
1727 },
1728 {
1729 "EventCode": "0xB7, 0xBB",
1730 "MSRValue": "0x7f03",
1731 "Counter": "0,1,2,3",
1732 "UMask": "0x1",
1733 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_CACHE_DRAM",
1734 "MSRIndex": "0x1a6,0x1a7",
1735 "SampleAfterValue": "100000",
1736 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = ANY_CACHE_DRAM",
1737 "Offcore": "1"
1738 },
1739 {
1740 "EventCode": "0xB7, 0xBB",
1741 "MSRValue": "0xff03",
1742 "Counter": "0,1,2,3",
1743 "UMask": "0x1",
1744 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LOCATION",
1745 "MSRIndex": "0x1a6,0x1a7",
1746 "SampleAfterValue": "100000",
1747 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = ANY_LOCATION",
1748 "Offcore": "1"
1749 },
1750 {
1751 "EventCode": "0xB7, 0xBB",
1752 "MSRValue": "0x8003",
1753 "Counter": "0,1,2,3",
1754 "UMask": "0x1",
1755 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.IO_CSR_MMIO",
1756 "MSRIndex": "0x1a6,0x1a7",
1757 "SampleAfterValue": "100000",
1758 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = IO_CSR_MMIO",
1759 "Offcore": "1"
1760 },
1761 {
1762 "EventCode": "0xB7, 0xBB",
1763 "MSRValue": "0x103",
1764 "Counter": "0,1,2,3",
1765 "UMask": "0x1",
1766 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_NO_OTHER_CORE",
1767 "MSRIndex": "0x1a6,0x1a7",
1768 "SampleAfterValue": "100000",
1769 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1770 "Offcore": "1"
1771 },
1772 {
1773 "EventCode": "0xB7, 0xBB",
1774 "MSRValue": "0x203",
1775 "Counter": "0,1,2,3",
1776 "UMask": "0x1",
1777 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HIT",
1778 "MSRIndex": "0x1a6,0x1a7",
1779 "SampleAfterValue": "100000",
1780 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1781 "Offcore": "1"
1782 },
1783 {
1784 "EventCode": "0xB7, 0xBB",
1785 "MSRValue": "0x403",
1786 "Counter": "0,1,2,3",
1787 "UMask": "0x1",
1788 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HITM",
1789 "MSRIndex": "0x1a6,0x1a7",
1790 "SampleAfterValue": "100000",
1791 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1792 "Offcore": "1"
1793 },
1794 {
1795 "EventCode": "0xB7, 0xBB",
1796 "MSRValue": "0x703",
1797 "Counter": "0,1,2,3",
1798 "UMask": "0x1",
1799 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE",
1800 "MSRIndex": "0x1a6,0x1a7",
1801 "SampleAfterValue": "100000",
1802 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = LOCAL_CACHE",
1803 "Offcore": "1"
1804 },
1805 {
1806 "EventCode": "0xB7, 0xBB",
1807 "MSRValue": "0x1003",
1808 "Counter": "0,1,2,3",
1809 "UMask": "0x1",
1810 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1811 "MSRIndex": "0x1a6,0x1a7",
1812 "SampleAfterValue": "100000",
1813 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1814 "Offcore": "1"
1815 },
1816 {
1817 "EventCode": "0xB7, 0xBB",
1818 "MSRValue": "0x803",
1819 "Counter": "0,1,2,3",
1820 "UMask": "0x1",
1821 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HITM",
1822 "MSRIndex": "0x1a6,0x1a7",
1823 "SampleAfterValue": "100000",
1824 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = REMOTE_CACHE_HITM",
1825 "Offcore": "1"
1826 },
1827 {
1828 "EventCode": "0xB7, 0xBB",
1829 "MSRValue": "0x5001",
1830 "Counter": "0,1,2,3",
1831 "UMask": "0x1",
1832 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1833 "MSRIndex": "0x1a6,0x1a7",
1834 "SampleAfterValue": "100000",
1835 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1836 "Offcore": "1"
1837 },
1838 {
1839 "EventCode": "0xB7, 0xBB",
1840 "MSRValue": "0x7f01",
1841 "Counter": "0,1,2,3",
1842 "UMask": "0x1",
1843 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_CACHE_DRAM",
1844 "MSRIndex": "0x1a6,0x1a7",
1845 "SampleAfterValue": "100000",
1846 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = ANY_CACHE_DRAM",
1847 "Offcore": "1"
1848 },
1849 {
1850 "EventCode": "0xB7, 0xBB",
1851 "MSRValue": "0xff01",
1852 "Counter": "0,1,2,3",
1853 "UMask": "0x1",
1854 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LOCATION",
1855 "MSRIndex": "0x1a6,0x1a7",
1856 "SampleAfterValue": "100000",
1857 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = ANY_LOCATION",
1858 "Offcore": "1"
1859 },
1860 {
1861 "EventCode": "0xB7, 0xBB",
1862 "MSRValue": "0x8001",
1863 "Counter": "0,1,2,3",
1864 "UMask": "0x1",
1865 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.IO_CSR_MMIO",
1866 "MSRIndex": "0x1a6,0x1a7",
1867 "SampleAfterValue": "100000",
1868 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = IO_CSR_MMIO",
1869 "Offcore": "1"
1870 },
1871 {
1872 "EventCode": "0xB7, 0xBB",
1873 "MSRValue": "0x101",
1874 "Counter": "0,1,2,3",
1875 "UMask": "0x1",
1876 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_NO_OTHER_CORE",
1877 "MSRIndex": "0x1a6,0x1a7",
1878 "SampleAfterValue": "100000",
1879 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1880 "Offcore": "1"
1881 },
1882 {
1883 "EventCode": "0xB7, 0xBB",
1884 "MSRValue": "0x201",
1885 "Counter": "0,1,2,3",
1886 "UMask": "0x1",
1887 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
1888 "MSRIndex": "0x1a6,0x1a7",
1889 "SampleAfterValue": "100000",
1890 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
1891 "Offcore": "1"
1892 },
1893 {
1894 "EventCode": "0xB7, 0xBB",
1895 "MSRValue": "0x401",
1896 "Counter": "0,1,2,3",
1897 "UMask": "0x1",
1898 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
1899 "MSRIndex": "0x1a6,0x1a7",
1900 "SampleAfterValue": "100000",
1901 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
1902 "Offcore": "1"
1903 },
1904 {
1905 "EventCode": "0xB7, 0xBB",
1906 "MSRValue": "0x701",
1907 "Counter": "0,1,2,3",
1908 "UMask": "0x1",
1909 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE",
1910 "MSRIndex": "0x1a6,0x1a7",
1911 "SampleAfterValue": "100000",
1912 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = LOCAL_CACHE",
1913 "Offcore": "1"
1914 },
1915 {
1916 "EventCode": "0xB7, 0xBB",
1917 "MSRValue": "0x1001",
1918 "Counter": "0,1,2,3",
1919 "UMask": "0x1",
1920 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1921 "MSRIndex": "0x1a6,0x1a7",
1922 "SampleAfterValue": "100000",
1923 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
1924 "Offcore": "1"
1925 },
1926 {
1927 "EventCode": "0xB7, 0xBB",
1928 "MSRValue": "0x801",
1929 "Counter": "0,1,2,3",
1930 "UMask": "0x1",
1931 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HITM",
1932 "MSRIndex": "0x1a6,0x1a7",
1933 "SampleAfterValue": "100000",
1934 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = REMOTE_CACHE_HITM",
1935 "Offcore": "1"
1936 },
1937 {
1938 "EventCode": "0xB7, 0xBB",
1939 "MSRValue": "0x5004",
1940 "Counter": "0,1,2,3",
1941 "UMask": "0x1",
1942 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
1943 "MSRIndex": "0x1a6,0x1a7",
1944 "SampleAfterValue": "100000",
1945 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
1946 "Offcore": "1"
1947 },
1948 {
1949 "EventCode": "0xB7, 0xBB",
1950 "MSRValue": "0x7f04",
1951 "Counter": "0,1,2,3",
1952 "UMask": "0x1",
1953 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_CACHE_DRAM",
1954 "MSRIndex": "0x1a6,0x1a7",
1955 "SampleAfterValue": "100000",
1956 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = ANY_CACHE_DRAM",
1957 "Offcore": "1"
1958 },
1959 {
1960 "EventCode": "0xB7, 0xBB",
1961 "MSRValue": "0xff04",
1962 "Counter": "0,1,2,3",
1963 "UMask": "0x1",
1964 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LOCATION",
1965 "MSRIndex": "0x1a6,0x1a7",
1966 "SampleAfterValue": "100000",
1967 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = ANY_LOCATION",
1968 "Offcore": "1"
1969 },
1970 {
1971 "EventCode": "0xB7, 0xBB",
1972 "MSRValue": "0x8004",
1973 "Counter": "0,1,2,3",
1974 "UMask": "0x1",
1975 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.IO_CSR_MMIO",
1976 "MSRIndex": "0x1a6,0x1a7",
1977 "SampleAfterValue": "100000",
1978 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = IO_CSR_MMIO",
1979 "Offcore": "1"
1980 },
1981 {
1982 "EventCode": "0xB7, 0xBB",
1983 "MSRValue": "0x104",
1984 "Counter": "0,1,2,3",
1985 "UMask": "0x1",
1986 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_NO_OTHER_CORE",
1987 "MSRIndex": "0x1a6,0x1a7",
1988 "SampleAfterValue": "100000",
1989 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = LLC_HIT_NO_OTHER_CORE",
1990 "Offcore": "1"
1991 },
1992 {
1993 "EventCode": "0xB7, 0xBB",
1994 "MSRValue": "0x204",
1995 "Counter": "0,1,2,3",
1996 "UMask": "0x1",
1997 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1998 "MSRIndex": "0x1a6,0x1a7",
1999 "SampleAfterValue": "100000",
2000 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2001 "Offcore": "1"
2002 },
2003 {
2004 "EventCode": "0xB7, 0xBB",
2005 "MSRValue": "0x404",
2006 "Counter": "0,1,2,3",
2007 "UMask": "0x1",
2008 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2009 "MSRIndex": "0x1a6,0x1a7",
2010 "SampleAfterValue": "100000",
2011 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2012 "Offcore": "1"
2013 },
2014 {
2015 "EventCode": "0xB7, 0xBB",
2016 "MSRValue": "0x704",
2017 "Counter": "0,1,2,3",
2018 "UMask": "0x1",
2019 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE",
2020 "MSRIndex": "0x1a6,0x1a7",
2021 "SampleAfterValue": "100000",
2022 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = LOCAL_CACHE",
2023 "Offcore": "1"
2024 },
2025 {
2026 "EventCode": "0xB7, 0xBB",
2027 "MSRValue": "0x1004",
2028 "Counter": "0,1,2,3",
2029 "UMask": "0x1",
2030 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2031 "MSRIndex": "0x1a6,0x1a7",
2032 "SampleAfterValue": "100000",
2033 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2034 "Offcore": "1"
2035 },
2036 {
2037 "EventCode": "0xB7, 0xBB",
2038 "MSRValue": "0x804",
2039 "Counter": "0,1,2,3",
2040 "UMask": "0x1",
2041 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HITM",
2042 "MSRIndex": "0x1a6,0x1a7",
2043 "SampleAfterValue": "100000",
2044 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = REMOTE_CACHE_HITM",
2045 "Offcore": "1"
2046 },
2047 {
2048 "EventCode": "0xB7, 0xBB",
2049 "MSRValue": "0x5002",
2050 "Counter": "0,1,2,3",
2051 "UMask": "0x1",
2052 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2053 "MSRIndex": "0x1a6,0x1a7",
2054 "SampleAfterValue": "100000",
2055 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
2056 "Offcore": "1"
2057 },
2058 {
2059 "EventCode": "0xB7, 0xBB",
2060 "MSRValue": "0x7f02",
2061 "Counter": "0,1,2,3",
2062 "UMask": "0x1",
2063 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_CACHE_DRAM",
2064 "MSRIndex": "0x1a6,0x1a7",
2065 "SampleAfterValue": "100000",
2066 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = ANY_CACHE_DRAM",
2067 "Offcore": "1"
2068 },
2069 {
2070 "EventCode": "0xB7, 0xBB",
2071 "MSRValue": "0xff02",
2072 "Counter": "0,1,2,3",
2073 "UMask": "0x1",
2074 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LOCATION",
2075 "MSRIndex": "0x1a6,0x1a7",
2076 "SampleAfterValue": "100000",
2077 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = ANY_LOCATION",
2078 "Offcore": "1"
2079 },
2080 {
2081 "EventCode": "0xB7, 0xBB",
2082 "MSRValue": "0x8002",
2083 "Counter": "0,1,2,3",
2084 "UMask": "0x1",
2085 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.IO_CSR_MMIO",
2086 "MSRIndex": "0x1a6,0x1a7",
2087 "SampleAfterValue": "100000",
2088 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = IO_CSR_MMIO",
2089 "Offcore": "1"
2090 },
2091 {
2092 "EventCode": "0xB7, 0xBB",
2093 "MSRValue": "0x102",
2094 "Counter": "0,1,2,3",
2095 "UMask": "0x1",
2096 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_NO_OTHER_CORE",
2097 "MSRIndex": "0x1a6,0x1a7",
2098 "SampleAfterValue": "100000",
2099 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = LLC_HIT_NO_OTHER_CORE",
2100 "Offcore": "1"
2101 },
2102 {
2103 "EventCode": "0xB7, 0xBB",
2104 "MSRValue": "0x202",
2105 "Counter": "0,1,2,3",
2106 "UMask": "0x1",
2107 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HIT",
2108 "MSRIndex": "0x1a6,0x1a7",
2109 "SampleAfterValue": "100000",
2110 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2111 "Offcore": "1"
2112 },
2113 {
2114 "EventCode": "0xB7, 0xBB",
2115 "MSRValue": "0x402",
2116 "Counter": "0,1,2,3",
2117 "UMask": "0x1",
2118 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HITM",
2119 "MSRIndex": "0x1a6,0x1a7",
2120 "SampleAfterValue": "100000",
2121 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2122 "Offcore": "1"
2123 },
2124 {
2125 "EventCode": "0xB7, 0xBB",
2126 "MSRValue": "0x702",
2127 "Counter": "0,1,2,3",
2128 "UMask": "0x1",
2129 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE",
2130 "MSRIndex": "0x1a6,0x1a7",
2131 "SampleAfterValue": "100000",
2132 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = LOCAL_CACHE",
2133 "Offcore": "1"
2134 },
2135 {
2136 "EventCode": "0xB7, 0xBB",
2137 "MSRValue": "0x1002",
2138 "Counter": "0,1,2,3",
2139 "UMask": "0x1",
2140 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2141 "MSRIndex": "0x1a6,0x1a7",
2142 "SampleAfterValue": "100000",
2143 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2144 "Offcore": "1"
2145 },
2146 {
2147 "EventCode": "0xB7, 0xBB",
2148 "MSRValue": "0x802",
2149 "Counter": "0,1,2,3",
2150 "UMask": "0x1",
2151 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HITM",
2152 "MSRIndex": "0x1a6,0x1a7",
2153 "SampleAfterValue": "100000",
2154 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = REMOTE_CACHE_HITM",
2155 "Offcore": "1"
2156 },
2157 {
2158 "EventCode": "0xB7, 0xBB",
2159 "MSRValue": "0x5080",
2160 "Counter": "0,1,2,3",
2161 "UMask": "0x1",
2162 "EventName": "OFFCORE_RESPONSE.OTHER.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2163 "MSRIndex": "0x1a6,0x1a7",
2164 "SampleAfterValue": "100000",
2165 "BriefDescription": "REQUEST = OTHER and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
2166 "Offcore": "1"
2167 },
2168 {
2169 "EventCode": "0xB7, 0xBB",
2170 "MSRValue": "0x7f80",
2171 "Counter": "0,1,2,3",
2172 "UMask": "0x1",
2173 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_CACHE_DRAM",
2174 "MSRIndex": "0x1a6,0x1a7",
2175 "SampleAfterValue": "100000",
2176 "BriefDescription": "REQUEST = OTHER and RESPONSE = ANY_CACHE_DRAM",
2177 "Offcore": "1"
2178 },
2179 {
2180 "EventCode": "0xB7, 0xBB",
2181 "MSRValue": "0xff80",
2182 "Counter": "0,1,2,3",
2183 "UMask": "0x1",
2184 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LOCATION",
2185 "MSRIndex": "0x1a6,0x1a7",
2186 "SampleAfterValue": "100000",
2187 "BriefDescription": "REQUEST = OTHER and RESPONSE = ANY_LOCATION",
2188 "Offcore": "1"
2189 },
2190 {
2191 "EventCode": "0xB7, 0xBB",
2192 "MSRValue": "0x8080",
2193 "Counter": "0,1,2,3",
2194 "UMask": "0x1",
2195 "EventName": "OFFCORE_RESPONSE.OTHER.IO_CSR_MMIO",
2196 "MSRIndex": "0x1a6,0x1a7",
2197 "SampleAfterValue": "100000",
2198 "BriefDescription": "REQUEST = OTHER and RESPONSE = IO_CSR_MMIO",
2199 "Offcore": "1"
2200 },
2201 {
2202 "EventCode": "0xB7, 0xBB",
2203 "MSRValue": "0x180",
2204 "Counter": "0,1,2,3",
2205 "UMask": "0x1",
2206 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_NO_OTHER_CORE",
2207 "MSRIndex": "0x1a6,0x1a7",
2208 "SampleAfterValue": "100000",
2209 "BriefDescription": "REQUEST = OTHER and RESPONSE = LLC_HIT_NO_OTHER_CORE",
2210 "Offcore": "1"
2211 },
2212 {
2213 "EventCode": "0xB7, 0xBB",
2214 "MSRValue": "0x280",
2215 "Counter": "0,1,2,3",
2216 "UMask": "0x1",
2217 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HIT",
2218 "MSRIndex": "0x1a6,0x1a7",
2219 "SampleAfterValue": "100000",
2220 "BriefDescription": "REQUEST = OTHER and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2221 "Offcore": "1"
2222 },
2223 {
2224 "EventCode": "0xB7, 0xBB",
2225 "MSRValue": "0x480",
2226 "Counter": "0,1,2,3",
2227 "UMask": "0x1",
2228 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HITM",
2229 "MSRIndex": "0x1a6,0x1a7",
2230 "SampleAfterValue": "100000",
2231 "BriefDescription": "REQUEST = OTHER and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2232 "Offcore": "1"
2233 },
2234 {
2235 "EventCode": "0xB7, 0xBB",
2236 "MSRValue": "0x780",
2237 "Counter": "0,1,2,3",
2238 "UMask": "0x1",
2239 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE",
2240 "MSRIndex": "0x1a6,0x1a7",
2241 "SampleAfterValue": "100000",
2242 "BriefDescription": "REQUEST = OTHER and RESPONSE = LOCAL_CACHE",
2243 "Offcore": "1"
2244 },
2245 {
2246 "EventCode": "0xB7, 0xBB",
2247 "MSRValue": "0x1080",
2248 "Counter": "0,1,2,3",
2249 "UMask": "0x1",
2250 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2251 "MSRIndex": "0x1a6,0x1a7",
2252 "SampleAfterValue": "100000",
2253 "BriefDescription": "REQUEST = OTHER and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2254 "Offcore": "1"
2255 },
2256 {
2257 "EventCode": "0xB7, 0xBB",
2258 "MSRValue": "0x880",
2259 "Counter": "0,1,2,3",
2260 "UMask": "0x1",
2261 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HITM",
2262 "MSRIndex": "0x1a6,0x1a7",
2263 "SampleAfterValue": "100000",
2264 "BriefDescription": "REQUEST = OTHER and RESPONSE = REMOTE_CACHE_HITM",
2265 "Offcore": "1"
2266 },
2267 {
2268 "EventCode": "0xB7, 0xBB",
2269 "MSRValue": "0x5050",
2270 "Counter": "0,1,2,3",
2271 "UMask": "0x1",
2272 "EventName": "OFFCORE_RESPONSE.PF_DATA.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2273 "MSRIndex": "0x1a6,0x1a7",
2274 "SampleAfterValue": "100000",
2275 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
2276 "Offcore": "1"
2277 },
2278 {
2279 "EventCode": "0xB7, 0xBB",
2280 "MSRValue": "0x7f50",
2281 "Counter": "0,1,2,3",
2282 "UMask": "0x1",
2283 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_CACHE_DRAM",
2284 "MSRIndex": "0x1a6,0x1a7",
2285 "SampleAfterValue": "100000",
2286 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = ANY_CACHE_DRAM",
2287 "Offcore": "1"
2288 },
2289 {
2290 "EventCode": "0xB7, 0xBB",
2291 "MSRValue": "0xff50",
2292 "Counter": "0,1,2,3",
2293 "UMask": "0x1",
2294 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LOCATION",
2295 "MSRIndex": "0x1a6,0x1a7",
2296 "SampleAfterValue": "100000",
2297 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = ANY_LOCATION",
2298 "Offcore": "1"
2299 },
2300 {
2301 "EventCode": "0xB7, 0xBB",
2302 "MSRValue": "0x8050",
2303 "Counter": "0,1,2,3",
2304 "UMask": "0x1",
2305 "EventName": "OFFCORE_RESPONSE.PF_DATA.IO_CSR_MMIO",
2306 "MSRIndex": "0x1a6,0x1a7",
2307 "SampleAfterValue": "100000",
2308 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = IO_CSR_MMIO",
2309 "Offcore": "1"
2310 },
2311 {
2312 "EventCode": "0xB7, 0xBB",
2313 "MSRValue": "0x150",
2314 "Counter": "0,1,2,3",
2315 "UMask": "0x1",
2316 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_NO_OTHER_CORE",
2317 "MSRIndex": "0x1a6,0x1a7",
2318 "SampleAfterValue": "100000",
2319 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = LLC_HIT_NO_OTHER_CORE",
2320 "Offcore": "1"
2321 },
2322 {
2323 "EventCode": "0xB7, 0xBB",
2324 "MSRValue": "0x250",
2325 "Counter": "0,1,2,3",
2326 "UMask": "0x1",
2327 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HIT",
2328 "MSRIndex": "0x1a6,0x1a7",
2329 "SampleAfterValue": "100000",
2330 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2331 "Offcore": "1"
2332 },
2333 {
2334 "EventCode": "0xB7, 0xBB",
2335 "MSRValue": "0x450",
2336 "Counter": "0,1,2,3",
2337 "UMask": "0x1",
2338 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HITM",
2339 "MSRIndex": "0x1a6,0x1a7",
2340 "SampleAfterValue": "100000",
2341 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2342 "Offcore": "1"
2343 },
2344 {
2345 "EventCode": "0xB7, 0xBB",
2346 "MSRValue": "0x750",
2347 "Counter": "0,1,2,3",
2348 "UMask": "0x1",
2349 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE",
2350 "MSRIndex": "0x1a6,0x1a7",
2351 "SampleAfterValue": "100000",
2352 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = LOCAL_CACHE",
2353 "Offcore": "1"
2354 },
2355 {
2356 "EventCode": "0xB7, 0xBB",
2357 "MSRValue": "0x1050",
2358 "Counter": "0,1,2,3",
2359 "UMask": "0x1",
2360 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2361 "MSRIndex": "0x1a6,0x1a7",
2362 "SampleAfterValue": "100000",
2363 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2364 "Offcore": "1"
2365 },
2366 {
2367 "EventCode": "0xB7, 0xBB",
2368 "MSRValue": "0x850",
2369 "Counter": "0,1,2,3",
2370 "UMask": "0x1",
2371 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HITM",
2372 "MSRIndex": "0x1a6,0x1a7",
2373 "SampleAfterValue": "100000",
2374 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = REMOTE_CACHE_HITM",
2375 "Offcore": "1"
2376 },
2377 {
2378 "EventCode": "0xB7, 0xBB",
2379 "MSRValue": "0x5010",
2380 "Counter": "0,1,2,3",
2381 "UMask": "0x1",
2382 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2383 "MSRIndex": "0x1a6,0x1a7",
2384 "SampleAfterValue": "100000",
2385 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
2386 "Offcore": "1"
2387 },
2388 {
2389 "EventCode": "0xB7, 0xBB",
2390 "MSRValue": "0x7f10",
2391 "Counter": "0,1,2,3",
2392 "UMask": "0x1",
2393 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_CACHE_DRAM",
2394 "MSRIndex": "0x1a6,0x1a7",
2395 "SampleAfterValue": "100000",
2396 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = ANY_CACHE_DRAM",
2397 "Offcore": "1"
2398 },
2399 {
2400 "EventCode": "0xB7, 0xBB",
2401 "MSRValue": "0xff10",
2402 "Counter": "0,1,2,3",
2403 "UMask": "0x1",
2404 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LOCATION",
2405 "MSRIndex": "0x1a6,0x1a7",
2406 "SampleAfterValue": "100000",
2407 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = ANY_LOCATION",
2408 "Offcore": "1"
2409 },
2410 {
2411 "EventCode": "0xB7, 0xBB",
2412 "MSRValue": "0x8010",
2413 "Counter": "0,1,2,3",
2414 "UMask": "0x1",
2415 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.IO_CSR_MMIO",
2416 "MSRIndex": "0x1a6,0x1a7",
2417 "SampleAfterValue": "100000",
2418 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = IO_CSR_MMIO",
2419 "Offcore": "1"
2420 },
2421 {
2422 "EventCode": "0xB7, 0xBB",
2423 "MSRValue": "0x110",
2424 "Counter": "0,1,2,3",
2425 "UMask": "0x1",
2426 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2427 "MSRIndex": "0x1a6,0x1a7",
2428 "SampleAfterValue": "100000",
2429 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = LLC_HIT_NO_OTHER_CORE",
2430 "Offcore": "1"
2431 },
2432 {
2433 "EventCode": "0xB7, 0xBB",
2434 "MSRValue": "0x210",
2435 "Counter": "0,1,2,3",
2436 "UMask": "0x1",
2437 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2438 "MSRIndex": "0x1a6,0x1a7",
2439 "SampleAfterValue": "100000",
2440 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2441 "Offcore": "1"
2442 },
2443 {
2444 "EventCode": "0xB7, 0xBB",
2445 "MSRValue": "0x410",
2446 "Counter": "0,1,2,3",
2447 "UMask": "0x1",
2448 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2449 "MSRIndex": "0x1a6,0x1a7",
2450 "SampleAfterValue": "100000",
2451 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2452 "Offcore": "1"
2453 },
2454 {
2455 "EventCode": "0xB7, 0xBB",
2456 "MSRValue": "0x710",
2457 "Counter": "0,1,2,3",
2458 "UMask": "0x1",
2459 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE",
2460 "MSRIndex": "0x1a6,0x1a7",
2461 "SampleAfterValue": "100000",
2462 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = LOCAL_CACHE",
2463 "Offcore": "1"
2464 },
2465 {
2466 "EventCode": "0xB7, 0xBB",
2467 "MSRValue": "0x1010",
2468 "Counter": "0,1,2,3",
2469 "UMask": "0x1",
2470 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2471 "MSRIndex": "0x1a6,0x1a7",
2472 "SampleAfterValue": "100000",
2473 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2474 "Offcore": "1"
2475 },
2476 {
2477 "EventCode": "0xB7, 0xBB",
2478 "MSRValue": "0x810",
2479 "Counter": "0,1,2,3",
2480 "UMask": "0x1",
2481 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HITM",
2482 "MSRIndex": "0x1a6,0x1a7",
2483 "SampleAfterValue": "100000",
2484 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = REMOTE_CACHE_HITM",
2485 "Offcore": "1"
2486 },
2487 {
2488 "EventCode": "0xB7, 0xBB",
2489 "MSRValue": "0x5040",
2490 "Counter": "0,1,2,3",
2491 "UMask": "0x1",
2492 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2493 "MSRIndex": "0x1a6,0x1a7",
2494 "SampleAfterValue": "100000",
2495 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
2496 "Offcore": "1"
2497 },
2498 {
2499 "EventCode": "0xB7, 0xBB",
2500 "MSRValue": "0x7f40",
2501 "Counter": "0,1,2,3",
2502 "UMask": "0x1",
2503 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_CACHE_DRAM",
2504 "MSRIndex": "0x1a6,0x1a7",
2505 "SampleAfterValue": "100000",
2506 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = ANY_CACHE_DRAM",
2507 "Offcore": "1"
2508 },
2509 {
2510 "EventCode": "0xB7, 0xBB",
2511 "MSRValue": "0xff40",
2512 "Counter": "0,1,2,3",
2513 "UMask": "0x1",
2514 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LOCATION",
2515 "MSRIndex": "0x1a6,0x1a7",
2516 "SampleAfterValue": "100000",
2517 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = ANY_LOCATION",
2518 "Offcore": "1"
2519 },
2520 {
2521 "EventCode": "0xB7, 0xBB",
2522 "MSRValue": "0x8040",
2523 "Counter": "0,1,2,3",
2524 "UMask": "0x1",
2525 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.IO_CSR_MMIO",
2526 "MSRIndex": "0x1a6,0x1a7",
2527 "SampleAfterValue": "100000",
2528 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = IO_CSR_MMIO",
2529 "Offcore": "1"
2530 },
2531 {
2532 "EventCode": "0xB7, 0xBB",
2533 "MSRValue": "0x140",
2534 "Counter": "0,1,2,3",
2535 "UMask": "0x1",
2536 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_NO_OTHER_CORE",
2537 "MSRIndex": "0x1a6,0x1a7",
2538 "SampleAfterValue": "100000",
2539 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = LLC_HIT_NO_OTHER_CORE",
2540 "Offcore": "1"
2541 },
2542 {
2543 "EventCode": "0xB7, 0xBB",
2544 "MSRValue": "0x240",
2545 "Counter": "0,1,2,3",
2546 "UMask": "0x1",
2547 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2548 "MSRIndex": "0x1a6,0x1a7",
2549 "SampleAfterValue": "100000",
2550 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2551 "Offcore": "1"
2552 },
2553 {
2554 "EventCode": "0xB7, 0xBB",
2555 "MSRValue": "0x440",
2556 "Counter": "0,1,2,3",
2557 "UMask": "0x1",
2558 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2559 "MSRIndex": "0x1a6,0x1a7",
2560 "SampleAfterValue": "100000",
2561 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2562 "Offcore": "1"
2563 },
2564 {
2565 "EventCode": "0xB7, 0xBB",
2566 "MSRValue": "0x740",
2567 "Counter": "0,1,2,3",
2568 "UMask": "0x1",
2569 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE",
2570 "MSRIndex": "0x1a6,0x1a7",
2571 "SampleAfterValue": "100000",
2572 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = LOCAL_CACHE",
2573 "Offcore": "1"
2574 },
2575 {
2576 "EventCode": "0xB7, 0xBB",
2577 "MSRValue": "0x1040",
2578 "Counter": "0,1,2,3",
2579 "UMask": "0x1",
2580 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2581 "MSRIndex": "0x1a6,0x1a7",
2582 "SampleAfterValue": "100000",
2583 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2584 "Offcore": "1"
2585 },
2586 {
2587 "EventCode": "0xB7, 0xBB",
2588 "MSRValue": "0x840",
2589 "Counter": "0,1,2,3",
2590 "UMask": "0x1",
2591 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HITM",
2592 "MSRIndex": "0x1a6,0x1a7",
2593 "SampleAfterValue": "100000",
2594 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = REMOTE_CACHE_HITM",
2595 "Offcore": "1"
2596 },
2597 {
2598 "EventCode": "0xB7, 0xBB",
2599 "MSRValue": "0x5020",
2600 "Counter": "0,1,2,3",
2601 "UMask": "0x1",
2602 "EventName": "OFFCORE_RESPONSE.PF_RFO.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2603 "MSRIndex": "0x1a6,0x1a7",
2604 "SampleAfterValue": "100000",
2605 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
2606 "Offcore": "1"
2607 },
2608 {
2609 "EventCode": "0xB7, 0xBB",
2610 "MSRValue": "0x7f20",
2611 "Counter": "0,1,2,3",
2612 "UMask": "0x1",
2613 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_CACHE_DRAM",
2614 "MSRIndex": "0x1a6,0x1a7",
2615 "SampleAfterValue": "100000",
2616 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = ANY_CACHE_DRAM",
2617 "Offcore": "1"
2618 },
2619 {
2620 "EventCode": "0xB7, 0xBB",
2621 "MSRValue": "0xff20",
2622 "Counter": "0,1,2,3",
2623 "UMask": "0x1",
2624 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LOCATION",
2625 "MSRIndex": "0x1a6,0x1a7",
2626 "SampleAfterValue": "100000",
2627 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = ANY_LOCATION",
2628 "Offcore": "1"
2629 },
2630 {
2631 "EventCode": "0xB7, 0xBB",
2632 "MSRValue": "0x8020",
2633 "Counter": "0,1,2,3",
2634 "UMask": "0x1",
2635 "EventName": "OFFCORE_RESPONSE.PF_RFO.IO_CSR_MMIO",
2636 "MSRIndex": "0x1a6,0x1a7",
2637 "SampleAfterValue": "100000",
2638 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = IO_CSR_MMIO",
2639 "Offcore": "1"
2640 },
2641 {
2642 "EventCode": "0xB7, 0xBB",
2643 "MSRValue": "0x120",
2644 "Counter": "0,1,2,3",
2645 "UMask": "0x1",
2646 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_NO_OTHER_CORE",
2647 "MSRIndex": "0x1a6,0x1a7",
2648 "SampleAfterValue": "100000",
2649 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = LLC_HIT_NO_OTHER_CORE",
2650 "Offcore": "1"
2651 },
2652 {
2653 "EventCode": "0xB7, 0xBB",
2654 "MSRValue": "0x220",
2655 "Counter": "0,1,2,3",
2656 "UMask": "0x1",
2657 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HIT",
2658 "MSRIndex": "0x1a6,0x1a7",
2659 "SampleAfterValue": "100000",
2660 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2661 "Offcore": "1"
2662 },
2663 {
2664 "EventCode": "0xB7, 0xBB",
2665 "MSRValue": "0x420",
2666 "Counter": "0,1,2,3",
2667 "UMask": "0x1",
2668 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HITM",
2669 "MSRIndex": "0x1a6,0x1a7",
2670 "SampleAfterValue": "100000",
2671 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2672 "Offcore": "1"
2673 },
2674 {
2675 "EventCode": "0xB7, 0xBB",
2676 "MSRValue": "0x720",
2677 "Counter": "0,1,2,3",
2678 "UMask": "0x1",
2679 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE",
2680 "MSRIndex": "0x1a6,0x1a7",
2681 "SampleAfterValue": "100000",
2682 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = LOCAL_CACHE",
2683 "Offcore": "1"
2684 },
2685 {
2686 "EventCode": "0xB7, 0xBB",
2687 "MSRValue": "0x1020",
2688 "Counter": "0,1,2,3",
2689 "UMask": "0x1",
2690 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2691 "MSRIndex": "0x1a6,0x1a7",
2692 "SampleAfterValue": "100000",
2693 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2694 "Offcore": "1"
2695 },
2696 {
2697 "EventCode": "0xB7, 0xBB",
2698 "MSRValue": "0x820",
2699 "Counter": "0,1,2,3",
2700 "UMask": "0x1",
2701 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HITM",
2702 "MSRIndex": "0x1a6,0x1a7",
2703 "SampleAfterValue": "100000",
2704 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = REMOTE_CACHE_HITM",
2705 "Offcore": "1"
2706 },
2707 {
2708 "EventCode": "0xB7, 0xBB",
2709 "MSRValue": "0x5070",
2710 "Counter": "0,1,2,3",
2711 "UMask": "0x1",
2712 "EventName": "OFFCORE_RESPONSE.PREFETCH.ALL_LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2713 "MSRIndex": "0x1a6,0x1a7",
2714 "SampleAfterValue": "100000",
2715 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = ALL_LOCAL_DRAM AND REMOTE_CACHE_HIT",
2716 "Offcore": "1"
2717 },
2718 {
2719 "EventCode": "0xB7, 0xBB",
2720 "MSRValue": "0x7f70",
2721 "Counter": "0,1,2,3",
2722 "UMask": "0x1",
2723 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_CACHE_DRAM",
2724 "MSRIndex": "0x1a6,0x1a7",
2725 "SampleAfterValue": "100000",
2726 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = ANY_CACHE_DRAM",
2727 "Offcore": "1"
2728 },
2729 {
2730 "EventCode": "0xB7, 0xBB",
2731 "MSRValue": "0xff70",
2732 "Counter": "0,1,2,3",
2733 "UMask": "0x1",
2734 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LOCATION",
2735 "MSRIndex": "0x1a6,0x1a7",
2736 "SampleAfterValue": "100000",
2737 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = ANY_LOCATION",
2738 "Offcore": "1"
2739 },
2740 {
2741 "EventCode": "0xB7, 0xBB",
2742 "MSRValue": "0x8070",
2743 "Counter": "0,1,2,3",
2744 "UMask": "0x1",
2745 "EventName": "OFFCORE_RESPONSE.PREFETCH.IO_CSR_MMIO",
2746 "MSRIndex": "0x1a6,0x1a7",
2747 "SampleAfterValue": "100000",
2748 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = IO_CSR_MMIO",
2749 "Offcore": "1"
2750 },
2751 {
2752 "EventCode": "0xB7, 0xBB",
2753 "MSRValue": "0x170",
2754 "Counter": "0,1,2,3",
2755 "UMask": "0x1",
2756 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_NO_OTHER_CORE",
2757 "MSRIndex": "0x1a6,0x1a7",
2758 "SampleAfterValue": "100000",
2759 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = LLC_HIT_NO_OTHER_CORE",
2760 "Offcore": "1"
2761 },
2762 {
2763 "EventCode": "0xB7, 0xBB",
2764 "MSRValue": "0x270",
2765 "Counter": "0,1,2,3",
2766 "UMask": "0x1",
2767 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HIT",
2768 "MSRIndex": "0x1a6,0x1a7",
2769 "SampleAfterValue": "100000",
2770 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HIT",
2771 "Offcore": "1"
2772 },
2773 {
2774 "EventCode": "0xB7, 0xBB",
2775 "MSRValue": "0x470",
2776 "Counter": "0,1,2,3",
2777 "UMask": "0x1",
2778 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HITM",
2779 "MSRIndex": "0x1a6,0x1a7",
2780 "SampleAfterValue": "100000",
2781 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = LLC_HIT_OTHER_CORE_HITM",
2782 "Offcore": "1"
2783 },
2784 {
2785 "EventCode": "0xB7, 0xBB",
2786 "MSRValue": "0x770",
2787 "Counter": "0,1,2,3",
2788 "UMask": "0x1",
2789 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE",
2790 "MSRIndex": "0x1a6,0x1a7",
2791 "SampleAfterValue": "100000",
2792 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = LOCAL_CACHE",
2793 "Offcore": "1"
2794 },
2795 {
2796 "EventCode": "0xB7, 0xBB",
2797 "MSRValue": "0x1070",
2798 "Counter": "0,1,2,3",
2799 "UMask": "0x1",
2800 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
2801 "MSRIndex": "0x1a6,0x1a7",
2802 "SampleAfterValue": "100000",
2803 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = LOCAL_DRAM AND REMOTE_CACHE_HIT",
2804 "Offcore": "1"
2805 },
2806 {
2807 "EventCode": "0xB7, 0xBB",
2808 "MSRValue": "0x870",
2809 "Counter": "0,1,2,3",
2810 "UMask": "0x1",
2811 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HITM",
2812 "MSRIndex": "0x1a6,0x1a7",
2813 "SampleAfterValue": "100000",
2814 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = REMOTE_CACHE_HITM",
2815 "Offcore": "1"
2816 }
2817] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-dp/floating-point.json b/tools/perf/pmu-events/arch/x86/westmereep-dp/floating-point.json
new file mode 100644
index 000000000000..7d2f71a9dee3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-dp/floating-point.json
@@ -0,0 +1,229 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xF7",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "FP_ASSIST.ALL",
8 "SampleAfterValue": "20000",
9 "BriefDescription": "X87 Floating point assists (Precise Event)"
10 },
11 {
12 "PEBS": "1",
13 "EventCode": "0xF7",
14 "Counter": "0,1,2,3",
15 "UMask": "0x4",
16 "EventName": "FP_ASSIST.INPUT",
17 "SampleAfterValue": "20000",
18 "BriefDescription": "X87 Floating poiint assists for invalid input value (Precise Event)"
19 },
20 {
21 "PEBS": "1",
22 "EventCode": "0xF7",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "FP_ASSIST.OUTPUT",
26 "SampleAfterValue": "20000",
27 "BriefDescription": "X87 Floating point assists for invalid output value (Precise Event)"
28 },
29 {
30 "EventCode": "0x10",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "FP_COMP_OPS_EXE.MMX",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "MMX Uops"
36 },
37 {
38 "EventCode": "0x10",
39 "Counter": "0,1,2,3",
40 "UMask": "0x80",
41 "EventName": "FP_COMP_OPS_EXE.SSE_DOUBLE_PRECISION",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "SSE* FP double precision Uops"
44 },
45 {
46 "EventCode": "0x10",
47 "Counter": "0,1,2,3",
48 "UMask": "0x4",
49 "EventName": "FP_COMP_OPS_EXE.SSE_FP",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "SSE and SSE2 FP Uops"
52 },
53 {
54 "EventCode": "0x10",
55 "Counter": "0,1,2,3",
56 "UMask": "0x10",
57 "EventName": "FP_COMP_OPS_EXE.SSE_FP_PACKED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "SSE FP packed Uops"
60 },
61 {
62 "EventCode": "0x10",
63 "Counter": "0,1,2,3",
64 "UMask": "0x20",
65 "EventName": "FP_COMP_OPS_EXE.SSE_FP_SCALAR",
66 "SampleAfterValue": "2000000",
67 "BriefDescription": "SSE FP scalar Uops"
68 },
69 {
70 "EventCode": "0x10",
71 "Counter": "0,1,2,3",
72 "UMask": "0x40",
73 "EventName": "FP_COMP_OPS_EXE.SSE_SINGLE_PRECISION",
74 "SampleAfterValue": "2000000",
75 "BriefDescription": "SSE* FP single precision Uops"
76 },
77 {
78 "EventCode": "0x10",
79 "Counter": "0,1,2,3",
80 "UMask": "0x8",
81 "EventName": "FP_COMP_OPS_EXE.SSE2_INTEGER",
82 "SampleAfterValue": "2000000",
83 "BriefDescription": "SSE2 integer Uops"
84 },
85 {
86 "EventCode": "0x10",
87 "Counter": "0,1,2,3",
88 "UMask": "0x1",
89 "EventName": "FP_COMP_OPS_EXE.X87",
90 "SampleAfterValue": "2000000",
91 "BriefDescription": "Computational floating-point operations executed"
92 },
93 {
94 "EventCode": "0xCC",
95 "Counter": "0,1,2,3",
96 "UMask": "0x3",
97 "EventName": "FP_MMX_TRANS.ANY",
98 "SampleAfterValue": "2000000",
99 "BriefDescription": "All Floating Point to and from MMX transitions"
100 },
101 {
102 "EventCode": "0xCC",
103 "Counter": "0,1,2,3",
104 "UMask": "0x1",
105 "EventName": "FP_MMX_TRANS.TO_FP",
106 "SampleAfterValue": "2000000",
107 "BriefDescription": "Transitions from MMX to Floating Point instructions"
108 },
109 {
110 "EventCode": "0xCC",
111 "Counter": "0,1,2,3",
112 "UMask": "0x2",
113 "EventName": "FP_MMX_TRANS.TO_MMX",
114 "SampleAfterValue": "2000000",
115 "BriefDescription": "Transitions from Floating Point to MMX instructions"
116 },
117 {
118 "EventCode": "0x12",
119 "Counter": "0,1,2,3",
120 "UMask": "0x4",
121 "EventName": "SIMD_INT_128.PACK",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "128 bit SIMD integer pack operations"
124 },
125 {
126 "EventCode": "0x12",
127 "Counter": "0,1,2,3",
128 "UMask": "0x20",
129 "EventName": "SIMD_INT_128.PACKED_ARITH",
130 "SampleAfterValue": "200000",
131 "BriefDescription": "128 bit SIMD integer arithmetic operations"
132 },
133 {
134 "EventCode": "0x12",
135 "Counter": "0,1,2,3",
136 "UMask": "0x10",
137 "EventName": "SIMD_INT_128.PACKED_LOGICAL",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "128 bit SIMD integer logical operations"
140 },
141 {
142 "EventCode": "0x12",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1",
145 "EventName": "SIMD_INT_128.PACKED_MPY",
146 "SampleAfterValue": "200000",
147 "BriefDescription": "128 bit SIMD integer multiply operations"
148 },
149 {
150 "EventCode": "0x12",
151 "Counter": "0,1,2,3",
152 "UMask": "0x2",
153 "EventName": "SIMD_INT_128.PACKED_SHIFT",
154 "SampleAfterValue": "200000",
155 "BriefDescription": "128 bit SIMD integer shift operations"
156 },
157 {
158 "EventCode": "0x12",
159 "Counter": "0,1,2,3",
160 "UMask": "0x40",
161 "EventName": "SIMD_INT_128.SHUFFLE_MOVE",
162 "SampleAfterValue": "200000",
163 "BriefDescription": "128 bit SIMD integer shuffle/move operations"
164 },
165 {
166 "EventCode": "0x12",
167 "Counter": "0,1,2,3",
168 "UMask": "0x8",
169 "EventName": "SIMD_INT_128.UNPACK",
170 "SampleAfterValue": "200000",
171 "BriefDescription": "128 bit SIMD integer unpack operations"
172 },
173 {
174 "EventCode": "0xFD",
175 "Counter": "0,1,2,3",
176 "UMask": "0x4",
177 "EventName": "SIMD_INT_64.PACK",
178 "SampleAfterValue": "200000",
179 "BriefDescription": "SIMD integer 64 bit pack operations"
180 },
181 {
182 "EventCode": "0xFD",
183 "Counter": "0,1,2,3",
184 "UMask": "0x20",
185 "EventName": "SIMD_INT_64.PACKED_ARITH",
186 "SampleAfterValue": "200000",
187 "BriefDescription": "SIMD integer 64 bit arithmetic operations"
188 },
189 {
190 "EventCode": "0xFD",
191 "Counter": "0,1,2,3",
192 "UMask": "0x10",
193 "EventName": "SIMD_INT_64.PACKED_LOGICAL",
194 "SampleAfterValue": "200000",
195 "BriefDescription": "SIMD integer 64 bit logical operations"
196 },
197 {
198 "EventCode": "0xFD",
199 "Counter": "0,1,2,3",
200 "UMask": "0x1",
201 "EventName": "SIMD_INT_64.PACKED_MPY",
202 "SampleAfterValue": "200000",
203 "BriefDescription": "SIMD integer 64 bit packed multiply operations"
204 },
205 {
206 "EventCode": "0xFD",
207 "Counter": "0,1,2,3",
208 "UMask": "0x2",
209 "EventName": "SIMD_INT_64.PACKED_SHIFT",
210 "SampleAfterValue": "200000",
211 "BriefDescription": "SIMD integer 64 bit shift operations"
212 },
213 {
214 "EventCode": "0xFD",
215 "Counter": "0,1,2,3",
216 "UMask": "0x40",
217 "EventName": "SIMD_INT_64.SHUFFLE_MOVE",
218 "SampleAfterValue": "200000",
219 "BriefDescription": "SIMD integer 64 bit shuffle/move operations"
220 },
221 {
222 "EventCode": "0xFD",
223 "Counter": "0,1,2,3",
224 "UMask": "0x8",
225 "EventName": "SIMD_INT_64.UNPACK",
226 "SampleAfterValue": "200000",
227 "BriefDescription": "SIMD integer 64 bit unpack operations"
228 }
229] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-dp/frontend.json b/tools/perf/pmu-events/arch/x86/westmereep-dp/frontend.json
new file mode 100644
index 000000000000..e5e21e03444d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-dp/frontend.json
@@ -0,0 +1,26 @@
1[
2 {
3 "EventCode": "0xD0",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "MACRO_INSTS.DECODED",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Instructions decoded"
9 },
10 {
11 "EventCode": "0xA6",
12 "Counter": "0,1,2,3",
13 "UMask": "0x1",
14 "EventName": "MACRO_INSTS.FUSIONS_DECODED",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Macro-fused instructions decoded"
17 },
18 {
19 "EventCode": "0x19",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "TWO_UOP_INSTS_DECODED",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Two Uop instructions decoded"
25 }
26] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-dp/memory.json b/tools/perf/pmu-events/arch/x86/westmereep-dp/memory.json
new file mode 100644
index 000000000000..6e0829b7617f
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-dp/memory.json
@@ -0,0 +1,758 @@
1[
2 {
3 "EventCode": "0x5",
4 "Counter": "0,1,2,3",
5 "UMask": "0x2",
6 "EventName": "MISALIGN_MEM_REF.STORE",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "Misaligned store references"
9 },
10 {
11 "EventCode": "0xB7, 0xBB",
12 "MSRValue": "0x3011",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_DRAM_AND_REMOTE_FWD",
16 "MSRIndex": "0x1a6,0x1a7",
17 "SampleAfterValue": "100000",
18 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = ANY_DRAM AND REMOTE_FWD",
19 "Offcore": "1"
20 },
21 {
22 "EventCode": "0xB7, 0xBB",
23 "MSRValue": "0xf811",
24 "Counter": "0,1,2,3",
25 "UMask": "0x1",
26 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LLC_MISS",
27 "MSRIndex": "0x1a6,0x1a7",
28 "SampleAfterValue": "100000",
29 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = ANY_LLC_MISS",
30 "Offcore": "1"
31 },
32 {
33 "EventCode": "0xB7, 0xBB",
34 "MSRValue": "0x4011",
35 "Counter": "0,1,2,3",
36 "UMask": "0x1",
37 "EventName": "OFFCORE_RESPONSE.ANY_DATA.OTHER_LOCAL_DRAM",
38 "MSRIndex": "0x1a6,0x1a7",
39 "SampleAfterValue": "100000",
40 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = OTHER_LOCAL_DRAM",
41 "Offcore": "1"
42 },
43 {
44 "EventCode": "0xB7, 0xBB",
45 "MSRValue": "0x2011",
46 "Counter": "0,1,2,3",
47 "UMask": "0x1",
48 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_DRAM",
49 "MSRIndex": "0x1a6,0x1a7",
50 "SampleAfterValue": "100000",
51 "BriefDescription": "REQUEST = ANY_DATA read and RESPONSE = REMOTE_DRAM",
52 "Offcore": "1"
53 },
54 {
55 "EventCode": "0xB7, 0xBB",
56 "MSRValue": "0x3044",
57 "Counter": "0,1,2,3",
58 "UMask": "0x1",
59 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_DRAM_AND_REMOTE_FWD",
60 "MSRIndex": "0x1a6,0x1a7",
61 "SampleAfterValue": "100000",
62 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = ANY_DRAM AND REMOTE_FWD",
63 "Offcore": "1"
64 },
65 {
66 "EventCode": "0xB7, 0xBB",
67 "MSRValue": "0xf844",
68 "Counter": "0,1,2,3",
69 "UMask": "0x1",
70 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LLC_MISS",
71 "MSRIndex": "0x1a6,0x1a7",
72 "SampleAfterValue": "100000",
73 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = ANY_LLC_MISS",
74 "Offcore": "1"
75 },
76 {
77 "EventCode": "0xB7, 0xBB",
78 "MSRValue": "0x4044",
79 "Counter": "0,1,2,3",
80 "UMask": "0x1",
81 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.OTHER_LOCAL_DRAM",
82 "MSRIndex": "0x1a6,0x1a7",
83 "SampleAfterValue": "100000",
84 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = OTHER_LOCAL_DRAM",
85 "Offcore": "1"
86 },
87 {
88 "EventCode": "0xB7, 0xBB",
89 "MSRValue": "0x2044",
90 "Counter": "0,1,2,3",
91 "UMask": "0x1",
92 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_DRAM",
93 "MSRIndex": "0x1a6,0x1a7",
94 "SampleAfterValue": "100000",
95 "BriefDescription": "REQUEST = ANY IFETCH and RESPONSE = REMOTE_DRAM",
96 "Offcore": "1"
97 },
98 {
99 "EventCode": "0xB7, 0xBB",
100 "MSRValue": "0x30ff",
101 "Counter": "0,1,2,3",
102 "UMask": "0x1",
103 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_DRAM_AND_REMOTE_FWD",
104 "MSRIndex": "0x1a6,0x1a7",
105 "SampleAfterValue": "100000",
106 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = ANY_DRAM AND REMOTE_FWD",
107 "Offcore": "1"
108 },
109 {
110 "EventCode": "0xB7, 0xBB",
111 "MSRValue": "0xf8ff",
112 "Counter": "0,1,2,3",
113 "UMask": "0x1",
114 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LLC_MISS",
115 "MSRIndex": "0x1a6,0x1a7",
116 "SampleAfterValue": "100000",
117 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = ANY_LLC_MISS",
118 "Offcore": "1"
119 },
120 {
121 "EventCode": "0xB7, 0xBB",
122 "MSRValue": "0x40ff",
123 "Counter": "0,1,2,3",
124 "UMask": "0x1",
125 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.OTHER_LOCAL_DRAM",
126 "MSRIndex": "0x1a6,0x1a7",
127 "SampleAfterValue": "100000",
128 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = OTHER_LOCAL_DRAM",
129 "Offcore": "1"
130 },
131 {
132 "EventCode": "0xB7, 0xBB",
133 "MSRValue": "0x20ff",
134 "Counter": "0,1,2,3",
135 "UMask": "0x1",
136 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_DRAM",
137 "MSRIndex": "0x1a6,0x1a7",
138 "SampleAfterValue": "100000",
139 "BriefDescription": "REQUEST = ANY_REQUEST and RESPONSE = REMOTE_DRAM",
140 "Offcore": "1"
141 },
142 {
143 "EventCode": "0xB7, 0xBB",
144 "MSRValue": "0x3022",
145 "Counter": "0,1,2,3",
146 "UMask": "0x1",
147 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_DRAM_AND_REMOTE_FWD",
148 "MSRIndex": "0x1a6,0x1a7",
149 "SampleAfterValue": "100000",
150 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = ANY_DRAM AND REMOTE_FWD",
151 "Offcore": "1"
152 },
153 {
154 "EventCode": "0xB7, 0xBB",
155 "MSRValue": "0xf822",
156 "Counter": "0,1,2,3",
157 "UMask": "0x1",
158 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LLC_MISS",
159 "MSRIndex": "0x1a6,0x1a7",
160 "SampleAfterValue": "100000",
161 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = ANY_LLC_MISS",
162 "Offcore": "1"
163 },
164 {
165 "EventCode": "0xB7, 0xBB",
166 "MSRValue": "0x4022",
167 "Counter": "0,1,2,3",
168 "UMask": "0x1",
169 "EventName": "OFFCORE_RESPONSE.ANY_RFO.OTHER_LOCAL_DRAM",
170 "MSRIndex": "0x1a6,0x1a7",
171 "SampleAfterValue": "100000",
172 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = OTHER_LOCAL_DRAM",
173 "Offcore": "1"
174 },
175 {
176 "EventCode": "0xB7, 0xBB",
177 "MSRValue": "0x2022",
178 "Counter": "0,1,2,3",
179 "UMask": "0x1",
180 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_DRAM",
181 "MSRIndex": "0x1a6,0x1a7",
182 "SampleAfterValue": "100000",
183 "BriefDescription": "REQUEST = ANY RFO and RESPONSE = REMOTE_DRAM",
184 "Offcore": "1"
185 },
186 {
187 "EventCode": "0xB7, 0xBB",
188 "MSRValue": "0x3008",
189 "Counter": "0,1,2,3",
190 "UMask": "0x1",
191 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_DRAM_AND_REMOTE_FWD",
192 "MSRIndex": "0x1a6,0x1a7",
193 "SampleAfterValue": "100000",
194 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = ANY_DRAM AND REMOTE_FWD",
195 "Offcore": "1"
196 },
197 {
198 "EventCode": "0xB7, 0xBB",
199 "MSRValue": "0xf808",
200 "Counter": "0,1,2,3",
201 "UMask": "0x1",
202 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LLC_MISS",
203 "MSRIndex": "0x1a6,0x1a7",
204 "SampleAfterValue": "100000",
205 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = ANY_LLC_MISS",
206 "Offcore": "1"
207 },
208 {
209 "EventCode": "0xB7, 0xBB",
210 "MSRValue": "0x4008",
211 "Counter": "0,1,2,3",
212 "UMask": "0x1",
213 "EventName": "OFFCORE_RESPONSE.COREWB.OTHER_LOCAL_DRAM",
214 "MSRIndex": "0x1a6,0x1a7",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = OTHER_LOCAL_DRAM",
217 "Offcore": "1"
218 },
219 {
220 "EventCode": "0xB7, 0xBB",
221 "MSRValue": "0x2008",
222 "Counter": "0,1,2,3",
223 "UMask": "0x1",
224 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_DRAM",
225 "MSRIndex": "0x1a6,0x1a7",
226 "SampleAfterValue": "100000",
227 "BriefDescription": "REQUEST = CORE_WB and RESPONSE = REMOTE_DRAM",
228 "Offcore": "1"
229 },
230 {
231 "EventCode": "0xB7, 0xBB",
232 "MSRValue": "0x3077",
233 "Counter": "0,1,2,3",
234 "UMask": "0x1",
235 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_DRAM_AND_REMOTE_FWD",
236 "MSRIndex": "0x1a6,0x1a7",
237 "SampleAfterValue": "100000",
238 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = ANY_DRAM AND REMOTE_FWD",
239 "Offcore": "1"
240 },
241 {
242 "EventCode": "0xB7, 0xBB",
243 "MSRValue": "0xf877",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LLC_MISS",
247 "MSRIndex": "0x1a6,0x1a7",
248 "SampleAfterValue": "100000",
249 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = ANY_LLC_MISS",
250 "Offcore": "1"
251 },
252 {
253 "EventCode": "0xB7, 0xBB",
254 "MSRValue": "0x4077",
255 "Counter": "0,1,2,3",
256 "UMask": "0x1",
257 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.OTHER_LOCAL_DRAM",
258 "MSRIndex": "0x1a6,0x1a7",
259 "SampleAfterValue": "100000",
260 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = OTHER_LOCAL_DRAM",
261 "Offcore": "1"
262 },
263 {
264 "EventCode": "0xB7, 0xBB",
265 "MSRValue": "0x2077",
266 "Counter": "0,1,2,3",
267 "UMask": "0x1",
268 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_DRAM",
269 "MSRIndex": "0x1a6,0x1a7",
270 "SampleAfterValue": "100000",
271 "BriefDescription": "REQUEST = DATA_IFETCH and RESPONSE = REMOTE_DRAM",
272 "Offcore": "1"
273 },
274 {
275 "EventCode": "0xB7, 0xBB",
276 "MSRValue": "0x3033",
277 "Counter": "0,1,2,3",
278 "UMask": "0x1",
279 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_DRAM_AND_REMOTE_FWD",
280 "MSRIndex": "0x1a6,0x1a7",
281 "SampleAfterValue": "100000",
282 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = ANY_DRAM AND REMOTE_FWD",
283 "Offcore": "1"
284 },
285 {
286 "EventCode": "0xB7, 0xBB",
287 "MSRValue": "0xf833",
288 "Counter": "0,1,2,3",
289 "UMask": "0x1",
290 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LLC_MISS",
291 "MSRIndex": "0x1a6,0x1a7",
292 "SampleAfterValue": "100000",
293 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = ANY_LLC_MISS",
294 "Offcore": "1"
295 },
296 {
297 "EventCode": "0xB7, 0xBB",
298 "MSRValue": "0x4033",
299 "Counter": "0,1,2,3",
300 "UMask": "0x1",
301 "EventName": "OFFCORE_RESPONSE.DATA_IN.OTHER_LOCAL_DRAM",
302 "MSRIndex": "0x1a6,0x1a7",
303 "SampleAfterValue": "100000",
304 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = OTHER_LOCAL_DRAM",
305 "Offcore": "1"
306 },
307 {
308 "EventCode": "0xB7, 0xBB",
309 "MSRValue": "0x2033",
310 "Counter": "0,1,2,3",
311 "UMask": "0x1",
312 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_DRAM",
313 "MSRIndex": "0x1a6,0x1a7",
314 "SampleAfterValue": "100000",
315 "BriefDescription": "REQUEST = DATA_IN and RESPONSE = REMOTE_DRAM",
316 "Offcore": "1"
317 },
318 {
319 "EventCode": "0xB7, 0xBB",
320 "MSRValue": "0x3003",
321 "Counter": "0,1,2,3",
322 "UMask": "0x1",
323 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_DRAM_AND_REMOTE_FWD",
324 "MSRIndex": "0x1a6,0x1a7",
325 "SampleAfterValue": "100000",
326 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = ANY_DRAM AND REMOTE_FWD",
327 "Offcore": "1"
328 },
329 {
330 "EventCode": "0xB7, 0xBB",
331 "MSRValue": "0xf803",
332 "Counter": "0,1,2,3",
333 "UMask": "0x1",
334 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LLC_MISS",
335 "MSRIndex": "0x1a6,0x1a7",
336 "SampleAfterValue": "100000",
337 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = ANY_LLC_MISS",
338 "Offcore": "1"
339 },
340 {
341 "EventCode": "0xB7, 0xBB",
342 "MSRValue": "0x4003",
343 "Counter": "0,1,2,3",
344 "UMask": "0x1",
345 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.OTHER_LOCAL_DRAM",
346 "MSRIndex": "0x1a6,0x1a7",
347 "SampleAfterValue": "100000",
348 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = OTHER_LOCAL_DRAM",
349 "Offcore": "1"
350 },
351 {
352 "EventCode": "0xB7, 0xBB",
353 "MSRValue": "0x2003",
354 "Counter": "0,1,2,3",
355 "UMask": "0x1",
356 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_DRAM",
357 "MSRIndex": "0x1a6,0x1a7",
358 "SampleAfterValue": "100000",
359 "BriefDescription": "REQUEST = DEMAND_DATA and RESPONSE = REMOTE_DRAM",
360 "Offcore": "1"
361 },
362 {
363 "EventCode": "0xB7, 0xBB",
364 "MSRValue": "0x3001",
365 "Counter": "0,1,2,3",
366 "UMask": "0x1",
367 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_DRAM_AND_REMOTE_FWD",
368 "MSRIndex": "0x1a6,0x1a7",
369 "SampleAfterValue": "100000",
370 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = ANY_DRAM AND REMOTE_FWD",
371 "Offcore": "1"
372 },
373 {
374 "EventCode": "0xB7, 0xBB",
375 "MSRValue": "0xf801",
376 "Counter": "0,1,2,3",
377 "UMask": "0x1",
378 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LLC_MISS",
379 "MSRIndex": "0x1a6,0x1a7",
380 "SampleAfterValue": "100000",
381 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = ANY_LLC_MISS",
382 "Offcore": "1"
383 },
384 {
385 "EventCode": "0xB7, 0xBB",
386 "MSRValue": "0x4001",
387 "Counter": "0,1,2,3",
388 "UMask": "0x1",
389 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.OTHER_LOCAL_DRAM",
390 "MSRIndex": "0x1a6,0x1a7",
391 "SampleAfterValue": "100000",
392 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = OTHER_LOCAL_DRAM",
393 "Offcore": "1"
394 },
395 {
396 "EventCode": "0xB7, 0xBB",
397 "MSRValue": "0x2001",
398 "Counter": "0,1,2,3",
399 "UMask": "0x1",
400 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_DRAM",
401 "MSRIndex": "0x1a6,0x1a7",
402 "SampleAfterValue": "100000",
403 "BriefDescription": "REQUEST = DEMAND_DATA_RD and RESPONSE = REMOTE_DRAM",
404 "Offcore": "1"
405 },
406 {
407 "EventCode": "0xB7, 0xBB",
408 "MSRValue": "0x3004",
409 "Counter": "0,1,2,3",
410 "UMask": "0x1",
411 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_DRAM_AND_REMOTE_FWD",
412 "MSRIndex": "0x1a6,0x1a7",
413 "SampleAfterValue": "100000",
414 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = ANY_DRAM AND REMOTE_FWD",
415 "Offcore": "1"
416 },
417 {
418 "EventCode": "0xB7, 0xBB",
419 "MSRValue": "0xf804",
420 "Counter": "0,1,2,3",
421 "UMask": "0x1",
422 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LLC_MISS",
423 "MSRIndex": "0x1a6,0x1a7",
424 "SampleAfterValue": "100000",
425 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = ANY_LLC_MISS",
426 "Offcore": "1"
427 },
428 {
429 "EventCode": "0xB7, 0xBB",
430 "MSRValue": "0x4004",
431 "Counter": "0,1,2,3",
432 "UMask": "0x1",
433 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.OTHER_LOCAL_DRAM",
434 "MSRIndex": "0x1a6,0x1a7",
435 "SampleAfterValue": "100000",
436 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = OTHER_LOCAL_DRAM",
437 "Offcore": "1"
438 },
439 {
440 "EventCode": "0xB7, 0xBB",
441 "MSRValue": "0x2004",
442 "Counter": "0,1,2,3",
443 "UMask": "0x1",
444 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_DRAM",
445 "MSRIndex": "0x1a6,0x1a7",
446 "SampleAfterValue": "100000",
447 "BriefDescription": "REQUEST = DEMAND_IFETCH and RESPONSE = REMOTE_DRAM",
448 "Offcore": "1"
449 },
450 {
451 "EventCode": "0xB7, 0xBB",
452 "MSRValue": "0x3002",
453 "Counter": "0,1,2,3",
454 "UMask": "0x1",
455 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_DRAM_AND_REMOTE_FWD",
456 "MSRIndex": "0x1a6,0x1a7",
457 "SampleAfterValue": "100000",
458 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = ANY_DRAM AND REMOTE_FWD",
459 "Offcore": "1"
460 },
461 {
462 "EventCode": "0xB7, 0xBB",
463 "MSRValue": "0xf802",
464 "Counter": "0,1,2,3",
465 "UMask": "0x1",
466 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LLC_MISS",
467 "MSRIndex": "0x1a6,0x1a7",
468 "SampleAfterValue": "100000",
469 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = ANY_LLC_MISS",
470 "Offcore": "1"
471 },
472 {
473 "EventCode": "0xB7, 0xBB",
474 "MSRValue": "0x4002",
475 "Counter": "0,1,2,3",
476 "UMask": "0x1",
477 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.OTHER_LOCAL_DRAM",
478 "MSRIndex": "0x1a6,0x1a7",
479 "SampleAfterValue": "100000",
480 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = OTHER_LOCAL_DRAM",
481 "Offcore": "1"
482 },
483 {
484 "EventCode": "0xB7, 0xBB",
485 "MSRValue": "0x2002",
486 "Counter": "0,1,2,3",
487 "UMask": "0x1",
488 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_DRAM",
489 "MSRIndex": "0x1a6,0x1a7",
490 "SampleAfterValue": "100000",
491 "BriefDescription": "REQUEST = DEMAND_RFO and RESPONSE = REMOTE_DRAM",
492 "Offcore": "1"
493 },
494 {
495 "EventCode": "0xB7, 0xBB",
496 "MSRValue": "0x3080",
497 "Counter": "0,1,2,3",
498 "UMask": "0x1",
499 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_DRAM_AND_REMOTE_FWD",
500 "MSRIndex": "0x1a6,0x1a7",
501 "SampleAfterValue": "100000",
502 "BriefDescription": "REQUEST = OTHER and RESPONSE = ANY_DRAM AND REMOTE_FWD",
503 "Offcore": "1"
504 },
505 {
506 "EventCode": "0xB7, 0xBB",
507 "MSRValue": "0xf880",
508 "Counter": "0,1,2,3",
509 "UMask": "0x1",
510 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LLC_MISS",
511 "MSRIndex": "0x1a6,0x1a7",
512 "SampleAfterValue": "100000",
513 "BriefDescription": "REQUEST = OTHER and RESPONSE = ANY_LLC_MISS",
514 "Offcore": "1"
515 },
516 {
517 "EventCode": "0xB7, 0xBB",
518 "MSRValue": "0x4080",
519 "Counter": "0,1,2,3",
520 "UMask": "0x1",
521 "EventName": "OFFCORE_RESPONSE.OTHER.OTHER_LOCAL_DRAM",
522 "MSRIndex": "0x1a6,0x1a7",
523 "SampleAfterValue": "100000",
524 "BriefDescription": "REQUEST = OTHER and RESPONSE = OTHER_LOCAL_DRAM",
525 "Offcore": "1"
526 },
527 {
528 "EventCode": "0xB7, 0xBB",
529 "MSRValue": "0x2080",
530 "Counter": "0,1,2,3",
531 "UMask": "0x1",
532 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_DRAM",
533 "MSRIndex": "0x1a6,0x1a7",
534 "SampleAfterValue": "100000",
535 "BriefDescription": "REQUEST = OTHER and RESPONSE = REMOTE_DRAM",
536 "Offcore": "1"
537 },
538 {
539 "EventCode": "0xB7, 0xBB",
540 "MSRValue": "0x3050",
541 "Counter": "0,1,2,3",
542 "UMask": "0x1",
543 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_DRAM_AND_REMOTE_FWD",
544 "MSRIndex": "0x1a6,0x1a7",
545 "SampleAfterValue": "100000",
546 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = ANY_DRAM AND REMOTE_FWD",
547 "Offcore": "1"
548 },
549 {
550 "EventCode": "0xB7, 0xBB",
551 "MSRValue": "0xf850",
552 "Counter": "0,1,2,3",
553 "UMask": "0x1",
554 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LLC_MISS",
555 "MSRIndex": "0x1a6,0x1a7",
556 "SampleAfterValue": "100000",
557 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = ANY_LLC_MISS",
558 "Offcore": "1"
559 },
560 {
561 "EventCode": "0xB7, 0xBB",
562 "MSRValue": "0x4050",
563 "Counter": "0,1,2,3",
564 "UMask": "0x1",
565 "EventName": "OFFCORE_RESPONSE.PF_DATA.OTHER_LOCAL_DRAM",
566 "MSRIndex": "0x1a6,0x1a7",
567 "SampleAfterValue": "100000",
568 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = OTHER_LOCAL_DRAM",
569 "Offcore": "1"
570 },
571 {
572 "EventCode": "0xB7, 0xBB",
573 "MSRValue": "0x2050",
574 "Counter": "0,1,2,3",
575 "UMask": "0x1",
576 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_DRAM",
577 "MSRIndex": "0x1a6,0x1a7",
578 "SampleAfterValue": "100000",
579 "BriefDescription": "REQUEST = PF_DATA and RESPONSE = REMOTE_DRAM",
580 "Offcore": "1"
581 },
582 {
583 "EventCode": "0xB7, 0xBB",
584 "MSRValue": "0x3010",
585 "Counter": "0,1,2,3",
586 "UMask": "0x1",
587 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_DRAM_AND_REMOTE_FWD",
588 "MSRIndex": "0x1a6,0x1a7",
589 "SampleAfterValue": "100000",
590 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = ANY_DRAM AND REMOTE_FWD",
591 "Offcore": "1"
592 },
593 {
594 "EventCode": "0xB7, 0xBB",
595 "MSRValue": "0xf810",
596 "Counter": "0,1,2,3",
597 "UMask": "0x1",
598 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LLC_MISS",
599 "MSRIndex": "0x1a6,0x1a7",
600 "SampleAfterValue": "100000",
601 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = ANY_LLC_MISS",
602 "Offcore": "1"
603 },
604 {
605 "EventCode": "0xB7, 0xBB",
606 "MSRValue": "0x4010",
607 "Counter": "0,1,2,3",
608 "UMask": "0x1",
609 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.OTHER_LOCAL_DRAM",
610 "MSRIndex": "0x1a6,0x1a7",
611 "SampleAfterValue": "100000",
612 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = OTHER_LOCAL_DRAM",
613 "Offcore": "1"
614 },
615 {
616 "EventCode": "0xB7, 0xBB",
617 "MSRValue": "0x2010",
618 "Counter": "0,1,2,3",
619 "UMask": "0x1",
620 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_DRAM",
621 "MSRIndex": "0x1a6,0x1a7",
622 "SampleAfterValue": "100000",
623 "BriefDescription": "REQUEST = PF_DATA_RD and RESPONSE = REMOTE_DRAM",
624 "Offcore": "1"
625 },
626 {
627 "EventCode": "0xB7, 0xBB",
628 "MSRValue": "0x3040",
629 "Counter": "0,1,2,3",
630 "UMask": "0x1",
631 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_DRAM_AND_REMOTE_FWD",
632 "MSRIndex": "0x1a6,0x1a7",
633 "SampleAfterValue": "100000",
634 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = ANY_DRAM AND REMOTE_FWD",
635 "Offcore": "1"
636 },
637 {
638 "EventCode": "0xB7, 0xBB",
639 "MSRValue": "0xf840",
640 "Counter": "0,1,2,3",
641 "UMask": "0x1",
642 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LLC_MISS",
643 "MSRIndex": "0x1a6,0x1a7",
644 "SampleAfterValue": "100000",
645 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = ANY_LLC_MISS",
646 "Offcore": "1"
647 },
648 {
649 "EventCode": "0xB7, 0xBB",
650 "MSRValue": "0x4040",
651 "Counter": "0,1,2,3",
652 "UMask": "0x1",
653 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.OTHER_LOCAL_DRAM",
654 "MSRIndex": "0x1a6,0x1a7",
655 "SampleAfterValue": "100000",
656 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = OTHER_LOCAL_DRAM",
657 "Offcore": "1"
658 },
659 {
660 "EventCode": "0xB7, 0xBB",
661 "MSRValue": "0x2040",
662 "Counter": "0,1,2,3",
663 "UMask": "0x1",
664 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_DRAM",
665 "MSRIndex": "0x1a6,0x1a7",
666 "SampleAfterValue": "100000",
667 "BriefDescription": "REQUEST = PF_RFO and RESPONSE = REMOTE_DRAM",
668 "Offcore": "1"
669 },
670 {
671 "EventCode": "0xB7, 0xBB",
672 "MSRValue": "0x3020",
673 "Counter": "0,1,2,3",
674 "UMask": "0x1",
675 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_DRAM_AND_REMOTE_FWD",
676 "MSRIndex": "0x1a6,0x1a7",
677 "SampleAfterValue": "100000",
678 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = ANY_DRAM AND REMOTE_FWD",
679 "Offcore": "1"
680 },
681 {
682 "EventCode": "0xB7, 0xBB",
683 "MSRValue": "0xf820",
684 "Counter": "0,1,2,3",
685 "UMask": "0x1",
686 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LLC_MISS",
687 "MSRIndex": "0x1a6,0x1a7",
688 "SampleAfterValue": "100000",
689 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = ANY_LLC_MISS",
690 "Offcore": "1"
691 },
692 {
693 "EventCode": "0xB7, 0xBB",
694 "MSRValue": "0x4020",
695 "Counter": "0,1,2,3",
696 "UMask": "0x1",
697 "EventName": "OFFCORE_RESPONSE.PF_RFO.OTHER_LOCAL_DRAM",
698 "MSRIndex": "0x1a6,0x1a7",
699 "SampleAfterValue": "100000",
700 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = OTHER_LOCAL_DRAM",
701 "Offcore": "1"
702 },
703 {
704 "EventCode": "0xB7, 0xBB",
705 "MSRValue": "0x2020",
706 "Counter": "0,1,2,3",
707 "UMask": "0x1",
708 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_DRAM",
709 "MSRIndex": "0x1a6,0x1a7",
710 "SampleAfterValue": "100000",
711 "BriefDescription": "REQUEST = PF_IFETCH and RESPONSE = REMOTE_DRAM",
712 "Offcore": "1"
713 },
714 {
715 "EventCode": "0xB7, 0xBB",
716 "MSRValue": "0x3070",
717 "Counter": "0,1,2,3",
718 "UMask": "0x1",
719 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_DRAM_AND_REMOTE_FWD",
720 "MSRIndex": "0x1a6,0x1a7",
721 "SampleAfterValue": "100000",
722 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = ANY_DRAM AND REMOTE_FWD",
723 "Offcore": "1"
724 },
725 {
726 "EventCode": "0xB7, 0xBB",
727 "MSRValue": "0xf870",
728 "Counter": "0,1,2,3",
729 "UMask": "0x1",
730 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LLC_MISS",
731 "MSRIndex": "0x1a6,0x1a7",
732 "SampleAfterValue": "100000",
733 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = ANY_LLC_MISS",
734 "Offcore": "1"
735 },
736 {
737 "EventCode": "0xB7, 0xBB",
738 "MSRValue": "0x4070",
739 "Counter": "0,1,2,3",
740 "UMask": "0x1",
741 "EventName": "OFFCORE_RESPONSE.PREFETCH.OTHER_LOCAL_DRAM",
742 "MSRIndex": "0x1a6,0x1a7",
743 "SampleAfterValue": "100000",
744 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = OTHER_LOCAL_DRAM",
745 "Offcore": "1"
746 },
747 {
748 "EventCode": "0xB7, 0xBB",
749 "MSRValue": "0x2070",
750 "Counter": "0,1,2,3",
751 "UMask": "0x1",
752 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_DRAM",
753 "MSRIndex": "0x1a6,0x1a7",
754 "SampleAfterValue": "100000",
755 "BriefDescription": "REQUEST = PREFETCH and RESPONSE = REMOTE_DRAM",
756 "Offcore": "1"
757 }
758] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-dp/other.json b/tools/perf/pmu-events/arch/x86/westmereep-dp/other.json
new file mode 100644
index 000000000000..85133d6a5ce0
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-dp/other.json
@@ -0,0 +1,287 @@
1[
2 {
3 "EventCode": "0xE8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "BPU_CLEARS.EARLY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Early Branch Prediciton Unit clears"
9 },
10 {
11 "EventCode": "0xE8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x2",
14 "EventName": "BPU_CLEARS.LATE",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Late Branch Prediction Unit clears"
17 },
18 {
19 "EventCode": "0xE5",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "BPU_MISSED_CALL_RET",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Branch prediction unit missed call or return"
25 },
26 {
27 "EventCode": "0xD5",
28 "Counter": "0,1,2,3",
29 "UMask": "0x1",
30 "EventName": "ES_REG_RENAMES",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "ES segment renames"
33 },
34 {
35 "EventCode": "0x6C",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "IO_TRANSACTIONS",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "I/O transactions"
41 },
42 {
43 "EventCode": "0x80",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "L1I.CYCLES_STALLED",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1I instruction fetch stall cycles"
49 },
50 {
51 "EventCode": "0x80",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "L1I.HITS",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1I instruction fetch hits"
57 },
58 {
59 "EventCode": "0x80",
60 "Counter": "0,1,2,3",
61 "UMask": "0x2",
62 "EventName": "L1I.MISSES",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "L1I instruction fetch misses"
65 },
66 {
67 "EventCode": "0x80",
68 "Counter": "0,1,2,3",
69 "UMask": "0x3",
70 "EventName": "L1I.READS",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "L1I Instruction fetches"
73 },
74 {
75 "EventCode": "0x82",
76 "Counter": "0,1,2,3",
77 "UMask": "0x1",
78 "EventName": "LARGE_ITLB.HIT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Large ITLB hit"
81 },
82 {
83 "EventCode": "0x3",
84 "Counter": "0,1,2,3",
85 "UMask": "0x2",
86 "EventName": "LOAD_BLOCK.OVERLAP_STORE",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "Loads that partially overlap an earlier store"
89 },
90 {
91 "EventCode": "0x13",
92 "Counter": "0,1,2,3",
93 "UMask": "0x7",
94 "EventName": "LOAD_DISPATCH.ANY",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "All loads dispatched"
97 },
98 {
99 "EventCode": "0x13",
100 "Counter": "0,1,2,3",
101 "UMask": "0x4",
102 "EventName": "LOAD_DISPATCH.MOB",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Loads dispatched from the MOB"
105 },
106 {
107 "EventCode": "0x13",
108 "Counter": "0,1,2,3",
109 "UMask": "0x1",
110 "EventName": "LOAD_DISPATCH.RS",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "Loads dispatched that bypass the MOB"
113 },
114 {
115 "EventCode": "0x13",
116 "Counter": "0,1,2,3",
117 "UMask": "0x2",
118 "EventName": "LOAD_DISPATCH.RS_DELAYED",
119 "SampleAfterValue": "2000000",
120 "BriefDescription": "Loads dispatched from stage 305"
121 },
122 {
123 "EventCode": "0x7",
124 "Counter": "0,1,2,3",
125 "UMask": "0x1",
126 "EventName": "PARTIAL_ADDRESS_ALIAS",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "False dependencies due to partial address aliasing"
129 },
130 {
131 "EventCode": "0xD2",
132 "Counter": "0,1,2,3",
133 "UMask": "0xf",
134 "EventName": "RAT_STALLS.ANY",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "All RAT stall cycles"
137 },
138 {
139 "EventCode": "0xD2",
140 "Counter": "0,1,2,3",
141 "UMask": "0x1",
142 "EventName": "RAT_STALLS.FLAGS",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "Flag stall cycles"
145 },
146 {
147 "EventCode": "0xD2",
148 "Counter": "0,1,2,3",
149 "UMask": "0x2",
150 "EventName": "RAT_STALLS.REGISTERS",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "Partial register stall cycles"
153 },
154 {
155 "EventCode": "0xD2",
156 "Counter": "0,1,2,3",
157 "UMask": "0x4",
158 "EventName": "RAT_STALLS.ROB_READ_PORT",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "ROB read port stalls cycles"
161 },
162 {
163 "EventCode": "0xD2",
164 "Counter": "0,1,2,3",
165 "UMask": "0x8",
166 "EventName": "RAT_STALLS.SCOREBOARD",
167 "SampleAfterValue": "2000000",
168 "BriefDescription": "Scoreboard stall cycles"
169 },
170 {
171 "EventCode": "0x4",
172 "Counter": "0,1,2,3",
173 "UMask": "0x7",
174 "EventName": "SB_DRAIN.ANY",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "All Store buffer stall cycles"
177 },
178 {
179 "EventCode": "0xD4",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "SEG_RENAME_STALLS",
183 "SampleAfterValue": "2000000",
184 "BriefDescription": "Segment rename stall cycles"
185 },
186 {
187 "EventCode": "0xB8",
188 "Counter": "0,1,2,3",
189 "UMask": "0x1",
190 "EventName": "SNOOP_RESPONSE.HIT",
191 "SampleAfterValue": "100000",
192 "BriefDescription": "Thread responded HIT to snoop"
193 },
194 {
195 "EventCode": "0xB8",
196 "Counter": "0,1,2,3",
197 "UMask": "0x2",
198 "EventName": "SNOOP_RESPONSE.HITE",
199 "SampleAfterValue": "100000",
200 "BriefDescription": "Thread responded HITE to snoop"
201 },
202 {
203 "EventCode": "0xB8",
204 "Counter": "0,1,2,3",
205 "UMask": "0x4",
206 "EventName": "SNOOP_RESPONSE.HITM",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "Thread responded HITM to snoop"
209 },
210 {
211 "EventCode": "0xB4",
212 "Counter": "0,1,2,3",
213 "UMask": "0x4",
214 "EventName": "SNOOPQ_REQUESTS.CODE",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "Snoop code requests"
217 },
218 {
219 "EventCode": "0xB4",
220 "Counter": "0,1,2,3",
221 "UMask": "0x1",
222 "EventName": "SNOOPQ_REQUESTS.DATA",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "Snoop data requests"
225 },
226 {
227 "EventCode": "0xB4",
228 "Counter": "0,1,2,3",
229 "UMask": "0x2",
230 "EventName": "SNOOPQ_REQUESTS.INVALIDATE",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "Snoop invalidate requests"
233 },
234 {
235 "EventCode": "0xB3",
236 "UMask": "0x4",
237 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.CODE",
238 "SampleAfterValue": "2000000",
239 "BriefDescription": "Outstanding snoop code requests"
240 },
241 {
242 "EventCode": "0xB3",
243 "UMask": "0x4",
244 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.CODE_NOT_EMPTY",
245 "SampleAfterValue": "2000000",
246 "BriefDescription": "Cycles snoop code requests queued",
247 "CounterMask": "1"
248 },
249 {
250 "EventCode": "0xB3",
251 "UMask": "0x1",
252 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.DATA",
253 "SampleAfterValue": "2000000",
254 "BriefDescription": "Outstanding snoop data requests"
255 },
256 {
257 "EventCode": "0xB3",
258 "UMask": "0x1",
259 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.DATA_NOT_EMPTY",
260 "SampleAfterValue": "2000000",
261 "BriefDescription": "Cycles snoop data requests queued",
262 "CounterMask": "1"
263 },
264 {
265 "EventCode": "0xB3",
266 "UMask": "0x2",
267 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.INVALIDATE",
268 "SampleAfterValue": "2000000",
269 "BriefDescription": "Outstanding snoop invalidate requests"
270 },
271 {
272 "EventCode": "0xB3",
273 "UMask": "0x2",
274 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.INVALIDATE_NOT_EMPTY",
275 "SampleAfterValue": "2000000",
276 "BriefDescription": "Cycles snoop invalidate requests queued",
277 "CounterMask": "1"
278 },
279 {
280 "EventCode": "0xF6",
281 "Counter": "0,1,2,3",
282 "UMask": "0x1",
283 "EventName": "SQ_FULL_STALL_CYCLES",
284 "SampleAfterValue": "2000000",
285 "BriefDescription": "Super Queue full stall cycles"
286 }
287] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-dp/pipeline.json b/tools/perf/pmu-events/arch/x86/westmereep-dp/pipeline.json
new file mode 100644
index 000000000000..f130510f7616
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-dp/pipeline.json
@@ -0,0 +1,899 @@
1[
2 {
3 "EventCode": "0x14",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ARITH.CYCLES_DIV_BUSY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles the divider is busy"
9 },
10 {
11 "EventCode": "0x14",
12 "Invert": "1",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "ARITH.DIV",
16 "SampleAfterValue": "2000000",
17 "BriefDescription": "Divide Operations executed",
18 "CounterMask": "1",
19 "EdgeDetect": "1"
20 },
21 {
22 "EventCode": "0x14",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "ARITH.MUL",
26 "SampleAfterValue": "2000000",
27 "BriefDescription": "Multiply operations executed"
28 },
29 {
30 "EventCode": "0xE6",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "BACLEAR.BAD_TARGET",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "BACLEAR asserted with bad target address"
36 },
37 {
38 "EventCode": "0xE6",
39 "Counter": "0,1,2,3",
40 "UMask": "0x1",
41 "EventName": "BACLEAR.CLEAR",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "BACLEAR asserted, regardless of cause "
44 },
45 {
46 "EventCode": "0xA7",
47 "Counter": "0,1,2,3",
48 "UMask": "0x1",
49 "EventName": "BACLEAR_FORCE_IQ",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "Instruction queue forced BACLEAR"
52 },
53 {
54 "EventCode": "0xE0",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "BR_INST_DECODED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "Branch instructions decoded"
60 },
61 {
62 "EventCode": "0x88",
63 "Counter": "0,1,2,3",
64 "UMask": "0x7f",
65 "EventName": "BR_INST_EXEC.ANY",
66 "SampleAfterValue": "200000",
67 "BriefDescription": "Branch instructions executed"
68 },
69 {
70 "EventCode": "0x88",
71 "Counter": "0,1,2,3",
72 "UMask": "0x1",
73 "EventName": "BR_INST_EXEC.COND",
74 "SampleAfterValue": "200000",
75 "BriefDescription": "Conditional branch instructions executed"
76 },
77 {
78 "EventCode": "0x88",
79 "Counter": "0,1,2,3",
80 "UMask": "0x2",
81 "EventName": "BR_INST_EXEC.DIRECT",
82 "SampleAfterValue": "200000",
83 "BriefDescription": "Unconditional branches executed"
84 },
85 {
86 "EventCode": "0x88",
87 "Counter": "0,1,2,3",
88 "UMask": "0x10",
89 "EventName": "BR_INST_EXEC.DIRECT_NEAR_CALL",
90 "SampleAfterValue": "20000",
91 "BriefDescription": "Unconditional call branches executed"
92 },
93 {
94 "EventCode": "0x88",
95 "Counter": "0,1,2,3",
96 "UMask": "0x20",
97 "EventName": "BR_INST_EXEC.INDIRECT_NEAR_CALL",
98 "SampleAfterValue": "20000",
99 "BriefDescription": "Indirect call branches executed"
100 },
101 {
102 "EventCode": "0x88",
103 "Counter": "0,1,2,3",
104 "UMask": "0x4",
105 "EventName": "BR_INST_EXEC.INDIRECT_NON_CALL",
106 "SampleAfterValue": "20000",
107 "BriefDescription": "Indirect non call branches executed"
108 },
109 {
110 "EventCode": "0x88",
111 "Counter": "0,1,2,3",
112 "UMask": "0x30",
113 "EventName": "BR_INST_EXEC.NEAR_CALLS",
114 "SampleAfterValue": "20000",
115 "BriefDescription": "Call branches executed"
116 },
117 {
118 "EventCode": "0x88",
119 "Counter": "0,1,2,3",
120 "UMask": "0x7",
121 "EventName": "BR_INST_EXEC.NON_CALLS",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "All non call branches executed"
124 },
125 {
126 "EventCode": "0x88",
127 "Counter": "0,1,2,3",
128 "UMask": "0x8",
129 "EventName": "BR_INST_EXEC.RETURN_NEAR",
130 "SampleAfterValue": "20000",
131 "BriefDescription": "Indirect return branches executed"
132 },
133 {
134 "EventCode": "0x88",
135 "Counter": "0,1,2,3",
136 "UMask": "0x40",
137 "EventName": "BR_INST_EXEC.TAKEN",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "Taken branches executed"
140 },
141 {
142 "PEBS": "1",
143 "EventCode": "0xC4",
144 "Counter": "0,1,2,3",
145 "UMask": "0x4",
146 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
147 "SampleAfterValue": "200000",
148 "BriefDescription": "Retired branch instructions (Precise Event)"
149 },
150 {
151 "PEBS": "1",
152 "EventCode": "0xC4",
153 "Counter": "0,1,2,3",
154 "UMask": "0x1",
155 "EventName": "BR_INST_RETIRED.CONDITIONAL",
156 "SampleAfterValue": "200000",
157 "BriefDescription": "Retired conditional branch instructions (Precise Event)"
158 },
159 {
160 "PEBS": "1",
161 "EventCode": "0xC4",
162 "Counter": "0,1,2,3",
163 "UMask": "0x2",
164 "EventName": "BR_INST_RETIRED.NEAR_CALL",
165 "SampleAfterValue": "20000",
166 "BriefDescription": "Retired near call instructions (Precise Event)"
167 },
168 {
169 "EventCode": "0x89",
170 "Counter": "0,1,2,3",
171 "UMask": "0x7f",
172 "EventName": "BR_MISP_EXEC.ANY",
173 "SampleAfterValue": "20000",
174 "BriefDescription": "Mispredicted branches executed"
175 },
176 {
177 "EventCode": "0x89",
178 "Counter": "0,1,2,3",
179 "UMask": "0x1",
180 "EventName": "BR_MISP_EXEC.COND",
181 "SampleAfterValue": "20000",
182 "BriefDescription": "Mispredicted conditional branches executed"
183 },
184 {
185 "EventCode": "0x89",
186 "Counter": "0,1,2,3",
187 "UMask": "0x2",
188 "EventName": "BR_MISP_EXEC.DIRECT",
189 "SampleAfterValue": "20000",
190 "BriefDescription": "Mispredicted unconditional branches executed"
191 },
192 {
193 "EventCode": "0x89",
194 "Counter": "0,1,2,3",
195 "UMask": "0x10",
196 "EventName": "BR_MISP_EXEC.DIRECT_NEAR_CALL",
197 "SampleAfterValue": "2000",
198 "BriefDescription": "Mispredicted non call branches executed"
199 },
200 {
201 "EventCode": "0x89",
202 "Counter": "0,1,2,3",
203 "UMask": "0x20",
204 "EventName": "BR_MISP_EXEC.INDIRECT_NEAR_CALL",
205 "SampleAfterValue": "2000",
206 "BriefDescription": "Mispredicted indirect call branches executed"
207 },
208 {
209 "EventCode": "0x89",
210 "Counter": "0,1,2,3",
211 "UMask": "0x4",
212 "EventName": "BR_MISP_EXEC.INDIRECT_NON_CALL",
213 "SampleAfterValue": "2000",
214 "BriefDescription": "Mispredicted indirect non call branches executed"
215 },
216 {
217 "EventCode": "0x89",
218 "Counter": "0,1,2,3",
219 "UMask": "0x30",
220 "EventName": "BR_MISP_EXEC.NEAR_CALLS",
221 "SampleAfterValue": "2000",
222 "BriefDescription": "Mispredicted call branches executed"
223 },
224 {
225 "EventCode": "0x89",
226 "Counter": "0,1,2,3",
227 "UMask": "0x7",
228 "EventName": "BR_MISP_EXEC.NON_CALLS",
229 "SampleAfterValue": "20000",
230 "BriefDescription": "Mispredicted non call branches executed"
231 },
232 {
233 "EventCode": "0x89",
234 "Counter": "0,1,2,3",
235 "UMask": "0x8",
236 "EventName": "BR_MISP_EXEC.RETURN_NEAR",
237 "SampleAfterValue": "2000",
238 "BriefDescription": "Mispredicted return branches executed"
239 },
240 {
241 "EventCode": "0x89",
242 "Counter": "0,1,2,3",
243 "UMask": "0x40",
244 "EventName": "BR_MISP_EXEC.TAKEN",
245 "SampleAfterValue": "20000",
246 "BriefDescription": "Mispredicted taken branches executed"
247 },
248 {
249 "PEBS": "1",
250 "EventCode": "0xC5",
251 "Counter": "0,1,2,3",
252 "UMask": "0x4",
253 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
254 "SampleAfterValue": "20000",
255 "BriefDescription": "Mispredicted retired branch instructions (Precise Event)"
256 },
257 {
258 "PEBS": "1",
259 "EventCode": "0xC5",
260 "Counter": "0,1,2,3",
261 "UMask": "0x1",
262 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
263 "SampleAfterValue": "20000",
264 "BriefDescription": "Mispredicted conditional retired branches (Precise Event)"
265 },
266 {
267 "PEBS": "1",
268 "EventCode": "0xC5",
269 "Counter": "0,1,2,3",
270 "UMask": "0x2",
271 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
272 "SampleAfterValue": "2000",
273 "BriefDescription": "Mispredicted near retired calls (Precise Event)"
274 },
275 {
276 "EventCode": "0x0",
277 "Counter": "Fixed counter 3",
278 "UMask": "0x0",
279 "EventName": "CPU_CLK_UNHALTED.REF",
280 "SampleAfterValue": "2000000",
281 "BriefDescription": "Reference cycles when thread is not halted (fixed counter)"
282 },
283 {
284 "EventCode": "0x3C",
285 "Counter": "0,1,2,3",
286 "UMask": "0x1",
287 "EventName": "CPU_CLK_UNHALTED.REF_P",
288 "SampleAfterValue": "100000",
289 "BriefDescription": "Reference base clock (133 Mhz) cycles when thread is not halted (programmable counter)"
290 },
291 {
292 "EventCode": "0x0",
293 "Counter": "Fixed counter 2",
294 "UMask": "0x0",
295 "EventName": "CPU_CLK_UNHALTED.THREAD",
296 "SampleAfterValue": "2000000",
297 "BriefDescription": "Cycles when thread is not halted (fixed counter)"
298 },
299 {
300 "EventCode": "0x3C",
301 "Counter": "0,1,2,3",
302 "UMask": "0x0",
303 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
304 "SampleAfterValue": "2000000",
305 "BriefDescription": "Cycles when thread is not halted (programmable counter)"
306 },
307 {
308 "EventCode": "0x3C",
309 "Invert": "1",
310 "Counter": "0,1,2,3",
311 "UMask": "0x0",
312 "EventName": "CPU_CLK_UNHALTED.TOTAL_CYCLES",
313 "SampleAfterValue": "2000000",
314 "BriefDescription": "Total CPU cycles",
315 "CounterMask": "2"
316 },
317 {
318 "EventCode": "0x87",
319 "Counter": "0,1,2,3",
320 "UMask": "0xf",
321 "EventName": "ILD_STALL.ANY",
322 "SampleAfterValue": "2000000",
323 "BriefDescription": "Any Instruction Length Decoder stall cycles"
324 },
325 {
326 "EventCode": "0x87",
327 "Counter": "0,1,2,3",
328 "UMask": "0x4",
329 "EventName": "ILD_STALL.IQ_FULL",
330 "SampleAfterValue": "2000000",
331 "BriefDescription": "Instruction Queue full stall cycles"
332 },
333 {
334 "EventCode": "0x87",
335 "Counter": "0,1,2,3",
336 "UMask": "0x1",
337 "EventName": "ILD_STALL.LCP",
338 "SampleAfterValue": "2000000",
339 "BriefDescription": "Length Change Prefix stall cycles"
340 },
341 {
342 "EventCode": "0x87",
343 "Counter": "0,1,2,3",
344 "UMask": "0x2",
345 "EventName": "ILD_STALL.MRU",
346 "SampleAfterValue": "2000000",
347 "BriefDescription": "Stall cycles due to BPU MRU bypass"
348 },
349 {
350 "EventCode": "0x87",
351 "Counter": "0,1,2,3",
352 "UMask": "0x8",
353 "EventName": "ILD_STALL.REGEN",
354 "SampleAfterValue": "2000000",
355 "BriefDescription": "Regen stall cycles"
356 },
357 {
358 "EventCode": "0x18",
359 "Counter": "0,1,2,3",
360 "UMask": "0x1",
361 "EventName": "INST_DECODED.DEC0",
362 "SampleAfterValue": "2000000",
363 "BriefDescription": "Instructions that must be decoded by decoder 0"
364 },
365 {
366 "EventCode": "0x1E",
367 "Counter": "0,1,2,3",
368 "UMask": "0x1",
369 "EventName": "INST_QUEUE_WRITE_CYCLES",
370 "SampleAfterValue": "2000000",
371 "BriefDescription": "Cycles instructions are written to the instruction queue"
372 },
373 {
374 "EventCode": "0x17",
375 "Counter": "0,1,2,3",
376 "UMask": "0x1",
377 "EventName": "INST_QUEUE_WRITES",
378 "SampleAfterValue": "2000000",
379 "BriefDescription": "Instructions written to instruction queue."
380 },
381 {
382 "EventCode": "0x0",
383 "Counter": "Fixed counter 1",
384 "UMask": "0x0",
385 "EventName": "INST_RETIRED.ANY",
386 "SampleAfterValue": "2000000",
387 "BriefDescription": "Instructions retired (fixed counter)"
388 },
389 {
390 "PEBS": "1",
391 "EventCode": "0xC0",
392 "Counter": "0,1,2,3",
393 "UMask": "0x1",
394 "EventName": "INST_RETIRED.ANY_P",
395 "SampleAfterValue": "2000000",
396 "BriefDescription": "Instructions retired (Programmable counter and Precise Event)"
397 },
398 {
399 "PEBS": "1",
400 "EventCode": "0xC0",
401 "Counter": "0,1,2,3",
402 "UMask": "0x4",
403 "EventName": "INST_RETIRED.MMX",
404 "SampleAfterValue": "2000000",
405 "BriefDescription": "Retired MMX instructions (Precise Event)"
406 },
407 {
408 "PEBS": "1",
409 "EventCode": "0xC0",
410 "Invert": "1",
411 "Counter": "0,1,2,3",
412 "UMask": "0x1",
413 "EventName": "INST_RETIRED.TOTAL_CYCLES",
414 "SampleAfterValue": "2000000",
415 "BriefDescription": "Total cycles (Precise Event)",
416 "CounterMask": "16"
417 },
418 {
419 "PEBS": "1",
420 "EventCode": "0xC0",
421 "Counter": "0,1,2,3",
422 "UMask": "0x2",
423 "EventName": "INST_RETIRED.X87",
424 "SampleAfterValue": "2000000",
425 "BriefDescription": "Retired floating-point operations (Precise Event)"
426 },
427 {
428 "EventCode": "0x4C",
429 "Counter": "0,1",
430 "UMask": "0x1",
431 "EventName": "LOAD_HIT_PRE",
432 "SampleAfterValue": "200000",
433 "BriefDescription": "Load operations conflicting with software prefetches"
434 },
435 {
436 "EventCode": "0xA8",
437 "Counter": "0,1,2,3",
438 "UMask": "0x1",
439 "EventName": "LSD.ACTIVE",
440 "SampleAfterValue": "2000000",
441 "BriefDescription": "Cycles when uops were delivered by the LSD",
442 "CounterMask": "1"
443 },
444 {
445 "EventCode": "0xA8",
446 "Invert": "1",
447 "Counter": "0,1,2,3",
448 "UMask": "0x1",
449 "EventName": "LSD.INACTIVE",
450 "SampleAfterValue": "2000000",
451 "BriefDescription": "Cycles no uops were delivered by the LSD",
452 "CounterMask": "1"
453 },
454 {
455 "EventCode": "0x20",
456 "Counter": "0,1,2,3",
457 "UMask": "0x1",
458 "EventName": "LSD_OVERFLOW",
459 "SampleAfterValue": "2000000",
460 "BriefDescription": "Loops that can't stream from the instruction queue"
461 },
462 {
463 "EventCode": "0xC3",
464 "Counter": "0,1,2,3",
465 "UMask": "0x1",
466 "EventName": "MACHINE_CLEARS.CYCLES",
467 "SampleAfterValue": "20000",
468 "BriefDescription": "Cycles machine clear asserted"
469 },
470 {
471 "EventCode": "0xC3",
472 "Counter": "0,1,2,3",
473 "UMask": "0x2",
474 "EventName": "MACHINE_CLEARS.MEM_ORDER",
475 "SampleAfterValue": "20000",
476 "BriefDescription": "Execution pipeline restart due to Memory ordering conflicts"
477 },
478 {
479 "EventCode": "0xC3",
480 "Counter": "0,1,2,3",
481 "UMask": "0x4",
482 "EventName": "MACHINE_CLEARS.SMC",
483 "SampleAfterValue": "20000",
484 "BriefDescription": "Self-Modifying Code detected"
485 },
486 {
487 "EventCode": "0xA2",
488 "Counter": "0,1,2,3",
489 "UMask": "0x1",
490 "EventName": "RESOURCE_STALLS.ANY",
491 "SampleAfterValue": "2000000",
492 "BriefDescription": "Resource related stall cycles"
493 },
494 {
495 "EventCode": "0xA2",
496 "Counter": "0,1,2,3",
497 "UMask": "0x20",
498 "EventName": "RESOURCE_STALLS.FPCW",
499 "SampleAfterValue": "2000000",
500 "BriefDescription": "FPU control word write stall cycles"
501 },
502 {
503 "EventCode": "0xA2",
504 "Counter": "0,1,2,3",
505 "UMask": "0x2",
506 "EventName": "RESOURCE_STALLS.LOAD",
507 "SampleAfterValue": "2000000",
508 "BriefDescription": "Load buffer stall cycles"
509 },
510 {
511 "EventCode": "0xA2",
512 "Counter": "0,1,2,3",
513 "UMask": "0x40",
514 "EventName": "RESOURCE_STALLS.MXCSR",
515 "SampleAfterValue": "2000000",
516 "BriefDescription": "MXCSR rename stall cycles"
517 },
518 {
519 "EventCode": "0xA2",
520 "Counter": "0,1,2,3",
521 "UMask": "0x80",
522 "EventName": "RESOURCE_STALLS.OTHER",
523 "SampleAfterValue": "2000000",
524 "BriefDescription": "Other Resource related stall cycles"
525 },
526 {
527 "EventCode": "0xA2",
528 "Counter": "0,1,2,3",
529 "UMask": "0x10",
530 "EventName": "RESOURCE_STALLS.ROB_FULL",
531 "SampleAfterValue": "2000000",
532 "BriefDescription": "ROB full stall cycles"
533 },
534 {
535 "EventCode": "0xA2",
536 "Counter": "0,1,2,3",
537 "UMask": "0x4",
538 "EventName": "RESOURCE_STALLS.RS_FULL",
539 "SampleAfterValue": "2000000",
540 "BriefDescription": "Reservation Station full stall cycles"
541 },
542 {
543 "EventCode": "0xA2",
544 "Counter": "0,1,2,3",
545 "UMask": "0x8",
546 "EventName": "RESOURCE_STALLS.STORE",
547 "SampleAfterValue": "2000000",
548 "BriefDescription": "Store buffer stall cycles"
549 },
550 {
551 "PEBS": "1",
552 "EventCode": "0xC7",
553 "Counter": "0,1,2,3",
554 "UMask": "0x4",
555 "EventName": "SSEX_UOPS_RETIRED.PACKED_DOUBLE",
556 "SampleAfterValue": "200000",
557 "BriefDescription": "SIMD Packed-Double Uops retired (Precise Event)"
558 },
559 {
560 "PEBS": "1",
561 "EventCode": "0xC7",
562 "Counter": "0,1,2,3",
563 "UMask": "0x1",
564 "EventName": "SSEX_UOPS_RETIRED.PACKED_SINGLE",
565 "SampleAfterValue": "200000",
566 "BriefDescription": "SIMD Packed-Single Uops retired (Precise Event)"
567 },
568 {
569 "PEBS": "1",
570 "EventCode": "0xC7",
571 "Counter": "0,1,2,3",
572 "UMask": "0x8",
573 "EventName": "SSEX_UOPS_RETIRED.SCALAR_DOUBLE",
574 "SampleAfterValue": "200000",
575 "BriefDescription": "SIMD Scalar-Double Uops retired (Precise Event)"
576 },
577 {
578 "PEBS": "1",
579 "EventCode": "0xC7",
580 "Counter": "0,1,2,3",
581 "UMask": "0x2",
582 "EventName": "SSEX_UOPS_RETIRED.SCALAR_SINGLE",
583 "SampleAfterValue": "200000",
584 "BriefDescription": "SIMD Scalar-Single Uops retired (Precise Event)"
585 },
586 {
587 "PEBS": "1",
588 "EventCode": "0xC7",
589 "Counter": "0,1,2,3",
590 "UMask": "0x10",
591 "EventName": "SSEX_UOPS_RETIRED.VECTOR_INTEGER",
592 "SampleAfterValue": "200000",
593 "BriefDescription": "SIMD Vector Integer Uops retired (Precise Event)"
594 },
595 {
596 "EventCode": "0xDB",
597 "Counter": "0,1,2,3",
598 "UMask": "0x1",
599 "EventName": "UOP_UNFUSION",
600 "SampleAfterValue": "2000000",
601 "BriefDescription": "Uop unfusions due to FP exceptions"
602 },
603 {
604 "EventCode": "0xD1",
605 "Counter": "0,1,2,3",
606 "UMask": "0x4",
607 "EventName": "UOPS_DECODED.ESP_FOLDING",
608 "SampleAfterValue": "2000000",
609 "BriefDescription": "Stack pointer instructions decoded"
610 },
611 {
612 "EventCode": "0xD1",
613 "Counter": "0,1,2,3",
614 "UMask": "0x8",
615 "EventName": "UOPS_DECODED.ESP_SYNC",
616 "SampleAfterValue": "2000000",
617 "BriefDescription": "Stack pointer sync operations"
618 },
619 {
620 "EventCode": "0xD1",
621 "Counter": "0,1,2,3",
622 "UMask": "0x2",
623 "EventName": "UOPS_DECODED.MS_CYCLES_ACTIVE",
624 "SampleAfterValue": "2000000",
625 "BriefDescription": "Uops decoded by Microcode Sequencer",
626 "CounterMask": "1"
627 },
628 {
629 "EventCode": "0xD1",
630 "Invert": "1",
631 "Counter": "0,1,2,3",
632 "UMask": "0x1",
633 "EventName": "UOPS_DECODED.STALL_CYCLES",
634 "SampleAfterValue": "2000000",
635 "BriefDescription": "Cycles no Uops are decoded",
636 "CounterMask": "1"
637 },
638 {
639 "EventCode": "0xB1",
640 "Counter": "0,1,2,3",
641 "UMask": "0x3f",
642 "AnyThread": "1",
643 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES",
644 "SampleAfterValue": "2000000",
645 "BriefDescription": "Cycles Uops executed on any port (core count)",
646 "CounterMask": "1"
647 },
648 {
649 "EventCode": "0xB1",
650 "Counter": "0,1,2,3",
651 "UMask": "0x1f",
652 "AnyThread": "1",
653 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES_NO_PORT5",
654 "SampleAfterValue": "2000000",
655 "BriefDescription": "Cycles Uops executed on ports 0-4 (core count)",
656 "CounterMask": "1"
657 },
658 {
659 "EventCode": "0xB1",
660 "Invert": "1",
661 "Counter": "0,1,2,3",
662 "UMask": "0x3f",
663 "AnyThread": "1",
664 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT",
665 "SampleAfterValue": "2000000",
666 "BriefDescription": "Uops executed on any port (core count)",
667 "CounterMask": "1",
668 "EdgeDetect": "1"
669 },
670 {
671 "EventCode": "0xB1",
672 "Invert": "1",
673 "Counter": "0,1,2,3",
674 "UMask": "0x1f",
675 "AnyThread": "1",
676 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT_NO_PORT5",
677 "SampleAfterValue": "2000000",
678 "BriefDescription": "Uops executed on ports 0-4 (core count)",
679 "CounterMask": "1",
680 "EdgeDetect": "1"
681 },
682 {
683 "EventCode": "0xB1",
684 "Invert": "1",
685 "Counter": "0,1,2,3",
686 "UMask": "0x3f",
687 "AnyThread": "1",
688 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES",
689 "SampleAfterValue": "2000000",
690 "BriefDescription": "Cycles no Uops issued on any port (core count)",
691 "CounterMask": "1"
692 },
693 {
694 "EventCode": "0xB1",
695 "Invert": "1",
696 "Counter": "0,1,2,3",
697 "UMask": "0x1f",
698 "AnyThread": "1",
699 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES_NO_PORT5",
700 "SampleAfterValue": "2000000",
701 "BriefDescription": "Cycles no Uops issued on ports 0-4 (core count)",
702 "CounterMask": "1"
703 },
704 {
705 "EventCode": "0xB1",
706 "Counter": "0,1,2,3",
707 "UMask": "0x1",
708 "EventName": "UOPS_EXECUTED.PORT0",
709 "SampleAfterValue": "2000000",
710 "BriefDescription": "Uops executed on port 0"
711 },
712 {
713 "EventCode": "0xB1",
714 "Counter": "0,1,2,3",
715 "UMask": "0x40",
716 "EventName": "UOPS_EXECUTED.PORT015",
717 "SampleAfterValue": "2000000",
718 "BriefDescription": "Uops issued on ports 0, 1 or 5"
719 },
720 {
721 "EventCode": "0xB1",
722 "Invert": "1",
723 "Counter": "0,1,2,3",
724 "UMask": "0x40",
725 "EventName": "UOPS_EXECUTED.PORT015_STALL_CYCLES",
726 "SampleAfterValue": "2000000",
727 "BriefDescription": "Cycles no Uops issued on ports 0, 1 or 5",
728 "CounterMask": "1"
729 },
730 {
731 "EventCode": "0xB1",
732 "Counter": "0,1,2,3",
733 "UMask": "0x2",
734 "EventName": "UOPS_EXECUTED.PORT1",
735 "SampleAfterValue": "2000000",
736 "BriefDescription": "Uops executed on port 1"
737 },
738 {
739 "EventCode": "0xB1",
740 "Counter": "0,1,2,3",
741 "UMask": "0x4",
742 "AnyThread": "1",
743 "EventName": "UOPS_EXECUTED.PORT2_CORE",
744 "SampleAfterValue": "2000000",
745 "BriefDescription": "Uops executed on port 2 (core count)"
746 },
747 {
748 "EventCode": "0xB1",
749 "Counter": "0,1,2,3",
750 "UMask": "0x80",
751 "AnyThread": "1",
752 "EventName": "UOPS_EXECUTED.PORT234_CORE",
753 "SampleAfterValue": "2000000",
754 "BriefDescription": "Uops issued on ports 2, 3 or 4"
755 },
756 {
757 "EventCode": "0xB1",
758 "Counter": "0,1,2,3",
759 "UMask": "0x8",
760 "AnyThread": "1",
761 "EventName": "UOPS_EXECUTED.PORT3_CORE",
762 "SampleAfterValue": "2000000",
763 "BriefDescription": "Uops executed on port 3 (core count)"
764 },
765 {
766 "EventCode": "0xB1",
767 "Counter": "0,1,2,3",
768 "UMask": "0x10",
769 "AnyThread": "1",
770 "EventName": "UOPS_EXECUTED.PORT4_CORE",
771 "SampleAfterValue": "2000000",
772 "BriefDescription": "Uops executed on port 4 (core count)"
773 },
774 {
775 "EventCode": "0xB1",
776 "Counter": "0,1,2,3",
777 "UMask": "0x20",
778 "EventName": "UOPS_EXECUTED.PORT5",
779 "SampleAfterValue": "2000000",
780 "BriefDescription": "Uops executed on port 5"
781 },
782 {
783 "EventCode": "0xE",
784 "Counter": "0,1,2,3",
785 "UMask": "0x1",
786 "EventName": "UOPS_ISSUED.ANY",
787 "SampleAfterValue": "2000000",
788 "BriefDescription": "Uops issued"
789 },
790 {
791 "EventCode": "0xE",
792 "Invert": "1",
793 "Counter": "0,1,2,3",
794 "UMask": "0x1",
795 "AnyThread": "1",
796 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
797 "SampleAfterValue": "2000000",
798 "BriefDescription": "Cycles no Uops were issued on any thread",
799 "CounterMask": "1"
800 },
801 {
802 "EventCode": "0xE",
803 "Counter": "0,1,2,3",
804 "UMask": "0x1",
805 "AnyThread": "1",
806 "EventName": "UOPS_ISSUED.CYCLES_ALL_THREADS",
807 "SampleAfterValue": "2000000",
808 "BriefDescription": "Cycles Uops were issued on either thread",
809 "CounterMask": "1"
810 },
811 {
812 "EventCode": "0xE",
813 "Counter": "0,1,2,3",
814 "UMask": "0x2",
815 "EventName": "UOPS_ISSUED.FUSED",
816 "SampleAfterValue": "2000000",
817 "BriefDescription": "Fused Uops issued"
818 },
819 {
820 "EventCode": "0xE",
821 "Invert": "1",
822 "Counter": "0,1,2,3",
823 "UMask": "0x1",
824 "EventName": "UOPS_ISSUED.STALL_CYCLES",
825 "SampleAfterValue": "2000000",
826 "BriefDescription": "Cycles no Uops were issued",
827 "CounterMask": "1"
828 },
829 {
830 "PEBS": "1",
831 "EventCode": "0xC2",
832 "Counter": "0,1,2,3",
833 "UMask": "0x1",
834 "EventName": "UOPS_RETIRED.ACTIVE_CYCLES",
835 "SampleAfterValue": "2000000",
836 "BriefDescription": "Cycles Uops are being retired",
837 "CounterMask": "1"
838 },
839 {
840 "PEBS": "1",
841 "EventCode": "0xC2",
842 "Counter": "0,1,2,3",
843 "UMask": "0x1",
844 "EventName": "UOPS_RETIRED.ANY",
845 "SampleAfterValue": "2000000",
846 "BriefDescription": "Uops retired (Precise Event)"
847 },
848 {
849 "PEBS": "1",
850 "EventCode": "0xC2",
851 "Counter": "0,1,2,3",
852 "UMask": "0x4",
853 "EventName": "UOPS_RETIRED.MACRO_FUSED",
854 "SampleAfterValue": "2000000",
855 "BriefDescription": "Macro-fused Uops retired (Precise Event)"
856 },
857 {
858 "PEBS": "1",
859 "EventCode": "0xC2",
860 "Counter": "0,1,2,3",
861 "UMask": "0x2",
862 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
863 "SampleAfterValue": "2000000",
864 "BriefDescription": "Retirement slots used (Precise Event)"
865 },
866 {
867 "PEBS": "1",
868 "EventCode": "0xC2",
869 "Invert": "1",
870 "Counter": "0,1,2,3",
871 "UMask": "0x1",
872 "EventName": "UOPS_RETIRED.STALL_CYCLES",
873 "SampleAfterValue": "2000000",
874 "BriefDescription": "Cycles Uops are not retiring (Precise Event)",
875 "CounterMask": "1"
876 },
877 {
878 "PEBS": "1",
879 "EventCode": "0xC2",
880 "Invert": "1",
881 "Counter": "0,1,2,3",
882 "UMask": "0x1",
883 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
884 "SampleAfterValue": "2000000",
885 "BriefDescription": "Total cycles using precise uop retired event (Precise Event)",
886 "CounterMask": "16"
887 },
888 {
889 "PEBS": "2",
890 "EventCode": "0xC0",
891 "Invert": "1",
892 "Counter": "0,1,2,3",
893 "UMask": "0x1",
894 "EventName": "INST_RETIRED.TOTAL_CYCLES_PS",
895 "SampleAfterValue": "2000000",
896 "BriefDescription": "Total cycles (Precise Event)",
897 "CounterMask": "16"
898 }
899] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-dp/virtual-memory.json b/tools/perf/pmu-events/arch/x86/westmereep-dp/virtual-memory.json
new file mode 100644
index 000000000000..57b53562e2bd
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-dp/virtual-memory.json
@@ -0,0 +1,173 @@
1[
2 {
3 "EventCode": "0x8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "DTLB_LOAD_MISSES.ANY",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "DTLB load misses"
9 },
10 {
11 "EventCode": "0x8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x80",
14 "EventName": "DTLB_LOAD_MISSES.LARGE_WALK_COMPLETED",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "DTLB load miss large page walks"
17 },
18 {
19 "EventCode": "0x8",
20 "Counter": "0,1,2,3",
21 "UMask": "0x20",
22 "EventName": "DTLB_LOAD_MISSES.PDE_MISS",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "DTLB load miss caused by low part of address"
25 },
26 {
27 "EventCode": "0x8",
28 "Counter": "0,1,2,3",
29 "UMask": "0x10",
30 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "DTLB second level hit"
33 },
34 {
35 "EventCode": "0x8",
36 "Counter": "0,1,2,3",
37 "UMask": "0x2",
38 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "DTLB load miss page walks complete"
41 },
42 {
43 "EventCode": "0x8",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "DTLB_LOAD_MISSES.WALK_CYCLES",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "DTLB load miss page walk cycles"
49 },
50 {
51 "EventCode": "0x49",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "DTLB_MISSES.ANY",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "DTLB misses"
57 },
58 {
59 "EventCode": "0x49",
60 "Counter": "0,1,2,3",
61 "UMask": "0x80",
62 "EventName": "DTLB_MISSES.LARGE_WALK_COMPLETED",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "DTLB miss large page walks"
65 },
66 {
67 "EventCode": "0x49",
68 "Counter": "0,1,2,3",
69 "UMask": "0x20",
70 "EventName": "DTLB_MISSES.PDE_MISS",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "DTLB misses casued by low part of address"
73 },
74 {
75 "EventCode": "0x49",
76 "Counter": "0,1,2,3",
77 "UMask": "0x10",
78 "EventName": "DTLB_MISSES.STLB_HIT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "DTLB first level misses but second level hit"
81 },
82 {
83 "EventCode": "0x49",
84 "Counter": "0,1,2,3",
85 "UMask": "0x2",
86 "EventName": "DTLB_MISSES.WALK_COMPLETED",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "DTLB miss page walks"
89 },
90 {
91 "EventCode": "0x49",
92 "Counter": "0,1,2,3",
93 "UMask": "0x4",
94 "EventName": "DTLB_MISSES.WALK_CYCLES",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "DTLB miss page walk cycles"
97 },
98 {
99 "EventCode": "0x4F",
100 "Counter": "0,1,2,3",
101 "UMask": "0x10",
102 "EventName": "EPT.WALK_CYCLES",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Extended Page Table walk cycles"
105 },
106 {
107 "EventCode": "0xAE",
108 "Counter": "0,1,2,3",
109 "UMask": "0x1",
110 "EventName": "ITLB_FLUSH",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "ITLB flushes"
113 },
114 {
115 "PEBS": "1",
116 "EventCode": "0xC8",
117 "Counter": "0,1,2,3",
118 "UMask": "0x20",
119 "EventName": "ITLB_MISS_RETIRED",
120 "SampleAfterValue": "200000",
121 "BriefDescription": "Retired instructions that missed the ITLB (Precise Event)"
122 },
123 {
124 "EventCode": "0x85",
125 "Counter": "0,1,2,3",
126 "UMask": "0x1",
127 "EventName": "ITLB_MISSES.ANY",
128 "SampleAfterValue": "200000",
129 "BriefDescription": "ITLB miss"
130 },
131 {
132 "EventCode": "0x85",
133 "Counter": "0,1,2,3",
134 "UMask": "0x80",
135 "EventName": "ITLB_MISSES.LARGE_WALK_COMPLETED",
136 "SampleAfterValue": "200000",
137 "BriefDescription": "ITLB miss large page walks"
138 },
139 {
140 "EventCode": "0x85",
141 "Counter": "0,1,2,3",
142 "UMask": "0x2",
143 "EventName": "ITLB_MISSES.WALK_COMPLETED",
144 "SampleAfterValue": "200000",
145 "BriefDescription": "ITLB miss page walks"
146 },
147 {
148 "EventCode": "0x85",
149 "Counter": "0,1,2,3",
150 "UMask": "0x4",
151 "EventName": "ITLB_MISSES.WALK_CYCLES",
152 "SampleAfterValue": "2000000",
153 "BriefDescription": "ITLB miss page walk cycles"
154 },
155 {
156 "PEBS": "1",
157 "EventCode": "0xCB",
158 "Counter": "0,1,2,3",
159 "UMask": "0x80",
160 "EventName": "MEM_LOAD_RETIRED.DTLB_MISS",
161 "SampleAfterValue": "200000",
162 "BriefDescription": "Retired loads that miss the DTLB (Precise Event)"
163 },
164 {
165 "PEBS": "1",
166 "EventCode": "0xC",
167 "Counter": "0,1,2,3",
168 "UMask": "0x1",
169 "EventName": "MEM_STORE_RETIRED.DTLB_MISS",
170 "SampleAfterValue": "200000",
171 "BriefDescription": "Retired stores that miss the DTLB (Precise Event)"
172 }
173] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-sp/cache.json b/tools/perf/pmu-events/arch/x86/westmereep-sp/cache.json
new file mode 100644
index 000000000000..dad20f0e3cac
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-sp/cache.json
@@ -0,0 +1,3233 @@
1[
2 {
3 "EventCode": "0x63",
4 "Counter": "0,1",
5 "UMask": "0x2",
6 "EventName": "CACHE_LOCK_CYCLES.L1D",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles L1D locked"
9 },
10 {
11 "EventCode": "0x63",
12 "Counter": "0,1",
13 "UMask": "0x1",
14 "EventName": "CACHE_LOCK_CYCLES.L1D_L2",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Cycles L1D and L2 locked"
17 },
18 {
19 "EventCode": "0x51",
20 "Counter": "0,1",
21 "UMask": "0x4",
22 "EventName": "L1D.M_EVICT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "L1D cache lines replaced in M state"
25 },
26 {
27 "EventCode": "0x51",
28 "Counter": "0,1",
29 "UMask": "0x2",
30 "EventName": "L1D.M_REPL",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "L1D cache lines allocated in the M state"
33 },
34 {
35 "EventCode": "0x51",
36 "Counter": "0,1",
37 "UMask": "0x8",
38 "EventName": "L1D.M_SNOOP_EVICT",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "L1D snoop eviction of cache lines in M state"
41 },
42 {
43 "EventCode": "0x51",
44 "Counter": "0,1",
45 "UMask": "0x1",
46 "EventName": "L1D.REPL",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1 data cache lines allocated"
49 },
50 {
51 "EventCode": "0x52",
52 "Counter": "0,1",
53 "UMask": "0x1",
54 "EventName": "L1D_CACHE_PREFETCH_LOCK_FB_HIT",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1D prefetch load lock accepted in fill buffer"
57 },
58 {
59 "EventCode": "0x4E",
60 "Counter": "0,1",
61 "UMask": "0x2",
62 "EventName": "L1D_PREFETCH.MISS",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "L1D hardware prefetch misses"
65 },
66 {
67 "EventCode": "0x4E",
68 "Counter": "0,1",
69 "UMask": "0x1",
70 "EventName": "L1D_PREFETCH.REQUESTS",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "L1D hardware prefetch requests"
73 },
74 {
75 "EventCode": "0x4E",
76 "Counter": "0,1",
77 "UMask": "0x4",
78 "EventName": "L1D_PREFETCH.TRIGGERS",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "L1D hardware prefetch requests triggered"
81 },
82 {
83 "EventCode": "0x28",
84 "Counter": "0,1,2,3",
85 "UMask": "0x4",
86 "EventName": "L1D_WB_L2.E_STATE",
87 "SampleAfterValue": "100000",
88 "BriefDescription": "L1 writebacks to L2 in E state"
89 },
90 {
91 "EventCode": "0x28",
92 "Counter": "0,1,2,3",
93 "UMask": "0x1",
94 "EventName": "L1D_WB_L2.I_STATE",
95 "SampleAfterValue": "100000",
96 "BriefDescription": "L1 writebacks to L2 in I state (misses)"
97 },
98 {
99 "EventCode": "0x28",
100 "Counter": "0,1,2,3",
101 "UMask": "0x8",
102 "EventName": "L1D_WB_L2.M_STATE",
103 "SampleAfterValue": "100000",
104 "BriefDescription": "L1 writebacks to L2 in M state"
105 },
106 {
107 "EventCode": "0x28",
108 "Counter": "0,1,2,3",
109 "UMask": "0xf",
110 "EventName": "L1D_WB_L2.MESI",
111 "SampleAfterValue": "100000",
112 "BriefDescription": "All L1 writebacks to L2"
113 },
114 {
115 "EventCode": "0x28",
116 "Counter": "0,1,2,3",
117 "UMask": "0x2",
118 "EventName": "L1D_WB_L2.S_STATE",
119 "SampleAfterValue": "100000",
120 "BriefDescription": "L1 writebacks to L2 in S state"
121 },
122 {
123 "EventCode": "0x26",
124 "Counter": "0,1,2,3",
125 "UMask": "0xff",
126 "EventName": "L2_DATA_RQSTS.ANY",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "All L2 data requests"
129 },
130 {
131 "EventCode": "0x26",
132 "Counter": "0,1,2,3",
133 "UMask": "0x4",
134 "EventName": "L2_DATA_RQSTS.DEMAND.E_STATE",
135 "SampleAfterValue": "200000",
136 "BriefDescription": "L2 data demand loads in E state"
137 },
138 {
139 "EventCode": "0x26",
140 "Counter": "0,1,2,3",
141 "UMask": "0x1",
142 "EventName": "L2_DATA_RQSTS.DEMAND.I_STATE",
143 "SampleAfterValue": "200000",
144 "BriefDescription": "L2 data demand loads in I state (misses)"
145 },
146 {
147 "EventCode": "0x26",
148 "Counter": "0,1,2,3",
149 "UMask": "0x8",
150 "EventName": "L2_DATA_RQSTS.DEMAND.M_STATE",
151 "SampleAfterValue": "200000",
152 "BriefDescription": "L2 data demand loads in M state"
153 },
154 {
155 "EventCode": "0x26",
156 "Counter": "0,1,2,3",
157 "UMask": "0xf",
158 "EventName": "L2_DATA_RQSTS.DEMAND.MESI",
159 "SampleAfterValue": "200000",
160 "BriefDescription": "L2 data demand requests"
161 },
162 {
163 "EventCode": "0x26",
164 "Counter": "0,1,2,3",
165 "UMask": "0x2",
166 "EventName": "L2_DATA_RQSTS.DEMAND.S_STATE",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "L2 data demand loads in S state"
169 },
170 {
171 "EventCode": "0x26",
172 "Counter": "0,1,2,3",
173 "UMask": "0x40",
174 "EventName": "L2_DATA_RQSTS.PREFETCH.E_STATE",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "L2 data prefetches in E state"
177 },
178 {
179 "EventCode": "0x26",
180 "Counter": "0,1,2,3",
181 "UMask": "0x10",
182 "EventName": "L2_DATA_RQSTS.PREFETCH.I_STATE",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "L2 data prefetches in the I state (misses)"
185 },
186 {
187 "EventCode": "0x26",
188 "Counter": "0,1,2,3",
189 "UMask": "0x80",
190 "EventName": "L2_DATA_RQSTS.PREFETCH.M_STATE",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "L2 data prefetches in M state"
193 },
194 {
195 "EventCode": "0x26",
196 "Counter": "0,1,2,3",
197 "UMask": "0xf0",
198 "EventName": "L2_DATA_RQSTS.PREFETCH.MESI",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "All L2 data prefetches"
201 },
202 {
203 "EventCode": "0x26",
204 "Counter": "0,1,2,3",
205 "UMask": "0x20",
206 "EventName": "L2_DATA_RQSTS.PREFETCH.S_STATE",
207 "SampleAfterValue": "200000",
208 "BriefDescription": "L2 data prefetches in the S state"
209 },
210 {
211 "EventCode": "0xF1",
212 "Counter": "0,1,2,3",
213 "UMask": "0x7",
214 "EventName": "L2_LINES_IN.ANY",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "L2 lines alloacated"
217 },
218 {
219 "EventCode": "0xF1",
220 "Counter": "0,1,2,3",
221 "UMask": "0x4",
222 "EventName": "L2_LINES_IN.E_STATE",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "L2 lines allocated in the E state"
225 },
226 {
227 "EventCode": "0xF1",
228 "Counter": "0,1,2,3",
229 "UMask": "0x2",
230 "EventName": "L2_LINES_IN.S_STATE",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "L2 lines allocated in the S state"
233 },
234 {
235 "EventCode": "0xF2",
236 "Counter": "0,1,2,3",
237 "UMask": "0xf",
238 "EventName": "L2_LINES_OUT.ANY",
239 "SampleAfterValue": "100000",
240 "BriefDescription": "L2 lines evicted"
241 },
242 {
243 "EventCode": "0xF2",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
247 "SampleAfterValue": "100000",
248 "BriefDescription": "L2 lines evicted by a demand request"
249 },
250 {
251 "EventCode": "0xF2",
252 "Counter": "0,1,2,3",
253 "UMask": "0x2",
254 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
255 "SampleAfterValue": "100000",
256 "BriefDescription": "L2 modified lines evicted by a demand request"
257 },
258 {
259 "EventCode": "0xF2",
260 "Counter": "0,1,2,3",
261 "UMask": "0x4",
262 "EventName": "L2_LINES_OUT.PREFETCH_CLEAN",
263 "SampleAfterValue": "100000",
264 "BriefDescription": "L2 lines evicted by a prefetch request"
265 },
266 {
267 "EventCode": "0xF2",
268 "Counter": "0,1,2,3",
269 "UMask": "0x8",
270 "EventName": "L2_LINES_OUT.PREFETCH_DIRTY",
271 "SampleAfterValue": "100000",
272 "BriefDescription": "L2 modified lines evicted by a prefetch request"
273 },
274 {
275 "EventCode": "0x24",
276 "Counter": "0,1,2,3",
277 "UMask": "0x10",
278 "EventName": "L2_RQSTS.IFETCH_HIT",
279 "SampleAfterValue": "200000",
280 "BriefDescription": "L2 instruction fetch hits"
281 },
282 {
283 "EventCode": "0x24",
284 "Counter": "0,1,2,3",
285 "UMask": "0x20",
286 "EventName": "L2_RQSTS.IFETCH_MISS",
287 "SampleAfterValue": "200000",
288 "BriefDescription": "L2 instruction fetch misses"
289 },
290 {
291 "EventCode": "0x24",
292 "Counter": "0,1,2,3",
293 "UMask": "0x30",
294 "EventName": "L2_RQSTS.IFETCHES",
295 "SampleAfterValue": "200000",
296 "BriefDescription": "L2 instruction fetches"
297 },
298 {
299 "EventCode": "0x24",
300 "Counter": "0,1,2,3",
301 "UMask": "0x1",
302 "EventName": "L2_RQSTS.LD_HIT",
303 "SampleAfterValue": "200000",
304 "BriefDescription": "L2 load hits"
305 },
306 {
307 "EventCode": "0x24",
308 "Counter": "0,1,2,3",
309 "UMask": "0x2",
310 "EventName": "L2_RQSTS.LD_MISS",
311 "SampleAfterValue": "200000",
312 "BriefDescription": "L2 load misses"
313 },
314 {
315 "EventCode": "0x24",
316 "Counter": "0,1,2,3",
317 "UMask": "0x3",
318 "EventName": "L2_RQSTS.LOADS",
319 "SampleAfterValue": "200000",
320 "BriefDescription": "L2 requests"
321 },
322 {
323 "EventCode": "0x24",
324 "Counter": "0,1,2,3",
325 "UMask": "0xaa",
326 "EventName": "L2_RQSTS.MISS",
327 "SampleAfterValue": "200000",
328 "BriefDescription": "All L2 misses"
329 },
330 {
331 "EventCode": "0x24",
332 "Counter": "0,1,2,3",
333 "UMask": "0x40",
334 "EventName": "L2_RQSTS.PREFETCH_HIT",
335 "SampleAfterValue": "200000",
336 "BriefDescription": "L2 prefetch hits"
337 },
338 {
339 "EventCode": "0x24",
340 "Counter": "0,1,2,3",
341 "UMask": "0x80",
342 "EventName": "L2_RQSTS.PREFETCH_MISS",
343 "SampleAfterValue": "200000",
344 "BriefDescription": "L2 prefetch misses"
345 },
346 {
347 "EventCode": "0x24",
348 "Counter": "0,1,2,3",
349 "UMask": "0xc0",
350 "EventName": "L2_RQSTS.PREFETCHES",
351 "SampleAfterValue": "200000",
352 "BriefDescription": "All L2 prefetches"
353 },
354 {
355 "EventCode": "0x24",
356 "Counter": "0,1,2,3",
357 "UMask": "0xff",
358 "EventName": "L2_RQSTS.REFERENCES",
359 "SampleAfterValue": "200000",
360 "BriefDescription": "All L2 requests"
361 },
362 {
363 "EventCode": "0x24",
364 "Counter": "0,1,2,3",
365 "UMask": "0x4",
366 "EventName": "L2_RQSTS.RFO_HIT",
367 "SampleAfterValue": "200000",
368 "BriefDescription": "L2 RFO hits"
369 },
370 {
371 "EventCode": "0x24",
372 "Counter": "0,1,2,3",
373 "UMask": "0x8",
374 "EventName": "L2_RQSTS.RFO_MISS",
375 "SampleAfterValue": "200000",
376 "BriefDescription": "L2 RFO misses"
377 },
378 {
379 "EventCode": "0x24",
380 "Counter": "0,1,2,3",
381 "UMask": "0xc",
382 "EventName": "L2_RQSTS.RFOS",
383 "SampleAfterValue": "200000",
384 "BriefDescription": "L2 RFO requests"
385 },
386 {
387 "EventCode": "0xF0",
388 "Counter": "0,1,2,3",
389 "UMask": "0x80",
390 "EventName": "L2_TRANSACTIONS.ANY",
391 "SampleAfterValue": "200000",
392 "BriefDescription": "All L2 transactions"
393 },
394 {
395 "EventCode": "0xF0",
396 "Counter": "0,1,2,3",
397 "UMask": "0x20",
398 "EventName": "L2_TRANSACTIONS.FILL",
399 "SampleAfterValue": "200000",
400 "BriefDescription": "L2 fill transactions"
401 },
402 {
403 "EventCode": "0xF0",
404 "Counter": "0,1,2,3",
405 "UMask": "0x4",
406 "EventName": "L2_TRANSACTIONS.IFETCH",
407 "SampleAfterValue": "200000",
408 "BriefDescription": "L2 instruction fetch transactions"
409 },
410 {
411 "EventCode": "0xF0",
412 "Counter": "0,1,2,3",
413 "UMask": "0x10",
414 "EventName": "L2_TRANSACTIONS.L1D_WB",
415 "SampleAfterValue": "200000",
416 "BriefDescription": "L1D writeback to L2 transactions"
417 },
418 {
419 "EventCode": "0xF0",
420 "Counter": "0,1,2,3",
421 "UMask": "0x1",
422 "EventName": "L2_TRANSACTIONS.LOAD",
423 "SampleAfterValue": "200000",
424 "BriefDescription": "L2 Load transactions"
425 },
426 {
427 "EventCode": "0xF0",
428 "Counter": "0,1,2,3",
429 "UMask": "0x8",
430 "EventName": "L2_TRANSACTIONS.PREFETCH",
431 "SampleAfterValue": "200000",
432 "BriefDescription": "L2 prefetch transactions"
433 },
434 {
435 "EventCode": "0xF0",
436 "Counter": "0,1,2,3",
437 "UMask": "0x2",
438 "EventName": "L2_TRANSACTIONS.RFO",
439 "SampleAfterValue": "200000",
440 "BriefDescription": "L2 RFO transactions"
441 },
442 {
443 "EventCode": "0xF0",
444 "Counter": "0,1,2,3",
445 "UMask": "0x40",
446 "EventName": "L2_TRANSACTIONS.WB",
447 "SampleAfterValue": "200000",
448 "BriefDescription": "L2 writeback to LLC transactions"
449 },
450 {
451 "EventCode": "0x27",
452 "Counter": "0,1,2,3",
453 "UMask": "0x40",
454 "EventName": "L2_WRITE.LOCK.E_STATE",
455 "SampleAfterValue": "100000",
456 "BriefDescription": "L2 demand lock RFOs in E state"
457 },
458 {
459 "EventCode": "0x27",
460 "Counter": "0,1,2,3",
461 "UMask": "0xe0",
462 "EventName": "L2_WRITE.LOCK.HIT",
463 "SampleAfterValue": "100000",
464 "BriefDescription": "All demand L2 lock RFOs that hit the cache"
465 },
466 {
467 "EventCode": "0x27",
468 "Counter": "0,1,2,3",
469 "UMask": "0x10",
470 "EventName": "L2_WRITE.LOCK.I_STATE",
471 "SampleAfterValue": "100000",
472 "BriefDescription": "L2 demand lock RFOs in I state (misses)"
473 },
474 {
475 "EventCode": "0x27",
476 "Counter": "0,1,2,3",
477 "UMask": "0x80",
478 "EventName": "L2_WRITE.LOCK.M_STATE",
479 "SampleAfterValue": "100000",
480 "BriefDescription": "L2 demand lock RFOs in M state"
481 },
482 {
483 "EventCode": "0x27",
484 "Counter": "0,1,2,3",
485 "UMask": "0xf0",
486 "EventName": "L2_WRITE.LOCK.MESI",
487 "SampleAfterValue": "100000",
488 "BriefDescription": "All demand L2 lock RFOs"
489 },
490 {
491 "EventCode": "0x27",
492 "Counter": "0,1,2,3",
493 "UMask": "0x20",
494 "EventName": "L2_WRITE.LOCK.S_STATE",
495 "SampleAfterValue": "100000",
496 "BriefDescription": "L2 demand lock RFOs in S state"
497 },
498 {
499 "EventCode": "0x27",
500 "Counter": "0,1,2,3",
501 "UMask": "0xe",
502 "EventName": "L2_WRITE.RFO.HIT",
503 "SampleAfterValue": "100000",
504 "BriefDescription": "All L2 demand store RFOs that hit the cache"
505 },
506 {
507 "EventCode": "0x27",
508 "Counter": "0,1,2,3",
509 "UMask": "0x1",
510 "EventName": "L2_WRITE.RFO.I_STATE",
511 "SampleAfterValue": "100000",
512 "BriefDescription": "L2 demand store RFOs in I state (misses)"
513 },
514 {
515 "EventCode": "0x27",
516 "Counter": "0,1,2,3",
517 "UMask": "0x8",
518 "EventName": "L2_WRITE.RFO.M_STATE",
519 "SampleAfterValue": "100000",
520 "BriefDescription": "L2 demand store RFOs in M state"
521 },
522 {
523 "EventCode": "0x27",
524 "Counter": "0,1,2,3",
525 "UMask": "0xf",
526 "EventName": "L2_WRITE.RFO.MESI",
527 "SampleAfterValue": "100000",
528 "BriefDescription": "All L2 demand store RFOs"
529 },
530 {
531 "EventCode": "0x27",
532 "Counter": "0,1,2,3",
533 "UMask": "0x2",
534 "EventName": "L2_WRITE.RFO.S_STATE",
535 "SampleAfterValue": "100000",
536 "BriefDescription": "L2 demand store RFOs in S state"
537 },
538 {
539 "EventCode": "0x2E",
540 "Counter": "0,1,2,3",
541 "UMask": "0x41",
542 "EventName": "LONGEST_LAT_CACHE.MISS",
543 "SampleAfterValue": "100000",
544 "BriefDescription": "Longest latency cache miss"
545 },
546 {
547 "EventCode": "0x2E",
548 "Counter": "0,1,2,3",
549 "UMask": "0x4f",
550 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
551 "SampleAfterValue": "200000",
552 "BriefDescription": "Longest latency cache reference"
553 },
554 {
555 "PEBS": "1",
556 "EventCode": "0xB",
557 "Counter": "0,1,2,3",
558 "UMask": "0x1",
559 "EventName": "MEM_INST_RETIRED.LOADS",
560 "SampleAfterValue": "2000000",
561 "BriefDescription": "Instructions retired which contains a load (Precise Event)"
562 },
563 {
564 "PEBS": "1",
565 "EventCode": "0xB",
566 "Counter": "0,1,2,3",
567 "UMask": "0x2",
568 "EventName": "MEM_INST_RETIRED.STORES",
569 "SampleAfterValue": "2000000",
570 "BriefDescription": "Instructions retired which contains a store (Precise Event)"
571 },
572 {
573 "PEBS": "1",
574 "EventCode": "0xCB",
575 "Counter": "0,1,2,3",
576 "UMask": "0x40",
577 "EventName": "MEM_LOAD_RETIRED.HIT_LFB",
578 "SampleAfterValue": "200000",
579 "BriefDescription": "Retired loads that miss L1D and hit an previously allocated LFB (Precise Event)"
580 },
581 {
582 "PEBS": "1",
583 "EventCode": "0xCB",
584 "Counter": "0,1,2,3",
585 "UMask": "0x1",
586 "EventName": "MEM_LOAD_RETIRED.L1D_HIT",
587 "SampleAfterValue": "2000000",
588 "BriefDescription": "Retired loads that hit the L1 data cache (Precise Event)"
589 },
590 {
591 "PEBS": "1",
592 "EventCode": "0xCB",
593 "Counter": "0,1,2,3",
594 "UMask": "0x2",
595 "EventName": "MEM_LOAD_RETIRED.L2_HIT",
596 "SampleAfterValue": "200000",
597 "BriefDescription": "Retired loads that hit the L2 cache (Precise Event)"
598 },
599 {
600 "PEBS": "1",
601 "EventCode": "0xCB",
602 "Counter": "0,1,2,3",
603 "UMask": "0x10",
604 "EventName": "MEM_LOAD_RETIRED.LLC_MISS",
605 "SampleAfterValue": "10000",
606 "BriefDescription": "Retired loads that miss the LLC cache (Precise Event)"
607 },
608 {
609 "PEBS": "1",
610 "EventCode": "0xCB",
611 "Counter": "0,1,2,3",
612 "UMask": "0x4",
613 "EventName": "MEM_LOAD_RETIRED.LLC_UNSHARED_HIT",
614 "SampleAfterValue": "40000",
615 "BriefDescription": "Retired loads that hit valid versions in the LLC cache (Precise Event)"
616 },
617 {
618 "PEBS": "1",
619 "EventCode": "0xCB",
620 "Counter": "0,1,2,3",
621 "UMask": "0x8",
622 "EventName": "MEM_LOAD_RETIRED.OTHER_CORE_L2_HIT_HITM",
623 "SampleAfterValue": "40000",
624 "BriefDescription": "Retired loads that hit sibling core's L2 in modified or unmodified states (Precise Event)"
625 },
626 {
627 "PEBS": "1",
628 "EventCode": "0xF",
629 "Counter": "0,1,2,3",
630 "UMask": "0x10",
631 "EventName": "MEM_UNCORE_RETIRED.LOCAL_DRAM",
632 "SampleAfterValue": "10000",
633 "BriefDescription": "Load instructions retired with a data source of local DRAM or locally homed remote hitm (Precise Event)"
634 },
635 {
636 "PEBS": "1",
637 "EventCode": "0xF",
638 "Counter": "0,1,2,3",
639 "UMask": "0x2",
640 "EventName": "MEM_UNCORE_RETIRED.OTHER_CORE_L2_HITM",
641 "SampleAfterValue": "40000",
642 "BriefDescription": "Load instructions retired that HIT modified data in sibling core (Precise Event)"
643 },
644 {
645 "PEBS": "1",
646 "EventCode": "0xF",
647 "Counter": "0,1,2,3",
648 "UMask": "0x8",
649 "EventName": "MEM_UNCORE_RETIRED.REMOTE_CACHE_LOCAL_HOME_HIT",
650 "SampleAfterValue": "20000",
651 "BriefDescription": "Load instructions retired remote cache HIT data source (Precise Event)"
652 },
653 {
654 "PEBS": "1",
655 "EventCode": "0xF",
656 "Counter": "0,1,2,3",
657 "UMask": "0x20",
658 "EventName": "MEM_UNCORE_RETIRED.REMOTE_DRAM",
659 "SampleAfterValue": "10000",
660 "BriefDescription": "Load instructions retired remote DRAM and remote home-remote cache HITM (Precise Event)"
661 },
662 {
663 "PEBS": "1",
664 "EventCode": "0xF",
665 "Counter": "0,1,2,3",
666 "UMask": "0x80",
667 "EventName": "MEM_UNCORE_RETIRED.UNCACHEABLE",
668 "SampleAfterValue": "4000",
669 "BriefDescription": "Load instructions retired IO (Precise Event)"
670 },
671 {
672 "EventCode": "0xB0",
673 "Counter": "0,1,2,3",
674 "UMask": "0x80",
675 "EventName": "OFFCORE_REQUESTS.ANY",
676 "SampleAfterValue": "100000",
677 "BriefDescription": "All offcore requests"
678 },
679 {
680 "EventCode": "0xB0",
681 "Counter": "0,1,2,3",
682 "UMask": "0x8",
683 "EventName": "OFFCORE_REQUESTS.ANY.READ",
684 "SampleAfterValue": "100000",
685 "BriefDescription": "Offcore read requests"
686 },
687 {
688 "EventCode": "0xB0",
689 "Counter": "0,1,2,3",
690 "UMask": "0x10",
691 "EventName": "OFFCORE_REQUESTS.ANY.RFO",
692 "SampleAfterValue": "100000",
693 "BriefDescription": "Offcore RFO requests"
694 },
695 {
696 "EventCode": "0xB0",
697 "Counter": "0,1,2,3",
698 "UMask": "0x2",
699 "EventName": "OFFCORE_REQUESTS.DEMAND.READ_CODE",
700 "SampleAfterValue": "100000",
701 "BriefDescription": "Offcore demand code read requests"
702 },
703 {
704 "EventCode": "0xB0",
705 "Counter": "0,1,2,3",
706 "UMask": "0x1",
707 "EventName": "OFFCORE_REQUESTS.DEMAND.READ_DATA",
708 "SampleAfterValue": "100000",
709 "BriefDescription": "Offcore demand data read requests"
710 },
711 {
712 "EventCode": "0xB0",
713 "Counter": "0,1,2,3",
714 "UMask": "0x4",
715 "EventName": "OFFCORE_REQUESTS.DEMAND.RFO",
716 "SampleAfterValue": "100000",
717 "BriefDescription": "Offcore demand RFO requests"
718 },
719 {
720 "EventCode": "0xB0",
721 "Counter": "0,1,2,3",
722 "UMask": "0x40",
723 "EventName": "OFFCORE_REQUESTS.L1D_WRITEBACK",
724 "SampleAfterValue": "100000",
725 "BriefDescription": "Offcore L1 data cache writebacks"
726 },
727 {
728 "EventCode": "0xB0",
729 "Counter": "0,1,2,3",
730 "UMask": "0x20",
731 "EventName": "OFFCORE_REQUESTS.UNCACHED_MEM",
732 "SampleAfterValue": "100000",
733 "BriefDescription": "Offcore uncached memory accesses"
734 },
735 {
736 "EventCode": "0x60",
737 "UMask": "0x8",
738 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ANY.READ",
739 "SampleAfterValue": "2000000",
740 "BriefDescription": "Outstanding offcore reads"
741 },
742 {
743 "EventCode": "0x60",
744 "UMask": "0x8",
745 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ANY.READ_NOT_EMPTY",
746 "SampleAfterValue": "2000000",
747 "BriefDescription": "Cycles offcore reads busy",
748 "CounterMask": "1"
749 },
750 {
751 "EventCode": "0x60",
752 "UMask": "0x2",
753 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_CODE",
754 "SampleAfterValue": "2000000",
755 "BriefDescription": "Outstanding offcore demand code reads"
756 },
757 {
758 "EventCode": "0x60",
759 "UMask": "0x2",
760 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_CODE_NOT_EMPTY",
761 "SampleAfterValue": "2000000",
762 "BriefDescription": "Cycles offcore demand code read busy",
763 "CounterMask": "1"
764 },
765 {
766 "EventCode": "0x60",
767 "UMask": "0x1",
768 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_DATA",
769 "SampleAfterValue": "2000000",
770 "BriefDescription": "Outstanding offcore demand data reads"
771 },
772 {
773 "EventCode": "0x60",
774 "UMask": "0x1",
775 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_DATA_NOT_EMPTY",
776 "SampleAfterValue": "2000000",
777 "BriefDescription": "Cycles offcore demand data read busy",
778 "CounterMask": "1"
779 },
780 {
781 "EventCode": "0x60",
782 "UMask": "0x4",
783 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.RFO",
784 "SampleAfterValue": "2000000",
785 "BriefDescription": "Outstanding offcore demand RFOs"
786 },
787 {
788 "EventCode": "0x60",
789 "UMask": "0x4",
790 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.RFO_NOT_EMPTY",
791 "SampleAfterValue": "2000000",
792 "BriefDescription": "Cycles offcore demand RFOs busy",
793 "CounterMask": "1"
794 },
795 {
796 "EventCode": "0xB2",
797 "Counter": "0,1,2,3",
798 "UMask": "0x1",
799 "EventName": "OFFCORE_REQUESTS_SQ_FULL",
800 "SampleAfterValue": "100000",
801 "BriefDescription": "Offcore requests blocked due to Super Queue full"
802 },
803 {
804 "EventCode": "0xF4",
805 "Counter": "0,1,2,3",
806 "UMask": "0x4",
807 "EventName": "SQ_MISC.LRU_HINTS",
808 "SampleAfterValue": "2000000",
809 "BriefDescription": "Super Queue LRU hints sent to LLC"
810 },
811 {
812 "EventCode": "0xF4",
813 "Counter": "0,1,2,3",
814 "UMask": "0x10",
815 "EventName": "SQ_MISC.SPLIT_LOCK",
816 "SampleAfterValue": "2000000",
817 "BriefDescription": "Super Queue lock splits across a cache line"
818 },
819 {
820 "EventCode": "0x6",
821 "Counter": "0,1,2,3",
822 "UMask": "0x4",
823 "EventName": "STORE_BLOCKS.AT_RET",
824 "SampleAfterValue": "200000",
825 "BriefDescription": "Loads delayed with at-Retirement block code"
826 },
827 {
828 "EventCode": "0x6",
829 "Counter": "0,1,2,3",
830 "UMask": "0x8",
831 "EventName": "STORE_BLOCKS.L1D_BLOCK",
832 "SampleAfterValue": "200000",
833 "BriefDescription": "Cacheable loads delayed with L1D block code"
834 },
835 {
836 "PEBS": "2",
837 "EventCode": "0xB",
838 "MSRValue": "0x0",
839 "Counter": "3",
840 "UMask": "0x10",
841 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_0",
842 "MSRIndex": "0x3F6",
843 "SampleAfterValue": "2000000",
844 "BriefDescription": "Memory instructions retired above 0 clocks (Precise Event)"
845 },
846 {
847 "PEBS": "2",
848 "EventCode": "0xB",
849 "MSRValue": "0x400",
850 "Counter": "3",
851 "UMask": "0x10",
852 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_1024",
853 "MSRIndex": "0x3F6",
854 "SampleAfterValue": "100",
855 "BriefDescription": "Memory instructions retired above 1024 clocks (Precise Event)"
856 },
857 {
858 "PEBS": "2",
859 "EventCode": "0xB",
860 "MSRValue": "0x80",
861 "Counter": "3",
862 "UMask": "0x10",
863 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_128",
864 "MSRIndex": "0x3F6",
865 "SampleAfterValue": "1000",
866 "BriefDescription": "Memory instructions retired above 128 clocks (Precise Event)"
867 },
868 {
869 "PEBS": "2",
870 "EventCode": "0xB",
871 "MSRValue": "0x10",
872 "Counter": "3",
873 "UMask": "0x10",
874 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16",
875 "MSRIndex": "0x3F6",
876 "SampleAfterValue": "10000",
877 "BriefDescription": "Memory instructions retired above 16 clocks (Precise Event)"
878 },
879 {
880 "PEBS": "2",
881 "EventCode": "0xB",
882 "MSRValue": "0x4000",
883 "Counter": "3",
884 "UMask": "0x10",
885 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16384",
886 "MSRIndex": "0x3F6",
887 "SampleAfterValue": "5",
888 "BriefDescription": "Memory instructions retired above 16384 clocks (Precise Event)"
889 },
890 {
891 "PEBS": "2",
892 "EventCode": "0xB",
893 "MSRValue": "0x800",
894 "Counter": "3",
895 "UMask": "0x10",
896 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_2048",
897 "MSRIndex": "0x3F6",
898 "SampleAfterValue": "50",
899 "BriefDescription": "Memory instructions retired above 2048 clocks (Precise Event)"
900 },
901 {
902 "PEBS": "2",
903 "EventCode": "0xB",
904 "MSRValue": "0x100",
905 "Counter": "3",
906 "UMask": "0x10",
907 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_256",
908 "MSRIndex": "0x3F6",
909 "SampleAfterValue": "500",
910 "BriefDescription": "Memory instructions retired above 256 clocks (Precise Event)"
911 },
912 {
913 "PEBS": "2",
914 "EventCode": "0xB",
915 "MSRValue": "0x20",
916 "Counter": "3",
917 "UMask": "0x10",
918 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32",
919 "MSRIndex": "0x3F6",
920 "SampleAfterValue": "5000",
921 "BriefDescription": "Memory instructions retired above 32 clocks (Precise Event)"
922 },
923 {
924 "PEBS": "2",
925 "EventCode": "0xB",
926 "MSRValue": "0x8000",
927 "Counter": "3",
928 "UMask": "0x10",
929 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32768",
930 "MSRIndex": "0x3F6",
931 "SampleAfterValue": "3",
932 "BriefDescription": "Memory instructions retired above 32768 clocks (Precise Event)"
933 },
934 {
935 "PEBS": "2",
936 "EventCode": "0xB",
937 "MSRValue": "0x4",
938 "Counter": "3",
939 "UMask": "0x10",
940 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4",
941 "MSRIndex": "0x3F6",
942 "SampleAfterValue": "50000",
943 "BriefDescription": "Memory instructions retired above 4 clocks (Precise Event)"
944 },
945 {
946 "PEBS": "2",
947 "EventCode": "0xB",
948 "MSRValue": "0x1000",
949 "Counter": "3",
950 "UMask": "0x10",
951 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4096",
952 "MSRIndex": "0x3F6",
953 "SampleAfterValue": "20",
954 "BriefDescription": "Memory instructions retired above 4096 clocks (Precise Event)"
955 },
956 {
957 "PEBS": "2",
958 "EventCode": "0xB",
959 "MSRValue": "0x200",
960 "Counter": "3",
961 "UMask": "0x10",
962 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_512",
963 "MSRIndex": "0x3F6",
964 "SampleAfterValue": "200",
965 "BriefDescription": "Memory instructions retired above 512 clocks (Precise Event)"
966 },
967 {
968 "PEBS": "2",
969 "EventCode": "0xB",
970 "MSRValue": "0x40",
971 "Counter": "3",
972 "UMask": "0x10",
973 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_64",
974 "MSRIndex": "0x3F6",
975 "SampleAfterValue": "2000",
976 "BriefDescription": "Memory instructions retired above 64 clocks (Precise Event)"
977 },
978 {
979 "PEBS": "2",
980 "EventCode": "0xB",
981 "MSRValue": "0x8",
982 "Counter": "3",
983 "UMask": "0x10",
984 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8",
985 "MSRIndex": "0x3F6",
986 "SampleAfterValue": "20000",
987 "BriefDescription": "Memory instructions retired above 8 clocks (Precise Event)"
988 },
989 {
990 "PEBS": "2",
991 "EventCode": "0xB",
992 "MSRValue": "0x2000",
993 "Counter": "3",
994 "UMask": "0x10",
995 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8192",
996 "MSRIndex": "0x3F6",
997 "SampleAfterValue": "10",
998 "BriefDescription": "Memory instructions retired above 8192 clocks (Precise Event)"
999 },
1000 {
1001 "EventCode": "0xB7, 0xBB",
1002 "MSRValue": "0x7F11",
1003 "Counter": "0,1,2,3",
1004 "UMask": "0x1",
1005 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_CACHE_DRAM",
1006 "MSRIndex": "0x1a6,0x1a7",
1007 "SampleAfterValue": "100000",
1008 "BriefDescription": "Offcore data reads satisfied by any cache or DRAM",
1009 "Offcore": "1"
1010 },
1011 {
1012 "EventCode": "0xB7, 0xBB",
1013 "MSRValue": "0xFF11",
1014 "Counter": "0,1,2,3",
1015 "UMask": "0x1",
1016 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LOCATION",
1017 "MSRIndex": "0x1a6,0x1a7",
1018 "SampleAfterValue": "100000",
1019 "BriefDescription": "All offcore data reads",
1020 "Offcore": "1"
1021 },
1022 {
1023 "EventCode": "0xB7, 0xBB",
1024 "MSRValue": "0x8011",
1025 "Counter": "0,1,2,3",
1026 "UMask": "0x1",
1027 "EventName": "OFFCORE_RESPONSE.ANY_DATA.IO_CSR_MMIO",
1028 "MSRIndex": "0x1a6,0x1a7",
1029 "SampleAfterValue": "100000",
1030 "BriefDescription": "Offcore data reads satisfied by the IO, CSR, MMIO unit",
1031 "Offcore": "1"
1032 },
1033 {
1034 "EventCode": "0xB7, 0xBB",
1035 "MSRValue": "0x111",
1036 "Counter": "0,1,2,3",
1037 "UMask": "0x1",
1038 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_NO_OTHER_CORE",
1039 "MSRIndex": "0x1a6,0x1a7",
1040 "SampleAfterValue": "100000",
1041 "BriefDescription": "Offcore data reads satisfied by the LLC and not found in a sibling core",
1042 "Offcore": "1"
1043 },
1044 {
1045 "EventCode": "0xB7, 0xBB",
1046 "MSRValue": "0x211",
1047 "Counter": "0,1,2,3",
1048 "UMask": "0x1",
1049 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HIT",
1050 "MSRIndex": "0x1a6,0x1a7",
1051 "SampleAfterValue": "100000",
1052 "BriefDescription": "Offcore data reads satisfied by the LLC and HIT in a sibling core",
1053 "Offcore": "1"
1054 },
1055 {
1056 "EventCode": "0xB7, 0xBB",
1057 "MSRValue": "0x411",
1058 "Counter": "0,1,2,3",
1059 "UMask": "0x1",
1060 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HITM",
1061 "MSRIndex": "0x1a6,0x1a7",
1062 "SampleAfterValue": "100000",
1063 "BriefDescription": "Offcore data reads satisfied by the LLC and HITM in a sibling core",
1064 "Offcore": "1"
1065 },
1066 {
1067 "EventCode": "0xB7, 0xBB",
1068 "MSRValue": "0x711",
1069 "Counter": "0,1,2,3",
1070 "UMask": "0x1",
1071 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE",
1072 "MSRIndex": "0x1a6,0x1a7",
1073 "SampleAfterValue": "100000",
1074 "BriefDescription": "Offcore data reads satisfied by the LLC",
1075 "Offcore": "1"
1076 },
1077 {
1078 "EventCode": "0xB7, 0xBB",
1079 "MSRValue": "0x2711",
1080 "Counter": "0,1,2,3",
1081 "UMask": "0x1",
1082 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE_DRAM",
1083 "MSRIndex": "0x1a6,0x1a7",
1084 "SampleAfterValue": "100000",
1085 "BriefDescription": "Offcore data reads satisfied by the LLC or local DRAM",
1086 "Offcore": "1"
1087 },
1088 {
1089 "EventCode": "0xB7, 0xBB",
1090 "MSRValue": "0x1811",
1091 "Counter": "0,1,2,3",
1092 "UMask": "0x1",
1093 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE",
1094 "MSRIndex": "0x1a6,0x1a7",
1095 "SampleAfterValue": "100000",
1096 "BriefDescription": "Offcore data reads satisfied by a remote cache",
1097 "Offcore": "1"
1098 },
1099 {
1100 "EventCode": "0xB7, 0xBB",
1101 "MSRValue": "0x5811",
1102 "Counter": "0,1,2,3",
1103 "UMask": "0x1",
1104 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_DRAM",
1105 "MSRIndex": "0x1a6,0x1a7",
1106 "SampleAfterValue": "100000",
1107 "BriefDescription": "Offcore data reads satisfied by a remote cache or remote DRAM",
1108 "Offcore": "1"
1109 },
1110 {
1111 "EventCode": "0xB7, 0xBB",
1112 "MSRValue": "0x1011",
1113 "Counter": "0,1,2,3",
1114 "UMask": "0x1",
1115 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HIT",
1116 "MSRIndex": "0x1a6,0x1a7",
1117 "SampleAfterValue": "100000",
1118 "BriefDescription": "Offcore data reads that HIT in a remote cache",
1119 "Offcore": "1"
1120 },
1121 {
1122 "EventCode": "0xB7, 0xBB",
1123 "MSRValue": "0x811",
1124 "Counter": "0,1,2,3",
1125 "UMask": "0x1",
1126 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HITM",
1127 "MSRIndex": "0x1a6,0x1a7",
1128 "SampleAfterValue": "100000",
1129 "BriefDescription": "Offcore data reads that HITM in a remote cache",
1130 "Offcore": "1"
1131 },
1132 {
1133 "EventCode": "0xB7, 0xBB",
1134 "MSRValue": "0x7F44",
1135 "Counter": "0,1,2,3",
1136 "UMask": "0x1",
1137 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_CACHE_DRAM",
1138 "MSRIndex": "0x1a6,0x1a7",
1139 "SampleAfterValue": "100000",
1140 "BriefDescription": "Offcore code reads satisfied by any cache or DRAM",
1141 "Offcore": "1"
1142 },
1143 {
1144 "EventCode": "0xB7, 0xBB",
1145 "MSRValue": "0xFF44",
1146 "Counter": "0,1,2,3",
1147 "UMask": "0x1",
1148 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LOCATION",
1149 "MSRIndex": "0x1a6,0x1a7",
1150 "SampleAfterValue": "100000",
1151 "BriefDescription": "All offcore code reads",
1152 "Offcore": "1"
1153 },
1154 {
1155 "EventCode": "0xB7, 0xBB",
1156 "MSRValue": "0x8044",
1157 "Counter": "0,1,2,3",
1158 "UMask": "0x1",
1159 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.IO_CSR_MMIO",
1160 "MSRIndex": "0x1a6,0x1a7",
1161 "SampleAfterValue": "100000",
1162 "BriefDescription": "Offcore code reads satisfied by the IO, CSR, MMIO unit",
1163 "Offcore": "1"
1164 },
1165 {
1166 "EventCode": "0xB7, 0xBB",
1167 "MSRValue": "0x144",
1168 "Counter": "0,1,2,3",
1169 "UMask": "0x1",
1170 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_NO_OTHER_CORE",
1171 "MSRIndex": "0x1a6,0x1a7",
1172 "SampleAfterValue": "100000",
1173 "BriefDescription": "Offcore code reads satisfied by the LLC and not found in a sibling core",
1174 "Offcore": "1"
1175 },
1176 {
1177 "EventCode": "0xB7, 0xBB",
1178 "MSRValue": "0x244",
1179 "Counter": "0,1,2,3",
1180 "UMask": "0x1",
1181 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1182 "MSRIndex": "0x1a6,0x1a7",
1183 "SampleAfterValue": "100000",
1184 "BriefDescription": "Offcore code reads satisfied by the LLC and HIT in a sibling core",
1185 "Offcore": "1"
1186 },
1187 {
1188 "EventCode": "0xB7, 0xBB",
1189 "MSRValue": "0x444",
1190 "Counter": "0,1,2,3",
1191 "UMask": "0x1",
1192 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1193 "MSRIndex": "0x1a6,0x1a7",
1194 "SampleAfterValue": "100000",
1195 "BriefDescription": "Offcore code reads satisfied by the LLC and HITM in a sibling core",
1196 "Offcore": "1"
1197 },
1198 {
1199 "EventCode": "0xB7, 0xBB",
1200 "MSRValue": "0x744",
1201 "Counter": "0,1,2,3",
1202 "UMask": "0x1",
1203 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE",
1204 "MSRIndex": "0x1a6,0x1a7",
1205 "SampleAfterValue": "100000",
1206 "BriefDescription": "Offcore code reads satisfied by the LLC",
1207 "Offcore": "1"
1208 },
1209 {
1210 "EventCode": "0xB7, 0xBB",
1211 "MSRValue": "0x2744",
1212 "Counter": "0,1,2,3",
1213 "UMask": "0x1",
1214 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE_DRAM",
1215 "MSRIndex": "0x1a6,0x1a7",
1216 "SampleAfterValue": "100000",
1217 "BriefDescription": "Offcore code reads satisfied by the LLC or local DRAM",
1218 "Offcore": "1"
1219 },
1220 {
1221 "EventCode": "0xB7, 0xBB",
1222 "MSRValue": "0x1844",
1223 "Counter": "0,1,2,3",
1224 "UMask": "0x1",
1225 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE",
1226 "MSRIndex": "0x1a6,0x1a7",
1227 "SampleAfterValue": "100000",
1228 "BriefDescription": "Offcore code reads satisfied by a remote cache",
1229 "Offcore": "1"
1230 },
1231 {
1232 "EventCode": "0xB7, 0xBB",
1233 "MSRValue": "0x5844",
1234 "Counter": "0,1,2,3",
1235 "UMask": "0x1",
1236 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_DRAM",
1237 "MSRIndex": "0x1a6,0x1a7",
1238 "SampleAfterValue": "100000",
1239 "BriefDescription": "Offcore code reads satisfied by a remote cache or remote DRAM",
1240 "Offcore": "1"
1241 },
1242 {
1243 "EventCode": "0xB7, 0xBB",
1244 "MSRValue": "0x1044",
1245 "Counter": "0,1,2,3",
1246 "UMask": "0x1",
1247 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HIT",
1248 "MSRIndex": "0x1a6,0x1a7",
1249 "SampleAfterValue": "100000",
1250 "BriefDescription": "Offcore code reads that HIT in a remote cache",
1251 "Offcore": "1"
1252 },
1253 {
1254 "EventCode": "0xB7, 0xBB",
1255 "MSRValue": "0x844",
1256 "Counter": "0,1,2,3",
1257 "UMask": "0x1",
1258 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HITM",
1259 "MSRIndex": "0x1a6,0x1a7",
1260 "SampleAfterValue": "100000",
1261 "BriefDescription": "Offcore code reads that HITM in a remote cache",
1262 "Offcore": "1"
1263 },
1264 {
1265 "EventCode": "0xB7, 0xBB",
1266 "MSRValue": "0x7FFF",
1267 "Counter": "0,1,2,3",
1268 "UMask": "0x1",
1269 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_CACHE_DRAM",
1270 "MSRIndex": "0x1a6,0x1a7",
1271 "SampleAfterValue": "100000",
1272 "BriefDescription": "Offcore requests satisfied by any cache or DRAM",
1273 "Offcore": "1"
1274 },
1275 {
1276 "EventCode": "0xB7, 0xBB",
1277 "MSRValue": "0xFFFF",
1278 "Counter": "0,1,2,3",
1279 "UMask": "0x1",
1280 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LOCATION",
1281 "MSRIndex": "0x1a6,0x1a7",
1282 "SampleAfterValue": "100000",
1283 "BriefDescription": "All offcore requests",
1284 "Offcore": "1"
1285 },
1286 {
1287 "EventCode": "0xB7, 0xBB",
1288 "MSRValue": "0x80FF",
1289 "Counter": "0,1,2,3",
1290 "UMask": "0x1",
1291 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.IO_CSR_MMIO",
1292 "MSRIndex": "0x1a6,0x1a7",
1293 "SampleAfterValue": "100000",
1294 "BriefDescription": "Offcore requests satisfied by the IO, CSR, MMIO unit",
1295 "Offcore": "1"
1296 },
1297 {
1298 "EventCode": "0xB7, 0xBB",
1299 "MSRValue": "0x1FF",
1300 "Counter": "0,1,2,3",
1301 "UMask": "0x1",
1302 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_NO_OTHER_CORE",
1303 "MSRIndex": "0x1a6,0x1a7",
1304 "SampleAfterValue": "100000",
1305 "BriefDescription": "Offcore requests satisfied by the LLC and not found in a sibling core",
1306 "Offcore": "1"
1307 },
1308 {
1309 "EventCode": "0xB7, 0xBB",
1310 "MSRValue": "0x2FF",
1311 "Counter": "0,1,2,3",
1312 "UMask": "0x1",
1313 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HIT",
1314 "MSRIndex": "0x1a6,0x1a7",
1315 "SampleAfterValue": "100000",
1316 "BriefDescription": "Offcore requests satisfied by the LLC and HIT in a sibling core",
1317 "Offcore": "1"
1318 },
1319 {
1320 "EventCode": "0xB7, 0xBB",
1321 "MSRValue": "0x4FF",
1322 "Counter": "0,1,2,3",
1323 "UMask": "0x1",
1324 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HITM",
1325 "MSRIndex": "0x1a6,0x1a7",
1326 "SampleAfterValue": "100000",
1327 "BriefDescription": "Offcore requests satisfied by the LLC and HITM in a sibling core",
1328 "Offcore": "1"
1329 },
1330 {
1331 "EventCode": "0xB7, 0xBB",
1332 "MSRValue": "0x7FF",
1333 "Counter": "0,1,2,3",
1334 "UMask": "0x1",
1335 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE",
1336 "MSRIndex": "0x1a6,0x1a7",
1337 "SampleAfterValue": "100000",
1338 "BriefDescription": "Offcore requests satisfied by the LLC",
1339 "Offcore": "1"
1340 },
1341 {
1342 "EventCode": "0xB7, 0xBB",
1343 "MSRValue": "0x27FF",
1344 "Counter": "0,1,2,3",
1345 "UMask": "0x1",
1346 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE_DRAM",
1347 "MSRIndex": "0x1a6,0x1a7",
1348 "SampleAfterValue": "100000",
1349 "BriefDescription": "Offcore requests satisfied by the LLC or local DRAM",
1350 "Offcore": "1"
1351 },
1352 {
1353 "EventCode": "0xB7, 0xBB",
1354 "MSRValue": "0x18FF",
1355 "Counter": "0,1,2,3",
1356 "UMask": "0x1",
1357 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE",
1358 "MSRIndex": "0x1a6,0x1a7",
1359 "SampleAfterValue": "100000",
1360 "BriefDescription": "Offcore requests satisfied by a remote cache",
1361 "Offcore": "1"
1362 },
1363 {
1364 "EventCode": "0xB7, 0xBB",
1365 "MSRValue": "0x58FF",
1366 "Counter": "0,1,2,3",
1367 "UMask": "0x1",
1368 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_DRAM",
1369 "MSRIndex": "0x1a6,0x1a7",
1370 "SampleAfterValue": "100000",
1371 "BriefDescription": "Offcore requests satisfied by a remote cache or remote DRAM",
1372 "Offcore": "1"
1373 },
1374 {
1375 "EventCode": "0xB7, 0xBB",
1376 "MSRValue": "0x10FF",
1377 "Counter": "0,1,2,3",
1378 "UMask": "0x1",
1379 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HIT",
1380 "MSRIndex": "0x1a6,0x1a7",
1381 "SampleAfterValue": "100000",
1382 "BriefDescription": "Offcore requests that HIT in a remote cache",
1383 "Offcore": "1"
1384 },
1385 {
1386 "EventCode": "0xB7, 0xBB",
1387 "MSRValue": "0x8FF",
1388 "Counter": "0,1,2,3",
1389 "UMask": "0x1",
1390 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HITM",
1391 "MSRIndex": "0x1a6,0x1a7",
1392 "SampleAfterValue": "100000",
1393 "BriefDescription": "Offcore requests that HITM in a remote cache",
1394 "Offcore": "1"
1395 },
1396 {
1397 "EventCode": "0xB7, 0xBB",
1398 "MSRValue": "0x7F22",
1399 "Counter": "0,1,2,3",
1400 "UMask": "0x1",
1401 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_CACHE_DRAM",
1402 "MSRIndex": "0x1a6,0x1a7",
1403 "SampleAfterValue": "100000",
1404 "BriefDescription": "Offcore RFO requests satisfied by any cache or DRAM",
1405 "Offcore": "1"
1406 },
1407 {
1408 "EventCode": "0xB7, 0xBB",
1409 "MSRValue": "0xFF22",
1410 "Counter": "0,1,2,3",
1411 "UMask": "0x1",
1412 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LOCATION",
1413 "MSRIndex": "0x1a6,0x1a7",
1414 "SampleAfterValue": "100000",
1415 "BriefDescription": "All offcore RFO requests",
1416 "Offcore": "1"
1417 },
1418 {
1419 "EventCode": "0xB7, 0xBB",
1420 "MSRValue": "0x8022",
1421 "Counter": "0,1,2,3",
1422 "UMask": "0x1",
1423 "EventName": "OFFCORE_RESPONSE.ANY_RFO.IO_CSR_MMIO",
1424 "MSRIndex": "0x1a6,0x1a7",
1425 "SampleAfterValue": "100000",
1426 "BriefDescription": "Offcore RFO requests satisfied by the IO, CSR, MMIO unit",
1427 "Offcore": "1"
1428 },
1429 {
1430 "EventCode": "0xB7, 0xBB",
1431 "MSRValue": "0x122",
1432 "Counter": "0,1,2,3",
1433 "UMask": "0x1",
1434 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_NO_OTHER_CORE",
1435 "MSRIndex": "0x1a6,0x1a7",
1436 "SampleAfterValue": "100000",
1437 "BriefDescription": "Offcore RFO requests satisfied by the LLC and not found in a sibling core",
1438 "Offcore": "1"
1439 },
1440 {
1441 "EventCode": "0xB7, 0xBB",
1442 "MSRValue": "0x222",
1443 "Counter": "0,1,2,3",
1444 "UMask": "0x1",
1445 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HIT",
1446 "MSRIndex": "0x1a6,0x1a7",
1447 "SampleAfterValue": "100000",
1448 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HIT in a sibling core",
1449 "Offcore": "1"
1450 },
1451 {
1452 "EventCode": "0xB7, 0xBB",
1453 "MSRValue": "0x422",
1454 "Counter": "0,1,2,3",
1455 "UMask": "0x1",
1456 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HITM",
1457 "MSRIndex": "0x1a6,0x1a7",
1458 "SampleAfterValue": "100000",
1459 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HITM in a sibling core",
1460 "Offcore": "1"
1461 },
1462 {
1463 "EventCode": "0xB7, 0xBB",
1464 "MSRValue": "0x722",
1465 "Counter": "0,1,2,3",
1466 "UMask": "0x1",
1467 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE",
1468 "MSRIndex": "0x1a6,0x1a7",
1469 "SampleAfterValue": "100000",
1470 "BriefDescription": "Offcore RFO requests satisfied by the LLC",
1471 "Offcore": "1"
1472 },
1473 {
1474 "EventCode": "0xB7, 0xBB",
1475 "MSRValue": "0x2722",
1476 "Counter": "0,1,2,3",
1477 "UMask": "0x1",
1478 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE_DRAM",
1479 "MSRIndex": "0x1a6,0x1a7",
1480 "SampleAfterValue": "100000",
1481 "BriefDescription": "Offcore RFO requests satisfied by the LLC or local DRAM",
1482 "Offcore": "1"
1483 },
1484 {
1485 "EventCode": "0xB7, 0xBB",
1486 "MSRValue": "0x1822",
1487 "Counter": "0,1,2,3",
1488 "UMask": "0x1",
1489 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE",
1490 "MSRIndex": "0x1a6,0x1a7",
1491 "SampleAfterValue": "100000",
1492 "BriefDescription": "Offcore RFO requests satisfied by a remote cache",
1493 "Offcore": "1"
1494 },
1495 {
1496 "EventCode": "0xB7, 0xBB",
1497 "MSRValue": "0x5822",
1498 "Counter": "0,1,2,3",
1499 "UMask": "0x1",
1500 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_DRAM",
1501 "MSRIndex": "0x1a6,0x1a7",
1502 "SampleAfterValue": "100000",
1503 "BriefDescription": "Offcore RFO requests satisfied by a remote cache or remote DRAM",
1504 "Offcore": "1"
1505 },
1506 {
1507 "EventCode": "0xB7, 0xBB",
1508 "MSRValue": "0x1022",
1509 "Counter": "0,1,2,3",
1510 "UMask": "0x1",
1511 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HIT",
1512 "MSRIndex": "0x1a6,0x1a7",
1513 "SampleAfterValue": "100000",
1514 "BriefDescription": "Offcore RFO requests that HIT in a remote cache",
1515 "Offcore": "1"
1516 },
1517 {
1518 "EventCode": "0xB7, 0xBB",
1519 "MSRValue": "0x822",
1520 "Counter": "0,1,2,3",
1521 "UMask": "0x1",
1522 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HITM",
1523 "MSRIndex": "0x1a6,0x1a7",
1524 "SampleAfterValue": "100000",
1525 "BriefDescription": "Offcore RFO requests that HITM in a remote cache",
1526 "Offcore": "1"
1527 },
1528 {
1529 "EventCode": "0xB7, 0xBB",
1530 "MSRValue": "0x7F08",
1531 "Counter": "0,1,2,3",
1532 "UMask": "0x1",
1533 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_CACHE_DRAM",
1534 "MSRIndex": "0x1a6,0x1a7",
1535 "SampleAfterValue": "100000",
1536 "BriefDescription": "Offcore writebacks to any cache or DRAM.",
1537 "Offcore": "1"
1538 },
1539 {
1540 "EventCode": "0xB7, 0xBB",
1541 "MSRValue": "0xFF08",
1542 "Counter": "0,1,2,3",
1543 "UMask": "0x1",
1544 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LOCATION",
1545 "MSRIndex": "0x1a6,0x1a7",
1546 "SampleAfterValue": "100000",
1547 "BriefDescription": "All offcore writebacks",
1548 "Offcore": "1"
1549 },
1550 {
1551 "EventCode": "0xB7, 0xBB",
1552 "MSRValue": "0x8008",
1553 "Counter": "0,1,2,3",
1554 "UMask": "0x1",
1555 "EventName": "OFFCORE_RESPONSE.COREWB.IO_CSR_MMIO",
1556 "MSRIndex": "0x1a6,0x1a7",
1557 "SampleAfterValue": "100000",
1558 "BriefDescription": "Offcore writebacks to the IO, CSR, MMIO unit.",
1559 "Offcore": "1"
1560 },
1561 {
1562 "EventCode": "0xB7, 0xBB",
1563 "MSRValue": "0x108",
1564 "Counter": "0,1,2,3",
1565 "UMask": "0x1",
1566 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_NO_OTHER_CORE",
1567 "MSRIndex": "0x1a6,0x1a7",
1568 "SampleAfterValue": "100000",
1569 "BriefDescription": "Offcore writebacks to the LLC and not found in a sibling core",
1570 "Offcore": "1"
1571 },
1572 {
1573 "EventCode": "0xB7, 0xBB",
1574 "MSRValue": "0x408",
1575 "Counter": "0,1,2,3",
1576 "UMask": "0x1",
1577 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_OTHER_CORE_HITM",
1578 "MSRIndex": "0x1a6,0x1a7",
1579 "SampleAfterValue": "100000",
1580 "BriefDescription": "Offcore writebacks to the LLC and HITM in a sibling core",
1581 "Offcore": "1"
1582 },
1583 {
1584 "EventCode": "0xB7, 0xBB",
1585 "MSRValue": "0x708",
1586 "Counter": "0,1,2,3",
1587 "UMask": "0x1",
1588 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE",
1589 "MSRIndex": "0x1a6,0x1a7",
1590 "SampleAfterValue": "100000",
1591 "BriefDescription": "Offcore writebacks to the LLC",
1592 "Offcore": "1"
1593 },
1594 {
1595 "EventCode": "0xB7, 0xBB",
1596 "MSRValue": "0x2708",
1597 "Counter": "0,1,2,3",
1598 "UMask": "0x1",
1599 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE_DRAM",
1600 "MSRIndex": "0x1a6,0x1a7",
1601 "SampleAfterValue": "100000",
1602 "BriefDescription": "Offcore writebacks to the LLC or local DRAM",
1603 "Offcore": "1"
1604 },
1605 {
1606 "EventCode": "0xB7, 0xBB",
1607 "MSRValue": "0x1808",
1608 "Counter": "0,1,2,3",
1609 "UMask": "0x1",
1610 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE",
1611 "MSRIndex": "0x1a6,0x1a7",
1612 "SampleAfterValue": "100000",
1613 "BriefDescription": "Offcore writebacks to a remote cache",
1614 "Offcore": "1"
1615 },
1616 {
1617 "EventCode": "0xB7, 0xBB",
1618 "MSRValue": "0x5808",
1619 "Counter": "0,1,2,3",
1620 "UMask": "0x1",
1621 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_DRAM",
1622 "MSRIndex": "0x1a6,0x1a7",
1623 "SampleAfterValue": "100000",
1624 "BriefDescription": "Offcore writebacks to a remote cache or remote DRAM",
1625 "Offcore": "1"
1626 },
1627 {
1628 "EventCode": "0xB7, 0xBB",
1629 "MSRValue": "0x1008",
1630 "Counter": "0,1,2,3",
1631 "UMask": "0x1",
1632 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HIT",
1633 "MSRIndex": "0x1a6,0x1a7",
1634 "SampleAfterValue": "100000",
1635 "BriefDescription": "Offcore writebacks that HIT in a remote cache",
1636 "Offcore": "1"
1637 },
1638 {
1639 "EventCode": "0xB7, 0xBB",
1640 "MSRValue": "0x808",
1641 "Counter": "0,1,2,3",
1642 "UMask": "0x1",
1643 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HITM",
1644 "MSRIndex": "0x1a6,0x1a7",
1645 "SampleAfterValue": "100000",
1646 "BriefDescription": "Offcore writebacks that HITM in a remote cache",
1647 "Offcore": "1"
1648 },
1649 {
1650 "EventCode": "0xB7, 0xBB",
1651 "MSRValue": "0x7F77",
1652 "Counter": "0,1,2,3",
1653 "UMask": "0x1",
1654 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_CACHE_DRAM",
1655 "MSRIndex": "0x1a6,0x1a7",
1656 "SampleAfterValue": "100000",
1657 "BriefDescription": "Offcore code or data read requests satisfied by any cache or DRAM.",
1658 "Offcore": "1"
1659 },
1660 {
1661 "EventCode": "0xB7, 0xBB",
1662 "MSRValue": "0xFF77",
1663 "Counter": "0,1,2,3",
1664 "UMask": "0x1",
1665 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LOCATION",
1666 "MSRIndex": "0x1a6,0x1a7",
1667 "SampleAfterValue": "100000",
1668 "BriefDescription": "All offcore code or data read requests",
1669 "Offcore": "1"
1670 },
1671 {
1672 "EventCode": "0xB7, 0xBB",
1673 "MSRValue": "0x8077",
1674 "Counter": "0,1,2,3",
1675 "UMask": "0x1",
1676 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.IO_CSR_MMIO",
1677 "MSRIndex": "0x1a6,0x1a7",
1678 "SampleAfterValue": "100000",
1679 "BriefDescription": "Offcore code or data read requests satisfied by the IO, CSR, MMIO unit.",
1680 "Offcore": "1"
1681 },
1682 {
1683 "EventCode": "0xB7, 0xBB",
1684 "MSRValue": "0x177",
1685 "Counter": "0,1,2,3",
1686 "UMask": "0x1",
1687 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_NO_OTHER_CORE",
1688 "MSRIndex": "0x1a6,0x1a7",
1689 "SampleAfterValue": "100000",
1690 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and not found in a sibling core",
1691 "Offcore": "1"
1692 },
1693 {
1694 "EventCode": "0xB7, 0xBB",
1695 "MSRValue": "0x277",
1696 "Counter": "0,1,2,3",
1697 "UMask": "0x1",
1698 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1699 "MSRIndex": "0x1a6,0x1a7",
1700 "SampleAfterValue": "100000",
1701 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HIT in a sibling core",
1702 "Offcore": "1"
1703 },
1704 {
1705 "EventCode": "0xB7, 0xBB",
1706 "MSRValue": "0x477",
1707 "Counter": "0,1,2,3",
1708 "UMask": "0x1",
1709 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1710 "MSRIndex": "0x1a6,0x1a7",
1711 "SampleAfterValue": "100000",
1712 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HITM in a sibling core",
1713 "Offcore": "1"
1714 },
1715 {
1716 "EventCode": "0xB7, 0xBB",
1717 "MSRValue": "0x777",
1718 "Counter": "0,1,2,3",
1719 "UMask": "0x1",
1720 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE",
1721 "MSRIndex": "0x1a6,0x1a7",
1722 "SampleAfterValue": "100000",
1723 "BriefDescription": "Offcore code or data read requests satisfied by the LLC",
1724 "Offcore": "1"
1725 },
1726 {
1727 "EventCode": "0xB7, 0xBB",
1728 "MSRValue": "0x2777",
1729 "Counter": "0,1,2,3",
1730 "UMask": "0x1",
1731 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE_DRAM",
1732 "MSRIndex": "0x1a6,0x1a7",
1733 "SampleAfterValue": "100000",
1734 "BriefDescription": "Offcore code or data read requests satisfied by the LLC or local DRAM",
1735 "Offcore": "1"
1736 },
1737 {
1738 "EventCode": "0xB7, 0xBB",
1739 "MSRValue": "0x1877",
1740 "Counter": "0,1,2,3",
1741 "UMask": "0x1",
1742 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE",
1743 "MSRIndex": "0x1a6,0x1a7",
1744 "SampleAfterValue": "100000",
1745 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache",
1746 "Offcore": "1"
1747 },
1748 {
1749 "EventCode": "0xB7, 0xBB",
1750 "MSRValue": "0x5877",
1751 "Counter": "0,1,2,3",
1752 "UMask": "0x1",
1753 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_DRAM",
1754 "MSRIndex": "0x1a6,0x1a7",
1755 "SampleAfterValue": "100000",
1756 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache or remote DRAM",
1757 "Offcore": "1"
1758 },
1759 {
1760 "EventCode": "0xB7, 0xBB",
1761 "MSRValue": "0x1077",
1762 "Counter": "0,1,2,3",
1763 "UMask": "0x1",
1764 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HIT",
1765 "MSRIndex": "0x1a6,0x1a7",
1766 "SampleAfterValue": "100000",
1767 "BriefDescription": "Offcore code or data read requests that HIT in a remote cache",
1768 "Offcore": "1"
1769 },
1770 {
1771 "EventCode": "0xB7, 0xBB",
1772 "MSRValue": "0x877",
1773 "Counter": "0,1,2,3",
1774 "UMask": "0x1",
1775 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HITM",
1776 "MSRIndex": "0x1a6,0x1a7",
1777 "SampleAfterValue": "100000",
1778 "BriefDescription": "Offcore code or data read requests that HITM in a remote cache",
1779 "Offcore": "1"
1780 },
1781 {
1782 "EventCode": "0xB7, 0xBB",
1783 "MSRValue": "0x7F33",
1784 "Counter": "0,1,2,3",
1785 "UMask": "0x1",
1786 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_CACHE_DRAM",
1787 "MSRIndex": "0x1a6,0x1a7",
1788 "SampleAfterValue": "100000",
1789 "BriefDescription": "Offcore request = all data, response = any cache_dram",
1790 "Offcore": "1"
1791 },
1792 {
1793 "EventCode": "0xB7, 0xBB",
1794 "MSRValue": "0xFF33",
1795 "Counter": "0,1,2,3",
1796 "UMask": "0x1",
1797 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LOCATION",
1798 "MSRIndex": "0x1a6,0x1a7",
1799 "SampleAfterValue": "100000",
1800 "BriefDescription": "Offcore request = all data, response = any location",
1801 "Offcore": "1"
1802 },
1803 {
1804 "EventCode": "0xB7, 0xBB",
1805 "MSRValue": "0x8033",
1806 "Counter": "0,1,2,3",
1807 "UMask": "0x1",
1808 "EventName": "OFFCORE_RESPONSE.DATA_IN.IO_CSR_MMIO",
1809 "MSRIndex": "0x1a6,0x1a7",
1810 "SampleAfterValue": "100000",
1811 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the IO, CSR, MMIO unit",
1812 "Offcore": "1"
1813 },
1814 {
1815 "EventCode": "0xB7, 0xBB",
1816 "MSRValue": "0x133",
1817 "Counter": "0,1,2,3",
1818 "UMask": "0x1",
1819 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_NO_OTHER_CORE",
1820 "MSRIndex": "0x1a6,0x1a7",
1821 "SampleAfterValue": "100000",
1822 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the LLC and not found in a sibling core",
1823 "Offcore": "1"
1824 },
1825 {
1826 "EventCode": "0xB7, 0xBB",
1827 "MSRValue": "0x233",
1828 "Counter": "0,1,2,3",
1829 "UMask": "0x1",
1830 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HIT",
1831 "MSRIndex": "0x1a6,0x1a7",
1832 "SampleAfterValue": "100000",
1833 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HIT in a sibling core",
1834 "Offcore": "1"
1835 },
1836 {
1837 "EventCode": "0xB7, 0xBB",
1838 "MSRValue": "0x433",
1839 "Counter": "0,1,2,3",
1840 "UMask": "0x1",
1841 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HITM",
1842 "MSRIndex": "0x1a6,0x1a7",
1843 "SampleAfterValue": "100000",
1844 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HITM in a sibling core",
1845 "Offcore": "1"
1846 },
1847 {
1848 "EventCode": "0xB7, 0xBB",
1849 "MSRValue": "0x733",
1850 "Counter": "0,1,2,3",
1851 "UMask": "0x1",
1852 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE",
1853 "MSRIndex": "0x1a6,0x1a7",
1854 "SampleAfterValue": "100000",
1855 "BriefDescription": "Offcore request = all data, response = local cache",
1856 "Offcore": "1"
1857 },
1858 {
1859 "EventCode": "0xB7, 0xBB",
1860 "MSRValue": "0x2733",
1861 "Counter": "0,1,2,3",
1862 "UMask": "0x1",
1863 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE_DRAM",
1864 "MSRIndex": "0x1a6,0x1a7",
1865 "SampleAfterValue": "100000",
1866 "BriefDescription": "Offcore request = all data, response = local cache or dram",
1867 "Offcore": "1"
1868 },
1869 {
1870 "EventCode": "0xB7, 0xBB",
1871 "MSRValue": "0x1833",
1872 "Counter": "0,1,2,3",
1873 "UMask": "0x1",
1874 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE",
1875 "MSRIndex": "0x1a6,0x1a7",
1876 "SampleAfterValue": "100000",
1877 "BriefDescription": "Offcore request = all data, response = remote cache",
1878 "Offcore": "1"
1879 },
1880 {
1881 "EventCode": "0xB7, 0xBB",
1882 "MSRValue": "0x5833",
1883 "Counter": "0,1,2,3",
1884 "UMask": "0x1",
1885 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_DRAM",
1886 "MSRIndex": "0x1a6,0x1a7",
1887 "SampleAfterValue": "100000",
1888 "BriefDescription": "Offcore request = all data, response = remote cache or dram",
1889 "Offcore": "1"
1890 },
1891 {
1892 "EventCode": "0xB7, 0xBB",
1893 "MSRValue": "0x1033",
1894 "Counter": "0,1,2,3",
1895 "UMask": "0x1",
1896 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HIT",
1897 "MSRIndex": "0x1a6,0x1a7",
1898 "SampleAfterValue": "100000",
1899 "BriefDescription": "Offcore data reads, RFO's and prefetches that HIT in a remote cache ",
1900 "Offcore": "1"
1901 },
1902 {
1903 "EventCode": "0xB7, 0xBB",
1904 "MSRValue": "0x833",
1905 "Counter": "0,1,2,3",
1906 "UMask": "0x1",
1907 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HITM",
1908 "MSRIndex": "0x1a6,0x1a7",
1909 "SampleAfterValue": "100000",
1910 "BriefDescription": "Offcore data reads, RFO's and prefetches that HITM in a remote cache",
1911 "Offcore": "1"
1912 },
1913 {
1914 "EventCode": "0xB7, 0xBB",
1915 "MSRValue": "0x7F03",
1916 "Counter": "0,1,2,3",
1917 "UMask": "0x1",
1918 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_CACHE_DRAM",
1919 "MSRIndex": "0x1a6,0x1a7",
1920 "SampleAfterValue": "100000",
1921 "BriefDescription": "Offcore demand data requests satisfied by any cache or DRAM",
1922 "Offcore": "1"
1923 },
1924 {
1925 "EventCode": "0xB7, 0xBB",
1926 "MSRValue": "0xFF03",
1927 "Counter": "0,1,2,3",
1928 "UMask": "0x1",
1929 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LOCATION",
1930 "MSRIndex": "0x1a6,0x1a7",
1931 "SampleAfterValue": "100000",
1932 "BriefDescription": "All offcore demand data requests",
1933 "Offcore": "1"
1934 },
1935 {
1936 "EventCode": "0xB7, 0xBB",
1937 "MSRValue": "0x8003",
1938 "Counter": "0,1,2,3",
1939 "UMask": "0x1",
1940 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.IO_CSR_MMIO",
1941 "MSRIndex": "0x1a6,0x1a7",
1942 "SampleAfterValue": "100000",
1943 "BriefDescription": "Offcore demand data requests satisfied by the IO, CSR, MMIO unit.",
1944 "Offcore": "1"
1945 },
1946 {
1947 "EventCode": "0xB7, 0xBB",
1948 "MSRValue": "0x103",
1949 "Counter": "0,1,2,3",
1950 "UMask": "0x1",
1951 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_NO_OTHER_CORE",
1952 "MSRIndex": "0x1a6,0x1a7",
1953 "SampleAfterValue": "100000",
1954 "BriefDescription": "Offcore demand data requests satisfied by the LLC and not found in a sibling core",
1955 "Offcore": "1"
1956 },
1957 {
1958 "EventCode": "0xB7, 0xBB",
1959 "MSRValue": "0x203",
1960 "Counter": "0,1,2,3",
1961 "UMask": "0x1",
1962 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HIT",
1963 "MSRIndex": "0x1a6,0x1a7",
1964 "SampleAfterValue": "100000",
1965 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HIT in a sibling core",
1966 "Offcore": "1"
1967 },
1968 {
1969 "EventCode": "0xB7, 0xBB",
1970 "MSRValue": "0x403",
1971 "Counter": "0,1,2,3",
1972 "UMask": "0x1",
1973 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HITM",
1974 "MSRIndex": "0x1a6,0x1a7",
1975 "SampleAfterValue": "100000",
1976 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HITM in a sibling core",
1977 "Offcore": "1"
1978 },
1979 {
1980 "EventCode": "0xB7, 0xBB",
1981 "MSRValue": "0x703",
1982 "Counter": "0,1,2,3",
1983 "UMask": "0x1",
1984 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE",
1985 "MSRIndex": "0x1a6,0x1a7",
1986 "SampleAfterValue": "100000",
1987 "BriefDescription": "Offcore demand data requests satisfied by the LLC",
1988 "Offcore": "1"
1989 },
1990 {
1991 "EventCode": "0xB7, 0xBB",
1992 "MSRValue": "0x2703",
1993 "Counter": "0,1,2,3",
1994 "UMask": "0x1",
1995 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE_DRAM",
1996 "MSRIndex": "0x1a6,0x1a7",
1997 "SampleAfterValue": "100000",
1998 "BriefDescription": "Offcore demand data requests satisfied by the LLC or local DRAM",
1999 "Offcore": "1"
2000 },
2001 {
2002 "EventCode": "0xB7, 0xBB",
2003 "MSRValue": "0x1803",
2004 "Counter": "0,1,2,3",
2005 "UMask": "0x1",
2006 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE",
2007 "MSRIndex": "0x1a6,0x1a7",
2008 "SampleAfterValue": "100000",
2009 "BriefDescription": "Offcore demand data requests satisfied by a remote cache",
2010 "Offcore": "1"
2011 },
2012 {
2013 "EventCode": "0xB7, 0xBB",
2014 "MSRValue": "0x5803",
2015 "Counter": "0,1,2,3",
2016 "UMask": "0x1",
2017 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_DRAM",
2018 "MSRIndex": "0x1a6,0x1a7",
2019 "SampleAfterValue": "100000",
2020 "BriefDescription": "Offcore demand data requests satisfied by a remote cache or remote DRAM",
2021 "Offcore": "1"
2022 },
2023 {
2024 "EventCode": "0xB7, 0xBB",
2025 "MSRValue": "0x1003",
2026 "Counter": "0,1,2,3",
2027 "UMask": "0x1",
2028 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HIT",
2029 "MSRIndex": "0x1a6,0x1a7",
2030 "SampleAfterValue": "100000",
2031 "BriefDescription": "Offcore demand data requests that HIT in a remote cache",
2032 "Offcore": "1"
2033 },
2034 {
2035 "EventCode": "0xB7, 0xBB",
2036 "MSRValue": "0x803",
2037 "Counter": "0,1,2,3",
2038 "UMask": "0x1",
2039 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HITM",
2040 "MSRIndex": "0x1a6,0x1a7",
2041 "SampleAfterValue": "100000",
2042 "BriefDescription": "Offcore demand data requests that HITM in a remote cache",
2043 "Offcore": "1"
2044 },
2045 {
2046 "EventCode": "0xB7, 0xBB",
2047 "MSRValue": "0x7F01",
2048 "Counter": "0,1,2,3",
2049 "UMask": "0x1",
2050 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_CACHE_DRAM",
2051 "MSRIndex": "0x1a6,0x1a7",
2052 "SampleAfterValue": "100000",
2053 "BriefDescription": "Offcore demand data reads satisfied by any cache or DRAM.",
2054 "Offcore": "1"
2055 },
2056 {
2057 "EventCode": "0xB7, 0xBB",
2058 "MSRValue": "0xFF01",
2059 "Counter": "0,1,2,3",
2060 "UMask": "0x1",
2061 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LOCATION",
2062 "MSRIndex": "0x1a6,0x1a7",
2063 "SampleAfterValue": "100000",
2064 "BriefDescription": "All offcore demand data reads",
2065 "Offcore": "1"
2066 },
2067 {
2068 "EventCode": "0xB7, 0xBB",
2069 "MSRValue": "0x8001",
2070 "Counter": "0,1,2,3",
2071 "UMask": "0x1",
2072 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.IO_CSR_MMIO",
2073 "MSRIndex": "0x1a6,0x1a7",
2074 "SampleAfterValue": "100000",
2075 "BriefDescription": "Offcore demand data reads satisfied by the IO, CSR, MMIO unit",
2076 "Offcore": "1"
2077 },
2078 {
2079 "EventCode": "0xB7, 0xBB",
2080 "MSRValue": "0x101",
2081 "Counter": "0,1,2,3",
2082 "UMask": "0x1",
2083 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2084 "MSRIndex": "0x1a6,0x1a7",
2085 "SampleAfterValue": "100000",
2086 "BriefDescription": "Offcore demand data reads satisfied by the LLC and not found in a sibling core",
2087 "Offcore": "1"
2088 },
2089 {
2090 "EventCode": "0xB7, 0xBB",
2091 "MSRValue": "0x201",
2092 "Counter": "0,1,2,3",
2093 "UMask": "0x1",
2094 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2095 "MSRIndex": "0x1a6,0x1a7",
2096 "SampleAfterValue": "100000",
2097 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HIT in a sibling core",
2098 "Offcore": "1"
2099 },
2100 {
2101 "EventCode": "0xB7, 0xBB",
2102 "MSRValue": "0x401",
2103 "Counter": "0,1,2,3",
2104 "UMask": "0x1",
2105 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2106 "MSRIndex": "0x1a6,0x1a7",
2107 "SampleAfterValue": "100000",
2108 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HITM in a sibling core",
2109 "Offcore": "1"
2110 },
2111 {
2112 "EventCode": "0xB7, 0xBB",
2113 "MSRValue": "0x701",
2114 "Counter": "0,1,2,3",
2115 "UMask": "0x1",
2116 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE",
2117 "MSRIndex": "0x1a6,0x1a7",
2118 "SampleAfterValue": "100000",
2119 "BriefDescription": "Offcore demand data reads satisfied by the LLC",
2120 "Offcore": "1"
2121 },
2122 {
2123 "EventCode": "0xB7, 0xBB",
2124 "MSRValue": "0x2701",
2125 "Counter": "0,1,2,3",
2126 "UMask": "0x1",
2127 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE_DRAM",
2128 "MSRIndex": "0x1a6,0x1a7",
2129 "SampleAfterValue": "100000",
2130 "BriefDescription": "Offcore demand data reads satisfied by the LLC or local DRAM",
2131 "Offcore": "1"
2132 },
2133 {
2134 "EventCode": "0xB7, 0xBB",
2135 "MSRValue": "0x1801",
2136 "Counter": "0,1,2,3",
2137 "UMask": "0x1",
2138 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE",
2139 "MSRIndex": "0x1a6,0x1a7",
2140 "SampleAfterValue": "100000",
2141 "BriefDescription": "Offcore demand data reads satisfied by a remote cache",
2142 "Offcore": "1"
2143 },
2144 {
2145 "EventCode": "0xB7, 0xBB",
2146 "MSRValue": "0x5801",
2147 "Counter": "0,1,2,3",
2148 "UMask": "0x1",
2149 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_DRAM",
2150 "MSRIndex": "0x1a6,0x1a7",
2151 "SampleAfterValue": "100000",
2152 "BriefDescription": "Offcore demand data reads satisfied by a remote cache or remote DRAM",
2153 "Offcore": "1"
2154 },
2155 {
2156 "EventCode": "0xB7, 0xBB",
2157 "MSRValue": "0x1001",
2158 "Counter": "0,1,2,3",
2159 "UMask": "0x1",
2160 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HIT",
2161 "MSRIndex": "0x1a6,0x1a7",
2162 "SampleAfterValue": "100000",
2163 "BriefDescription": "Offcore demand data reads that HIT in a remote cache",
2164 "Offcore": "1"
2165 },
2166 {
2167 "EventCode": "0xB7, 0xBB",
2168 "MSRValue": "0x801",
2169 "Counter": "0,1,2,3",
2170 "UMask": "0x1",
2171 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HITM",
2172 "MSRIndex": "0x1a6,0x1a7",
2173 "SampleAfterValue": "100000",
2174 "BriefDescription": "Offcore demand data reads that HITM in a remote cache",
2175 "Offcore": "1"
2176 },
2177 {
2178 "EventCode": "0xB7, 0xBB",
2179 "MSRValue": "0x7F04",
2180 "Counter": "0,1,2,3",
2181 "UMask": "0x1",
2182 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_CACHE_DRAM",
2183 "MSRIndex": "0x1a6,0x1a7",
2184 "SampleAfterValue": "100000",
2185 "BriefDescription": "Offcore demand code reads satisfied by any cache or DRAM.",
2186 "Offcore": "1"
2187 },
2188 {
2189 "EventCode": "0xB7, 0xBB",
2190 "MSRValue": "0xFF04",
2191 "Counter": "0,1,2,3",
2192 "UMask": "0x1",
2193 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LOCATION",
2194 "MSRIndex": "0x1a6,0x1a7",
2195 "SampleAfterValue": "100000",
2196 "BriefDescription": "All offcore demand code reads",
2197 "Offcore": "1"
2198 },
2199 {
2200 "EventCode": "0xB7, 0xBB",
2201 "MSRValue": "0x8004",
2202 "Counter": "0,1,2,3",
2203 "UMask": "0x1",
2204 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.IO_CSR_MMIO",
2205 "MSRIndex": "0x1a6,0x1a7",
2206 "SampleAfterValue": "100000",
2207 "BriefDescription": "Offcore demand code reads satisfied by the IO, CSR, MMIO unit",
2208 "Offcore": "1"
2209 },
2210 {
2211 "EventCode": "0xB7, 0xBB",
2212 "MSRValue": "0x104",
2213 "Counter": "0,1,2,3",
2214 "UMask": "0x1",
2215 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_NO_OTHER_CORE",
2216 "MSRIndex": "0x1a6,0x1a7",
2217 "SampleAfterValue": "100000",
2218 "BriefDescription": "Offcore demand code reads satisfied by the LLC and not found in a sibling core",
2219 "Offcore": "1"
2220 },
2221 {
2222 "EventCode": "0xB7, 0xBB",
2223 "MSRValue": "0x204",
2224 "Counter": "0,1,2,3",
2225 "UMask": "0x1",
2226 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2227 "MSRIndex": "0x1a6,0x1a7",
2228 "SampleAfterValue": "100000",
2229 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HIT in a sibling core",
2230 "Offcore": "1"
2231 },
2232 {
2233 "EventCode": "0xB7, 0xBB",
2234 "MSRValue": "0x404",
2235 "Counter": "0,1,2,3",
2236 "UMask": "0x1",
2237 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2238 "MSRIndex": "0x1a6,0x1a7",
2239 "SampleAfterValue": "100000",
2240 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HITM in a sibling core",
2241 "Offcore": "1"
2242 },
2243 {
2244 "EventCode": "0xB7, 0xBB",
2245 "MSRValue": "0x704",
2246 "Counter": "0,1,2,3",
2247 "UMask": "0x1",
2248 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE",
2249 "MSRIndex": "0x1a6,0x1a7",
2250 "SampleAfterValue": "100000",
2251 "BriefDescription": "Offcore demand code reads satisfied by the LLC",
2252 "Offcore": "1"
2253 },
2254 {
2255 "EventCode": "0xB7, 0xBB",
2256 "MSRValue": "0x2704",
2257 "Counter": "0,1,2,3",
2258 "UMask": "0x1",
2259 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE_DRAM",
2260 "MSRIndex": "0x1a6,0x1a7",
2261 "SampleAfterValue": "100000",
2262 "BriefDescription": "Offcore demand code reads satisfied by the LLC or local DRAM",
2263 "Offcore": "1"
2264 },
2265 {
2266 "EventCode": "0xB7, 0xBB",
2267 "MSRValue": "0x1804",
2268 "Counter": "0,1,2,3",
2269 "UMask": "0x1",
2270 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE",
2271 "MSRIndex": "0x1a6,0x1a7",
2272 "SampleAfterValue": "100000",
2273 "BriefDescription": "Offcore demand code reads satisfied by a remote cache",
2274 "Offcore": "1"
2275 },
2276 {
2277 "EventCode": "0xB7, 0xBB",
2278 "MSRValue": "0x5804",
2279 "Counter": "0,1,2,3",
2280 "UMask": "0x1",
2281 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_DRAM",
2282 "MSRIndex": "0x1a6,0x1a7",
2283 "SampleAfterValue": "100000",
2284 "BriefDescription": "Offcore demand code reads satisfied by a remote cache or remote DRAM",
2285 "Offcore": "1"
2286 },
2287 {
2288 "EventCode": "0xB7, 0xBB",
2289 "MSRValue": "0x1004",
2290 "Counter": "0,1,2,3",
2291 "UMask": "0x1",
2292 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HIT",
2293 "MSRIndex": "0x1a6,0x1a7",
2294 "SampleAfterValue": "100000",
2295 "BriefDescription": "Offcore demand code reads that HIT in a remote cache",
2296 "Offcore": "1"
2297 },
2298 {
2299 "EventCode": "0xB7, 0xBB",
2300 "MSRValue": "0x804",
2301 "Counter": "0,1,2,3",
2302 "UMask": "0x1",
2303 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HITM",
2304 "MSRIndex": "0x1a6,0x1a7",
2305 "SampleAfterValue": "100000",
2306 "BriefDescription": "Offcore demand code reads that HITM in a remote cache",
2307 "Offcore": "1"
2308 },
2309 {
2310 "EventCode": "0xB7, 0xBB",
2311 "MSRValue": "0x7F02",
2312 "Counter": "0,1,2,3",
2313 "UMask": "0x1",
2314 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_CACHE_DRAM",
2315 "MSRIndex": "0x1a6,0x1a7",
2316 "SampleAfterValue": "100000",
2317 "BriefDescription": "Offcore demand RFO requests satisfied by any cache or DRAM.",
2318 "Offcore": "1"
2319 },
2320 {
2321 "EventCode": "0xB7, 0xBB",
2322 "MSRValue": "0xFF02",
2323 "Counter": "0,1,2,3",
2324 "UMask": "0x1",
2325 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LOCATION",
2326 "MSRIndex": "0x1a6,0x1a7",
2327 "SampleAfterValue": "100000",
2328 "BriefDescription": "All offcore demand RFO requests",
2329 "Offcore": "1"
2330 },
2331 {
2332 "EventCode": "0xB7, 0xBB",
2333 "MSRValue": "0x8002",
2334 "Counter": "0,1,2,3",
2335 "UMask": "0x1",
2336 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.IO_CSR_MMIO",
2337 "MSRIndex": "0x1a6,0x1a7",
2338 "SampleAfterValue": "100000",
2339 "BriefDescription": "Offcore demand RFO requests satisfied by the IO, CSR, MMIO unit",
2340 "Offcore": "1"
2341 },
2342 {
2343 "EventCode": "0xB7, 0xBB",
2344 "MSRValue": "0x102",
2345 "Counter": "0,1,2,3",
2346 "UMask": "0x1",
2347 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_NO_OTHER_CORE",
2348 "MSRIndex": "0x1a6,0x1a7",
2349 "SampleAfterValue": "100000",
2350 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and not found in a sibling core",
2351 "Offcore": "1"
2352 },
2353 {
2354 "EventCode": "0xB7, 0xBB",
2355 "MSRValue": "0x202",
2356 "Counter": "0,1,2,3",
2357 "UMask": "0x1",
2358 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HIT",
2359 "MSRIndex": "0x1a6,0x1a7",
2360 "SampleAfterValue": "100000",
2361 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HIT in a sibling core",
2362 "Offcore": "1"
2363 },
2364 {
2365 "EventCode": "0xB7, 0xBB",
2366 "MSRValue": "0x402",
2367 "Counter": "0,1,2,3",
2368 "UMask": "0x1",
2369 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HITM",
2370 "MSRIndex": "0x1a6,0x1a7",
2371 "SampleAfterValue": "100000",
2372 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HITM in a sibling core",
2373 "Offcore": "1"
2374 },
2375 {
2376 "EventCode": "0xB7, 0xBB",
2377 "MSRValue": "0x702",
2378 "Counter": "0,1,2,3",
2379 "UMask": "0x1",
2380 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE",
2381 "MSRIndex": "0x1a6,0x1a7",
2382 "SampleAfterValue": "100000",
2383 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC",
2384 "Offcore": "1"
2385 },
2386 {
2387 "EventCode": "0xB7, 0xBB",
2388 "MSRValue": "0x2702",
2389 "Counter": "0,1,2,3",
2390 "UMask": "0x1",
2391 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE_DRAM",
2392 "MSRIndex": "0x1a6,0x1a7",
2393 "SampleAfterValue": "100000",
2394 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC or local DRAM",
2395 "Offcore": "1"
2396 },
2397 {
2398 "EventCode": "0xB7, 0xBB",
2399 "MSRValue": "0x1802",
2400 "Counter": "0,1,2,3",
2401 "UMask": "0x1",
2402 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE",
2403 "MSRIndex": "0x1a6,0x1a7",
2404 "SampleAfterValue": "100000",
2405 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache",
2406 "Offcore": "1"
2407 },
2408 {
2409 "EventCode": "0xB7, 0xBB",
2410 "MSRValue": "0x5802",
2411 "Counter": "0,1,2,3",
2412 "UMask": "0x1",
2413 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_DRAM",
2414 "MSRIndex": "0x1a6,0x1a7",
2415 "SampleAfterValue": "100000",
2416 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache or remote DRAM",
2417 "Offcore": "1"
2418 },
2419 {
2420 "EventCode": "0xB7, 0xBB",
2421 "MSRValue": "0x1002",
2422 "Counter": "0,1,2,3",
2423 "UMask": "0x1",
2424 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HIT",
2425 "MSRIndex": "0x1a6,0x1a7",
2426 "SampleAfterValue": "100000",
2427 "BriefDescription": "Offcore demand RFO requests that HIT in a remote cache",
2428 "Offcore": "1"
2429 },
2430 {
2431 "EventCode": "0xB7, 0xBB",
2432 "MSRValue": "0x802",
2433 "Counter": "0,1,2,3",
2434 "UMask": "0x1",
2435 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HITM",
2436 "MSRIndex": "0x1a6,0x1a7",
2437 "SampleAfterValue": "100000",
2438 "BriefDescription": "Offcore demand RFO requests that HITM in a remote cache",
2439 "Offcore": "1"
2440 },
2441 {
2442 "EventCode": "0xB7, 0xBB",
2443 "MSRValue": "0x7F80",
2444 "Counter": "0,1,2,3",
2445 "UMask": "0x1",
2446 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_CACHE_DRAM",
2447 "MSRIndex": "0x1a6,0x1a7",
2448 "SampleAfterValue": "100000",
2449 "BriefDescription": "Offcore other requests satisfied by any cache or DRAM.",
2450 "Offcore": "1"
2451 },
2452 {
2453 "EventCode": "0xB7, 0xBB",
2454 "MSRValue": "0xFF80",
2455 "Counter": "0,1,2,3",
2456 "UMask": "0x1",
2457 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LOCATION",
2458 "MSRIndex": "0x1a6,0x1a7",
2459 "SampleAfterValue": "100000",
2460 "BriefDescription": "All offcore other requests",
2461 "Offcore": "1"
2462 },
2463 {
2464 "EventCode": "0xB7, 0xBB",
2465 "MSRValue": "0x8080",
2466 "Counter": "0,1,2,3",
2467 "UMask": "0x1",
2468 "EventName": "OFFCORE_RESPONSE.OTHER.IO_CSR_MMIO",
2469 "MSRIndex": "0x1a6,0x1a7",
2470 "SampleAfterValue": "100000",
2471 "BriefDescription": "Offcore other requests satisfied by the IO, CSR, MMIO unit",
2472 "Offcore": "1"
2473 },
2474 {
2475 "EventCode": "0xB7, 0xBB",
2476 "MSRValue": "0x180",
2477 "Counter": "0,1,2,3",
2478 "UMask": "0x1",
2479 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_NO_OTHER_CORE",
2480 "MSRIndex": "0x1a6,0x1a7",
2481 "SampleAfterValue": "100000",
2482 "BriefDescription": "Offcore other requests satisfied by the LLC and not found in a sibling core",
2483 "Offcore": "1"
2484 },
2485 {
2486 "EventCode": "0xB7, 0xBB",
2487 "MSRValue": "0x280",
2488 "Counter": "0,1,2,3",
2489 "UMask": "0x1",
2490 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HIT",
2491 "MSRIndex": "0x1a6,0x1a7",
2492 "SampleAfterValue": "100000",
2493 "BriefDescription": "Offcore other requests satisfied by the LLC and HIT in a sibling core",
2494 "Offcore": "1"
2495 },
2496 {
2497 "EventCode": "0xB7, 0xBB",
2498 "MSRValue": "0x480",
2499 "Counter": "0,1,2,3",
2500 "UMask": "0x1",
2501 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HITM",
2502 "MSRIndex": "0x1a6,0x1a7",
2503 "SampleAfterValue": "100000",
2504 "BriefDescription": "Offcore other requests satisfied by the LLC and HITM in a sibling core",
2505 "Offcore": "1"
2506 },
2507 {
2508 "EventCode": "0xB7, 0xBB",
2509 "MSRValue": "0x780",
2510 "Counter": "0,1,2,3",
2511 "UMask": "0x1",
2512 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE",
2513 "MSRIndex": "0x1a6,0x1a7",
2514 "SampleAfterValue": "100000",
2515 "BriefDescription": "Offcore other requests satisfied by the LLC",
2516 "Offcore": "1"
2517 },
2518 {
2519 "EventCode": "0xB7, 0xBB",
2520 "MSRValue": "0x2780",
2521 "Counter": "0,1,2,3",
2522 "UMask": "0x1",
2523 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE_DRAM",
2524 "MSRIndex": "0x1a6,0x1a7",
2525 "SampleAfterValue": "100000",
2526 "BriefDescription": "Offcore other requests satisfied by the LLC or local DRAM",
2527 "Offcore": "1"
2528 },
2529 {
2530 "EventCode": "0xB7, 0xBB",
2531 "MSRValue": "0x1880",
2532 "Counter": "0,1,2,3",
2533 "UMask": "0x1",
2534 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE",
2535 "MSRIndex": "0x1a6,0x1a7",
2536 "SampleAfterValue": "100000",
2537 "BriefDescription": "Offcore other requests satisfied by a remote cache",
2538 "Offcore": "1"
2539 },
2540 {
2541 "EventCode": "0xB7, 0xBB",
2542 "MSRValue": "0x5880",
2543 "Counter": "0,1,2,3",
2544 "UMask": "0x1",
2545 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_DRAM",
2546 "MSRIndex": "0x1a6,0x1a7",
2547 "SampleAfterValue": "100000",
2548 "BriefDescription": "Offcore other requests satisfied by a remote cache or remote DRAM",
2549 "Offcore": "1"
2550 },
2551 {
2552 "EventCode": "0xB7, 0xBB",
2553 "MSRValue": "0x1080",
2554 "Counter": "0,1,2,3",
2555 "UMask": "0x1",
2556 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HIT",
2557 "MSRIndex": "0x1a6,0x1a7",
2558 "SampleAfterValue": "100000",
2559 "BriefDescription": "Offcore other requests that HIT in a remote cache",
2560 "Offcore": "1"
2561 },
2562 {
2563 "EventCode": "0xB7, 0xBB",
2564 "MSRValue": "0x880",
2565 "Counter": "0,1,2,3",
2566 "UMask": "0x1",
2567 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HITM",
2568 "MSRIndex": "0x1a6,0x1a7",
2569 "SampleAfterValue": "100000",
2570 "BriefDescription": "Offcore other requests that HITM in a remote cache",
2571 "Offcore": "1"
2572 },
2573 {
2574 "EventCode": "0xB7, 0xBB",
2575 "MSRValue": "0x7F50",
2576 "Counter": "0,1,2,3",
2577 "UMask": "0x1",
2578 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_CACHE_DRAM",
2579 "MSRIndex": "0x1a6,0x1a7",
2580 "SampleAfterValue": "100000",
2581 "BriefDescription": "Offcore prefetch data requests satisfied by any cache or DRAM",
2582 "Offcore": "1"
2583 },
2584 {
2585 "EventCode": "0xB7, 0xBB",
2586 "MSRValue": "0xFF50",
2587 "Counter": "0,1,2,3",
2588 "UMask": "0x1",
2589 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LOCATION",
2590 "MSRIndex": "0x1a6,0x1a7",
2591 "SampleAfterValue": "100000",
2592 "BriefDescription": "All offcore prefetch data requests",
2593 "Offcore": "1"
2594 },
2595 {
2596 "EventCode": "0xB7, 0xBB",
2597 "MSRValue": "0x8050",
2598 "Counter": "0,1,2,3",
2599 "UMask": "0x1",
2600 "EventName": "OFFCORE_RESPONSE.PF_DATA.IO_CSR_MMIO",
2601 "MSRIndex": "0x1a6,0x1a7",
2602 "SampleAfterValue": "100000",
2603 "BriefDescription": "Offcore prefetch data requests satisfied by the IO, CSR, MMIO unit.",
2604 "Offcore": "1"
2605 },
2606 {
2607 "EventCode": "0xB7, 0xBB",
2608 "MSRValue": "0x150",
2609 "Counter": "0,1,2,3",
2610 "UMask": "0x1",
2611 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_NO_OTHER_CORE",
2612 "MSRIndex": "0x1a6,0x1a7",
2613 "SampleAfterValue": "100000",
2614 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and not found in a sibling core",
2615 "Offcore": "1"
2616 },
2617 {
2618 "EventCode": "0xB7, 0xBB",
2619 "MSRValue": "0x250",
2620 "Counter": "0,1,2,3",
2621 "UMask": "0x1",
2622 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HIT",
2623 "MSRIndex": "0x1a6,0x1a7",
2624 "SampleAfterValue": "100000",
2625 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HIT in a sibling core",
2626 "Offcore": "1"
2627 },
2628 {
2629 "EventCode": "0xB7, 0xBB",
2630 "MSRValue": "0x450",
2631 "Counter": "0,1,2,3",
2632 "UMask": "0x1",
2633 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HITM",
2634 "MSRIndex": "0x1a6,0x1a7",
2635 "SampleAfterValue": "100000",
2636 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HITM in a sibling core",
2637 "Offcore": "1"
2638 },
2639 {
2640 "EventCode": "0xB7, 0xBB",
2641 "MSRValue": "0x750",
2642 "Counter": "0,1,2,3",
2643 "UMask": "0x1",
2644 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE",
2645 "MSRIndex": "0x1a6,0x1a7",
2646 "SampleAfterValue": "100000",
2647 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC",
2648 "Offcore": "1"
2649 },
2650 {
2651 "EventCode": "0xB7, 0xBB",
2652 "MSRValue": "0x2750",
2653 "Counter": "0,1,2,3",
2654 "UMask": "0x1",
2655 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE_DRAM",
2656 "MSRIndex": "0x1a6,0x1a7",
2657 "SampleAfterValue": "100000",
2658 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC or local DRAM",
2659 "Offcore": "1"
2660 },
2661 {
2662 "EventCode": "0xB7, 0xBB",
2663 "MSRValue": "0x1850",
2664 "Counter": "0,1,2,3",
2665 "UMask": "0x1",
2666 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE",
2667 "MSRIndex": "0x1a6,0x1a7",
2668 "SampleAfterValue": "100000",
2669 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache",
2670 "Offcore": "1"
2671 },
2672 {
2673 "EventCode": "0xB7, 0xBB",
2674 "MSRValue": "0x5850",
2675 "Counter": "0,1,2,3",
2676 "UMask": "0x1",
2677 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_DRAM",
2678 "MSRIndex": "0x1a6,0x1a7",
2679 "SampleAfterValue": "100000",
2680 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache or remote DRAM",
2681 "Offcore": "1"
2682 },
2683 {
2684 "EventCode": "0xB7, 0xBB",
2685 "MSRValue": "0x1050",
2686 "Counter": "0,1,2,3",
2687 "UMask": "0x1",
2688 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HIT",
2689 "MSRIndex": "0x1a6,0x1a7",
2690 "SampleAfterValue": "100000",
2691 "BriefDescription": "Offcore prefetch data requests that HIT in a remote cache",
2692 "Offcore": "1"
2693 },
2694 {
2695 "EventCode": "0xB7, 0xBB",
2696 "MSRValue": "0x850",
2697 "Counter": "0,1,2,3",
2698 "UMask": "0x1",
2699 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HITM",
2700 "MSRIndex": "0x1a6,0x1a7",
2701 "SampleAfterValue": "100000",
2702 "BriefDescription": "Offcore prefetch data requests that HITM in a remote cache",
2703 "Offcore": "1"
2704 },
2705 {
2706 "EventCode": "0xB7, 0xBB",
2707 "MSRValue": "0x7F10",
2708 "Counter": "0,1,2,3",
2709 "UMask": "0x1",
2710 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_CACHE_DRAM",
2711 "MSRIndex": "0x1a6,0x1a7",
2712 "SampleAfterValue": "100000",
2713 "BriefDescription": "Offcore prefetch data reads satisfied by any cache or DRAM.",
2714 "Offcore": "1"
2715 },
2716 {
2717 "EventCode": "0xB7, 0xBB",
2718 "MSRValue": "0xFF10",
2719 "Counter": "0,1,2,3",
2720 "UMask": "0x1",
2721 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LOCATION",
2722 "MSRIndex": "0x1a6,0x1a7",
2723 "SampleAfterValue": "100000",
2724 "BriefDescription": "All offcore prefetch data reads",
2725 "Offcore": "1"
2726 },
2727 {
2728 "EventCode": "0xB7, 0xBB",
2729 "MSRValue": "0x8010",
2730 "Counter": "0,1,2,3",
2731 "UMask": "0x1",
2732 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.IO_CSR_MMIO",
2733 "MSRIndex": "0x1a6,0x1a7",
2734 "SampleAfterValue": "100000",
2735 "BriefDescription": "Offcore prefetch data reads satisfied by the IO, CSR, MMIO unit",
2736 "Offcore": "1"
2737 },
2738 {
2739 "EventCode": "0xB7, 0xBB",
2740 "MSRValue": "0x110",
2741 "Counter": "0,1,2,3",
2742 "UMask": "0x1",
2743 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2744 "MSRIndex": "0x1a6,0x1a7",
2745 "SampleAfterValue": "100000",
2746 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and not found in a sibling core",
2747 "Offcore": "1"
2748 },
2749 {
2750 "EventCode": "0xB7, 0xBB",
2751 "MSRValue": "0x210",
2752 "Counter": "0,1,2,3",
2753 "UMask": "0x1",
2754 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2755 "MSRIndex": "0x1a6,0x1a7",
2756 "SampleAfterValue": "100000",
2757 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HIT in a sibling core",
2758 "Offcore": "1"
2759 },
2760 {
2761 "EventCode": "0xB7, 0xBB",
2762 "MSRValue": "0x410",
2763 "Counter": "0,1,2,3",
2764 "UMask": "0x1",
2765 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2766 "MSRIndex": "0x1a6,0x1a7",
2767 "SampleAfterValue": "100000",
2768 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HITM in a sibling core",
2769 "Offcore": "1"
2770 },
2771 {
2772 "EventCode": "0xB7, 0xBB",
2773 "MSRValue": "0x710",
2774 "Counter": "0,1,2,3",
2775 "UMask": "0x1",
2776 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE",
2777 "MSRIndex": "0x1a6,0x1a7",
2778 "SampleAfterValue": "100000",
2779 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC",
2780 "Offcore": "1"
2781 },
2782 {
2783 "EventCode": "0xB7, 0xBB",
2784 "MSRValue": "0x2710",
2785 "Counter": "0,1,2,3",
2786 "UMask": "0x1",
2787 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE_DRAM",
2788 "MSRIndex": "0x1a6,0x1a7",
2789 "SampleAfterValue": "100000",
2790 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC or local DRAM",
2791 "Offcore": "1"
2792 },
2793 {
2794 "EventCode": "0xB7, 0xBB",
2795 "MSRValue": "0x1810",
2796 "Counter": "0,1,2,3",
2797 "UMask": "0x1",
2798 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE",
2799 "MSRIndex": "0x1a6,0x1a7",
2800 "SampleAfterValue": "100000",
2801 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache",
2802 "Offcore": "1"
2803 },
2804 {
2805 "EventCode": "0xB7, 0xBB",
2806 "MSRValue": "0x5810",
2807 "Counter": "0,1,2,3",
2808 "UMask": "0x1",
2809 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_DRAM",
2810 "MSRIndex": "0x1a6,0x1a7",
2811 "SampleAfterValue": "100000",
2812 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache or remote DRAM",
2813 "Offcore": "1"
2814 },
2815 {
2816 "EventCode": "0xB7, 0xBB",
2817 "MSRValue": "0x1010",
2818 "Counter": "0,1,2,3",
2819 "UMask": "0x1",
2820 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HIT",
2821 "MSRIndex": "0x1a6,0x1a7",
2822 "SampleAfterValue": "100000",
2823 "BriefDescription": "Offcore prefetch data reads that HIT in a remote cache",
2824 "Offcore": "1"
2825 },
2826 {
2827 "EventCode": "0xB7, 0xBB",
2828 "MSRValue": "0x810",
2829 "Counter": "0,1,2,3",
2830 "UMask": "0x1",
2831 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HITM",
2832 "MSRIndex": "0x1a6,0x1a7",
2833 "SampleAfterValue": "100000",
2834 "BriefDescription": "Offcore prefetch data reads that HITM in a remote cache",
2835 "Offcore": "1"
2836 },
2837 {
2838 "EventCode": "0xB7, 0xBB",
2839 "MSRValue": "0x7F40",
2840 "Counter": "0,1,2,3",
2841 "UMask": "0x1",
2842 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_CACHE_DRAM",
2843 "MSRIndex": "0x1a6,0x1a7",
2844 "SampleAfterValue": "100000",
2845 "BriefDescription": "Offcore prefetch code reads satisfied by any cache or DRAM.",
2846 "Offcore": "1"
2847 },
2848 {
2849 "EventCode": "0xB7, 0xBB",
2850 "MSRValue": "0xFF40",
2851 "Counter": "0,1,2,3",
2852 "UMask": "0x1",
2853 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LOCATION",
2854 "MSRIndex": "0x1a6,0x1a7",
2855 "SampleAfterValue": "100000",
2856 "BriefDescription": "All offcore prefetch code reads",
2857 "Offcore": "1"
2858 },
2859 {
2860 "EventCode": "0xB7, 0xBB",
2861 "MSRValue": "0x8040",
2862 "Counter": "0,1,2,3",
2863 "UMask": "0x1",
2864 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.IO_CSR_MMIO",
2865 "MSRIndex": "0x1a6,0x1a7",
2866 "SampleAfterValue": "100000",
2867 "BriefDescription": "Offcore prefetch code reads satisfied by the IO, CSR, MMIO unit",
2868 "Offcore": "1"
2869 },
2870 {
2871 "EventCode": "0xB7, 0xBB",
2872 "MSRValue": "0x140",
2873 "Counter": "0,1,2,3",
2874 "UMask": "0x1",
2875 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_NO_OTHER_CORE",
2876 "MSRIndex": "0x1a6,0x1a7",
2877 "SampleAfterValue": "100000",
2878 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and not found in a sibling core",
2879 "Offcore": "1"
2880 },
2881 {
2882 "EventCode": "0xB7, 0xBB",
2883 "MSRValue": "0x240",
2884 "Counter": "0,1,2,3",
2885 "UMask": "0x1",
2886 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2887 "MSRIndex": "0x1a6,0x1a7",
2888 "SampleAfterValue": "100000",
2889 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HIT in a sibling core",
2890 "Offcore": "1"
2891 },
2892 {
2893 "EventCode": "0xB7, 0xBB",
2894 "MSRValue": "0x440",
2895 "Counter": "0,1,2,3",
2896 "UMask": "0x1",
2897 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2898 "MSRIndex": "0x1a6,0x1a7",
2899 "SampleAfterValue": "100000",
2900 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HITM in a sibling core",
2901 "Offcore": "1"
2902 },
2903 {
2904 "EventCode": "0xB7, 0xBB",
2905 "MSRValue": "0x740",
2906 "Counter": "0,1,2,3",
2907 "UMask": "0x1",
2908 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE",
2909 "MSRIndex": "0x1a6,0x1a7",
2910 "SampleAfterValue": "100000",
2911 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC",
2912 "Offcore": "1"
2913 },
2914 {
2915 "EventCode": "0xB7, 0xBB",
2916 "MSRValue": "0x2740",
2917 "Counter": "0,1,2,3",
2918 "UMask": "0x1",
2919 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE_DRAM",
2920 "MSRIndex": "0x1a6,0x1a7",
2921 "SampleAfterValue": "100000",
2922 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC or local DRAM",
2923 "Offcore": "1"
2924 },
2925 {
2926 "EventCode": "0xB7, 0xBB",
2927 "MSRValue": "0x1840",
2928 "Counter": "0,1,2,3",
2929 "UMask": "0x1",
2930 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE",
2931 "MSRIndex": "0x1a6,0x1a7",
2932 "SampleAfterValue": "100000",
2933 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache",
2934 "Offcore": "1"
2935 },
2936 {
2937 "EventCode": "0xB7, 0xBB",
2938 "MSRValue": "0x5840",
2939 "Counter": "0,1,2,3",
2940 "UMask": "0x1",
2941 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_DRAM",
2942 "MSRIndex": "0x1a6,0x1a7",
2943 "SampleAfterValue": "100000",
2944 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache or remote DRAM",
2945 "Offcore": "1"
2946 },
2947 {
2948 "EventCode": "0xB7, 0xBB",
2949 "MSRValue": "0x1040",
2950 "Counter": "0,1,2,3",
2951 "UMask": "0x1",
2952 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HIT",
2953 "MSRIndex": "0x1a6,0x1a7",
2954 "SampleAfterValue": "100000",
2955 "BriefDescription": "Offcore prefetch code reads that HIT in a remote cache",
2956 "Offcore": "1"
2957 },
2958 {
2959 "EventCode": "0xB7, 0xBB",
2960 "MSRValue": "0x840",
2961 "Counter": "0,1,2,3",
2962 "UMask": "0x1",
2963 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HITM",
2964 "MSRIndex": "0x1a6,0x1a7",
2965 "SampleAfterValue": "100000",
2966 "BriefDescription": "Offcore prefetch code reads that HITM in a remote cache",
2967 "Offcore": "1"
2968 },
2969 {
2970 "EventCode": "0xB7, 0xBB",
2971 "MSRValue": "0x7F20",
2972 "Counter": "0,1,2,3",
2973 "UMask": "0x1",
2974 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_CACHE_DRAM",
2975 "MSRIndex": "0x1a6,0x1a7",
2976 "SampleAfterValue": "100000",
2977 "BriefDescription": "Offcore prefetch RFO requests satisfied by any cache or DRAM.",
2978 "Offcore": "1"
2979 },
2980 {
2981 "EventCode": "0xB7, 0xBB",
2982 "MSRValue": "0xFF20",
2983 "Counter": "0,1,2,3",
2984 "UMask": "0x1",
2985 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LOCATION",
2986 "MSRIndex": "0x1a6,0x1a7",
2987 "SampleAfterValue": "100000",
2988 "BriefDescription": "All offcore prefetch RFO requests",
2989 "Offcore": "1"
2990 },
2991 {
2992 "EventCode": "0xB7, 0xBB",
2993 "MSRValue": "0x8020",
2994 "Counter": "0,1,2,3",
2995 "UMask": "0x1",
2996 "EventName": "OFFCORE_RESPONSE.PF_RFO.IO_CSR_MMIO",
2997 "MSRIndex": "0x1a6,0x1a7",
2998 "SampleAfterValue": "100000",
2999 "BriefDescription": "Offcore prefetch RFO requests satisfied by the IO, CSR, MMIO unit",
3000 "Offcore": "1"
3001 },
3002 {
3003 "EventCode": "0xB7, 0xBB",
3004 "MSRValue": "0x120",
3005 "Counter": "0,1,2,3",
3006 "UMask": "0x1",
3007 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_NO_OTHER_CORE",
3008 "MSRIndex": "0x1a6,0x1a7",
3009 "SampleAfterValue": "100000",
3010 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and not found in a sibling core",
3011 "Offcore": "1"
3012 },
3013 {
3014 "EventCode": "0xB7, 0xBB",
3015 "MSRValue": "0x220",
3016 "Counter": "0,1,2,3",
3017 "UMask": "0x1",
3018 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HIT",
3019 "MSRIndex": "0x1a6,0x1a7",
3020 "SampleAfterValue": "100000",
3021 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HIT in a sibling core",
3022 "Offcore": "1"
3023 },
3024 {
3025 "EventCode": "0xB7, 0xBB",
3026 "MSRValue": "0x420",
3027 "Counter": "0,1,2,3",
3028 "UMask": "0x1",
3029 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HITM",
3030 "MSRIndex": "0x1a6,0x1a7",
3031 "SampleAfterValue": "100000",
3032 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HITM in a sibling core",
3033 "Offcore": "1"
3034 },
3035 {
3036 "EventCode": "0xB7, 0xBB",
3037 "MSRValue": "0x720",
3038 "Counter": "0,1,2,3",
3039 "UMask": "0x1",
3040 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE",
3041 "MSRIndex": "0x1a6,0x1a7",
3042 "SampleAfterValue": "100000",
3043 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC",
3044 "Offcore": "1"
3045 },
3046 {
3047 "EventCode": "0xB7, 0xBB",
3048 "MSRValue": "0x2720",
3049 "Counter": "0,1,2,3",
3050 "UMask": "0x1",
3051 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE_DRAM",
3052 "MSRIndex": "0x1a6,0x1a7",
3053 "SampleAfterValue": "100000",
3054 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC or local DRAM",
3055 "Offcore": "1"
3056 },
3057 {
3058 "EventCode": "0xB7, 0xBB",
3059 "MSRValue": "0x1820",
3060 "Counter": "0,1,2,3",
3061 "UMask": "0x1",
3062 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE",
3063 "MSRIndex": "0x1a6,0x1a7",
3064 "SampleAfterValue": "100000",
3065 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache",
3066 "Offcore": "1"
3067 },
3068 {
3069 "EventCode": "0xB7, 0xBB",
3070 "MSRValue": "0x5820",
3071 "Counter": "0,1,2,3",
3072 "UMask": "0x1",
3073 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_DRAM",
3074 "MSRIndex": "0x1a6,0x1a7",
3075 "SampleAfterValue": "100000",
3076 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache or remote DRAM",
3077 "Offcore": "1"
3078 },
3079 {
3080 "EventCode": "0xB7, 0xBB",
3081 "MSRValue": "0x1020",
3082 "Counter": "0,1,2,3",
3083 "UMask": "0x1",
3084 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HIT",
3085 "MSRIndex": "0x1a6,0x1a7",
3086 "SampleAfterValue": "100000",
3087 "BriefDescription": "Offcore prefetch RFO requests that HIT in a remote cache",
3088 "Offcore": "1"
3089 },
3090 {
3091 "EventCode": "0xB7, 0xBB",
3092 "MSRValue": "0x820",
3093 "Counter": "0,1,2,3",
3094 "UMask": "0x1",
3095 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HITM",
3096 "MSRIndex": "0x1a6,0x1a7",
3097 "SampleAfterValue": "100000",
3098 "BriefDescription": "Offcore prefetch RFO requests that HITM in a remote cache",
3099 "Offcore": "1"
3100 },
3101 {
3102 "EventCode": "0xB7, 0xBB",
3103 "MSRValue": "0x7F70",
3104 "Counter": "0,1,2,3",
3105 "UMask": "0x1",
3106 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_CACHE_DRAM",
3107 "MSRIndex": "0x1a6,0x1a7",
3108 "SampleAfterValue": "100000",
3109 "BriefDescription": "Offcore prefetch requests satisfied by any cache or DRAM.",
3110 "Offcore": "1"
3111 },
3112 {
3113 "EventCode": "0xB7, 0xBB",
3114 "MSRValue": "0xFF70",
3115 "Counter": "0,1,2,3",
3116 "UMask": "0x1",
3117 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LOCATION",
3118 "MSRIndex": "0x1a6,0x1a7",
3119 "SampleAfterValue": "100000",
3120 "BriefDescription": "All offcore prefetch requests",
3121 "Offcore": "1"
3122 },
3123 {
3124 "EventCode": "0xB7, 0xBB",
3125 "MSRValue": "0x8070",
3126 "Counter": "0,1,2,3",
3127 "UMask": "0x1",
3128 "EventName": "OFFCORE_RESPONSE.PREFETCH.IO_CSR_MMIO",
3129 "MSRIndex": "0x1a6,0x1a7",
3130 "SampleAfterValue": "100000",
3131 "BriefDescription": "Offcore prefetch requests satisfied by the IO, CSR, MMIO unit",
3132 "Offcore": "1"
3133 },
3134 {
3135 "EventCode": "0xB7, 0xBB",
3136 "MSRValue": "0x170",
3137 "Counter": "0,1,2,3",
3138 "UMask": "0x1",
3139 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_NO_OTHER_CORE",
3140 "MSRIndex": "0x1a6,0x1a7",
3141 "SampleAfterValue": "100000",
3142 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and not found in a sibling core",
3143 "Offcore": "1"
3144 },
3145 {
3146 "EventCode": "0xB7, 0xBB",
3147 "MSRValue": "0x270",
3148 "Counter": "0,1,2,3",
3149 "UMask": "0x1",
3150 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HIT",
3151 "MSRIndex": "0x1a6,0x1a7",
3152 "SampleAfterValue": "100000",
3153 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HIT in a sibling core",
3154 "Offcore": "1"
3155 },
3156 {
3157 "EventCode": "0xB7, 0xBB",
3158 "MSRValue": "0x470",
3159 "Counter": "0,1,2,3",
3160 "UMask": "0x1",
3161 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HITM",
3162 "MSRIndex": "0x1a6,0x1a7",
3163 "SampleAfterValue": "100000",
3164 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HITM in a sibling core",
3165 "Offcore": "1"
3166 },
3167 {
3168 "EventCode": "0xB7, 0xBB",
3169 "MSRValue": "0x770",
3170 "Counter": "0,1,2,3",
3171 "UMask": "0x1",
3172 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE",
3173 "MSRIndex": "0x1a6,0x1a7",
3174 "SampleAfterValue": "100000",
3175 "BriefDescription": "Offcore prefetch requests satisfied by the LLC",
3176 "Offcore": "1"
3177 },
3178 {
3179 "EventCode": "0xB7, 0xBB",
3180 "MSRValue": "0x2770",
3181 "Counter": "0,1,2,3",
3182 "UMask": "0x1",
3183 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE_DRAM",
3184 "MSRIndex": "0x1a6,0x1a7",
3185 "SampleAfterValue": "100000",
3186 "BriefDescription": "Offcore prefetch requests satisfied by the LLC or local DRAM",
3187 "Offcore": "1"
3188 },
3189 {
3190 "EventCode": "0xB7, 0xBB",
3191 "MSRValue": "0x1870",
3192 "Counter": "0,1,2,3",
3193 "UMask": "0x1",
3194 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE",
3195 "MSRIndex": "0x1a6,0x1a7",
3196 "SampleAfterValue": "100000",
3197 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache",
3198 "Offcore": "1"
3199 },
3200 {
3201 "EventCode": "0xB7, 0xBB",
3202 "MSRValue": "0x5870",
3203 "Counter": "0,1,2,3",
3204 "UMask": "0x1",
3205 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_DRAM",
3206 "MSRIndex": "0x1a6,0x1a7",
3207 "SampleAfterValue": "100000",
3208 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache or remote DRAM",
3209 "Offcore": "1"
3210 },
3211 {
3212 "EventCode": "0xB7, 0xBB",
3213 "MSRValue": "0x1070",
3214 "Counter": "0,1,2,3",
3215 "UMask": "0x1",
3216 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HIT",
3217 "MSRIndex": "0x1a6,0x1a7",
3218 "SampleAfterValue": "100000",
3219 "BriefDescription": "Offcore prefetch requests that HIT in a remote cache",
3220 "Offcore": "1"
3221 },
3222 {
3223 "EventCode": "0xB7, 0xBB",
3224 "MSRValue": "0x870",
3225 "Counter": "0,1,2,3",
3226 "UMask": "0x1",
3227 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HITM",
3228 "MSRIndex": "0x1a6,0x1a7",
3229 "SampleAfterValue": "100000",
3230 "BriefDescription": "Offcore prefetch requests that HITM in a remote cache",
3231 "Offcore": "1"
3232 }
3233] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-sp/floating-point.json b/tools/perf/pmu-events/arch/x86/westmereep-sp/floating-point.json
new file mode 100644
index 000000000000..7d2f71a9dee3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-sp/floating-point.json
@@ -0,0 +1,229 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xF7",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "FP_ASSIST.ALL",
8 "SampleAfterValue": "20000",
9 "BriefDescription": "X87 Floating point assists (Precise Event)"
10 },
11 {
12 "PEBS": "1",
13 "EventCode": "0xF7",
14 "Counter": "0,1,2,3",
15 "UMask": "0x4",
16 "EventName": "FP_ASSIST.INPUT",
17 "SampleAfterValue": "20000",
18 "BriefDescription": "X87 Floating poiint assists for invalid input value (Precise Event)"
19 },
20 {
21 "PEBS": "1",
22 "EventCode": "0xF7",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "FP_ASSIST.OUTPUT",
26 "SampleAfterValue": "20000",
27 "BriefDescription": "X87 Floating point assists for invalid output value (Precise Event)"
28 },
29 {
30 "EventCode": "0x10",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "FP_COMP_OPS_EXE.MMX",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "MMX Uops"
36 },
37 {
38 "EventCode": "0x10",
39 "Counter": "0,1,2,3",
40 "UMask": "0x80",
41 "EventName": "FP_COMP_OPS_EXE.SSE_DOUBLE_PRECISION",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "SSE* FP double precision Uops"
44 },
45 {
46 "EventCode": "0x10",
47 "Counter": "0,1,2,3",
48 "UMask": "0x4",
49 "EventName": "FP_COMP_OPS_EXE.SSE_FP",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "SSE and SSE2 FP Uops"
52 },
53 {
54 "EventCode": "0x10",
55 "Counter": "0,1,2,3",
56 "UMask": "0x10",
57 "EventName": "FP_COMP_OPS_EXE.SSE_FP_PACKED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "SSE FP packed Uops"
60 },
61 {
62 "EventCode": "0x10",
63 "Counter": "0,1,2,3",
64 "UMask": "0x20",
65 "EventName": "FP_COMP_OPS_EXE.SSE_FP_SCALAR",
66 "SampleAfterValue": "2000000",
67 "BriefDescription": "SSE FP scalar Uops"
68 },
69 {
70 "EventCode": "0x10",
71 "Counter": "0,1,2,3",
72 "UMask": "0x40",
73 "EventName": "FP_COMP_OPS_EXE.SSE_SINGLE_PRECISION",
74 "SampleAfterValue": "2000000",
75 "BriefDescription": "SSE* FP single precision Uops"
76 },
77 {
78 "EventCode": "0x10",
79 "Counter": "0,1,2,3",
80 "UMask": "0x8",
81 "EventName": "FP_COMP_OPS_EXE.SSE2_INTEGER",
82 "SampleAfterValue": "2000000",
83 "BriefDescription": "SSE2 integer Uops"
84 },
85 {
86 "EventCode": "0x10",
87 "Counter": "0,1,2,3",
88 "UMask": "0x1",
89 "EventName": "FP_COMP_OPS_EXE.X87",
90 "SampleAfterValue": "2000000",
91 "BriefDescription": "Computational floating-point operations executed"
92 },
93 {
94 "EventCode": "0xCC",
95 "Counter": "0,1,2,3",
96 "UMask": "0x3",
97 "EventName": "FP_MMX_TRANS.ANY",
98 "SampleAfterValue": "2000000",
99 "BriefDescription": "All Floating Point to and from MMX transitions"
100 },
101 {
102 "EventCode": "0xCC",
103 "Counter": "0,1,2,3",
104 "UMask": "0x1",
105 "EventName": "FP_MMX_TRANS.TO_FP",
106 "SampleAfterValue": "2000000",
107 "BriefDescription": "Transitions from MMX to Floating Point instructions"
108 },
109 {
110 "EventCode": "0xCC",
111 "Counter": "0,1,2,3",
112 "UMask": "0x2",
113 "EventName": "FP_MMX_TRANS.TO_MMX",
114 "SampleAfterValue": "2000000",
115 "BriefDescription": "Transitions from Floating Point to MMX instructions"
116 },
117 {
118 "EventCode": "0x12",
119 "Counter": "0,1,2,3",
120 "UMask": "0x4",
121 "EventName": "SIMD_INT_128.PACK",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "128 bit SIMD integer pack operations"
124 },
125 {
126 "EventCode": "0x12",
127 "Counter": "0,1,2,3",
128 "UMask": "0x20",
129 "EventName": "SIMD_INT_128.PACKED_ARITH",
130 "SampleAfterValue": "200000",
131 "BriefDescription": "128 bit SIMD integer arithmetic operations"
132 },
133 {
134 "EventCode": "0x12",
135 "Counter": "0,1,2,3",
136 "UMask": "0x10",
137 "EventName": "SIMD_INT_128.PACKED_LOGICAL",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "128 bit SIMD integer logical operations"
140 },
141 {
142 "EventCode": "0x12",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1",
145 "EventName": "SIMD_INT_128.PACKED_MPY",
146 "SampleAfterValue": "200000",
147 "BriefDescription": "128 bit SIMD integer multiply operations"
148 },
149 {
150 "EventCode": "0x12",
151 "Counter": "0,1,2,3",
152 "UMask": "0x2",
153 "EventName": "SIMD_INT_128.PACKED_SHIFT",
154 "SampleAfterValue": "200000",
155 "BriefDescription": "128 bit SIMD integer shift operations"
156 },
157 {
158 "EventCode": "0x12",
159 "Counter": "0,1,2,3",
160 "UMask": "0x40",
161 "EventName": "SIMD_INT_128.SHUFFLE_MOVE",
162 "SampleAfterValue": "200000",
163 "BriefDescription": "128 bit SIMD integer shuffle/move operations"
164 },
165 {
166 "EventCode": "0x12",
167 "Counter": "0,1,2,3",
168 "UMask": "0x8",
169 "EventName": "SIMD_INT_128.UNPACK",
170 "SampleAfterValue": "200000",
171 "BriefDescription": "128 bit SIMD integer unpack operations"
172 },
173 {
174 "EventCode": "0xFD",
175 "Counter": "0,1,2,3",
176 "UMask": "0x4",
177 "EventName": "SIMD_INT_64.PACK",
178 "SampleAfterValue": "200000",
179 "BriefDescription": "SIMD integer 64 bit pack operations"
180 },
181 {
182 "EventCode": "0xFD",
183 "Counter": "0,1,2,3",
184 "UMask": "0x20",
185 "EventName": "SIMD_INT_64.PACKED_ARITH",
186 "SampleAfterValue": "200000",
187 "BriefDescription": "SIMD integer 64 bit arithmetic operations"
188 },
189 {
190 "EventCode": "0xFD",
191 "Counter": "0,1,2,3",
192 "UMask": "0x10",
193 "EventName": "SIMD_INT_64.PACKED_LOGICAL",
194 "SampleAfterValue": "200000",
195 "BriefDescription": "SIMD integer 64 bit logical operations"
196 },
197 {
198 "EventCode": "0xFD",
199 "Counter": "0,1,2,3",
200 "UMask": "0x1",
201 "EventName": "SIMD_INT_64.PACKED_MPY",
202 "SampleAfterValue": "200000",
203 "BriefDescription": "SIMD integer 64 bit packed multiply operations"
204 },
205 {
206 "EventCode": "0xFD",
207 "Counter": "0,1,2,3",
208 "UMask": "0x2",
209 "EventName": "SIMD_INT_64.PACKED_SHIFT",
210 "SampleAfterValue": "200000",
211 "BriefDescription": "SIMD integer 64 bit shift operations"
212 },
213 {
214 "EventCode": "0xFD",
215 "Counter": "0,1,2,3",
216 "UMask": "0x40",
217 "EventName": "SIMD_INT_64.SHUFFLE_MOVE",
218 "SampleAfterValue": "200000",
219 "BriefDescription": "SIMD integer 64 bit shuffle/move operations"
220 },
221 {
222 "EventCode": "0xFD",
223 "Counter": "0,1,2,3",
224 "UMask": "0x8",
225 "EventName": "SIMD_INT_64.UNPACK",
226 "SampleAfterValue": "200000",
227 "BriefDescription": "SIMD integer 64 bit unpack operations"
228 }
229] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-sp/frontend.json b/tools/perf/pmu-events/arch/x86/westmereep-sp/frontend.json
new file mode 100644
index 000000000000..e5e21e03444d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-sp/frontend.json
@@ -0,0 +1,26 @@
1[
2 {
3 "EventCode": "0xD0",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "MACRO_INSTS.DECODED",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Instructions decoded"
9 },
10 {
11 "EventCode": "0xA6",
12 "Counter": "0,1,2,3",
13 "UMask": "0x1",
14 "EventName": "MACRO_INSTS.FUSIONS_DECODED",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Macro-fused instructions decoded"
17 },
18 {
19 "EventCode": "0x19",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "TWO_UOP_INSTS_DECODED",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Two Uop instructions decoded"
25 }
26] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-sp/memory.json b/tools/perf/pmu-events/arch/x86/westmereep-sp/memory.json
new file mode 100644
index 000000000000..90eb6aac357b
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-sp/memory.json
@@ -0,0 +1,739 @@
1[
2 {
3 "EventCode": "0xB7, 0xBB",
4 "MSRValue": "0x6011",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_DRAM",
8 "MSRIndex": "0x1a6,0x1a7",
9 "SampleAfterValue": "100000",
10 "BriefDescription": "Offcore data reads satisfied by any DRAM",
11 "Offcore": "1"
12 },
13 {
14 "EventCode": "0xB7, 0xBB",
15 "MSRValue": "0xF811",
16 "Counter": "0,1,2,3",
17 "UMask": "0x1",
18 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LLC_MISS",
19 "MSRIndex": "0x1a6,0x1a7",
20 "SampleAfterValue": "100000",
21 "BriefDescription": "Offcore data reads that missed the LLC",
22 "Offcore": "1"
23 },
24 {
25 "EventCode": "0xB7, 0xBB",
26 "MSRValue": "0x2011",
27 "Counter": "0,1,2,3",
28 "UMask": "0x1",
29 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_DRAM",
30 "MSRIndex": "0x1a6,0x1a7",
31 "SampleAfterValue": "100000",
32 "BriefDescription": "Offcore data reads satisfied by the local DRAM",
33 "Offcore": "1"
34 },
35 {
36 "EventCode": "0xB7, 0xBB",
37 "MSRValue": "0x4011",
38 "Counter": "0,1,2,3",
39 "UMask": "0x1",
40 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_DRAM",
41 "MSRIndex": "0x1a6,0x1a7",
42 "SampleAfterValue": "100000",
43 "BriefDescription": "Offcore data reads satisfied by a remote DRAM",
44 "Offcore": "1"
45 },
46 {
47 "EventCode": "0xB7, 0xBB",
48 "MSRValue": "0x6044",
49 "Counter": "0,1,2,3",
50 "UMask": "0x1",
51 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_DRAM",
52 "MSRIndex": "0x1a6,0x1a7",
53 "SampleAfterValue": "100000",
54 "BriefDescription": "Offcore code reads satisfied by any DRAM",
55 "Offcore": "1"
56 },
57 {
58 "EventCode": "0xB7, 0xBB",
59 "MSRValue": "0xF844",
60 "Counter": "0,1,2,3",
61 "UMask": "0x1",
62 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LLC_MISS",
63 "MSRIndex": "0x1a6,0x1a7",
64 "SampleAfterValue": "100000",
65 "BriefDescription": "Offcore code reads that missed the LLC",
66 "Offcore": "1"
67 },
68 {
69 "EventCode": "0xB7, 0xBB",
70 "MSRValue": "0x2044",
71 "Counter": "0,1,2,3",
72 "UMask": "0x1",
73 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_DRAM",
74 "MSRIndex": "0x1a6,0x1a7",
75 "SampleAfterValue": "100000",
76 "BriefDescription": "Offcore code reads satisfied by the local DRAM",
77 "Offcore": "1"
78 },
79 {
80 "EventCode": "0xB7, 0xBB",
81 "MSRValue": "0x4044",
82 "Counter": "0,1,2,3",
83 "UMask": "0x1",
84 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_DRAM",
85 "MSRIndex": "0x1a6,0x1a7",
86 "SampleAfterValue": "100000",
87 "BriefDescription": "Offcore code reads satisfied by a remote DRAM",
88 "Offcore": "1"
89 },
90 {
91 "EventCode": "0xB7, 0xBB",
92 "MSRValue": "0x60FF",
93 "Counter": "0,1,2,3",
94 "UMask": "0x1",
95 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_DRAM",
96 "MSRIndex": "0x1a6,0x1a7",
97 "SampleAfterValue": "100000",
98 "BriefDescription": "Offcore requests satisfied by any DRAM",
99 "Offcore": "1"
100 },
101 {
102 "EventCode": "0xB7, 0xBB",
103 "MSRValue": "0xF8FF",
104 "Counter": "0,1,2,3",
105 "UMask": "0x1",
106 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LLC_MISS",
107 "MSRIndex": "0x1a6,0x1a7",
108 "SampleAfterValue": "100000",
109 "BriefDescription": "Offcore requests that missed the LLC",
110 "Offcore": "1"
111 },
112 {
113 "EventCode": "0xB7, 0xBB",
114 "MSRValue": "0x20FF",
115 "Counter": "0,1,2,3",
116 "UMask": "0x1",
117 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_DRAM",
118 "MSRIndex": "0x1a6,0x1a7",
119 "SampleAfterValue": "100000",
120 "BriefDescription": "Offcore requests satisfied by the local DRAM",
121 "Offcore": "1"
122 },
123 {
124 "EventCode": "0xB7, 0xBB",
125 "MSRValue": "0x40FF",
126 "Counter": "0,1,2,3",
127 "UMask": "0x1",
128 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_DRAM",
129 "MSRIndex": "0x1a6,0x1a7",
130 "SampleAfterValue": "100000",
131 "BriefDescription": "Offcore requests satisfied by a remote DRAM",
132 "Offcore": "1"
133 },
134 {
135 "EventCode": "0xB7, 0xBB",
136 "MSRValue": "0x6022",
137 "Counter": "0,1,2,3",
138 "UMask": "0x1",
139 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_DRAM",
140 "MSRIndex": "0x1a6,0x1a7",
141 "SampleAfterValue": "100000",
142 "BriefDescription": "Offcore RFO requests satisfied by any DRAM",
143 "Offcore": "1"
144 },
145 {
146 "EventCode": "0xB7, 0xBB",
147 "MSRValue": "0xF822",
148 "Counter": "0,1,2,3",
149 "UMask": "0x1",
150 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LLC_MISS",
151 "MSRIndex": "0x1a6,0x1a7",
152 "SampleAfterValue": "100000",
153 "BriefDescription": "Offcore RFO requests that missed the LLC",
154 "Offcore": "1"
155 },
156 {
157 "EventCode": "0xB7, 0xBB",
158 "MSRValue": "0x2022",
159 "Counter": "0,1,2,3",
160 "UMask": "0x1",
161 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_DRAM",
162 "MSRIndex": "0x1a6,0x1a7",
163 "SampleAfterValue": "100000",
164 "BriefDescription": "Offcore RFO requests satisfied by the local DRAM",
165 "Offcore": "1"
166 },
167 {
168 "EventCode": "0xB7, 0xBB",
169 "MSRValue": "0x4022",
170 "Counter": "0,1,2,3",
171 "UMask": "0x1",
172 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_DRAM",
173 "MSRIndex": "0x1a6,0x1a7",
174 "SampleAfterValue": "100000",
175 "BriefDescription": "Offcore RFO requests satisfied by a remote DRAM",
176 "Offcore": "1"
177 },
178 {
179 "EventCode": "0xB7, 0xBB",
180 "MSRValue": "0x6008",
181 "Counter": "0,1,2,3",
182 "UMask": "0x1",
183 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_DRAM",
184 "MSRIndex": "0x1a6,0x1a7",
185 "SampleAfterValue": "100000",
186 "BriefDescription": "Offcore writebacks to any DRAM",
187 "Offcore": "1"
188 },
189 {
190 "EventCode": "0xB7, 0xBB",
191 "MSRValue": "0xF808",
192 "Counter": "0,1,2,3",
193 "UMask": "0x1",
194 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LLC_MISS",
195 "MSRIndex": "0x1a6,0x1a7",
196 "SampleAfterValue": "100000",
197 "BriefDescription": "Offcore writebacks that missed the LLC",
198 "Offcore": "1"
199 },
200 {
201 "EventCode": "0xB7, 0xBB",
202 "MSRValue": "0x2008",
203 "Counter": "0,1,2,3",
204 "UMask": "0x1",
205 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_DRAM",
206 "MSRIndex": "0x1a6,0x1a7",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "Offcore writebacks to the local DRAM",
209 "Offcore": "1"
210 },
211 {
212 "EventCode": "0xB7, 0xBB",
213 "MSRValue": "0x4008",
214 "Counter": "0,1,2,3",
215 "UMask": "0x1",
216 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_DRAM",
217 "MSRIndex": "0x1a6,0x1a7",
218 "SampleAfterValue": "100000",
219 "BriefDescription": "Offcore writebacks to a remote DRAM",
220 "Offcore": "1"
221 },
222 {
223 "EventCode": "0xB7, 0xBB",
224 "MSRValue": "0x6077",
225 "Counter": "0,1,2,3",
226 "UMask": "0x1",
227 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_DRAM",
228 "MSRIndex": "0x1a6,0x1a7",
229 "SampleAfterValue": "100000",
230 "BriefDescription": "Offcore code or data read requests satisfied by any DRAM",
231 "Offcore": "1"
232 },
233 {
234 "EventCode": "0xB7, 0xBB",
235 "MSRValue": "0xF877",
236 "Counter": "0,1,2,3",
237 "UMask": "0x1",
238 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LLC_MISS",
239 "MSRIndex": "0x1a6,0x1a7",
240 "SampleAfterValue": "100000",
241 "BriefDescription": "Offcore code or data read requests that missed the LLC",
242 "Offcore": "1"
243 },
244 {
245 "EventCode": "0xB7, 0xBB",
246 "MSRValue": "0x2077",
247 "Counter": "0,1,2,3",
248 "UMask": "0x1",
249 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_DRAM",
250 "MSRIndex": "0x1a6,0x1a7",
251 "SampleAfterValue": "100000",
252 "BriefDescription": "Offcore code or data read requests satisfied by the local DRAM",
253 "Offcore": "1"
254 },
255 {
256 "EventCode": "0xB7, 0xBB",
257 "MSRValue": "0x4077",
258 "Counter": "0,1,2,3",
259 "UMask": "0x1",
260 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_DRAM",
261 "MSRIndex": "0x1a6,0x1a7",
262 "SampleAfterValue": "100000",
263 "BriefDescription": "Offcore code or data read requests satisfied by a remote DRAM",
264 "Offcore": "1"
265 },
266 {
267 "EventCode": "0xB7, 0xBB",
268 "MSRValue": "0x6033",
269 "Counter": "0,1,2,3",
270 "UMask": "0x1",
271 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_DRAM",
272 "MSRIndex": "0x1a6,0x1a7",
273 "SampleAfterValue": "100000",
274 "BriefDescription": "Offcore request = all data, response = any DRAM",
275 "Offcore": "1"
276 },
277 {
278 "EventCode": "0xB7, 0xBB",
279 "MSRValue": "0xF833",
280 "Counter": "0,1,2,3",
281 "UMask": "0x1",
282 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LLC_MISS",
283 "MSRIndex": "0x1a6,0x1a7",
284 "SampleAfterValue": "100000",
285 "BriefDescription": "Offcore request = all data, response = any LLC miss",
286 "Offcore": "1"
287 },
288 {
289 "EventCode": "0xB7, 0xBB",
290 "MSRValue": "0x2033",
291 "Counter": "0,1,2,3",
292 "UMask": "0x1",
293 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_DRAM",
294 "MSRIndex": "0x1a6,0x1a7",
295 "SampleAfterValue": "100000",
296 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the local DRAM.",
297 "Offcore": "1"
298 },
299 {
300 "EventCode": "0xB7, 0xBB",
301 "MSRValue": "0x4033",
302 "Counter": "0,1,2,3",
303 "UMask": "0x1",
304 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_DRAM",
305 "MSRIndex": "0x1a6,0x1a7",
306 "SampleAfterValue": "100000",
307 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the remote DRAM",
308 "Offcore": "1"
309 },
310 {
311 "EventCode": "0xB7, 0xBB",
312 "MSRValue": "0x6003",
313 "Counter": "0,1,2,3",
314 "UMask": "0x1",
315 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_DRAM",
316 "MSRIndex": "0x1a6,0x1a7",
317 "SampleAfterValue": "100000",
318 "BriefDescription": "Offcore demand data requests satisfied by any DRAM",
319 "Offcore": "1"
320 },
321 {
322 "EventCode": "0xB7, 0xBB",
323 "MSRValue": "0xF803",
324 "Counter": "0,1,2,3",
325 "UMask": "0x1",
326 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LLC_MISS",
327 "MSRIndex": "0x1a6,0x1a7",
328 "SampleAfterValue": "100000",
329 "BriefDescription": "Offcore demand data requests that missed the LLC",
330 "Offcore": "1"
331 },
332 {
333 "EventCode": "0xB7, 0xBB",
334 "MSRValue": "0x2003",
335 "Counter": "0,1,2,3",
336 "UMask": "0x1",
337 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_DRAM",
338 "MSRIndex": "0x1a6,0x1a7",
339 "SampleAfterValue": "100000",
340 "BriefDescription": "Offcore demand data requests satisfied by the local DRAM",
341 "Offcore": "1"
342 },
343 {
344 "EventCode": "0xB7, 0xBB",
345 "MSRValue": "0x4003",
346 "Counter": "0,1,2,3",
347 "UMask": "0x1",
348 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_DRAM",
349 "MSRIndex": "0x1a6,0x1a7",
350 "SampleAfterValue": "100000",
351 "BriefDescription": "Offcore demand data requests satisfied by a remote DRAM",
352 "Offcore": "1"
353 },
354 {
355 "EventCode": "0xB7, 0xBB",
356 "MSRValue": "0x6001",
357 "Counter": "0,1,2,3",
358 "UMask": "0x1",
359 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_DRAM",
360 "MSRIndex": "0x1a6,0x1a7",
361 "SampleAfterValue": "100000",
362 "BriefDescription": "Offcore demand data reads satisfied by any DRAM",
363 "Offcore": "1"
364 },
365 {
366 "EventCode": "0xB7, 0xBB",
367 "MSRValue": "0xF801",
368 "Counter": "0,1,2,3",
369 "UMask": "0x1",
370 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LLC_MISS",
371 "MSRIndex": "0x1a6,0x1a7",
372 "SampleAfterValue": "100000",
373 "BriefDescription": "Offcore demand data reads that missed the LLC",
374 "Offcore": "1"
375 },
376 {
377 "EventCode": "0xB7, 0xBB",
378 "MSRValue": "0x2001",
379 "Counter": "0,1,2,3",
380 "UMask": "0x1",
381 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_DRAM",
382 "MSRIndex": "0x1a6,0x1a7",
383 "SampleAfterValue": "100000",
384 "BriefDescription": "Offcore demand data reads satisfied by the local DRAM",
385 "Offcore": "1"
386 },
387 {
388 "EventCode": "0xB7, 0xBB",
389 "MSRValue": "0x4001",
390 "Counter": "0,1,2,3",
391 "UMask": "0x1",
392 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_DRAM",
393 "MSRIndex": "0x1a6,0x1a7",
394 "SampleAfterValue": "100000",
395 "BriefDescription": "Offcore demand data reads satisfied by a remote DRAM",
396 "Offcore": "1"
397 },
398 {
399 "EventCode": "0xB7, 0xBB",
400 "MSRValue": "0x6004",
401 "Counter": "0,1,2,3",
402 "UMask": "0x1",
403 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_DRAM",
404 "MSRIndex": "0x1a6,0x1a7",
405 "SampleAfterValue": "100000",
406 "BriefDescription": "Offcore demand code reads satisfied by any DRAM",
407 "Offcore": "1"
408 },
409 {
410 "EventCode": "0xB7, 0xBB",
411 "MSRValue": "0xF804",
412 "Counter": "0,1,2,3",
413 "UMask": "0x1",
414 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LLC_MISS",
415 "MSRIndex": "0x1a6,0x1a7",
416 "SampleAfterValue": "100000",
417 "BriefDescription": "Offcore demand code reads that missed the LLC",
418 "Offcore": "1"
419 },
420 {
421 "EventCode": "0xB7, 0xBB",
422 "MSRValue": "0x2004",
423 "Counter": "0,1,2,3",
424 "UMask": "0x1",
425 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_DRAM",
426 "MSRIndex": "0x1a6,0x1a7",
427 "SampleAfterValue": "100000",
428 "BriefDescription": "Offcore demand code reads satisfied by the local DRAM",
429 "Offcore": "1"
430 },
431 {
432 "EventCode": "0xB7, 0xBB",
433 "MSRValue": "0x4004",
434 "Counter": "0,1,2,3",
435 "UMask": "0x1",
436 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_DRAM",
437 "MSRIndex": "0x1a6,0x1a7",
438 "SampleAfterValue": "100000",
439 "BriefDescription": "Offcore demand code reads satisfied by a remote DRAM",
440 "Offcore": "1"
441 },
442 {
443 "EventCode": "0xB7, 0xBB",
444 "MSRValue": "0x6002",
445 "Counter": "0,1,2,3",
446 "UMask": "0x1",
447 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_DRAM",
448 "MSRIndex": "0x1a6,0x1a7",
449 "SampleAfterValue": "100000",
450 "BriefDescription": "Offcore demand RFO requests satisfied by any DRAM",
451 "Offcore": "1"
452 },
453 {
454 "EventCode": "0xB7, 0xBB",
455 "MSRValue": "0xF802",
456 "Counter": "0,1,2,3",
457 "UMask": "0x1",
458 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LLC_MISS",
459 "MSRIndex": "0x1a6,0x1a7",
460 "SampleAfterValue": "100000",
461 "BriefDescription": "Offcore demand RFO requests that missed the LLC",
462 "Offcore": "1"
463 },
464 {
465 "EventCode": "0xB7, 0xBB",
466 "MSRValue": "0x2002",
467 "Counter": "0,1,2,3",
468 "UMask": "0x1",
469 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_DRAM",
470 "MSRIndex": "0x1a6,0x1a7",
471 "SampleAfterValue": "100000",
472 "BriefDescription": "Offcore demand RFO requests satisfied by the local DRAM",
473 "Offcore": "1"
474 },
475 {
476 "EventCode": "0xB7, 0xBB",
477 "MSRValue": "0x4002",
478 "Counter": "0,1,2,3",
479 "UMask": "0x1",
480 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_DRAM",
481 "MSRIndex": "0x1a6,0x1a7",
482 "SampleAfterValue": "100000",
483 "BriefDescription": "Offcore demand RFO requests satisfied by a remote DRAM",
484 "Offcore": "1"
485 },
486 {
487 "EventCode": "0xB7, 0xBB",
488 "MSRValue": "0x6080",
489 "Counter": "0,1,2,3",
490 "UMask": "0x1",
491 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_DRAM",
492 "MSRIndex": "0x1a6,0x1a7",
493 "SampleAfterValue": "100000",
494 "BriefDescription": "Offcore other requests satisfied by any DRAM",
495 "Offcore": "1"
496 },
497 {
498 "EventCode": "0xB7, 0xBB",
499 "MSRValue": "0xF880",
500 "Counter": "0,1,2,3",
501 "UMask": "0x1",
502 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LLC_MISS",
503 "MSRIndex": "0x1a6,0x1a7",
504 "SampleAfterValue": "100000",
505 "BriefDescription": "Offcore other requests that missed the LLC",
506 "Offcore": "1"
507 },
508 {
509 "EventCode": "0xB7, 0xBB",
510 "MSRValue": "0x4080",
511 "Counter": "0,1,2,3",
512 "UMask": "0x1",
513 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_DRAM",
514 "MSRIndex": "0x1a6,0x1a7",
515 "SampleAfterValue": "100000",
516 "BriefDescription": "Offcore other requests satisfied by a remote DRAM",
517 "Offcore": "1"
518 },
519 {
520 "EventCode": "0xB7, 0xBB",
521 "MSRValue": "0x6050",
522 "Counter": "0,1,2,3",
523 "UMask": "0x1",
524 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_DRAM",
525 "MSRIndex": "0x1a6,0x1a7",
526 "SampleAfterValue": "100000",
527 "BriefDescription": "Offcore prefetch data requests satisfied by any DRAM",
528 "Offcore": "1"
529 },
530 {
531 "EventCode": "0xB7, 0xBB",
532 "MSRValue": "0xF850",
533 "Counter": "0,1,2,3",
534 "UMask": "0x1",
535 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LLC_MISS",
536 "MSRIndex": "0x1a6,0x1a7",
537 "SampleAfterValue": "100000",
538 "BriefDescription": "Offcore prefetch data requests that missed the LLC",
539 "Offcore": "1"
540 },
541 {
542 "EventCode": "0xB7, 0xBB",
543 "MSRValue": "0x2050",
544 "Counter": "0,1,2,3",
545 "UMask": "0x1",
546 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_DRAM",
547 "MSRIndex": "0x1a6,0x1a7",
548 "SampleAfterValue": "100000",
549 "BriefDescription": "Offcore prefetch data requests satisfied by the local DRAM",
550 "Offcore": "1"
551 },
552 {
553 "EventCode": "0xB7, 0xBB",
554 "MSRValue": "0x4050",
555 "Counter": "0,1,2,3",
556 "UMask": "0x1",
557 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_DRAM",
558 "MSRIndex": "0x1a6,0x1a7",
559 "SampleAfterValue": "100000",
560 "BriefDescription": "Offcore prefetch data requests satisfied by a remote DRAM",
561 "Offcore": "1"
562 },
563 {
564 "EventCode": "0xB7, 0xBB",
565 "MSRValue": "0x6010",
566 "Counter": "0,1,2,3",
567 "UMask": "0x1",
568 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_DRAM",
569 "MSRIndex": "0x1a6,0x1a7",
570 "SampleAfterValue": "100000",
571 "BriefDescription": "Offcore prefetch data reads satisfied by any DRAM",
572 "Offcore": "1"
573 },
574 {
575 "EventCode": "0xB7, 0xBB",
576 "MSRValue": "0xF810",
577 "Counter": "0,1,2,3",
578 "UMask": "0x1",
579 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LLC_MISS",
580 "MSRIndex": "0x1a6,0x1a7",
581 "SampleAfterValue": "100000",
582 "BriefDescription": "Offcore prefetch data reads that missed the LLC",
583 "Offcore": "1"
584 },
585 {
586 "EventCode": "0xB7, 0xBB",
587 "MSRValue": "0x2010",
588 "Counter": "0,1,2,3",
589 "UMask": "0x1",
590 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_DRAM",
591 "MSRIndex": "0x1a6,0x1a7",
592 "SampleAfterValue": "100000",
593 "BriefDescription": "Offcore prefetch data reads satisfied by the local DRAM",
594 "Offcore": "1"
595 },
596 {
597 "EventCode": "0xB7, 0xBB",
598 "MSRValue": "0x4010",
599 "Counter": "0,1,2,3",
600 "UMask": "0x1",
601 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_DRAM",
602 "MSRIndex": "0x1a6,0x1a7",
603 "SampleAfterValue": "100000",
604 "BriefDescription": "Offcore prefetch data reads satisfied by a remote DRAM",
605 "Offcore": "1"
606 },
607 {
608 "EventCode": "0xB7, 0xBB",
609 "MSRValue": "0x6040",
610 "Counter": "0,1,2,3",
611 "UMask": "0x1",
612 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_DRAM",
613 "MSRIndex": "0x1a6,0x1a7",
614 "SampleAfterValue": "100000",
615 "BriefDescription": "Offcore prefetch code reads satisfied by any DRAM",
616 "Offcore": "1"
617 },
618 {
619 "EventCode": "0xB7, 0xBB",
620 "MSRValue": "0xF840",
621 "Counter": "0,1,2,3",
622 "UMask": "0x1",
623 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LLC_MISS",
624 "MSRIndex": "0x1a6,0x1a7",
625 "SampleAfterValue": "100000",
626 "BriefDescription": "Offcore prefetch code reads that missed the LLC",
627 "Offcore": "1"
628 },
629 {
630 "EventCode": "0xB7, 0xBB",
631 "MSRValue": "0x2040",
632 "Counter": "0,1,2,3",
633 "UMask": "0x1",
634 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_DRAM",
635 "MSRIndex": "0x1a6,0x1a7",
636 "SampleAfterValue": "100000",
637 "BriefDescription": "Offcore prefetch code reads satisfied by the local DRAM",
638 "Offcore": "1"
639 },
640 {
641 "EventCode": "0xB7, 0xBB",
642 "MSRValue": "0x4040",
643 "Counter": "0,1,2,3",
644 "UMask": "0x1",
645 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_DRAM",
646 "MSRIndex": "0x1a6,0x1a7",
647 "SampleAfterValue": "100000",
648 "BriefDescription": "Offcore prefetch code reads satisfied by a remote DRAM",
649 "Offcore": "1"
650 },
651 {
652 "EventCode": "0xB7, 0xBB",
653 "MSRValue": "0x6020",
654 "Counter": "0,1,2,3",
655 "UMask": "0x1",
656 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_DRAM",
657 "MSRIndex": "0x1a6,0x1a7",
658 "SampleAfterValue": "100000",
659 "BriefDescription": "Offcore prefetch RFO requests satisfied by any DRAM",
660 "Offcore": "1"
661 },
662 {
663 "EventCode": "0xB7, 0xBB",
664 "MSRValue": "0xF820",
665 "Counter": "0,1,2,3",
666 "UMask": "0x1",
667 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LLC_MISS",
668 "MSRIndex": "0x1a6,0x1a7",
669 "SampleAfterValue": "100000",
670 "BriefDescription": "Offcore prefetch RFO requests that missed the LLC",
671 "Offcore": "1"
672 },
673 {
674 "EventCode": "0xB7, 0xBB",
675 "MSRValue": "0x2020",
676 "Counter": "0,1,2,3",
677 "UMask": "0x1",
678 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_DRAM",
679 "MSRIndex": "0x1a6,0x1a7",
680 "SampleAfterValue": "100000",
681 "BriefDescription": "Offcore prefetch RFO requests satisfied by the local DRAM",
682 "Offcore": "1"
683 },
684 {
685 "EventCode": "0xB7, 0xBB",
686 "MSRValue": "0x4020",
687 "Counter": "0,1,2,3",
688 "UMask": "0x1",
689 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_DRAM",
690 "MSRIndex": "0x1a6,0x1a7",
691 "SampleAfterValue": "100000",
692 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote DRAM",
693 "Offcore": "1"
694 },
695 {
696 "EventCode": "0xB7, 0xBB",
697 "MSRValue": "0x6070",
698 "Counter": "0,1,2,3",
699 "UMask": "0x1",
700 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_DRAM",
701 "MSRIndex": "0x1a6,0x1a7",
702 "SampleAfterValue": "100000",
703 "BriefDescription": "Offcore prefetch requests satisfied by any DRAM",
704 "Offcore": "1"
705 },
706 {
707 "EventCode": "0xB7, 0xBB",
708 "MSRValue": "0xF870",
709 "Counter": "0,1,2,3",
710 "UMask": "0x1",
711 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LLC_MISS",
712 "MSRIndex": "0x1a6,0x1a7",
713 "SampleAfterValue": "100000",
714 "BriefDescription": "Offcore prefetch requests that missed the LLC",
715 "Offcore": "1"
716 },
717 {
718 "EventCode": "0xB7, 0xBB",
719 "MSRValue": "0x2070",
720 "Counter": "0,1,2,3",
721 "UMask": "0x1",
722 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_DRAM",
723 "MSRIndex": "0x1a6,0x1a7",
724 "SampleAfterValue": "100000",
725 "BriefDescription": "Offcore prefetch requests satisfied by the local DRAM",
726 "Offcore": "1"
727 },
728 {
729 "EventCode": "0xB7, 0xBB",
730 "MSRValue": "0x4070",
731 "Counter": "0,1,2,3",
732 "UMask": "0x1",
733 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_DRAM",
734 "MSRIndex": "0x1a6,0x1a7",
735 "SampleAfterValue": "100000",
736 "BriefDescription": "Offcore prefetch requests satisfied by a remote DRAM",
737 "Offcore": "1"
738 }
739] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-sp/other.json b/tools/perf/pmu-events/arch/x86/westmereep-sp/other.json
new file mode 100644
index 000000000000..85133d6a5ce0
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-sp/other.json
@@ -0,0 +1,287 @@
1[
2 {
3 "EventCode": "0xE8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "BPU_CLEARS.EARLY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Early Branch Prediciton Unit clears"
9 },
10 {
11 "EventCode": "0xE8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x2",
14 "EventName": "BPU_CLEARS.LATE",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Late Branch Prediction Unit clears"
17 },
18 {
19 "EventCode": "0xE5",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "BPU_MISSED_CALL_RET",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Branch prediction unit missed call or return"
25 },
26 {
27 "EventCode": "0xD5",
28 "Counter": "0,1,2,3",
29 "UMask": "0x1",
30 "EventName": "ES_REG_RENAMES",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "ES segment renames"
33 },
34 {
35 "EventCode": "0x6C",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "IO_TRANSACTIONS",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "I/O transactions"
41 },
42 {
43 "EventCode": "0x80",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "L1I.CYCLES_STALLED",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1I instruction fetch stall cycles"
49 },
50 {
51 "EventCode": "0x80",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "L1I.HITS",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1I instruction fetch hits"
57 },
58 {
59 "EventCode": "0x80",
60 "Counter": "0,1,2,3",
61 "UMask": "0x2",
62 "EventName": "L1I.MISSES",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "L1I instruction fetch misses"
65 },
66 {
67 "EventCode": "0x80",
68 "Counter": "0,1,2,3",
69 "UMask": "0x3",
70 "EventName": "L1I.READS",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "L1I Instruction fetches"
73 },
74 {
75 "EventCode": "0x82",
76 "Counter": "0,1,2,3",
77 "UMask": "0x1",
78 "EventName": "LARGE_ITLB.HIT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Large ITLB hit"
81 },
82 {
83 "EventCode": "0x3",
84 "Counter": "0,1,2,3",
85 "UMask": "0x2",
86 "EventName": "LOAD_BLOCK.OVERLAP_STORE",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "Loads that partially overlap an earlier store"
89 },
90 {
91 "EventCode": "0x13",
92 "Counter": "0,1,2,3",
93 "UMask": "0x7",
94 "EventName": "LOAD_DISPATCH.ANY",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "All loads dispatched"
97 },
98 {
99 "EventCode": "0x13",
100 "Counter": "0,1,2,3",
101 "UMask": "0x4",
102 "EventName": "LOAD_DISPATCH.MOB",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Loads dispatched from the MOB"
105 },
106 {
107 "EventCode": "0x13",
108 "Counter": "0,1,2,3",
109 "UMask": "0x1",
110 "EventName": "LOAD_DISPATCH.RS",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "Loads dispatched that bypass the MOB"
113 },
114 {
115 "EventCode": "0x13",
116 "Counter": "0,1,2,3",
117 "UMask": "0x2",
118 "EventName": "LOAD_DISPATCH.RS_DELAYED",
119 "SampleAfterValue": "2000000",
120 "BriefDescription": "Loads dispatched from stage 305"
121 },
122 {
123 "EventCode": "0x7",
124 "Counter": "0,1,2,3",
125 "UMask": "0x1",
126 "EventName": "PARTIAL_ADDRESS_ALIAS",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "False dependencies due to partial address aliasing"
129 },
130 {
131 "EventCode": "0xD2",
132 "Counter": "0,1,2,3",
133 "UMask": "0xf",
134 "EventName": "RAT_STALLS.ANY",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "All RAT stall cycles"
137 },
138 {
139 "EventCode": "0xD2",
140 "Counter": "0,1,2,3",
141 "UMask": "0x1",
142 "EventName": "RAT_STALLS.FLAGS",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "Flag stall cycles"
145 },
146 {
147 "EventCode": "0xD2",
148 "Counter": "0,1,2,3",
149 "UMask": "0x2",
150 "EventName": "RAT_STALLS.REGISTERS",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "Partial register stall cycles"
153 },
154 {
155 "EventCode": "0xD2",
156 "Counter": "0,1,2,3",
157 "UMask": "0x4",
158 "EventName": "RAT_STALLS.ROB_READ_PORT",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "ROB read port stalls cycles"
161 },
162 {
163 "EventCode": "0xD2",
164 "Counter": "0,1,2,3",
165 "UMask": "0x8",
166 "EventName": "RAT_STALLS.SCOREBOARD",
167 "SampleAfterValue": "2000000",
168 "BriefDescription": "Scoreboard stall cycles"
169 },
170 {
171 "EventCode": "0x4",
172 "Counter": "0,1,2,3",
173 "UMask": "0x7",
174 "EventName": "SB_DRAIN.ANY",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "All Store buffer stall cycles"
177 },
178 {
179 "EventCode": "0xD4",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "SEG_RENAME_STALLS",
183 "SampleAfterValue": "2000000",
184 "BriefDescription": "Segment rename stall cycles"
185 },
186 {
187 "EventCode": "0xB8",
188 "Counter": "0,1,2,3",
189 "UMask": "0x1",
190 "EventName": "SNOOP_RESPONSE.HIT",
191 "SampleAfterValue": "100000",
192 "BriefDescription": "Thread responded HIT to snoop"
193 },
194 {
195 "EventCode": "0xB8",
196 "Counter": "0,1,2,3",
197 "UMask": "0x2",
198 "EventName": "SNOOP_RESPONSE.HITE",
199 "SampleAfterValue": "100000",
200 "BriefDescription": "Thread responded HITE to snoop"
201 },
202 {
203 "EventCode": "0xB8",
204 "Counter": "0,1,2,3",
205 "UMask": "0x4",
206 "EventName": "SNOOP_RESPONSE.HITM",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "Thread responded HITM to snoop"
209 },
210 {
211 "EventCode": "0xB4",
212 "Counter": "0,1,2,3",
213 "UMask": "0x4",
214 "EventName": "SNOOPQ_REQUESTS.CODE",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "Snoop code requests"
217 },
218 {
219 "EventCode": "0xB4",
220 "Counter": "0,1,2,3",
221 "UMask": "0x1",
222 "EventName": "SNOOPQ_REQUESTS.DATA",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "Snoop data requests"
225 },
226 {
227 "EventCode": "0xB4",
228 "Counter": "0,1,2,3",
229 "UMask": "0x2",
230 "EventName": "SNOOPQ_REQUESTS.INVALIDATE",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "Snoop invalidate requests"
233 },
234 {
235 "EventCode": "0xB3",
236 "UMask": "0x4",
237 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.CODE",
238 "SampleAfterValue": "2000000",
239 "BriefDescription": "Outstanding snoop code requests"
240 },
241 {
242 "EventCode": "0xB3",
243 "UMask": "0x4",
244 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.CODE_NOT_EMPTY",
245 "SampleAfterValue": "2000000",
246 "BriefDescription": "Cycles snoop code requests queued",
247 "CounterMask": "1"
248 },
249 {
250 "EventCode": "0xB3",
251 "UMask": "0x1",
252 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.DATA",
253 "SampleAfterValue": "2000000",
254 "BriefDescription": "Outstanding snoop data requests"
255 },
256 {
257 "EventCode": "0xB3",
258 "UMask": "0x1",
259 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.DATA_NOT_EMPTY",
260 "SampleAfterValue": "2000000",
261 "BriefDescription": "Cycles snoop data requests queued",
262 "CounterMask": "1"
263 },
264 {
265 "EventCode": "0xB3",
266 "UMask": "0x2",
267 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.INVALIDATE",
268 "SampleAfterValue": "2000000",
269 "BriefDescription": "Outstanding snoop invalidate requests"
270 },
271 {
272 "EventCode": "0xB3",
273 "UMask": "0x2",
274 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.INVALIDATE_NOT_EMPTY",
275 "SampleAfterValue": "2000000",
276 "BriefDescription": "Cycles snoop invalidate requests queued",
277 "CounterMask": "1"
278 },
279 {
280 "EventCode": "0xF6",
281 "Counter": "0,1,2,3",
282 "UMask": "0x1",
283 "EventName": "SQ_FULL_STALL_CYCLES",
284 "SampleAfterValue": "2000000",
285 "BriefDescription": "Super Queue full stall cycles"
286 }
287] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-sp/pipeline.json b/tools/perf/pmu-events/arch/x86/westmereep-sp/pipeline.json
new file mode 100644
index 000000000000..f130510f7616
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-sp/pipeline.json
@@ -0,0 +1,899 @@
1[
2 {
3 "EventCode": "0x14",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ARITH.CYCLES_DIV_BUSY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles the divider is busy"
9 },
10 {
11 "EventCode": "0x14",
12 "Invert": "1",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "ARITH.DIV",
16 "SampleAfterValue": "2000000",
17 "BriefDescription": "Divide Operations executed",
18 "CounterMask": "1",
19 "EdgeDetect": "1"
20 },
21 {
22 "EventCode": "0x14",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "ARITH.MUL",
26 "SampleAfterValue": "2000000",
27 "BriefDescription": "Multiply operations executed"
28 },
29 {
30 "EventCode": "0xE6",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "BACLEAR.BAD_TARGET",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "BACLEAR asserted with bad target address"
36 },
37 {
38 "EventCode": "0xE6",
39 "Counter": "0,1,2,3",
40 "UMask": "0x1",
41 "EventName": "BACLEAR.CLEAR",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "BACLEAR asserted, regardless of cause "
44 },
45 {
46 "EventCode": "0xA7",
47 "Counter": "0,1,2,3",
48 "UMask": "0x1",
49 "EventName": "BACLEAR_FORCE_IQ",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "Instruction queue forced BACLEAR"
52 },
53 {
54 "EventCode": "0xE0",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "BR_INST_DECODED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "Branch instructions decoded"
60 },
61 {
62 "EventCode": "0x88",
63 "Counter": "0,1,2,3",
64 "UMask": "0x7f",
65 "EventName": "BR_INST_EXEC.ANY",
66 "SampleAfterValue": "200000",
67 "BriefDescription": "Branch instructions executed"
68 },
69 {
70 "EventCode": "0x88",
71 "Counter": "0,1,2,3",
72 "UMask": "0x1",
73 "EventName": "BR_INST_EXEC.COND",
74 "SampleAfterValue": "200000",
75 "BriefDescription": "Conditional branch instructions executed"
76 },
77 {
78 "EventCode": "0x88",
79 "Counter": "0,1,2,3",
80 "UMask": "0x2",
81 "EventName": "BR_INST_EXEC.DIRECT",
82 "SampleAfterValue": "200000",
83 "BriefDescription": "Unconditional branches executed"
84 },
85 {
86 "EventCode": "0x88",
87 "Counter": "0,1,2,3",
88 "UMask": "0x10",
89 "EventName": "BR_INST_EXEC.DIRECT_NEAR_CALL",
90 "SampleAfterValue": "20000",
91 "BriefDescription": "Unconditional call branches executed"
92 },
93 {
94 "EventCode": "0x88",
95 "Counter": "0,1,2,3",
96 "UMask": "0x20",
97 "EventName": "BR_INST_EXEC.INDIRECT_NEAR_CALL",
98 "SampleAfterValue": "20000",
99 "BriefDescription": "Indirect call branches executed"
100 },
101 {
102 "EventCode": "0x88",
103 "Counter": "0,1,2,3",
104 "UMask": "0x4",
105 "EventName": "BR_INST_EXEC.INDIRECT_NON_CALL",
106 "SampleAfterValue": "20000",
107 "BriefDescription": "Indirect non call branches executed"
108 },
109 {
110 "EventCode": "0x88",
111 "Counter": "0,1,2,3",
112 "UMask": "0x30",
113 "EventName": "BR_INST_EXEC.NEAR_CALLS",
114 "SampleAfterValue": "20000",
115 "BriefDescription": "Call branches executed"
116 },
117 {
118 "EventCode": "0x88",
119 "Counter": "0,1,2,3",
120 "UMask": "0x7",
121 "EventName": "BR_INST_EXEC.NON_CALLS",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "All non call branches executed"
124 },
125 {
126 "EventCode": "0x88",
127 "Counter": "0,1,2,3",
128 "UMask": "0x8",
129 "EventName": "BR_INST_EXEC.RETURN_NEAR",
130 "SampleAfterValue": "20000",
131 "BriefDescription": "Indirect return branches executed"
132 },
133 {
134 "EventCode": "0x88",
135 "Counter": "0,1,2,3",
136 "UMask": "0x40",
137 "EventName": "BR_INST_EXEC.TAKEN",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "Taken branches executed"
140 },
141 {
142 "PEBS": "1",
143 "EventCode": "0xC4",
144 "Counter": "0,1,2,3",
145 "UMask": "0x4",
146 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
147 "SampleAfterValue": "200000",
148 "BriefDescription": "Retired branch instructions (Precise Event)"
149 },
150 {
151 "PEBS": "1",
152 "EventCode": "0xC4",
153 "Counter": "0,1,2,3",
154 "UMask": "0x1",
155 "EventName": "BR_INST_RETIRED.CONDITIONAL",
156 "SampleAfterValue": "200000",
157 "BriefDescription": "Retired conditional branch instructions (Precise Event)"
158 },
159 {
160 "PEBS": "1",
161 "EventCode": "0xC4",
162 "Counter": "0,1,2,3",
163 "UMask": "0x2",
164 "EventName": "BR_INST_RETIRED.NEAR_CALL",
165 "SampleAfterValue": "20000",
166 "BriefDescription": "Retired near call instructions (Precise Event)"
167 },
168 {
169 "EventCode": "0x89",
170 "Counter": "0,1,2,3",
171 "UMask": "0x7f",
172 "EventName": "BR_MISP_EXEC.ANY",
173 "SampleAfterValue": "20000",
174 "BriefDescription": "Mispredicted branches executed"
175 },
176 {
177 "EventCode": "0x89",
178 "Counter": "0,1,2,3",
179 "UMask": "0x1",
180 "EventName": "BR_MISP_EXEC.COND",
181 "SampleAfterValue": "20000",
182 "BriefDescription": "Mispredicted conditional branches executed"
183 },
184 {
185 "EventCode": "0x89",
186 "Counter": "0,1,2,3",
187 "UMask": "0x2",
188 "EventName": "BR_MISP_EXEC.DIRECT",
189 "SampleAfterValue": "20000",
190 "BriefDescription": "Mispredicted unconditional branches executed"
191 },
192 {
193 "EventCode": "0x89",
194 "Counter": "0,1,2,3",
195 "UMask": "0x10",
196 "EventName": "BR_MISP_EXEC.DIRECT_NEAR_CALL",
197 "SampleAfterValue": "2000",
198 "BriefDescription": "Mispredicted non call branches executed"
199 },
200 {
201 "EventCode": "0x89",
202 "Counter": "0,1,2,3",
203 "UMask": "0x20",
204 "EventName": "BR_MISP_EXEC.INDIRECT_NEAR_CALL",
205 "SampleAfterValue": "2000",
206 "BriefDescription": "Mispredicted indirect call branches executed"
207 },
208 {
209 "EventCode": "0x89",
210 "Counter": "0,1,2,3",
211 "UMask": "0x4",
212 "EventName": "BR_MISP_EXEC.INDIRECT_NON_CALL",
213 "SampleAfterValue": "2000",
214 "BriefDescription": "Mispredicted indirect non call branches executed"
215 },
216 {
217 "EventCode": "0x89",
218 "Counter": "0,1,2,3",
219 "UMask": "0x30",
220 "EventName": "BR_MISP_EXEC.NEAR_CALLS",
221 "SampleAfterValue": "2000",
222 "BriefDescription": "Mispredicted call branches executed"
223 },
224 {
225 "EventCode": "0x89",
226 "Counter": "0,1,2,3",
227 "UMask": "0x7",
228 "EventName": "BR_MISP_EXEC.NON_CALLS",
229 "SampleAfterValue": "20000",
230 "BriefDescription": "Mispredicted non call branches executed"
231 },
232 {
233 "EventCode": "0x89",
234 "Counter": "0,1,2,3",
235 "UMask": "0x8",
236 "EventName": "BR_MISP_EXEC.RETURN_NEAR",
237 "SampleAfterValue": "2000",
238 "BriefDescription": "Mispredicted return branches executed"
239 },
240 {
241 "EventCode": "0x89",
242 "Counter": "0,1,2,3",
243 "UMask": "0x40",
244 "EventName": "BR_MISP_EXEC.TAKEN",
245 "SampleAfterValue": "20000",
246 "BriefDescription": "Mispredicted taken branches executed"
247 },
248 {
249 "PEBS": "1",
250 "EventCode": "0xC5",
251 "Counter": "0,1,2,3",
252 "UMask": "0x4",
253 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
254 "SampleAfterValue": "20000",
255 "BriefDescription": "Mispredicted retired branch instructions (Precise Event)"
256 },
257 {
258 "PEBS": "1",
259 "EventCode": "0xC5",
260 "Counter": "0,1,2,3",
261 "UMask": "0x1",
262 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
263 "SampleAfterValue": "20000",
264 "BriefDescription": "Mispredicted conditional retired branches (Precise Event)"
265 },
266 {
267 "PEBS": "1",
268 "EventCode": "0xC5",
269 "Counter": "0,1,2,3",
270 "UMask": "0x2",
271 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
272 "SampleAfterValue": "2000",
273 "BriefDescription": "Mispredicted near retired calls (Precise Event)"
274 },
275 {
276 "EventCode": "0x0",
277 "Counter": "Fixed counter 3",
278 "UMask": "0x0",
279 "EventName": "CPU_CLK_UNHALTED.REF",
280 "SampleAfterValue": "2000000",
281 "BriefDescription": "Reference cycles when thread is not halted (fixed counter)"
282 },
283 {
284 "EventCode": "0x3C",
285 "Counter": "0,1,2,3",
286 "UMask": "0x1",
287 "EventName": "CPU_CLK_UNHALTED.REF_P",
288 "SampleAfterValue": "100000",
289 "BriefDescription": "Reference base clock (133 Mhz) cycles when thread is not halted (programmable counter)"
290 },
291 {
292 "EventCode": "0x0",
293 "Counter": "Fixed counter 2",
294 "UMask": "0x0",
295 "EventName": "CPU_CLK_UNHALTED.THREAD",
296 "SampleAfterValue": "2000000",
297 "BriefDescription": "Cycles when thread is not halted (fixed counter)"
298 },
299 {
300 "EventCode": "0x3C",
301 "Counter": "0,1,2,3",
302 "UMask": "0x0",
303 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
304 "SampleAfterValue": "2000000",
305 "BriefDescription": "Cycles when thread is not halted (programmable counter)"
306 },
307 {
308 "EventCode": "0x3C",
309 "Invert": "1",
310 "Counter": "0,1,2,3",
311 "UMask": "0x0",
312 "EventName": "CPU_CLK_UNHALTED.TOTAL_CYCLES",
313 "SampleAfterValue": "2000000",
314 "BriefDescription": "Total CPU cycles",
315 "CounterMask": "2"
316 },
317 {
318 "EventCode": "0x87",
319 "Counter": "0,1,2,3",
320 "UMask": "0xf",
321 "EventName": "ILD_STALL.ANY",
322 "SampleAfterValue": "2000000",
323 "BriefDescription": "Any Instruction Length Decoder stall cycles"
324 },
325 {
326 "EventCode": "0x87",
327 "Counter": "0,1,2,3",
328 "UMask": "0x4",
329 "EventName": "ILD_STALL.IQ_FULL",
330 "SampleAfterValue": "2000000",
331 "BriefDescription": "Instruction Queue full stall cycles"
332 },
333 {
334 "EventCode": "0x87",
335 "Counter": "0,1,2,3",
336 "UMask": "0x1",
337 "EventName": "ILD_STALL.LCP",
338 "SampleAfterValue": "2000000",
339 "BriefDescription": "Length Change Prefix stall cycles"
340 },
341 {
342 "EventCode": "0x87",
343 "Counter": "0,1,2,3",
344 "UMask": "0x2",
345 "EventName": "ILD_STALL.MRU",
346 "SampleAfterValue": "2000000",
347 "BriefDescription": "Stall cycles due to BPU MRU bypass"
348 },
349 {
350 "EventCode": "0x87",
351 "Counter": "0,1,2,3",
352 "UMask": "0x8",
353 "EventName": "ILD_STALL.REGEN",
354 "SampleAfterValue": "2000000",
355 "BriefDescription": "Regen stall cycles"
356 },
357 {
358 "EventCode": "0x18",
359 "Counter": "0,1,2,3",
360 "UMask": "0x1",
361 "EventName": "INST_DECODED.DEC0",
362 "SampleAfterValue": "2000000",
363 "BriefDescription": "Instructions that must be decoded by decoder 0"
364 },
365 {
366 "EventCode": "0x1E",
367 "Counter": "0,1,2,3",
368 "UMask": "0x1",
369 "EventName": "INST_QUEUE_WRITE_CYCLES",
370 "SampleAfterValue": "2000000",
371 "BriefDescription": "Cycles instructions are written to the instruction queue"
372 },
373 {
374 "EventCode": "0x17",
375 "Counter": "0,1,2,3",
376 "UMask": "0x1",
377 "EventName": "INST_QUEUE_WRITES",
378 "SampleAfterValue": "2000000",
379 "BriefDescription": "Instructions written to instruction queue."
380 },
381 {
382 "EventCode": "0x0",
383 "Counter": "Fixed counter 1",
384 "UMask": "0x0",
385 "EventName": "INST_RETIRED.ANY",
386 "SampleAfterValue": "2000000",
387 "BriefDescription": "Instructions retired (fixed counter)"
388 },
389 {
390 "PEBS": "1",
391 "EventCode": "0xC0",
392 "Counter": "0,1,2,3",
393 "UMask": "0x1",
394 "EventName": "INST_RETIRED.ANY_P",
395 "SampleAfterValue": "2000000",
396 "BriefDescription": "Instructions retired (Programmable counter and Precise Event)"
397 },
398 {
399 "PEBS": "1",
400 "EventCode": "0xC0",
401 "Counter": "0,1,2,3",
402 "UMask": "0x4",
403 "EventName": "INST_RETIRED.MMX",
404 "SampleAfterValue": "2000000",
405 "BriefDescription": "Retired MMX instructions (Precise Event)"
406 },
407 {
408 "PEBS": "1",
409 "EventCode": "0xC0",
410 "Invert": "1",
411 "Counter": "0,1,2,3",
412 "UMask": "0x1",
413 "EventName": "INST_RETIRED.TOTAL_CYCLES",
414 "SampleAfterValue": "2000000",
415 "BriefDescription": "Total cycles (Precise Event)",
416 "CounterMask": "16"
417 },
418 {
419 "PEBS": "1",
420 "EventCode": "0xC0",
421 "Counter": "0,1,2,3",
422 "UMask": "0x2",
423 "EventName": "INST_RETIRED.X87",
424 "SampleAfterValue": "2000000",
425 "BriefDescription": "Retired floating-point operations (Precise Event)"
426 },
427 {
428 "EventCode": "0x4C",
429 "Counter": "0,1",
430 "UMask": "0x1",
431 "EventName": "LOAD_HIT_PRE",
432 "SampleAfterValue": "200000",
433 "BriefDescription": "Load operations conflicting with software prefetches"
434 },
435 {
436 "EventCode": "0xA8",
437 "Counter": "0,1,2,3",
438 "UMask": "0x1",
439 "EventName": "LSD.ACTIVE",
440 "SampleAfterValue": "2000000",
441 "BriefDescription": "Cycles when uops were delivered by the LSD",
442 "CounterMask": "1"
443 },
444 {
445 "EventCode": "0xA8",
446 "Invert": "1",
447 "Counter": "0,1,2,3",
448 "UMask": "0x1",
449 "EventName": "LSD.INACTIVE",
450 "SampleAfterValue": "2000000",
451 "BriefDescription": "Cycles no uops were delivered by the LSD",
452 "CounterMask": "1"
453 },
454 {
455 "EventCode": "0x20",
456 "Counter": "0,1,2,3",
457 "UMask": "0x1",
458 "EventName": "LSD_OVERFLOW",
459 "SampleAfterValue": "2000000",
460 "BriefDescription": "Loops that can't stream from the instruction queue"
461 },
462 {
463 "EventCode": "0xC3",
464 "Counter": "0,1,2,3",
465 "UMask": "0x1",
466 "EventName": "MACHINE_CLEARS.CYCLES",
467 "SampleAfterValue": "20000",
468 "BriefDescription": "Cycles machine clear asserted"
469 },
470 {
471 "EventCode": "0xC3",
472 "Counter": "0,1,2,3",
473 "UMask": "0x2",
474 "EventName": "MACHINE_CLEARS.MEM_ORDER",
475 "SampleAfterValue": "20000",
476 "BriefDescription": "Execution pipeline restart due to Memory ordering conflicts"
477 },
478 {
479 "EventCode": "0xC3",
480 "Counter": "0,1,2,3",
481 "UMask": "0x4",
482 "EventName": "MACHINE_CLEARS.SMC",
483 "SampleAfterValue": "20000",
484 "BriefDescription": "Self-Modifying Code detected"
485 },
486 {
487 "EventCode": "0xA2",
488 "Counter": "0,1,2,3",
489 "UMask": "0x1",
490 "EventName": "RESOURCE_STALLS.ANY",
491 "SampleAfterValue": "2000000",
492 "BriefDescription": "Resource related stall cycles"
493 },
494 {
495 "EventCode": "0xA2",
496 "Counter": "0,1,2,3",
497 "UMask": "0x20",
498 "EventName": "RESOURCE_STALLS.FPCW",
499 "SampleAfterValue": "2000000",
500 "BriefDescription": "FPU control word write stall cycles"
501 },
502 {
503 "EventCode": "0xA2",
504 "Counter": "0,1,2,3",
505 "UMask": "0x2",
506 "EventName": "RESOURCE_STALLS.LOAD",
507 "SampleAfterValue": "2000000",
508 "BriefDescription": "Load buffer stall cycles"
509 },
510 {
511 "EventCode": "0xA2",
512 "Counter": "0,1,2,3",
513 "UMask": "0x40",
514 "EventName": "RESOURCE_STALLS.MXCSR",
515 "SampleAfterValue": "2000000",
516 "BriefDescription": "MXCSR rename stall cycles"
517 },
518 {
519 "EventCode": "0xA2",
520 "Counter": "0,1,2,3",
521 "UMask": "0x80",
522 "EventName": "RESOURCE_STALLS.OTHER",
523 "SampleAfterValue": "2000000",
524 "BriefDescription": "Other Resource related stall cycles"
525 },
526 {
527 "EventCode": "0xA2",
528 "Counter": "0,1,2,3",
529 "UMask": "0x10",
530 "EventName": "RESOURCE_STALLS.ROB_FULL",
531 "SampleAfterValue": "2000000",
532 "BriefDescription": "ROB full stall cycles"
533 },
534 {
535 "EventCode": "0xA2",
536 "Counter": "0,1,2,3",
537 "UMask": "0x4",
538 "EventName": "RESOURCE_STALLS.RS_FULL",
539 "SampleAfterValue": "2000000",
540 "BriefDescription": "Reservation Station full stall cycles"
541 },
542 {
543 "EventCode": "0xA2",
544 "Counter": "0,1,2,3",
545 "UMask": "0x8",
546 "EventName": "RESOURCE_STALLS.STORE",
547 "SampleAfterValue": "2000000",
548 "BriefDescription": "Store buffer stall cycles"
549 },
550 {
551 "PEBS": "1",
552 "EventCode": "0xC7",
553 "Counter": "0,1,2,3",
554 "UMask": "0x4",
555 "EventName": "SSEX_UOPS_RETIRED.PACKED_DOUBLE",
556 "SampleAfterValue": "200000",
557 "BriefDescription": "SIMD Packed-Double Uops retired (Precise Event)"
558 },
559 {
560 "PEBS": "1",
561 "EventCode": "0xC7",
562 "Counter": "0,1,2,3",
563 "UMask": "0x1",
564 "EventName": "SSEX_UOPS_RETIRED.PACKED_SINGLE",
565 "SampleAfterValue": "200000",
566 "BriefDescription": "SIMD Packed-Single Uops retired (Precise Event)"
567 },
568 {
569 "PEBS": "1",
570 "EventCode": "0xC7",
571 "Counter": "0,1,2,3",
572 "UMask": "0x8",
573 "EventName": "SSEX_UOPS_RETIRED.SCALAR_DOUBLE",
574 "SampleAfterValue": "200000",
575 "BriefDescription": "SIMD Scalar-Double Uops retired (Precise Event)"
576 },
577 {
578 "PEBS": "1",
579 "EventCode": "0xC7",
580 "Counter": "0,1,2,3",
581 "UMask": "0x2",
582 "EventName": "SSEX_UOPS_RETIRED.SCALAR_SINGLE",
583 "SampleAfterValue": "200000",
584 "BriefDescription": "SIMD Scalar-Single Uops retired (Precise Event)"
585 },
586 {
587 "PEBS": "1",
588 "EventCode": "0xC7",
589 "Counter": "0,1,2,3",
590 "UMask": "0x10",
591 "EventName": "SSEX_UOPS_RETIRED.VECTOR_INTEGER",
592 "SampleAfterValue": "200000",
593 "BriefDescription": "SIMD Vector Integer Uops retired (Precise Event)"
594 },
595 {
596 "EventCode": "0xDB",
597 "Counter": "0,1,2,3",
598 "UMask": "0x1",
599 "EventName": "UOP_UNFUSION",
600 "SampleAfterValue": "2000000",
601 "BriefDescription": "Uop unfusions due to FP exceptions"
602 },
603 {
604 "EventCode": "0xD1",
605 "Counter": "0,1,2,3",
606 "UMask": "0x4",
607 "EventName": "UOPS_DECODED.ESP_FOLDING",
608 "SampleAfterValue": "2000000",
609 "BriefDescription": "Stack pointer instructions decoded"
610 },
611 {
612 "EventCode": "0xD1",
613 "Counter": "0,1,2,3",
614 "UMask": "0x8",
615 "EventName": "UOPS_DECODED.ESP_SYNC",
616 "SampleAfterValue": "2000000",
617 "BriefDescription": "Stack pointer sync operations"
618 },
619 {
620 "EventCode": "0xD1",
621 "Counter": "0,1,2,3",
622 "UMask": "0x2",
623 "EventName": "UOPS_DECODED.MS_CYCLES_ACTIVE",
624 "SampleAfterValue": "2000000",
625 "BriefDescription": "Uops decoded by Microcode Sequencer",
626 "CounterMask": "1"
627 },
628 {
629 "EventCode": "0xD1",
630 "Invert": "1",
631 "Counter": "0,1,2,3",
632 "UMask": "0x1",
633 "EventName": "UOPS_DECODED.STALL_CYCLES",
634 "SampleAfterValue": "2000000",
635 "BriefDescription": "Cycles no Uops are decoded",
636 "CounterMask": "1"
637 },
638 {
639 "EventCode": "0xB1",
640 "Counter": "0,1,2,3",
641 "UMask": "0x3f",
642 "AnyThread": "1",
643 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES",
644 "SampleAfterValue": "2000000",
645 "BriefDescription": "Cycles Uops executed on any port (core count)",
646 "CounterMask": "1"
647 },
648 {
649 "EventCode": "0xB1",
650 "Counter": "0,1,2,3",
651 "UMask": "0x1f",
652 "AnyThread": "1",
653 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES_NO_PORT5",
654 "SampleAfterValue": "2000000",
655 "BriefDescription": "Cycles Uops executed on ports 0-4 (core count)",
656 "CounterMask": "1"
657 },
658 {
659 "EventCode": "0xB1",
660 "Invert": "1",
661 "Counter": "0,1,2,3",
662 "UMask": "0x3f",
663 "AnyThread": "1",
664 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT",
665 "SampleAfterValue": "2000000",
666 "BriefDescription": "Uops executed on any port (core count)",
667 "CounterMask": "1",
668 "EdgeDetect": "1"
669 },
670 {
671 "EventCode": "0xB1",
672 "Invert": "1",
673 "Counter": "0,1,2,3",
674 "UMask": "0x1f",
675 "AnyThread": "1",
676 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT_NO_PORT5",
677 "SampleAfterValue": "2000000",
678 "BriefDescription": "Uops executed on ports 0-4 (core count)",
679 "CounterMask": "1",
680 "EdgeDetect": "1"
681 },
682 {
683 "EventCode": "0xB1",
684 "Invert": "1",
685 "Counter": "0,1,2,3",
686 "UMask": "0x3f",
687 "AnyThread": "1",
688 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES",
689 "SampleAfterValue": "2000000",
690 "BriefDescription": "Cycles no Uops issued on any port (core count)",
691 "CounterMask": "1"
692 },
693 {
694 "EventCode": "0xB1",
695 "Invert": "1",
696 "Counter": "0,1,2,3",
697 "UMask": "0x1f",
698 "AnyThread": "1",
699 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES_NO_PORT5",
700 "SampleAfterValue": "2000000",
701 "BriefDescription": "Cycles no Uops issued on ports 0-4 (core count)",
702 "CounterMask": "1"
703 },
704 {
705 "EventCode": "0xB1",
706 "Counter": "0,1,2,3",
707 "UMask": "0x1",
708 "EventName": "UOPS_EXECUTED.PORT0",
709 "SampleAfterValue": "2000000",
710 "BriefDescription": "Uops executed on port 0"
711 },
712 {
713 "EventCode": "0xB1",
714 "Counter": "0,1,2,3",
715 "UMask": "0x40",
716 "EventName": "UOPS_EXECUTED.PORT015",
717 "SampleAfterValue": "2000000",
718 "BriefDescription": "Uops issued on ports 0, 1 or 5"
719 },
720 {
721 "EventCode": "0xB1",
722 "Invert": "1",
723 "Counter": "0,1,2,3",
724 "UMask": "0x40",
725 "EventName": "UOPS_EXECUTED.PORT015_STALL_CYCLES",
726 "SampleAfterValue": "2000000",
727 "BriefDescription": "Cycles no Uops issued on ports 0, 1 or 5",
728 "CounterMask": "1"
729 },
730 {
731 "EventCode": "0xB1",
732 "Counter": "0,1,2,3",
733 "UMask": "0x2",
734 "EventName": "UOPS_EXECUTED.PORT1",
735 "SampleAfterValue": "2000000",
736 "BriefDescription": "Uops executed on port 1"
737 },
738 {
739 "EventCode": "0xB1",
740 "Counter": "0,1,2,3",
741 "UMask": "0x4",
742 "AnyThread": "1",
743 "EventName": "UOPS_EXECUTED.PORT2_CORE",
744 "SampleAfterValue": "2000000",
745 "BriefDescription": "Uops executed on port 2 (core count)"
746 },
747 {
748 "EventCode": "0xB1",
749 "Counter": "0,1,2,3",
750 "UMask": "0x80",
751 "AnyThread": "1",
752 "EventName": "UOPS_EXECUTED.PORT234_CORE",
753 "SampleAfterValue": "2000000",
754 "BriefDescription": "Uops issued on ports 2, 3 or 4"
755 },
756 {
757 "EventCode": "0xB1",
758 "Counter": "0,1,2,3",
759 "UMask": "0x8",
760 "AnyThread": "1",
761 "EventName": "UOPS_EXECUTED.PORT3_CORE",
762 "SampleAfterValue": "2000000",
763 "BriefDescription": "Uops executed on port 3 (core count)"
764 },
765 {
766 "EventCode": "0xB1",
767 "Counter": "0,1,2,3",
768 "UMask": "0x10",
769 "AnyThread": "1",
770 "EventName": "UOPS_EXECUTED.PORT4_CORE",
771 "SampleAfterValue": "2000000",
772 "BriefDescription": "Uops executed on port 4 (core count)"
773 },
774 {
775 "EventCode": "0xB1",
776 "Counter": "0,1,2,3",
777 "UMask": "0x20",
778 "EventName": "UOPS_EXECUTED.PORT5",
779 "SampleAfterValue": "2000000",
780 "BriefDescription": "Uops executed on port 5"
781 },
782 {
783 "EventCode": "0xE",
784 "Counter": "0,1,2,3",
785 "UMask": "0x1",
786 "EventName": "UOPS_ISSUED.ANY",
787 "SampleAfterValue": "2000000",
788 "BriefDescription": "Uops issued"
789 },
790 {
791 "EventCode": "0xE",
792 "Invert": "1",
793 "Counter": "0,1,2,3",
794 "UMask": "0x1",
795 "AnyThread": "1",
796 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
797 "SampleAfterValue": "2000000",
798 "BriefDescription": "Cycles no Uops were issued on any thread",
799 "CounterMask": "1"
800 },
801 {
802 "EventCode": "0xE",
803 "Counter": "0,1,2,3",
804 "UMask": "0x1",
805 "AnyThread": "1",
806 "EventName": "UOPS_ISSUED.CYCLES_ALL_THREADS",
807 "SampleAfterValue": "2000000",
808 "BriefDescription": "Cycles Uops were issued on either thread",
809 "CounterMask": "1"
810 },
811 {
812 "EventCode": "0xE",
813 "Counter": "0,1,2,3",
814 "UMask": "0x2",
815 "EventName": "UOPS_ISSUED.FUSED",
816 "SampleAfterValue": "2000000",
817 "BriefDescription": "Fused Uops issued"
818 },
819 {
820 "EventCode": "0xE",
821 "Invert": "1",
822 "Counter": "0,1,2,3",
823 "UMask": "0x1",
824 "EventName": "UOPS_ISSUED.STALL_CYCLES",
825 "SampleAfterValue": "2000000",
826 "BriefDescription": "Cycles no Uops were issued",
827 "CounterMask": "1"
828 },
829 {
830 "PEBS": "1",
831 "EventCode": "0xC2",
832 "Counter": "0,1,2,3",
833 "UMask": "0x1",
834 "EventName": "UOPS_RETIRED.ACTIVE_CYCLES",
835 "SampleAfterValue": "2000000",
836 "BriefDescription": "Cycles Uops are being retired",
837 "CounterMask": "1"
838 },
839 {
840 "PEBS": "1",
841 "EventCode": "0xC2",
842 "Counter": "0,1,2,3",
843 "UMask": "0x1",
844 "EventName": "UOPS_RETIRED.ANY",
845 "SampleAfterValue": "2000000",
846 "BriefDescription": "Uops retired (Precise Event)"
847 },
848 {
849 "PEBS": "1",
850 "EventCode": "0xC2",
851 "Counter": "0,1,2,3",
852 "UMask": "0x4",
853 "EventName": "UOPS_RETIRED.MACRO_FUSED",
854 "SampleAfterValue": "2000000",
855 "BriefDescription": "Macro-fused Uops retired (Precise Event)"
856 },
857 {
858 "PEBS": "1",
859 "EventCode": "0xC2",
860 "Counter": "0,1,2,3",
861 "UMask": "0x2",
862 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
863 "SampleAfterValue": "2000000",
864 "BriefDescription": "Retirement slots used (Precise Event)"
865 },
866 {
867 "PEBS": "1",
868 "EventCode": "0xC2",
869 "Invert": "1",
870 "Counter": "0,1,2,3",
871 "UMask": "0x1",
872 "EventName": "UOPS_RETIRED.STALL_CYCLES",
873 "SampleAfterValue": "2000000",
874 "BriefDescription": "Cycles Uops are not retiring (Precise Event)",
875 "CounterMask": "1"
876 },
877 {
878 "PEBS": "1",
879 "EventCode": "0xC2",
880 "Invert": "1",
881 "Counter": "0,1,2,3",
882 "UMask": "0x1",
883 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
884 "SampleAfterValue": "2000000",
885 "BriefDescription": "Total cycles using precise uop retired event (Precise Event)",
886 "CounterMask": "16"
887 },
888 {
889 "PEBS": "2",
890 "EventCode": "0xC0",
891 "Invert": "1",
892 "Counter": "0,1,2,3",
893 "UMask": "0x1",
894 "EventName": "INST_RETIRED.TOTAL_CYCLES_PS",
895 "SampleAfterValue": "2000000",
896 "BriefDescription": "Total cycles (Precise Event)",
897 "CounterMask": "16"
898 }
899] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereep-sp/virtual-memory.json b/tools/perf/pmu-events/arch/x86/westmereep-sp/virtual-memory.json
new file mode 100644
index 000000000000..2153b3f5d7b0
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereep-sp/virtual-memory.json
@@ -0,0 +1,149 @@
1[
2 {
3 "EventCode": "0x8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "DTLB_LOAD_MISSES.ANY",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "DTLB load misses"
9 },
10 {
11 "EventCode": "0x8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x20",
14 "EventName": "DTLB_LOAD_MISSES.PDE_MISS",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "DTLB load miss caused by low part of address"
17 },
18 {
19 "EventCode": "0x8",
20 "Counter": "0,1,2,3",
21 "UMask": "0x10",
22 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "DTLB second level hit"
25 },
26 {
27 "EventCode": "0x8",
28 "Counter": "0,1,2,3",
29 "UMask": "0x2",
30 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
31 "SampleAfterValue": "200000",
32 "BriefDescription": "DTLB load miss page walks complete"
33 },
34 {
35 "EventCode": "0x8",
36 "Counter": "0,1,2,3",
37 "UMask": "0x4",
38 "EventName": "DTLB_LOAD_MISSES.WALK_CYCLES",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "DTLB load miss page walk cycles"
41 },
42 {
43 "EventCode": "0x49",
44 "Counter": "0,1,2,3",
45 "UMask": "0x1",
46 "EventName": "DTLB_MISSES.ANY",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "DTLB misses"
49 },
50 {
51 "EventCode": "0x49",
52 "Counter": "0,1,2,3",
53 "UMask": "0x80",
54 "EventName": "DTLB_MISSES.LARGE_WALK_COMPLETED",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "DTLB miss large page walks"
57 },
58 {
59 "EventCode": "0x49",
60 "Counter": "0,1,2,3",
61 "UMask": "0x10",
62 "EventName": "DTLB_MISSES.STLB_HIT",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "DTLB first level misses but second level hit"
65 },
66 {
67 "EventCode": "0x49",
68 "Counter": "0,1,2,3",
69 "UMask": "0x2",
70 "EventName": "DTLB_MISSES.WALK_COMPLETED",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "DTLB miss page walks"
73 },
74 {
75 "EventCode": "0x49",
76 "Counter": "0,1,2,3",
77 "UMask": "0x4",
78 "EventName": "DTLB_MISSES.WALK_CYCLES",
79 "SampleAfterValue": "2000000",
80 "BriefDescription": "DTLB miss page walk cycles"
81 },
82 {
83 "EventCode": "0x4F",
84 "Counter": "0,1,2,3",
85 "UMask": "0x10",
86 "EventName": "EPT.WALK_CYCLES",
87 "SampleAfterValue": "2000000",
88 "BriefDescription": "Extended Page Table walk cycles"
89 },
90 {
91 "EventCode": "0xAE",
92 "Counter": "0,1,2,3",
93 "UMask": "0x1",
94 "EventName": "ITLB_FLUSH",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "ITLB flushes"
97 },
98 {
99 "PEBS": "1",
100 "EventCode": "0xC8",
101 "Counter": "0,1,2,3",
102 "UMask": "0x20",
103 "EventName": "ITLB_MISS_RETIRED",
104 "SampleAfterValue": "200000",
105 "BriefDescription": "Retired instructions that missed the ITLB (Precise Event)"
106 },
107 {
108 "EventCode": "0x85",
109 "Counter": "0,1,2,3",
110 "UMask": "0x1",
111 "EventName": "ITLB_MISSES.ANY",
112 "SampleAfterValue": "200000",
113 "BriefDescription": "ITLB miss"
114 },
115 {
116 "EventCode": "0x85",
117 "Counter": "0,1,2,3",
118 "UMask": "0x2",
119 "EventName": "ITLB_MISSES.WALK_COMPLETED",
120 "SampleAfterValue": "200000",
121 "BriefDescription": "ITLB miss page walks"
122 },
123 {
124 "EventCode": "0x85",
125 "Counter": "0,1,2,3",
126 "UMask": "0x4",
127 "EventName": "ITLB_MISSES.WALK_CYCLES",
128 "SampleAfterValue": "2000000",
129 "BriefDescription": "ITLB miss page walk cycles"
130 },
131 {
132 "PEBS": "1",
133 "EventCode": "0xCB",
134 "Counter": "0,1,2,3",
135 "UMask": "0x80",
136 "EventName": "MEM_LOAD_RETIRED.DTLB_MISS",
137 "SampleAfterValue": "200000",
138 "BriefDescription": "Retired loads that miss the DTLB (Precise Event)"
139 },
140 {
141 "PEBS": "1",
142 "EventCode": "0xC",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1",
145 "EventName": "MEM_STORE_RETIRED.DTLB_MISS",
146 "SampleAfterValue": "200000",
147 "BriefDescription": "Retired stores that miss the DTLB (Precise Event)"
148 }
149] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereex/cache.json b/tools/perf/pmu-events/arch/x86/westmereex/cache.json
new file mode 100644
index 000000000000..f9bc7fdd48d6
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereex/cache.json
@@ -0,0 +1,3225 @@
1[
2 {
3 "EventCode": "0x63",
4 "Counter": "0,1",
5 "UMask": "0x2",
6 "EventName": "CACHE_LOCK_CYCLES.L1D",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles L1D locked"
9 },
10 {
11 "EventCode": "0x63",
12 "Counter": "0,1",
13 "UMask": "0x1",
14 "EventName": "CACHE_LOCK_CYCLES.L1D_L2",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Cycles L1D and L2 locked"
17 },
18 {
19 "EventCode": "0x51",
20 "Counter": "0,1",
21 "UMask": "0x4",
22 "EventName": "L1D.M_EVICT",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "L1D cache lines replaced in M state"
25 },
26 {
27 "EventCode": "0x51",
28 "Counter": "0,1",
29 "UMask": "0x2",
30 "EventName": "L1D.M_REPL",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "L1D cache lines allocated in the M state"
33 },
34 {
35 "EventCode": "0x51",
36 "Counter": "0,1",
37 "UMask": "0x8",
38 "EventName": "L1D.M_SNOOP_EVICT",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "L1D snoop eviction of cache lines in M state"
41 },
42 {
43 "EventCode": "0x51",
44 "Counter": "0,1",
45 "UMask": "0x1",
46 "EventName": "L1D.REPL",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1 data cache lines allocated"
49 },
50 {
51 "EventCode": "0x52",
52 "Counter": "0,1",
53 "UMask": "0x1",
54 "EventName": "L1D_CACHE_PREFETCH_LOCK_FB_HIT",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1D prefetch load lock accepted in fill buffer"
57 },
58 {
59 "EventCode": "0x4E",
60 "Counter": "0,1",
61 "UMask": "0x2",
62 "EventName": "L1D_PREFETCH.MISS",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "L1D hardware prefetch misses"
65 },
66 {
67 "EventCode": "0x4E",
68 "Counter": "0,1",
69 "UMask": "0x1",
70 "EventName": "L1D_PREFETCH.REQUESTS",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "L1D hardware prefetch requests"
73 },
74 {
75 "EventCode": "0x4E",
76 "Counter": "0,1",
77 "UMask": "0x4",
78 "EventName": "L1D_PREFETCH.TRIGGERS",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "L1D hardware prefetch requests triggered"
81 },
82 {
83 "EventCode": "0x28",
84 "Counter": "0,1,2,3",
85 "UMask": "0x4",
86 "EventName": "L1D_WB_L2.E_STATE",
87 "SampleAfterValue": "100000",
88 "BriefDescription": "L1 writebacks to L2 in E state"
89 },
90 {
91 "EventCode": "0x28",
92 "Counter": "0,1,2,3",
93 "UMask": "0x1",
94 "EventName": "L1D_WB_L2.I_STATE",
95 "SampleAfterValue": "100000",
96 "BriefDescription": "L1 writebacks to L2 in I state (misses)"
97 },
98 {
99 "EventCode": "0x28",
100 "Counter": "0,1,2,3",
101 "UMask": "0x8",
102 "EventName": "L1D_WB_L2.M_STATE",
103 "SampleAfterValue": "100000",
104 "BriefDescription": "L1 writebacks to L2 in M state"
105 },
106 {
107 "EventCode": "0x28",
108 "Counter": "0,1,2,3",
109 "UMask": "0xf",
110 "EventName": "L1D_WB_L2.MESI",
111 "SampleAfterValue": "100000",
112 "BriefDescription": "All L1 writebacks to L2"
113 },
114 {
115 "EventCode": "0x28",
116 "Counter": "0,1,2,3",
117 "UMask": "0x2",
118 "EventName": "L1D_WB_L2.S_STATE",
119 "SampleAfterValue": "100000",
120 "BriefDescription": "L1 writebacks to L2 in S state"
121 },
122 {
123 "EventCode": "0x26",
124 "Counter": "0,1,2,3",
125 "UMask": "0xff",
126 "EventName": "L2_DATA_RQSTS.ANY",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "All L2 data requests"
129 },
130 {
131 "EventCode": "0x26",
132 "Counter": "0,1,2,3",
133 "UMask": "0x4",
134 "EventName": "L2_DATA_RQSTS.DEMAND.E_STATE",
135 "SampleAfterValue": "200000",
136 "BriefDescription": "L2 data demand loads in E state"
137 },
138 {
139 "EventCode": "0x26",
140 "Counter": "0,1,2,3",
141 "UMask": "0x1",
142 "EventName": "L2_DATA_RQSTS.DEMAND.I_STATE",
143 "SampleAfterValue": "200000",
144 "BriefDescription": "L2 data demand loads in I state (misses)"
145 },
146 {
147 "EventCode": "0x26",
148 "Counter": "0,1,2,3",
149 "UMask": "0x8",
150 "EventName": "L2_DATA_RQSTS.DEMAND.M_STATE",
151 "SampleAfterValue": "200000",
152 "BriefDescription": "L2 data demand loads in M state"
153 },
154 {
155 "EventCode": "0x26",
156 "Counter": "0,1,2,3",
157 "UMask": "0xf",
158 "EventName": "L2_DATA_RQSTS.DEMAND.MESI",
159 "SampleAfterValue": "200000",
160 "BriefDescription": "L2 data demand requests"
161 },
162 {
163 "EventCode": "0x26",
164 "Counter": "0,1,2,3",
165 "UMask": "0x2",
166 "EventName": "L2_DATA_RQSTS.DEMAND.S_STATE",
167 "SampleAfterValue": "200000",
168 "BriefDescription": "L2 data demand loads in S state"
169 },
170 {
171 "EventCode": "0x26",
172 "Counter": "0,1,2,3",
173 "UMask": "0x40",
174 "EventName": "L2_DATA_RQSTS.PREFETCH.E_STATE",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "L2 data prefetches in E state"
177 },
178 {
179 "EventCode": "0x26",
180 "Counter": "0,1,2,3",
181 "UMask": "0x10",
182 "EventName": "L2_DATA_RQSTS.PREFETCH.I_STATE",
183 "SampleAfterValue": "200000",
184 "BriefDescription": "L2 data prefetches in the I state (misses)"
185 },
186 {
187 "EventCode": "0x26",
188 "Counter": "0,1,2,3",
189 "UMask": "0x80",
190 "EventName": "L2_DATA_RQSTS.PREFETCH.M_STATE",
191 "SampleAfterValue": "200000",
192 "BriefDescription": "L2 data prefetches in M state"
193 },
194 {
195 "EventCode": "0x26",
196 "Counter": "0,1,2,3",
197 "UMask": "0xf0",
198 "EventName": "L2_DATA_RQSTS.PREFETCH.MESI",
199 "SampleAfterValue": "200000",
200 "BriefDescription": "All L2 data prefetches"
201 },
202 {
203 "EventCode": "0x26",
204 "Counter": "0,1,2,3",
205 "UMask": "0x20",
206 "EventName": "L2_DATA_RQSTS.PREFETCH.S_STATE",
207 "SampleAfterValue": "200000",
208 "BriefDescription": "L2 data prefetches in the S state"
209 },
210 {
211 "EventCode": "0xF1",
212 "Counter": "0,1,2,3",
213 "UMask": "0x7",
214 "EventName": "L2_LINES_IN.ANY",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "L2 lines alloacated"
217 },
218 {
219 "EventCode": "0xF1",
220 "Counter": "0,1,2,3",
221 "UMask": "0x4",
222 "EventName": "L2_LINES_IN.E_STATE",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "L2 lines allocated in the E state"
225 },
226 {
227 "EventCode": "0xF1",
228 "Counter": "0,1,2,3",
229 "UMask": "0x2",
230 "EventName": "L2_LINES_IN.S_STATE",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "L2 lines allocated in the S state"
233 },
234 {
235 "EventCode": "0xF2",
236 "Counter": "0,1,2,3",
237 "UMask": "0xf",
238 "EventName": "L2_LINES_OUT.ANY",
239 "SampleAfterValue": "100000",
240 "BriefDescription": "L2 lines evicted"
241 },
242 {
243 "EventCode": "0xF2",
244 "Counter": "0,1,2,3",
245 "UMask": "0x1",
246 "EventName": "L2_LINES_OUT.DEMAND_CLEAN",
247 "SampleAfterValue": "100000",
248 "BriefDescription": "L2 lines evicted by a demand request"
249 },
250 {
251 "EventCode": "0xF2",
252 "Counter": "0,1,2,3",
253 "UMask": "0x2",
254 "EventName": "L2_LINES_OUT.DEMAND_DIRTY",
255 "SampleAfterValue": "100000",
256 "BriefDescription": "L2 modified lines evicted by a demand request"
257 },
258 {
259 "EventCode": "0xF2",
260 "Counter": "0,1,2,3",
261 "UMask": "0x4",
262 "EventName": "L2_LINES_OUT.PREFETCH_CLEAN",
263 "SampleAfterValue": "100000",
264 "BriefDescription": "L2 lines evicted by a prefetch request"
265 },
266 {
267 "EventCode": "0xF2",
268 "Counter": "0,1,2,3",
269 "UMask": "0x8",
270 "EventName": "L2_LINES_OUT.PREFETCH_DIRTY",
271 "SampleAfterValue": "100000",
272 "BriefDescription": "L2 modified lines evicted by a prefetch request"
273 },
274 {
275 "EventCode": "0x24",
276 "Counter": "0,1,2,3",
277 "UMask": "0x10",
278 "EventName": "L2_RQSTS.IFETCH_HIT",
279 "SampleAfterValue": "200000",
280 "BriefDescription": "L2 instruction fetch hits"
281 },
282 {
283 "EventCode": "0x24",
284 "Counter": "0,1,2,3",
285 "UMask": "0x20",
286 "EventName": "L2_RQSTS.IFETCH_MISS",
287 "SampleAfterValue": "200000",
288 "BriefDescription": "L2 instruction fetch misses"
289 },
290 {
291 "EventCode": "0x24",
292 "Counter": "0,1,2,3",
293 "UMask": "0x30",
294 "EventName": "L2_RQSTS.IFETCHES",
295 "SampleAfterValue": "200000",
296 "BriefDescription": "L2 instruction fetches"
297 },
298 {
299 "EventCode": "0x24",
300 "Counter": "0,1,2,3",
301 "UMask": "0x1",
302 "EventName": "L2_RQSTS.LD_HIT",
303 "SampleAfterValue": "200000",
304 "BriefDescription": "L2 load hits"
305 },
306 {
307 "EventCode": "0x24",
308 "Counter": "0,1,2,3",
309 "UMask": "0x2",
310 "EventName": "L2_RQSTS.LD_MISS",
311 "SampleAfterValue": "200000",
312 "BriefDescription": "L2 load misses"
313 },
314 {
315 "EventCode": "0x24",
316 "Counter": "0,1,2,3",
317 "UMask": "0x3",
318 "EventName": "L2_RQSTS.LOADS",
319 "SampleAfterValue": "200000",
320 "BriefDescription": "L2 requests"
321 },
322 {
323 "EventCode": "0x24",
324 "Counter": "0,1,2,3",
325 "UMask": "0xaa",
326 "EventName": "L2_RQSTS.MISS",
327 "SampleAfterValue": "200000",
328 "BriefDescription": "All L2 misses"
329 },
330 {
331 "EventCode": "0x24",
332 "Counter": "0,1,2,3",
333 "UMask": "0x40",
334 "EventName": "L2_RQSTS.PREFETCH_HIT",
335 "SampleAfterValue": "200000",
336 "BriefDescription": "L2 prefetch hits"
337 },
338 {
339 "EventCode": "0x24",
340 "Counter": "0,1,2,3",
341 "UMask": "0x80",
342 "EventName": "L2_RQSTS.PREFETCH_MISS",
343 "SampleAfterValue": "200000",
344 "BriefDescription": "L2 prefetch misses"
345 },
346 {
347 "EventCode": "0x24",
348 "Counter": "0,1,2,3",
349 "UMask": "0xc0",
350 "EventName": "L2_RQSTS.PREFETCHES",
351 "SampleAfterValue": "200000",
352 "BriefDescription": "All L2 prefetches"
353 },
354 {
355 "EventCode": "0x24",
356 "Counter": "0,1,2,3",
357 "UMask": "0xff",
358 "EventName": "L2_RQSTS.REFERENCES",
359 "SampleAfterValue": "200000",
360 "BriefDescription": "All L2 requests"
361 },
362 {
363 "EventCode": "0x24",
364 "Counter": "0,1,2,3",
365 "UMask": "0x4",
366 "EventName": "L2_RQSTS.RFO_HIT",
367 "SampleAfterValue": "200000",
368 "BriefDescription": "L2 RFO hits"
369 },
370 {
371 "EventCode": "0x24",
372 "Counter": "0,1,2,3",
373 "UMask": "0x8",
374 "EventName": "L2_RQSTS.RFO_MISS",
375 "SampleAfterValue": "200000",
376 "BriefDescription": "L2 RFO misses"
377 },
378 {
379 "EventCode": "0x24",
380 "Counter": "0,1,2,3",
381 "UMask": "0xc",
382 "EventName": "L2_RQSTS.RFOS",
383 "SampleAfterValue": "200000",
384 "BriefDescription": "L2 RFO requests"
385 },
386 {
387 "EventCode": "0xF0",
388 "Counter": "0,1,2,3",
389 "UMask": "0x80",
390 "EventName": "L2_TRANSACTIONS.ANY",
391 "SampleAfterValue": "200000",
392 "BriefDescription": "All L2 transactions"
393 },
394 {
395 "EventCode": "0xF0",
396 "Counter": "0,1,2,3",
397 "UMask": "0x20",
398 "EventName": "L2_TRANSACTIONS.FILL",
399 "SampleAfterValue": "200000",
400 "BriefDescription": "L2 fill transactions"
401 },
402 {
403 "EventCode": "0xF0",
404 "Counter": "0,1,2,3",
405 "UMask": "0x4",
406 "EventName": "L2_TRANSACTIONS.IFETCH",
407 "SampleAfterValue": "200000",
408 "BriefDescription": "L2 instruction fetch transactions"
409 },
410 {
411 "EventCode": "0xF0",
412 "Counter": "0,1,2,3",
413 "UMask": "0x10",
414 "EventName": "L2_TRANSACTIONS.L1D_WB",
415 "SampleAfterValue": "200000",
416 "BriefDescription": "L1D writeback to L2 transactions"
417 },
418 {
419 "EventCode": "0xF0",
420 "Counter": "0,1,2,3",
421 "UMask": "0x1",
422 "EventName": "L2_TRANSACTIONS.LOAD",
423 "SampleAfterValue": "200000",
424 "BriefDescription": "L2 Load transactions"
425 },
426 {
427 "EventCode": "0xF0",
428 "Counter": "0,1,2,3",
429 "UMask": "0x8",
430 "EventName": "L2_TRANSACTIONS.PREFETCH",
431 "SampleAfterValue": "200000",
432 "BriefDescription": "L2 prefetch transactions"
433 },
434 {
435 "EventCode": "0xF0",
436 "Counter": "0,1,2,3",
437 "UMask": "0x2",
438 "EventName": "L2_TRANSACTIONS.RFO",
439 "SampleAfterValue": "200000",
440 "BriefDescription": "L2 RFO transactions"
441 },
442 {
443 "EventCode": "0xF0",
444 "Counter": "0,1,2,3",
445 "UMask": "0x40",
446 "EventName": "L2_TRANSACTIONS.WB",
447 "SampleAfterValue": "200000",
448 "BriefDescription": "L2 writeback to LLC transactions"
449 },
450 {
451 "EventCode": "0x27",
452 "Counter": "0,1,2,3",
453 "UMask": "0x40",
454 "EventName": "L2_WRITE.LOCK.E_STATE",
455 "SampleAfterValue": "100000",
456 "BriefDescription": "L2 demand lock RFOs in E state"
457 },
458 {
459 "EventCode": "0x27",
460 "Counter": "0,1,2,3",
461 "UMask": "0xe0",
462 "EventName": "L2_WRITE.LOCK.HIT",
463 "SampleAfterValue": "100000",
464 "BriefDescription": "All demand L2 lock RFOs that hit the cache"
465 },
466 {
467 "EventCode": "0x27",
468 "Counter": "0,1,2,3",
469 "UMask": "0x10",
470 "EventName": "L2_WRITE.LOCK.I_STATE",
471 "SampleAfterValue": "100000",
472 "BriefDescription": "L2 demand lock RFOs in I state (misses)"
473 },
474 {
475 "EventCode": "0x27",
476 "Counter": "0,1,2,3",
477 "UMask": "0x80",
478 "EventName": "L2_WRITE.LOCK.M_STATE",
479 "SampleAfterValue": "100000",
480 "BriefDescription": "L2 demand lock RFOs in M state"
481 },
482 {
483 "EventCode": "0x27",
484 "Counter": "0,1,2,3",
485 "UMask": "0xf0",
486 "EventName": "L2_WRITE.LOCK.MESI",
487 "SampleAfterValue": "100000",
488 "BriefDescription": "All demand L2 lock RFOs"
489 },
490 {
491 "EventCode": "0x27",
492 "Counter": "0,1,2,3",
493 "UMask": "0x20",
494 "EventName": "L2_WRITE.LOCK.S_STATE",
495 "SampleAfterValue": "100000",
496 "BriefDescription": "L2 demand lock RFOs in S state"
497 },
498 {
499 "EventCode": "0x27",
500 "Counter": "0,1,2,3",
501 "UMask": "0xe",
502 "EventName": "L2_WRITE.RFO.HIT",
503 "SampleAfterValue": "100000",
504 "BriefDescription": "All L2 demand store RFOs that hit the cache"
505 },
506 {
507 "EventCode": "0x27",
508 "Counter": "0,1,2,3",
509 "UMask": "0x1",
510 "EventName": "L2_WRITE.RFO.I_STATE",
511 "SampleAfterValue": "100000",
512 "BriefDescription": "L2 demand store RFOs in I state (misses)"
513 },
514 {
515 "EventCode": "0x27",
516 "Counter": "0,1,2,3",
517 "UMask": "0x8",
518 "EventName": "L2_WRITE.RFO.M_STATE",
519 "SampleAfterValue": "100000",
520 "BriefDescription": "L2 demand store RFOs in M state"
521 },
522 {
523 "EventCode": "0x27",
524 "Counter": "0,1,2,3",
525 "UMask": "0xf",
526 "EventName": "L2_WRITE.RFO.MESI",
527 "SampleAfterValue": "100000",
528 "BriefDescription": "All L2 demand store RFOs"
529 },
530 {
531 "EventCode": "0x27",
532 "Counter": "0,1,2,3",
533 "UMask": "0x2",
534 "EventName": "L2_WRITE.RFO.S_STATE",
535 "SampleAfterValue": "100000",
536 "BriefDescription": "L2 demand store RFOs in S state"
537 },
538 {
539 "EventCode": "0x2E",
540 "Counter": "0,1,2,3",
541 "UMask": "0x41",
542 "EventName": "LONGEST_LAT_CACHE.MISS",
543 "SampleAfterValue": "100000",
544 "BriefDescription": "Longest latency cache miss"
545 },
546 {
547 "EventCode": "0x2E",
548 "Counter": "0,1,2,3",
549 "UMask": "0x4f",
550 "EventName": "LONGEST_LAT_CACHE.REFERENCE",
551 "SampleAfterValue": "200000",
552 "BriefDescription": "Longest latency cache reference"
553 },
554 {
555 "PEBS": "1",
556 "EventCode": "0xB",
557 "Counter": "0,1,2,3",
558 "UMask": "0x1",
559 "EventName": "MEM_INST_RETIRED.LOADS",
560 "SampleAfterValue": "2000000",
561 "BriefDescription": "Instructions retired which contains a load (Precise Event)"
562 },
563 {
564 "PEBS": "1",
565 "EventCode": "0xB",
566 "Counter": "0,1,2,3",
567 "UMask": "0x2",
568 "EventName": "MEM_INST_RETIRED.STORES",
569 "SampleAfterValue": "2000000",
570 "BriefDescription": "Instructions retired which contains a store (Precise Event)"
571 },
572 {
573 "PEBS": "1",
574 "EventCode": "0xCB",
575 "Counter": "0,1,2,3",
576 "UMask": "0x40",
577 "EventName": "MEM_LOAD_RETIRED.HIT_LFB",
578 "SampleAfterValue": "200000",
579 "BriefDescription": "Retired loads that miss L1D and hit an previously allocated LFB (Precise Event)"
580 },
581 {
582 "PEBS": "1",
583 "EventCode": "0xCB",
584 "Counter": "0,1,2,3",
585 "UMask": "0x1",
586 "EventName": "MEM_LOAD_RETIRED.L1D_HIT",
587 "SampleAfterValue": "2000000",
588 "BriefDescription": "Retired loads that hit the L1 data cache (Precise Event)"
589 },
590 {
591 "PEBS": "1",
592 "EventCode": "0xCB",
593 "Counter": "0,1,2,3",
594 "UMask": "0x2",
595 "EventName": "MEM_LOAD_RETIRED.L2_HIT",
596 "SampleAfterValue": "200000",
597 "BriefDescription": "Retired loads that hit the L2 cache (Precise Event)"
598 },
599 {
600 "PEBS": "1",
601 "EventCode": "0xCB",
602 "Counter": "0,1,2,3",
603 "UMask": "0x10",
604 "EventName": "MEM_LOAD_RETIRED.LLC_MISS",
605 "SampleAfterValue": "10000",
606 "BriefDescription": "Retired loads that miss the LLC cache (Precise Event)"
607 },
608 {
609 "PEBS": "1",
610 "EventCode": "0xCB",
611 "Counter": "0,1,2,3",
612 "UMask": "0x4",
613 "EventName": "MEM_LOAD_RETIRED.LLC_UNSHARED_HIT",
614 "SampleAfterValue": "40000",
615 "BriefDescription": "Retired loads that hit valid versions in the LLC cache (Precise Event)"
616 },
617 {
618 "PEBS": "1",
619 "EventCode": "0xCB",
620 "Counter": "0,1,2,3",
621 "UMask": "0x8",
622 "EventName": "MEM_LOAD_RETIRED.OTHER_CORE_L2_HIT_HITM",
623 "SampleAfterValue": "40000",
624 "BriefDescription": "Retired loads that hit sibling core's L2 in modified or unmodified states (Precise Event)"
625 },
626 {
627 "PEBS": "1",
628 "EventCode": "0xF",
629 "Counter": "0,1,2,3",
630 "UMask": "0x2",
631 "EventName": "MEM_UNCORE_RETIRED.LOCAL_HITM",
632 "SampleAfterValue": "40000",
633 "BriefDescription": "Load instructions retired that HIT modified data in sibling core (Precise Event)"
634 },
635 {
636 "PEBS": "1",
637 "EventCode": "0xF",
638 "Counter": "0,1,2,3",
639 "UMask": "0x8",
640 "EventName": "MEM_UNCORE_RETIRED.LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
641 "SampleAfterValue": "20000",
642 "BriefDescription": "Load instructions retired local dram and remote cache HIT data sources (Precise Event)"
643 },
644 {
645 "PEBS": "1",
646 "EventCode": "0xF",
647 "Counter": "0,1,2,3",
648 "UMask": "0x20",
649 "EventName": "MEM_UNCORE_RETIRED.REMOTE_DRAM",
650 "SampleAfterValue": "10000",
651 "BriefDescription": "Load instructions retired remote DRAM and remote home-remote cache HITM (Precise Event)"
652 },
653 {
654 "PEBS": "1",
655 "EventCode": "0xF",
656 "Counter": "0,1,2,3",
657 "UMask": "0x80",
658 "EventName": "MEM_UNCORE_RETIRED.UNCACHEABLE",
659 "SampleAfterValue": "4000",
660 "BriefDescription": "Load instructions retired IO (Precise Event)"
661 },
662 {
663 "PEBS": "1",
664 "EventCode": "0xF",
665 "Counter": "0,1,2,3",
666 "UMask": "0x4",
667 "EventName": "MEM_UNCORE_RETIRED.REMOTE_HITM",
668 "SampleAfterValue": "40000",
669 "BriefDescription": "Retired loads that hit remote socket in modified state (Precise Event)"
670 },
671 {
672 "EventCode": "0xB0",
673 "Counter": "0,1,2,3",
674 "UMask": "0x80",
675 "EventName": "OFFCORE_REQUESTS.ANY",
676 "SampleAfterValue": "100000",
677 "BriefDescription": "All offcore requests"
678 },
679 {
680 "EventCode": "0xB0",
681 "Counter": "0,1,2,3",
682 "UMask": "0x8",
683 "EventName": "OFFCORE_REQUESTS.ANY.READ",
684 "SampleAfterValue": "100000",
685 "BriefDescription": "Offcore read requests"
686 },
687 {
688 "EventCode": "0xB0",
689 "Counter": "0,1,2,3",
690 "UMask": "0x10",
691 "EventName": "OFFCORE_REQUESTS.ANY.RFO",
692 "SampleAfterValue": "100000",
693 "BriefDescription": "Offcore RFO requests"
694 },
695 {
696 "EventCode": "0xB0",
697 "Counter": "0,1,2,3",
698 "UMask": "0x2",
699 "EventName": "OFFCORE_REQUESTS.DEMAND.READ_CODE",
700 "SampleAfterValue": "100000",
701 "BriefDescription": "Offcore demand code read requests"
702 },
703 {
704 "EventCode": "0xB0",
705 "Counter": "0,1,2,3",
706 "UMask": "0x1",
707 "EventName": "OFFCORE_REQUESTS.DEMAND.READ_DATA",
708 "SampleAfterValue": "100000",
709 "BriefDescription": "Offcore demand data read requests"
710 },
711 {
712 "EventCode": "0xB0",
713 "Counter": "0,1,2,3",
714 "UMask": "0x4",
715 "EventName": "OFFCORE_REQUESTS.DEMAND.RFO",
716 "SampleAfterValue": "100000",
717 "BriefDescription": "Offcore demand RFO requests"
718 },
719 {
720 "EventCode": "0xB0",
721 "Counter": "0,1,2,3",
722 "UMask": "0x40",
723 "EventName": "OFFCORE_REQUESTS.L1D_WRITEBACK",
724 "SampleAfterValue": "100000",
725 "BriefDescription": "Offcore L1 data cache writebacks"
726 },
727 {
728 "EventCode": "0x60",
729 "UMask": "0x8",
730 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ANY.READ",
731 "SampleAfterValue": "2000000",
732 "BriefDescription": "Outstanding offcore reads"
733 },
734 {
735 "EventCode": "0x60",
736 "UMask": "0x8",
737 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ANY.READ_NOT_EMPTY",
738 "SampleAfterValue": "2000000",
739 "BriefDescription": "Cycles offcore reads busy",
740 "CounterMask": "1"
741 },
742 {
743 "EventCode": "0x60",
744 "UMask": "0x2",
745 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_CODE",
746 "SampleAfterValue": "2000000",
747 "BriefDescription": "Outstanding offcore demand code reads"
748 },
749 {
750 "EventCode": "0x60",
751 "UMask": "0x2",
752 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_CODE_NOT_EMPTY",
753 "SampleAfterValue": "2000000",
754 "BriefDescription": "Cycles offcore demand code read busy",
755 "CounterMask": "1"
756 },
757 {
758 "EventCode": "0x60",
759 "UMask": "0x1",
760 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_DATA",
761 "SampleAfterValue": "2000000",
762 "BriefDescription": "Outstanding offcore demand data reads"
763 },
764 {
765 "EventCode": "0x60",
766 "UMask": "0x1",
767 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_DATA_NOT_EMPTY",
768 "SampleAfterValue": "2000000",
769 "BriefDescription": "Cycles offcore demand data read busy",
770 "CounterMask": "1"
771 },
772 {
773 "EventCode": "0x60",
774 "UMask": "0x4",
775 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.RFO",
776 "SampleAfterValue": "2000000",
777 "BriefDescription": "Outstanding offcore demand RFOs"
778 },
779 {
780 "EventCode": "0x60",
781 "UMask": "0x4",
782 "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND.RFO_NOT_EMPTY",
783 "SampleAfterValue": "2000000",
784 "BriefDescription": "Cycles offcore demand RFOs busy",
785 "CounterMask": "1"
786 },
787 {
788 "EventCode": "0xB2",
789 "Counter": "0,1,2,3",
790 "UMask": "0x1",
791 "EventName": "OFFCORE_REQUESTS_SQ_FULL",
792 "SampleAfterValue": "100000",
793 "BriefDescription": "Offcore requests blocked due to Super Queue full"
794 },
795 {
796 "EventCode": "0xF4",
797 "Counter": "0,1,2,3",
798 "UMask": "0x4",
799 "EventName": "SQ_MISC.LRU_HINTS",
800 "SampleAfterValue": "2000000",
801 "BriefDescription": "Super Queue LRU hints sent to LLC"
802 },
803 {
804 "EventCode": "0xF4",
805 "Counter": "0,1,2,3",
806 "UMask": "0x10",
807 "EventName": "SQ_MISC.SPLIT_LOCK",
808 "SampleAfterValue": "2000000",
809 "BriefDescription": "Super Queue lock splits across a cache line"
810 },
811 {
812 "EventCode": "0x6",
813 "Counter": "0,1,2,3",
814 "UMask": "0x4",
815 "EventName": "STORE_BLOCKS.AT_RET",
816 "SampleAfterValue": "200000",
817 "BriefDescription": "Loads delayed with at-Retirement block code"
818 },
819 {
820 "EventCode": "0x6",
821 "Counter": "0,1,2,3",
822 "UMask": "0x8",
823 "EventName": "STORE_BLOCKS.L1D_BLOCK",
824 "SampleAfterValue": "200000",
825 "BriefDescription": "Cacheable loads delayed with L1D block code"
826 },
827 {
828 "PEBS": "2",
829 "EventCode": "0xB",
830 "MSRValue": "0x0",
831 "Counter": "3",
832 "UMask": "0x10",
833 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_0",
834 "MSRIndex": "0x3F6",
835 "SampleAfterValue": "2000000",
836 "BriefDescription": "Memory instructions retired above 0 clocks (Precise Event)"
837 },
838 {
839 "PEBS": "2",
840 "EventCode": "0xB",
841 "MSRValue": "0x400",
842 "Counter": "3",
843 "UMask": "0x10",
844 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_1024",
845 "MSRIndex": "0x3F6",
846 "SampleAfterValue": "100",
847 "BriefDescription": "Memory instructions retired above 1024 clocks (Precise Event)"
848 },
849 {
850 "PEBS": "2",
851 "EventCode": "0xB",
852 "MSRValue": "0x80",
853 "Counter": "3",
854 "UMask": "0x10",
855 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_128",
856 "MSRIndex": "0x3F6",
857 "SampleAfterValue": "1000",
858 "BriefDescription": "Memory instructions retired above 128 clocks (Precise Event)"
859 },
860 {
861 "PEBS": "2",
862 "EventCode": "0xB",
863 "MSRValue": "0x10",
864 "Counter": "3",
865 "UMask": "0x10",
866 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16",
867 "MSRIndex": "0x3F6",
868 "SampleAfterValue": "10000",
869 "BriefDescription": "Memory instructions retired above 16 clocks (Precise Event)"
870 },
871 {
872 "PEBS": "2",
873 "EventCode": "0xB",
874 "MSRValue": "0x4000",
875 "Counter": "3",
876 "UMask": "0x10",
877 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_16384",
878 "MSRIndex": "0x3F6",
879 "SampleAfterValue": "5",
880 "BriefDescription": "Memory instructions retired above 16384 clocks (Precise Event)"
881 },
882 {
883 "PEBS": "2",
884 "EventCode": "0xB",
885 "MSRValue": "0x800",
886 "Counter": "3",
887 "UMask": "0x10",
888 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_2048",
889 "MSRIndex": "0x3F6",
890 "SampleAfterValue": "50",
891 "BriefDescription": "Memory instructions retired above 2048 clocks (Precise Event)"
892 },
893 {
894 "PEBS": "2",
895 "EventCode": "0xB",
896 "MSRValue": "0x100",
897 "Counter": "3",
898 "UMask": "0x10",
899 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_256",
900 "MSRIndex": "0x3F6",
901 "SampleAfterValue": "500",
902 "BriefDescription": "Memory instructions retired above 256 clocks (Precise Event)"
903 },
904 {
905 "PEBS": "2",
906 "EventCode": "0xB",
907 "MSRValue": "0x20",
908 "Counter": "3",
909 "UMask": "0x10",
910 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32",
911 "MSRIndex": "0x3F6",
912 "SampleAfterValue": "5000",
913 "BriefDescription": "Memory instructions retired above 32 clocks (Precise Event)"
914 },
915 {
916 "PEBS": "2",
917 "EventCode": "0xB",
918 "MSRValue": "0x8000",
919 "Counter": "3",
920 "UMask": "0x10",
921 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_32768",
922 "MSRIndex": "0x3F6",
923 "SampleAfterValue": "3",
924 "BriefDescription": "Memory instructions retired above 32768 clocks (Precise Event)"
925 },
926 {
927 "PEBS": "2",
928 "EventCode": "0xB",
929 "MSRValue": "0x4",
930 "Counter": "3",
931 "UMask": "0x10",
932 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4",
933 "MSRIndex": "0x3F6",
934 "SampleAfterValue": "50000",
935 "BriefDescription": "Memory instructions retired above 4 clocks (Precise Event)"
936 },
937 {
938 "PEBS": "2",
939 "EventCode": "0xB",
940 "MSRValue": "0x1000",
941 "Counter": "3",
942 "UMask": "0x10",
943 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_4096",
944 "MSRIndex": "0x3F6",
945 "SampleAfterValue": "20",
946 "BriefDescription": "Memory instructions retired above 4096 clocks (Precise Event)"
947 },
948 {
949 "PEBS": "2",
950 "EventCode": "0xB",
951 "MSRValue": "0x200",
952 "Counter": "3",
953 "UMask": "0x10",
954 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_512",
955 "MSRIndex": "0x3F6",
956 "SampleAfterValue": "200",
957 "BriefDescription": "Memory instructions retired above 512 clocks (Precise Event)"
958 },
959 {
960 "PEBS": "2",
961 "EventCode": "0xB",
962 "MSRValue": "0x40",
963 "Counter": "3",
964 "UMask": "0x10",
965 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_64",
966 "MSRIndex": "0x3F6",
967 "SampleAfterValue": "2000",
968 "BriefDescription": "Memory instructions retired above 64 clocks (Precise Event)"
969 },
970 {
971 "PEBS": "2",
972 "EventCode": "0xB",
973 "MSRValue": "0x8",
974 "Counter": "3",
975 "UMask": "0x10",
976 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8",
977 "MSRIndex": "0x3F6",
978 "SampleAfterValue": "20000",
979 "BriefDescription": "Memory instructions retired above 8 clocks (Precise Event)"
980 },
981 {
982 "PEBS": "2",
983 "EventCode": "0xB",
984 "MSRValue": "0x2000",
985 "Counter": "3",
986 "UMask": "0x10",
987 "EventName": "MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD_8192",
988 "MSRIndex": "0x3F6",
989 "SampleAfterValue": "10",
990 "BriefDescription": "Memory instructions retired above 8192 clocks (Precise Event)"
991 },
992 {
993 "EventCode": "0xB7",
994 "MSRValue": "0x7F11",
995 "Counter": "2",
996 "UMask": "0x1",
997 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_CACHE_DRAM",
998 "MSRIndex": "0x1A6",
999 "SampleAfterValue": "100000",
1000 "BriefDescription": "Offcore data reads satisfied by any cache or DRAM",
1001 "Offcore": "1"
1002 },
1003 {
1004 "EventCode": "0xB7",
1005 "MSRValue": "0xFF11",
1006 "Counter": "2",
1007 "UMask": "0x1",
1008 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LOCATION",
1009 "MSRIndex": "0x1A6",
1010 "SampleAfterValue": "100000",
1011 "BriefDescription": "All offcore data reads",
1012 "Offcore": "1"
1013 },
1014 {
1015 "EventCode": "0xB7",
1016 "MSRValue": "0x8011",
1017 "Counter": "2",
1018 "UMask": "0x1",
1019 "EventName": "OFFCORE_RESPONSE.ANY_DATA.IO_CSR_MMIO",
1020 "MSRIndex": "0x1A6",
1021 "SampleAfterValue": "100000",
1022 "BriefDescription": "Offcore data reads satisfied by the IO, CSR, MMIO unit",
1023 "Offcore": "1"
1024 },
1025 {
1026 "EventCode": "0xB7",
1027 "MSRValue": "0x111",
1028 "Counter": "2",
1029 "UMask": "0x1",
1030 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_NO_OTHER_CORE",
1031 "MSRIndex": "0x1A6",
1032 "SampleAfterValue": "100000",
1033 "BriefDescription": "Offcore data reads satisfied by the LLC and not found in a sibling core",
1034 "Offcore": "1"
1035 },
1036 {
1037 "EventCode": "0xB7",
1038 "MSRValue": "0x211",
1039 "Counter": "2",
1040 "UMask": "0x1",
1041 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HIT",
1042 "MSRIndex": "0x1A6",
1043 "SampleAfterValue": "100000",
1044 "BriefDescription": "Offcore data reads satisfied by the LLC and HIT in a sibling core",
1045 "Offcore": "1"
1046 },
1047 {
1048 "EventCode": "0xB7",
1049 "MSRValue": "0x411",
1050 "Counter": "2",
1051 "UMask": "0x1",
1052 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LLC_HIT_OTHER_CORE_HITM",
1053 "MSRIndex": "0x1A6",
1054 "SampleAfterValue": "100000",
1055 "BriefDescription": "Offcore data reads satisfied by the LLC and HITM in a sibling core",
1056 "Offcore": "1"
1057 },
1058 {
1059 "EventCode": "0xB7",
1060 "MSRValue": "0x711",
1061 "Counter": "2",
1062 "UMask": "0x1",
1063 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE",
1064 "MSRIndex": "0x1A6",
1065 "SampleAfterValue": "100000",
1066 "BriefDescription": "Offcore data reads satisfied by the LLC",
1067 "Offcore": "1"
1068 },
1069 {
1070 "EventCode": "0xB7",
1071 "MSRValue": "0x4711",
1072 "Counter": "2",
1073 "UMask": "0x1",
1074 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_CACHE_DRAM",
1075 "MSRIndex": "0x1A6",
1076 "SampleAfterValue": "100000",
1077 "BriefDescription": "Offcore data reads satisfied by the LLC or local DRAM",
1078 "Offcore": "1"
1079 },
1080 {
1081 "EventCode": "0xB7",
1082 "MSRValue": "0x1811",
1083 "Counter": "2",
1084 "UMask": "0x1",
1085 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE",
1086 "MSRIndex": "0x1A6",
1087 "SampleAfterValue": "100000",
1088 "BriefDescription": "Offcore data reads satisfied by a remote cache",
1089 "Offcore": "1"
1090 },
1091 {
1092 "EventCode": "0xB7",
1093 "MSRValue": "0x3811",
1094 "Counter": "2",
1095 "UMask": "0x1",
1096 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_DRAM",
1097 "MSRIndex": "0x1A6",
1098 "SampleAfterValue": "100000",
1099 "BriefDescription": "Offcore data reads satisfied by a remote cache or remote DRAM",
1100 "Offcore": "1"
1101 },
1102 {
1103 "EventCode": "0xB7",
1104 "MSRValue": "0x1011",
1105 "Counter": "2",
1106 "UMask": "0x1",
1107 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HIT",
1108 "MSRIndex": "0x1A6",
1109 "SampleAfterValue": "100000",
1110 "BriefDescription": "Offcore data reads that HIT in a remote cache",
1111 "Offcore": "1"
1112 },
1113 {
1114 "EventCode": "0xB7",
1115 "MSRValue": "0x811",
1116 "Counter": "2",
1117 "UMask": "0x1",
1118 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_CACHE_HITM",
1119 "MSRIndex": "0x1A6",
1120 "SampleAfterValue": "100000",
1121 "BriefDescription": "Offcore data reads that HITM in a remote cache",
1122 "Offcore": "1"
1123 },
1124 {
1125 "EventCode": "0xB7",
1126 "MSRValue": "0x7F44",
1127 "Counter": "2",
1128 "UMask": "0x1",
1129 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_CACHE_DRAM",
1130 "MSRIndex": "0x1A6",
1131 "SampleAfterValue": "100000",
1132 "BriefDescription": "Offcore code reads satisfied by any cache or DRAM",
1133 "Offcore": "1"
1134 },
1135 {
1136 "EventCode": "0xB7",
1137 "MSRValue": "0xFF44",
1138 "Counter": "2",
1139 "UMask": "0x1",
1140 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LOCATION",
1141 "MSRIndex": "0x1A6",
1142 "SampleAfterValue": "100000",
1143 "BriefDescription": "All offcore code reads",
1144 "Offcore": "1"
1145 },
1146 {
1147 "EventCode": "0xB7",
1148 "MSRValue": "0x8044",
1149 "Counter": "2",
1150 "UMask": "0x1",
1151 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.IO_CSR_MMIO",
1152 "MSRIndex": "0x1A6",
1153 "SampleAfterValue": "100000",
1154 "BriefDescription": "Offcore code reads satisfied by the IO, CSR, MMIO unit",
1155 "Offcore": "1"
1156 },
1157 {
1158 "EventCode": "0xB7",
1159 "MSRValue": "0x144",
1160 "Counter": "2",
1161 "UMask": "0x1",
1162 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_NO_OTHER_CORE",
1163 "MSRIndex": "0x1A6",
1164 "SampleAfterValue": "100000",
1165 "BriefDescription": "Offcore code reads satisfied by the LLC and not found in a sibling core",
1166 "Offcore": "1"
1167 },
1168 {
1169 "EventCode": "0xB7",
1170 "MSRValue": "0x244",
1171 "Counter": "2",
1172 "UMask": "0x1",
1173 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1174 "MSRIndex": "0x1A6",
1175 "SampleAfterValue": "100000",
1176 "BriefDescription": "Offcore code reads satisfied by the LLC and HIT in a sibling core",
1177 "Offcore": "1"
1178 },
1179 {
1180 "EventCode": "0xB7",
1181 "MSRValue": "0x444",
1182 "Counter": "2",
1183 "UMask": "0x1",
1184 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1185 "MSRIndex": "0x1A6",
1186 "SampleAfterValue": "100000",
1187 "BriefDescription": "Offcore code reads satisfied by the LLC and HITM in a sibling core",
1188 "Offcore": "1"
1189 },
1190 {
1191 "EventCode": "0xB7",
1192 "MSRValue": "0x744",
1193 "Counter": "2",
1194 "UMask": "0x1",
1195 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE",
1196 "MSRIndex": "0x1A6",
1197 "SampleAfterValue": "100000",
1198 "BriefDescription": "Offcore code reads satisfied by the LLC",
1199 "Offcore": "1"
1200 },
1201 {
1202 "EventCode": "0xB7",
1203 "MSRValue": "0x4744",
1204 "Counter": "2",
1205 "UMask": "0x1",
1206 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_CACHE_DRAM",
1207 "MSRIndex": "0x1A6",
1208 "SampleAfterValue": "100000",
1209 "BriefDescription": "Offcore code reads satisfied by the LLC or local DRAM",
1210 "Offcore": "1"
1211 },
1212 {
1213 "EventCode": "0xB7",
1214 "MSRValue": "0x1844",
1215 "Counter": "2",
1216 "UMask": "0x1",
1217 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE",
1218 "MSRIndex": "0x1A6",
1219 "SampleAfterValue": "100000",
1220 "BriefDescription": "Offcore code reads satisfied by a remote cache",
1221 "Offcore": "1"
1222 },
1223 {
1224 "EventCode": "0xB7",
1225 "MSRValue": "0x3844",
1226 "Counter": "2",
1227 "UMask": "0x1",
1228 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_DRAM",
1229 "MSRIndex": "0x1A6",
1230 "SampleAfterValue": "100000",
1231 "BriefDescription": "Offcore code reads satisfied by a remote cache or remote DRAM",
1232 "Offcore": "1"
1233 },
1234 {
1235 "EventCode": "0xB7",
1236 "MSRValue": "0x1044",
1237 "Counter": "2",
1238 "UMask": "0x1",
1239 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HIT",
1240 "MSRIndex": "0x1A6",
1241 "SampleAfterValue": "100000",
1242 "BriefDescription": "Offcore code reads that HIT in a remote cache",
1243 "Offcore": "1"
1244 },
1245 {
1246 "EventCode": "0xB7",
1247 "MSRValue": "0x844",
1248 "Counter": "2",
1249 "UMask": "0x1",
1250 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_CACHE_HITM",
1251 "MSRIndex": "0x1A6",
1252 "SampleAfterValue": "100000",
1253 "BriefDescription": "Offcore code reads that HITM in a remote cache",
1254 "Offcore": "1"
1255 },
1256 {
1257 "EventCode": "0xB7",
1258 "MSRValue": "0x7FFF",
1259 "Counter": "2",
1260 "UMask": "0x1",
1261 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_CACHE_DRAM",
1262 "MSRIndex": "0x1A6",
1263 "SampleAfterValue": "100000",
1264 "BriefDescription": "Offcore requests satisfied by any cache or DRAM",
1265 "Offcore": "1"
1266 },
1267 {
1268 "EventCode": "0xB7",
1269 "MSRValue": "0xFFFF",
1270 "Counter": "2",
1271 "UMask": "0x1",
1272 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LOCATION",
1273 "MSRIndex": "0x1A6",
1274 "SampleAfterValue": "100000",
1275 "BriefDescription": "All offcore requests",
1276 "Offcore": "1"
1277 },
1278 {
1279 "EventCode": "0xB7",
1280 "MSRValue": "0x80FF",
1281 "Counter": "2",
1282 "UMask": "0x1",
1283 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.IO_CSR_MMIO",
1284 "MSRIndex": "0x1A6",
1285 "SampleAfterValue": "100000",
1286 "BriefDescription": "Offcore requests satisfied by the IO, CSR, MMIO unit",
1287 "Offcore": "1"
1288 },
1289 {
1290 "EventCode": "0xB7",
1291 "MSRValue": "0x1FF",
1292 "Counter": "2",
1293 "UMask": "0x1",
1294 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_NO_OTHER_CORE",
1295 "MSRIndex": "0x1A6",
1296 "SampleAfterValue": "100000",
1297 "BriefDescription": "Offcore requests satisfied by the LLC and not found in a sibling core",
1298 "Offcore": "1"
1299 },
1300 {
1301 "EventCode": "0xB7",
1302 "MSRValue": "0x2FF",
1303 "Counter": "2",
1304 "UMask": "0x1",
1305 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HIT",
1306 "MSRIndex": "0x1A6",
1307 "SampleAfterValue": "100000",
1308 "BriefDescription": "Offcore requests satisfied by the LLC and HIT in a sibling core",
1309 "Offcore": "1"
1310 },
1311 {
1312 "EventCode": "0xB7",
1313 "MSRValue": "0x4FF",
1314 "Counter": "2",
1315 "UMask": "0x1",
1316 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LLC_HIT_OTHER_CORE_HITM",
1317 "MSRIndex": "0x1A6",
1318 "SampleAfterValue": "100000",
1319 "BriefDescription": "Offcore requests satisfied by the LLC and HITM in a sibling core",
1320 "Offcore": "1"
1321 },
1322 {
1323 "EventCode": "0xB7",
1324 "MSRValue": "0x7FF",
1325 "Counter": "2",
1326 "UMask": "0x1",
1327 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE",
1328 "MSRIndex": "0x1A6",
1329 "SampleAfterValue": "100000",
1330 "BriefDescription": "Offcore requests satisfied by the LLC",
1331 "Offcore": "1"
1332 },
1333 {
1334 "EventCode": "0xB7",
1335 "MSRValue": "0x47FF",
1336 "Counter": "2",
1337 "UMask": "0x1",
1338 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_CACHE_DRAM",
1339 "MSRIndex": "0x1A6",
1340 "SampleAfterValue": "100000",
1341 "BriefDescription": "Offcore requests satisfied by the LLC or local DRAM",
1342 "Offcore": "1"
1343 },
1344 {
1345 "EventCode": "0xB7",
1346 "MSRValue": "0x18FF",
1347 "Counter": "2",
1348 "UMask": "0x1",
1349 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE",
1350 "MSRIndex": "0x1A6",
1351 "SampleAfterValue": "100000",
1352 "BriefDescription": "Offcore requests satisfied by a remote cache",
1353 "Offcore": "1"
1354 },
1355 {
1356 "EventCode": "0xB7",
1357 "MSRValue": "0x38FF",
1358 "Counter": "2",
1359 "UMask": "0x1",
1360 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_DRAM",
1361 "MSRIndex": "0x1A6",
1362 "SampleAfterValue": "100000",
1363 "BriefDescription": "Offcore requests satisfied by a remote cache or remote DRAM",
1364 "Offcore": "1"
1365 },
1366 {
1367 "EventCode": "0xB7",
1368 "MSRValue": "0x10FF",
1369 "Counter": "2",
1370 "UMask": "0x1",
1371 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HIT",
1372 "MSRIndex": "0x1A6",
1373 "SampleAfterValue": "100000",
1374 "BriefDescription": "Offcore requests that HIT in a remote cache",
1375 "Offcore": "1"
1376 },
1377 {
1378 "EventCode": "0xB7",
1379 "MSRValue": "0x8FF",
1380 "Counter": "2",
1381 "UMask": "0x1",
1382 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_CACHE_HITM",
1383 "MSRIndex": "0x1A6",
1384 "SampleAfterValue": "100000",
1385 "BriefDescription": "Offcore requests that HITM in a remote cache",
1386 "Offcore": "1"
1387 },
1388 {
1389 "EventCode": "0xB7",
1390 "MSRValue": "0x7F22",
1391 "Counter": "2",
1392 "UMask": "0x1",
1393 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_CACHE_DRAM",
1394 "MSRIndex": "0x1A6",
1395 "SampleAfterValue": "100000",
1396 "BriefDescription": "Offcore RFO requests satisfied by any cache or DRAM",
1397 "Offcore": "1"
1398 },
1399 {
1400 "EventCode": "0xB7",
1401 "MSRValue": "0xFF22",
1402 "Counter": "2",
1403 "UMask": "0x1",
1404 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LOCATION",
1405 "MSRIndex": "0x1A6",
1406 "SampleAfterValue": "100000",
1407 "BriefDescription": "All offcore RFO requests",
1408 "Offcore": "1"
1409 },
1410 {
1411 "EventCode": "0xB7",
1412 "MSRValue": "0x8022",
1413 "Counter": "2",
1414 "UMask": "0x1",
1415 "EventName": "OFFCORE_RESPONSE.ANY_RFO.IO_CSR_MMIO",
1416 "MSRIndex": "0x1A6",
1417 "SampleAfterValue": "100000",
1418 "BriefDescription": "Offcore RFO requests satisfied by the IO, CSR, MMIO unit",
1419 "Offcore": "1"
1420 },
1421 {
1422 "EventCode": "0xB7",
1423 "MSRValue": "0x122",
1424 "Counter": "2",
1425 "UMask": "0x1",
1426 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_NO_OTHER_CORE",
1427 "MSRIndex": "0x1A6",
1428 "SampleAfterValue": "100000",
1429 "BriefDescription": "Offcore RFO requests satisfied by the LLC and not found in a sibling core",
1430 "Offcore": "1"
1431 },
1432 {
1433 "EventCode": "0xB7",
1434 "MSRValue": "0x222",
1435 "Counter": "2",
1436 "UMask": "0x1",
1437 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HIT",
1438 "MSRIndex": "0x1A6",
1439 "SampleAfterValue": "100000",
1440 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HIT in a sibling core",
1441 "Offcore": "1"
1442 },
1443 {
1444 "EventCode": "0xB7",
1445 "MSRValue": "0x422",
1446 "Counter": "2",
1447 "UMask": "0x1",
1448 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LLC_HIT_OTHER_CORE_HITM",
1449 "MSRIndex": "0x1A6",
1450 "SampleAfterValue": "100000",
1451 "BriefDescription": "Offcore RFO requests satisfied by the LLC and HITM in a sibling core",
1452 "Offcore": "1"
1453 },
1454 {
1455 "EventCode": "0xB7",
1456 "MSRValue": "0x722",
1457 "Counter": "2",
1458 "UMask": "0x1",
1459 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE",
1460 "MSRIndex": "0x1A6",
1461 "SampleAfterValue": "100000",
1462 "BriefDescription": "Offcore RFO requests satisfied by the LLC",
1463 "Offcore": "1"
1464 },
1465 {
1466 "EventCode": "0xB7",
1467 "MSRValue": "0x4722",
1468 "Counter": "2",
1469 "UMask": "0x1",
1470 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_CACHE_DRAM",
1471 "MSRIndex": "0x1A6",
1472 "SampleAfterValue": "100000",
1473 "BriefDescription": "Offcore RFO requests satisfied by the LLC or local DRAM",
1474 "Offcore": "1"
1475 },
1476 {
1477 "EventCode": "0xB7",
1478 "MSRValue": "0x1822",
1479 "Counter": "2",
1480 "UMask": "0x1",
1481 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE",
1482 "MSRIndex": "0x1A6",
1483 "SampleAfterValue": "100000",
1484 "BriefDescription": "Offcore RFO requests satisfied by a remote cache",
1485 "Offcore": "1"
1486 },
1487 {
1488 "EventCode": "0xB7",
1489 "MSRValue": "0x3822",
1490 "Counter": "2",
1491 "UMask": "0x1",
1492 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_DRAM",
1493 "MSRIndex": "0x1A6",
1494 "SampleAfterValue": "100000",
1495 "BriefDescription": "Offcore RFO requests satisfied by a remote cache or remote DRAM",
1496 "Offcore": "1"
1497 },
1498 {
1499 "EventCode": "0xB7",
1500 "MSRValue": "0x1022",
1501 "Counter": "2",
1502 "UMask": "0x1",
1503 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HIT",
1504 "MSRIndex": "0x1A6",
1505 "SampleAfterValue": "100000",
1506 "BriefDescription": "Offcore RFO requests that HIT in a remote cache",
1507 "Offcore": "1"
1508 },
1509 {
1510 "EventCode": "0xB7",
1511 "MSRValue": "0x822",
1512 "Counter": "2",
1513 "UMask": "0x1",
1514 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_CACHE_HITM",
1515 "MSRIndex": "0x1A6",
1516 "SampleAfterValue": "100000",
1517 "BriefDescription": "Offcore RFO requests that HITM in a remote cache",
1518 "Offcore": "1"
1519 },
1520 {
1521 "EventCode": "0xB7",
1522 "MSRValue": "0x7F08",
1523 "Counter": "2",
1524 "UMask": "0x1",
1525 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_CACHE_DRAM",
1526 "MSRIndex": "0x1A6",
1527 "SampleAfterValue": "100000",
1528 "BriefDescription": "Offcore writebacks to any cache or DRAM.",
1529 "Offcore": "1"
1530 },
1531 {
1532 "EventCode": "0xB7",
1533 "MSRValue": "0xFF08",
1534 "Counter": "2",
1535 "UMask": "0x1",
1536 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LOCATION",
1537 "MSRIndex": "0x1A6",
1538 "SampleAfterValue": "100000",
1539 "BriefDescription": "All offcore writebacks",
1540 "Offcore": "1"
1541 },
1542 {
1543 "EventCode": "0xB7",
1544 "MSRValue": "0x8008",
1545 "Counter": "2",
1546 "UMask": "0x1",
1547 "EventName": "OFFCORE_RESPONSE.COREWB.IO_CSR_MMIO",
1548 "MSRIndex": "0x1A6",
1549 "SampleAfterValue": "100000",
1550 "BriefDescription": "Offcore writebacks to the IO, CSR, MMIO unit.",
1551 "Offcore": "1"
1552 },
1553 {
1554 "EventCode": "0xB7",
1555 "MSRValue": "0x108",
1556 "Counter": "2",
1557 "UMask": "0x1",
1558 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_NO_OTHER_CORE",
1559 "MSRIndex": "0x1A6",
1560 "SampleAfterValue": "100000",
1561 "BriefDescription": "Offcore writebacks to the LLC and not found in a sibling core",
1562 "Offcore": "1"
1563 },
1564 {
1565 "EventCode": "0xB7",
1566 "MSRValue": "0x408",
1567 "Counter": "2",
1568 "UMask": "0x1",
1569 "EventName": "OFFCORE_RESPONSE.COREWB.LLC_HIT_OTHER_CORE_HITM",
1570 "MSRIndex": "0x1A6",
1571 "SampleAfterValue": "100000",
1572 "BriefDescription": "Offcore writebacks to the LLC and HITM in a sibling core",
1573 "Offcore": "1"
1574 },
1575 {
1576 "EventCode": "0xB7",
1577 "MSRValue": "0x708",
1578 "Counter": "2",
1579 "UMask": "0x1",
1580 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE",
1581 "MSRIndex": "0x1A6",
1582 "SampleAfterValue": "100000",
1583 "BriefDescription": "Offcore writebacks to the LLC",
1584 "Offcore": "1"
1585 },
1586 {
1587 "EventCode": "0xB7",
1588 "MSRValue": "0x4708",
1589 "Counter": "2",
1590 "UMask": "0x1",
1591 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_CACHE_DRAM",
1592 "MSRIndex": "0x1A6",
1593 "SampleAfterValue": "100000",
1594 "BriefDescription": "Offcore writebacks to the LLC or local DRAM",
1595 "Offcore": "1"
1596 },
1597 {
1598 "EventCode": "0xB7",
1599 "MSRValue": "0x1808",
1600 "Counter": "2",
1601 "UMask": "0x1",
1602 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE",
1603 "MSRIndex": "0x1A6",
1604 "SampleAfterValue": "100000",
1605 "BriefDescription": "Offcore writebacks to a remote cache",
1606 "Offcore": "1"
1607 },
1608 {
1609 "EventCode": "0xB7",
1610 "MSRValue": "0x3808",
1611 "Counter": "2",
1612 "UMask": "0x1",
1613 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_DRAM",
1614 "MSRIndex": "0x1A6",
1615 "SampleAfterValue": "100000",
1616 "BriefDescription": "Offcore writebacks to a remote cache or remote DRAM",
1617 "Offcore": "1"
1618 },
1619 {
1620 "EventCode": "0xB7",
1621 "MSRValue": "0x1008",
1622 "Counter": "2",
1623 "UMask": "0x1",
1624 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HIT",
1625 "MSRIndex": "0x1A6",
1626 "SampleAfterValue": "100000",
1627 "BriefDescription": "Offcore writebacks that HIT in a remote cache",
1628 "Offcore": "1"
1629 },
1630 {
1631 "EventCode": "0xB7",
1632 "MSRValue": "0x808",
1633 "Counter": "2",
1634 "UMask": "0x1",
1635 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_CACHE_HITM",
1636 "MSRIndex": "0x1A6",
1637 "SampleAfterValue": "100000",
1638 "BriefDescription": "Offcore writebacks that HITM in a remote cache",
1639 "Offcore": "1"
1640 },
1641 {
1642 "EventCode": "0xB7",
1643 "MSRValue": "0x7F77",
1644 "Counter": "2",
1645 "UMask": "0x1",
1646 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_CACHE_DRAM",
1647 "MSRIndex": "0x1A6",
1648 "SampleAfterValue": "100000",
1649 "BriefDescription": "Offcore code or data read requests satisfied by any cache or DRAM.",
1650 "Offcore": "1"
1651 },
1652 {
1653 "EventCode": "0xB7",
1654 "MSRValue": "0xFF77",
1655 "Counter": "2",
1656 "UMask": "0x1",
1657 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LOCATION",
1658 "MSRIndex": "0x1A6",
1659 "SampleAfterValue": "100000",
1660 "BriefDescription": "All offcore code or data read requests",
1661 "Offcore": "1"
1662 },
1663 {
1664 "EventCode": "0xB7",
1665 "MSRValue": "0x8077",
1666 "Counter": "2",
1667 "UMask": "0x1",
1668 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.IO_CSR_MMIO",
1669 "MSRIndex": "0x1A6",
1670 "SampleAfterValue": "100000",
1671 "BriefDescription": "Offcore code or data read requests satisfied by the IO, CSR, MMIO unit.",
1672 "Offcore": "1"
1673 },
1674 {
1675 "EventCode": "0xB7",
1676 "MSRValue": "0x177",
1677 "Counter": "2",
1678 "UMask": "0x1",
1679 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_NO_OTHER_CORE",
1680 "MSRIndex": "0x1A6",
1681 "SampleAfterValue": "100000",
1682 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and not found in a sibling core",
1683 "Offcore": "1"
1684 },
1685 {
1686 "EventCode": "0xB7",
1687 "MSRValue": "0x277",
1688 "Counter": "2",
1689 "UMask": "0x1",
1690 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HIT",
1691 "MSRIndex": "0x1A6",
1692 "SampleAfterValue": "100000",
1693 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HIT in a sibling core",
1694 "Offcore": "1"
1695 },
1696 {
1697 "EventCode": "0xB7",
1698 "MSRValue": "0x477",
1699 "Counter": "2",
1700 "UMask": "0x1",
1701 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LLC_HIT_OTHER_CORE_HITM",
1702 "MSRIndex": "0x1A6",
1703 "SampleAfterValue": "100000",
1704 "BriefDescription": "Offcore code or data read requests satisfied by the LLC and HITM in a sibling core",
1705 "Offcore": "1"
1706 },
1707 {
1708 "EventCode": "0xB7",
1709 "MSRValue": "0x777",
1710 "Counter": "2",
1711 "UMask": "0x1",
1712 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE",
1713 "MSRIndex": "0x1A6",
1714 "SampleAfterValue": "100000",
1715 "BriefDescription": "Offcore code or data read requests satisfied by the LLC",
1716 "Offcore": "1"
1717 },
1718 {
1719 "EventCode": "0xB7",
1720 "MSRValue": "0x4777",
1721 "Counter": "2",
1722 "UMask": "0x1",
1723 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_CACHE_DRAM",
1724 "MSRIndex": "0x1A6",
1725 "SampleAfterValue": "100000",
1726 "BriefDescription": "Offcore code or data read requests satisfied by the LLC or local DRAM",
1727 "Offcore": "1"
1728 },
1729 {
1730 "EventCode": "0xB7",
1731 "MSRValue": "0x1877",
1732 "Counter": "2",
1733 "UMask": "0x1",
1734 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE",
1735 "MSRIndex": "0x1A6",
1736 "SampleAfterValue": "100000",
1737 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache",
1738 "Offcore": "1"
1739 },
1740 {
1741 "EventCode": "0xB7",
1742 "MSRValue": "0x3877",
1743 "Counter": "2",
1744 "UMask": "0x1",
1745 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_DRAM",
1746 "MSRIndex": "0x1A6",
1747 "SampleAfterValue": "100000",
1748 "BriefDescription": "Offcore code or data read requests satisfied by a remote cache or remote DRAM",
1749 "Offcore": "1"
1750 },
1751 {
1752 "EventCode": "0xB7",
1753 "MSRValue": "0x1077",
1754 "Counter": "2",
1755 "UMask": "0x1",
1756 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HIT",
1757 "MSRIndex": "0x1A6",
1758 "SampleAfterValue": "100000",
1759 "BriefDescription": "Offcore code or data read requests that HIT in a remote cache",
1760 "Offcore": "1"
1761 },
1762 {
1763 "EventCode": "0xB7",
1764 "MSRValue": "0x877",
1765 "Counter": "2",
1766 "UMask": "0x1",
1767 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_CACHE_HITM",
1768 "MSRIndex": "0x1A6",
1769 "SampleAfterValue": "100000",
1770 "BriefDescription": "Offcore code or data read requests that HITM in a remote cache",
1771 "Offcore": "1"
1772 },
1773 {
1774 "EventCode": "0xB7",
1775 "MSRValue": "0x7F33",
1776 "Counter": "2",
1777 "UMask": "0x1",
1778 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_CACHE_DRAM",
1779 "MSRIndex": "0x1A6",
1780 "SampleAfterValue": "100000",
1781 "BriefDescription": "Offcore request = all data, response = any cache_dram",
1782 "Offcore": "1"
1783 },
1784 {
1785 "EventCode": "0xB7",
1786 "MSRValue": "0xFF33",
1787 "Counter": "2",
1788 "UMask": "0x1",
1789 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LOCATION",
1790 "MSRIndex": "0x1A6",
1791 "SampleAfterValue": "100000",
1792 "BriefDescription": "Offcore request = all data, response = any location",
1793 "Offcore": "1"
1794 },
1795 {
1796 "EventCode": "0xB7",
1797 "MSRValue": "0x8033",
1798 "Counter": "2",
1799 "UMask": "0x1",
1800 "EventName": "OFFCORE_RESPONSE.DATA_IN.IO_CSR_MMIO",
1801 "MSRIndex": "0x1A6",
1802 "SampleAfterValue": "100000",
1803 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the IO, CSR, MMIO unit",
1804 "Offcore": "1"
1805 },
1806 {
1807 "EventCode": "0xB7",
1808 "MSRValue": "0x133",
1809 "Counter": "2",
1810 "UMask": "0x1",
1811 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_NO_OTHER_CORE",
1812 "MSRIndex": "0x1A6",
1813 "SampleAfterValue": "100000",
1814 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the LLC and not found in a sibling core",
1815 "Offcore": "1"
1816 },
1817 {
1818 "EventCode": "0xB7",
1819 "MSRValue": "0x233",
1820 "Counter": "2",
1821 "UMask": "0x1",
1822 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HIT",
1823 "MSRIndex": "0x1A6",
1824 "SampleAfterValue": "100000",
1825 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HIT in a sibling core",
1826 "Offcore": "1"
1827 },
1828 {
1829 "EventCode": "0xB7",
1830 "MSRValue": "0x433",
1831 "Counter": "2",
1832 "UMask": "0x1",
1833 "EventName": "OFFCORE_RESPONSE.DATA_IN.LLC_HIT_OTHER_CORE_HITM",
1834 "MSRIndex": "0x1A6",
1835 "SampleAfterValue": "100000",
1836 "BriefDescription": "Offcore data reads, RFO's and prefetches satisfied by the LLC and HITM in a sibling core",
1837 "Offcore": "1"
1838 },
1839 {
1840 "EventCode": "0xB7",
1841 "MSRValue": "0x733",
1842 "Counter": "2",
1843 "UMask": "0x1",
1844 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE",
1845 "MSRIndex": "0x1A6",
1846 "SampleAfterValue": "100000",
1847 "BriefDescription": "Offcore request = all data, response = local cache",
1848 "Offcore": "1"
1849 },
1850 {
1851 "EventCode": "0xB7",
1852 "MSRValue": "0x4733",
1853 "Counter": "2",
1854 "UMask": "0x1",
1855 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_CACHE_DRAM",
1856 "MSRIndex": "0x1A6",
1857 "SampleAfterValue": "100000",
1858 "BriefDescription": "Offcore request = all data, response = local cache or dram",
1859 "Offcore": "1"
1860 },
1861 {
1862 "EventCode": "0xB7",
1863 "MSRValue": "0x1833",
1864 "Counter": "2",
1865 "UMask": "0x1",
1866 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE",
1867 "MSRIndex": "0x1A6",
1868 "SampleAfterValue": "100000",
1869 "BriefDescription": "Offcore request = all data, response = remote cache",
1870 "Offcore": "1"
1871 },
1872 {
1873 "EventCode": "0xB7",
1874 "MSRValue": "0x3833",
1875 "Counter": "2",
1876 "UMask": "0x1",
1877 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_DRAM",
1878 "MSRIndex": "0x1A6",
1879 "SampleAfterValue": "100000",
1880 "BriefDescription": "Offcore request = all data, response = remote cache or dram",
1881 "Offcore": "1"
1882 },
1883 {
1884 "EventCode": "0xB7",
1885 "MSRValue": "0x1033",
1886 "Counter": "2",
1887 "UMask": "0x1",
1888 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HIT",
1889 "MSRIndex": "0x1A6",
1890 "SampleAfterValue": "100000",
1891 "BriefDescription": "Offcore data reads, RFO's and prefetches that HIT in a remote cache ",
1892 "Offcore": "1"
1893 },
1894 {
1895 "EventCode": "0xB7",
1896 "MSRValue": "0x833",
1897 "Counter": "2",
1898 "UMask": "0x1",
1899 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_CACHE_HITM",
1900 "MSRIndex": "0x1A6",
1901 "SampleAfterValue": "100000",
1902 "BriefDescription": "Offcore data reads, RFO's and prefetches that HITM in a remote cache",
1903 "Offcore": "1"
1904 },
1905 {
1906 "EventCode": "0xB7",
1907 "MSRValue": "0x7F03",
1908 "Counter": "2",
1909 "UMask": "0x1",
1910 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_CACHE_DRAM",
1911 "MSRIndex": "0x1A6",
1912 "SampleAfterValue": "100000",
1913 "BriefDescription": "Offcore demand data requests satisfied by any cache or DRAM",
1914 "Offcore": "1"
1915 },
1916 {
1917 "EventCode": "0xB7",
1918 "MSRValue": "0xFF03",
1919 "Counter": "2",
1920 "UMask": "0x1",
1921 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LOCATION",
1922 "MSRIndex": "0x1A6",
1923 "SampleAfterValue": "100000",
1924 "BriefDescription": "All offcore demand data requests",
1925 "Offcore": "1"
1926 },
1927 {
1928 "EventCode": "0xB7",
1929 "MSRValue": "0x8003",
1930 "Counter": "2",
1931 "UMask": "0x1",
1932 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.IO_CSR_MMIO",
1933 "MSRIndex": "0x1A6",
1934 "SampleAfterValue": "100000",
1935 "BriefDescription": "Offcore demand data requests satisfied by the IO, CSR, MMIO unit.",
1936 "Offcore": "1"
1937 },
1938 {
1939 "EventCode": "0xB7",
1940 "MSRValue": "0x103",
1941 "Counter": "2",
1942 "UMask": "0x1",
1943 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_NO_OTHER_CORE",
1944 "MSRIndex": "0x1A6",
1945 "SampleAfterValue": "100000",
1946 "BriefDescription": "Offcore demand data requests satisfied by the LLC and not found in a sibling core",
1947 "Offcore": "1"
1948 },
1949 {
1950 "EventCode": "0xB7",
1951 "MSRValue": "0x203",
1952 "Counter": "2",
1953 "UMask": "0x1",
1954 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HIT",
1955 "MSRIndex": "0x1A6",
1956 "SampleAfterValue": "100000",
1957 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HIT in a sibling core",
1958 "Offcore": "1"
1959 },
1960 {
1961 "EventCode": "0xB7",
1962 "MSRValue": "0x403",
1963 "Counter": "2",
1964 "UMask": "0x1",
1965 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LLC_HIT_OTHER_CORE_HITM",
1966 "MSRIndex": "0x1A6",
1967 "SampleAfterValue": "100000",
1968 "BriefDescription": "Offcore demand data requests satisfied by the LLC and HITM in a sibling core",
1969 "Offcore": "1"
1970 },
1971 {
1972 "EventCode": "0xB7",
1973 "MSRValue": "0x703",
1974 "Counter": "2",
1975 "UMask": "0x1",
1976 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE",
1977 "MSRIndex": "0x1A6",
1978 "SampleAfterValue": "100000",
1979 "BriefDescription": "Offcore demand data requests satisfied by the LLC",
1980 "Offcore": "1"
1981 },
1982 {
1983 "EventCode": "0xB7",
1984 "MSRValue": "0x4703",
1985 "Counter": "2",
1986 "UMask": "0x1",
1987 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_CACHE_DRAM",
1988 "MSRIndex": "0x1A6",
1989 "SampleAfterValue": "100000",
1990 "BriefDescription": "Offcore demand data requests satisfied by the LLC or local DRAM",
1991 "Offcore": "1"
1992 },
1993 {
1994 "EventCode": "0xB7",
1995 "MSRValue": "0x1803",
1996 "Counter": "2",
1997 "UMask": "0x1",
1998 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE",
1999 "MSRIndex": "0x1A6",
2000 "SampleAfterValue": "100000",
2001 "BriefDescription": "Offcore demand data requests satisfied by a remote cache",
2002 "Offcore": "1"
2003 },
2004 {
2005 "EventCode": "0xB7",
2006 "MSRValue": "0x3803",
2007 "Counter": "2",
2008 "UMask": "0x1",
2009 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_DRAM",
2010 "MSRIndex": "0x1A6",
2011 "SampleAfterValue": "100000",
2012 "BriefDescription": "Offcore demand data requests satisfied by a remote cache or remote DRAM",
2013 "Offcore": "1"
2014 },
2015 {
2016 "EventCode": "0xB7",
2017 "MSRValue": "0x1003",
2018 "Counter": "2",
2019 "UMask": "0x1",
2020 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HIT",
2021 "MSRIndex": "0x1A6",
2022 "SampleAfterValue": "100000",
2023 "BriefDescription": "Offcore demand data requests that HIT in a remote cache",
2024 "Offcore": "1"
2025 },
2026 {
2027 "EventCode": "0xB7",
2028 "MSRValue": "0x803",
2029 "Counter": "2",
2030 "UMask": "0x1",
2031 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_CACHE_HITM",
2032 "MSRIndex": "0x1A6",
2033 "SampleAfterValue": "100000",
2034 "BriefDescription": "Offcore demand data requests that HITM in a remote cache",
2035 "Offcore": "1"
2036 },
2037 {
2038 "EventCode": "0xB7",
2039 "MSRValue": "0x7F01",
2040 "Counter": "2",
2041 "UMask": "0x1",
2042 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_CACHE_DRAM",
2043 "MSRIndex": "0x1A6",
2044 "SampleAfterValue": "100000",
2045 "BriefDescription": "Offcore demand data reads satisfied by any cache or DRAM.",
2046 "Offcore": "1"
2047 },
2048 {
2049 "EventCode": "0xB7",
2050 "MSRValue": "0xFF01",
2051 "Counter": "2",
2052 "UMask": "0x1",
2053 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LOCATION",
2054 "MSRIndex": "0x1A6",
2055 "SampleAfterValue": "100000",
2056 "BriefDescription": "All offcore demand data reads",
2057 "Offcore": "1"
2058 },
2059 {
2060 "EventCode": "0xB7",
2061 "MSRValue": "0x8001",
2062 "Counter": "2",
2063 "UMask": "0x1",
2064 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.IO_CSR_MMIO",
2065 "MSRIndex": "0x1A6",
2066 "SampleAfterValue": "100000",
2067 "BriefDescription": "Offcore demand data reads satisfied by the IO, CSR, MMIO unit",
2068 "Offcore": "1"
2069 },
2070 {
2071 "EventCode": "0xB7",
2072 "MSRValue": "0x101",
2073 "Counter": "2",
2074 "UMask": "0x1",
2075 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2076 "MSRIndex": "0x1A6",
2077 "SampleAfterValue": "100000",
2078 "BriefDescription": "Offcore demand data reads satisfied by the LLC and not found in a sibling core",
2079 "Offcore": "1"
2080 },
2081 {
2082 "EventCode": "0xB7",
2083 "MSRValue": "0x201",
2084 "Counter": "2",
2085 "UMask": "0x1",
2086 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2087 "MSRIndex": "0x1A6",
2088 "SampleAfterValue": "100000",
2089 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HIT in a sibling core",
2090 "Offcore": "1"
2091 },
2092 {
2093 "EventCode": "0xB7",
2094 "MSRValue": "0x401",
2095 "Counter": "2",
2096 "UMask": "0x1",
2097 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2098 "MSRIndex": "0x1A6",
2099 "SampleAfterValue": "100000",
2100 "BriefDescription": "Offcore demand data reads satisfied by the LLC and HITM in a sibling core",
2101 "Offcore": "1"
2102 },
2103 {
2104 "EventCode": "0xB7",
2105 "MSRValue": "0x701",
2106 "Counter": "2",
2107 "UMask": "0x1",
2108 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE",
2109 "MSRIndex": "0x1A6",
2110 "SampleAfterValue": "100000",
2111 "BriefDescription": "Offcore demand data reads satisfied by the LLC",
2112 "Offcore": "1"
2113 },
2114 {
2115 "EventCode": "0xB7",
2116 "MSRValue": "0x4701",
2117 "Counter": "2",
2118 "UMask": "0x1",
2119 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_CACHE_DRAM",
2120 "MSRIndex": "0x1A6",
2121 "SampleAfterValue": "100000",
2122 "BriefDescription": "Offcore demand data reads satisfied by the LLC or local DRAM",
2123 "Offcore": "1"
2124 },
2125 {
2126 "EventCode": "0xB7",
2127 "MSRValue": "0x1801",
2128 "Counter": "2",
2129 "UMask": "0x1",
2130 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE",
2131 "MSRIndex": "0x1A6",
2132 "SampleAfterValue": "100000",
2133 "BriefDescription": "Offcore demand data reads satisfied by a remote cache",
2134 "Offcore": "1"
2135 },
2136 {
2137 "EventCode": "0xB7",
2138 "MSRValue": "0x3801",
2139 "Counter": "2",
2140 "UMask": "0x1",
2141 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_DRAM",
2142 "MSRIndex": "0x1A6",
2143 "SampleAfterValue": "100000",
2144 "BriefDescription": "Offcore demand data reads satisfied by a remote cache or remote DRAM",
2145 "Offcore": "1"
2146 },
2147 {
2148 "EventCode": "0xB7",
2149 "MSRValue": "0x1001",
2150 "Counter": "2",
2151 "UMask": "0x1",
2152 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HIT",
2153 "MSRIndex": "0x1A6",
2154 "SampleAfterValue": "100000",
2155 "BriefDescription": "Offcore demand data reads that HIT in a remote cache",
2156 "Offcore": "1"
2157 },
2158 {
2159 "EventCode": "0xB7",
2160 "MSRValue": "0x801",
2161 "Counter": "2",
2162 "UMask": "0x1",
2163 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_CACHE_HITM",
2164 "MSRIndex": "0x1A6",
2165 "SampleAfterValue": "100000",
2166 "BriefDescription": "Offcore demand data reads that HITM in a remote cache",
2167 "Offcore": "1"
2168 },
2169 {
2170 "EventCode": "0xB7",
2171 "MSRValue": "0x7F04",
2172 "Counter": "2",
2173 "UMask": "0x1",
2174 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_CACHE_DRAM",
2175 "MSRIndex": "0x1A6",
2176 "SampleAfterValue": "100000",
2177 "BriefDescription": "Offcore demand code reads satisfied by any cache or DRAM.",
2178 "Offcore": "1"
2179 },
2180 {
2181 "EventCode": "0xB7",
2182 "MSRValue": "0xFF04",
2183 "Counter": "2",
2184 "UMask": "0x1",
2185 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LOCATION",
2186 "MSRIndex": "0x1A6",
2187 "SampleAfterValue": "100000",
2188 "BriefDescription": "All offcore demand code reads",
2189 "Offcore": "1"
2190 },
2191 {
2192 "EventCode": "0xB7",
2193 "MSRValue": "0x8004",
2194 "Counter": "2",
2195 "UMask": "0x1",
2196 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.IO_CSR_MMIO",
2197 "MSRIndex": "0x1A6",
2198 "SampleAfterValue": "100000",
2199 "BriefDescription": "Offcore demand code reads satisfied by the IO, CSR, MMIO unit",
2200 "Offcore": "1"
2201 },
2202 {
2203 "EventCode": "0xB7",
2204 "MSRValue": "0x104",
2205 "Counter": "2",
2206 "UMask": "0x1",
2207 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_NO_OTHER_CORE",
2208 "MSRIndex": "0x1A6",
2209 "SampleAfterValue": "100000",
2210 "BriefDescription": "Offcore demand code reads satisfied by the LLC and not found in a sibling core",
2211 "Offcore": "1"
2212 },
2213 {
2214 "EventCode": "0xB7",
2215 "MSRValue": "0x204",
2216 "Counter": "2",
2217 "UMask": "0x1",
2218 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2219 "MSRIndex": "0x1A6",
2220 "SampleAfterValue": "100000",
2221 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HIT in a sibling core",
2222 "Offcore": "1"
2223 },
2224 {
2225 "EventCode": "0xB7",
2226 "MSRValue": "0x404",
2227 "Counter": "2",
2228 "UMask": "0x1",
2229 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2230 "MSRIndex": "0x1A6",
2231 "SampleAfterValue": "100000",
2232 "BriefDescription": "Offcore demand code reads satisfied by the LLC and HITM in a sibling core",
2233 "Offcore": "1"
2234 },
2235 {
2236 "EventCode": "0xB7",
2237 "MSRValue": "0x704",
2238 "Counter": "2",
2239 "UMask": "0x1",
2240 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE",
2241 "MSRIndex": "0x1A6",
2242 "SampleAfterValue": "100000",
2243 "BriefDescription": "Offcore demand code reads satisfied by the LLC",
2244 "Offcore": "1"
2245 },
2246 {
2247 "EventCode": "0xB7",
2248 "MSRValue": "0x4704",
2249 "Counter": "2",
2250 "UMask": "0x1",
2251 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_CACHE_DRAM",
2252 "MSRIndex": "0x1A6",
2253 "SampleAfterValue": "100000",
2254 "BriefDescription": "Offcore demand code reads satisfied by the LLC or local DRAM",
2255 "Offcore": "1"
2256 },
2257 {
2258 "EventCode": "0xB7",
2259 "MSRValue": "0x1804",
2260 "Counter": "2",
2261 "UMask": "0x1",
2262 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE",
2263 "MSRIndex": "0x1A6",
2264 "SampleAfterValue": "100000",
2265 "BriefDescription": "Offcore demand code reads satisfied by a remote cache",
2266 "Offcore": "1"
2267 },
2268 {
2269 "EventCode": "0xB7",
2270 "MSRValue": "0x3804",
2271 "Counter": "2",
2272 "UMask": "0x1",
2273 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_DRAM",
2274 "MSRIndex": "0x1A6",
2275 "SampleAfterValue": "100000",
2276 "BriefDescription": "Offcore demand code reads satisfied by a remote cache or remote DRAM",
2277 "Offcore": "1"
2278 },
2279 {
2280 "EventCode": "0xB7",
2281 "MSRValue": "0x1004",
2282 "Counter": "2",
2283 "UMask": "0x1",
2284 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HIT",
2285 "MSRIndex": "0x1A6",
2286 "SampleAfterValue": "100000",
2287 "BriefDescription": "Offcore demand code reads that HIT in a remote cache",
2288 "Offcore": "1"
2289 },
2290 {
2291 "EventCode": "0xB7",
2292 "MSRValue": "0x804",
2293 "Counter": "2",
2294 "UMask": "0x1",
2295 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_CACHE_HITM",
2296 "MSRIndex": "0x1A6",
2297 "SampleAfterValue": "100000",
2298 "BriefDescription": "Offcore demand code reads that HITM in a remote cache",
2299 "Offcore": "1"
2300 },
2301 {
2302 "EventCode": "0xB7",
2303 "MSRValue": "0x7F02",
2304 "Counter": "2",
2305 "UMask": "0x1",
2306 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_CACHE_DRAM",
2307 "MSRIndex": "0x1A6",
2308 "SampleAfterValue": "100000",
2309 "BriefDescription": "Offcore demand RFO requests satisfied by any cache or DRAM.",
2310 "Offcore": "1"
2311 },
2312 {
2313 "EventCode": "0xB7",
2314 "MSRValue": "0xFF02",
2315 "Counter": "2",
2316 "UMask": "0x1",
2317 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LOCATION",
2318 "MSRIndex": "0x1A6",
2319 "SampleAfterValue": "100000",
2320 "BriefDescription": "All offcore demand RFO requests",
2321 "Offcore": "1"
2322 },
2323 {
2324 "EventCode": "0xB7",
2325 "MSRValue": "0x8002",
2326 "Counter": "2",
2327 "UMask": "0x1",
2328 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.IO_CSR_MMIO",
2329 "MSRIndex": "0x1A6",
2330 "SampleAfterValue": "100000",
2331 "BriefDescription": "Offcore demand RFO requests satisfied by the IO, CSR, MMIO unit",
2332 "Offcore": "1"
2333 },
2334 {
2335 "EventCode": "0xB7",
2336 "MSRValue": "0x102",
2337 "Counter": "2",
2338 "UMask": "0x1",
2339 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_NO_OTHER_CORE",
2340 "MSRIndex": "0x1A6",
2341 "SampleAfterValue": "100000",
2342 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and not found in a sibling core",
2343 "Offcore": "1"
2344 },
2345 {
2346 "EventCode": "0xB7",
2347 "MSRValue": "0x202",
2348 "Counter": "2",
2349 "UMask": "0x1",
2350 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HIT",
2351 "MSRIndex": "0x1A6",
2352 "SampleAfterValue": "100000",
2353 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HIT in a sibling core",
2354 "Offcore": "1"
2355 },
2356 {
2357 "EventCode": "0xB7",
2358 "MSRValue": "0x402",
2359 "Counter": "2",
2360 "UMask": "0x1",
2361 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT_OTHER_CORE_HITM",
2362 "MSRIndex": "0x1A6",
2363 "SampleAfterValue": "100000",
2364 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC and HITM in a sibling core",
2365 "Offcore": "1"
2366 },
2367 {
2368 "EventCode": "0xB7",
2369 "MSRValue": "0x702",
2370 "Counter": "2",
2371 "UMask": "0x1",
2372 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE",
2373 "MSRIndex": "0x1A6",
2374 "SampleAfterValue": "100000",
2375 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC",
2376 "Offcore": "1"
2377 },
2378 {
2379 "EventCode": "0xB7",
2380 "MSRValue": "0x4702",
2381 "Counter": "2",
2382 "UMask": "0x1",
2383 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_CACHE_DRAM",
2384 "MSRIndex": "0x1A6",
2385 "SampleAfterValue": "100000",
2386 "BriefDescription": "Offcore demand RFO requests satisfied by the LLC or local DRAM",
2387 "Offcore": "1"
2388 },
2389 {
2390 "EventCode": "0xB7",
2391 "MSRValue": "0x1802",
2392 "Counter": "2",
2393 "UMask": "0x1",
2394 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE",
2395 "MSRIndex": "0x1A6",
2396 "SampleAfterValue": "100000",
2397 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache",
2398 "Offcore": "1"
2399 },
2400 {
2401 "EventCode": "0xB7",
2402 "MSRValue": "0x3802",
2403 "Counter": "2",
2404 "UMask": "0x1",
2405 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_DRAM",
2406 "MSRIndex": "0x1A6",
2407 "SampleAfterValue": "100000",
2408 "BriefDescription": "Offcore demand RFO requests satisfied by a remote cache or remote DRAM",
2409 "Offcore": "1"
2410 },
2411 {
2412 "EventCode": "0xB7",
2413 "MSRValue": "0x1002",
2414 "Counter": "2",
2415 "UMask": "0x1",
2416 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HIT",
2417 "MSRIndex": "0x1A6",
2418 "SampleAfterValue": "100000",
2419 "BriefDescription": "Offcore demand RFO requests that HIT in a remote cache",
2420 "Offcore": "1"
2421 },
2422 {
2423 "EventCode": "0xB7",
2424 "MSRValue": "0x802",
2425 "Counter": "2",
2426 "UMask": "0x1",
2427 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_CACHE_HITM",
2428 "MSRIndex": "0x1A6",
2429 "SampleAfterValue": "100000",
2430 "BriefDescription": "Offcore demand RFO requests that HITM in a remote cache",
2431 "Offcore": "1"
2432 },
2433 {
2434 "EventCode": "0xB7",
2435 "MSRValue": "0x7F80",
2436 "Counter": "2",
2437 "UMask": "0x1",
2438 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_CACHE_DRAM",
2439 "MSRIndex": "0x1A6",
2440 "SampleAfterValue": "100000",
2441 "BriefDescription": "Offcore other requests satisfied by any cache or DRAM.",
2442 "Offcore": "1"
2443 },
2444 {
2445 "EventCode": "0xB7",
2446 "MSRValue": "0xFF80",
2447 "Counter": "2",
2448 "UMask": "0x1",
2449 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LOCATION",
2450 "MSRIndex": "0x1A6",
2451 "SampleAfterValue": "100000",
2452 "BriefDescription": "All offcore other requests",
2453 "Offcore": "1"
2454 },
2455 {
2456 "EventCode": "0xB7",
2457 "MSRValue": "0x8080",
2458 "Counter": "2",
2459 "UMask": "0x1",
2460 "EventName": "OFFCORE_RESPONSE.OTHER.IO_CSR_MMIO",
2461 "MSRIndex": "0x1A6",
2462 "SampleAfterValue": "100000",
2463 "BriefDescription": "Offcore other requests satisfied by the IO, CSR, MMIO unit",
2464 "Offcore": "1"
2465 },
2466 {
2467 "EventCode": "0xB7",
2468 "MSRValue": "0x180",
2469 "Counter": "2",
2470 "UMask": "0x1",
2471 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_NO_OTHER_CORE",
2472 "MSRIndex": "0x1A6",
2473 "SampleAfterValue": "100000",
2474 "BriefDescription": "Offcore other requests satisfied by the LLC and not found in a sibling core",
2475 "Offcore": "1"
2476 },
2477 {
2478 "EventCode": "0xB7",
2479 "MSRValue": "0x280",
2480 "Counter": "2",
2481 "UMask": "0x1",
2482 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HIT",
2483 "MSRIndex": "0x1A6",
2484 "SampleAfterValue": "100000",
2485 "BriefDescription": "Offcore other requests satisfied by the LLC and HIT in a sibling core",
2486 "Offcore": "1"
2487 },
2488 {
2489 "EventCode": "0xB7",
2490 "MSRValue": "0x480",
2491 "Counter": "2",
2492 "UMask": "0x1",
2493 "EventName": "OFFCORE_RESPONSE.OTHER.LLC_HIT_OTHER_CORE_HITM",
2494 "MSRIndex": "0x1A6",
2495 "SampleAfterValue": "100000",
2496 "BriefDescription": "Offcore other requests satisfied by the LLC and HITM in a sibling core",
2497 "Offcore": "1"
2498 },
2499 {
2500 "EventCode": "0xB7",
2501 "MSRValue": "0x780",
2502 "Counter": "2",
2503 "UMask": "0x1",
2504 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE",
2505 "MSRIndex": "0x1A6",
2506 "SampleAfterValue": "100000",
2507 "BriefDescription": "Offcore other requests satisfied by the LLC",
2508 "Offcore": "1"
2509 },
2510 {
2511 "EventCode": "0xB7",
2512 "MSRValue": "0x4780",
2513 "Counter": "2",
2514 "UMask": "0x1",
2515 "EventName": "OFFCORE_RESPONSE.OTHER.LOCAL_CACHE_DRAM",
2516 "MSRIndex": "0x1A6",
2517 "SampleAfterValue": "100000",
2518 "BriefDescription": "Offcore other requests satisfied by the LLC or local DRAM",
2519 "Offcore": "1"
2520 },
2521 {
2522 "EventCode": "0xB7",
2523 "MSRValue": "0x1880",
2524 "Counter": "2",
2525 "UMask": "0x1",
2526 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE",
2527 "MSRIndex": "0x1A6",
2528 "SampleAfterValue": "100000",
2529 "BriefDescription": "Offcore other requests satisfied by a remote cache",
2530 "Offcore": "1"
2531 },
2532 {
2533 "EventCode": "0xB7",
2534 "MSRValue": "0x3880",
2535 "Counter": "2",
2536 "UMask": "0x1",
2537 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_DRAM",
2538 "MSRIndex": "0x1A6",
2539 "SampleAfterValue": "100000",
2540 "BriefDescription": "Offcore other requests satisfied by a remote cache or remote DRAM",
2541 "Offcore": "1"
2542 },
2543 {
2544 "EventCode": "0xB7",
2545 "MSRValue": "0x1080",
2546 "Counter": "2",
2547 "UMask": "0x1",
2548 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HIT",
2549 "MSRIndex": "0x1A6",
2550 "SampleAfterValue": "100000",
2551 "BriefDescription": "Offcore other requests that HIT in a remote cache",
2552 "Offcore": "1"
2553 },
2554 {
2555 "EventCode": "0xB7",
2556 "MSRValue": "0x880",
2557 "Counter": "2",
2558 "UMask": "0x1",
2559 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_CACHE_HITM",
2560 "MSRIndex": "0x1A6",
2561 "SampleAfterValue": "100000",
2562 "BriefDescription": "Offcore other requests that HITM in a remote cache",
2563 "Offcore": "1"
2564 },
2565 {
2566 "EventCode": "0xB7",
2567 "MSRValue": "0x7F30",
2568 "Counter": "2",
2569 "UMask": "0x1",
2570 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_CACHE_DRAM",
2571 "MSRIndex": "0x1A6",
2572 "SampleAfterValue": "100000",
2573 "BriefDescription": "Offcore prefetch data requests satisfied by any cache or DRAM",
2574 "Offcore": "1"
2575 },
2576 {
2577 "EventCode": "0xB7",
2578 "MSRValue": "0xFF30",
2579 "Counter": "2",
2580 "UMask": "0x1",
2581 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LOCATION",
2582 "MSRIndex": "0x1A6",
2583 "SampleAfterValue": "100000",
2584 "BriefDescription": "All offcore prefetch data requests",
2585 "Offcore": "1"
2586 },
2587 {
2588 "EventCode": "0xB7",
2589 "MSRValue": "0x8030",
2590 "Counter": "2",
2591 "UMask": "0x1",
2592 "EventName": "OFFCORE_RESPONSE.PF_DATA.IO_CSR_MMIO",
2593 "MSRIndex": "0x1A6",
2594 "SampleAfterValue": "100000",
2595 "BriefDescription": "Offcore prefetch data requests satisfied by the IO, CSR, MMIO unit.",
2596 "Offcore": "1"
2597 },
2598 {
2599 "EventCode": "0xB7",
2600 "MSRValue": "0x130",
2601 "Counter": "2",
2602 "UMask": "0x1",
2603 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_NO_OTHER_CORE",
2604 "MSRIndex": "0x1A6",
2605 "SampleAfterValue": "100000",
2606 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and not found in a sibling core",
2607 "Offcore": "1"
2608 },
2609 {
2610 "EventCode": "0xB7",
2611 "MSRValue": "0x230",
2612 "Counter": "2",
2613 "UMask": "0x1",
2614 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HIT",
2615 "MSRIndex": "0x1A6",
2616 "SampleAfterValue": "100000",
2617 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HIT in a sibling core",
2618 "Offcore": "1"
2619 },
2620 {
2621 "EventCode": "0xB7",
2622 "MSRValue": "0x430",
2623 "Counter": "2",
2624 "UMask": "0x1",
2625 "EventName": "OFFCORE_RESPONSE.PF_DATA.LLC_HIT_OTHER_CORE_HITM",
2626 "MSRIndex": "0x1A6",
2627 "SampleAfterValue": "100000",
2628 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC and HITM in a sibling core",
2629 "Offcore": "1"
2630 },
2631 {
2632 "EventCode": "0xB7",
2633 "MSRValue": "0x730",
2634 "Counter": "2",
2635 "UMask": "0x1",
2636 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE",
2637 "MSRIndex": "0x1A6",
2638 "SampleAfterValue": "100000",
2639 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC",
2640 "Offcore": "1"
2641 },
2642 {
2643 "EventCode": "0xB7",
2644 "MSRValue": "0x4730",
2645 "Counter": "2",
2646 "UMask": "0x1",
2647 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_CACHE_DRAM",
2648 "MSRIndex": "0x1A6",
2649 "SampleAfterValue": "100000",
2650 "BriefDescription": "Offcore prefetch data requests satisfied by the LLC or local DRAM",
2651 "Offcore": "1"
2652 },
2653 {
2654 "EventCode": "0xB7",
2655 "MSRValue": "0x1830",
2656 "Counter": "2",
2657 "UMask": "0x1",
2658 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE",
2659 "MSRIndex": "0x1A6",
2660 "SampleAfterValue": "100000",
2661 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache",
2662 "Offcore": "1"
2663 },
2664 {
2665 "EventCode": "0xB7",
2666 "MSRValue": "0x3830",
2667 "Counter": "2",
2668 "UMask": "0x1",
2669 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_DRAM",
2670 "MSRIndex": "0x1A6",
2671 "SampleAfterValue": "100000",
2672 "BriefDescription": "Offcore prefetch data requests satisfied by a remote cache or remote DRAM",
2673 "Offcore": "1"
2674 },
2675 {
2676 "EventCode": "0xB7",
2677 "MSRValue": "0x1030",
2678 "Counter": "2",
2679 "UMask": "0x1",
2680 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HIT",
2681 "MSRIndex": "0x1A6",
2682 "SampleAfterValue": "100000",
2683 "BriefDescription": "Offcore prefetch data requests that HIT in a remote cache",
2684 "Offcore": "1"
2685 },
2686 {
2687 "EventCode": "0xB7",
2688 "MSRValue": "0x830",
2689 "Counter": "2",
2690 "UMask": "0x1",
2691 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_CACHE_HITM",
2692 "MSRIndex": "0x1A6",
2693 "SampleAfterValue": "100000",
2694 "BriefDescription": "Offcore prefetch data requests that HITM in a remote cache",
2695 "Offcore": "1"
2696 },
2697 {
2698 "EventCode": "0xB7",
2699 "MSRValue": "0x7F10",
2700 "Counter": "2",
2701 "UMask": "0x1",
2702 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_CACHE_DRAM",
2703 "MSRIndex": "0x1A6",
2704 "SampleAfterValue": "100000",
2705 "BriefDescription": "Offcore prefetch data reads satisfied by any cache or DRAM.",
2706 "Offcore": "1"
2707 },
2708 {
2709 "EventCode": "0xB7",
2710 "MSRValue": "0xFF10",
2711 "Counter": "2",
2712 "UMask": "0x1",
2713 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LOCATION",
2714 "MSRIndex": "0x1A6",
2715 "SampleAfterValue": "100000",
2716 "BriefDescription": "All offcore prefetch data reads",
2717 "Offcore": "1"
2718 },
2719 {
2720 "EventCode": "0xB7",
2721 "MSRValue": "0x8010",
2722 "Counter": "2",
2723 "UMask": "0x1",
2724 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.IO_CSR_MMIO",
2725 "MSRIndex": "0x1A6",
2726 "SampleAfterValue": "100000",
2727 "BriefDescription": "Offcore prefetch data reads satisfied by the IO, CSR, MMIO unit",
2728 "Offcore": "1"
2729 },
2730 {
2731 "EventCode": "0xB7",
2732 "MSRValue": "0x110",
2733 "Counter": "2",
2734 "UMask": "0x1",
2735 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_NO_OTHER_CORE",
2736 "MSRIndex": "0x1A6",
2737 "SampleAfterValue": "100000",
2738 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and not found in a sibling core",
2739 "Offcore": "1"
2740 },
2741 {
2742 "EventCode": "0xB7",
2743 "MSRValue": "0x210",
2744 "Counter": "2",
2745 "UMask": "0x1",
2746 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HIT",
2747 "MSRIndex": "0x1A6",
2748 "SampleAfterValue": "100000",
2749 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HIT in a sibling core",
2750 "Offcore": "1"
2751 },
2752 {
2753 "EventCode": "0xB7",
2754 "MSRValue": "0x410",
2755 "Counter": "2",
2756 "UMask": "0x1",
2757 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LLC_HIT_OTHER_CORE_HITM",
2758 "MSRIndex": "0x1A6",
2759 "SampleAfterValue": "100000",
2760 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC and HITM in a sibling core",
2761 "Offcore": "1"
2762 },
2763 {
2764 "EventCode": "0xB7",
2765 "MSRValue": "0x710",
2766 "Counter": "2",
2767 "UMask": "0x1",
2768 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE",
2769 "MSRIndex": "0x1A6",
2770 "SampleAfterValue": "100000",
2771 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC",
2772 "Offcore": "1"
2773 },
2774 {
2775 "EventCode": "0xB7",
2776 "MSRValue": "0x4710",
2777 "Counter": "2",
2778 "UMask": "0x1",
2779 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_CACHE_DRAM",
2780 "MSRIndex": "0x1A6",
2781 "SampleAfterValue": "100000",
2782 "BriefDescription": "Offcore prefetch data reads satisfied by the LLC or local DRAM",
2783 "Offcore": "1"
2784 },
2785 {
2786 "EventCode": "0xB7",
2787 "MSRValue": "0x1810",
2788 "Counter": "2",
2789 "UMask": "0x1",
2790 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE",
2791 "MSRIndex": "0x1A6",
2792 "SampleAfterValue": "100000",
2793 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache",
2794 "Offcore": "1"
2795 },
2796 {
2797 "EventCode": "0xB7",
2798 "MSRValue": "0x3810",
2799 "Counter": "2",
2800 "UMask": "0x1",
2801 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_DRAM",
2802 "MSRIndex": "0x1A6",
2803 "SampleAfterValue": "100000",
2804 "BriefDescription": "Offcore prefetch data reads satisfied by a remote cache or remote DRAM",
2805 "Offcore": "1"
2806 },
2807 {
2808 "EventCode": "0xB7",
2809 "MSRValue": "0x1010",
2810 "Counter": "2",
2811 "UMask": "0x1",
2812 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HIT",
2813 "MSRIndex": "0x1A6",
2814 "SampleAfterValue": "100000",
2815 "BriefDescription": "Offcore prefetch data reads that HIT in a remote cache",
2816 "Offcore": "1"
2817 },
2818 {
2819 "EventCode": "0xB7",
2820 "MSRValue": "0x810",
2821 "Counter": "2",
2822 "UMask": "0x1",
2823 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_CACHE_HITM",
2824 "MSRIndex": "0x1A6",
2825 "SampleAfterValue": "100000",
2826 "BriefDescription": "Offcore prefetch data reads that HITM in a remote cache",
2827 "Offcore": "1"
2828 },
2829 {
2830 "EventCode": "0xB7",
2831 "MSRValue": "0x7F40",
2832 "Counter": "2",
2833 "UMask": "0x1",
2834 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_CACHE_DRAM",
2835 "MSRIndex": "0x1A6",
2836 "SampleAfterValue": "100000",
2837 "BriefDescription": "Offcore prefetch code reads satisfied by any cache or DRAM.",
2838 "Offcore": "1"
2839 },
2840 {
2841 "EventCode": "0xB7",
2842 "MSRValue": "0xFF40",
2843 "Counter": "2",
2844 "UMask": "0x1",
2845 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LOCATION",
2846 "MSRIndex": "0x1A6",
2847 "SampleAfterValue": "100000",
2848 "BriefDescription": "All offcore prefetch code reads",
2849 "Offcore": "1"
2850 },
2851 {
2852 "EventCode": "0xB7",
2853 "MSRValue": "0x8040",
2854 "Counter": "2",
2855 "UMask": "0x1",
2856 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.IO_CSR_MMIO",
2857 "MSRIndex": "0x1A6",
2858 "SampleAfterValue": "100000",
2859 "BriefDescription": "Offcore prefetch code reads satisfied by the IO, CSR, MMIO unit",
2860 "Offcore": "1"
2861 },
2862 {
2863 "EventCode": "0xB7",
2864 "MSRValue": "0x140",
2865 "Counter": "2",
2866 "UMask": "0x1",
2867 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_NO_OTHER_CORE",
2868 "MSRIndex": "0x1A6",
2869 "SampleAfterValue": "100000",
2870 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and not found in a sibling core",
2871 "Offcore": "1"
2872 },
2873 {
2874 "EventCode": "0xB7",
2875 "MSRValue": "0x240",
2876 "Counter": "2",
2877 "UMask": "0x1",
2878 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HIT",
2879 "MSRIndex": "0x1A6",
2880 "SampleAfterValue": "100000",
2881 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HIT in a sibling core",
2882 "Offcore": "1"
2883 },
2884 {
2885 "EventCode": "0xB7",
2886 "MSRValue": "0x440",
2887 "Counter": "2",
2888 "UMask": "0x1",
2889 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LLC_HIT_OTHER_CORE_HITM",
2890 "MSRIndex": "0x1A6",
2891 "SampleAfterValue": "100000",
2892 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC and HITM in a sibling core",
2893 "Offcore": "1"
2894 },
2895 {
2896 "EventCode": "0xB7",
2897 "MSRValue": "0x740",
2898 "Counter": "2",
2899 "UMask": "0x1",
2900 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE",
2901 "MSRIndex": "0x1A6",
2902 "SampleAfterValue": "100000",
2903 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC",
2904 "Offcore": "1"
2905 },
2906 {
2907 "EventCode": "0xB7",
2908 "MSRValue": "0x4740",
2909 "Counter": "2",
2910 "UMask": "0x1",
2911 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_CACHE_DRAM",
2912 "MSRIndex": "0x1A6",
2913 "SampleAfterValue": "100000",
2914 "BriefDescription": "Offcore prefetch code reads satisfied by the LLC or local DRAM",
2915 "Offcore": "1"
2916 },
2917 {
2918 "EventCode": "0xB7",
2919 "MSRValue": "0x1840",
2920 "Counter": "2",
2921 "UMask": "0x1",
2922 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE",
2923 "MSRIndex": "0x1A6",
2924 "SampleAfterValue": "100000",
2925 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache",
2926 "Offcore": "1"
2927 },
2928 {
2929 "EventCode": "0xB7",
2930 "MSRValue": "0x3840",
2931 "Counter": "2",
2932 "UMask": "0x1",
2933 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_DRAM",
2934 "MSRIndex": "0x1A6",
2935 "SampleAfterValue": "100000",
2936 "BriefDescription": "Offcore prefetch code reads satisfied by a remote cache or remote DRAM",
2937 "Offcore": "1"
2938 },
2939 {
2940 "EventCode": "0xB7",
2941 "MSRValue": "0x1040",
2942 "Counter": "2",
2943 "UMask": "0x1",
2944 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HIT",
2945 "MSRIndex": "0x1A6",
2946 "SampleAfterValue": "100000",
2947 "BriefDescription": "Offcore prefetch code reads that HIT in a remote cache",
2948 "Offcore": "1"
2949 },
2950 {
2951 "EventCode": "0xB7",
2952 "MSRValue": "0x840",
2953 "Counter": "2",
2954 "UMask": "0x1",
2955 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_CACHE_HITM",
2956 "MSRIndex": "0x1A6",
2957 "SampleAfterValue": "100000",
2958 "BriefDescription": "Offcore prefetch code reads that HITM in a remote cache",
2959 "Offcore": "1"
2960 },
2961 {
2962 "EventCode": "0xB7",
2963 "MSRValue": "0x7F20",
2964 "Counter": "2",
2965 "UMask": "0x1",
2966 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_CACHE_DRAM",
2967 "MSRIndex": "0x1A6",
2968 "SampleAfterValue": "100000",
2969 "BriefDescription": "Offcore prefetch RFO requests satisfied by any cache or DRAM.",
2970 "Offcore": "1"
2971 },
2972 {
2973 "EventCode": "0xB7",
2974 "MSRValue": "0xFF20",
2975 "Counter": "2",
2976 "UMask": "0x1",
2977 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LOCATION",
2978 "MSRIndex": "0x1A6",
2979 "SampleAfterValue": "100000",
2980 "BriefDescription": "All offcore prefetch RFO requests",
2981 "Offcore": "1"
2982 },
2983 {
2984 "EventCode": "0xB7",
2985 "MSRValue": "0x8020",
2986 "Counter": "2",
2987 "UMask": "0x1",
2988 "EventName": "OFFCORE_RESPONSE.PF_RFO.IO_CSR_MMIO",
2989 "MSRIndex": "0x1A6",
2990 "SampleAfterValue": "100000",
2991 "BriefDescription": "Offcore prefetch RFO requests satisfied by the IO, CSR, MMIO unit",
2992 "Offcore": "1"
2993 },
2994 {
2995 "EventCode": "0xB7",
2996 "MSRValue": "0x120",
2997 "Counter": "2",
2998 "UMask": "0x1",
2999 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_NO_OTHER_CORE",
3000 "MSRIndex": "0x1A6",
3001 "SampleAfterValue": "100000",
3002 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and not found in a sibling core",
3003 "Offcore": "1"
3004 },
3005 {
3006 "EventCode": "0xB7",
3007 "MSRValue": "0x220",
3008 "Counter": "2",
3009 "UMask": "0x1",
3010 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HIT",
3011 "MSRIndex": "0x1A6",
3012 "SampleAfterValue": "100000",
3013 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HIT in a sibling core",
3014 "Offcore": "1"
3015 },
3016 {
3017 "EventCode": "0xB7",
3018 "MSRValue": "0x420",
3019 "Counter": "2",
3020 "UMask": "0x1",
3021 "EventName": "OFFCORE_RESPONSE.PF_RFO.LLC_HIT_OTHER_CORE_HITM",
3022 "MSRIndex": "0x1A6",
3023 "SampleAfterValue": "100000",
3024 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC and HITM in a sibling core",
3025 "Offcore": "1"
3026 },
3027 {
3028 "EventCode": "0xB7",
3029 "MSRValue": "0x720",
3030 "Counter": "2",
3031 "UMask": "0x1",
3032 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE",
3033 "MSRIndex": "0x1A6",
3034 "SampleAfterValue": "100000",
3035 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC",
3036 "Offcore": "1"
3037 },
3038 {
3039 "EventCode": "0xB7",
3040 "MSRValue": "0x4720",
3041 "Counter": "2",
3042 "UMask": "0x1",
3043 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_CACHE_DRAM",
3044 "MSRIndex": "0x1A6",
3045 "SampleAfterValue": "100000",
3046 "BriefDescription": "Offcore prefetch RFO requests satisfied by the LLC or local DRAM",
3047 "Offcore": "1"
3048 },
3049 {
3050 "EventCode": "0xB7",
3051 "MSRValue": "0x1820",
3052 "Counter": "2",
3053 "UMask": "0x1",
3054 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE",
3055 "MSRIndex": "0x1A6",
3056 "SampleAfterValue": "100000",
3057 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache",
3058 "Offcore": "1"
3059 },
3060 {
3061 "EventCode": "0xB7",
3062 "MSRValue": "0x3820",
3063 "Counter": "2",
3064 "UMask": "0x1",
3065 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_DRAM",
3066 "MSRIndex": "0x1A6",
3067 "SampleAfterValue": "100000",
3068 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote cache or remote DRAM",
3069 "Offcore": "1"
3070 },
3071 {
3072 "EventCode": "0xB7",
3073 "MSRValue": "0x1020",
3074 "Counter": "2",
3075 "UMask": "0x1",
3076 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HIT",
3077 "MSRIndex": "0x1A6",
3078 "SampleAfterValue": "100000",
3079 "BriefDescription": "Offcore prefetch RFO requests that HIT in a remote cache",
3080 "Offcore": "1"
3081 },
3082 {
3083 "EventCode": "0xB7",
3084 "MSRValue": "0x820",
3085 "Counter": "2",
3086 "UMask": "0x1",
3087 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_CACHE_HITM",
3088 "MSRIndex": "0x1A6",
3089 "SampleAfterValue": "100000",
3090 "BriefDescription": "Offcore prefetch RFO requests that HITM in a remote cache",
3091 "Offcore": "1"
3092 },
3093 {
3094 "EventCode": "0xB7",
3095 "MSRValue": "0x7F70",
3096 "Counter": "2",
3097 "UMask": "0x1",
3098 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_CACHE_DRAM",
3099 "MSRIndex": "0x1A6",
3100 "SampleAfterValue": "100000",
3101 "BriefDescription": "Offcore prefetch requests satisfied by any cache or DRAM.",
3102 "Offcore": "1"
3103 },
3104 {
3105 "EventCode": "0xB7",
3106 "MSRValue": "0xFF70",
3107 "Counter": "2",
3108 "UMask": "0x1",
3109 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LOCATION",
3110 "MSRIndex": "0x1A6",
3111 "SampleAfterValue": "100000",
3112 "BriefDescription": "All offcore prefetch requests",
3113 "Offcore": "1"
3114 },
3115 {
3116 "EventCode": "0xB7",
3117 "MSRValue": "0x8070",
3118 "Counter": "2",
3119 "UMask": "0x1",
3120 "EventName": "OFFCORE_RESPONSE.PREFETCH.IO_CSR_MMIO",
3121 "MSRIndex": "0x1A6",
3122 "SampleAfterValue": "100000",
3123 "BriefDescription": "Offcore prefetch requests satisfied by the IO, CSR, MMIO unit",
3124 "Offcore": "1"
3125 },
3126 {
3127 "EventCode": "0xB7",
3128 "MSRValue": "0x170",
3129 "Counter": "2",
3130 "UMask": "0x1",
3131 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_NO_OTHER_CORE",
3132 "MSRIndex": "0x1A6",
3133 "SampleAfterValue": "100000",
3134 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and not found in a sibling core",
3135 "Offcore": "1"
3136 },
3137 {
3138 "EventCode": "0xB7",
3139 "MSRValue": "0x270",
3140 "Counter": "2",
3141 "UMask": "0x1",
3142 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HIT",
3143 "MSRIndex": "0x1A6",
3144 "SampleAfterValue": "100000",
3145 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HIT in a sibling core",
3146 "Offcore": "1"
3147 },
3148 {
3149 "EventCode": "0xB7",
3150 "MSRValue": "0x470",
3151 "Counter": "2",
3152 "UMask": "0x1",
3153 "EventName": "OFFCORE_RESPONSE.PREFETCH.LLC_HIT_OTHER_CORE_HITM",
3154 "MSRIndex": "0x1A6",
3155 "SampleAfterValue": "100000",
3156 "BriefDescription": "Offcore prefetch requests satisfied by the LLC and HITM in a sibling core",
3157 "Offcore": "1"
3158 },
3159 {
3160 "EventCode": "0xB7",
3161 "MSRValue": "0x770",
3162 "Counter": "2",
3163 "UMask": "0x1",
3164 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE",
3165 "MSRIndex": "0x1A6",
3166 "SampleAfterValue": "100000",
3167 "BriefDescription": "Offcore prefetch requests satisfied by the LLC",
3168 "Offcore": "1"
3169 },
3170 {
3171 "EventCode": "0xB7",
3172 "MSRValue": "0x4770",
3173 "Counter": "2",
3174 "UMask": "0x1",
3175 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_CACHE_DRAM",
3176 "MSRIndex": "0x1A6",
3177 "SampleAfterValue": "100000",
3178 "BriefDescription": "Offcore prefetch requests satisfied by the LLC or local DRAM",
3179 "Offcore": "1"
3180 },
3181 {
3182 "EventCode": "0xB7",
3183 "MSRValue": "0x1870",
3184 "Counter": "2",
3185 "UMask": "0x1",
3186 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE",
3187 "MSRIndex": "0x1A6",
3188 "SampleAfterValue": "100000",
3189 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache",
3190 "Offcore": "1"
3191 },
3192 {
3193 "EventCode": "0xB7",
3194 "MSRValue": "0x3870",
3195 "Counter": "2",
3196 "UMask": "0x1",
3197 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_DRAM",
3198 "MSRIndex": "0x1A6",
3199 "SampleAfterValue": "100000",
3200 "BriefDescription": "Offcore prefetch requests satisfied by a remote cache or remote DRAM",
3201 "Offcore": "1"
3202 },
3203 {
3204 "EventCode": "0xB7",
3205 "MSRValue": "0x1070",
3206 "Counter": "2",
3207 "UMask": "0x1",
3208 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HIT",
3209 "MSRIndex": "0x1A6",
3210 "SampleAfterValue": "100000",
3211 "BriefDescription": "Offcore prefetch requests that HIT in a remote cache",
3212 "Offcore": "1"
3213 },
3214 {
3215 "EventCode": "0xB7",
3216 "MSRValue": "0x870",
3217 "Counter": "2",
3218 "UMask": "0x1",
3219 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_CACHE_HITM",
3220 "MSRIndex": "0x1A6",
3221 "SampleAfterValue": "100000",
3222 "BriefDescription": "Offcore prefetch requests that HITM in a remote cache",
3223 "Offcore": "1"
3224 }
3225] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereex/floating-point.json b/tools/perf/pmu-events/arch/x86/westmereex/floating-point.json
new file mode 100644
index 000000000000..7d2f71a9dee3
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereex/floating-point.json
@@ -0,0 +1,229 @@
1[
2 {
3 "PEBS": "1",
4 "EventCode": "0xF7",
5 "Counter": "0,1,2,3",
6 "UMask": "0x1",
7 "EventName": "FP_ASSIST.ALL",
8 "SampleAfterValue": "20000",
9 "BriefDescription": "X87 Floating point assists (Precise Event)"
10 },
11 {
12 "PEBS": "1",
13 "EventCode": "0xF7",
14 "Counter": "0,1,2,3",
15 "UMask": "0x4",
16 "EventName": "FP_ASSIST.INPUT",
17 "SampleAfterValue": "20000",
18 "BriefDescription": "X87 Floating poiint assists for invalid input value (Precise Event)"
19 },
20 {
21 "PEBS": "1",
22 "EventCode": "0xF7",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "FP_ASSIST.OUTPUT",
26 "SampleAfterValue": "20000",
27 "BriefDescription": "X87 Floating point assists for invalid output value (Precise Event)"
28 },
29 {
30 "EventCode": "0x10",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "FP_COMP_OPS_EXE.MMX",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "MMX Uops"
36 },
37 {
38 "EventCode": "0x10",
39 "Counter": "0,1,2,3",
40 "UMask": "0x80",
41 "EventName": "FP_COMP_OPS_EXE.SSE_DOUBLE_PRECISION",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "SSE* FP double precision Uops"
44 },
45 {
46 "EventCode": "0x10",
47 "Counter": "0,1,2,3",
48 "UMask": "0x4",
49 "EventName": "FP_COMP_OPS_EXE.SSE_FP",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "SSE and SSE2 FP Uops"
52 },
53 {
54 "EventCode": "0x10",
55 "Counter": "0,1,2,3",
56 "UMask": "0x10",
57 "EventName": "FP_COMP_OPS_EXE.SSE_FP_PACKED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "SSE FP packed Uops"
60 },
61 {
62 "EventCode": "0x10",
63 "Counter": "0,1,2,3",
64 "UMask": "0x20",
65 "EventName": "FP_COMP_OPS_EXE.SSE_FP_SCALAR",
66 "SampleAfterValue": "2000000",
67 "BriefDescription": "SSE FP scalar Uops"
68 },
69 {
70 "EventCode": "0x10",
71 "Counter": "0,1,2,3",
72 "UMask": "0x40",
73 "EventName": "FP_COMP_OPS_EXE.SSE_SINGLE_PRECISION",
74 "SampleAfterValue": "2000000",
75 "BriefDescription": "SSE* FP single precision Uops"
76 },
77 {
78 "EventCode": "0x10",
79 "Counter": "0,1,2,3",
80 "UMask": "0x8",
81 "EventName": "FP_COMP_OPS_EXE.SSE2_INTEGER",
82 "SampleAfterValue": "2000000",
83 "BriefDescription": "SSE2 integer Uops"
84 },
85 {
86 "EventCode": "0x10",
87 "Counter": "0,1,2,3",
88 "UMask": "0x1",
89 "EventName": "FP_COMP_OPS_EXE.X87",
90 "SampleAfterValue": "2000000",
91 "BriefDescription": "Computational floating-point operations executed"
92 },
93 {
94 "EventCode": "0xCC",
95 "Counter": "0,1,2,3",
96 "UMask": "0x3",
97 "EventName": "FP_MMX_TRANS.ANY",
98 "SampleAfterValue": "2000000",
99 "BriefDescription": "All Floating Point to and from MMX transitions"
100 },
101 {
102 "EventCode": "0xCC",
103 "Counter": "0,1,2,3",
104 "UMask": "0x1",
105 "EventName": "FP_MMX_TRANS.TO_FP",
106 "SampleAfterValue": "2000000",
107 "BriefDescription": "Transitions from MMX to Floating Point instructions"
108 },
109 {
110 "EventCode": "0xCC",
111 "Counter": "0,1,2,3",
112 "UMask": "0x2",
113 "EventName": "FP_MMX_TRANS.TO_MMX",
114 "SampleAfterValue": "2000000",
115 "BriefDescription": "Transitions from Floating Point to MMX instructions"
116 },
117 {
118 "EventCode": "0x12",
119 "Counter": "0,1,2,3",
120 "UMask": "0x4",
121 "EventName": "SIMD_INT_128.PACK",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "128 bit SIMD integer pack operations"
124 },
125 {
126 "EventCode": "0x12",
127 "Counter": "0,1,2,3",
128 "UMask": "0x20",
129 "EventName": "SIMD_INT_128.PACKED_ARITH",
130 "SampleAfterValue": "200000",
131 "BriefDescription": "128 bit SIMD integer arithmetic operations"
132 },
133 {
134 "EventCode": "0x12",
135 "Counter": "0,1,2,3",
136 "UMask": "0x10",
137 "EventName": "SIMD_INT_128.PACKED_LOGICAL",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "128 bit SIMD integer logical operations"
140 },
141 {
142 "EventCode": "0x12",
143 "Counter": "0,1,2,3",
144 "UMask": "0x1",
145 "EventName": "SIMD_INT_128.PACKED_MPY",
146 "SampleAfterValue": "200000",
147 "BriefDescription": "128 bit SIMD integer multiply operations"
148 },
149 {
150 "EventCode": "0x12",
151 "Counter": "0,1,2,3",
152 "UMask": "0x2",
153 "EventName": "SIMD_INT_128.PACKED_SHIFT",
154 "SampleAfterValue": "200000",
155 "BriefDescription": "128 bit SIMD integer shift operations"
156 },
157 {
158 "EventCode": "0x12",
159 "Counter": "0,1,2,3",
160 "UMask": "0x40",
161 "EventName": "SIMD_INT_128.SHUFFLE_MOVE",
162 "SampleAfterValue": "200000",
163 "BriefDescription": "128 bit SIMD integer shuffle/move operations"
164 },
165 {
166 "EventCode": "0x12",
167 "Counter": "0,1,2,3",
168 "UMask": "0x8",
169 "EventName": "SIMD_INT_128.UNPACK",
170 "SampleAfterValue": "200000",
171 "BriefDescription": "128 bit SIMD integer unpack operations"
172 },
173 {
174 "EventCode": "0xFD",
175 "Counter": "0,1,2,3",
176 "UMask": "0x4",
177 "EventName": "SIMD_INT_64.PACK",
178 "SampleAfterValue": "200000",
179 "BriefDescription": "SIMD integer 64 bit pack operations"
180 },
181 {
182 "EventCode": "0xFD",
183 "Counter": "0,1,2,3",
184 "UMask": "0x20",
185 "EventName": "SIMD_INT_64.PACKED_ARITH",
186 "SampleAfterValue": "200000",
187 "BriefDescription": "SIMD integer 64 bit arithmetic operations"
188 },
189 {
190 "EventCode": "0xFD",
191 "Counter": "0,1,2,3",
192 "UMask": "0x10",
193 "EventName": "SIMD_INT_64.PACKED_LOGICAL",
194 "SampleAfterValue": "200000",
195 "BriefDescription": "SIMD integer 64 bit logical operations"
196 },
197 {
198 "EventCode": "0xFD",
199 "Counter": "0,1,2,3",
200 "UMask": "0x1",
201 "EventName": "SIMD_INT_64.PACKED_MPY",
202 "SampleAfterValue": "200000",
203 "BriefDescription": "SIMD integer 64 bit packed multiply operations"
204 },
205 {
206 "EventCode": "0xFD",
207 "Counter": "0,1,2,3",
208 "UMask": "0x2",
209 "EventName": "SIMD_INT_64.PACKED_SHIFT",
210 "SampleAfterValue": "200000",
211 "BriefDescription": "SIMD integer 64 bit shift operations"
212 },
213 {
214 "EventCode": "0xFD",
215 "Counter": "0,1,2,3",
216 "UMask": "0x40",
217 "EventName": "SIMD_INT_64.SHUFFLE_MOVE",
218 "SampleAfterValue": "200000",
219 "BriefDescription": "SIMD integer 64 bit shuffle/move operations"
220 },
221 {
222 "EventCode": "0xFD",
223 "Counter": "0,1,2,3",
224 "UMask": "0x8",
225 "EventName": "SIMD_INT_64.UNPACK",
226 "SampleAfterValue": "200000",
227 "BriefDescription": "SIMD integer 64 bit unpack operations"
228 }
229] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereex/frontend.json b/tools/perf/pmu-events/arch/x86/westmereex/frontend.json
new file mode 100644
index 000000000000..e5e21e03444d
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereex/frontend.json
@@ -0,0 +1,26 @@
1[
2 {
3 "EventCode": "0xD0",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "MACRO_INSTS.DECODED",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Instructions decoded"
9 },
10 {
11 "EventCode": "0xA6",
12 "Counter": "0,1,2,3",
13 "UMask": "0x1",
14 "EventName": "MACRO_INSTS.FUSIONS_DECODED",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Macro-fused instructions decoded"
17 },
18 {
19 "EventCode": "0x19",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "TWO_UOP_INSTS_DECODED",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Two Uop instructions decoded"
25 }
26] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereex/memory.json b/tools/perf/pmu-events/arch/x86/westmereex/memory.json
new file mode 100644
index 000000000000..3ba555e73cbd
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereex/memory.json
@@ -0,0 +1,747 @@
1[
2 {
3 "EventCode": "0x5",
4 "Counter": "0,1,2,3",
5 "UMask": "0x2",
6 "EventName": "MISALIGN_MEM_REF.STORE",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "Misaligned store references"
9 },
10 {
11 "EventCode": "0xB7",
12 "MSRValue": "0x6011",
13 "Counter": "2",
14 "UMask": "0x1",
15 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_DRAM",
16 "MSRIndex": "0x1A6",
17 "SampleAfterValue": "100000",
18 "BriefDescription": "Offcore data reads satisfied by any DRAM",
19 "Offcore": "1"
20 },
21 {
22 "EventCode": "0xB7",
23 "MSRValue": "0xF811",
24 "Counter": "2",
25 "UMask": "0x1",
26 "EventName": "OFFCORE_RESPONSE.ANY_DATA.ANY_LLC_MISS",
27 "MSRIndex": "0x1A6",
28 "SampleAfterValue": "100000",
29 "BriefDescription": "Offcore data reads that missed the LLC",
30 "Offcore": "1"
31 },
32 {
33 "EventCode": "0xB7",
34 "MSRValue": "0x4011",
35 "Counter": "2",
36 "UMask": "0x1",
37 "EventName": "OFFCORE_RESPONSE.ANY_DATA.LOCAL_DRAM",
38 "MSRIndex": "0x1A6",
39 "SampleAfterValue": "100000",
40 "BriefDescription": "Offcore data reads satisfied by the local DRAM",
41 "Offcore": "1"
42 },
43 {
44 "EventCode": "0xB7",
45 "MSRValue": "0x2011",
46 "Counter": "2",
47 "UMask": "0x1",
48 "EventName": "OFFCORE_RESPONSE.ANY_DATA.REMOTE_DRAM",
49 "MSRIndex": "0x1A6",
50 "SampleAfterValue": "100000",
51 "BriefDescription": "Offcore data reads satisfied by a remote DRAM",
52 "Offcore": "1"
53 },
54 {
55 "EventCode": "0xB7",
56 "MSRValue": "0x6044",
57 "Counter": "2",
58 "UMask": "0x1",
59 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_DRAM",
60 "MSRIndex": "0x1A6",
61 "SampleAfterValue": "100000",
62 "BriefDescription": "Offcore code reads satisfied by any DRAM",
63 "Offcore": "1"
64 },
65 {
66 "EventCode": "0xB7",
67 "MSRValue": "0xF844",
68 "Counter": "2",
69 "UMask": "0x1",
70 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.ANY_LLC_MISS",
71 "MSRIndex": "0x1A6",
72 "SampleAfterValue": "100000",
73 "BriefDescription": "Offcore code reads that missed the LLC",
74 "Offcore": "1"
75 },
76 {
77 "EventCode": "0xB7",
78 "MSRValue": "0x4044",
79 "Counter": "2",
80 "UMask": "0x1",
81 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.LOCAL_DRAM",
82 "MSRIndex": "0x1A6",
83 "SampleAfterValue": "100000",
84 "BriefDescription": "Offcore code reads satisfied by the local DRAM",
85 "Offcore": "1"
86 },
87 {
88 "EventCode": "0xB7",
89 "MSRValue": "0x2044",
90 "Counter": "2",
91 "UMask": "0x1",
92 "EventName": "OFFCORE_RESPONSE.ANY_IFETCH.REMOTE_DRAM",
93 "MSRIndex": "0x1A6",
94 "SampleAfterValue": "100000",
95 "BriefDescription": "Offcore code reads satisfied by a remote DRAM",
96 "Offcore": "1"
97 },
98 {
99 "EventCode": "0xB7",
100 "MSRValue": "0x60FF",
101 "Counter": "2",
102 "UMask": "0x1",
103 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_DRAM",
104 "MSRIndex": "0x1A6",
105 "SampleAfterValue": "100000",
106 "BriefDescription": "Offcore requests satisfied by any DRAM",
107 "Offcore": "1"
108 },
109 {
110 "EventCode": "0xB7",
111 "MSRValue": "0xF8FF",
112 "Counter": "2",
113 "UMask": "0x1",
114 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_LLC_MISS",
115 "MSRIndex": "0x1A6",
116 "SampleAfterValue": "100000",
117 "BriefDescription": "Offcore requests that missed the LLC",
118 "Offcore": "1"
119 },
120 {
121 "EventCode": "0xB7",
122 "MSRValue": "0x40FF",
123 "Counter": "2",
124 "UMask": "0x1",
125 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.LOCAL_DRAM",
126 "MSRIndex": "0x1A6",
127 "SampleAfterValue": "100000",
128 "BriefDescription": "Offcore requests satisfied by the local DRAM",
129 "Offcore": "1"
130 },
131 {
132 "EventCode": "0xB7",
133 "MSRValue": "0x20FF",
134 "Counter": "2",
135 "UMask": "0x1",
136 "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.REMOTE_DRAM",
137 "MSRIndex": "0x1A6",
138 "SampleAfterValue": "100000",
139 "BriefDescription": "Offcore requests satisfied by a remote DRAM",
140 "Offcore": "1"
141 },
142 {
143 "EventCode": "0xB7",
144 "MSRValue": "0x6022",
145 "Counter": "2",
146 "UMask": "0x1",
147 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_DRAM",
148 "MSRIndex": "0x1A6",
149 "SampleAfterValue": "100000",
150 "BriefDescription": "Offcore RFO requests satisfied by any DRAM",
151 "Offcore": "1"
152 },
153 {
154 "EventCode": "0xB7",
155 "MSRValue": "0xF822",
156 "Counter": "2",
157 "UMask": "0x1",
158 "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_LLC_MISS",
159 "MSRIndex": "0x1A6",
160 "SampleAfterValue": "100000",
161 "BriefDescription": "Offcore RFO requests that missed the LLC",
162 "Offcore": "1"
163 },
164 {
165 "EventCode": "0xB7",
166 "MSRValue": "0x4022",
167 "Counter": "2",
168 "UMask": "0x1",
169 "EventName": "OFFCORE_RESPONSE.ANY_RFO.LOCAL_DRAM",
170 "MSRIndex": "0x1A6",
171 "SampleAfterValue": "100000",
172 "BriefDescription": "Offcore RFO requests satisfied by the local DRAM",
173 "Offcore": "1"
174 },
175 {
176 "EventCode": "0xB7",
177 "MSRValue": "0x2022",
178 "Counter": "2",
179 "UMask": "0x1",
180 "EventName": "OFFCORE_RESPONSE.ANY_RFO.REMOTE_DRAM",
181 "MSRIndex": "0x1A6",
182 "SampleAfterValue": "100000",
183 "BriefDescription": "Offcore RFO requests satisfied by a remote DRAM",
184 "Offcore": "1"
185 },
186 {
187 "EventCode": "0xB7",
188 "MSRValue": "0x6008",
189 "Counter": "2",
190 "UMask": "0x1",
191 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_DRAM",
192 "MSRIndex": "0x1A6",
193 "SampleAfterValue": "100000",
194 "BriefDescription": "Offcore writebacks to any DRAM",
195 "Offcore": "1"
196 },
197 {
198 "EventCode": "0xB7",
199 "MSRValue": "0xF808",
200 "Counter": "2",
201 "UMask": "0x1",
202 "EventName": "OFFCORE_RESPONSE.COREWB.ANY_LLC_MISS",
203 "MSRIndex": "0x1A6",
204 "SampleAfterValue": "100000",
205 "BriefDescription": "Offcore writebacks that missed the LLC",
206 "Offcore": "1"
207 },
208 {
209 "EventCode": "0xB7",
210 "MSRValue": "0x4008",
211 "Counter": "2",
212 "UMask": "0x1",
213 "EventName": "OFFCORE_RESPONSE.COREWB.LOCAL_DRAM",
214 "MSRIndex": "0x1A6",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "Offcore writebacks to the local DRAM",
217 "Offcore": "1"
218 },
219 {
220 "EventCode": "0xB7",
221 "MSRValue": "0x2008",
222 "Counter": "2",
223 "UMask": "0x1",
224 "EventName": "OFFCORE_RESPONSE.COREWB.REMOTE_DRAM",
225 "MSRIndex": "0x1A6",
226 "SampleAfterValue": "100000",
227 "BriefDescription": "Offcore writebacks to a remote DRAM",
228 "Offcore": "1"
229 },
230 {
231 "EventCode": "0xB7",
232 "MSRValue": "0x6077",
233 "Counter": "2",
234 "UMask": "0x1",
235 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_DRAM",
236 "MSRIndex": "0x1A6",
237 "SampleAfterValue": "100000",
238 "BriefDescription": "Offcore code or data read requests satisfied by any DRAM",
239 "Offcore": "1"
240 },
241 {
242 "EventCode": "0xB7",
243 "MSRValue": "0xF877",
244 "Counter": "2",
245 "UMask": "0x1",
246 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.ANY_LLC_MISS",
247 "MSRIndex": "0x1A6",
248 "SampleAfterValue": "100000",
249 "BriefDescription": "Offcore code or data read requests that missed the LLC",
250 "Offcore": "1"
251 },
252 {
253 "EventCode": "0xB7",
254 "MSRValue": "0x4077",
255 "Counter": "2",
256 "UMask": "0x1",
257 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.LOCAL_DRAM",
258 "MSRIndex": "0x1A6",
259 "SampleAfterValue": "100000",
260 "BriefDescription": "Offcore code or data read requests satisfied by the local DRAM",
261 "Offcore": "1"
262 },
263 {
264 "EventCode": "0xB7",
265 "MSRValue": "0x2077",
266 "Counter": "2",
267 "UMask": "0x1",
268 "EventName": "OFFCORE_RESPONSE.DATA_IFETCH.REMOTE_DRAM",
269 "MSRIndex": "0x1A6",
270 "SampleAfterValue": "100000",
271 "BriefDescription": "Offcore code or data read requests satisfied by a remote DRAM",
272 "Offcore": "1"
273 },
274 {
275 "EventCode": "0xB7",
276 "MSRValue": "0x6033",
277 "Counter": "2",
278 "UMask": "0x1",
279 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_DRAM",
280 "MSRIndex": "0x1A6",
281 "SampleAfterValue": "100000",
282 "BriefDescription": "Offcore request = all data, response = any DRAM",
283 "Offcore": "1"
284 },
285 {
286 "EventCode": "0xB7",
287 "MSRValue": "0xF833",
288 "Counter": "2",
289 "UMask": "0x1",
290 "EventName": "OFFCORE_RESPONSE.DATA_IN.ANY_LLC_MISS",
291 "MSRIndex": "0x1A6",
292 "SampleAfterValue": "100000",
293 "BriefDescription": "Offcore request = all data, response = any LLC miss",
294 "Offcore": "1"
295 },
296 {
297 "EventCode": "0xB7",
298 "MSRValue": "0x4033",
299 "Counter": "2",
300 "UMask": "0x1",
301 "EventName": "OFFCORE_RESPONSE.DATA_IN.LOCAL_DRAM",
302 "MSRIndex": "0x1A6",
303 "SampleAfterValue": "100000",
304 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the local DRAM.",
305 "Offcore": "1"
306 },
307 {
308 "EventCode": "0xB7",
309 "MSRValue": "0x2033",
310 "Counter": "2",
311 "UMask": "0x1",
312 "EventName": "OFFCORE_RESPONSE.DATA_IN.REMOTE_DRAM",
313 "MSRIndex": "0x1A6",
314 "SampleAfterValue": "100000",
315 "BriefDescription": "Offcore data reads, RFO's and prefetches statisfied by the remote DRAM",
316 "Offcore": "1"
317 },
318 {
319 "EventCode": "0xB7",
320 "MSRValue": "0x6003",
321 "Counter": "2",
322 "UMask": "0x1",
323 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_DRAM",
324 "MSRIndex": "0x1A6",
325 "SampleAfterValue": "100000",
326 "BriefDescription": "Offcore demand data requests satisfied by any DRAM",
327 "Offcore": "1"
328 },
329 {
330 "EventCode": "0xB7",
331 "MSRValue": "0xF803",
332 "Counter": "2",
333 "UMask": "0x1",
334 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.ANY_LLC_MISS",
335 "MSRIndex": "0x1A6",
336 "SampleAfterValue": "100000",
337 "BriefDescription": "Offcore demand data requests that missed the LLC",
338 "Offcore": "1"
339 },
340 {
341 "EventCode": "0xB7",
342 "MSRValue": "0x4003",
343 "Counter": "2",
344 "UMask": "0x1",
345 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.LOCAL_DRAM",
346 "MSRIndex": "0x1A6",
347 "SampleAfterValue": "100000",
348 "BriefDescription": "Offcore demand data requests satisfied by the local DRAM",
349 "Offcore": "1"
350 },
351 {
352 "EventCode": "0xB7",
353 "MSRValue": "0x2003",
354 "Counter": "2",
355 "UMask": "0x1",
356 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA.REMOTE_DRAM",
357 "MSRIndex": "0x1A6",
358 "SampleAfterValue": "100000",
359 "BriefDescription": "Offcore demand data requests satisfied by a remote DRAM",
360 "Offcore": "1"
361 },
362 {
363 "EventCode": "0xB7",
364 "MSRValue": "0x6001",
365 "Counter": "2",
366 "UMask": "0x1",
367 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_DRAM",
368 "MSRIndex": "0x1A6",
369 "SampleAfterValue": "100000",
370 "BriefDescription": "Offcore demand data reads satisfied by any DRAM",
371 "Offcore": "1"
372 },
373 {
374 "EventCode": "0xB7",
375 "MSRValue": "0xF801",
376 "Counter": "2",
377 "UMask": "0x1",
378 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_LLC_MISS",
379 "MSRIndex": "0x1A6",
380 "SampleAfterValue": "100000",
381 "BriefDescription": "Offcore demand data reads that missed the LLC",
382 "Offcore": "1"
383 },
384 {
385 "EventCode": "0xB7",
386 "MSRValue": "0x4001",
387 "Counter": "2",
388 "UMask": "0x1",
389 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.LOCAL_DRAM",
390 "MSRIndex": "0x1A6",
391 "SampleAfterValue": "100000",
392 "BriefDescription": "Offcore demand data reads satisfied by the local DRAM",
393 "Offcore": "1"
394 },
395 {
396 "EventCode": "0xB7",
397 "MSRValue": "0x2001",
398 "Counter": "2",
399 "UMask": "0x1",
400 "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.REMOTE_DRAM",
401 "MSRIndex": "0x1A6",
402 "SampleAfterValue": "100000",
403 "BriefDescription": "Offcore demand data reads satisfied by a remote DRAM",
404 "Offcore": "1"
405 },
406 {
407 "EventCode": "0xB7",
408 "MSRValue": "0x6004",
409 "Counter": "2",
410 "UMask": "0x1",
411 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_DRAM",
412 "MSRIndex": "0x1A6",
413 "SampleAfterValue": "100000",
414 "BriefDescription": "Offcore demand code reads satisfied by any DRAM",
415 "Offcore": "1"
416 },
417 {
418 "EventCode": "0xB7",
419 "MSRValue": "0xF804",
420 "Counter": "2",
421 "UMask": "0x1",
422 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.ANY_LLC_MISS",
423 "MSRIndex": "0x1A6",
424 "SampleAfterValue": "100000",
425 "BriefDescription": "Offcore demand code reads that missed the LLC",
426 "Offcore": "1"
427 },
428 {
429 "EventCode": "0xB7",
430 "MSRValue": "0x4004",
431 "Counter": "2",
432 "UMask": "0x1",
433 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.LOCAL_DRAM",
434 "MSRIndex": "0x1A6",
435 "SampleAfterValue": "100000",
436 "BriefDescription": "Offcore demand code reads satisfied by the local DRAM",
437 "Offcore": "1"
438 },
439 {
440 "EventCode": "0xB7",
441 "MSRValue": "0x2004",
442 "Counter": "2",
443 "UMask": "0x1",
444 "EventName": "OFFCORE_RESPONSE.DEMAND_IFETCH.REMOTE_DRAM",
445 "MSRIndex": "0x1A6",
446 "SampleAfterValue": "100000",
447 "BriefDescription": "Offcore demand code reads satisfied by a remote DRAM",
448 "Offcore": "1"
449 },
450 {
451 "EventCode": "0xB7",
452 "MSRValue": "0x6002",
453 "Counter": "2",
454 "UMask": "0x1",
455 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_DRAM",
456 "MSRIndex": "0x1A6",
457 "SampleAfterValue": "100000",
458 "BriefDescription": "Offcore demand RFO requests satisfied by any DRAM",
459 "Offcore": "1"
460 },
461 {
462 "EventCode": "0xB7",
463 "MSRValue": "0xF802",
464 "Counter": "2",
465 "UMask": "0x1",
466 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_LLC_MISS",
467 "MSRIndex": "0x1A6",
468 "SampleAfterValue": "100000",
469 "BriefDescription": "Offcore demand RFO requests that missed the LLC",
470 "Offcore": "1"
471 },
472 {
473 "EventCode": "0xB7",
474 "MSRValue": "0x4002",
475 "Counter": "2",
476 "UMask": "0x1",
477 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.LOCAL_DRAM",
478 "MSRIndex": "0x1A6",
479 "SampleAfterValue": "100000",
480 "BriefDescription": "Offcore demand RFO requests satisfied by the local DRAM",
481 "Offcore": "1"
482 },
483 {
484 "EventCode": "0xB7",
485 "MSRValue": "0x2002",
486 "Counter": "2",
487 "UMask": "0x1",
488 "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.REMOTE_DRAM",
489 "MSRIndex": "0x1A6",
490 "SampleAfterValue": "100000",
491 "BriefDescription": "Offcore demand RFO requests satisfied by a remote DRAM",
492 "Offcore": "1"
493 },
494 {
495 "EventCode": "0xB7",
496 "MSRValue": "0x6080",
497 "Counter": "2",
498 "UMask": "0x1",
499 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_DRAM",
500 "MSRIndex": "0x1A6",
501 "SampleAfterValue": "100000",
502 "BriefDescription": "Offcore other requests satisfied by any DRAM",
503 "Offcore": "1"
504 },
505 {
506 "EventCode": "0xB7",
507 "MSRValue": "0xF880",
508 "Counter": "2",
509 "UMask": "0x1",
510 "EventName": "OFFCORE_RESPONSE.OTHER.ANY_LLC_MISS",
511 "MSRIndex": "0x1A6",
512 "SampleAfterValue": "100000",
513 "BriefDescription": "Offcore other requests that missed the LLC",
514 "Offcore": "1"
515 },
516 {
517 "EventCode": "0xB7",
518 "MSRValue": "0x2080",
519 "Counter": "2",
520 "UMask": "0x1",
521 "EventName": "OFFCORE_RESPONSE.OTHER.REMOTE_DRAM",
522 "MSRIndex": "0x1A6",
523 "SampleAfterValue": "100000",
524 "BriefDescription": "Offcore other requests satisfied by a remote DRAM",
525 "Offcore": "1"
526 },
527 {
528 "EventCode": "0xB7",
529 "MSRValue": "0x6030",
530 "Counter": "2",
531 "UMask": "0x1",
532 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_DRAM",
533 "MSRIndex": "0x1A6",
534 "SampleAfterValue": "100000",
535 "BriefDescription": "Offcore prefetch data requests satisfied by any DRAM",
536 "Offcore": "1"
537 },
538 {
539 "EventCode": "0xB7",
540 "MSRValue": "0xF830",
541 "Counter": "2",
542 "UMask": "0x1",
543 "EventName": "OFFCORE_RESPONSE.PF_DATA.ANY_LLC_MISS",
544 "MSRIndex": "0x1A6",
545 "SampleAfterValue": "100000",
546 "BriefDescription": "Offcore prefetch data requests that missed the LLC",
547 "Offcore": "1"
548 },
549 {
550 "EventCode": "0xB7",
551 "MSRValue": "0x4030",
552 "Counter": "2",
553 "UMask": "0x1",
554 "EventName": "OFFCORE_RESPONSE.PF_DATA.LOCAL_DRAM",
555 "MSRIndex": "0x1A6",
556 "SampleAfterValue": "100000",
557 "BriefDescription": "Offcore prefetch data requests satisfied by the local DRAM",
558 "Offcore": "1"
559 },
560 {
561 "EventCode": "0xB7",
562 "MSRValue": "0x2030",
563 "Counter": "2",
564 "UMask": "0x1",
565 "EventName": "OFFCORE_RESPONSE.PF_DATA.REMOTE_DRAM",
566 "MSRIndex": "0x1A6",
567 "SampleAfterValue": "100000",
568 "BriefDescription": "Offcore prefetch data requests satisfied by a remote DRAM",
569 "Offcore": "1"
570 },
571 {
572 "EventCode": "0xB7",
573 "MSRValue": "0x6010",
574 "Counter": "2",
575 "UMask": "0x1",
576 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_DRAM",
577 "MSRIndex": "0x1A6",
578 "SampleAfterValue": "100000",
579 "BriefDescription": "Offcore prefetch data reads satisfied by any DRAM",
580 "Offcore": "1"
581 },
582 {
583 "EventCode": "0xB7",
584 "MSRValue": "0xF810",
585 "Counter": "2",
586 "UMask": "0x1",
587 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.ANY_LLC_MISS",
588 "MSRIndex": "0x1A6",
589 "SampleAfterValue": "100000",
590 "BriefDescription": "Offcore prefetch data reads that missed the LLC",
591 "Offcore": "1"
592 },
593 {
594 "EventCode": "0xB7",
595 "MSRValue": "0x4010",
596 "Counter": "2",
597 "UMask": "0x1",
598 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.LOCAL_DRAM",
599 "MSRIndex": "0x1A6",
600 "SampleAfterValue": "100000",
601 "BriefDescription": "Offcore prefetch data reads satisfied by the local DRAM",
602 "Offcore": "1"
603 },
604 {
605 "EventCode": "0xB7",
606 "MSRValue": "0x2010",
607 "Counter": "2",
608 "UMask": "0x1",
609 "EventName": "OFFCORE_RESPONSE.PF_DATA_RD.REMOTE_DRAM",
610 "MSRIndex": "0x1A6",
611 "SampleAfterValue": "100000",
612 "BriefDescription": "Offcore prefetch data reads satisfied by a remote DRAM",
613 "Offcore": "1"
614 },
615 {
616 "EventCode": "0xB7",
617 "MSRValue": "0x6040",
618 "Counter": "2",
619 "UMask": "0x1",
620 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_DRAM",
621 "MSRIndex": "0x1A6",
622 "SampleAfterValue": "100000",
623 "BriefDescription": "Offcore prefetch code reads satisfied by any DRAM",
624 "Offcore": "1"
625 },
626 {
627 "EventCode": "0xB7",
628 "MSRValue": "0xF840",
629 "Counter": "2",
630 "UMask": "0x1",
631 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.ANY_LLC_MISS",
632 "MSRIndex": "0x1A6",
633 "SampleAfterValue": "100000",
634 "BriefDescription": "Offcore prefetch code reads that missed the LLC",
635 "Offcore": "1"
636 },
637 {
638 "EventCode": "0xB7",
639 "MSRValue": "0x4040",
640 "Counter": "2",
641 "UMask": "0x1",
642 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.LOCAL_DRAM",
643 "MSRIndex": "0x1A6",
644 "SampleAfterValue": "100000",
645 "BriefDescription": "Offcore prefetch code reads satisfied by the local DRAM",
646 "Offcore": "1"
647 },
648 {
649 "EventCode": "0xB7",
650 "MSRValue": "0x2040",
651 "Counter": "2",
652 "UMask": "0x1",
653 "EventName": "OFFCORE_RESPONSE.PF_IFETCH.REMOTE_DRAM",
654 "MSRIndex": "0x1A6",
655 "SampleAfterValue": "100000",
656 "BriefDescription": "Offcore prefetch code reads satisfied by a remote DRAM",
657 "Offcore": "1"
658 },
659 {
660 "EventCode": "0xB7",
661 "MSRValue": "0x6020",
662 "Counter": "2",
663 "UMask": "0x1",
664 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_DRAM",
665 "MSRIndex": "0x1A6",
666 "SampleAfterValue": "100000",
667 "BriefDescription": "Offcore prefetch RFO requests satisfied by any DRAM",
668 "Offcore": "1"
669 },
670 {
671 "EventCode": "0xB7",
672 "MSRValue": "0xF820",
673 "Counter": "2",
674 "UMask": "0x1",
675 "EventName": "OFFCORE_RESPONSE.PF_RFO.ANY_LLC_MISS",
676 "MSRIndex": "0x1A6",
677 "SampleAfterValue": "100000",
678 "BriefDescription": "Offcore prefetch RFO requests that missed the LLC",
679 "Offcore": "1"
680 },
681 {
682 "EventCode": "0xB7",
683 "MSRValue": "0x4020",
684 "Counter": "2",
685 "UMask": "0x1",
686 "EventName": "OFFCORE_RESPONSE.PF_RFO.LOCAL_DRAM",
687 "MSRIndex": "0x1A6",
688 "SampleAfterValue": "100000",
689 "BriefDescription": "Offcore prefetch RFO requests satisfied by the local DRAM",
690 "Offcore": "1"
691 },
692 {
693 "EventCode": "0xB7",
694 "MSRValue": "0x2020",
695 "Counter": "2",
696 "UMask": "0x1",
697 "EventName": "OFFCORE_RESPONSE.PF_RFO.REMOTE_DRAM",
698 "MSRIndex": "0x1A6",
699 "SampleAfterValue": "100000",
700 "BriefDescription": "Offcore prefetch RFO requests satisfied by a remote DRAM",
701 "Offcore": "1"
702 },
703 {
704 "EventCode": "0xB7",
705 "MSRValue": "0x6070",
706 "Counter": "2",
707 "UMask": "0x1",
708 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_DRAM",
709 "MSRIndex": "0x1A6",
710 "SampleAfterValue": "100000",
711 "BriefDescription": "Offcore prefetch requests satisfied by any DRAM",
712 "Offcore": "1"
713 },
714 {
715 "EventCode": "0xB7",
716 "MSRValue": "0xF870",
717 "Counter": "2",
718 "UMask": "0x1",
719 "EventName": "OFFCORE_RESPONSE.PREFETCH.ANY_LLC_MISS",
720 "MSRIndex": "0x1A6",
721 "SampleAfterValue": "100000",
722 "BriefDescription": "Offcore prefetch requests that missed the LLC",
723 "Offcore": "1"
724 },
725 {
726 "EventCode": "0xB7",
727 "MSRValue": "0x4070",
728 "Counter": "2",
729 "UMask": "0x1",
730 "EventName": "OFFCORE_RESPONSE.PREFETCH.LOCAL_DRAM",
731 "MSRIndex": "0x1A6",
732 "SampleAfterValue": "100000",
733 "BriefDescription": "Offcore prefetch requests satisfied by the local DRAM",
734 "Offcore": "1"
735 },
736 {
737 "EventCode": "0xB7",
738 "MSRValue": "0x2070",
739 "Counter": "2",
740 "UMask": "0x1",
741 "EventName": "OFFCORE_RESPONSE.PREFETCH.REMOTE_DRAM",
742 "MSRIndex": "0x1A6",
743 "SampleAfterValue": "100000",
744 "BriefDescription": "Offcore prefetch requests satisfied by a remote DRAM",
745 "Offcore": "1"
746 }
747] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereex/other.json b/tools/perf/pmu-events/arch/x86/westmereex/other.json
new file mode 100644
index 000000000000..85133d6a5ce0
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereex/other.json
@@ -0,0 +1,287 @@
1[
2 {
3 "EventCode": "0xE8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "BPU_CLEARS.EARLY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Early Branch Prediciton Unit clears"
9 },
10 {
11 "EventCode": "0xE8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x2",
14 "EventName": "BPU_CLEARS.LATE",
15 "SampleAfterValue": "2000000",
16 "BriefDescription": "Late Branch Prediction Unit clears"
17 },
18 {
19 "EventCode": "0xE5",
20 "Counter": "0,1,2,3",
21 "UMask": "0x1",
22 "EventName": "BPU_MISSED_CALL_RET",
23 "SampleAfterValue": "2000000",
24 "BriefDescription": "Branch prediction unit missed call or return"
25 },
26 {
27 "EventCode": "0xD5",
28 "Counter": "0,1,2,3",
29 "UMask": "0x1",
30 "EventName": "ES_REG_RENAMES",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "ES segment renames"
33 },
34 {
35 "EventCode": "0x6C",
36 "Counter": "0,1,2,3",
37 "UMask": "0x1",
38 "EventName": "IO_TRANSACTIONS",
39 "SampleAfterValue": "2000000",
40 "BriefDescription": "I/O transactions"
41 },
42 {
43 "EventCode": "0x80",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "L1I.CYCLES_STALLED",
47 "SampleAfterValue": "2000000",
48 "BriefDescription": "L1I instruction fetch stall cycles"
49 },
50 {
51 "EventCode": "0x80",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "L1I.HITS",
55 "SampleAfterValue": "2000000",
56 "BriefDescription": "L1I instruction fetch hits"
57 },
58 {
59 "EventCode": "0x80",
60 "Counter": "0,1,2,3",
61 "UMask": "0x2",
62 "EventName": "L1I.MISSES",
63 "SampleAfterValue": "2000000",
64 "BriefDescription": "L1I instruction fetch misses"
65 },
66 {
67 "EventCode": "0x80",
68 "Counter": "0,1,2,3",
69 "UMask": "0x3",
70 "EventName": "L1I.READS",
71 "SampleAfterValue": "2000000",
72 "BriefDescription": "L1I Instruction fetches"
73 },
74 {
75 "EventCode": "0x82",
76 "Counter": "0,1,2,3",
77 "UMask": "0x1",
78 "EventName": "LARGE_ITLB.HIT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "Large ITLB hit"
81 },
82 {
83 "EventCode": "0x3",
84 "Counter": "0,1,2,3",
85 "UMask": "0x2",
86 "EventName": "LOAD_BLOCK.OVERLAP_STORE",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "Loads that partially overlap an earlier store"
89 },
90 {
91 "EventCode": "0x13",
92 "Counter": "0,1,2,3",
93 "UMask": "0x7",
94 "EventName": "LOAD_DISPATCH.ANY",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "All loads dispatched"
97 },
98 {
99 "EventCode": "0x13",
100 "Counter": "0,1,2,3",
101 "UMask": "0x4",
102 "EventName": "LOAD_DISPATCH.MOB",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Loads dispatched from the MOB"
105 },
106 {
107 "EventCode": "0x13",
108 "Counter": "0,1,2,3",
109 "UMask": "0x1",
110 "EventName": "LOAD_DISPATCH.RS",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "Loads dispatched that bypass the MOB"
113 },
114 {
115 "EventCode": "0x13",
116 "Counter": "0,1,2,3",
117 "UMask": "0x2",
118 "EventName": "LOAD_DISPATCH.RS_DELAYED",
119 "SampleAfterValue": "2000000",
120 "BriefDescription": "Loads dispatched from stage 305"
121 },
122 {
123 "EventCode": "0x7",
124 "Counter": "0,1,2,3",
125 "UMask": "0x1",
126 "EventName": "PARTIAL_ADDRESS_ALIAS",
127 "SampleAfterValue": "200000",
128 "BriefDescription": "False dependencies due to partial address aliasing"
129 },
130 {
131 "EventCode": "0xD2",
132 "Counter": "0,1,2,3",
133 "UMask": "0xf",
134 "EventName": "RAT_STALLS.ANY",
135 "SampleAfterValue": "2000000",
136 "BriefDescription": "All RAT stall cycles"
137 },
138 {
139 "EventCode": "0xD2",
140 "Counter": "0,1,2,3",
141 "UMask": "0x1",
142 "EventName": "RAT_STALLS.FLAGS",
143 "SampleAfterValue": "2000000",
144 "BriefDescription": "Flag stall cycles"
145 },
146 {
147 "EventCode": "0xD2",
148 "Counter": "0,1,2,3",
149 "UMask": "0x2",
150 "EventName": "RAT_STALLS.REGISTERS",
151 "SampleAfterValue": "2000000",
152 "BriefDescription": "Partial register stall cycles"
153 },
154 {
155 "EventCode": "0xD2",
156 "Counter": "0,1,2,3",
157 "UMask": "0x4",
158 "EventName": "RAT_STALLS.ROB_READ_PORT",
159 "SampleAfterValue": "2000000",
160 "BriefDescription": "ROB read port stalls cycles"
161 },
162 {
163 "EventCode": "0xD2",
164 "Counter": "0,1,2,3",
165 "UMask": "0x8",
166 "EventName": "RAT_STALLS.SCOREBOARD",
167 "SampleAfterValue": "2000000",
168 "BriefDescription": "Scoreboard stall cycles"
169 },
170 {
171 "EventCode": "0x4",
172 "Counter": "0,1,2,3",
173 "UMask": "0x7",
174 "EventName": "SB_DRAIN.ANY",
175 "SampleAfterValue": "200000",
176 "BriefDescription": "All Store buffer stall cycles"
177 },
178 {
179 "EventCode": "0xD4",
180 "Counter": "0,1,2,3",
181 "UMask": "0x1",
182 "EventName": "SEG_RENAME_STALLS",
183 "SampleAfterValue": "2000000",
184 "BriefDescription": "Segment rename stall cycles"
185 },
186 {
187 "EventCode": "0xB8",
188 "Counter": "0,1,2,3",
189 "UMask": "0x1",
190 "EventName": "SNOOP_RESPONSE.HIT",
191 "SampleAfterValue": "100000",
192 "BriefDescription": "Thread responded HIT to snoop"
193 },
194 {
195 "EventCode": "0xB8",
196 "Counter": "0,1,2,3",
197 "UMask": "0x2",
198 "EventName": "SNOOP_RESPONSE.HITE",
199 "SampleAfterValue": "100000",
200 "BriefDescription": "Thread responded HITE to snoop"
201 },
202 {
203 "EventCode": "0xB8",
204 "Counter": "0,1,2,3",
205 "UMask": "0x4",
206 "EventName": "SNOOP_RESPONSE.HITM",
207 "SampleAfterValue": "100000",
208 "BriefDescription": "Thread responded HITM to snoop"
209 },
210 {
211 "EventCode": "0xB4",
212 "Counter": "0,1,2,3",
213 "UMask": "0x4",
214 "EventName": "SNOOPQ_REQUESTS.CODE",
215 "SampleAfterValue": "100000",
216 "BriefDescription": "Snoop code requests"
217 },
218 {
219 "EventCode": "0xB4",
220 "Counter": "0,1,2,3",
221 "UMask": "0x1",
222 "EventName": "SNOOPQ_REQUESTS.DATA",
223 "SampleAfterValue": "100000",
224 "BriefDescription": "Snoop data requests"
225 },
226 {
227 "EventCode": "0xB4",
228 "Counter": "0,1,2,3",
229 "UMask": "0x2",
230 "EventName": "SNOOPQ_REQUESTS.INVALIDATE",
231 "SampleAfterValue": "100000",
232 "BriefDescription": "Snoop invalidate requests"
233 },
234 {
235 "EventCode": "0xB3",
236 "UMask": "0x4",
237 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.CODE",
238 "SampleAfterValue": "2000000",
239 "BriefDescription": "Outstanding snoop code requests"
240 },
241 {
242 "EventCode": "0xB3",
243 "UMask": "0x4",
244 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.CODE_NOT_EMPTY",
245 "SampleAfterValue": "2000000",
246 "BriefDescription": "Cycles snoop code requests queued",
247 "CounterMask": "1"
248 },
249 {
250 "EventCode": "0xB3",
251 "UMask": "0x1",
252 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.DATA",
253 "SampleAfterValue": "2000000",
254 "BriefDescription": "Outstanding snoop data requests"
255 },
256 {
257 "EventCode": "0xB3",
258 "UMask": "0x1",
259 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.DATA_NOT_EMPTY",
260 "SampleAfterValue": "2000000",
261 "BriefDescription": "Cycles snoop data requests queued",
262 "CounterMask": "1"
263 },
264 {
265 "EventCode": "0xB3",
266 "UMask": "0x2",
267 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.INVALIDATE",
268 "SampleAfterValue": "2000000",
269 "BriefDescription": "Outstanding snoop invalidate requests"
270 },
271 {
272 "EventCode": "0xB3",
273 "UMask": "0x2",
274 "EventName": "SNOOPQ_REQUESTS_OUTSTANDING.INVALIDATE_NOT_EMPTY",
275 "SampleAfterValue": "2000000",
276 "BriefDescription": "Cycles snoop invalidate requests queued",
277 "CounterMask": "1"
278 },
279 {
280 "EventCode": "0xF6",
281 "Counter": "0,1,2,3",
282 "UMask": "0x1",
283 "EventName": "SQ_FULL_STALL_CYCLES",
284 "SampleAfterValue": "2000000",
285 "BriefDescription": "Super Queue full stall cycles"
286 }
287] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereex/pipeline.json b/tools/perf/pmu-events/arch/x86/westmereex/pipeline.json
new file mode 100644
index 000000000000..799c57d94c39
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereex/pipeline.json
@@ -0,0 +1,905 @@
1[
2 {
3 "EventCode": "0x14",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "ARITH.CYCLES_DIV_BUSY",
7 "SampleAfterValue": "2000000",
8 "BriefDescription": "Cycles the divider is busy"
9 },
10 {
11 "EventCode": "0x14",
12 "Invert": "1",
13 "Counter": "0,1,2,3",
14 "UMask": "0x1",
15 "EventName": "ARITH.DIV",
16 "SampleAfterValue": "2000000",
17 "BriefDescription": "Divide Operations executed",
18 "CounterMask": "1",
19 "EdgeDetect": "1"
20 },
21 {
22 "EventCode": "0x14",
23 "Counter": "0,1,2,3",
24 "UMask": "0x2",
25 "EventName": "ARITH.MUL",
26 "SampleAfterValue": "2000000",
27 "BriefDescription": "Multiply operations executed"
28 },
29 {
30 "EventCode": "0xE6",
31 "Counter": "0,1,2,3",
32 "UMask": "0x2",
33 "EventName": "BACLEAR.BAD_TARGET",
34 "SampleAfterValue": "2000000",
35 "BriefDescription": "BACLEAR asserted with bad target address"
36 },
37 {
38 "EventCode": "0xE6",
39 "Counter": "0,1,2,3",
40 "UMask": "0x1",
41 "EventName": "BACLEAR.CLEAR",
42 "SampleAfterValue": "2000000",
43 "BriefDescription": "BACLEAR asserted, regardless of cause "
44 },
45 {
46 "EventCode": "0xA7",
47 "Counter": "0,1,2,3",
48 "UMask": "0x1",
49 "EventName": "BACLEAR_FORCE_IQ",
50 "SampleAfterValue": "2000000",
51 "BriefDescription": "Instruction queue forced BACLEAR"
52 },
53 {
54 "EventCode": "0xE0",
55 "Counter": "0,1,2,3",
56 "UMask": "0x1",
57 "EventName": "BR_INST_DECODED",
58 "SampleAfterValue": "2000000",
59 "BriefDescription": "Branch instructions decoded"
60 },
61 {
62 "EventCode": "0x88",
63 "Counter": "0,1,2,3",
64 "UMask": "0x7f",
65 "EventName": "BR_INST_EXEC.ANY",
66 "SampleAfterValue": "200000",
67 "BriefDescription": "Branch instructions executed"
68 },
69 {
70 "EventCode": "0x88",
71 "Counter": "0,1,2,3",
72 "UMask": "0x1",
73 "EventName": "BR_INST_EXEC.COND",
74 "SampleAfterValue": "200000",
75 "BriefDescription": "Conditional branch instructions executed"
76 },
77 {
78 "EventCode": "0x88",
79 "Counter": "0,1,2,3",
80 "UMask": "0x2",
81 "EventName": "BR_INST_EXEC.DIRECT",
82 "SampleAfterValue": "200000",
83 "BriefDescription": "Unconditional branches executed"
84 },
85 {
86 "EventCode": "0x88",
87 "Counter": "0,1,2,3",
88 "UMask": "0x10",
89 "EventName": "BR_INST_EXEC.DIRECT_NEAR_CALL",
90 "SampleAfterValue": "20000",
91 "BriefDescription": "Unconditional call branches executed"
92 },
93 {
94 "EventCode": "0x88",
95 "Counter": "0,1,2,3",
96 "UMask": "0x20",
97 "EventName": "BR_INST_EXEC.INDIRECT_NEAR_CALL",
98 "SampleAfterValue": "20000",
99 "BriefDescription": "Indirect call branches executed"
100 },
101 {
102 "EventCode": "0x88",
103 "Counter": "0,1,2,3",
104 "UMask": "0x4",
105 "EventName": "BR_INST_EXEC.INDIRECT_NON_CALL",
106 "SampleAfterValue": "20000",
107 "BriefDescription": "Indirect non call branches executed"
108 },
109 {
110 "EventCode": "0x88",
111 "Counter": "0,1,2,3",
112 "UMask": "0x30",
113 "EventName": "BR_INST_EXEC.NEAR_CALLS",
114 "SampleAfterValue": "20000",
115 "BriefDescription": "Call branches executed"
116 },
117 {
118 "EventCode": "0x88",
119 "Counter": "0,1,2,3",
120 "UMask": "0x7",
121 "EventName": "BR_INST_EXEC.NON_CALLS",
122 "SampleAfterValue": "200000",
123 "BriefDescription": "All non call branches executed"
124 },
125 {
126 "EventCode": "0x88",
127 "Counter": "0,1,2,3",
128 "UMask": "0x8",
129 "EventName": "BR_INST_EXEC.RETURN_NEAR",
130 "SampleAfterValue": "20000",
131 "BriefDescription": "Indirect return branches executed"
132 },
133 {
134 "EventCode": "0x88",
135 "Counter": "0,1,2,3",
136 "UMask": "0x40",
137 "EventName": "BR_INST_EXEC.TAKEN",
138 "SampleAfterValue": "200000",
139 "BriefDescription": "Taken branches executed"
140 },
141 {
142 "PEBS": "1",
143 "EventCode": "0xC4",
144 "Counter": "0,1,2,3",
145 "UMask": "0x4",
146 "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
147 "SampleAfterValue": "200000",
148 "BriefDescription": "Retired branch instructions (Precise Event)"
149 },
150 {
151 "PEBS": "1",
152 "EventCode": "0xC4",
153 "Counter": "0,1,2,3",
154 "UMask": "0x1",
155 "EventName": "BR_INST_RETIRED.CONDITIONAL",
156 "SampleAfterValue": "200000",
157 "BriefDescription": "Retired conditional branch instructions (Precise Event)"
158 },
159 {
160 "PEBS": "1",
161 "EventCode": "0xC4",
162 "Counter": "0,1,2,3",
163 "UMask": "0x2",
164 "EventName": "BR_INST_RETIRED.NEAR_CALL",
165 "SampleAfterValue": "20000",
166 "BriefDescription": "Retired near call instructions (Precise Event)"
167 },
168 {
169 "EventCode": "0x89",
170 "Counter": "0,1,2,3",
171 "UMask": "0x7f",
172 "EventName": "BR_MISP_EXEC.ANY",
173 "SampleAfterValue": "20000",
174 "BriefDescription": "Mispredicted branches executed"
175 },
176 {
177 "EventCode": "0x89",
178 "Counter": "0,1,2,3",
179 "UMask": "0x1",
180 "EventName": "BR_MISP_EXEC.COND",
181 "SampleAfterValue": "20000",
182 "BriefDescription": "Mispredicted conditional branches executed"
183 },
184 {
185 "EventCode": "0x89",
186 "Counter": "0,1,2,3",
187 "UMask": "0x2",
188 "EventName": "BR_MISP_EXEC.DIRECT",
189 "SampleAfterValue": "20000",
190 "BriefDescription": "Mispredicted unconditional branches executed"
191 },
192 {
193 "EventCode": "0x89",
194 "Counter": "0,1,2,3",
195 "UMask": "0x10",
196 "EventName": "BR_MISP_EXEC.DIRECT_NEAR_CALL",
197 "SampleAfterValue": "2000",
198 "BriefDescription": "Mispredicted non call branches executed"
199 },
200 {
201 "EventCode": "0x89",
202 "Counter": "0,1,2,3",
203 "UMask": "0x20",
204 "EventName": "BR_MISP_EXEC.INDIRECT_NEAR_CALL",
205 "SampleAfterValue": "2000",
206 "BriefDescription": "Mispredicted indirect call branches executed"
207 },
208 {
209 "EventCode": "0x89",
210 "Counter": "0,1,2,3",
211 "UMask": "0x4",
212 "EventName": "BR_MISP_EXEC.INDIRECT_NON_CALL",
213 "SampleAfterValue": "2000",
214 "BriefDescription": "Mispredicted indirect non call branches executed"
215 },
216 {
217 "EventCode": "0x89",
218 "Counter": "0,1,2,3",
219 "UMask": "0x30",
220 "EventName": "BR_MISP_EXEC.NEAR_CALLS",
221 "SampleAfterValue": "2000",
222 "BriefDescription": "Mispredicted call branches executed"
223 },
224 {
225 "EventCode": "0x89",
226 "Counter": "0,1,2,3",
227 "UMask": "0x7",
228 "EventName": "BR_MISP_EXEC.NON_CALLS",
229 "SampleAfterValue": "20000",
230 "BriefDescription": "Mispredicted non call branches executed"
231 },
232 {
233 "EventCode": "0x89",
234 "Counter": "0,1,2,3",
235 "UMask": "0x8",
236 "EventName": "BR_MISP_EXEC.RETURN_NEAR",
237 "SampleAfterValue": "2000",
238 "BriefDescription": "Mispredicted return branches executed"
239 },
240 {
241 "EventCode": "0x89",
242 "Counter": "0,1,2,3",
243 "UMask": "0x40",
244 "EventName": "BR_MISP_EXEC.TAKEN",
245 "SampleAfterValue": "20000",
246 "BriefDescription": "Mispredicted taken branches executed"
247 },
248 {
249 "PEBS": "1",
250 "EventCode": "0xC5",
251 "Counter": "0,1,2,3",
252 "UMask": "0x4",
253 "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
254 "SampleAfterValue": "20000",
255 "BriefDescription": "Mispredicted retired branch instructions (Precise Event)"
256 },
257 {
258 "PEBS": "1",
259 "EventCode": "0xC5",
260 "Counter": "0,1,2,3",
261 "UMask": "0x1",
262 "EventName": "BR_MISP_RETIRED.CONDITIONAL",
263 "SampleAfterValue": "20000",
264 "BriefDescription": "Mispredicted conditional retired branches (Precise Event)"
265 },
266 {
267 "PEBS": "1",
268 "EventCode": "0xC5",
269 "Counter": "0,1,2,3",
270 "UMask": "0x2",
271 "EventName": "BR_MISP_RETIRED.NEAR_CALL",
272 "SampleAfterValue": "2000",
273 "BriefDescription": "Mispredicted near retired calls (Precise Event)"
274 },
275 {
276 "EventCode": "0x0",
277 "Counter": "Fixed counter 3",
278 "UMask": "0x0",
279 "EventName": "CPU_CLK_UNHALTED.REF",
280 "SampleAfterValue": "2000000",
281 "BriefDescription": "Reference cycles when thread is not halted (fixed counter)"
282 },
283 {
284 "EventCode": "0x3C",
285 "Counter": "0,1,2,3",
286 "UMask": "0x1",
287 "EventName": "CPU_CLK_UNHALTED.REF_P",
288 "SampleAfterValue": "100000",
289 "BriefDescription": "Reference base clock (133 Mhz) cycles when thread is not halted (programmable counter)"
290 },
291 {
292 "EventCode": "0x0",
293 "Counter": "Fixed counter 2",
294 "UMask": "0x0",
295 "EventName": "CPU_CLK_UNHALTED.THREAD",
296 "SampleAfterValue": "2000000",
297 "BriefDescription": "Cycles when thread is not halted (fixed counter)"
298 },
299 {
300 "EventCode": "0x3C",
301 "Counter": "0,1,2,3",
302 "UMask": "0x0",
303 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
304 "SampleAfterValue": "2000000",
305 "BriefDescription": "Cycles when thread is not halted (programmable counter)"
306 },
307 {
308 "EventCode": "0x3C",
309 "Invert": "1",
310 "Counter": "0,1,2,3",
311 "UMask": "0x0",
312 "EventName": "CPU_CLK_UNHALTED.TOTAL_CYCLES",
313 "SampleAfterValue": "2000000",
314 "BriefDescription": "Total CPU cycles",
315 "CounterMask": "2"
316 },
317 {
318 "EventCode": "0x87",
319 "Counter": "0,1,2,3",
320 "UMask": "0xf",
321 "EventName": "ILD_STALL.ANY",
322 "SampleAfterValue": "2000000",
323 "BriefDescription": "Any Instruction Length Decoder stall cycles"
324 },
325 {
326 "EventCode": "0x87",
327 "Counter": "0,1,2,3",
328 "UMask": "0x4",
329 "EventName": "ILD_STALL.IQ_FULL",
330 "SampleAfterValue": "2000000",
331 "BriefDescription": "Instruction Queue full stall cycles"
332 },
333 {
334 "EventCode": "0x87",
335 "Counter": "0,1,2,3",
336 "UMask": "0x1",
337 "EventName": "ILD_STALL.LCP",
338 "SampleAfterValue": "2000000",
339 "BriefDescription": "Length Change Prefix stall cycles"
340 },
341 {
342 "EventCode": "0x87",
343 "Counter": "0,1,2,3",
344 "UMask": "0x2",
345 "EventName": "ILD_STALL.MRU",
346 "SampleAfterValue": "2000000",
347 "BriefDescription": "Stall cycles due to BPU MRU bypass"
348 },
349 {
350 "EventCode": "0x87",
351 "Counter": "0,1,2,3",
352 "UMask": "0x8",
353 "EventName": "ILD_STALL.REGEN",
354 "SampleAfterValue": "2000000",
355 "BriefDescription": "Regen stall cycles"
356 },
357 {
358 "EventCode": "0x18",
359 "Counter": "0,1,2,3",
360 "UMask": "0x1",
361 "EventName": "INST_DECODED.DEC0",
362 "SampleAfterValue": "2000000",
363 "BriefDescription": "Instructions that must be decoded by decoder 0"
364 },
365 {
366 "EventCode": "0x1E",
367 "Counter": "0,1,2,3",
368 "UMask": "0x1",
369 "EventName": "INST_QUEUE_WRITE_CYCLES",
370 "SampleAfterValue": "2000000",
371 "BriefDescription": "Cycles instructions are written to the instruction queue"
372 },
373 {
374 "EventCode": "0x17",
375 "Counter": "0,1,2,3",
376 "UMask": "0x1",
377 "EventName": "INST_QUEUE_WRITES",
378 "SampleAfterValue": "2000000",
379 "BriefDescription": "Instructions written to instruction queue."
380 },
381 {
382 "EventCode": "0x0",
383 "Counter": "Fixed counter 1",
384 "UMask": "0x0",
385 "EventName": "INST_RETIRED.ANY",
386 "SampleAfterValue": "2000000",
387 "BriefDescription": "Instructions retired (fixed counter)"
388 },
389 {
390 "PEBS": "1",
391 "EventCode": "0xC0",
392 "Counter": "0,1,2,3",
393 "UMask": "0x1",
394 "EventName": "INST_RETIRED.ANY_P",
395 "SampleAfterValue": "2000000",
396 "BriefDescription": "Instructions retired (Programmable counter and Precise Event)"
397 },
398 {
399 "PEBS": "1",
400 "EventCode": "0xC0",
401 "Counter": "0,1,2,3",
402 "UMask": "0x4",
403 "EventName": "INST_RETIRED.MMX",
404 "SampleAfterValue": "2000000",
405 "BriefDescription": "Retired MMX instructions (Precise Event)"
406 },
407 {
408 "PEBS": "1",
409 "EventCode": "0xC0",
410 "Invert": "1",
411 "Counter": "0,1,2,3",
412 "UMask": "0x1",
413 "EventName": "INST_RETIRED.TOTAL_CYCLES",
414 "SampleAfterValue": "2000000",
415 "BriefDescription": "Total cycles (Precise Event)",
416 "CounterMask": "16"
417 },
418 {
419 "PEBS": "1",
420 "EventCode": "0xC0",
421 "Counter": "0,1,2,3",
422 "UMask": "0x2",
423 "EventName": "INST_RETIRED.X87",
424 "SampleAfterValue": "2000000",
425 "BriefDescription": "Retired floating-point operations (Precise Event)"
426 },
427 {
428 "EventCode": "0x4C",
429 "Counter": "0,1",
430 "UMask": "0x1",
431 "EventName": "LOAD_HIT_PRE",
432 "SampleAfterValue": "200000",
433 "BriefDescription": "Load operations conflicting with software prefetches"
434 },
435 {
436 "EventCode": "0xA8",
437 "Counter": "0,1,2,3",
438 "UMask": "0x1",
439 "EventName": "LSD.ACTIVE",
440 "SampleAfterValue": "2000000",
441 "BriefDescription": "Cycles when uops were delivered by the LSD",
442 "CounterMask": "1"
443 },
444 {
445 "EventCode": "0xA8",
446 "Invert": "1",
447 "Counter": "0,1,2,3",
448 "UMask": "0x1",
449 "EventName": "LSD.INACTIVE",
450 "SampleAfterValue": "2000000",
451 "BriefDescription": "Cycles no uops were delivered by the LSD",
452 "CounterMask": "1"
453 },
454 {
455 "EventCode": "0x20",
456 "Counter": "0,1,2,3",
457 "UMask": "0x1",
458 "EventName": "LSD_OVERFLOW",
459 "SampleAfterValue": "2000000",
460 "BriefDescription": "Loops that can't stream from the instruction queue"
461 },
462 {
463 "EventCode": "0xC3",
464 "Counter": "0,1,2,3",
465 "UMask": "0x1",
466 "EventName": "MACHINE_CLEARS.CYCLES",
467 "SampleAfterValue": "20000",
468 "BriefDescription": "Cycles machine clear asserted"
469 },
470 {
471 "EventCode": "0xC3",
472 "Counter": "0,1,2,3",
473 "UMask": "0x2",
474 "EventName": "MACHINE_CLEARS.MEM_ORDER",
475 "SampleAfterValue": "20000",
476 "BriefDescription": "Execution pipeline restart due to Memory ordering conflicts"
477 },
478 {
479 "EventCode": "0xC3",
480 "Counter": "0,1,2,3",
481 "UMask": "0x4",
482 "EventName": "MACHINE_CLEARS.SMC",
483 "SampleAfterValue": "20000",
484 "BriefDescription": "Self-Modifying Code detected"
485 },
486 {
487 "EventCode": "0xA2",
488 "Counter": "0,1,2,3",
489 "UMask": "0x1",
490 "EventName": "RESOURCE_STALLS.ANY",
491 "SampleAfterValue": "2000000",
492 "BriefDescription": "Resource related stall cycles"
493 },
494 {
495 "EventCode": "0xA2",
496 "Counter": "0,1,2,3",
497 "UMask": "0x20",
498 "EventName": "RESOURCE_STALLS.FPCW",
499 "SampleAfterValue": "2000000",
500 "BriefDescription": "FPU control word write stall cycles"
501 },
502 {
503 "EventCode": "0xA2",
504 "Counter": "0,1,2,3",
505 "UMask": "0x2",
506 "EventName": "RESOURCE_STALLS.LOAD",
507 "SampleAfterValue": "2000000",
508 "BriefDescription": "Load buffer stall cycles"
509 },
510 {
511 "EventCode": "0xA2",
512 "Counter": "0,1,2,3",
513 "UMask": "0x40",
514 "EventName": "RESOURCE_STALLS.MXCSR",
515 "SampleAfterValue": "2000000",
516 "BriefDescription": "MXCSR rename stall cycles"
517 },
518 {
519 "EventCode": "0xA2",
520 "Counter": "0,1,2,3",
521 "UMask": "0x80",
522 "EventName": "RESOURCE_STALLS.OTHER",
523 "SampleAfterValue": "2000000",
524 "BriefDescription": "Other Resource related stall cycles"
525 },
526 {
527 "EventCode": "0xA2",
528 "Counter": "0,1,2,3",
529 "UMask": "0x10",
530 "EventName": "RESOURCE_STALLS.ROB_FULL",
531 "SampleAfterValue": "2000000",
532 "BriefDescription": "ROB full stall cycles"
533 },
534 {
535 "EventCode": "0xA2",
536 "Counter": "0,1,2,3",
537 "UMask": "0x4",
538 "EventName": "RESOURCE_STALLS.RS_FULL",
539 "SampleAfterValue": "2000000",
540 "BriefDescription": "Reservation Station full stall cycles"
541 },
542 {
543 "EventCode": "0xA2",
544 "Counter": "0,1,2,3",
545 "UMask": "0x8",
546 "EventName": "RESOURCE_STALLS.STORE",
547 "SampleAfterValue": "2000000",
548 "BriefDescription": "Store buffer stall cycles"
549 },
550 {
551 "PEBS": "1",
552 "EventCode": "0xC7",
553 "Counter": "0,1,2,3",
554 "UMask": "0x4",
555 "EventName": "SSEX_UOPS_RETIRED.PACKED_DOUBLE",
556 "SampleAfterValue": "200000",
557 "BriefDescription": "SIMD Packed-Double Uops retired (Precise Event)"
558 },
559 {
560 "PEBS": "1",
561 "EventCode": "0xC7",
562 "Counter": "0,1,2,3",
563 "UMask": "0x1",
564 "EventName": "SSEX_UOPS_RETIRED.PACKED_SINGLE",
565 "SampleAfterValue": "200000",
566 "BriefDescription": "SIMD Packed-Single Uops retired (Precise Event)"
567 },
568 {
569 "PEBS": "1",
570 "EventCode": "0xC7",
571 "Counter": "0,1,2,3",
572 "UMask": "0x8",
573 "EventName": "SSEX_UOPS_RETIRED.SCALAR_DOUBLE",
574 "SampleAfterValue": "200000",
575 "BriefDescription": "SIMD Scalar-Double Uops retired (Precise Event)"
576 },
577 {
578 "PEBS": "1",
579 "EventCode": "0xC7",
580 "Counter": "0,1,2,3",
581 "UMask": "0x2",
582 "EventName": "SSEX_UOPS_RETIRED.SCALAR_SINGLE",
583 "SampleAfterValue": "200000",
584 "BriefDescription": "SIMD Scalar-Single Uops retired (Precise Event)"
585 },
586 {
587 "PEBS": "1",
588 "EventCode": "0xC7",
589 "Counter": "0,1,2,3",
590 "UMask": "0x10",
591 "EventName": "SSEX_UOPS_RETIRED.VECTOR_INTEGER",
592 "SampleAfterValue": "200000",
593 "BriefDescription": "SIMD Vector Integer Uops retired (Precise Event)"
594 },
595 {
596 "EventCode": "0x3C",
597 "Counter": "0,1,2,3",
598 "UMask": "0x0",
599 "EventName": "CPU_CLK_UNHALTED.THREAD_P",
600 "SampleAfterValue": "2000000",
601 "BriefDescription": "Cycles thread is active"
602 },
603 {
604 "EventCode": "0xDB",
605 "Counter": "0,1,2,3",
606 "UMask": "0x1",
607 "EventName": "UOP_UNFUSION",
608 "SampleAfterValue": "2000000",
609 "BriefDescription": "Uop unfusions due to FP exceptions"
610 },
611 {
612 "EventCode": "0xD1",
613 "Counter": "0,1,2,3",
614 "UMask": "0x4",
615 "EventName": "UOPS_DECODED.ESP_FOLDING",
616 "SampleAfterValue": "2000000",
617 "BriefDescription": "Stack pointer instructions decoded"
618 },
619 {
620 "EventCode": "0xD1",
621 "Counter": "0,1,2,3",
622 "UMask": "0x8",
623 "EventName": "UOPS_DECODED.ESP_SYNC",
624 "SampleAfterValue": "2000000",
625 "BriefDescription": "Stack pointer sync operations"
626 },
627 {
628 "EventCode": "0xD1",
629 "Counter": "0,1,2,3",
630 "UMask": "0x2",
631 "EventName": "UOPS_DECODED.MS_CYCLES_ACTIVE",
632 "SampleAfterValue": "2000000",
633 "BriefDescription": "Uops decoded by Microcode Sequencer",
634 "CounterMask": "1"
635 },
636 {
637 "EventCode": "0xD1",
638 "Invert": "1",
639 "Counter": "0,1,2,3",
640 "UMask": "0x1",
641 "EventName": "UOPS_DECODED.STALL_CYCLES",
642 "SampleAfterValue": "2000000",
643 "BriefDescription": "Cycles no Uops are decoded",
644 "CounterMask": "1"
645 },
646 {
647 "EventCode": "0xB1",
648 "Counter": "0,1,2,3",
649 "UMask": "0x3f",
650 "AnyThread": "1",
651 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES",
652 "SampleAfterValue": "2000000",
653 "BriefDescription": "Cycles Uops executed on any port (core count)",
654 "CounterMask": "1"
655 },
656 {
657 "EventCode": "0xB1",
658 "Counter": "0,1,2,3",
659 "UMask": "0x1f",
660 "AnyThread": "1",
661 "EventName": "UOPS_EXECUTED.CORE_ACTIVE_CYCLES_NO_PORT5",
662 "SampleAfterValue": "2000000",
663 "BriefDescription": "Cycles Uops executed on ports 0-4 (core count)",
664 "CounterMask": "1"
665 },
666 {
667 "EventCode": "0xB1",
668 "Invert": "1",
669 "Counter": "0,1,2,3",
670 "UMask": "0x3f",
671 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT",
672 "SampleAfterValue": "2000000",
673 "BriefDescription": "Uops executed on any port (core count)",
674 "CounterMask": "1",
675 "EdgeDetect": "1"
676 },
677 {
678 "EventCode": "0xB1",
679 "Invert": "1",
680 "Counter": "0,1,2,3",
681 "UMask": "0x1f",
682 "EventName": "UOPS_EXECUTED.CORE_STALL_COUNT_NO_PORT5",
683 "SampleAfterValue": "2000000",
684 "BriefDescription": "Uops executed on ports 0-4 (core count)",
685 "CounterMask": "1",
686 "EdgeDetect": "1"
687 },
688 {
689 "EventCode": "0xB1",
690 "Invert": "1",
691 "Counter": "0,1,2,3",
692 "UMask": "0x3f",
693 "AnyThread": "1",
694 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES",
695 "SampleAfterValue": "2000000",
696 "BriefDescription": "Cycles no Uops issued on any port (core count)",
697 "CounterMask": "1"
698 },
699 {
700 "EventCode": "0xB1",
701 "Invert": "1",
702 "Counter": "0,1,2,3",
703 "UMask": "0x1f",
704 "AnyThread": "1",
705 "EventName": "UOPS_EXECUTED.CORE_STALL_CYCLES_NO_PORT5",
706 "SampleAfterValue": "2000000",
707 "BriefDescription": "Cycles no Uops issued on ports 0-4 (core count)",
708 "CounterMask": "1"
709 },
710 {
711 "EventCode": "0xB1",
712 "Counter": "0,1,2,3",
713 "UMask": "0x1",
714 "EventName": "UOPS_EXECUTED.PORT0",
715 "SampleAfterValue": "2000000",
716 "BriefDescription": "Uops executed on port 0"
717 },
718 {
719 "EventCode": "0xB1",
720 "Counter": "0,1,2,3",
721 "UMask": "0x40",
722 "EventName": "UOPS_EXECUTED.PORT015",
723 "SampleAfterValue": "2000000",
724 "BriefDescription": "Uops issued on ports 0, 1 or 5"
725 },
726 {
727 "EventCode": "0xB1",
728 "Invert": "1",
729 "Counter": "0,1,2,3",
730 "UMask": "0x40",
731 "EventName": "UOPS_EXECUTED.PORT015_STALL_CYCLES",
732 "SampleAfterValue": "2000000",
733 "BriefDescription": "Cycles no Uops issued on ports 0, 1 or 5",
734 "CounterMask": "1"
735 },
736 {
737 "EventCode": "0xB1",
738 "Counter": "0,1,2,3",
739 "UMask": "0x2",
740 "EventName": "UOPS_EXECUTED.PORT1",
741 "SampleAfterValue": "2000000",
742 "BriefDescription": "Uops executed on port 1"
743 },
744 {
745 "EventCode": "0xB1",
746 "Counter": "0,1,2,3",
747 "UMask": "0x4",
748 "AnyThread": "1",
749 "EventName": "UOPS_EXECUTED.PORT2_CORE",
750 "SampleAfterValue": "2000000",
751 "BriefDescription": "Uops executed on port 2 (core count)"
752 },
753 {
754 "EventCode": "0xB1",
755 "Counter": "0,1,2,3",
756 "UMask": "0x80",
757 "AnyThread": "1",
758 "EventName": "UOPS_EXECUTED.PORT234_CORE",
759 "SampleAfterValue": "2000000",
760 "BriefDescription": "Uops issued on ports 2, 3 or 4"
761 },
762 {
763 "EventCode": "0xB1",
764 "Counter": "0,1,2,3",
765 "UMask": "0x8",
766 "AnyThread": "1",
767 "EventName": "UOPS_EXECUTED.PORT3_CORE",
768 "SampleAfterValue": "2000000",
769 "BriefDescription": "Uops executed on port 3 (core count)"
770 },
771 {
772 "EventCode": "0xB1",
773 "Counter": "0,1,2,3",
774 "UMask": "0x10",
775 "AnyThread": "1",
776 "EventName": "UOPS_EXECUTED.PORT4_CORE",
777 "SampleAfterValue": "2000000",
778 "BriefDescription": "Uops executed on port 4 (core count)"
779 },
780 {
781 "EventCode": "0xB1",
782 "Counter": "0,1,2,3",
783 "UMask": "0x20",
784 "EventName": "UOPS_EXECUTED.PORT5",
785 "SampleAfterValue": "2000000",
786 "BriefDescription": "Uops executed on port 5"
787 },
788 {
789 "EventCode": "0xE",
790 "Counter": "0,1,2,3",
791 "UMask": "0x1",
792 "EventName": "UOPS_ISSUED.ANY",
793 "SampleAfterValue": "2000000",
794 "BriefDescription": "Uops issued"
795 },
796 {
797 "EventCode": "0xE",
798 "Invert": "1",
799 "Counter": "0,1,2,3",
800 "UMask": "0x1",
801 "AnyThread": "1",
802 "EventName": "UOPS_ISSUED.CORE_STALL_CYCLES",
803 "SampleAfterValue": "2000000",
804 "BriefDescription": "Cycles no Uops were issued on any thread",
805 "CounterMask": "1"
806 },
807 {
808 "EventCode": "0xE",
809 "Counter": "0,1,2,3",
810 "UMask": "0x1",
811 "AnyThread": "1",
812 "EventName": "UOPS_ISSUED.CYCLES_ALL_THREADS",
813 "SampleAfterValue": "2000000",
814 "BriefDescription": "Cycles Uops were issued on either thread",
815 "CounterMask": "1"
816 },
817 {
818 "EventCode": "0xE",
819 "Counter": "0,1,2,3",
820 "UMask": "0x2",
821 "EventName": "UOPS_ISSUED.FUSED",
822 "SampleAfterValue": "2000000",
823 "BriefDescription": "Fused Uops issued"
824 },
825 {
826 "EventCode": "0xE",
827 "Invert": "1",
828 "Counter": "0,1,2,3",
829 "UMask": "0x1",
830 "EventName": "UOPS_ISSUED.STALL_CYCLES",
831 "SampleAfterValue": "2000000",
832 "BriefDescription": "Cycles no Uops were issued",
833 "CounterMask": "1"
834 },
835 {
836 "PEBS": "1",
837 "EventCode": "0xC2",
838 "Counter": "0,1,2,3",
839 "UMask": "0x1",
840 "EventName": "UOPS_RETIRED.ACTIVE_CYCLES",
841 "SampleAfterValue": "2000000",
842 "BriefDescription": "Cycles Uops are being retired",
843 "CounterMask": "1"
844 },
845 {
846 "PEBS": "1",
847 "EventCode": "0xC2",
848 "Counter": "0,1,2,3",
849 "UMask": "0x1",
850 "EventName": "UOPS_RETIRED.ANY",
851 "SampleAfterValue": "2000000",
852 "BriefDescription": "Uops retired (Precise Event)"
853 },
854 {
855 "PEBS": "1",
856 "EventCode": "0xC2",
857 "Counter": "0,1,2,3",
858 "UMask": "0x4",
859 "EventName": "UOPS_RETIRED.MACRO_FUSED",
860 "SampleAfterValue": "2000000",
861 "BriefDescription": "Macro-fused Uops retired (Precise Event)"
862 },
863 {
864 "PEBS": "1",
865 "EventCode": "0xC2",
866 "Counter": "0,1,2,3",
867 "UMask": "0x2",
868 "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
869 "SampleAfterValue": "2000000",
870 "BriefDescription": "Retirement slots used (Precise Event)"
871 },
872 {
873 "PEBS": "1",
874 "EventCode": "0xC2",
875 "Invert": "1",
876 "Counter": "0,1,2,3",
877 "UMask": "0x1",
878 "EventName": "UOPS_RETIRED.STALL_CYCLES",
879 "SampleAfterValue": "2000000",
880 "BriefDescription": "Cycles Uops are not retiring (Precise Event)",
881 "CounterMask": "1"
882 },
883 {
884 "PEBS": "1",
885 "EventCode": "0xC2",
886 "Invert": "1",
887 "Counter": "0,1,2,3",
888 "UMask": "0x1",
889 "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
890 "SampleAfterValue": "2000000",
891 "BriefDescription": "Total cycles using precise uop retired event (Precise Event)",
892 "CounterMask": "16"
893 },
894 {
895 "PEBS": "2",
896 "EventCode": "0xC0",
897 "Invert": "1",
898 "Counter": "0,1,2,3",
899 "UMask": "0x1",
900 "EventName": "INST_RETIRED.TOTAL_CYCLES_PS",
901 "SampleAfterValue": "2000000",
902 "BriefDescription": "Total cycles (Precise Event)",
903 "CounterMask": "16"
904 }
905] \ No newline at end of file
diff --git a/tools/perf/pmu-events/arch/x86/westmereex/virtual-memory.json b/tools/perf/pmu-events/arch/x86/westmereex/virtual-memory.json
new file mode 100644
index 000000000000..ad989207e8f8
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/westmereex/virtual-memory.json
@@ -0,0 +1,173 @@
1[
2 {
3 "EventCode": "0x8",
4 "Counter": "0,1,2,3",
5 "UMask": "0x1",
6 "EventName": "DTLB_LOAD_MISSES.ANY",
7 "SampleAfterValue": "200000",
8 "BriefDescription": "DTLB load misses"
9 },
10 {
11 "EventCode": "0x8",
12 "Counter": "0,1,2,3",
13 "UMask": "0x80",
14 "EventName": "DTLB_LOAD_MISSES.LARGE_WALK_COMPLETED",
15 "SampleAfterValue": "200000",
16 "BriefDescription": "DTLB load miss large page walks"
17 },
18 {
19 "EventCode": "0x8",
20 "Counter": "0,1,2,3",
21 "UMask": "0x20",
22 "EventName": "DTLB_LOAD_MISSES.PDE_MISS",
23 "SampleAfterValue": "200000",
24 "BriefDescription": "DTLB load miss caused by low part of address"
25 },
26 {
27 "EventCode": "0x8",
28 "Counter": "0,1,2,3",
29 "UMask": "0x10",
30 "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
31 "SampleAfterValue": "2000000",
32 "BriefDescription": "DTLB second level hit"
33 },
34 {
35 "EventCode": "0x8",
36 "Counter": "0,1,2,3",
37 "UMask": "0x2",
38 "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
39 "SampleAfterValue": "200000",
40 "BriefDescription": "DTLB load miss page walks complete"
41 },
42 {
43 "EventCode": "0x8",
44 "Counter": "0,1,2,3",
45 "UMask": "0x4",
46 "EventName": "DTLB_LOAD_MISSES.WALK_CYCLES",
47 "SampleAfterValue": "200000",
48 "BriefDescription": "DTLB load miss page walk cycles"
49 },
50 {
51 "EventCode": "0x49",
52 "Counter": "0,1,2,3",
53 "UMask": "0x1",
54 "EventName": "DTLB_MISSES.ANY",
55 "SampleAfterValue": "200000",
56 "BriefDescription": "DTLB misses"
57 },
58 {
59 "EventCode": "0x49",
60 "Counter": "0,1,2,3",
61 "UMask": "0x80",
62 "EventName": "DTLB_MISSES.LARGE_WALK_COMPLETED",
63 "SampleAfterValue": "200000",
64 "BriefDescription": "DTLB miss large page walks"
65 },
66 {
67 "EventCode": "0x49",
68 "Counter": "0,1,2,3",
69 "UMask": "0x20",
70 "EventName": "DTLB_MISSES.PDE_MISS",
71 "SampleAfterValue": "200000",
72 "BriefDescription": "DTLB misses caused by low part of address. Count also includes 2M page references because 2M pages do not use the PDE."
73 },
74 {
75 "EventCode": "0x49",
76 "Counter": "0,1,2,3",
77 "UMask": "0x10",
78 "EventName": "DTLB_MISSES.STLB_HIT",
79 "SampleAfterValue": "200000",
80 "BriefDescription": "DTLB first level misses but second level hit"
81 },
82 {
83 "EventCode": "0x49",
84 "Counter": "0,1,2,3",
85 "UMask": "0x2",
86 "EventName": "DTLB_MISSES.WALK_COMPLETED",
87 "SampleAfterValue": "200000",
88 "BriefDescription": "DTLB miss page walks"
89 },
90 {
91 "EventCode": "0x49",
92 "Counter": "0,1,2,3",
93 "UMask": "0x4",
94 "EventName": "DTLB_MISSES.WALK_CYCLES",
95 "SampleAfterValue": "2000000",
96 "BriefDescription": "DTLB miss page walk cycles"
97 },
98 {
99 "EventCode": "0x4F",
100 "Counter": "0,1,2,3",
101 "UMask": "0x10",
102 "EventName": "EPT.WALK_CYCLES",
103 "SampleAfterValue": "2000000",
104 "BriefDescription": "Extended Page Table walk cycles"
105 },
106 {
107 "EventCode": "0xAE",
108 "Counter": "0,1,2,3",
109 "UMask": "0x1",
110 "EventName": "ITLB_FLUSH",
111 "SampleAfterValue": "2000000",
112 "BriefDescription": "ITLB flushes"
113 },
114 {
115 "PEBS": "1",
116 "EventCode": "0xC8",
117 "Counter": "0,1,2,3",
118 "UMask": "0x20",
119 "EventName": "ITLB_MISS_RETIRED",
120 "SampleAfterValue": "200000",
121 "BriefDescription": "Retired instructions that missed the ITLB (Precise Event)"
122 },
123 {
124 "EventCode": "0x85",
125 "Counter": "0,1,2,3",
126 "UMask": "0x1",
127 "EventName": "ITLB_MISSES.ANY",
128 "SampleAfterValue": "200000",
129 "BriefDescription": "ITLB miss"
130 },
131 {
132 "EventCode": "0x85",
133 "Counter": "0,1,2,3",
134 "UMask": "0x80",
135 "EventName": "ITLB_MISSES.LARGE_WALK_COMPLETED",
136 "SampleAfterValue": "200000",
137 "BriefDescription": "ITLB miss large page walks"
138 },
139 {
140 "EventCode": "0x85",
141 "Counter": "0,1,2,3",
142 "UMask": "0x2",
143 "EventName": "ITLB_MISSES.WALK_COMPLETED",
144 "SampleAfterValue": "200000",
145 "BriefDescription": "ITLB miss page walks"
146 },
147 {
148 "EventCode": "0x85",
149 "Counter": "0,1,2,3",
150 "UMask": "0x4",
151 "EventName": "ITLB_MISSES.WALK_CYCLES",
152 "SampleAfterValue": "2000000",
153 "BriefDescription": "ITLB miss page walk cycles"
154 },
155 {
156 "PEBS": "1",
157 "EventCode": "0xCB",
158 "Counter": "0,1,2,3",
159 "UMask": "0x80",
160 "EventName": "MEM_LOAD_RETIRED.DTLB_MISS",
161 "SampleAfterValue": "200000",
162 "BriefDescription": "Retired loads that miss the DTLB (Precise Event)"
163 },
164 {
165 "PEBS": "1",
166 "EventCode": "0xC",
167 "Counter": "0,1,2,3",
168 "UMask": "0x1",
169 "EventName": "MEM_STORE_RETIRED.DTLB_MISS",
170 "SampleAfterValue": "200000",
171 "BriefDescription": "Retired stores that miss the DTLB (Precise Event)"
172 }
173] \ No newline at end of file
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
new file mode 100644
index 000000000000..41611d7f9873
--- /dev/null
+++ b/tools/perf/pmu-events/jevents.c
@@ -0,0 +1,814 @@
1#define _XOPEN_SOURCE 500 /* needed for nftw() */
2#define _GNU_SOURCE /* needed for asprintf() */
3
4/* Parse event JSON files */
5
6/*
7 * Copyright (c) 2014, Intel Corporation
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 *
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
25 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
29 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
31 * OF THE POSSIBILITY OF SUCH DAMAGE.
32*/
33
34#include <stdio.h>
35#include <stdlib.h>
36#include <errno.h>
37#include <string.h>
38#include <ctype.h>
39#include <unistd.h>
40#include <stdarg.h>
41#include <libgen.h>
42#include <dirent.h>
43#include <sys/time.h> /* getrlimit */
44#include <sys/resource.h> /* getrlimit */
45#include <ftw.h>
46#include <sys/stat.h>
47#include "jsmn.h"
48#include "json.h"
49#include "jevents.h"
50
51#ifndef __maybe_unused
52#define __maybe_unused __attribute__((unused))
53#endif
54
55int verbose;
56char *prog;
57
58int eprintf(int level, int var, const char *fmt, ...)
59{
60
61 int ret;
62 va_list args;
63
64 if (var < level)
65 return 0;
66
67 va_start(args, fmt);
68
69 ret = vfprintf(stderr, fmt, args);
70
71 va_end(args);
72
73 return ret;
74}
75
76__attribute__((weak)) char *get_cpu_str(void)
77{
78 return NULL;
79}
80
81static void addfield(char *map, char **dst, const char *sep,
82 const char *a, jsmntok_t *bt)
83{
84 unsigned int len = strlen(a) + 1 + strlen(sep);
85 int olen = *dst ? strlen(*dst) : 0;
86 int blen = bt ? json_len(bt) : 0;
87 char *out;
88
89 out = realloc(*dst, len + olen + blen);
90 if (!out) {
91 /* Don't add field in this case */
92 return;
93 }
94 *dst = out;
95
96 if (!olen)
97 *(*dst) = 0;
98 else
99 strcat(*dst, sep);
100 strcat(*dst, a);
101 if (bt)
102 strncat(*dst, map + bt->start, blen);
103}
104
105static void fixname(char *s)
106{
107 for (; *s; s++)
108 *s = tolower(*s);
109}
110
111static void fixdesc(char *s)
112{
113 char *e = s + strlen(s);
114
115 /* Remove trailing dots that look ugly in perf list */
116 --e;
117 while (e >= s && isspace(*e))
118 --e;
119 if (*e == '.')
120 *e = 0;
121}
122
123static struct msrmap {
124 const char *num;
125 const char *pname;
126} msrmap[] = {
127 { "0x3F6", "ldlat=" },
128 { "0x1A6", "offcore_rsp=" },
129 { "0x1A7", "offcore_rsp=" },
130 { "0x3F7", "frontend=" },
131 { NULL, NULL }
132};
133
134static struct field {
135 const char *field;
136 const char *kernel;
137} fields[] = {
138 { "EventCode", "event=" },
139 { "UMask", "umask=" },
140 { "CounterMask", "cmask=" },
141 { "Invert", "inv=" },
142 { "AnyThread", "any=" },
143 { "EdgeDetect", "edge=" },
144 { "SampleAfterValue", "period=" },
145 { NULL, NULL }
146};
147
148static void cut_comma(char *map, jsmntok_t *newval)
149{
150 int i;
151
152 /* Cut off everything after comma */
153 for (i = newval->start; i < newval->end; i++) {
154 if (map[i] == ',')
155 newval->end = i;
156 }
157}
158
159static int match_field(char *map, jsmntok_t *field, int nz,
160 char **event, jsmntok_t *val)
161{
162 struct field *f;
163 jsmntok_t newval = *val;
164
165 for (f = fields; f->field; f++)
166 if (json_streq(map, field, f->field) && nz) {
167 cut_comma(map, &newval);
168 addfield(map, event, ",", f->kernel, &newval);
169 return 1;
170 }
171 return 0;
172}
173
174static struct msrmap *lookup_msr(char *map, jsmntok_t *val)
175{
176 jsmntok_t newval = *val;
177 static bool warned;
178 int i;
179
180 cut_comma(map, &newval);
181 for (i = 0; msrmap[i].num; i++)
182 if (json_streq(map, &newval, msrmap[i].num))
183 return &msrmap[i];
184 if (!warned) {
185 warned = true;
186 pr_err("%s: Unknown MSR in event file %.*s\n", prog,
187 json_len(val), map + val->start);
188 }
189 return NULL;
190}
191
192#define EXPECT(e, t, m) do { if (!(e)) { \
193 jsmntok_t *loc = (t); \
194 if (!(t)->start && (t) > tokens) \
195 loc = (t) - 1; \
196 pr_err("%s:%d: " m ", got %s\n", fn, \
197 json_line(map, loc), \
198 json_name(t)); \
199 goto out_free; \
200} } while (0)
201
202#define TOPIC_DEPTH 256
203static char *topic_array[TOPIC_DEPTH];
204static int topic_level;
205
206static char *get_topic(void)
207{
208 char *tp_old, *tp = NULL;
209 int i;
210
211 for (i = 0; i < topic_level + 1; i++) {
212 int n;
213
214 tp_old = tp;
215 n = asprintf(&tp, "%s%s", tp ?: "", topic_array[i]);
216 if (n < 0) {
217 pr_info("%s: asprintf() error %s\n", prog);
218 return NULL;
219 }
220 free(tp_old);
221 }
222
223 for (i = 0; i < (int) strlen(tp); i++) {
224 char c = tp[i];
225
226 if (c == '-')
227 tp[i] = ' ';
228 else if (c == '.') {
229 tp[i] = '\0';
230 break;
231 }
232 }
233
234 return tp;
235}
236
237static int add_topic(int level, char *bname)
238{
239 char *topic;
240
241 level -= 2;
242
243 if (level >= TOPIC_DEPTH)
244 return -EINVAL;
245
246 topic = strdup(bname);
247 if (!topic) {
248 pr_info("%s: strdup() error %s for file %s\n", prog,
249 strerror(errno), bname);
250 return -ENOMEM;
251 }
252
253 free(topic_array[topic_level]);
254 topic_array[topic_level] = topic;
255 topic_level = level;
256 return 0;
257}
258
259struct perf_entry_data {
260 FILE *outfp;
261 char *topic;
262};
263
264static int close_table;
265
266static void print_events_table_prefix(FILE *fp, const char *tblname)
267{
268 fprintf(fp, "struct pmu_event %s[] = {\n", tblname);
269 close_table = 1;
270}
271
272static int print_events_table_entry(void *data, char *name, char *event,
273 char *desc, char *long_desc)
274{
275 struct perf_entry_data *pd = data;
276 FILE *outfp = pd->outfp;
277 char *topic = pd->topic;
278
279 /*
280 * TODO: Remove formatting chars after debugging to reduce
281 * string lengths.
282 */
283 fprintf(outfp, "{\n");
284
285 fprintf(outfp, "\t.name = \"%s\",\n", name);
286 fprintf(outfp, "\t.event = \"%s\",\n", event);
287 fprintf(outfp, "\t.desc = \"%s\",\n", desc);
288 fprintf(outfp, "\t.topic = \"%s\",\n", topic);
289 if (long_desc && long_desc[0])
290 fprintf(outfp, "\t.long_desc = \"%s\",\n", long_desc);
291
292 fprintf(outfp, "},\n");
293
294 return 0;
295}
296
297static void print_events_table_suffix(FILE *outfp)
298{
299 fprintf(outfp, "{\n");
300
301 fprintf(outfp, "\t.name = 0,\n");
302 fprintf(outfp, "\t.event = 0,\n");
303 fprintf(outfp, "\t.desc = 0,\n");
304
305 fprintf(outfp, "},\n");
306 fprintf(outfp, "};\n");
307 close_table = 0;
308}
309
310static struct fixed {
311 const char *name;
312 const char *event;
313} fixed[] = {
314 { "inst_retired.any", "event=0xc0" },
315 { "inst_retired.any_p", "event=0xc0" },
316 { "cpu_clk_unhalted.ref", "event=0x0,umask=0x03" },
317 { "cpu_clk_unhalted.thread", "event=0x3c" },
318 { "cpu_clk_unhalted.thread_any", "event=0x3c,any=1" },
319 { NULL, NULL},
320};
321
322/*
323 * Handle different fixed counter encodings between JSON and perf.
324 */
325static char *real_event(const char *name, char *event)
326{
327 int i;
328
329 for (i = 0; fixed[i].name; i++)
330 if (!strcasecmp(name, fixed[i].name))
331 return (char *)fixed[i].event;
332 return event;
333}
334
335/* Call func with each event in the json file */
336int json_events(const char *fn,
337 int (*func)(void *data, char *name, char *event, char *desc,
338 char *long_desc),
339 void *data)
340{
341 int err = -EIO;
342 size_t size;
343 jsmntok_t *tokens, *tok;
344 int i, j, len;
345 char *map;
346
347 if (!fn)
348 return -ENOENT;
349
350 tokens = parse_json(fn, &map, &size, &len);
351 if (!tokens)
352 return -EIO;
353 EXPECT(tokens->type == JSMN_ARRAY, tokens, "expected top level array");
354 tok = tokens + 1;
355 for (i = 0; i < tokens->size; i++) {
356 char *event = NULL, *desc = NULL, *name = NULL;
357 char *long_desc = NULL;
358 char *extra_desc = NULL;
359 struct msrmap *msr = NULL;
360 jsmntok_t *msrval = NULL;
361 jsmntok_t *precise = NULL;
362 jsmntok_t *obj = tok++;
363
364 EXPECT(obj->type == JSMN_OBJECT, obj, "expected object");
365 for (j = 0; j < obj->size; j += 2) {
366 jsmntok_t *field, *val;
367 int nz;
368
369 field = tok + j;
370 EXPECT(field->type == JSMN_STRING, tok + j,
371 "Expected field name");
372 val = tok + j + 1;
373 EXPECT(val->type == JSMN_STRING, tok + j + 1,
374 "Expected string value");
375
376 nz = !json_streq(map, val, "0");
377 if (match_field(map, field, nz, &event, val)) {
378 /* ok */
379 } else if (json_streq(map, field, "EventName")) {
380 addfield(map, &name, "", "", val);
381 } else if (json_streq(map, field, "BriefDescription")) {
382 addfield(map, &desc, "", "", val);
383 fixdesc(desc);
384 } else if (json_streq(map, field,
385 "PublicDescription")) {
386 addfield(map, &long_desc, "", "", val);
387 fixdesc(long_desc);
388 } else if (json_streq(map, field, "PEBS") && nz) {
389 precise = val;
390 } else if (json_streq(map, field, "MSRIndex") && nz) {
391 msr = lookup_msr(map, val);
392 } else if (json_streq(map, field, "MSRValue")) {
393 msrval = val;
394 } else if (json_streq(map, field, "Errata") &&
395 !json_streq(map, val, "null")) {
396 addfield(map, &extra_desc, ". ",
397 " Spec update: ", val);
398 } else if (json_streq(map, field, "Data_LA") && nz) {
399 addfield(map, &extra_desc, ". ",
400 " Supports address when precise",
401 NULL);
402 }
403 /* ignore unknown fields */
404 }
405 if (precise && desc && !strstr(desc, "(Precise Event)")) {
406 if (json_streq(map, precise, "2"))
407 addfield(map, &extra_desc, " ",
408 "(Must be precise)", NULL);
409 else
410 addfield(map, &extra_desc, " ",
411 "(Precise event)", NULL);
412 }
413 if (desc && extra_desc)
414 addfield(map, &desc, " ", extra_desc, NULL);
415 if (long_desc && extra_desc)
416 addfield(map, &long_desc, " ", extra_desc, NULL);
417 if (msr != NULL)
418 addfield(map, &event, ",", msr->pname, msrval);
419 fixname(name);
420
421 err = func(data, name, real_event(name, event), desc, long_desc);
422 free(event);
423 free(desc);
424 free(name);
425 free(long_desc);
426 free(extra_desc);
427 if (err)
428 break;
429 tok += j;
430 }
431 EXPECT(tok - tokens == len, tok, "unexpected objects at end");
432 err = 0;
433out_free:
434 free_json(map, size, tokens);
435 return err;
436}
437
438static char *file_name_to_table_name(char *fname)
439{
440 unsigned int i;
441 int n;
442 int c;
443 char *tblname;
444
445 /*
446 * Ensure tablename starts with alphabetic character.
447 * Derive rest of table name from basename of the JSON file,
448 * replacing hyphens and stripping out .json suffix.
449 */
450 n = asprintf(&tblname, "pme_%s", basename(fname));
451 if (n < 0) {
452 pr_info("%s: asprintf() error %s for file %s\n", prog,
453 strerror(errno), fname);
454 return NULL;
455 }
456
457 for (i = 0; i < strlen(tblname); i++) {
458 c = tblname[i];
459
460 if (c == '-')
461 tblname[i] = '_';
462 else if (c == '.') {
463 tblname[i] = '\0';
464 break;
465 } else if (!isalnum(c) && c != '_') {
466 pr_err("%s: Invalid character '%c' in file name %s\n",
467 prog, c, basename(fname));
468 free(tblname);
469 tblname = NULL;
470 break;
471 }
472 }
473
474 return tblname;
475}
476
477static void print_mapping_table_prefix(FILE *outfp)
478{
479 fprintf(outfp, "struct pmu_events_map pmu_events_map[] = {\n");
480}
481
482static void print_mapping_table_suffix(FILE *outfp)
483{
484 /*
485 * Print the terminating, NULL entry.
486 */
487 fprintf(outfp, "{\n");
488 fprintf(outfp, "\t.cpuid = 0,\n");
489 fprintf(outfp, "\t.version = 0,\n");
490 fprintf(outfp, "\t.type = 0,\n");
491 fprintf(outfp, "\t.table = 0,\n");
492 fprintf(outfp, "},\n");
493
494 /* and finally, the closing curly bracket for the struct */
495 fprintf(outfp, "};\n");
496}
497
498static int process_mapfile(FILE *outfp, char *fpath)
499{
500 int n = 16384;
501 FILE *mapfp;
502 char *save = NULL;
503 char *line, *p;
504 int line_num;
505 char *tblname;
506
507 pr_info("%s: Processing mapfile %s\n", prog, fpath);
508
509 line = malloc(n);
510 if (!line)
511 return -1;
512
513 mapfp = fopen(fpath, "r");
514 if (!mapfp) {
515 pr_info("%s: Error %s opening %s\n", prog, strerror(errno),
516 fpath);
517 return -1;
518 }
519
520 print_mapping_table_prefix(outfp);
521
522 /* Skip first line (header) */
523 p = fgets(line, n, mapfp);
524 if (!p)
525 goto out;
526
527 line_num = 1;
528 while (1) {
529 char *cpuid, *version, *type, *fname;
530
531 line_num++;
532 p = fgets(line, n, mapfp);
533 if (!p)
534 break;
535
536 if (line[0] == '#' || line[0] == '\n')
537 continue;
538
539 if (line[strlen(line)-1] != '\n') {
540 /* TODO Deal with lines longer than 16K */
541 pr_info("%s: Mapfile %s: line %d too long, aborting\n",
542 prog, fpath, line_num);
543 return -1;
544 }
545 line[strlen(line)-1] = '\0';
546
547 cpuid = strtok_r(p, ",", &save);
548 version = strtok_r(NULL, ",", &save);
549 fname = strtok_r(NULL, ",", &save);
550 type = strtok_r(NULL, ",", &save);
551
552 tblname = file_name_to_table_name(fname);
553 fprintf(outfp, "{\n");
554 fprintf(outfp, "\t.cpuid = \"%s\",\n", cpuid);
555 fprintf(outfp, "\t.version = \"%s\",\n", version);
556 fprintf(outfp, "\t.type = \"%s\",\n", type);
557
558 /*
559 * CHECK: We can't use the type (eg "core") field in the
560 * table name. For us to do that, we need to somehow tweak
561 * the other caller of file_name_to_table(), process_json()
562 * to determine the type. process_json() file has no way
563 * of knowing these are "core" events unless file name has
564 * core in it. If filename has core in it, we can safely
565 * ignore the type field here also.
566 */
567 fprintf(outfp, "\t.table = %s\n", tblname);
568 fprintf(outfp, "},\n");
569 }
570
571out:
572 print_mapping_table_suffix(outfp);
573 return 0;
574}
575
576/*
577 * If we fail to locate/process JSON and map files, create a NULL mapping
578 * table. This would at least allow perf to build even if we can't find/use
579 * the aliases.
580 */
581static void create_empty_mapping(const char *output_file)
582{
583 FILE *outfp;
584
585 pr_info("%s: Creating empty pmu_events_map[] table\n", prog);
586
587 /* Truncate file to clear any partial writes to it */
588 outfp = fopen(output_file, "w");
589 if (!outfp) {
590 perror("fopen()");
591 _Exit(1);
592 }
593
594 fprintf(outfp, "#include \"../../pmu-events/pmu-events.h\"\n");
595 print_mapping_table_prefix(outfp);
596 print_mapping_table_suffix(outfp);
597 fclose(outfp);
598}
599
600static int get_maxfds(void)
601{
602 struct rlimit rlim;
603
604 if (getrlimit(RLIMIT_NOFILE, &rlim) == 0)
605 return min((int)rlim.rlim_max / 2, 512);
606
607 return 512;
608}
609
610/*
611 * nftw() doesn't let us pass an argument to the processing function,
612 * so use a global variables.
613 */
614static FILE *eventsfp;
615static char *mapfile;
616
617static int process_one_file(const char *fpath, const struct stat *sb,
618 int typeflag, struct FTW *ftwbuf)
619{
620 char *tblname, *bname = (char *) fpath + ftwbuf->base;
621 int is_dir = typeflag == FTW_D;
622 int is_file = typeflag == FTW_F;
623 int level = ftwbuf->level;
624 int err = 0;
625
626 pr_debug("%s %d %7jd %-20s %s\n",
627 is_file ? "f" : is_dir ? "d" : "x",
628 level, sb->st_size, bname, fpath);
629
630 /* base dir */
631 if (level == 0)
632 return 0;
633
634 /* model directory, reset topic */
635 if (level == 1 && is_dir) {
636 if (close_table)
637 print_events_table_suffix(eventsfp);
638
639 /*
640 * Drop file name suffix. Replace hyphens with underscores.
641 * Fail if file name contains any alphanum characters besides
642 * underscores.
643 */
644 tblname = file_name_to_table_name(bname);
645 if (!tblname) {
646 pr_info("%s: Error determining table name for %s\n", prog,
647 bname);
648 return -1;
649 }
650
651 print_events_table_prefix(eventsfp, tblname);
652 return 0;
653 }
654
655 /*
656 * Save the mapfile name for now. We will process mapfile
657 * after processing all JSON files (so we can write out the
658 * mapping table after all PMU events tables).
659 *
660 * TODO: Allow for multiple mapfiles? Punt for now.
661 */
662 if (level == 1 && is_file) {
663 if (!strncmp(bname, "mapfile.csv", 11)) {
664 if (mapfile) {
665 pr_info("%s: Many mapfiles? Using %s, ignoring %s\n",
666 prog, mapfile, fpath);
667 } else {
668 mapfile = strdup(fpath);
669 }
670 return 0;
671 }
672
673 pr_info("%s: Ignoring file %s\n", prog, fpath);
674 return 0;
675 }
676
677 /*
678 * If the file name does not have a .json extension,
679 * ignore it. It could be a readme.txt for instance.
680 */
681 if (is_file) {
682 char *suffix = bname + strlen(bname) - 5;
683
684 if (strncmp(suffix, ".json", 5)) {
685 pr_info("%s: Ignoring file without .json suffix %s\n", prog,
686 fpath);
687 return 0;
688 }
689 }
690
691 if (level > 1 && add_topic(level, bname))
692 return -ENOMEM;
693
694 /*
695 * Assume all other files are JSON files.
696 *
697 * If mapfile refers to 'power7_core.json', we create a table
698 * named 'power7_core'. Any inconsistencies between the mapfile
699 * and directory tree could result in build failure due to table
700 * names not being found.
701 *
702 * Atleast for now, be strict with processing JSON file names.
703 * i.e. if JSON file name cannot be mapped to C-style table name,
704 * fail.
705 */
706 if (is_file) {
707 struct perf_entry_data data = {
708 .topic = get_topic(),
709 .outfp = eventsfp,
710 };
711
712 err = json_events(fpath, print_events_table_entry, &data);
713
714 free(data.topic);
715 }
716
717 return err;
718}
719
720#ifndef PATH_MAX
721#define PATH_MAX 4096
722#endif
723
724/*
725 * Starting in directory 'start_dirname', find the "mapfile.csv" and
726 * the set of JSON files for the architecture 'arch'.
727 *
728 * From each JSON file, create a C-style "PMU events table" from the
729 * JSON file (see struct pmu_event).
730 *
731 * From the mapfile, create a mapping between the CPU revisions and
732 * PMU event tables (see struct pmu_events_map).
733 *
734 * Write out the PMU events tables and the mapping table to pmu-event.c.
735 *
736 * If unable to process the JSON or arch files, create an empty mapping
737 * table so we can continue to build/use perf even if we cannot use the
738 * PMU event aliases.
739 */
740int main(int argc, char *argv[])
741{
742 int rc;
743 int maxfds;
744 char ldirname[PATH_MAX];
745
746 const char *arch;
747 const char *output_file;
748 const char *start_dirname;
749
750 prog = basename(argv[0]);
751 if (argc < 4) {
752 pr_err("Usage: %s <arch> <starting_dir> <output_file>\n", prog);
753 return 1;
754 }
755
756 arch = argv[1];
757 start_dirname = argv[2];
758 output_file = argv[3];
759
760 if (argc > 4)
761 verbose = atoi(argv[4]);
762
763 eventsfp = fopen(output_file, "w");
764 if (!eventsfp) {
765 pr_err("%s Unable to create required file %s (%s)\n",
766 prog, output_file, strerror(errno));
767 return 2;
768 }
769
770 /* Include pmu-events.h first */
771 fprintf(eventsfp, "#include \"../../pmu-events/pmu-events.h\"\n");
772
773 sprintf(ldirname, "%s/%s", start_dirname, arch);
774
775 /*
776 * The mapfile allows multiple CPUids to point to the same JSON file,
777 * so, not sure if there is a need for symlinks within the pmu-events
778 * directory.
779 *
780 * For now, treat symlinks of JSON files as regular files and create
781 * separate tables for each symlink (presumably, each symlink refers
782 * to specific version of the CPU).
783 */
784
785 maxfds = get_maxfds();
786 mapfile = NULL;
787 rc = nftw(ldirname, process_one_file, maxfds, 0);
788 if (rc && verbose) {
789 pr_info("%s: Error walking file tree %s\n", prog, ldirname);
790 goto empty_map;
791 } else if (rc) {
792 goto empty_map;
793 }
794
795 if (close_table)
796 print_events_table_suffix(eventsfp);
797
798 if (!mapfile) {
799 pr_info("%s: No CPU->JSON mapping?\n", prog);
800 goto empty_map;
801 }
802
803 if (process_mapfile(eventsfp, mapfile)) {
804 pr_info("%s: Error processing mapfile %s\n", prog, mapfile);
805 goto empty_map;
806 }
807
808 return 0;
809
810empty_map:
811 fclose(eventsfp);
812 create_empty_mapping(output_file);
813 return 0;
814}
diff --git a/tools/perf/pmu-events/jevents.h b/tools/perf/pmu-events/jevents.h
new file mode 100644
index 000000000000..b0eb2744b498
--- /dev/null
+++ b/tools/perf/pmu-events/jevents.h
@@ -0,0 +1,18 @@
1#ifndef JEVENTS_H
2#define JEVENTS_H 1
3
4int json_events(const char *fn,
5 int (*func)(void *data, char *name, char *event, char *desc,
6 char *long_desc),
7 void *data);
8char *get_cpu_str(void);
9
10#ifndef min
11#define min(x, y) ({ \
12 typeof(x) _min1 = (x); \
13 typeof(y) _min2 = (y); \
14 (void) (&_min1 == &_min2); \
15 _min1 < _min2 ? _min1 : _min2; })
16#endif
17
18#endif
diff --git a/tools/perf/pmu-events/jsmn.c b/tools/perf/pmu-events/jsmn.c
new file mode 100644
index 000000000000..11d1fa18bfa5
--- /dev/null
+++ b/tools/perf/pmu-events/jsmn.c
@@ -0,0 +1,313 @@
1/*
2 * Copyright (c) 2010 Serge A. Zaitsev
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 *
22 * Slightly modified by AK to not assume 0 terminated input.
23 */
24
25#include <stdlib.h>
26#include "jsmn.h"
27
28/*
29 * Allocates a fresh unused token from the token pool.
30 */
31static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser,
32 jsmntok_t *tokens, size_t num_tokens)
33{
34 jsmntok_t *tok;
35
36 if ((unsigned)parser->toknext >= num_tokens)
37 return NULL;
38 tok = &tokens[parser->toknext++];
39 tok->start = tok->end = -1;
40 tok->size = 0;
41 return tok;
42}
43
44/*
45 * Fills token type and boundaries.
46 */
47static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type,
48 int start, int end)
49{
50 token->type = type;
51 token->start = start;
52 token->end = end;
53 token->size = 0;
54}
55
56/*
57 * Fills next available token with JSON primitive.
58 */
59static jsmnerr_t jsmn_parse_primitive(jsmn_parser *parser, const char *js,
60 size_t len,
61 jsmntok_t *tokens, size_t num_tokens)
62{
63 jsmntok_t *token;
64 int start;
65
66 start = parser->pos;
67
68 for (; parser->pos < len; parser->pos++) {
69 switch (js[parser->pos]) {
70#ifndef JSMN_STRICT
71 /*
72 * In strict mode primitive must be followed by ","
73 * or "}" or "]"
74 */
75 case ':':
76#endif
77 case '\t':
78 case '\r':
79 case '\n':
80 case ' ':
81 case ',':
82 case ']':
83 case '}':
84 goto found;
85 default:
86 break;
87 }
88 if (js[parser->pos] < 32 || js[parser->pos] >= 127) {
89 parser->pos = start;
90 return JSMN_ERROR_INVAL;
91 }
92 }
93#ifdef JSMN_STRICT
94 /*
95 * In strict mode primitive must be followed by a
96 * comma/object/array.
97 */
98 parser->pos = start;
99 return JSMN_ERROR_PART;
100#endif
101
102found:
103 token = jsmn_alloc_token(parser, tokens, num_tokens);
104 if (token == NULL) {
105 parser->pos = start;
106 return JSMN_ERROR_NOMEM;
107 }
108 jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos);
109 parser->pos--; /* parent sees closing brackets */
110 return JSMN_SUCCESS;
111}
112
113/*
114 * Fills next token with JSON string.
115 */
116static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js,
117 size_t len,
118 jsmntok_t *tokens, size_t num_tokens)
119{
120 jsmntok_t *token;
121 int start = parser->pos;
122
123 /* Skip starting quote */
124 parser->pos++;
125
126 for (; parser->pos < len; parser->pos++) {
127 char c = js[parser->pos];
128
129 /* Quote: end of string */
130 if (c == '\"') {
131 token = jsmn_alloc_token(parser, tokens, num_tokens);
132 if (token == NULL) {
133 parser->pos = start;
134 return JSMN_ERROR_NOMEM;
135 }
136 jsmn_fill_token(token, JSMN_STRING, start+1,
137 parser->pos);
138 return JSMN_SUCCESS;
139 }
140
141 /* Backslash: Quoted symbol expected */
142 if (c == '\\') {
143 parser->pos++;
144 switch (js[parser->pos]) {
145 /* Allowed escaped symbols */
146 case '\"':
147 case '/':
148 case '\\':
149 case 'b':
150 case 'f':
151 case 'r':
152 case 'n':
153 case 't':
154 break;
155 /* Allows escaped symbol \uXXXX */
156 case 'u':
157 /* TODO */
158 break;
159 /* Unexpected symbol */
160 default:
161 parser->pos = start;
162 return JSMN_ERROR_INVAL;
163 }
164 }
165 }
166 parser->pos = start;
167 return JSMN_ERROR_PART;
168}
169
170/*
171 * Parse JSON string and fill tokens.
172 */
173jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, size_t len,
174 jsmntok_t *tokens, unsigned int num_tokens)
175{
176 jsmnerr_t r;
177 int i;
178 jsmntok_t *token;
179
180 for (; parser->pos < len; parser->pos++) {
181 char c;
182 jsmntype_t type;
183
184 c = js[parser->pos];
185 switch (c) {
186 case '{':
187 case '[':
188 token = jsmn_alloc_token(parser, tokens, num_tokens);
189 if (token == NULL)
190 return JSMN_ERROR_NOMEM;
191 if (parser->toksuper != -1)
192 tokens[parser->toksuper].size++;
193 token->type = (c == '{' ? JSMN_OBJECT : JSMN_ARRAY);
194 token->start = parser->pos;
195 parser->toksuper = parser->toknext - 1;
196 break;
197 case '}':
198 case ']':
199 type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY);
200 for (i = parser->toknext - 1; i >= 0; i--) {
201 token = &tokens[i];
202 if (token->start != -1 && token->end == -1) {
203 if (token->type != type)
204 return JSMN_ERROR_INVAL;
205 parser->toksuper = -1;
206 token->end = parser->pos + 1;
207 break;
208 }
209 }
210 /* Error if unmatched closing bracket */
211 if (i == -1)
212 return JSMN_ERROR_INVAL;
213 for (; i >= 0; i--) {
214 token = &tokens[i];
215 if (token->start != -1 && token->end == -1) {
216 parser->toksuper = i;
217 break;
218 }
219 }
220 break;
221 case '\"':
222 r = jsmn_parse_string(parser, js, len, tokens,
223 num_tokens);
224 if (r < 0)
225 return r;
226 if (parser->toksuper != -1)
227 tokens[parser->toksuper].size++;
228 break;
229 case '\t':
230 case '\r':
231 case '\n':
232 case ':':
233 case ',':
234 case ' ':
235 break;
236#ifdef JSMN_STRICT
237 /*
238 * In strict mode primitives are:
239 * numbers and booleans.
240 */
241 case '-':
242 case '0':
243 case '1':
244 case '2':
245 case '3':
246 case '4':
247 case '5':
248 case '6':
249 case '7':
250 case '8':
251 case '9':
252 case 't':
253 case 'f':
254 case 'n':
255#else
256 /*
257 * In non-strict mode every unquoted value
258 * is a primitive.
259 */
260 /*FALL THROUGH */
261 default:
262#endif
263 r = jsmn_parse_primitive(parser, js, len, tokens,
264 num_tokens);
265 if (r < 0)
266 return r;
267 if (parser->toksuper != -1)
268 tokens[parser->toksuper].size++;
269 break;
270
271#ifdef JSMN_STRICT
272 /* Unexpected char in strict mode */
273 default:
274 return JSMN_ERROR_INVAL;
275#endif
276 }
277 }
278
279 for (i = parser->toknext - 1; i >= 0; i--) {
280 /* Unmatched opened object or array */
281 if (tokens[i].start != -1 && tokens[i].end == -1)
282 return JSMN_ERROR_PART;
283 }
284
285 return JSMN_SUCCESS;
286}
287
288/*
289 * Creates a new parser based over a given buffer with an array of tokens
290 * available.
291 */
292void jsmn_init(jsmn_parser *parser)
293{
294 parser->pos = 0;
295 parser->toknext = 0;
296 parser->toksuper = -1;
297}
298
299const char *jsmn_strerror(jsmnerr_t err)
300{
301 switch (err) {
302 case JSMN_ERROR_NOMEM:
303 return "No enough tokens";
304 case JSMN_ERROR_INVAL:
305 return "Invalid character inside JSON string";
306 case JSMN_ERROR_PART:
307 return "The string is not a full JSON packet, more bytes expected";
308 case JSMN_SUCCESS:
309 return "Success";
310 default:
311 return "Unknown json error";
312 }
313}
diff --git a/tools/perf/pmu-events/jsmn.h b/tools/perf/pmu-events/jsmn.h
new file mode 100644
index 000000000000..d666b10cf25b
--- /dev/null
+++ b/tools/perf/pmu-events/jsmn.h
@@ -0,0 +1,67 @@
1#ifndef __JSMN_H_
2#define __JSMN_H_
3
4/*
5 * JSON type identifier. Basic types are:
6 * o Object
7 * o Array
8 * o String
9 * o Other primitive: number, boolean (true/false) or null
10 */
11typedef enum {
12 JSMN_PRIMITIVE = 0,
13 JSMN_OBJECT = 1,
14 JSMN_ARRAY = 2,
15 JSMN_STRING = 3
16} jsmntype_t;
17
18typedef enum {
19 /* Not enough tokens were provided */
20 JSMN_ERROR_NOMEM = -1,
21 /* Invalid character inside JSON string */
22 JSMN_ERROR_INVAL = -2,
23 /* The string is not a full JSON packet, more bytes expected */
24 JSMN_ERROR_PART = -3,
25 /* Everything was fine */
26 JSMN_SUCCESS = 0
27} jsmnerr_t;
28
29/*
30 * JSON token description.
31 * @param type type (object, array, string etc.)
32 * @param start start position in JSON data string
33 * @param end end position in JSON data string
34 */
35typedef struct {
36 jsmntype_t type;
37 int start;
38 int end;
39 int size;
40} jsmntok_t;
41
42/*
43 * JSON parser. Contains an array of token blocks available. Also stores
44 * the string being parsed now and current position in that string
45 */
46typedef struct {
47 unsigned int pos; /* offset in the JSON string */
48 int toknext; /* next token to allocate */
49 int toksuper; /* superior token node, e.g parent object or array */
50} jsmn_parser;
51
52/*
53 * Create JSON parser over an array of tokens
54 */
55void jsmn_init(jsmn_parser *parser);
56
57/*
58 * Run JSON parser. It parses a JSON data string into and array of tokens,
59 * each describing a single JSON object.
60 */
61jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js,
62 size_t len,
63 jsmntok_t *tokens, unsigned int num_tokens);
64
65const char *jsmn_strerror(jsmnerr_t err);
66
67#endif /* __JSMN_H_ */
diff --git a/tools/perf/pmu-events/json.c b/tools/perf/pmu-events/json.c
new file mode 100644
index 000000000000..f67bbb0aa36e
--- /dev/null
+++ b/tools/perf/pmu-events/json.c
@@ -0,0 +1,162 @@
1/* Parse JSON files using the JSMN parser. */
2
3/*
4 * Copyright (c) 2014, Intel Corporation
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright notice,
11 * this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28 * OF THE POSSIBILITY OF SUCH DAMAGE.
29*/
30
31#include <stdlib.h>
32#include <string.h>
33#include <sys/mman.h>
34#include <sys/stat.h>
35#include <fcntl.h>
36#include <stdio.h>
37#include <errno.h>
38#include <unistd.h>
39#include "jsmn.h"
40#include "json.h"
41#include <linux/kernel.h>
42
43
44static char *mapfile(const char *fn, size_t *size)
45{
46 unsigned ps = sysconf(_SC_PAGESIZE);
47 struct stat st;
48 char *map = NULL;
49 int err;
50 int fd = open(fn, O_RDONLY);
51
52 if (fd < 0 && verbose && fn) {
53 pr_err("Error opening events file '%s': %s\n", fn,
54 strerror(errno));
55 }
56
57 if (fd < 0)
58 return NULL;
59 err = fstat(fd, &st);
60 if (err < 0)
61 goto out;
62 *size = st.st_size;
63 map = mmap(NULL,
64 (st.st_size + ps - 1) & ~(ps - 1),
65 PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
66 if (map == MAP_FAILED)
67 map = NULL;
68out:
69 close(fd);
70 return map;
71}
72
73static void unmapfile(char *map, size_t size)
74{
75 unsigned ps = sysconf(_SC_PAGESIZE);
76 munmap(map, roundup(size, ps));
77}
78
79/*
80 * Parse json file using jsmn. Return array of tokens,
81 * and mapped file. Caller needs to free array.
82 */
83jsmntok_t *parse_json(const char *fn, char **map, size_t *size, int *len)
84{
85 jsmn_parser parser;
86 jsmntok_t *tokens;
87 jsmnerr_t res;
88 unsigned sz;
89
90 *map = mapfile(fn, size);
91 if (!*map)
92 return NULL;
93 /* Heuristic */
94 sz = *size * 16;
95 tokens = malloc(sz);
96 if (!tokens)
97 goto error;
98 jsmn_init(&parser);
99 res = jsmn_parse(&parser, *map, *size, tokens,
100 sz / sizeof(jsmntok_t));
101 if (res != JSMN_SUCCESS) {
102 pr_err("%s: json error %s\n", fn, jsmn_strerror(res));
103 goto error_free;
104 }
105 if (len)
106 *len = parser.toknext;
107 return tokens;
108error_free:
109 free(tokens);
110error:
111 unmapfile(*map, *size);
112 return NULL;
113}
114
115void free_json(char *map, size_t size, jsmntok_t *tokens)
116{
117 free(tokens);
118 unmapfile(map, size);
119}
120
121static int countchar(char *map, char c, int end)
122{
123 int i;
124 int count = 0;
125 for (i = 0; i < end; i++)
126 if (map[i] == c)
127 count++;
128 return count;
129}
130
131/* Return line number of a jsmn token */
132int json_line(char *map, jsmntok_t *t)
133{
134 return countchar(map, '\n', t->start) + 1;
135}
136
137static const char * const jsmn_types[] = {
138 [JSMN_PRIMITIVE] = "primitive",
139 [JSMN_ARRAY] = "array",
140 [JSMN_OBJECT] = "object",
141 [JSMN_STRING] = "string"
142};
143
144#define LOOKUP(a, i) ((i) < (sizeof(a)/sizeof(*(a))) ? ((a)[i]) : "?")
145
146/* Return type name of a jsmn token */
147const char *json_name(jsmntok_t *t)
148{
149 return LOOKUP(jsmn_types, t->type);
150}
151
152int json_len(jsmntok_t *t)
153{
154 return t->end - t->start;
155}
156
157/* Is string t equal to s? */
158int json_streq(char *map, jsmntok_t *t, const char *s)
159{
160 unsigned len = json_len(t);
161 return len == strlen(s) && !strncasecmp(map + t->start, s, len);
162}
diff --git a/tools/perf/pmu-events/json.h b/tools/perf/pmu-events/json.h
new file mode 100644
index 000000000000..278ebd32cfb6
--- /dev/null
+++ b/tools/perf/pmu-events/json.h
@@ -0,0 +1,38 @@
1#ifndef JSON_H
2#define JSON_H 1
3
4#include "jsmn.h"
5
6jsmntok_t *parse_json(const char *fn, char **map, size_t *size, int *len);
7void free_json(char *map, size_t size, jsmntok_t *tokens);
8int json_line(char *map, jsmntok_t *t);
9const char *json_name(jsmntok_t *t);
10int json_streq(char *map, jsmntok_t *t, const char *s);
11int json_len(jsmntok_t *t);
12
13extern int verbose;
14
15#include <stdbool.h>
16
17extern int eprintf(int level, int var, const char *fmt, ...);
18#define pr_fmt(fmt) fmt
19
20#define pr_err(fmt, ...) \
21 eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__)
22
23#define pr_info(fmt, ...) \
24 eprintf(1, verbose, pr_fmt(fmt), ##__VA_ARGS__)
25
26#define pr_debug(fmt, ...) \
27 eprintf(2, verbose, pr_fmt(fmt), ##__VA_ARGS__)
28
29#ifndef roundup
30#define roundup(x, y) ( \
31{ \
32 const typeof(y) __y = y; \
33 (((x) + (__y - 1)) / __y) * __y; \
34} \
35)
36#endif
37
38#endif
diff --git a/tools/perf/pmu-events/pmu-events.h b/tools/perf/pmu-events/pmu-events.h
new file mode 100644
index 000000000000..2eaef595d8a0
--- /dev/null
+++ b/tools/perf/pmu-events/pmu-events.h
@@ -0,0 +1,37 @@
1#ifndef PMU_EVENTS_H
2#define PMU_EVENTS_H
3
4/*
5 * Describe each PMU event. Each CPU has a table of PMU events.
6 */
7struct pmu_event {
8 const char *name;
9 const char *event;
10 const char *desc;
11 const char *topic;
12 const char *long_desc;
13};
14
15/*
16 *
17 * Map a CPU to its table of PMU events. The CPU is identified by the
18 * cpuid field, which is an arch-specific identifier for the CPU.
19 * The identifier specified in tools/perf/pmu-events/arch/xxx/mapfile
20 * must match the get_cpustr() in tools/perf/arch/xxx/util/header.c)
21 *
22 * The cpuid can contain any character other than the comma.
23 */
24struct pmu_events_map {
25 const char *cpuid;
26 const char *version;
27 const char *type; /* core, uncore etc */
28 struct pmu_event *table;
29};
30
31/*
32 * Global table mapping each known CPU for the architecture to its
33 * table of PMU events.
34 */
35extern struct pmu_events_map pmu_events_map[];
36
37#endif
diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build
index dc51bc570e51..6676c2dd6dcb 100644
--- a/tools/perf/tests/Build
+++ b/tools/perf/tests/Build
@@ -42,6 +42,8 @@ perf-y += backward-ring-buffer.o
42perf-y += sdt.o 42perf-y += sdt.o
43perf-y += is_printable_array.o 43perf-y += is_printable_array.o
44perf-y += bitmap.o 44perf-y += bitmap.o
45perf-y += perf-hooks.o
46perf-y += clang.o
45 47
46$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build 48$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build
47 $(call rule_mkdir) 49 $(call rule_mkdir)
@@ -71,7 +73,7 @@ $(OUTPUT)tests/llvm-src-relocation.c: tests/bpf-script-test-relocation.c tests/B
71 $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ 73 $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@
72 $(Q)echo ';' >> $@ 74 $(Q)echo ';' >> $@
73 75
74ifeq ($(ARCH),$(filter $(ARCH),x86 arm arm64)) 76ifeq ($(ARCH),$(filter $(ARCH),x86 arm arm64 powerpc))
75perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o 77perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o
76endif 78endif
77 79
diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c
index 615780cbfe1d..42e892b1e979 100644
--- a/tools/perf/tests/backward-ring-buffer.c
+++ b/tools/perf/tests/backward-ring-buffer.c
@@ -97,7 +97,7 @@ int test__backward_ring_buffer(int subtest __maybe_unused)
97 97
98 evlist = perf_evlist__new(); 98 evlist = perf_evlist__new();
99 if (!evlist) { 99 if (!evlist) {
100 pr_debug("No ehough memory to create evlist\n"); 100 pr_debug("Not enough memory to create evlist\n");
101 return TEST_FAIL; 101 return TEST_FAIL;
102 } 102 }
103 103
diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.c
index fc54064b9186..92343f43e44a 100644
--- a/tools/perf/tests/bpf.c
+++ b/tools/perf/tests/bpf.c
@@ -57,7 +57,7 @@ static struct {
57} bpf_testcase_table[] = { 57} bpf_testcase_table[] = {
58 { 58 {
59 LLVM_TESTCASE_BASE, 59 LLVM_TESTCASE_BASE,
60 "Test basic BPF filtering", 60 "Basic BPF filtering",
61 "[basic_bpf_test]", 61 "[basic_bpf_test]",
62 "fix 'perf test LLVM' first", 62 "fix 'perf test LLVM' first",
63 "load bpf object failed", 63 "load bpf object failed",
@@ -67,7 +67,7 @@ static struct {
67#ifdef HAVE_BPF_PROLOGUE 67#ifdef HAVE_BPF_PROLOGUE
68 { 68 {
69 LLVM_TESTCASE_BPF_PROLOGUE, 69 LLVM_TESTCASE_BPF_PROLOGUE,
70 "Test BPF prologue generation", 70 "BPF prologue generation",
71 "[bpf_prologue_test]", 71 "[bpf_prologue_test]",
72 "fix kbuild first", 72 "fix kbuild first",
73 "check your vmlinux setting?", 73 "check your vmlinux setting?",
@@ -77,7 +77,7 @@ static struct {
77#endif 77#endif
78 { 78 {
79 LLVM_TESTCASE_BPF_RELOCATION, 79 LLVM_TESTCASE_BPF_RELOCATION,
80 "Test BPF relocation checker", 80 "BPF relocation checker",
81 "[bpf_relocation_test]", 81 "[bpf_relocation_test]",
82 "fix 'perf test LLVM' first", 82 "fix 'perf test LLVM' first",
83 "libbpf error when dealing with relocation", 83 "libbpf error when dealing with relocation",
@@ -125,7 +125,7 @@ static int do_test(struct bpf_object *obj, int (*func)(void),
125 /* Instead of perf_evlist__new_default, don't add default events */ 125 /* Instead of perf_evlist__new_default, don't add default events */
126 evlist = perf_evlist__new(); 126 evlist = perf_evlist__new();
127 if (!evlist) { 127 if (!evlist) {
128 pr_debug("No ehough memory to create evlist\n"); 128 pr_debug("Not enough memory to create evlist\n");
129 return TEST_FAIL; 129 return TEST_FAIL;
130 } 130 }
131 131
diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index 778668a2a966..a77dcc0d24e3 100644
--- a/tools/perf/tests/builtin-test.c
+++ b/tools/perf/tests/builtin-test.c
@@ -28,119 +28,119 @@ static struct test generic_tests[] = {
28 .func = test__vmlinux_matches_kallsyms, 28 .func = test__vmlinux_matches_kallsyms,
29 }, 29 },
30 { 30 {
31 .desc = "detect openat syscall event", 31 .desc = "Detect openat syscall event",
32 .func = test__openat_syscall_event, 32 .func = test__openat_syscall_event,
33 }, 33 },
34 { 34 {
35 .desc = "detect openat syscall event on all cpus", 35 .desc = "Detect openat syscall event on all cpus",
36 .func = test__openat_syscall_event_on_all_cpus, 36 .func = test__openat_syscall_event_on_all_cpus,
37 }, 37 },
38 { 38 {
39 .desc = "read samples using the mmap interface", 39 .desc = "Read samples using the mmap interface",
40 .func = test__basic_mmap, 40 .func = test__basic_mmap,
41 }, 41 },
42 { 42 {
43 .desc = "parse events tests", 43 .desc = "Parse event definition strings",
44 .func = test__parse_events, 44 .func = test__parse_events,
45 }, 45 },
46 { 46 {
47 .desc = "Validate PERF_RECORD_* events & perf_sample fields", 47 .desc = "PERF_RECORD_* events & perf_sample fields",
48 .func = test__PERF_RECORD, 48 .func = test__PERF_RECORD,
49 }, 49 },
50 { 50 {
51 .desc = "Test perf pmu format parsing", 51 .desc = "Parse perf pmu format",
52 .func = test__pmu, 52 .func = test__pmu,
53 }, 53 },
54 { 54 {
55 .desc = "Test dso data read", 55 .desc = "DSO data read",
56 .func = test__dso_data, 56 .func = test__dso_data,
57 }, 57 },
58 { 58 {
59 .desc = "Test dso data cache", 59 .desc = "DSO data cache",
60 .func = test__dso_data_cache, 60 .func = test__dso_data_cache,
61 }, 61 },
62 { 62 {
63 .desc = "Test dso data reopen", 63 .desc = "DSO data reopen",
64 .func = test__dso_data_reopen, 64 .func = test__dso_data_reopen,
65 }, 65 },
66 { 66 {
67 .desc = "roundtrip evsel->name check", 67 .desc = "Roundtrip evsel->name",
68 .func = test__perf_evsel__roundtrip_name_test, 68 .func = test__perf_evsel__roundtrip_name_test,
69 }, 69 },
70 { 70 {
71 .desc = "Check parsing of sched tracepoints fields", 71 .desc = "Parse sched tracepoints fields",
72 .func = test__perf_evsel__tp_sched_test, 72 .func = test__perf_evsel__tp_sched_test,
73 }, 73 },
74 { 74 {
75 .desc = "Generate and check syscalls:sys_enter_openat event fields", 75 .desc = "syscalls:sys_enter_openat event fields",
76 .func = test__syscall_openat_tp_fields, 76 .func = test__syscall_openat_tp_fields,
77 }, 77 },
78 { 78 {
79 .desc = "struct perf_event_attr setup", 79 .desc = "Setup struct perf_event_attr",
80 .func = test__attr, 80 .func = test__attr,
81 }, 81 },
82 { 82 {
83 .desc = "Test matching and linking multiple hists", 83 .desc = "Match and link multiple hists",
84 .func = test__hists_link, 84 .func = test__hists_link,
85 }, 85 },
86 { 86 {
87 .desc = "Try 'import perf' in python, checking link problems", 87 .desc = "'import perf' in python",
88 .func = test__python_use, 88 .func = test__python_use,
89 }, 89 },
90 { 90 {
91 .desc = "Test breakpoint overflow signal handler", 91 .desc = "Breakpoint overflow signal handler",
92 .func = test__bp_signal, 92 .func = test__bp_signal,
93 }, 93 },
94 { 94 {
95 .desc = "Test breakpoint overflow sampling", 95 .desc = "Breakpoint overflow sampling",
96 .func = test__bp_signal_overflow, 96 .func = test__bp_signal_overflow,
97 }, 97 },
98 { 98 {
99 .desc = "Test number of exit event of a simple workload", 99 .desc = "Number of exit events of a simple workload",
100 .func = test__task_exit, 100 .func = test__task_exit,
101 }, 101 },
102 { 102 {
103 .desc = "Test software clock events have valid period values", 103 .desc = "Software clock events period values",
104 .func = test__sw_clock_freq, 104 .func = test__sw_clock_freq,
105 }, 105 },
106 { 106 {
107 .desc = "Test object code reading", 107 .desc = "Object code reading",
108 .func = test__code_reading, 108 .func = test__code_reading,
109 }, 109 },
110 { 110 {
111 .desc = "Test sample parsing", 111 .desc = "Sample parsing",
112 .func = test__sample_parsing, 112 .func = test__sample_parsing,
113 }, 113 },
114 { 114 {
115 .desc = "Test using a dummy software event to keep tracking", 115 .desc = "Use a dummy software event to keep tracking",
116 .func = test__keep_tracking, 116 .func = test__keep_tracking,
117 }, 117 },
118 { 118 {
119 .desc = "Test parsing with no sample_id_all bit set", 119 .desc = "Parse with no sample_id_all bit set",
120 .func = test__parse_no_sample_id_all, 120 .func = test__parse_no_sample_id_all,
121 }, 121 },
122 { 122 {
123 .desc = "Test filtering hist entries", 123 .desc = "Filter hist entries",
124 .func = test__hists_filter, 124 .func = test__hists_filter,
125 }, 125 },
126 { 126 {
127 .desc = "Test mmap thread lookup", 127 .desc = "Lookup mmap thread",
128 .func = test__mmap_thread_lookup, 128 .func = test__mmap_thread_lookup,
129 }, 129 },
130 { 130 {
131 .desc = "Test thread mg sharing", 131 .desc = "Share thread mg",
132 .func = test__thread_mg_share, 132 .func = test__thread_mg_share,
133 }, 133 },
134 { 134 {
135 .desc = "Test output sorting of hist entries", 135 .desc = "Sort output of hist entries",
136 .func = test__hists_output, 136 .func = test__hists_output,
137 }, 137 },
138 { 138 {
139 .desc = "Test cumulation of child hist entries", 139 .desc = "Cumulate child hist entries",
140 .func = test__hists_cumulate, 140 .func = test__hists_cumulate,
141 }, 141 },
142 { 142 {
143 .desc = "Test tracking with sched_switch", 143 .desc = "Track with sched_switch",
144 .func = test__switch_tracking, 144 .func = test__switch_tracking,
145 }, 145 },
146 { 146 {
@@ -152,15 +152,15 @@ static struct test generic_tests[] = {
152 .func = test__fdarray__add, 152 .func = test__fdarray__add,
153 }, 153 },
154 { 154 {
155 .desc = "Test kmod_path__parse function", 155 .desc = "kmod_path__parse",
156 .func = test__kmod_path__parse, 156 .func = test__kmod_path__parse,
157 }, 157 },
158 { 158 {
159 .desc = "Test thread map", 159 .desc = "Thread map",
160 .func = test__thread_map, 160 .func = test__thread_map,
161 }, 161 },
162 { 162 {
163 .desc = "Test LLVM searching and compiling", 163 .desc = "LLVM search and compile",
164 .func = test__llvm, 164 .func = test__llvm,
165 .subtest = { 165 .subtest = {
166 .skip_if_fail = true, 166 .skip_if_fail = true,
@@ -169,11 +169,11 @@ static struct test generic_tests[] = {
169 }, 169 },
170 }, 170 },
171 { 171 {
172 .desc = "Test topology in session", 172 .desc = "Session topology",
173 .func = test_session_topology, 173 .func = test_session_topology,
174 }, 174 },
175 { 175 {
176 .desc = "Test BPF filter", 176 .desc = "BPF filter",
177 .func = test__bpf, 177 .func = test__bpf,
178 .subtest = { 178 .subtest = {
179 .skip_if_fail = true, 179 .skip_if_fail = true,
@@ -182,54 +182,71 @@ static struct test generic_tests[] = {
182 }, 182 },
183 }, 183 },
184 { 184 {
185 .desc = "Test thread map synthesize", 185 .desc = "Synthesize thread map",
186 .func = test__thread_map_synthesize, 186 .func = test__thread_map_synthesize,
187 }, 187 },
188 { 188 {
189 .desc = "Test cpu map synthesize", 189 .desc = "Remove thread map",
190 .func = test__thread_map_remove,
191 },
192 {
193 .desc = "Synthesize cpu map",
190 .func = test__cpu_map_synthesize, 194 .func = test__cpu_map_synthesize,
191 }, 195 },
192 { 196 {
193 .desc = "Test stat config synthesize", 197 .desc = "Synthesize stat config",
194 .func = test__synthesize_stat_config, 198 .func = test__synthesize_stat_config,
195 }, 199 },
196 { 200 {
197 .desc = "Test stat synthesize", 201 .desc = "Synthesize stat",
198 .func = test__synthesize_stat, 202 .func = test__synthesize_stat,
199 }, 203 },
200 { 204 {
201 .desc = "Test stat round synthesize", 205 .desc = "Synthesize stat round",
202 .func = test__synthesize_stat_round, 206 .func = test__synthesize_stat_round,
203 }, 207 },
204 { 208 {
205 .desc = "Test attr update synthesize", 209 .desc = "Synthesize attr update",
206 .func = test__event_update, 210 .func = test__event_update,
207 }, 211 },
208 { 212 {
209 .desc = "Test events times", 213 .desc = "Event times",
210 .func = test__event_times, 214 .func = test__event_times,
211 }, 215 },
212 { 216 {
213 .desc = "Test backward reading from ring buffer", 217 .desc = "Read backward ring buffer",
214 .func = test__backward_ring_buffer, 218 .func = test__backward_ring_buffer,
215 }, 219 },
216 { 220 {
217 .desc = "Test cpu map print", 221 .desc = "Print cpu map",
218 .func = test__cpu_map_print, 222 .func = test__cpu_map_print,
219 }, 223 },
220 { 224 {
221 .desc = "Test SDT event probing", 225 .desc = "Probe SDT events",
222 .func = test__sdt_event, 226 .func = test__sdt_event,
223 }, 227 },
224 { 228 {
225 .desc = "Test is_printable_array function", 229 .desc = "is_printable_array",
226 .func = test__is_printable_array, 230 .func = test__is_printable_array,
227 }, 231 },
228 { 232 {
229 .desc = "Test bitmap print", 233 .desc = "Print bitmap",
230 .func = test__bitmap_print, 234 .func = test__bitmap_print,
231 }, 235 },
232 { 236 {
237 .desc = "perf hooks",
238 .func = test__perf_hooks,
239 },
240 {
241 .desc = "builtin clang support",
242 .func = test__clang,
243 .subtest = {
244 .skip_if_fail = true,
245 .get_nr = test__clang_subtest_get_nr,
246 .get_desc = test__clang_subtest_get_desc,
247 }
248 },
249 {
233 .func = NULL, 250 .func = NULL,
234 }, 251 },
235}; 252};
diff --git a/tools/perf/tests/clang.c b/tools/perf/tests/clang.c
new file mode 100644
index 000000000000..f853e242a86c
--- /dev/null
+++ b/tools/perf/tests/clang.c
@@ -0,0 +1,46 @@
1#include "tests.h"
2#include "debug.h"
3#include "util.h"
4#include "c++/clang-c.h"
5
6static struct {
7 int (*func)(void);
8 const char *desc;
9} clang_testcase_table[] = {
10#ifdef HAVE_LIBCLANGLLVM_SUPPORT
11 {
12 .func = test__clang_to_IR,
13 .desc = "builtin clang compile C source to IR",
14 },
15 {
16 .func = test__clang_to_obj,
17 .desc = "builtin clang compile C source to ELF object",
18 },
19#endif
20};
21
22int test__clang_subtest_get_nr(void)
23{
24 return (int)ARRAY_SIZE(clang_testcase_table);
25}
26
27const char *test__clang_subtest_get_desc(int i)
28{
29 if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table))
30 return NULL;
31 return clang_testcase_table[i].desc;
32}
33
34#ifndef HAVE_LIBCLANGLLVM_SUPPORT
35int test__clang(int i __maybe_unused)
36{
37 return TEST_SKIP;
38}
39#else
40int test__clang(int i)
41{
42 if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table))
43 return TEST_FAIL;
44 return clang_testcase_table[i].func();
45}
46#endif
diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-reading.c
index 2af156a8d4e5..ff5bc6363a79 100644
--- a/tools/perf/tests/code-reading.c
+++ b/tools/perf/tests/code-reading.c
@@ -263,7 +263,7 @@ static int read_object_code(u64 addr, size_t len, u8 cpumode,
263 * Converting addresses for use by objdump requires more information. 263 * Converting addresses for use by objdump requires more information.
264 * map__load() does that. See map__rip_2objdump() for details. 264 * map__load() does that. See map__rip_2objdump() for details.
265 */ 265 */
266 if (map__load(al.map, NULL)) 266 if (map__load(al.map))
267 return -1; 267 return -1;
268 268
269 /* objdump struggles with kcore - try each map only once */ 269 /* objdump struggles with kcore - try each map only once */
@@ -511,7 +511,7 @@ static int do_test_code_reading(bool try_kcore)
511 511
512 /* Load kernel map */ 512 /* Load kernel map */
513 map = machine__kernel_map(machine); 513 map = machine__kernel_map(machine);
514 ret = map__load(map, NULL); 514 ret = map__load(map);
515 if (ret < 0) { 515 if (ret < 0) {
516 pr_debug("map__load failed\n"); 516 pr_debug("map__load failed\n");
517 goto out_err; 517 goto out_err;
diff --git a/tools/perf/tests/dwarf-unwind.c b/tools/perf/tests/dwarf-unwind.c
index 8f6eb853aaf7..1046491de4b2 100644
--- a/tools/perf/tests/dwarf-unwind.c
+++ b/tools/perf/tests/dwarf-unwind.c
@@ -11,7 +11,7 @@
11#include "thread.h" 11#include "thread.h"
12#include "callchain.h" 12#include "callchain.h"
13 13
14#if defined (__x86_64__) || defined (__i386__) 14#if defined (__x86_64__) || defined (__i386__) || defined (__powerpc__)
15#include "arch-tests.h" 15#include "arch-tests.h"
16#endif 16#endif
17 17
diff --git a/tools/perf/tests/llvm.c b/tools/perf/tests/llvm.c
index b798a4bfd238..02a33ebcd992 100644
--- a/tools/perf/tests/llvm.c
+++ b/tools/perf/tests/llvm.c
@@ -34,19 +34,19 @@ static struct {
34} bpf_source_table[__LLVM_TESTCASE_MAX] = { 34} bpf_source_table[__LLVM_TESTCASE_MAX] = {
35 [LLVM_TESTCASE_BASE] = { 35 [LLVM_TESTCASE_BASE] = {
36 .source = test_llvm__bpf_base_prog, 36 .source = test_llvm__bpf_base_prog,
37 .desc = "Basic BPF llvm compiling test", 37 .desc = "Basic BPF llvm compile",
38 }, 38 },
39 [LLVM_TESTCASE_KBUILD] = { 39 [LLVM_TESTCASE_KBUILD] = {
40 .source = test_llvm__bpf_test_kbuild_prog, 40 .source = test_llvm__bpf_test_kbuild_prog,
41 .desc = "Test kbuild searching", 41 .desc = "kbuild searching",
42 }, 42 },
43 [LLVM_TESTCASE_BPF_PROLOGUE] = { 43 [LLVM_TESTCASE_BPF_PROLOGUE] = {
44 .source = test_llvm__bpf_test_prologue_prog, 44 .source = test_llvm__bpf_test_prologue_prog,
45 .desc = "Compile source for BPF prologue generation test", 45 .desc = "Compile source for BPF prologue generation",
46 }, 46 },
47 [LLVM_TESTCASE_BPF_RELOCATION] = { 47 [LLVM_TESTCASE_BPF_RELOCATION] = {
48 .source = test_llvm__bpf_test_relocation, 48 .source = test_llvm__bpf_test_relocation,
49 .desc = "Compile source for BPF relocation test", 49 .desc = "Compile source for BPF relocation",
50 .should_load_fail = true, 50 .should_load_fail = true,
51 }, 51 },
52}; 52};
diff --git a/tools/perf/tests/llvm.h b/tools/perf/tests/llvm.h
index 0eaa604be99d..b83571758d83 100644
--- a/tools/perf/tests/llvm.h
+++ b/tools/perf/tests/llvm.h
@@ -1,6 +1,10 @@
1#ifndef PERF_TEST_LLVM_H 1#ifndef PERF_TEST_LLVM_H
2#define PERF_TEST_LLVM_H 2#define PERF_TEST_LLVM_H
3 3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
4#include <stddef.h> /* for size_t */ 8#include <stddef.h> /* for size_t */
5#include <stdbool.h> /* for bool */ 9#include <stdbool.h> /* for bool */
6 10
@@ -20,4 +24,7 @@ enum test_llvm__testcase {
20int test_llvm__fetch_bpf_obj(void **p_obj_buf, size_t *p_obj_buf_sz, 24int test_llvm__fetch_bpf_obj(void **p_obj_buf, size_t *p_obj_buf_sz,
21 enum test_llvm__testcase index, bool force, 25 enum test_llvm__testcase index, bool force,
22 bool *should_load_fail); 26 bool *should_load_fail);
27#ifdef __cplusplus
28}
29#endif
23#endif 30#endif
diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index 143f4d549769..e46723568516 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -42,7 +42,7 @@ LC_NUMERIC=C
42export LC_COLLATE LC_NUMERIC 42export LC_COLLATE LC_NUMERIC
43 43
44ifeq ($(srctree),) 44ifeq ($(srctree),)
45srctree := $(patsubst %/,%,$(dir $(shell pwd))) 45srctree := $(patsubst %/,%,$(dir $(CURDIR)))
46srctree := $(patsubst %/,%,$(dir $(srctree))) 46srctree := $(patsubst %/,%,$(dir $(srctree)))
47#$(info Determined 'srctree' to be $(srctree)) 47#$(info Determined 'srctree' to be $(srctree))
48endif 48endif
@@ -83,6 +83,7 @@ make_no_libbpf := NO_LIBBPF=1
83make_no_libcrypto := NO_LIBCRYPTO=1 83make_no_libcrypto := NO_LIBCRYPTO=1
84make_with_babeltrace:= LIBBABELTRACE=1 84make_with_babeltrace:= LIBBABELTRACE=1
85make_no_sdt := NO_SDT=1 85make_no_sdt := NO_SDT=1
86make_with_clangllvm := LIBCLANGLLVM=1
86make_tags := tags 87make_tags := tags
87make_cscope := cscope 88make_cscope := cscope
88make_help := help 89make_help := help
@@ -106,7 +107,7 @@ make_minimal := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
106make_minimal += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 107make_minimal += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1
107make_minimal += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 108make_minimal += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1
108make_minimal += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 109make_minimal += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1
109make_minimal += NO_LIBCRYPTO=1 NO_SDT=1 110make_minimal += NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
110 111
111# $(run) contains all available tests 112# $(run) contains all available tests
112run := make_pure 113run := make_pure
@@ -139,6 +140,7 @@ run += make_no_libbionic
139run += make_no_auxtrace 140run += make_no_auxtrace
140run += make_no_libbpf 141run += make_no_libbpf
141run += make_with_babeltrace 142run += make_with_babeltrace
143run += make_with_clangllvm
142run += make_help 144run += make_help
143run += make_doc 145run += make_doc
144run += make_perf_o 146run += make_perf_o
@@ -278,7 +280,7 @@ endif
278 280
279MAKEFLAGS := --no-print-directory 281MAKEFLAGS := --no-print-directory
280 282
281clean := @(cd $(PERF); $(MAKE_F) -s $(O_OPT) clean >/dev/null) 283clean := @(cd $(PERF); $(MAKE_F) -s $(O_OPT) clean >/dev/null && $(MAKE) -s $(O_OPT) -C ../build clean >/dev/null)
282 284
283$(run): 285$(run):
284 $(call clean) 286 $(call clean)
diff --git a/tools/perf/tests/perf-hooks.c b/tools/perf/tests/perf-hooks.c
new file mode 100644
index 000000000000..665ecc19671c
--- /dev/null
+++ b/tools/perf/tests/perf-hooks.c
@@ -0,0 +1,48 @@
1#include <signal.h>
2#include <stdlib.h>
3
4#include "tests.h"
5#include "debug.h"
6#include "util.h"
7#include "perf-hooks.h"
8
9static void sigsegv_handler(int sig __maybe_unused)
10{
11 pr_debug("SIGSEGV is observed as expected, try to recover.\n");
12 perf_hooks__recover();
13 signal(SIGSEGV, SIG_DFL);
14 raise(SIGSEGV);
15 exit(-1);
16}
17
18
19static void the_hook(void *_hook_flags)
20{
21 int *hook_flags = _hook_flags;
22 int *p = NULL;
23
24 *hook_flags = 1234;
25
26 /* Generate a segfault, test perf_hooks__recover */
27 *p = 0;
28}
29
30int test__perf_hooks(int subtest __maybe_unused)
31{
32 int hook_flags = 0;
33
34 signal(SIGSEGV, sigsegv_handler);
35 perf_hooks__set_hook("test", the_hook, &hook_flags);
36 perf_hooks__invoke_test();
37
38 /* hook is triggered? */
39 if (hook_flags != 1234) {
40 pr_debug("Setting failed: %d (%p)\n", hook_flags, &hook_flags);
41 return TEST_FAIL;
42 }
43
44 /* the buggy hook is removed? */
45 if (perf_hooks__get_hook("test"))
46 return TEST_FAIL;
47 return TEST_OK;
48}
diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h
index 7c196c585472..a512f0c8ff5b 100644
--- a/tools/perf/tests/tests.h
+++ b/tools/perf/tests/tests.h
@@ -80,6 +80,7 @@ const char *test__bpf_subtest_get_desc(int subtest);
80int test__bpf_subtest_get_nr(void); 80int test__bpf_subtest_get_nr(void);
81int test_session_topology(int subtest); 81int test_session_topology(int subtest);
82int test__thread_map_synthesize(int subtest); 82int test__thread_map_synthesize(int subtest);
83int test__thread_map_remove(int subtest);
83int test__cpu_map_synthesize(int subtest); 84int test__cpu_map_synthesize(int subtest);
84int test__synthesize_stat_config(int subtest); 85int test__synthesize_stat_config(int subtest);
85int test__synthesize_stat(int subtest); 86int test__synthesize_stat(int subtest);
@@ -91,6 +92,10 @@ int test__cpu_map_print(int subtest);
91int test__sdt_event(int subtest); 92int test__sdt_event(int subtest);
92int test__is_printable_array(int subtest); 93int test__is_printable_array(int subtest);
93int test__bitmap_print(int subtest); 94int test__bitmap_print(int subtest);
95int test__perf_hooks(int subtest);
96int test__clang(int subtest);
97const char *test__clang_subtest_get_desc(int subtest);
98int test__clang_subtest_get_nr(void);
94 99
95#if defined(__arm__) || defined(__aarch64__) 100#if defined(__arm__) || defined(__aarch64__)
96#ifdef HAVE_DWARF_UNWIND_SUPPORT 101#ifdef HAVE_DWARF_UNWIND_SUPPORT
diff --git a/tools/perf/tests/thread-map.c b/tools/perf/tests/thread-map.c
index cee2a2cdc933..a4a4b4625ac3 100644
--- a/tools/perf/tests/thread-map.c
+++ b/tools/perf/tests/thread-map.c
@@ -1,3 +1,4 @@
1#include <stdlib.h>
1#include <sys/types.h> 2#include <sys/types.h>
2#include <unistd.h> 3#include <unistd.h>
3#include <sys/prctl.h> 4#include <sys/prctl.h>
@@ -93,3 +94,46 @@ int test__thread_map_synthesize(int subtest __maybe_unused)
93 94
94 return 0; 95 return 0;
95} 96}
97
98int test__thread_map_remove(int subtest __maybe_unused)
99{
100 struct thread_map *threads;
101 char *str;
102 int i;
103
104 TEST_ASSERT_VAL("failed to allocate map string",
105 asprintf(&str, "%d,%d", getpid(), getppid()) >= 0);
106
107 threads = thread_map__new_str(str, NULL, 0);
108
109 TEST_ASSERT_VAL("failed to allocate thread_map",
110 threads);
111
112 if (verbose)
113 thread_map__fprintf(threads, stderr);
114
115 TEST_ASSERT_VAL("failed to remove thread",
116 !thread_map__remove(threads, 0));
117
118 TEST_ASSERT_VAL("thread_map count != 1", threads->nr == 1);
119
120 if (verbose)
121 thread_map__fprintf(threads, stderr);
122
123 TEST_ASSERT_VAL("failed to remove thread",
124 !thread_map__remove(threads, 0));
125
126 TEST_ASSERT_VAL("thread_map count != 0", threads->nr == 0);
127
128 if (verbose)
129 thread_map__fprintf(threads, stderr);
130
131 TEST_ASSERT_VAL("failed to not remove thread",
132 thread_map__remove(threads, 0));
133
134 for (i = 0; i < threads->nr; i++)
135 free(threads->map[i].comm);
136
137 free(threads);
138 return 0;
139}
diff --git a/tools/perf/tests/vmlinux-kallsyms.c b/tools/perf/tests/vmlinux-kallsyms.c
index e63abab7d5a1..a5082331f246 100644
--- a/tools/perf/tests/vmlinux-kallsyms.c
+++ b/tools/perf/tests/vmlinux-kallsyms.c
@@ -8,14 +8,6 @@
8#include "debug.h" 8#include "debug.h"
9#include "machine.h" 9#include "machine.h"
10 10
11static int vmlinux_matches_kallsyms_filter(struct map *map __maybe_unused,
12 struct symbol *sym)
13{
14 bool *visited = symbol__priv(sym);
15 *visited = true;
16 return 0;
17}
18
19#define UM(x) kallsyms_map->unmap_ip(kallsyms_map, (x)) 11#define UM(x) kallsyms_map->unmap_ip(kallsyms_map, (x))
20 12
21int test__vmlinux_matches_kallsyms(int subtest __maybe_unused) 13int test__vmlinux_matches_kallsyms(int subtest __maybe_unused)
@@ -28,6 +20,7 @@ int test__vmlinux_matches_kallsyms(int subtest __maybe_unused)
28 enum map_type type = MAP__FUNCTION; 20 enum map_type type = MAP__FUNCTION;
29 struct maps *maps = &vmlinux.kmaps.maps[type]; 21 struct maps *maps = &vmlinux.kmaps.maps[type];
30 u64 mem_start, mem_end; 22 u64 mem_start, mem_end;
23 bool header_printed;
31 24
32 /* 25 /*
33 * Step 1: 26 * Step 1:
@@ -61,7 +54,7 @@ int test__vmlinux_matches_kallsyms(int subtest __maybe_unused)
61 * be compacted against the list of modules found in the "vmlinux" 54 * be compacted against the list of modules found in the "vmlinux"
62 * code and with the one got from /proc/modules from the "kallsyms" code. 55 * code and with the one got from /proc/modules from the "kallsyms" code.
63 */ 56 */
64 if (__machine__load_kallsyms(&kallsyms, "/proc/kallsyms", type, true, NULL) <= 0) { 57 if (__machine__load_kallsyms(&kallsyms, "/proc/kallsyms", type, true) <= 0) {
65 pr_debug("dso__load_kallsyms "); 58 pr_debug("dso__load_kallsyms ");
66 goto out; 59 goto out;
67 } 60 }
@@ -99,8 +92,7 @@ int test__vmlinux_matches_kallsyms(int subtest __maybe_unused)
99 * maps__reloc_vmlinux will notice and set proper ->[un]map_ip routines 92 * maps__reloc_vmlinux will notice and set proper ->[un]map_ip routines
100 * to fixup the symbols. 93 * to fixup the symbols.
101 */ 94 */
102 if (machine__load_vmlinux_path(&vmlinux, type, 95 if (machine__load_vmlinux_path(&vmlinux, type) <= 0) {
103 vmlinux_matches_kallsyms_filter) <= 0) {
104 pr_debug("Couldn't find a vmlinux that matches the kernel running on this machine, skipping test\n"); 96 pr_debug("Couldn't find a vmlinux that matches the kernel running on this machine, skipping test\n");
105 err = TEST_SKIP; 97 err = TEST_SKIP;
106 goto out; 98 goto out;
@@ -126,7 +118,7 @@ int test__vmlinux_matches_kallsyms(int subtest __maybe_unused)
126 mem_end = vmlinux_map->unmap_ip(vmlinux_map, sym->end); 118 mem_end = vmlinux_map->unmap_ip(vmlinux_map, sym->end);
127 119
128 first_pair = machine__find_kernel_symbol(&kallsyms, type, 120 first_pair = machine__find_kernel_symbol(&kallsyms, type,
129 mem_start, NULL, NULL); 121 mem_start, NULL);
130 pair = first_pair; 122 pair = first_pair;
131 123
132 if (pair && UM(pair->start) == mem_start) { 124 if (pair && UM(pair->start) == mem_start) {
@@ -143,7 +135,7 @@ next_pair:
143 */ 135 */
144 s64 skew = mem_end - UM(pair->end); 136 s64 skew = mem_end - UM(pair->end);
145 if (llabs(skew) >= page_size) 137 if (llabs(skew) >= page_size)
146 pr_debug("%#" PRIx64 ": diff end addr for %s v: %#" PRIx64 " k: %#" PRIx64 "\n", 138 pr_debug("WARN: %#" PRIx64 ": diff end addr for %s v: %#" PRIx64 " k: %#" PRIx64 "\n",
147 mem_start, sym->name, mem_end, 139 mem_start, sym->name, mem_end,
148 UM(pair->end)); 140 UM(pair->end));
149 141
@@ -154,22 +146,23 @@ next_pair:
154 * kallsyms. 146 * kallsyms.
155 */ 147 */
156 continue; 148 continue;
157
158 } else { 149 } else {
159 pair = machine__find_kernel_symbol_by_name(&kallsyms, type, sym->name, NULL, NULL); 150 pair = machine__find_kernel_symbol_by_name(&kallsyms, type, sym->name, NULL);
160 if (pair) { 151 if (pair) {
161 if (UM(pair->start) == mem_start) 152 if (UM(pair->start) == mem_start)
162 goto next_pair; 153 goto next_pair;
163 154
164 pr_debug("%#" PRIx64 ": diff name v: %s k: %s\n", 155 pr_debug("WARN: %#" PRIx64 ": diff name v: %s k: %s\n",
165 mem_start, sym->name, pair->name); 156 mem_start, sym->name, pair->name);
166 } else { 157 } else {
167 pr_debug("%#" PRIx64 ": diff name v: %s k: %s\n", 158 pr_debug("WARN: %#" PRIx64 ": diff name v: %s k: %s\n",
168 mem_start, sym->name, first_pair->name); 159 mem_start, sym->name, first_pair->name);
169 } 160 }
161
162 continue;
170 } 163 }
171 } else 164 } else
172 pr_debug("%#" PRIx64 ": %s not on kallsyms\n", 165 pr_debug("ERR : %#" PRIx64 ": %s not on kallsyms\n",
173 mem_start, sym->name); 166 mem_start, sym->name);
174 167
175 err = -1; 168 err = -1;
@@ -178,7 +171,7 @@ next_pair:
178 if (!verbose) 171 if (!verbose)
179 goto out; 172 goto out;
180 173
181 pr_info("Maps only in vmlinux:\n"); 174 header_printed = false;
182 175
183 for (map = maps__first(maps); map; map = map__next(map)) { 176 for (map = maps__first(maps); map; map = map__next(map)) {
184 struct map * 177 struct map *
@@ -192,13 +185,18 @@ next_pair:
192 (map->dso->kernel ? 185 (map->dso->kernel ?
193 map->dso->short_name : 186 map->dso->short_name :
194 map->dso->name)); 187 map->dso->name));
195 if (pair) 188 if (pair) {
196 pair->priv = 1; 189 pair->priv = 1;
197 else 190 } else {
191 if (!header_printed) {
192 pr_info("WARN: Maps only in vmlinux:\n");
193 header_printed = true;
194 }
198 map__fprintf(map, stderr); 195 map__fprintf(map, stderr);
196 }
199 } 197 }
200 198
201 pr_info("Maps in vmlinux with a different name in kallsyms:\n"); 199 header_printed = false;
202 200
203 for (map = maps__first(maps); map; map = map__next(map)) { 201 for (map = maps__first(maps); map; map = map__next(map)) {
204 struct map *pair; 202 struct map *pair;
@@ -211,24 +209,33 @@ next_pair:
211 continue; 209 continue;
212 210
213 if (pair->start == mem_start) { 211 if (pair->start == mem_start) {
214 pair->priv = 1; 212 if (!header_printed) {
215 pr_info(" %" PRIx64 "-%" PRIx64 " %" PRIx64 " %s in kallsyms as", 213 pr_info("WARN: Maps in vmlinux with a different name in kallsyms:\n");
214 header_printed = true;
215 }
216
217 pr_info("WARN: %" PRIx64 "-%" PRIx64 " %" PRIx64 " %s in kallsyms as",
216 map->start, map->end, map->pgoff, map->dso->name); 218 map->start, map->end, map->pgoff, map->dso->name);
217 if (mem_end != pair->end) 219 if (mem_end != pair->end)
218 pr_info(":\n*%" PRIx64 "-%" PRIx64 " %" PRIx64, 220 pr_info(":\nWARN: *%" PRIx64 "-%" PRIx64 " %" PRIx64,
219 pair->start, pair->end, pair->pgoff); 221 pair->start, pair->end, pair->pgoff);
220 pr_info(" %s\n", pair->dso->name); 222 pr_info(" %s\n", pair->dso->name);
221 pair->priv = 1; 223 pair->priv = 1;
222 } 224 }
223 } 225 }
224 226
225 pr_info("Maps only in kallsyms:\n"); 227 header_printed = false;
226 228
227 maps = &kallsyms.kmaps.maps[type]; 229 maps = &kallsyms.kmaps.maps[type];
228 230
229 for (map = maps__first(maps); map; map = map__next(map)) { 231 for (map = maps__first(maps); map; map = map__next(map)) {
230 if (!map->priv) 232 if (!map->priv) {
233 if (!header_printed) {
234 pr_info("WARN: Maps only in kallsyms:\n");
235 header_printed = true;
236 }
231 map__fprintf(map, stderr); 237 map__fprintf(map, stderr);
238 }
232 } 239 }
233out: 240out:
234 machine__exit(&kallsyms); 241 machine__exit(&kallsyms);
diff --git a/tools/perf/trace/beauty/mmap.c b/tools/perf/trace/beauty/mmap.c
index d0a3a8e402e7..af1cfde6b97b 100644
--- a/tools/perf/trace/beauty/mmap.c
+++ b/tools/perf/trace/beauty/mmap.c
@@ -1,8 +1,4 @@
1#include <sys/mman.h> 1#include <uapi/linux/mman.h>
2
3#ifndef PROT_SEM
4#define PROT_SEM 0x8
5#endif
6 2
7static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size, 3static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size,
8 struct syscall_arg *arg) 4 struct syscall_arg *arg)
@@ -33,31 +29,6 @@ static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size,
33 29
34#define SCA_MMAP_PROT syscall_arg__scnprintf_mmap_prot 30#define SCA_MMAP_PROT syscall_arg__scnprintf_mmap_prot
35 31
36#ifndef MAP_FIXED
37#define MAP_FIXED 0x10
38#endif
39
40#ifndef MAP_ANONYMOUS
41#define MAP_ANONYMOUS 0x20
42#endif
43
44#ifndef MAP_32BIT
45#define MAP_32BIT 0x40
46#endif
47
48#ifndef MAP_STACK
49#define MAP_STACK 0x20000
50#endif
51
52#ifndef MAP_HUGETLB
53#define MAP_HUGETLB 0x40000
54#endif
55
56#ifndef MAP_UNINITIALIZED
57#define MAP_UNINITIALIZED 0x4000000
58#endif
59
60
61static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size, 32static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,
62 struct syscall_arg *arg) 33 struct syscall_arg *arg)
63{ 34{
@@ -71,7 +42,9 @@ static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,
71 42
72 P_MMAP_FLAG(SHARED); 43 P_MMAP_FLAG(SHARED);
73 P_MMAP_FLAG(PRIVATE); 44 P_MMAP_FLAG(PRIVATE);
45#ifdef MAP_32BIT
74 P_MMAP_FLAG(32BIT); 46 P_MMAP_FLAG(32BIT);
47#endif
75 P_MMAP_FLAG(ANONYMOUS); 48 P_MMAP_FLAG(ANONYMOUS);
76 P_MMAP_FLAG(DENYWRITE); 49 P_MMAP_FLAG(DENYWRITE);
77 P_MMAP_FLAG(EXECUTABLE); 50 P_MMAP_FLAG(EXECUTABLE);
@@ -95,13 +68,6 @@ static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,
95 68
96#define SCA_MMAP_FLAGS syscall_arg__scnprintf_mmap_flags 69#define SCA_MMAP_FLAGS syscall_arg__scnprintf_mmap_flags
97 70
98#ifndef MREMAP_MAYMOVE
99#define MREMAP_MAYMOVE 1
100#endif
101#ifndef MREMAP_FIXED
102#define MREMAP_FIXED 2
103#endif
104
105static size_t syscall_arg__scnprintf_mremap_flags(char *bf, size_t size, 71static size_t syscall_arg__scnprintf_mremap_flags(char *bf, size_t size,
106 struct syscall_arg *arg) 72 struct syscall_arg *arg)
107{ 73{
@@ -125,39 +91,6 @@ static size_t syscall_arg__scnprintf_mremap_flags(char *bf, size_t size,
125 91
126#define SCA_MREMAP_FLAGS syscall_arg__scnprintf_mremap_flags 92#define SCA_MREMAP_FLAGS syscall_arg__scnprintf_mremap_flags
127 93
128#ifndef MADV_HWPOISON
129#define MADV_HWPOISON 100
130#endif
131
132#ifndef MADV_SOFT_OFFLINE
133#define MADV_SOFT_OFFLINE 101
134#endif
135
136#ifndef MADV_MERGEABLE
137#define MADV_MERGEABLE 12
138#endif
139
140#ifndef MADV_UNMERGEABLE
141#define MADV_UNMERGEABLE 13
142#endif
143
144#ifndef MADV_HUGEPAGE
145#define MADV_HUGEPAGE 14
146#endif
147
148#ifndef MADV_NOHUGEPAGE
149#define MADV_NOHUGEPAGE 15
150#endif
151
152#ifndef MADV_DONTDUMP
153#define MADV_DONTDUMP 16
154#endif
155
156#ifndef MADV_DODUMP
157#define MADV_DODUMP 17
158#endif
159
160
161static size_t syscall_arg__scnprintf_madvise_behavior(char *bf, size_t size, 94static size_t syscall_arg__scnprintf_madvise_behavior(char *bf, size_t size,
162 struct syscall_arg *arg) 95 struct syscall_arg *arg)
163{ 96{
@@ -170,6 +103,7 @@ static size_t syscall_arg__scnprintf_madvise_behavior(char *bf, size_t size,
170 P_MADV_BHV(SEQUENTIAL); 103 P_MADV_BHV(SEQUENTIAL);
171 P_MADV_BHV(WILLNEED); 104 P_MADV_BHV(WILLNEED);
172 P_MADV_BHV(DONTNEED); 105 P_MADV_BHV(DONTNEED);
106 P_MADV_BHV(FREE);
173 P_MADV_BHV(REMOVE); 107 P_MADV_BHV(REMOVE);
174 P_MADV_BHV(DONTFORK); 108 P_MADV_BHV(DONTFORK);
175 P_MADV_BHV(DOFORK); 109 P_MADV_BHV(DOFORK);
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index 2e2d10022355..ba36aac340bc 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -213,17 +213,17 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
213 ui_browser__write_nstring(browser, bf, printed); 213 ui_browser__write_nstring(browser, bf, printed);
214 if (change_color) 214 if (change_color)
215 ui_browser__set_color(browser, color); 215 ui_browser__set_color(browser, color);
216 if (dl->ins && dl->ins->ops->scnprintf) { 216 if (dl->ins.ops && dl->ins.ops->scnprintf) {
217 if (ins__is_jump(dl->ins)) { 217 if (ins__is_jump(&dl->ins)) {
218 bool fwd = dl->ops.target.offset > (u64)dl->offset; 218 bool fwd = dl->ops.target.offset > dl->offset;
219 219
220 ui_browser__write_graph(browser, fwd ? SLSMG_DARROW_CHAR : 220 ui_browser__write_graph(browser, fwd ? SLSMG_DARROW_CHAR :
221 SLSMG_UARROW_CHAR); 221 SLSMG_UARROW_CHAR);
222 SLsmg_write_char(' '); 222 SLsmg_write_char(' ');
223 } else if (ins__is_call(dl->ins)) { 223 } else if (ins__is_call(&dl->ins)) {
224 ui_browser__write_graph(browser, SLSMG_RARROW_CHAR); 224 ui_browser__write_graph(browser, SLSMG_RARROW_CHAR);
225 SLsmg_write_char(' '); 225 SLsmg_write_char(' ');
226 } else if (ins__is_ret(dl->ins)) { 226 } else if (ins__is_ret(&dl->ins)) {
227 ui_browser__write_graph(browser, SLSMG_LARROW_CHAR); 227 ui_browser__write_graph(browser, SLSMG_LARROW_CHAR);
228 SLsmg_write_char(' '); 228 SLsmg_write_char(' ');
229 } else { 229 } else {
@@ -243,9 +243,10 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
243 243
244static bool disasm_line__is_valid_jump(struct disasm_line *dl, struct symbol *sym) 244static bool disasm_line__is_valid_jump(struct disasm_line *dl, struct symbol *sym)
245{ 245{
246 if (!dl || !dl->ins || !ins__is_jump(dl->ins) 246 if (!dl || !dl->ins.ops || !ins__is_jump(&dl->ins)
247 || !disasm_line__has_offset(dl) 247 || !disasm_line__has_offset(dl)
248 || dl->ops.target.offset >= symbol__size(sym)) 248 || dl->ops.target.offset < 0
249 || dl->ops.target.offset >= (s64)symbol__size(sym))
249 return false; 250 return false;
250 251
251 return true; 252 return true;
@@ -492,10 +493,10 @@ static bool annotate_browser__callq(struct annotate_browser *browser,
492 }; 493 };
493 char title[SYM_TITLE_MAX_SIZE]; 494 char title[SYM_TITLE_MAX_SIZE];
494 495
495 if (!ins__is_call(dl->ins)) 496 if (!ins__is_call(&dl->ins))
496 return false; 497 return false;
497 498
498 if (map_groups__find_ams(&target, NULL) || 499 if (map_groups__find_ams(&target) ||
499 map__rip_2objdump(target.map, target.map->map_ip(target.map, 500 map__rip_2objdump(target.map, target.map->map_ip(target.map,
500 target.addr)) != 501 target.addr)) !=
501 dl->ops.target.addr) { 502 dl->ops.target.addr) {
@@ -543,14 +544,16 @@ struct disasm_line *annotate_browser__find_offset(struct annotate_browser *brows
543static bool annotate_browser__jump(struct annotate_browser *browser) 544static bool annotate_browser__jump(struct annotate_browser *browser)
544{ 545{
545 struct disasm_line *dl = browser->selection; 546 struct disasm_line *dl = browser->selection;
547 u64 offset;
546 s64 idx; 548 s64 idx;
547 549
548 if (!ins__is_jump(dl->ins)) 550 if (!ins__is_jump(&dl->ins))
549 return false; 551 return false;
550 552
551 dl = annotate_browser__find_offset(browser, dl->ops.target.offset, &idx); 553 offset = dl->ops.target.offset;
554 dl = annotate_browser__find_offset(browser, offset, &idx);
552 if (dl == NULL) { 555 if (dl == NULL) {
553 ui_helpline__puts("Invalid jump offset"); 556 ui_helpline__printf("Invalid jump offset: %" PRIx64, offset);
554 return true; 557 return true;
555 } 558 }
556 559
@@ -841,9 +844,9 @@ show_help:
841 ui_helpline__puts("Huh? No selection. Report to linux-kernel@vger.kernel.org"); 844 ui_helpline__puts("Huh? No selection. Report to linux-kernel@vger.kernel.org");
842 else if (browser->selection->offset == -1) 845 else if (browser->selection->offset == -1)
843 ui_helpline__puts("Actions are only available for assembly lines."); 846 ui_helpline__puts("Actions are only available for assembly lines.");
844 else if (!browser->selection->ins) 847 else if (!browser->selection->ins.ops)
845 goto show_sup_ins; 848 goto show_sup_ins;
846 else if (ins__is_ret(browser->selection->ins)) 849 else if (ins__is_ret(&browser->selection->ins))
847 goto out; 850 goto out;
848 else if (!(annotate_browser__jump(browser) || 851 else if (!(annotate_browser__jump(browser) ||
849 annotate_browser__callq(browser, evsel, hbt))) { 852 annotate_browser__callq(browser, evsel, hbt))) {
@@ -1050,7 +1053,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,
1050 (nr_pcnt - 1); 1053 (nr_pcnt - 1);
1051 } 1054 }
1052 1055
1053 err = symbol__disassemble(sym, map, sizeof_bdl); 1056 err = symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), sizeof_bdl);
1054 if (err) { 1057 if (err) {
1055 char msg[BUFSIZ]; 1058 char msg[BUFSIZ];
1056 symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg)); 1059 symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg));
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 13d414384739..641b40234a9d 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -30,7 +30,7 @@ static struct rb_node *hists__filter_entries(struct rb_node *nd,
30 30
31static bool hist_browser__has_filter(struct hist_browser *hb) 31static bool hist_browser__has_filter(struct hist_browser *hb)
32{ 32{
33 return hists__has_filter(hb->hists) || hb->min_pcnt || symbol_conf.has_filter; 33 return hists__has_filter(hb->hists) || hb->min_pcnt || symbol_conf.has_filter || hb->c2c_filter;
34} 34}
35 35
36static int hist_browser__get_folding(struct hist_browser *browser) 36static int hist_browser__get_folding(struct hist_browser *browser)
@@ -69,8 +69,11 @@ static u32 hist_browser__nr_entries(struct hist_browser *hb)
69static void hist_browser__update_rows(struct hist_browser *hb) 69static void hist_browser__update_rows(struct hist_browser *hb)
70{ 70{
71 struct ui_browser *browser = &hb->b; 71 struct ui_browser *browser = &hb->b;
72 u16 header_offset = hb->show_headers ? 1 : 0, index_row; 72 struct hists *hists = hb->hists;
73 struct perf_hpp_list *hpp_list = hists->hpp_list;
74 u16 header_offset, index_row;
73 75
76 header_offset = hb->show_headers ? hpp_list->nr_header_lines : 0;
74 browser->rows = browser->height - header_offset; 77 browser->rows = browser->height - header_offset;
75 /* 78 /*
76 * Verify if we were at the last line and that line isn't 79 * Verify if we were at the last line and that line isn't
@@ -99,8 +102,11 @@ static void hist_browser__refresh_dimensions(struct ui_browser *browser)
99 102
100static void hist_browser__gotorc(struct hist_browser *browser, int row, int column) 103static void hist_browser__gotorc(struct hist_browser *browser, int row, int column)
101{ 104{
102 u16 header_offset = browser->show_headers ? 1 : 0; 105 struct hists *hists = browser->hists;
106 struct perf_hpp_list *hpp_list = hists->hpp_list;
107 u16 header_offset;
103 108
109 header_offset = browser->show_headers ? hpp_list->nr_header_lines : 0;
104 ui_browser__gotorc(&browser->b, row + header_offset, column); 110 ui_browser__gotorc(&browser->b, row + header_offset, column);
105} 111}
106 112
@@ -595,7 +601,8 @@ int hist_browser__run(struct hist_browser *browser, const char *help)
595 u64 nr_entries; 601 u64 nr_entries;
596 hbt->timer(hbt->arg); 602 hbt->timer(hbt->arg);
597 603
598 if (hist_browser__has_filter(browser)) 604 if (hist_browser__has_filter(browser) ||
605 symbol_conf.report_hierarchy)
599 hist_browser__update_nr_entries(browser); 606 hist_browser__update_nr_entries(browser);
600 607
601 nr_entries = hist_browser__nr_entries(browser); 608 nr_entries = hist_browser__nr_entries(browser);
@@ -731,6 +738,7 @@ static int hist_browser__show_callchain_list(struct hist_browser *browser,
731 struct callchain_print_arg *arg) 738 struct callchain_print_arg *arg)
732{ 739{
733 char bf[1024], *alloc_str; 740 char bf[1024], *alloc_str;
741 char buf[64], *alloc_str2;
734 const char *str; 742 const char *str;
735 743
736 if (arg->row_offset != 0) { 744 if (arg->row_offset != 0) {
@@ -739,12 +747,26 @@ static int hist_browser__show_callchain_list(struct hist_browser *browser,
739 } 747 }
740 748
741 alloc_str = NULL; 749 alloc_str = NULL;
750 alloc_str2 = NULL;
751
742 str = callchain_list__sym_name(chain, bf, sizeof(bf), 752 str = callchain_list__sym_name(chain, bf, sizeof(bf),
743 browser->show_dso); 753 browser->show_dso);
744 754
745 if (need_percent) { 755 if (symbol_conf.show_branchflag_count) {
746 char buf[64]; 756 if (need_percent)
757 callchain_list_counts__printf_value(node, chain, NULL,
758 buf, sizeof(buf));
759 else
760 callchain_list_counts__printf_value(NULL, chain, NULL,
761 buf, sizeof(buf));
747 762
763 if (asprintf(&alloc_str2, "%s%s", str, buf) < 0)
764 str = "Not enough memory!";
765 else
766 str = alloc_str2;
767 }
768
769 if (need_percent) {
748 callchain_node__scnprintf_value(node, buf, sizeof(buf), 770 callchain_node__scnprintf_value(node, buf, sizeof(buf),
749 total); 771 total);
750 772
@@ -757,6 +779,7 @@ static int hist_browser__show_callchain_list(struct hist_browser *browser,
757 print(browser, chain, str, offset, row, arg); 779 print(browser, chain, str, offset, row, arg);
758 780
759 free(alloc_str); 781 free(alloc_str);
782 free(alloc_str2);
760 return 1; 783 return 1;
761} 784}
762 785
@@ -1074,7 +1097,7 @@ struct hpp_arg {
1074 bool current_entry; 1097 bool current_entry;
1075}; 1098};
1076 1099
1077static int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...) 1100int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...)
1078{ 1101{
1079 struct hpp_arg *arg = hpp->ptr; 1102 struct hpp_arg *arg = hpp->ptr;
1080 int ret, len; 1103 int ret, len;
@@ -1091,7 +1114,6 @@ static int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...)
1091 ret = scnprintf(hpp->buf, hpp->size, fmt, len, percent); 1114 ret = scnprintf(hpp->buf, hpp->size, fmt, len, percent);
1092 ui_browser__printf(arg->b, "%s", hpp->buf); 1115 ui_browser__printf(arg->b, "%s", hpp->buf);
1093 1116
1094 advance_hpp(hpp, ret);
1095 return ret; 1117 return ret;
1096} 1118}
1097 1119
@@ -1331,8 +1353,8 @@ static int hist_browser__show_hierarchy_entry(struct hist_browser *browser,
1331 } 1353 }
1332 1354
1333 if (first) { 1355 if (first) {
1334 ui_browser__printf(&browser->b, "%c", folded_sign); 1356 ui_browser__printf(&browser->b, "%c ", folded_sign);
1335 width--; 1357 width -= 2;
1336 first = false; 1358 first = false;
1337 } else { 1359 } else {
1338 ui_browser__printf(&browser->b, " "); 1360 ui_browser__printf(&browser->b, " ");
@@ -1355,8 +1377,10 @@ static int hist_browser__show_hierarchy_entry(struct hist_browser *browser,
1355 width -= hpp.buf - s; 1377 width -= hpp.buf - s;
1356 } 1378 }
1357 1379
1358 ui_browser__write_nstring(&browser->b, "", hierarchy_indent); 1380 if (!first) {
1359 width -= hierarchy_indent; 1381 ui_browser__write_nstring(&browser->b, "", hierarchy_indent);
1382 width -= hierarchy_indent;
1383 }
1360 1384
1361 if (column >= browser->b.horiz_scroll) { 1385 if (column >= browser->b.horiz_scroll) {
1362 char s[2048]; 1386 char s[2048];
@@ -1375,7 +1399,13 @@ static int hist_browser__show_hierarchy_entry(struct hist_browser *browser,
1375 } 1399 }
1376 1400
1377 perf_hpp_list__for_each_format(entry->hpp_list, fmt) { 1401 perf_hpp_list__for_each_format(entry->hpp_list, fmt) {
1378 ui_browser__write_nstring(&browser->b, "", 2); 1402 if (first) {
1403 ui_browser__printf(&browser->b, "%c ", folded_sign);
1404 first = false;
1405 } else {
1406 ui_browser__write_nstring(&browser->b, "", 2);
1407 }
1408
1379 width -= 2; 1409 width -= 2;
1380 1410
1381 /* 1411 /*
@@ -1496,7 +1526,9 @@ static int advance_hpp_check(struct perf_hpp *hpp, int inc)
1496 return hpp->size <= 0; 1526 return hpp->size <= 0;
1497} 1527}
1498 1528
1499static int hists_browser__scnprintf_headers(struct hist_browser *browser, char *buf, size_t size) 1529static int
1530hists_browser__scnprintf_headers(struct hist_browser *browser, char *buf,
1531 size_t size, int line)
1500{ 1532{
1501 struct hists *hists = browser->hists; 1533 struct hists *hists = browser->hists;
1502 struct perf_hpp dummy_hpp = { 1534 struct perf_hpp dummy_hpp = {
@@ -1506,6 +1538,7 @@ static int hists_browser__scnprintf_headers(struct hist_browser *browser, char *
1506 struct perf_hpp_fmt *fmt; 1538 struct perf_hpp_fmt *fmt;
1507 size_t ret = 0; 1539 size_t ret = 0;
1508 int column = 0; 1540 int column = 0;
1541 int span = 0;
1509 1542
1510 if (symbol_conf.use_callchain) { 1543 if (symbol_conf.use_callchain) {
1511 ret = scnprintf(buf, size, " "); 1544 ret = scnprintf(buf, size, " ");
@@ -1517,10 +1550,13 @@ static int hists_browser__scnprintf_headers(struct hist_browser *browser, char *
1517 if (perf_hpp__should_skip(fmt, hists) || column++ < browser->b.horiz_scroll) 1550 if (perf_hpp__should_skip(fmt, hists) || column++ < browser->b.horiz_scroll)
1518 continue; 1551 continue;
1519 1552
1520 ret = fmt->header(fmt, &dummy_hpp, hists); 1553 ret = fmt->header(fmt, &dummy_hpp, hists, line, &span);
1521 if (advance_hpp_check(&dummy_hpp, ret)) 1554 if (advance_hpp_check(&dummy_hpp, ret))
1522 break; 1555 break;
1523 1556
1557 if (span)
1558 continue;
1559
1524 ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, " "); 1560 ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, " ");
1525 if (advance_hpp_check(&dummy_hpp, ret)) 1561 if (advance_hpp_check(&dummy_hpp, ret))
1526 break; 1562 break;
@@ -1543,10 +1579,11 @@ static int hists_browser__scnprintf_hierarchy_headers(struct hist_browser *brows
1543 int indent = hists->nr_hpp_node - 2; 1579 int indent = hists->nr_hpp_node - 2;
1544 bool first_node, first_col; 1580 bool first_node, first_col;
1545 1581
1546 ret = scnprintf(buf, size, " "); 1582 ret = scnprintf(buf, size, " ");
1547 if (advance_hpp_check(&dummy_hpp, ret)) 1583 if (advance_hpp_check(&dummy_hpp, ret))
1548 return ret; 1584 return ret;
1549 1585
1586 first_node = true;
1550 /* the first hpp_list_node is for overhead columns */ 1587 /* the first hpp_list_node is for overhead columns */
1551 fmt_node = list_first_entry(&hists->hpp_formats, 1588 fmt_node = list_first_entry(&hists->hpp_formats,
1552 struct perf_hpp_list_node, list); 1589 struct perf_hpp_list_node, list);
@@ -1554,19 +1591,23 @@ static int hists_browser__scnprintf_hierarchy_headers(struct hist_browser *brows
1554 if (column++ < browser->b.horiz_scroll) 1591 if (column++ < browser->b.horiz_scroll)
1555 continue; 1592 continue;
1556 1593
1557 ret = fmt->header(fmt, &dummy_hpp, hists); 1594 ret = fmt->header(fmt, &dummy_hpp, hists, 0, NULL);
1558 if (advance_hpp_check(&dummy_hpp, ret)) 1595 if (advance_hpp_check(&dummy_hpp, ret))
1559 break; 1596 break;
1560 1597
1561 ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, " "); 1598 ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, " ");
1562 if (advance_hpp_check(&dummy_hpp, ret)) 1599 if (advance_hpp_check(&dummy_hpp, ret))
1563 break; 1600 break;
1601
1602 first_node = false;
1564 } 1603 }
1565 1604
1566 ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, "%*s", 1605 if (!first_node) {
1567 indent * HIERARCHY_INDENT, ""); 1606 ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, "%*s",
1568 if (advance_hpp_check(&dummy_hpp, ret)) 1607 indent * HIERARCHY_INDENT, "");
1569 return ret; 1608 if (advance_hpp_check(&dummy_hpp, ret))
1609 return ret;
1610 }
1570 1611
1571 first_node = true; 1612 first_node = true;
1572 list_for_each_entry_continue(fmt_node, &hists->hpp_formats, list) { 1613 list_for_each_entry_continue(fmt_node, &hists->hpp_formats, list) {
@@ -1591,7 +1632,7 @@ static int hists_browser__scnprintf_hierarchy_headers(struct hist_browser *brows
1591 } 1632 }
1592 first_col = false; 1633 first_col = false;
1593 1634
1594 ret = fmt->header(fmt, &dummy_hpp, hists); 1635 ret = fmt->header(fmt, &dummy_hpp, hists, 0, NULL);
1595 dummy_hpp.buf[ret] = '\0'; 1636 dummy_hpp.buf[ret] = '\0';
1596 1637
1597 start = trim(dummy_hpp.buf); 1638 start = trim(dummy_hpp.buf);
@@ -1622,14 +1663,21 @@ static void hists_browser__hierarchy_headers(struct hist_browser *browser)
1622 1663
1623static void hists_browser__headers(struct hist_browser *browser) 1664static void hists_browser__headers(struct hist_browser *browser)
1624{ 1665{
1625 char headers[1024]; 1666 struct hists *hists = browser->hists;
1667 struct perf_hpp_list *hpp_list = hists->hpp_list;
1626 1668
1627 hists_browser__scnprintf_headers(browser, headers, 1669 int line;
1628 sizeof(headers));
1629 1670
1630 ui_browser__gotorc(&browser->b, 0, 0); 1671 for (line = 0; line < hpp_list->nr_header_lines; line++) {
1631 ui_browser__set_color(&browser->b, HE_COLORSET_ROOT); 1672 char headers[1024];
1632 ui_browser__write_nstring(&browser->b, headers, browser->b.width + 1); 1673
1674 hists_browser__scnprintf_headers(browser, headers,
1675 sizeof(headers), line);
1676
1677 ui_browser__gotorc(&browser->b, line, 0);
1678 ui_browser__set_color(&browser->b, HE_COLORSET_ROOT);
1679 ui_browser__write_nstring(&browser->b, headers, browser->b.width + 1);
1680 }
1633} 1681}
1634 1682
1635static void hist_browser__show_headers(struct hist_browser *browser) 1683static void hist_browser__show_headers(struct hist_browser *browser)
@@ -1656,10 +1704,13 @@ static unsigned int hist_browser__refresh(struct ui_browser *browser)
1656 u16 header_offset = 0; 1704 u16 header_offset = 0;
1657 struct rb_node *nd; 1705 struct rb_node *nd;
1658 struct hist_browser *hb = container_of(browser, struct hist_browser, b); 1706 struct hist_browser *hb = container_of(browser, struct hist_browser, b);
1707 struct hists *hists = hb->hists;
1659 1708
1660 if (hb->show_headers) { 1709 if (hb->show_headers) {
1710 struct perf_hpp_list *hpp_list = hists->hpp_list;
1711
1661 hist_browser__show_headers(hb); 1712 hist_browser__show_headers(hb);
1662 header_offset = 1; 1713 header_offset = hpp_list->nr_header_lines;
1663 } 1714 }
1664 1715
1665 ui_browser__hists_init_top(browser); 1716 ui_browser__hists_init_top(browser);
@@ -2054,10 +2105,23 @@ void hist_browser__init(struct hist_browser *browser,
2054 browser->b.use_navkeypressed = true; 2105 browser->b.use_navkeypressed = true;
2055 browser->show_headers = symbol_conf.show_hist_headers; 2106 browser->show_headers = symbol_conf.show_hist_headers;
2056 2107
2057 hists__for_each_format(hists, fmt) { 2108 if (symbol_conf.report_hierarchy) {
2058 perf_hpp__reset_width(fmt, hists); 2109 struct perf_hpp_list_node *fmt_node;
2110
2111 /* count overhead columns (in the first node) */
2112 fmt_node = list_first_entry(&hists->hpp_formats,
2113 struct perf_hpp_list_node, list);
2114 perf_hpp_list__for_each_format(&fmt_node->hpp, fmt)
2115 ++browser->b.columns;
2116
2117 /* add a single column for whole hierarchy sort keys*/
2059 ++browser->b.columns; 2118 ++browser->b.columns;
2119 } else {
2120 hists__for_each_format(hists, fmt)
2121 ++browser->b.columns;
2060 } 2122 }
2123
2124 hists__reset_column_width(hists);
2061} 2125}
2062 2126
2063struct hist_browser *hist_browser__new(struct hists *hists) 2127struct hist_browser *hist_browser__new(struct hists *hists)
@@ -2418,8 +2482,6 @@ do_zoom_dso(struct hist_browser *browser, struct popup_action *act)
2418 browser->hists->dso_filter = NULL; 2482 browser->hists->dso_filter = NULL;
2419 ui_helpline__pop(); 2483 ui_helpline__pop();
2420 } else { 2484 } else {
2421 if (map == NULL)
2422 return 0;
2423 ui_helpline__fpush("To zoom out press ESC or ENTER + \"Zoom out of %s DSO\"", 2485 ui_helpline__fpush("To zoom out press ESC or ENTER + \"Zoom out of %s DSO\"",
2424 __map__is_kernel(map) ? "the Kernel" : map->dso->short_name); 2486 __map__is_kernel(map) ? "the Kernel" : map->dso->short_name);
2425 browser->hists->dso_filter = map->dso; 2487 browser->hists->dso_filter = map->dso;
@@ -2787,7 +2849,10 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
2787 do_zoom_dso(browser, actions); 2849 do_zoom_dso(browser, actions);
2788 continue; 2850 continue;
2789 case 'V': 2851 case 'V':
2790 browser->show_dso = !browser->show_dso; 2852 verbose = (verbose + 1) % 4;
2853 browser->show_dso = verbose > 0;
2854 ui_helpline__fpush("Verbosity level set to %d\n",
2855 verbose);
2791 continue; 2856 continue;
2792 case 't': 2857 case 't':
2793 actions->thread = thread; 2858 actions->thread = thread;
diff --git a/tools/perf/ui/browsers/hists.h b/tools/perf/ui/browsers/hists.h
index 39bd0f28f211..23d6acb84800 100644
--- a/tools/perf/ui/browsers/hists.h
+++ b/tools/perf/ui/browsers/hists.h
@@ -18,6 +18,7 @@ struct hist_browser {
18 u64 nr_non_filtered_entries; 18 u64 nr_non_filtered_entries;
19 u64 nr_hierarchy_entries; 19 u64 nr_hierarchy_entries;
20 u64 nr_callchain_rows; 20 u64 nr_callchain_rows;
21 bool c2c_filter;
21 22
22 /* Get title string. */ 23 /* Get title string. */
23 int (*title)(struct hist_browser *browser, 24 int (*title)(struct hist_browser *browser,
diff --git a/tools/perf/ui/browsers/map.c b/tools/perf/ui/browsers/map.c
index 80912778bb6d..98a34664bb7e 100644
--- a/tools/perf/ui/browsers/map.c
+++ b/tools/perf/ui/browsers/map.c
@@ -52,9 +52,9 @@ static int map_browser__search(struct map_browser *browser)
52 52
53 if (target[0] == '0' && tolower(target[1]) == 'x') { 53 if (target[0] == '0' && tolower(target[1]) == 'x') {
54 u64 addr = strtoull(target, NULL, 16); 54 u64 addr = strtoull(target, NULL, 16);
55 sym = map__find_symbol(browser->map, addr, NULL); 55 sym = map__find_symbol(browser->map, addr);
56 } else 56 } else
57 sym = map__find_symbol_by_name(browser->map, target, NULL); 57 sym = map__find_symbol_by_name(browser->map, target);
58 58
59 if (sym != NULL) { 59 if (sym != NULL) {
60 u32 *idx = symbol__browser_index(sym); 60 u32 *idx = symbol__browser_index(sym);
diff --git a/tools/perf/ui/gtk/annotate.c b/tools/perf/ui/gtk/annotate.c
index 42d319927762..8c9308ac30b7 100644
--- a/tools/perf/ui/gtk/annotate.c
+++ b/tools/perf/ui/gtk/annotate.c
@@ -167,7 +167,7 @@ static int symbol__gtk_annotate(struct symbol *sym, struct map *map,
167 if (map->dso->annotate_warned) 167 if (map->dso->annotate_warned)
168 return -1; 168 return -1;
169 169
170 err = symbol__disassemble(sym, map, 0); 170 err = symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), 0);
171 if (err) { 171 if (err) {
172 char msg[BUFSIZ]; 172 char msg[BUFSIZ];
173 symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg)); 173 symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg));
diff --git a/tools/perf/ui/gtk/hists.c b/tools/perf/ui/gtk/hists.c
index c5f3677f6679..a4f02de7c1b5 100644
--- a/tools/perf/ui/gtk/hists.c
+++ b/tools/perf/ui/gtk/hists.c
@@ -549,7 +549,7 @@ static void perf_gtk__show_hierarchy(GtkWidget *window, struct hists *hists,
549 strcat(buf, "+"); 549 strcat(buf, "+");
550 first_col = false; 550 first_col = false;
551 551
552 fmt->header(fmt, &hpp, hists); 552 fmt->header(fmt, &hpp, hists, 0, NULL);
553 strcat(buf, ltrim(rtrim(hpp.buf))); 553 strcat(buf, ltrim(rtrim(hpp.buf)));
554 } 554 }
555 } 555 }
diff --git a/tools/perf/ui/helpline.c b/tools/perf/ui/helpline.c
index 5b74a7eba210..379039ab00d8 100644
--- a/tools/perf/ui/helpline.c
+++ b/tools/perf/ui/helpline.c
@@ -72,3 +72,13 @@ int ui_helpline__vshow(const char *fmt, va_list ap)
72{ 72{
73 return helpline_fns->show(fmt, ap); 73 return helpline_fns->show(fmt, ap);
74} 74}
75
76void ui_helpline__printf(const char *fmt, ...)
77{
78 va_list ap;
79
80 ui_helpline__pop();
81 va_start(ap, fmt);
82 ui_helpline__vpush(fmt, ap);
83 va_end(ap);
84}
diff --git a/tools/perf/ui/helpline.h b/tools/perf/ui/helpline.h
index 46181f4fc07e..d52d0a1a881b 100644
--- a/tools/perf/ui/helpline.h
+++ b/tools/perf/ui/helpline.h
@@ -21,6 +21,7 @@ void ui_helpline__push(const char *msg);
21void ui_helpline__vpush(const char *fmt, va_list ap); 21void ui_helpline__vpush(const char *fmt, va_list ap);
22void ui_helpline__fpush(const char *fmt, ...); 22void ui_helpline__fpush(const char *fmt, ...);
23void ui_helpline__puts(const char *msg); 23void ui_helpline__puts(const char *msg);
24void ui_helpline__printf(const char *fmt, ...);
24int ui_helpline__vshow(const char *fmt, va_list ap); 25int ui_helpline__vshow(const char *fmt, va_list ap);
25 26
26extern char ui_helpline__current[512]; 27extern char ui_helpline__current[512];
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 4274969ddc89..37388397b5bc 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -230,13 +230,14 @@ static int hpp__width_fn(struct perf_hpp_fmt *fmt,
230} 230}
231 231
232static int hpp__header_fn(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 232static int hpp__header_fn(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
233 struct hists *hists) 233 struct hists *hists, int line __maybe_unused,
234 int *span __maybe_unused)
234{ 235{
235 int len = hpp__width_fn(fmt, hpp, hists); 236 int len = hpp__width_fn(fmt, hpp, hists);
236 return scnprintf(hpp->buf, hpp->size, "%*s", len, fmt->name); 237 return scnprintf(hpp->buf, hpp->size, "%*s", len, fmt->name);
237} 238}
238 239
239static int hpp_color_scnprintf(struct perf_hpp *hpp, const char *fmt, ...) 240int hpp_color_scnprintf(struct perf_hpp *hpp, const char *fmt, ...)
240{ 241{
241 va_list args; 242 va_list args;
242 ssize_t ssize = hpp->size; 243 ssize_t ssize = hpp->size;
@@ -441,6 +442,7 @@ struct perf_hpp_fmt perf_hpp__format[] = {
441struct perf_hpp_list perf_hpp_list = { 442struct perf_hpp_list perf_hpp_list = {
442 .fields = LIST_HEAD_INIT(perf_hpp_list.fields), 443 .fields = LIST_HEAD_INIT(perf_hpp_list.fields),
443 .sorts = LIST_HEAD_INIT(perf_hpp_list.sorts), 444 .sorts = LIST_HEAD_INIT(perf_hpp_list.sorts),
445 .nr_header_lines = 1,
444}; 446};
445 447
446#undef HPP__COLOR_PRINT_FNS 448#undef HPP__COLOR_PRINT_FNS
@@ -697,6 +699,21 @@ void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists)
697 } 699 }
698} 700}
699 701
702void hists__reset_column_width(struct hists *hists)
703{
704 struct perf_hpp_fmt *fmt;
705 struct perf_hpp_list_node *node;
706
707 hists__for_each_format(hists, fmt)
708 perf_hpp__reset_width(fmt, hists);
709
710 /* hierarchy entries have their own hpp list */
711 list_for_each_entry(node, &hists->hpp_formats, list) {
712 perf_hpp_list__for_each_format(&node->hpp, fmt)
713 perf_hpp__reset_width(fmt, hists);
714 }
715}
716
700void perf_hpp__set_user_width(const char *width_list_str) 717void perf_hpp__set_user_width(const char *width_list_str)
701{ 718{
702 struct perf_hpp_fmt *fmt; 719 struct perf_hpp_fmt *fmt;
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index f04a63112079..668f4aecf2e6 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -41,7 +41,9 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct callchain_node *node,
41{ 41{
42 int i; 42 int i;
43 size_t ret = 0; 43 size_t ret = 0;
44 char bf[1024]; 44 char bf[1024], *alloc_str = NULL;
45 char buf[64];
46 const char *str;
45 47
46 ret += callchain__fprintf_left_margin(fp, left_margin); 48 ret += callchain__fprintf_left_margin(fp, left_margin);
47 for (i = 0; i < depth; i++) { 49 for (i = 0; i < depth; i++) {
@@ -56,8 +58,26 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct callchain_node *node,
56 } else 58 } else
57 ret += fprintf(fp, "%s", " "); 59 ret += fprintf(fp, "%s", " ");
58 } 60 }
59 fputs(callchain_list__sym_name(chain, bf, sizeof(bf), false), fp); 61
62 str = callchain_list__sym_name(chain, bf, sizeof(bf), false);
63
64 if (symbol_conf.show_branchflag_count) {
65 if (!period)
66 callchain_list_counts__printf_value(node, chain, NULL,
67 buf, sizeof(buf));
68 else
69 callchain_list_counts__printf_value(NULL, chain, NULL,
70 buf, sizeof(buf));
71
72 if (asprintf(&alloc_str, "%s%s", str, buf) < 0)
73 str = "Not enough memory!";
74 else
75 str = alloc_str;
76 }
77
78 fputs(str, fp);
60 fputc('\n', fp); 79 fputc('\n', fp);
80 free(alloc_str);
61 return ret; 81 return ret;
62} 82}
63 83
@@ -219,8 +239,15 @@ static size_t callchain__fprintf_graph(FILE *fp, struct rb_root *root,
219 } else 239 } else
220 ret += callchain__fprintf_left_margin(fp, left_margin); 240 ret += callchain__fprintf_left_margin(fp, left_margin);
221 241
222 ret += fprintf(fp, "%s\n", callchain_list__sym_name(chain, bf, sizeof(bf), 242 ret += fprintf(fp, "%s",
223 false)); 243 callchain_list__sym_name(chain, bf,
244 sizeof(bf),
245 false));
246
247 if (symbol_conf.show_branchflag_count)
248 ret += callchain_list_counts__printf_value(
249 NULL, chain, fp, NULL, 0);
250 ret += fprintf(fp, "\n");
224 251
225 if (++entries_printed == callchain_param.print_limit) 252 if (++entries_printed == callchain_param.print_limit)
226 break; 253 break;
@@ -373,7 +400,8 @@ static size_t hist_entry_callchain__fprintf(struct hist_entry *he,
373 return 0; 400 return 0;
374} 401}
375 402
376static int hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp) 403int __hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp,
404 struct perf_hpp_list *hpp_list)
377{ 405{
378 const char *sep = symbol_conf.field_sep; 406 const char *sep = symbol_conf.field_sep;
379 struct perf_hpp_fmt *fmt; 407 struct perf_hpp_fmt *fmt;
@@ -384,7 +412,7 @@ static int hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp)
384 if (symbol_conf.exclude_other && !he->parent) 412 if (symbol_conf.exclude_other && !he->parent)
385 return 0; 413 return 0;
386 414
387 hists__for_each_format(he->hists, fmt) { 415 perf_hpp_list__for_each_format(hpp_list, fmt) {
388 if (perf_hpp__should_skip(fmt, he->hists)) 416 if (perf_hpp__should_skip(fmt, he->hists))
389 continue; 417 continue;
390 418
@@ -410,6 +438,11 @@ static int hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp)
410 return hpp->buf - start; 438 return hpp->buf - start;
411} 439}
412 440
441static int hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp)
442{
443 return __hist_entry__snprintf(he, hpp, he->hists->hpp_list);
444}
445
413static int hist_entry__hierarchy_fprintf(struct hist_entry *he, 446static int hist_entry__hierarchy_fprintf(struct hist_entry *he,
414 struct perf_hpp *hpp, 447 struct perf_hpp *hpp,
415 struct hists *hists, 448 struct hists *hists,
@@ -528,8 +561,8 @@ static int print_hierarchy_indent(const char *sep, int indent,
528 return fprintf(fp, "%-.*s", (indent - 2) * HIERARCHY_INDENT, line); 561 return fprintf(fp, "%-.*s", (indent - 2) * HIERARCHY_INDENT, line);
529} 562}
530 563
531static int print_hierarchy_header(struct hists *hists, struct perf_hpp *hpp, 564static int hists__fprintf_hierarchy_headers(struct hists *hists,
532 const char *sep, FILE *fp) 565 struct perf_hpp *hpp, FILE *fp)
533{ 566{
534 bool first_node, first_col; 567 bool first_node, first_col;
535 int indent; 568 int indent;
@@ -538,6 +571,7 @@ static int print_hierarchy_header(struct hists *hists, struct perf_hpp *hpp,
538 unsigned header_width = 0; 571 unsigned header_width = 0;
539 struct perf_hpp_fmt *fmt; 572 struct perf_hpp_fmt *fmt;
540 struct perf_hpp_list_node *fmt_node; 573 struct perf_hpp_list_node *fmt_node;
574 const char *sep = symbol_conf.field_sep;
541 575
542 indent = hists->nr_hpp_node; 576 indent = hists->nr_hpp_node;
543 577
@@ -549,7 +583,7 @@ static int print_hierarchy_header(struct hists *hists, struct perf_hpp *hpp,
549 struct perf_hpp_list_node, list); 583 struct perf_hpp_list_node, list);
550 584
551 perf_hpp_list__for_each_format(&fmt_node->hpp, fmt) { 585 perf_hpp_list__for_each_format(&fmt_node->hpp, fmt) {
552 fmt->header(fmt, hpp, hists); 586 fmt->header(fmt, hpp, hists, 0, NULL);
553 fprintf(fp, "%s%s", hpp->buf, sep ?: " "); 587 fprintf(fp, "%s%s", hpp->buf, sep ?: " ");
554 } 588 }
555 589
@@ -569,7 +603,7 @@ static int print_hierarchy_header(struct hists *hists, struct perf_hpp *hpp,
569 header_width += fprintf(fp, "+"); 603 header_width += fprintf(fp, "+");
570 first_col = false; 604 first_col = false;
571 605
572 fmt->header(fmt, hpp, hists); 606 fmt->header(fmt, hpp, hists, 0, NULL);
573 607
574 header_width += fprintf(fp, "%s", trim(hpp->buf)); 608 header_width += fprintf(fp, "%s", trim(hpp->buf));
575 } 609 }
@@ -623,20 +657,28 @@ static int print_hierarchy_header(struct hists *hists, struct perf_hpp *hpp,
623 return 2; 657 return 2;
624} 658}
625 659
626static int 660static void fprintf_line(struct hists *hists, struct perf_hpp *hpp,
627hists__fprintf_hierarchy_headers(struct hists *hists, 661 int line, FILE *fp)
628 struct perf_hpp *hpp,
629 FILE *fp)
630{ 662{
631 struct perf_hpp_list_node *fmt_node;
632 struct perf_hpp_fmt *fmt; 663 struct perf_hpp_fmt *fmt;
664 const char *sep = symbol_conf.field_sep;
665 bool first = true;
666 int span = 0;
633 667
634 list_for_each_entry(fmt_node, &hists->hpp_formats, list) { 668 hists__for_each_format(hists, fmt) {
635 perf_hpp_list__for_each_format(&fmt_node->hpp, fmt) 669 if (perf_hpp__should_skip(fmt, hists))
636 perf_hpp__reset_width(fmt, hists); 670 continue;
637 } 671
672 if (!first && !span)
673 fprintf(fp, "%s", sep ?: " ");
674 else
675 first = false;
676
677 fmt->header(fmt, hpp, hists, line, &span);
638 678
639 return print_hierarchy_header(hists, hpp, symbol_conf.field_sep, fp); 679 if (!span)
680 fprintf(fp, "%s", hpp->buf);
681 }
640} 682}
641 683
642static int 684static int
@@ -644,28 +686,23 @@ hists__fprintf_standard_headers(struct hists *hists,
644 struct perf_hpp *hpp, 686 struct perf_hpp *hpp,
645 FILE *fp) 687 FILE *fp)
646{ 688{
689 struct perf_hpp_list *hpp_list = hists->hpp_list;
647 struct perf_hpp_fmt *fmt; 690 struct perf_hpp_fmt *fmt;
648 unsigned int width; 691 unsigned int width;
649 const char *sep = symbol_conf.field_sep; 692 const char *sep = symbol_conf.field_sep;
650 bool first = true; 693 bool first = true;
651 694 int line;
652 hists__for_each_format(hists, fmt) { 695
653 if (perf_hpp__should_skip(fmt, hists)) 696 for (line = 0; line < hpp_list->nr_header_lines; line++) {
654 continue; 697 /* first # is displayed one level up */
655 698 if (line)
656 if (!first) 699 fprintf(fp, "# ");
657 fprintf(fp, "%s", sep ?: " "); 700 fprintf_line(hists, hpp, line, fp);
658 else 701 fprintf(fp, "\n");
659 first = false;
660
661 fmt->header(fmt, hpp, hists);
662 fprintf(fp, "%s", hpp->buf);
663 } 702 }
664 703
665 fprintf(fp, "\n");
666
667 if (sep) 704 if (sep)
668 return 1; 705 return hpp_list->nr_header_lines;
669 706
670 first = true; 707 first = true;
671 708
@@ -689,12 +726,12 @@ hists__fprintf_standard_headers(struct hists *hists,
689 726
690 fprintf(fp, "\n"); 727 fprintf(fp, "\n");
691 fprintf(fp, "#\n"); 728 fprintf(fp, "#\n");
692 return 3; 729 return hpp_list->nr_header_lines + 2;
693} 730}
694 731
695static int hists__fprintf_headers(struct hists *hists, FILE *fp) 732int hists__fprintf_headers(struct hists *hists, FILE *fp)
696{ 733{
697 char bf[96]; 734 char bf[1024];
698 struct perf_hpp dummy_hpp = { 735 struct perf_hpp dummy_hpp = {
699 .buf = bf, 736 .buf = bf,
700 .size = sizeof(bf), 737 .size = sizeof(bf),
@@ -713,7 +750,6 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
713 int max_cols, float min_pcnt, FILE *fp, 750 int max_cols, float min_pcnt, FILE *fp,
714 bool use_callchain) 751 bool use_callchain)
715{ 752{
716 struct perf_hpp_fmt *fmt;
717 struct rb_node *nd; 753 struct rb_node *nd;
718 size_t ret = 0; 754 size_t ret = 0;
719 const char *sep = symbol_conf.field_sep; 755 const char *sep = symbol_conf.field_sep;
@@ -724,8 +760,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
724 760
725 init_rem_hits(); 761 init_rem_hits();
726 762
727 hists__for_each_format(hists, fmt) 763 hists__reset_column_width(hists);
728 perf_hpp__reset_width(fmt, hists);
729 764
730 if (symbol_conf.col_width_list_str) 765 if (symbol_conf.col_width_list_str)
731 perf_hpp__set_user_width(symbol_conf.col_width_list_str); 766 perf_hpp__set_user_width(symbol_conf.col_width_list_str);
diff --git a/tools/perf/util/Build b/tools/perf/util/Build
index 91c5f6e1af59..3840e3a87057 100644
--- a/tools/perf/util/Build
+++ b/tools/perf/util/Build
@@ -1,5 +1,6 @@
1libperf-y += alias.o 1libperf-y += alias.o
2libperf-y += annotate.o 2libperf-y += annotate.o
3libperf-y += block-range.o
3libperf-y += build-id.o 4libperf-y += build-id.o
4libperf-y += config.o 5libperf-y += config.o
5libperf-y += ctype.o 6libperf-y += ctype.o
@@ -85,6 +86,8 @@ libperf-y += term.o
85libperf-y += help-unknown-cmd.o 86libperf-y += help-unknown-cmd.o
86libperf-y += mem-events.o 87libperf-y += mem-events.o
87libperf-y += vsprintf.o 88libperf-y += vsprintf.o
89libperf-y += drv_configs.o
90libperf-y += time-utils.o
88 91
89libperf-$(CONFIG_LIBBPF) += bpf-loader.o 92libperf-$(CONFIG_LIBBPF) += bpf-loader.o
90libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o 93libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o
@@ -98,6 +101,7 @@ endif
98 101
99libperf-$(CONFIG_DWARF) += probe-finder.o 102libperf-$(CONFIG_DWARF) += probe-finder.o
100libperf-$(CONFIG_DWARF) += dwarf-aux.o 103libperf-$(CONFIG_DWARF) += dwarf-aux.o
104libperf-$(CONFIG_DWARF) += dwarf-regs.o
101 105
102libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o 106libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o
103libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind-local.o 107libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind-local.o
@@ -117,9 +121,13 @@ libperf-y += demangle-rust.o
117ifdef CONFIG_JITDUMP 121ifdef CONFIG_JITDUMP
118libperf-$(CONFIG_LIBELF) += jitdump.o 122libperf-$(CONFIG_LIBELF) += jitdump.o
119libperf-$(CONFIG_LIBELF) += genelf.o 123libperf-$(CONFIG_LIBELF) += genelf.o
120libperf-$(CONFIG_LIBELF) += genelf_debug.o 124libperf-$(CONFIG_DWARF) += genelf_debug.o
121endif 125endif
122 126
127libperf-y += perf-hooks.o
128
129libperf-$(CONFIG_CXX) += c++/
130
123CFLAGS_config.o += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 131CFLAGS_config.o += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
124# avoid compiler warnings in 32-bit mode 132# avoid compiler warnings in 32-bit mode
125CFLAGS_genelf_debug.o += -Wno-packed 133CFLAGS_genelf_debug.o += -Wno-packed
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 4024d309bb00..06cc04e5806a 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -17,16 +17,120 @@
17#include "debug.h" 17#include "debug.h"
18#include "annotate.h" 18#include "annotate.h"
19#include "evsel.h" 19#include "evsel.h"
20#include "block-range.h"
21#include "arch/common.h"
20#include <regex.h> 22#include <regex.h>
21#include <pthread.h> 23#include <pthread.h>
22#include <linux/bitops.h> 24#include <linux/bitops.h>
25#include <sys/utsname.h>
23 26
24const char *disassembler_style; 27const char *disassembler_style;
25const char *objdump_path; 28const char *objdump_path;
26static regex_t file_lineno; 29static regex_t file_lineno;
27 30
28static struct ins *ins__find(const char *name); 31static struct ins_ops *ins__find(struct arch *arch, const char *name);
29static int disasm_line__parse(char *line, char **namep, char **rawp); 32static void ins__sort(struct arch *arch);
33static int disasm_line__parse(char *line, const char **namep, char **rawp);
34
35struct arch {
36 const char *name;
37 struct ins *instructions;
38 size_t nr_instructions;
39 size_t nr_instructions_allocated;
40 struct ins_ops *(*associate_instruction_ops)(struct arch *arch, const char *name);
41 bool sorted_instructions;
42 bool initialized;
43 void *priv;
44 int (*init)(struct arch *arch);
45 struct {
46 char comment_char;
47 char skip_functions_char;
48 } objdump;
49};
50
51static struct ins_ops call_ops;
52static struct ins_ops dec_ops;
53static struct ins_ops jump_ops;
54static struct ins_ops mov_ops;
55static struct ins_ops nop_ops;
56static struct ins_ops lock_ops;
57static struct ins_ops ret_ops;
58
59static int arch__grow_instructions(struct arch *arch)
60{
61 struct ins *new_instructions;
62 size_t new_nr_allocated;
63
64 if (arch->nr_instructions_allocated == 0 && arch->instructions)
65 goto grow_from_non_allocated_table;
66
67 new_nr_allocated = arch->nr_instructions_allocated + 128;
68 new_instructions = realloc(arch->instructions, new_nr_allocated * sizeof(struct ins));
69 if (new_instructions == NULL)
70 return -1;
71
72out_update_instructions:
73 arch->instructions = new_instructions;
74 arch->nr_instructions_allocated = new_nr_allocated;
75 return 0;
76
77grow_from_non_allocated_table:
78 new_nr_allocated = arch->nr_instructions + 128;
79 new_instructions = calloc(new_nr_allocated, sizeof(struct ins));
80 if (new_instructions == NULL)
81 return -1;
82
83 memcpy(new_instructions, arch->instructions, arch->nr_instructions);
84 goto out_update_instructions;
85}
86
87static int arch__associate_ins_ops(struct arch* arch, const char *name, struct ins_ops *ops)
88{
89 struct ins *ins;
90
91 if (arch->nr_instructions == arch->nr_instructions_allocated &&
92 arch__grow_instructions(arch))
93 return -1;
94
95 ins = &arch->instructions[arch->nr_instructions];
96 ins->name = strdup(name);
97 if (!ins->name)
98 return -1;
99
100 ins->ops = ops;
101 arch->nr_instructions++;
102
103 ins__sort(arch);
104 return 0;
105}
106
107#include "arch/arm/annotate/instructions.c"
108#include "arch/arm64/annotate/instructions.c"
109#include "arch/x86/annotate/instructions.c"
110#include "arch/powerpc/annotate/instructions.c"
111
112static struct arch architectures[] = {
113 {
114 .name = "arm",
115 .init = arm__annotate_init,
116 },
117 {
118 .name = "arm64",
119 .init = arm64__annotate_init,
120 },
121 {
122 .name = "x86",
123 .instructions = x86__instructions,
124 .nr_instructions = ARRAY_SIZE(x86__instructions),
125 .objdump = {
126 .comment_char = '#',
127 },
128 },
129 {
130 .name = "powerpc",
131 .init = powerpc__annotate_init,
132 },
133};
30 134
31static void ins__delete(struct ins_operands *ops) 135static void ins__delete(struct ins_operands *ops)
32{ 136{
@@ -53,7 +157,7 @@ int ins__scnprintf(struct ins *ins, char *bf, size_t size,
53 return ins__raw_scnprintf(ins, bf, size, ops); 157 return ins__raw_scnprintf(ins, bf, size, ops);
54} 158}
55 159
56static int call__parse(struct ins_operands *ops) 160static int call__parse(struct arch *arch, struct ins_operands *ops, struct map *map)
57{ 161{
58 char *endptr, *tok, *name; 162 char *endptr, *tok, *name;
59 163
@@ -65,10 +169,9 @@ static int call__parse(struct ins_operands *ops)
65 169
66 name++; 170 name++;
67 171
68#ifdef __arm__ 172 if (arch->objdump.skip_functions_char &&
69 if (strchr(name, '+')) 173 strchr(name, arch->objdump.skip_functions_char))
70 return -1; 174 return -1;
71#endif
72 175
73 tok = strchr(name, '>'); 176 tok = strchr(name, '>');
74 if (tok == NULL) 177 if (tok == NULL)
@@ -81,16 +184,16 @@ static int call__parse(struct ins_operands *ops)
81 return ops->target.name == NULL ? -1 : 0; 184 return ops->target.name == NULL ? -1 : 0;
82 185
83indirect_call: 186indirect_call:
84 tok = strchr(endptr, '('); 187 tok = strchr(endptr, '*');
85 if (tok != NULL) { 188 if (tok == NULL) {
86 ops->target.addr = 0; 189 struct symbol *sym = map__find_symbol(map, map->map_ip(map, ops->target.addr));
190 if (sym != NULL)
191 ops->target.name = strdup(sym->name);
192 else
193 ops->target.addr = 0;
87 return 0; 194 return 0;
88 } 195 }
89 196
90 tok = strchr(endptr, '*');
91 if (tok == NULL)
92 return -1;
93
94 ops->target.addr = strtoull(tok + 1, NULL, 16); 197 ops->target.addr = strtoull(tok + 1, NULL, 16);
95 return 0; 198 return 0;
96} 199}
@@ -117,16 +220,22 @@ bool ins__is_call(const struct ins *ins)
117 return ins->ops == &call_ops; 220 return ins->ops == &call_ops;
118} 221}
119 222
120static int jump__parse(struct ins_operands *ops) 223static int jump__parse(struct arch *arch __maybe_unused, struct ins_operands *ops, struct map *map __maybe_unused)
121{ 224{
122 const char *s = strchr(ops->raw, '+'); 225 const char *s = strchr(ops->raw, '+');
226 const char *c = strchr(ops->raw, ',');
123 227
124 ops->target.addr = strtoull(ops->raw, NULL, 16); 228 if (c++ != NULL)
229 ops->target.addr = strtoull(c, NULL, 16);
230 else
231 ops->target.addr = strtoull(ops->raw, NULL, 16);
125 232
126 if (s++ != NULL) 233 if (s++ != NULL) {
127 ops->target.offset = strtoull(s, NULL, 16); 234 ops->target.offset = strtoull(s, NULL, 16);
128 else 235 ops->target.offset_avail = true;
129 ops->target.offset = UINT64_MAX; 236 } else {
237 ops->target.offset_avail = false;
238 }
130 239
131 return 0; 240 return 0;
132} 241}
@@ -134,6 +243,9 @@ static int jump__parse(struct ins_operands *ops)
134static int jump__scnprintf(struct ins *ins, char *bf, size_t size, 243static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
135 struct ins_operands *ops) 244 struct ins_operands *ops)
136{ 245{
246 if (!ops->target.addr || ops->target.offset < 0)
247 return ins__raw_scnprintf(ins, bf, size, ops);
248
137 return scnprintf(bf, size, "%-6.6s %" PRIx64, ins->name, ops->target.offset); 249 return scnprintf(bf, size, "%-6.6s %" PRIx64, ins->name, ops->target.offset);
138} 250}
139 251
@@ -172,28 +284,22 @@ static int comment__symbol(char *raw, char *comment, u64 *addrp, char **namep)
172 return 0; 284 return 0;
173} 285}
174 286
175static int lock__parse(struct ins_operands *ops) 287static int lock__parse(struct arch *arch, struct ins_operands *ops, struct map *map)
176{ 288{
177 char *name;
178
179 ops->locked.ops = zalloc(sizeof(*ops->locked.ops)); 289 ops->locked.ops = zalloc(sizeof(*ops->locked.ops));
180 if (ops->locked.ops == NULL) 290 if (ops->locked.ops == NULL)
181 return 0; 291 return 0;
182 292
183 if (disasm_line__parse(ops->raw, &name, &ops->locked.ops->raw) < 0) 293 if (disasm_line__parse(ops->raw, &ops->locked.ins.name, &ops->locked.ops->raw) < 0)
184 goto out_free_ops; 294 goto out_free_ops;
185 295
186 ops->locked.ins = ins__find(name); 296 ops->locked.ins.ops = ins__find(arch, ops->locked.ins.name);
187 free(name);
188 297
189 if (ops->locked.ins == NULL) 298 if (ops->locked.ins.ops == NULL)
190 goto out_free_ops; 299 goto out_free_ops;
191 300
192 if (!ops->locked.ins->ops) 301 if (ops->locked.ins.ops->parse &&
193 return 0; 302 ops->locked.ins.ops->parse(arch, ops->locked.ops, map) < 0)
194
195 if (ops->locked.ins->ops->parse &&
196 ops->locked.ins->ops->parse(ops->locked.ops) < 0)
197 goto out_free_ops; 303 goto out_free_ops;
198 304
199 return 0; 305 return 0;
@@ -208,19 +314,19 @@ static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
208{ 314{
209 int printed; 315 int printed;
210 316
211 if (ops->locked.ins == NULL) 317 if (ops->locked.ins.ops == NULL)
212 return ins__raw_scnprintf(ins, bf, size, ops); 318 return ins__raw_scnprintf(ins, bf, size, ops);
213 319
214 printed = scnprintf(bf, size, "%-6.6s ", ins->name); 320 printed = scnprintf(bf, size, "%-6.6s ", ins->name);
215 return printed + ins__scnprintf(ops->locked.ins, bf + printed, 321 return printed + ins__scnprintf(&ops->locked.ins, bf + printed,
216 size - printed, ops->locked.ops); 322 size - printed, ops->locked.ops);
217} 323}
218 324
219static void lock__delete(struct ins_operands *ops) 325static void lock__delete(struct ins_operands *ops)
220{ 326{
221 struct ins *ins = ops->locked.ins; 327 struct ins *ins = &ops->locked.ins;
222 328
223 if (ins && ins->ops->free) 329 if (ins->ops && ins->ops->free)
224 ins->ops->free(ops->locked.ops); 330 ins->ops->free(ops->locked.ops);
225 else 331 else
226 ins__delete(ops->locked.ops); 332 ins__delete(ops->locked.ops);
@@ -236,7 +342,7 @@ static struct ins_ops lock_ops = {
236 .scnprintf = lock__scnprintf, 342 .scnprintf = lock__scnprintf,
237}; 343};
238 344
239static int mov__parse(struct ins_operands *ops) 345static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map *map __maybe_unused)
240{ 346{
241 char *s = strchr(ops->raw, ','), *target, *comment, prev; 347 char *s = strchr(ops->raw, ','), *target, *comment, prev;
242 348
@@ -251,11 +357,7 @@ static int mov__parse(struct ins_operands *ops)
251 return -1; 357 return -1;
252 358
253 target = ++s; 359 target = ++s;
254#ifdef __arm__ 360 comment = strchr(s, arch->objdump.comment_char);
255 comment = strchr(s, ';');
256#else
257 comment = strchr(s, '#');
258#endif
259 361
260 if (comment != NULL) 362 if (comment != NULL)
261 s = comment - 1; 363 s = comment - 1;
@@ -303,7 +405,7 @@ static struct ins_ops mov_ops = {
303 .scnprintf = mov__scnprintf, 405 .scnprintf = mov__scnprintf,
304}; 406};
305 407
306static int dec__parse(struct ins_operands *ops) 408static int dec__parse(struct arch *arch __maybe_unused, struct ins_operands *ops, struct map *map __maybe_unused)
307{ 409{
308 char *target, *comment, *s, prev; 410 char *target, *comment, *s, prev;
309 411
@@ -320,7 +422,7 @@ static int dec__parse(struct ins_operands *ops)
320 if (ops->target.raw == NULL) 422 if (ops->target.raw == NULL)
321 return -1; 423 return -1;
322 424
323 comment = strchr(s, '#'); 425 comment = strchr(s, arch->objdump.comment_char);
324 if (comment == NULL) 426 if (comment == NULL)
325 return 0; 427 return 0;
326 428
@@ -363,99 +465,6 @@ bool ins__is_ret(const struct ins *ins)
363 return ins->ops == &ret_ops; 465 return ins->ops == &ret_ops;
364} 466}
365 467
366static struct ins instructions[] = {
367 { .name = "add", .ops = &mov_ops, },
368 { .name = "addl", .ops = &mov_ops, },
369 { .name = "addq", .ops = &mov_ops, },
370 { .name = "addw", .ops = &mov_ops, },
371 { .name = "and", .ops = &mov_ops, },
372#ifdef __arm__
373 { .name = "b", .ops = &jump_ops, }, // might also be a call
374 { .name = "bcc", .ops = &jump_ops, },
375 { .name = "bcs", .ops = &jump_ops, },
376 { .name = "beq", .ops = &jump_ops, },
377 { .name = "bge", .ops = &jump_ops, },
378 { .name = "bgt", .ops = &jump_ops, },
379 { .name = "bhi", .ops = &jump_ops, },
380 { .name = "bl", .ops = &call_ops, },
381 { .name = "bls", .ops = &jump_ops, },
382 { .name = "blt", .ops = &jump_ops, },
383 { .name = "blx", .ops = &call_ops, },
384 { .name = "bne", .ops = &jump_ops, },
385#endif
386 { .name = "bts", .ops = &mov_ops, },
387 { .name = "call", .ops = &call_ops, },
388 { .name = "callq", .ops = &call_ops, },
389 { .name = "cmp", .ops = &mov_ops, },
390 { .name = "cmpb", .ops = &mov_ops, },
391 { .name = "cmpl", .ops = &mov_ops, },
392 { .name = "cmpq", .ops = &mov_ops, },
393 { .name = "cmpw", .ops = &mov_ops, },
394 { .name = "cmpxch", .ops = &mov_ops, },
395 { .name = "dec", .ops = &dec_ops, },
396 { .name = "decl", .ops = &dec_ops, },
397 { .name = "imul", .ops = &mov_ops, },
398 { .name = "inc", .ops = &dec_ops, },
399 { .name = "incl", .ops = &dec_ops, },
400 { .name = "ja", .ops = &jump_ops, },
401 { .name = "jae", .ops = &jump_ops, },
402 { .name = "jb", .ops = &jump_ops, },
403 { .name = "jbe", .ops = &jump_ops, },
404 { .name = "jc", .ops = &jump_ops, },
405 { .name = "jcxz", .ops = &jump_ops, },
406 { .name = "je", .ops = &jump_ops, },
407 { .name = "jecxz", .ops = &jump_ops, },
408 { .name = "jg", .ops = &jump_ops, },
409 { .name = "jge", .ops = &jump_ops, },
410 { .name = "jl", .ops = &jump_ops, },
411 { .name = "jle", .ops = &jump_ops, },
412 { .name = "jmp", .ops = &jump_ops, },
413 { .name = "jmpq", .ops = &jump_ops, },
414 { .name = "jna", .ops = &jump_ops, },
415 { .name = "jnae", .ops = &jump_ops, },
416 { .name = "jnb", .ops = &jump_ops, },
417 { .name = "jnbe", .ops = &jump_ops, },
418 { .name = "jnc", .ops = &jump_ops, },
419 { .name = "jne", .ops = &jump_ops, },
420 { .name = "jng", .ops = &jump_ops, },
421 { .name = "jnge", .ops = &jump_ops, },
422 { .name = "jnl", .ops = &jump_ops, },
423 { .name = "jnle", .ops = &jump_ops, },
424 { .name = "jno", .ops = &jump_ops, },
425 { .name = "jnp", .ops = &jump_ops, },
426 { .name = "jns", .ops = &jump_ops, },
427 { .name = "jnz", .ops = &jump_ops, },
428 { .name = "jo", .ops = &jump_ops, },
429 { .name = "jp", .ops = &jump_ops, },
430 { .name = "jpe", .ops = &jump_ops, },
431 { .name = "jpo", .ops = &jump_ops, },
432 { .name = "jrcxz", .ops = &jump_ops, },
433 { .name = "js", .ops = &jump_ops, },
434 { .name = "jz", .ops = &jump_ops, },
435 { .name = "lea", .ops = &mov_ops, },
436 { .name = "lock", .ops = &lock_ops, },
437 { .name = "mov", .ops = &mov_ops, },
438 { .name = "movb", .ops = &mov_ops, },
439 { .name = "movdqa",.ops = &mov_ops, },
440 { .name = "movl", .ops = &mov_ops, },
441 { .name = "movq", .ops = &mov_ops, },
442 { .name = "movslq", .ops = &mov_ops, },
443 { .name = "movzbl", .ops = &mov_ops, },
444 { .name = "movzwl", .ops = &mov_ops, },
445 { .name = "nop", .ops = &nop_ops, },
446 { .name = "nopl", .ops = &nop_ops, },
447 { .name = "nopw", .ops = &nop_ops, },
448 { .name = "or", .ops = &mov_ops, },
449 { .name = "orl", .ops = &mov_ops, },
450 { .name = "test", .ops = &mov_ops, },
451 { .name = "testb", .ops = &mov_ops, },
452 { .name = "testl", .ops = &mov_ops, },
453 { .name = "xadd", .ops = &mov_ops, },
454 { .name = "xbeginl", .ops = &jump_ops, },
455 { .name = "xbeginq", .ops = &jump_ops, },
456 { .name = "retq", .ops = &ret_ops, },
457};
458
459static int ins__key_cmp(const void *name, const void *insp) 468static int ins__key_cmp(const void *name, const void *insp)
460{ 469{
461 const struct ins *ins = insp; 470 const struct ins *ins = insp;
@@ -471,31 +480,70 @@ static int ins__cmp(const void *a, const void *b)
471 return strcmp(ia->name, ib->name); 480 return strcmp(ia->name, ib->name);
472} 481}
473 482
474static void ins__sort(void) 483static void ins__sort(struct arch *arch)
475{ 484{
476 const int nmemb = ARRAY_SIZE(instructions); 485 const int nmemb = arch->nr_instructions;
477 486
478 qsort(instructions, nmemb, sizeof(struct ins), ins__cmp); 487 qsort(arch->instructions, nmemb, sizeof(struct ins), ins__cmp);
479} 488}
480 489
481static struct ins *ins__find(const char *name) 490static struct ins_ops *__ins__find(struct arch *arch, const char *name)
482{ 491{
483 const int nmemb = ARRAY_SIZE(instructions); 492 struct ins *ins;
484 static bool sorted; 493 const int nmemb = arch->nr_instructions;
485 494
486 if (!sorted) { 495 if (!arch->sorted_instructions) {
487 ins__sort(); 496 ins__sort(arch);
488 sorted = true; 497 arch->sorted_instructions = true;
489 } 498 }
490 499
491 return bsearch(name, instructions, nmemb, sizeof(struct ins), ins__key_cmp); 500 ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
501 return ins ? ins->ops : NULL;
492} 502}
493 503
494int symbol__annotate_init(struct map *map __maybe_unused, struct symbol *sym) 504static struct ins_ops *ins__find(struct arch *arch, const char *name)
495{ 505{
496 struct annotation *notes = symbol__annotation(sym); 506 struct ins_ops *ops = __ins__find(arch, name);
497 pthread_mutex_init(&notes->lock, NULL); 507
498 return 0; 508 if (!ops && arch->associate_instruction_ops)
509 ops = arch->associate_instruction_ops(arch, name);
510
511 return ops;
512}
513
514static int arch__key_cmp(const void *name, const void *archp)
515{
516 const struct arch *arch = archp;
517
518 return strcmp(name, arch->name);
519}
520
521static int arch__cmp(const void *a, const void *b)
522{
523 const struct arch *aa = a;
524 const struct arch *ab = b;
525
526 return strcmp(aa->name, ab->name);
527}
528
529static void arch__sort(void)
530{
531 const int nmemb = ARRAY_SIZE(architectures);
532
533 qsort(architectures, nmemb, sizeof(struct arch), arch__cmp);
534}
535
536static struct arch *arch__find(const char *name)
537{
538 const int nmemb = ARRAY_SIZE(architectures);
539 static bool sorted;
540
541 if (!sorted) {
542 arch__sort();
543 sorted = true;
544 }
545
546 return bsearch(name, architectures, nmemb, sizeof(struct arch), arch__key_cmp);
499} 547}
500 548
501int symbol__alloc_hist(struct symbol *sym) 549int symbol__alloc_hist(struct symbol *sym)
@@ -599,7 +647,8 @@ static int __symbol__inc_addr_samples(struct symbol *sym, struct map *map,
599 647
600 pr_debug3("%s: addr=%#" PRIx64 "\n", __func__, map->unmap_ip(map, addr)); 648 pr_debug3("%s: addr=%#" PRIx64 "\n", __func__, map->unmap_ip(map, addr));
601 649
602 if (addr < sym->start || addr >= sym->end) { 650 if ((addr < sym->start || addr >= sym->end) &&
651 (addr != sym->end || sym->start != sym->end)) {
603 pr_debug("%s(%d): ERANGE! sym->name=%s, start=%#" PRIx64 ", addr=%#" PRIx64 ", end=%#" PRIx64 "\n", 652 pr_debug("%s(%d): ERANGE! sym->name=%s, start=%#" PRIx64 ", addr=%#" PRIx64 ", end=%#" PRIx64 "\n",
604 __func__, __LINE__, sym->name, sym->start, addr, sym->end); 653 __func__, __LINE__, sym->name, sym->start, addr, sym->end);
605 return -ERANGE; 654 return -ERANGE;
@@ -715,21 +764,18 @@ int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 ip)
715 return symbol__inc_addr_samples(he->ms.sym, he->ms.map, evidx, ip); 764 return symbol__inc_addr_samples(he->ms.sym, he->ms.map, evidx, ip);
716} 765}
717 766
718static void disasm_line__init_ins(struct disasm_line *dl) 767static void disasm_line__init_ins(struct disasm_line *dl, struct arch *arch, struct map *map)
719{ 768{
720 dl->ins = ins__find(dl->name); 769 dl->ins.ops = ins__find(arch, dl->ins.name);
721
722 if (dl->ins == NULL)
723 return;
724 770
725 if (!dl->ins->ops) 771 if (!dl->ins.ops)
726 return; 772 return;
727 773
728 if (dl->ins->ops->parse && dl->ins->ops->parse(&dl->ops) < 0) 774 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, map) < 0)
729 dl->ins = NULL; 775 dl->ins.ops = NULL;
730} 776}
731 777
732static int disasm_line__parse(char *line, char **namep, char **rawp) 778static int disasm_line__parse(char *line, const char **namep, char **rawp)
733{ 779{
734 char *name = line, tmp; 780 char *name = line, tmp;
735 781
@@ -762,12 +808,15 @@ static int disasm_line__parse(char *line, char **namep, char **rawp)
762 return 0; 808 return 0;
763 809
764out_free_name: 810out_free_name:
765 zfree(namep); 811 free((void *)namep);
812 *namep = NULL;
766 return -1; 813 return -1;
767} 814}
768 815
769static struct disasm_line *disasm_line__new(s64 offset, char *line, 816static struct disasm_line *disasm_line__new(s64 offset, char *line,
770 size_t privsize, int line_nr) 817 size_t privsize, int line_nr,
818 struct arch *arch,
819 struct map *map)
771{ 820{
772 struct disasm_line *dl = zalloc(sizeof(*dl) + privsize); 821 struct disasm_line *dl = zalloc(sizeof(*dl) + privsize);
773 822
@@ -779,10 +828,10 @@ static struct disasm_line *disasm_line__new(s64 offset, char *line,
779 goto out_delete; 828 goto out_delete;
780 829
781 if (offset != -1) { 830 if (offset != -1) {
782 if (disasm_line__parse(dl->line, &dl->name, &dl->ops.raw) < 0) 831 if (disasm_line__parse(dl->line, &dl->ins.name, &dl->ops.raw) < 0)
783 goto out_free_line; 832 goto out_free_line;
784 833
785 disasm_line__init_ins(dl); 834 disasm_line__init_ins(dl, arch, map);
786 } 835 }
787 } 836 }
788 837
@@ -798,20 +847,21 @@ out_delete:
798void disasm_line__free(struct disasm_line *dl) 847void disasm_line__free(struct disasm_line *dl)
799{ 848{
800 zfree(&dl->line); 849 zfree(&dl->line);
801 zfree(&dl->name); 850 if (dl->ins.ops && dl->ins.ops->free)
802 if (dl->ins && dl->ins->ops->free) 851 dl->ins.ops->free(&dl->ops);
803 dl->ins->ops->free(&dl->ops);
804 else 852 else
805 ins__delete(&dl->ops); 853 ins__delete(&dl->ops);
854 free((void *)dl->ins.name);
855 dl->ins.name = NULL;
806 free(dl); 856 free(dl);
807} 857}
808 858
809int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw) 859int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw)
810{ 860{
811 if (raw || !dl->ins) 861 if (raw || !dl->ins.ops)
812 return scnprintf(bf, size, "%-6.6s %s", dl->name, dl->ops.raw); 862 return scnprintf(bf, size, "%-6.6s %s", dl->ins.name, dl->ops.raw);
813 863
814 return ins__scnprintf(dl->ins, bf, size, &dl->ops); 864 return ins__scnprintf(&dl->ins, bf, size, &dl->ops);
815} 865}
816 866
817static void disasm__add(struct list_head *head, struct disasm_line *line) 867static void disasm__add(struct list_head *head, struct disasm_line *line)
@@ -866,6 +916,89 @@ double disasm__calc_percent(struct annotation *notes, int evidx, s64 offset,
866 return percent; 916 return percent;
867} 917}
868 918
919static const char *annotate__address_color(struct block_range *br)
920{
921 double cov = block_range__coverage(br);
922
923 if (cov >= 0) {
924 /* mark red for >75% coverage */
925 if (cov > 0.75)
926 return PERF_COLOR_RED;
927
928 /* mark dull for <1% coverage */
929 if (cov < 0.01)
930 return PERF_COLOR_NORMAL;
931 }
932
933 return PERF_COLOR_MAGENTA;
934}
935
936static const char *annotate__asm_color(struct block_range *br)
937{
938 double cov = block_range__coverage(br);
939
940 if (cov >= 0) {
941 /* mark dull for <1% coverage */
942 if (cov < 0.01)
943 return PERF_COLOR_NORMAL;
944 }
945
946 return PERF_COLOR_BLUE;
947}
948
949static void annotate__branch_printf(struct block_range *br, u64 addr)
950{
951 bool emit_comment = true;
952
953 if (!br)
954 return;
955
956#if 1
957 if (br->is_target && br->start == addr) {
958 struct block_range *branch = br;
959 double p;
960
961 /*
962 * Find matching branch to our target.
963 */
964 while (!branch->is_branch)
965 branch = block_range__next(branch);
966
967 p = 100 *(double)br->entry / branch->coverage;
968
969 if (p > 0.1) {
970 if (emit_comment) {
971 emit_comment = false;
972 printf("\t#");
973 }
974
975 /*
976 * The percentage of coverage joined at this target in relation
977 * to the next branch.
978 */
979 printf(" +%.2f%%", p);
980 }
981 }
982#endif
983 if (br->is_branch && br->end == addr) {
984 double p = 100*(double)br->taken / br->coverage;
985
986 if (p > 0.1) {
987 if (emit_comment) {
988 emit_comment = false;
989 printf("\t#");
990 }
991
992 /*
993 * The percentage of coverage leaving at this branch, and
994 * its prediction ratio.
995 */
996 printf(" -%.2f%% (p:%.2f%%)", p, 100*(double)br->pred / br->taken);
997 }
998 }
999}
1000
1001
869static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 start, 1002static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 start,
870 struct perf_evsel *evsel, u64 len, int min_pcnt, int printed, 1003 struct perf_evsel *evsel, u64 len, int min_pcnt, int printed,
871 int max_lines, struct disasm_line *queue) 1004 int max_lines, struct disasm_line *queue)
@@ -885,6 +1018,7 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
885 s64 offset = dl->offset; 1018 s64 offset = dl->offset;
886 const u64 addr = start + offset; 1019 const u64 addr = start + offset;
887 struct disasm_line *next; 1020 struct disasm_line *next;
1021 struct block_range *br;
888 1022
889 next = disasm__get_next_ip_line(&notes->src->source, dl); 1023 next = disasm__get_next_ip_line(&notes->src->source, dl);
890 1024
@@ -954,8 +1088,12 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
954 } 1088 }
955 1089
956 printf(" : "); 1090 printf(" : ");
957 color_fprintf(stdout, PERF_COLOR_MAGENTA, " %" PRIx64 ":", addr); 1091
958 color_fprintf(stdout, PERF_COLOR_BLUE, "%s\n", dl->line); 1092 br = block_range__find(addr);
1093 color_fprintf(stdout, annotate__address_color(br), " %" PRIx64 ":", addr);
1094 color_fprintf(stdout, annotate__asm_color(br), "%s", dl->line);
1095 annotate__branch_printf(br, addr);
1096 printf("\n");
959 1097
960 if (ppercents != &percent) 1098 if (ppercents != &percent)
961 free(ppercents); 1099 free(ppercents);
@@ -1004,6 +1142,7 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
1004 * The ops.raw part will be parsed further according to type of the instruction. 1142 * The ops.raw part will be parsed further according to type of the instruction.
1005 */ 1143 */
1006static int symbol__parse_objdump_line(struct symbol *sym, struct map *map, 1144static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
1145 struct arch *arch,
1007 FILE *file, size_t privsize, 1146 FILE *file, size_t privsize,
1008 int *line_nr) 1147 int *line_nr)
1009{ 1148{
@@ -1066,25 +1205,27 @@ static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
1066 parsed_line = tmp2 + 1; 1205 parsed_line = tmp2 + 1;
1067 } 1206 }
1068 1207
1069 dl = disasm_line__new(offset, parsed_line, privsize, *line_nr); 1208 dl = disasm_line__new(offset, parsed_line, privsize, *line_nr, arch, map);
1070 free(line); 1209 free(line);
1071 (*line_nr)++; 1210 (*line_nr)++;
1072 1211
1073 if (dl == NULL) 1212 if (dl == NULL)
1074 return -1; 1213 return -1;
1075 1214
1076 if (dl->ops.target.offset == UINT64_MAX) 1215 if (!disasm_line__has_offset(dl)) {
1077 dl->ops.target.offset = dl->ops.target.addr - 1216 dl->ops.target.offset = dl->ops.target.addr -
1078 map__rip_2objdump(map, sym->start); 1217 map__rip_2objdump(map, sym->start);
1218 dl->ops.target.offset_avail = true;
1219 }
1079 1220
1080 /* kcore has no symbols, so add the call target name */ 1221 /* kcore has no symbols, so add the call target name */
1081 if (dl->ins && ins__is_call(dl->ins) && !dl->ops.target.name) { 1222 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.name) {
1082 struct addr_map_symbol target = { 1223 struct addr_map_symbol target = {
1083 .map = map, 1224 .map = map,
1084 .addr = dl->ops.target.addr, 1225 .addr = dl->ops.target.addr,
1085 }; 1226 };
1086 1227
1087 if (!map_groups__find_ams(&target, NULL) && 1228 if (!map_groups__find_ams(&target) &&
1088 target.sym->start == target.al_addr) 1229 target.sym->start == target.al_addr)
1089 dl->ops.target.name = strdup(target.sym->name); 1230 dl->ops.target.name = strdup(target.sym->name);
1090 } 1231 }
@@ -1108,8 +1249,8 @@ static void delete_last_nop(struct symbol *sym)
1108 while (!list_empty(list)) { 1249 while (!list_empty(list)) {
1109 dl = list_entry(list->prev, struct disasm_line, node); 1250 dl = list_entry(list->prev, struct disasm_line, node);
1110 1251
1111 if (dl->ins && dl->ins->ops) { 1252 if (dl->ins.ops) {
1112 if (dl->ins->ops != &nop_ops) 1253 if (dl->ins.ops != &nop_ops)
1113 return; 1254 return;
1114 } else { 1255 } else {
1115 if (!strstr(dl->line, " nop ") && 1256 if (!strstr(dl->line, " nop ") &&
@@ -1162,53 +1303,89 @@ int symbol__strerror_disassemble(struct symbol *sym __maybe_unused, struct map *
1162 return 0; 1303 return 0;
1163} 1304}
1164 1305
1165int symbol__disassemble(struct symbol *sym, struct map *map, size_t privsize) 1306static int dso__disassemble_filename(struct dso *dso, char *filename, size_t filename_size)
1166{ 1307{
1167 struct dso *dso = map->dso; 1308 char linkname[PATH_MAX];
1168 char *filename = dso__build_id_filename(dso, NULL, 0); 1309 char *build_id_filename;
1169 bool free_filename = true;
1170 char command[PATH_MAX * 2];
1171 FILE *file;
1172 int err = 0;
1173 char symfs_filename[PATH_MAX];
1174 struct kcore_extract kce;
1175 bool delete_extract = false;
1176 int stdout_fd[2];
1177 int lineno = 0;
1178 int nline;
1179 pid_t pid;
1180 1310
1181 if (filename) 1311 if (dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS &&
1182 symbol__join_symfs(symfs_filename, filename); 1312 !dso__is_kcore(dso))
1313 return SYMBOL_ANNOTATE_ERRNO__NO_VMLINUX;
1183 1314
1184 if (filename == NULL) { 1315 build_id_filename = dso__build_id_filename(dso, NULL, 0);
1316 if (build_id_filename) {
1317 __symbol__join_symfs(filename, filename_size, build_id_filename);
1318 free(build_id_filename);
1319 } else {
1185 if (dso->has_build_id) 1320 if (dso->has_build_id)
1186 return ENOMEM; 1321 return ENOMEM;
1187 goto fallback; 1322 goto fallback;
1188 } else if (dso__is_kcore(dso) || 1323 }
1189 readlink(symfs_filename, command, sizeof(command)) < 0 || 1324
1190 strstr(command, DSO__NAME_KALLSYMS) || 1325 if (dso__is_kcore(dso) ||
1191 access(symfs_filename, R_OK)) { 1326 readlink(filename, linkname, sizeof(linkname)) < 0 ||
1192 free(filename); 1327 strstr(linkname, DSO__NAME_KALLSYMS) ||
1328 access(filename, R_OK)) {
1193fallback: 1329fallback:
1194 /* 1330 /*
1195 * If we don't have build-ids or the build-id file isn't in the 1331 * If we don't have build-ids or the build-id file isn't in the
1196 * cache, or is just a kallsyms file, well, lets hope that this 1332 * cache, or is just a kallsyms file, well, lets hope that this
1197 * DSO is the same as when 'perf record' ran. 1333 * DSO is the same as when 'perf record' ran.
1198 */ 1334 */
1199 filename = (char *)dso->long_name; 1335 __symbol__join_symfs(filename, filename_size, dso->long_name);
1200 symbol__join_symfs(symfs_filename, filename);
1201 free_filename = false;
1202 } 1336 }
1203 1337
1204 if (dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS && 1338 return 0;
1205 !dso__is_kcore(dso)) { 1339}
1206 err = SYMBOL_ANNOTATE_ERRNO__NO_VMLINUX; 1340
1207 goto out_free_filename; 1341static const char *annotate__norm_arch(const char *arch_name)
1342{
1343 struct utsname uts;
1344
1345 if (!arch_name) { /* Assume we are annotating locally. */
1346 if (uname(&uts) < 0)
1347 return NULL;
1348 arch_name = uts.machine;
1349 }
1350 return normalize_arch((char *)arch_name);
1351}
1352
1353int symbol__disassemble(struct symbol *sym, struct map *map, const char *arch_name, size_t privsize)
1354{
1355 struct dso *dso = map->dso;
1356 char command[PATH_MAX * 2];
1357 struct arch *arch = NULL;
1358 FILE *file;
1359 char symfs_filename[PATH_MAX];
1360 struct kcore_extract kce;
1361 bool delete_extract = false;
1362 int stdout_fd[2];
1363 int lineno = 0;
1364 int nline;
1365 pid_t pid;
1366 int err = dso__disassemble_filename(dso, symfs_filename, sizeof(symfs_filename));
1367
1368 if (err)
1369 return err;
1370
1371 arch_name = annotate__norm_arch(arch_name);
1372 if (!arch_name)
1373 return -1;
1374
1375 arch = arch__find(arch_name);
1376 if (arch == NULL)
1377 return -ENOTSUP;
1378
1379 if (arch->init) {
1380 err = arch->init(arch);
1381 if (err) {
1382 pr_err("%s: failed to initialize %s arch priv area\n", __func__, arch->name);
1383 return err;
1384 }
1208 } 1385 }
1209 1386
1210 pr_debug("%s: filename=%s, sym=%s, start=%#" PRIx64 ", end=%#" PRIx64 "\n", __func__, 1387 pr_debug("%s: filename=%s, sym=%s, start=%#" PRIx64 ", end=%#" PRIx64 "\n", __func__,
1211 filename, sym->name, map->unmap_ip(map, sym->start), 1388 symfs_filename, sym->name, map->unmap_ip(map, sym->start),
1212 map->unmap_ip(map, sym->end)); 1389 map->unmap_ip(map, sym->end));
1213 1390
1214 pr_debug("annotating [%p] %30s : [%p] %30s\n", 1391 pr_debug("annotating [%p] %30s : [%p] %30s\n",
@@ -1223,11 +1400,6 @@ fallback:
1223 delete_extract = true; 1400 delete_extract = true;
1224 strlcpy(symfs_filename, kce.extract_filename, 1401 strlcpy(symfs_filename, kce.extract_filename,
1225 sizeof(symfs_filename)); 1402 sizeof(symfs_filename));
1226 if (free_filename) {
1227 free(filename);
1228 free_filename = false;
1229 }
1230 filename = symfs_filename;
1231 } 1403 }
1232 } else if (dso__needs_decompress(dso)) { 1404 } else if (dso__needs_decompress(dso)) {
1233 char tmp[PATH_MAX]; 1405 char tmp[PATH_MAX];
@@ -1236,14 +1408,14 @@ fallback:
1236 bool ret; 1408 bool ret;
1237 1409
1238 if (kmod_path__parse_ext(&m, symfs_filename)) 1410 if (kmod_path__parse_ext(&m, symfs_filename))
1239 goto out_free_filename; 1411 goto out;
1240 1412
1241 snprintf(tmp, PATH_MAX, "/tmp/perf-kmod-XXXXXX"); 1413 snprintf(tmp, PATH_MAX, "/tmp/perf-kmod-XXXXXX");
1242 1414
1243 fd = mkstemp(tmp); 1415 fd = mkstemp(tmp);
1244 if (fd < 0) { 1416 if (fd < 0) {
1245 free(m.ext); 1417 free(m.ext);
1246 goto out_free_filename; 1418 goto out;
1247 } 1419 }
1248 1420
1249 ret = decompress_to_file(m.ext, symfs_filename, fd); 1421 ret = decompress_to_file(m.ext, symfs_filename, fd);
@@ -1255,7 +1427,7 @@ fallback:
1255 close(fd); 1427 close(fd);
1256 1428
1257 if (!ret) 1429 if (!ret)
1258 goto out_free_filename; 1430 goto out;
1259 1431
1260 strcpy(symfs_filename, tmp); 1432 strcpy(symfs_filename, tmp);
1261 } 1433 }
@@ -1271,7 +1443,7 @@ fallback:
1271 map__rip_2objdump(map, sym->end), 1443 map__rip_2objdump(map, sym->end),
1272 symbol_conf.annotate_asm_raw ? "" : "--no-show-raw", 1444 symbol_conf.annotate_asm_raw ? "" : "--no-show-raw",
1273 symbol_conf.annotate_src ? "-S" : "", 1445 symbol_conf.annotate_src ? "-S" : "",
1274 symfs_filename, filename); 1446 symfs_filename, symfs_filename);
1275 1447
1276 pr_debug("Executing: %s\n", command); 1448 pr_debug("Executing: %s\n", command);
1277 1449
@@ -1310,7 +1482,7 @@ fallback:
1310 1482
1311 nline = 0; 1483 nline = 0;
1312 while (!feof(file)) { 1484 while (!feof(file)) {
1313 if (symbol__parse_objdump_line(sym, map, file, privsize, 1485 if (symbol__parse_objdump_line(sym, map, arch, file, privsize,
1314 &lineno) < 0) 1486 &lineno) < 0)
1315 break; 1487 break;
1316 nline++; 1488 nline++;
@@ -1333,11 +1505,10 @@ out_remove_tmp:
1333 1505
1334 if (dso__needs_decompress(dso)) 1506 if (dso__needs_decompress(dso))
1335 unlink(symfs_filename); 1507 unlink(symfs_filename);
1336out_free_filename: 1508
1337 if (delete_extract) 1509 if (delete_extract)
1338 kcore_extract__delete(&kce); 1510 kcore_extract__delete(&kce);
1339 if (free_filename) 1511out:
1340 free(filename);
1341 return err; 1512 return err;
1342 1513
1343out_close_stdout: 1514out_close_stdout:
@@ -1680,7 +1851,7 @@ static size_t disasm_line__fprintf(struct disasm_line *dl, FILE *fp)
1680 if (dl->offset == -1) 1851 if (dl->offset == -1)
1681 return fprintf(fp, "%s\n", dl->line); 1852 return fprintf(fp, "%s\n", dl->line);
1682 1853
1683 printed = fprintf(fp, "%#" PRIx64 " %s", dl->offset, dl->name); 1854 printed = fprintf(fp, "%#" PRIx64 " %s", dl->offset, dl->ins.name);
1684 1855
1685 if (dl->ops.raw[0] != '\0') { 1856 if (dl->ops.raw[0] != '\0') {
1686 printed += fprintf(fp, "%.*s %s\n", 6 - (int)printed, " ", 1857 printed += fprintf(fp, "%.*s %s\n", 6 - (int)printed, " ",
@@ -1709,7 +1880,7 @@ int symbol__tty_annotate(struct symbol *sym, struct map *map,
1709 struct rb_root source_line = RB_ROOT; 1880 struct rb_root source_line = RB_ROOT;
1710 u64 len; 1881 u64 len;
1711 1882
1712 if (symbol__disassemble(sym, map, 0) < 0) 1883 if (symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), 0) < 0)
1713 return -1; 1884 return -1;
1714 1885
1715 len = symbol__size(sym); 1886 len = symbol__size(sym);
diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
index f67ccb027561..09776b5af991 100644
--- a/tools/perf/util/annotate.h
+++ b/tools/perf/util/annotate.h
@@ -11,7 +11,12 @@
11#include <linux/rbtree.h> 11#include <linux/rbtree.h>
12#include <pthread.h> 12#include <pthread.h>
13 13
14struct ins; 14struct ins_ops;
15
16struct ins {
17 const char *name;
18 struct ins_ops *ops;
19};
15 20
16struct ins_operands { 21struct ins_operands {
17 char *raw; 22 char *raw;
@@ -19,7 +24,8 @@ struct ins_operands {
19 char *raw; 24 char *raw;
20 char *name; 25 char *name;
21 u64 addr; 26 u64 addr;
22 u64 offset; 27 s64 offset;
28 bool offset_avail;
23 } target; 29 } target;
24 union { 30 union {
25 struct { 31 struct {
@@ -28,24 +34,21 @@ struct ins_operands {
28 u64 addr; 34 u64 addr;
29 } source; 35 } source;
30 struct { 36 struct {
31 struct ins *ins; 37 struct ins ins;
32 struct ins_operands *ops; 38 struct ins_operands *ops;
33 } locked; 39 } locked;
34 }; 40 };
35}; 41};
36 42
43struct arch;
44
37struct ins_ops { 45struct ins_ops {
38 void (*free)(struct ins_operands *ops); 46 void (*free)(struct ins_operands *ops);
39 int (*parse)(struct ins_operands *ops); 47 int (*parse)(struct arch *arch, struct ins_operands *ops, struct map *map);
40 int (*scnprintf)(struct ins *ins, char *bf, size_t size, 48 int (*scnprintf)(struct ins *ins, char *bf, size_t size,
41 struct ins_operands *ops); 49 struct ins_operands *ops);
42}; 50};
43 51
44struct ins {
45 const char *name;
46 struct ins_ops *ops;
47};
48
49bool ins__is_jump(const struct ins *ins); 52bool ins__is_jump(const struct ins *ins);
50bool ins__is_call(const struct ins *ins); 53bool ins__is_call(const struct ins *ins);
51bool ins__is_ret(const struct ins *ins); 54bool ins__is_ret(const struct ins *ins);
@@ -57,8 +60,7 @@ struct disasm_line {
57 struct list_head node; 60 struct list_head node;
58 s64 offset; 61 s64 offset;
59 char *line; 62 char *line;
60 char *name; 63 struct ins ins;
61 struct ins *ins;
62 int line_nr; 64 int line_nr;
63 float ipc; 65 float ipc;
64 u64 cycles; 66 u64 cycles;
@@ -67,7 +69,7 @@ struct disasm_line {
67 69
68static inline bool disasm_line__has_offset(const struct disasm_line *dl) 70static inline bool disasm_line__has_offset(const struct disasm_line *dl)
69{ 71{
70 return dl->ops.target.offset != UINT64_MAX; 72 return dl->ops.target.offset_avail;
71} 73}
72 74
73void disasm_line__free(struct disasm_line *dl); 75void disasm_line__free(struct disasm_line *dl);
@@ -130,6 +132,7 @@ struct annotated_source {
130 132
131struct annotation { 133struct annotation {
132 pthread_mutex_t lock; 134 pthread_mutex_t lock;
135 u64 max_coverage;
133 struct annotated_source *src; 136 struct annotated_source *src;
134}; 137};
135 138
@@ -155,7 +158,7 @@ int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 addr);
155int symbol__alloc_hist(struct symbol *sym); 158int symbol__alloc_hist(struct symbol *sym);
156void symbol__annotate_zero_histograms(struct symbol *sym); 159void symbol__annotate_zero_histograms(struct symbol *sym);
157 160
158int symbol__disassemble(struct symbol *sym, struct map *map, size_t privsize); 161int symbol__disassemble(struct symbol *sym, struct map *map, const char *arch_name, size_t privsize);
159 162
160enum symbol_disassemble_errno { 163enum symbol_disassemble_errno {
161 SYMBOL_ANNOTATE_ERRNO__SUCCESS = 0, 164 SYMBOL_ANNOTATE_ERRNO__SUCCESS = 0,
@@ -177,7 +180,6 @@ enum symbol_disassemble_errno {
177int symbol__strerror_disassemble(struct symbol *sym, struct map *map, 180int symbol__strerror_disassemble(struct symbol *sym, struct map *map,
178 int errnum, char *buf, size_t buflen); 181 int errnum, char *buf, size_t buflen);
179 182
180int symbol__annotate_init(struct map *map, struct symbol *sym);
181int symbol__annotate_printf(struct symbol *sym, struct map *map, 183int symbol__annotate_printf(struct symbol *sym, struct map *map,
182 struct perf_evsel *evsel, bool full_paths, 184 struct perf_evsel *evsel, bool full_paths,
183 int min_pcnt, int max_lines, int context); 185 int min_pcnt, int max_lines, int context);
diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
index c9169011e55e..c5a6e0b12452 100644
--- a/tools/perf/util/auxtrace.c
+++ b/tools/perf/util/auxtrace.c
@@ -16,6 +16,10 @@
16#include <sys/types.h> 16#include <sys/types.h>
17#include <sys/mman.h> 17#include <sys/mman.h>
18#include <stdbool.h> 18#include <stdbool.h>
19#include <ctype.h>
20#include <string.h>
21#include <limits.h>
22#include <errno.h>
19 23
20#include <linux/kernel.h> 24#include <linux/kernel.h>
21#include <linux/perf_event.h> 25#include <linux/perf_event.h>
@@ -35,9 +39,14 @@
35#include "../perf.h" 39#include "../perf.h"
36#include "util.h" 40#include "util.h"
37#include "evlist.h" 41#include "evlist.h"
42#include "dso.h"
43#include "map.h"
44#include "pmu.h"
45#include "evsel.h"
38#include "cpumap.h" 46#include "cpumap.h"
39#include "thread_map.h" 47#include "thread_map.h"
40#include "asm/bug.h" 48#include "asm/bug.h"
49#include "symbol/kallsyms.h"
41#include "auxtrace.h" 50#include "auxtrace.h"
42 51
43#include <linux/hash.h> 52#include <linux/hash.h>
@@ -892,6 +901,7 @@ int perf_event__process_auxtrace_info(struct perf_tool *tool __maybe_unused,
892 return intel_pt_process_auxtrace_info(event, session); 901 return intel_pt_process_auxtrace_info(event, session);
893 case PERF_AUXTRACE_INTEL_BTS: 902 case PERF_AUXTRACE_INTEL_BTS:
894 return intel_bts_process_auxtrace_info(event, session); 903 return intel_bts_process_auxtrace_info(event, session);
904 case PERF_AUXTRACE_CS_ETM:
895 case PERF_AUXTRACE_UNKNOWN: 905 case PERF_AUXTRACE_UNKNOWN:
896 default: 906 default:
897 return -EINVAL; 907 return -EINVAL;
@@ -1398,3 +1408,731 @@ void *auxtrace_cache__lookup(struct auxtrace_cache *c, u32 key)
1398 1408
1399 return NULL; 1409 return NULL;
1400} 1410}
1411
1412static void addr_filter__free_str(struct addr_filter *filt)
1413{
1414 free(filt->str);
1415 filt->action = NULL;
1416 filt->sym_from = NULL;
1417 filt->sym_to = NULL;
1418 filt->filename = NULL;
1419 filt->str = NULL;
1420}
1421
1422static struct addr_filter *addr_filter__new(void)
1423{
1424 struct addr_filter *filt = zalloc(sizeof(*filt));
1425
1426 if (filt)
1427 INIT_LIST_HEAD(&filt->list);
1428
1429 return filt;
1430}
1431
1432static void addr_filter__free(struct addr_filter *filt)
1433{
1434 if (filt)
1435 addr_filter__free_str(filt);
1436 free(filt);
1437}
1438
1439static void addr_filters__add(struct addr_filters *filts,
1440 struct addr_filter *filt)
1441{
1442 list_add_tail(&filt->list, &filts->head);
1443 filts->cnt += 1;
1444}
1445
1446static void addr_filters__del(struct addr_filters *filts,
1447 struct addr_filter *filt)
1448{
1449 list_del_init(&filt->list);
1450 filts->cnt -= 1;
1451}
1452
1453void addr_filters__init(struct addr_filters *filts)
1454{
1455 INIT_LIST_HEAD(&filts->head);
1456 filts->cnt = 0;
1457}
1458
1459void addr_filters__exit(struct addr_filters *filts)
1460{
1461 struct addr_filter *filt, *n;
1462
1463 list_for_each_entry_safe(filt, n, &filts->head, list) {
1464 addr_filters__del(filts, filt);
1465 addr_filter__free(filt);
1466 }
1467}
1468
1469static int parse_num_or_str(char **inp, u64 *num, const char **str,
1470 const char *str_delim)
1471{
1472 *inp += strspn(*inp, " ");
1473
1474 if (isdigit(**inp)) {
1475 char *endptr;
1476
1477 if (!num)
1478 return -EINVAL;
1479 errno = 0;
1480 *num = strtoull(*inp, &endptr, 0);
1481 if (errno)
1482 return -errno;
1483 if (endptr == *inp)
1484 return -EINVAL;
1485 *inp = endptr;
1486 } else {
1487 size_t n;
1488
1489 if (!str)
1490 return -EINVAL;
1491 *inp += strspn(*inp, " ");
1492 *str = *inp;
1493 n = strcspn(*inp, str_delim);
1494 if (!n)
1495 return -EINVAL;
1496 *inp += n;
1497 if (**inp) {
1498 **inp = '\0';
1499 *inp += 1;
1500 }
1501 }
1502 return 0;
1503}
1504
1505static int parse_action(struct addr_filter *filt)
1506{
1507 if (!strcmp(filt->action, "filter")) {
1508 filt->start = true;
1509 filt->range = true;
1510 } else if (!strcmp(filt->action, "start")) {
1511 filt->start = true;
1512 } else if (!strcmp(filt->action, "stop")) {
1513 filt->start = false;
1514 } else if (!strcmp(filt->action, "tracestop")) {
1515 filt->start = false;
1516 filt->range = true;
1517 filt->action += 5; /* Change 'tracestop' to 'stop' */
1518 } else {
1519 return -EINVAL;
1520 }
1521 return 0;
1522}
1523
1524static int parse_sym_idx(char **inp, int *idx)
1525{
1526 *idx = -1;
1527
1528 *inp += strspn(*inp, " ");
1529
1530 if (**inp != '#')
1531 return 0;
1532
1533 *inp += 1;
1534
1535 if (**inp == 'g' || **inp == 'G') {
1536 *inp += 1;
1537 *idx = 0;
1538 } else {
1539 unsigned long num;
1540 char *endptr;
1541
1542 errno = 0;
1543 num = strtoul(*inp, &endptr, 0);
1544 if (errno)
1545 return -errno;
1546 if (endptr == *inp || num > INT_MAX)
1547 return -EINVAL;
1548 *inp = endptr;
1549 *idx = num;
1550 }
1551
1552 return 0;
1553}
1554
1555static int parse_addr_size(char **inp, u64 *num, const char **str, int *idx)
1556{
1557 int err = parse_num_or_str(inp, num, str, " ");
1558
1559 if (!err && *str)
1560 err = parse_sym_idx(inp, idx);
1561
1562 return err;
1563}
1564
1565static int parse_one_filter(struct addr_filter *filt, const char **filter_inp)
1566{
1567 char *fstr;
1568 int err;
1569
1570 filt->str = fstr = strdup(*filter_inp);
1571 if (!fstr)
1572 return -ENOMEM;
1573
1574 err = parse_num_or_str(&fstr, NULL, &filt->action, " ");
1575 if (err)
1576 goto out_err;
1577
1578 err = parse_action(filt);
1579 if (err)
1580 goto out_err;
1581
1582 err = parse_addr_size(&fstr, &filt->addr, &filt->sym_from,
1583 &filt->sym_from_idx);
1584 if (err)
1585 goto out_err;
1586
1587 fstr += strspn(fstr, " ");
1588
1589 if (*fstr == '/') {
1590 fstr += 1;
1591 err = parse_addr_size(&fstr, &filt->size, &filt->sym_to,
1592 &filt->sym_to_idx);
1593 if (err)
1594 goto out_err;
1595 filt->range = true;
1596 }
1597
1598 fstr += strspn(fstr, " ");
1599
1600 if (*fstr == '@') {
1601 fstr += 1;
1602 err = parse_num_or_str(&fstr, NULL, &filt->filename, " ,");
1603 if (err)
1604 goto out_err;
1605 }
1606
1607 fstr += strspn(fstr, " ,");
1608
1609 *filter_inp += fstr - filt->str;
1610
1611 return 0;
1612
1613out_err:
1614 addr_filter__free_str(filt);
1615
1616 return err;
1617}
1618
1619int addr_filters__parse_bare_filter(struct addr_filters *filts,
1620 const char *filter)
1621{
1622 struct addr_filter *filt;
1623 const char *fstr = filter;
1624 int err;
1625
1626 while (*fstr) {
1627 filt = addr_filter__new();
1628 err = parse_one_filter(filt, &fstr);
1629 if (err) {
1630 addr_filter__free(filt);
1631 addr_filters__exit(filts);
1632 return err;
1633 }
1634 addr_filters__add(filts, filt);
1635 }
1636
1637 return 0;
1638}
1639
1640struct sym_args {
1641 const char *name;
1642 u64 start;
1643 u64 size;
1644 int idx;
1645 int cnt;
1646 bool started;
1647 bool global;
1648 bool selected;
1649 bool duplicate;
1650 bool near;
1651};
1652
1653static bool kern_sym_match(struct sym_args *args, const char *name, char type)
1654{
1655 /* A function with the same name, and global or the n'th found or any */
1656 return symbol_type__is_a(type, MAP__FUNCTION) &&
1657 !strcmp(name, args->name) &&
1658 ((args->global && isupper(type)) ||
1659 (args->selected && ++(args->cnt) == args->idx) ||
1660 (!args->global && !args->selected));
1661}
1662
1663static int find_kern_sym_cb(void *arg, const char *name, char type, u64 start)
1664{
1665 struct sym_args *args = arg;
1666
1667 if (args->started) {
1668 if (!args->size)
1669 args->size = start - args->start;
1670 if (args->selected) {
1671 if (args->size)
1672 return 1;
1673 } else if (kern_sym_match(args, name, type)) {
1674 args->duplicate = true;
1675 return 1;
1676 }
1677 } else if (kern_sym_match(args, name, type)) {
1678 args->started = true;
1679 args->start = start;
1680 }
1681
1682 return 0;
1683}
1684
1685static int print_kern_sym_cb(void *arg, const char *name, char type, u64 start)
1686{
1687 struct sym_args *args = arg;
1688
1689 if (kern_sym_match(args, name, type)) {
1690 pr_err("#%d\t0x%"PRIx64"\t%c\t%s\n",
1691 ++args->cnt, start, type, name);
1692 args->near = true;
1693 } else if (args->near) {
1694 args->near = false;
1695 pr_err("\t\twhich is near\t\t%s\n", name);
1696 }
1697
1698 return 0;
1699}
1700
1701static int sym_not_found_error(const char *sym_name, int idx)
1702{
1703 if (idx > 0) {
1704 pr_err("N'th occurrence (N=%d) of symbol '%s' not found.\n",
1705 idx, sym_name);
1706 } else if (!idx) {
1707 pr_err("Global symbol '%s' not found.\n", sym_name);
1708 } else {
1709 pr_err("Symbol '%s' not found.\n", sym_name);
1710 }
1711 pr_err("Note that symbols must be functions.\n");
1712
1713 return -EINVAL;
1714}
1715
1716static int find_kern_sym(const char *sym_name, u64 *start, u64 *size, int idx)
1717{
1718 struct sym_args args = {
1719 .name = sym_name,
1720 .idx = idx,
1721 .global = !idx,
1722 .selected = idx > 0,
1723 };
1724 int err;
1725
1726 *start = 0;
1727 *size = 0;
1728
1729 err = kallsyms__parse("/proc/kallsyms", &args, find_kern_sym_cb);
1730 if (err < 0) {
1731 pr_err("Failed to parse /proc/kallsyms\n");
1732 return err;
1733 }
1734
1735 if (args.duplicate) {
1736 pr_err("Multiple kernel symbols with name '%s'\n", sym_name);
1737 args.cnt = 0;
1738 kallsyms__parse("/proc/kallsyms", &args, print_kern_sym_cb);
1739 pr_err("Disambiguate symbol name by inserting #n after the name e.g. %s #2\n",
1740 sym_name);
1741 pr_err("Or select a global symbol by inserting #0 or #g or #G\n");
1742 return -EINVAL;
1743 }
1744
1745 if (!args.started) {
1746 pr_err("Kernel symbol lookup: ");
1747 return sym_not_found_error(sym_name, idx);
1748 }
1749
1750 *start = args.start;
1751 *size = args.size;
1752
1753 return 0;
1754}
1755
1756static int find_entire_kern_cb(void *arg, const char *name __maybe_unused,
1757 char type, u64 start)
1758{
1759 struct sym_args *args = arg;
1760
1761 if (!symbol_type__is_a(type, MAP__FUNCTION))
1762 return 0;
1763
1764 if (!args->started) {
1765 args->started = true;
1766 args->start = start;
1767 }
1768 /* Don't know exactly where the kernel ends, so we add a page */
1769 args->size = round_up(start, page_size) + page_size - args->start;
1770
1771 return 0;
1772}
1773
1774static int addr_filter__entire_kernel(struct addr_filter *filt)
1775{
1776 struct sym_args args = { .started = false };
1777 int err;
1778
1779 err = kallsyms__parse("/proc/kallsyms", &args, find_entire_kern_cb);
1780 if (err < 0 || !args.started) {
1781 pr_err("Failed to parse /proc/kallsyms\n");
1782 return err;
1783 }
1784
1785 filt->addr = args.start;
1786 filt->size = args.size;
1787
1788 return 0;
1789}
1790
1791static int check_end_after_start(struct addr_filter *filt, u64 start, u64 size)
1792{
1793 if (start + size >= filt->addr)
1794 return 0;
1795
1796 if (filt->sym_from) {
1797 pr_err("Symbol '%s' (0x%"PRIx64") comes before '%s' (0x%"PRIx64")\n",
1798 filt->sym_to, start, filt->sym_from, filt->addr);
1799 } else {
1800 pr_err("Symbol '%s' (0x%"PRIx64") comes before address 0x%"PRIx64")\n",
1801 filt->sym_to, start, filt->addr);
1802 }
1803
1804 return -EINVAL;
1805}
1806
1807static int addr_filter__resolve_kernel_syms(struct addr_filter *filt)
1808{
1809 bool no_size = false;
1810 u64 start, size;
1811 int err;
1812
1813 if (symbol_conf.kptr_restrict) {
1814 pr_err("Kernel addresses are restricted. Unable to resolve kernel symbols.\n");
1815 return -EINVAL;
1816 }
1817
1818 if (filt->sym_from && !strcmp(filt->sym_from, "*"))
1819 return addr_filter__entire_kernel(filt);
1820
1821 if (filt->sym_from) {
1822 err = find_kern_sym(filt->sym_from, &start, &size,
1823 filt->sym_from_idx);
1824 if (err)
1825 return err;
1826 filt->addr = start;
1827 if (filt->range && !filt->size && !filt->sym_to) {
1828 filt->size = size;
1829 no_size = !!size;
1830 }
1831 }
1832
1833 if (filt->sym_to) {
1834 err = find_kern_sym(filt->sym_to, &start, &size,
1835 filt->sym_to_idx);
1836 if (err)
1837 return err;
1838
1839 err = check_end_after_start(filt, start, size);
1840 if (err)
1841 return err;
1842 filt->size = start + size - filt->addr;
1843 no_size = !!size;
1844 }
1845
1846 /* The very last symbol in kallsyms does not imply a particular size */
1847 if (no_size) {
1848 pr_err("Cannot determine size of symbol '%s'\n",
1849 filt->sym_to ? filt->sym_to : filt->sym_from);
1850 return -EINVAL;
1851 }
1852
1853 return 0;
1854}
1855
1856static struct dso *load_dso(const char *name)
1857{
1858 struct map *map;
1859 struct dso *dso;
1860
1861 map = dso__new_map(name);
1862 if (!map)
1863 return NULL;
1864
1865 map__load(map);
1866
1867 dso = dso__get(map->dso);
1868
1869 map__put(map);
1870
1871 return dso;
1872}
1873
1874static bool dso_sym_match(struct symbol *sym, const char *name, int *cnt,
1875 int idx)
1876{
1877 /* Same name, and global or the n'th found or any */
1878 return !arch__compare_symbol_names(name, sym->name) &&
1879 ((!idx && sym->binding == STB_GLOBAL) ||
1880 (idx > 0 && ++*cnt == idx) ||
1881 idx < 0);
1882}
1883
1884static void print_duplicate_syms(struct dso *dso, const char *sym_name)
1885{
1886 struct symbol *sym;
1887 bool near = false;
1888 int cnt = 0;
1889
1890 pr_err("Multiple symbols with name '%s'\n", sym_name);
1891
1892 sym = dso__first_symbol(dso, MAP__FUNCTION);
1893 while (sym) {
1894 if (dso_sym_match(sym, sym_name, &cnt, -1)) {
1895 pr_err("#%d\t0x%"PRIx64"\t%c\t%s\n",
1896 ++cnt, sym->start,
1897 sym->binding == STB_GLOBAL ? 'g' :
1898 sym->binding == STB_LOCAL ? 'l' : 'w',
1899 sym->name);
1900 near = true;
1901 } else if (near) {
1902 near = false;
1903 pr_err("\t\twhich is near\t\t%s\n", sym->name);
1904 }
1905 sym = dso__next_symbol(sym);
1906 }
1907
1908 pr_err("Disambiguate symbol name by inserting #n after the name e.g. %s #2\n",
1909 sym_name);
1910 pr_err("Or select a global symbol by inserting #0 or #g or #G\n");
1911}
1912
1913static int find_dso_sym(struct dso *dso, const char *sym_name, u64 *start,
1914 u64 *size, int idx)
1915{
1916 struct symbol *sym;
1917 int cnt = 0;
1918
1919 *start = 0;
1920 *size = 0;
1921
1922 sym = dso__first_symbol(dso, MAP__FUNCTION);
1923 while (sym) {
1924 if (*start) {
1925 if (!*size)
1926 *size = sym->start - *start;
1927 if (idx > 0) {
1928 if (*size)
1929 return 1;
1930 } else if (dso_sym_match(sym, sym_name, &cnt, idx)) {
1931 print_duplicate_syms(dso, sym_name);
1932 return -EINVAL;
1933 }
1934 } else if (dso_sym_match(sym, sym_name, &cnt, idx)) {
1935 *start = sym->start;
1936 *size = sym->end - sym->start;
1937 }
1938 sym = dso__next_symbol(sym);
1939 }
1940
1941 if (!*start)
1942 return sym_not_found_error(sym_name, idx);
1943
1944 return 0;
1945}
1946
1947static int addr_filter__entire_dso(struct addr_filter *filt, struct dso *dso)
1948{
1949 struct symbol *first_sym = dso__first_symbol(dso, MAP__FUNCTION);
1950 struct symbol *last_sym = dso__last_symbol(dso, MAP__FUNCTION);
1951
1952 if (!first_sym || !last_sym) {
1953 pr_err("Failed to determine filter for %s\nNo symbols found.\n",
1954 filt->filename);
1955 return -EINVAL;
1956 }
1957
1958 filt->addr = first_sym->start;
1959 filt->size = last_sym->end - first_sym->start;
1960
1961 return 0;
1962}
1963
1964static int addr_filter__resolve_syms(struct addr_filter *filt)
1965{
1966 u64 start, size;
1967 struct dso *dso;
1968 int err = 0;
1969
1970 if (!filt->sym_from && !filt->sym_to)
1971 return 0;
1972
1973 if (!filt->filename)
1974 return addr_filter__resolve_kernel_syms(filt);
1975
1976 dso = load_dso(filt->filename);
1977 if (!dso) {
1978 pr_err("Failed to load symbols from: %s\n", filt->filename);
1979 return -EINVAL;
1980 }
1981
1982 if (filt->sym_from && !strcmp(filt->sym_from, "*")) {
1983 err = addr_filter__entire_dso(filt, dso);
1984 goto put_dso;
1985 }
1986
1987 if (filt->sym_from) {
1988 err = find_dso_sym(dso, filt->sym_from, &start, &size,
1989 filt->sym_from_idx);
1990 if (err)
1991 goto put_dso;
1992 filt->addr = start;
1993 if (filt->range && !filt->size && !filt->sym_to)
1994 filt->size = size;
1995 }
1996
1997 if (filt->sym_to) {
1998 err = find_dso_sym(dso, filt->sym_to, &start, &size,
1999 filt->sym_to_idx);
2000 if (err)
2001 goto put_dso;
2002
2003 err = check_end_after_start(filt, start, size);
2004 if (err)
2005 return err;
2006
2007 filt->size = start + size - filt->addr;
2008 }
2009
2010put_dso:
2011 dso__put(dso);
2012
2013 return err;
2014}
2015
2016static char *addr_filter__to_str(struct addr_filter *filt)
2017{
2018 char filename_buf[PATH_MAX];
2019 const char *at = "";
2020 const char *fn = "";
2021 char *filter;
2022 int err;
2023
2024 if (filt->filename) {
2025 at = "@";
2026 fn = realpath(filt->filename, filename_buf);
2027 if (!fn)
2028 return NULL;
2029 }
2030
2031 if (filt->range) {
2032 err = asprintf(&filter, "%s 0x%"PRIx64"/0x%"PRIx64"%s%s",
2033 filt->action, filt->addr, filt->size, at, fn);
2034 } else {
2035 err = asprintf(&filter, "%s 0x%"PRIx64"%s%s",
2036 filt->action, filt->addr, at, fn);
2037 }
2038
2039 return err < 0 ? NULL : filter;
2040}
2041
2042static int parse_addr_filter(struct perf_evsel *evsel, const char *filter,
2043 int max_nr)
2044{
2045 struct addr_filters filts;
2046 struct addr_filter *filt;
2047 int err;
2048
2049 addr_filters__init(&filts);
2050
2051 err = addr_filters__parse_bare_filter(&filts, filter);
2052 if (err)
2053 goto out_exit;
2054
2055 if (filts.cnt > max_nr) {
2056 pr_err("Error: number of address filters (%d) exceeds maximum (%d)\n",
2057 filts.cnt, max_nr);
2058 err = -EINVAL;
2059 goto out_exit;
2060 }
2061
2062 list_for_each_entry(filt, &filts.head, list) {
2063 char *new_filter;
2064
2065 err = addr_filter__resolve_syms(filt);
2066 if (err)
2067 goto out_exit;
2068
2069 new_filter = addr_filter__to_str(filt);
2070 if (!new_filter) {
2071 err = -ENOMEM;
2072 goto out_exit;
2073 }
2074
2075 if (perf_evsel__append_addr_filter(evsel, new_filter)) {
2076 err = -ENOMEM;
2077 goto out_exit;
2078 }
2079 }
2080
2081out_exit:
2082 addr_filters__exit(&filts);
2083
2084 if (err) {
2085 pr_err("Failed to parse address filter: '%s'\n", filter);
2086 pr_err("Filter format is: filter|start|stop|tracestop <start symbol or address> [/ <end symbol or size>] [@<file name>]\n");
2087 pr_err("Where multiple filters are separated by space or comma.\n");
2088 }
2089
2090 return err;
2091}
2092
2093static struct perf_pmu *perf_evsel__find_pmu(struct perf_evsel *evsel)
2094{
2095 struct perf_pmu *pmu = NULL;
2096
2097 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
2098 if (pmu->type == evsel->attr.type)
2099 break;
2100 }
2101
2102 return pmu;
2103}
2104
2105static int perf_evsel__nr_addr_filter(struct perf_evsel *evsel)
2106{
2107 struct perf_pmu *pmu = perf_evsel__find_pmu(evsel);
2108 int nr_addr_filters = 0;
2109
2110 if (!pmu)
2111 return 0;
2112
2113 perf_pmu__scan_file(pmu, "nr_addr_filters", "%d", &nr_addr_filters);
2114
2115 return nr_addr_filters;
2116}
2117
2118int auxtrace_parse_filters(struct perf_evlist *evlist)
2119{
2120 struct perf_evsel *evsel;
2121 char *filter;
2122 int err, max_nr;
2123
2124 evlist__for_each_entry(evlist, evsel) {
2125 filter = evsel->filter;
2126 max_nr = perf_evsel__nr_addr_filter(evsel);
2127 if (!filter || !max_nr)
2128 continue;
2129 evsel->filter = NULL;
2130 err = parse_addr_filter(evsel, filter, max_nr);
2131 free(filter);
2132 if (err)
2133 return err;
2134 pr_debug("Address filter: %s\n", evsel->filter);
2135 }
2136
2137 return 0;
2138}
diff --git a/tools/perf/util/auxtrace.h b/tools/perf/util/auxtrace.h
index ac5f0d7167e6..26fb1ee5746a 100644
--- a/tools/perf/util/auxtrace.h
+++ b/tools/perf/util/auxtrace.h
@@ -41,6 +41,7 @@ enum auxtrace_type {
41 PERF_AUXTRACE_UNKNOWN, 41 PERF_AUXTRACE_UNKNOWN,
42 PERF_AUXTRACE_INTEL_PT, 42 PERF_AUXTRACE_INTEL_PT,
43 PERF_AUXTRACE_INTEL_BTS, 43 PERF_AUXTRACE_INTEL_BTS,
44 PERF_AUXTRACE_CS_ETM,
44}; 45};
45 46
46enum itrace_period_type { 47enum itrace_period_type {
@@ -317,6 +318,48 @@ struct auxtrace_record {
317 unsigned int alignment; 318 unsigned int alignment;
318}; 319};
319 320
321/**
322 * struct addr_filter - address filter.
323 * @list: list node
324 * @range: true if it is a range filter
325 * @start: true if action is 'filter' or 'start'
326 * @action: 'filter', 'start' or 'stop' ('tracestop' is accepted but converted
327 * to 'stop')
328 * @sym_from: symbol name for the filter address
329 * @sym_to: symbol name that determines the filter size
330 * @sym_from_idx: selects n'th from symbols with the same name (0 means global
331 * and less than 0 means symbol must be unique)
332 * @sym_to_idx: same as @sym_from_idx but for @sym_to
333 * @addr: filter address
334 * @size: filter region size (for range filters)
335 * @filename: DSO file name or NULL for the kernel
336 * @str: allocated string that contains the other string members
337 */
338struct addr_filter {
339 struct list_head list;
340 bool range;
341 bool start;
342 const char *action;
343 const char *sym_from;
344 const char *sym_to;
345 int sym_from_idx;
346 int sym_to_idx;
347 u64 addr;
348 u64 size;
349 const char *filename;
350 char *str;
351};
352
353/**
354 * struct addr_filters - list of address filters.
355 * @head: list of address filters
356 * @cnt: number of address filters
357 */
358struct addr_filters {
359 struct list_head head;
360 int cnt;
361};
362
320#ifdef HAVE_AUXTRACE_SUPPORT 363#ifdef HAVE_AUXTRACE_SUPPORT
321 364
322/* 365/*
@@ -481,6 +524,12 @@ void perf_session__auxtrace_error_inc(struct perf_session *session,
481 union perf_event *event); 524 union perf_event *event);
482void events_stats__auxtrace_error_warn(const struct events_stats *stats); 525void events_stats__auxtrace_error_warn(const struct events_stats *stats);
483 526
527void addr_filters__init(struct addr_filters *filts);
528void addr_filters__exit(struct addr_filters *filts);
529int addr_filters__parse_bare_filter(struct addr_filters *filts,
530 const char *filter);
531int auxtrace_parse_filters(struct perf_evlist *evlist);
532
484static inline int auxtrace__process_event(struct perf_session *session, 533static inline int auxtrace__process_event(struct perf_session *session,
485 union perf_event *event, 534 union perf_event *event,
486 struct perf_sample *sample, 535 struct perf_sample *sample,
@@ -639,6 +688,12 @@ void auxtrace_index__free(struct list_head *head __maybe_unused)
639{ 688{
640} 689}
641 690
691static inline
692int auxtrace_parse_filters(struct perf_evlist *evlist __maybe_unused)
693{
694 return 0;
695}
696
642int auxtrace_mmap__mmap(struct auxtrace_mmap *mm, 697int auxtrace_mmap__mmap(struct auxtrace_mmap *mm,
643 struct auxtrace_mmap_params *mp, 698 struct auxtrace_mmap_params *mp,
644 void *userpg, int fd); 699 void *userpg, int fd);
diff --git a/tools/perf/util/block-range.c b/tools/perf/util/block-range.c
new file mode 100644
index 000000000000..7b3e1d75d803
--- /dev/null
+++ b/tools/perf/util/block-range.c
@@ -0,0 +1,328 @@
1#include "block-range.h"
2#include "annotate.h"
3
4struct {
5 struct rb_root root;
6 u64 blocks;
7} block_ranges;
8
9static void block_range__debug(void)
10{
11 /*
12 * XXX still paranoid for now; see if we can make this depend on
13 * DEBUG=1 builds.
14 */
15#if 1
16 struct rb_node *rb;
17 u64 old = 0; /* NULL isn't executable */
18
19 for (rb = rb_first(&block_ranges.root); rb; rb = rb_next(rb)) {
20 struct block_range *entry = rb_entry(rb, struct block_range, node);
21
22 assert(old < entry->start);
23 assert(entry->start <= entry->end); /* single instruction block; jump to a jump */
24
25 old = entry->end;
26 }
27#endif
28}
29
30struct block_range *block_range__find(u64 addr)
31{
32 struct rb_node **p = &block_ranges.root.rb_node;
33 struct rb_node *parent = NULL;
34 struct block_range *entry;
35
36 while (*p != NULL) {
37 parent = *p;
38 entry = rb_entry(parent, struct block_range, node);
39
40 if (addr < entry->start)
41 p = &parent->rb_left;
42 else if (addr > entry->end)
43 p = &parent->rb_right;
44 else
45 return entry;
46 }
47
48 return NULL;
49}
50
51static inline void rb_link_left_of_node(struct rb_node *left, struct rb_node *node)
52{
53 struct rb_node **p = &node->rb_left;
54 while (*p) {
55 node = *p;
56 p = &node->rb_right;
57 }
58 rb_link_node(left, node, p);
59}
60
61static inline void rb_link_right_of_node(struct rb_node *right, struct rb_node *node)
62{
63 struct rb_node **p = &node->rb_right;
64 while (*p) {
65 node = *p;
66 p = &node->rb_left;
67 }
68 rb_link_node(right, node, p);
69}
70
71/**
72 * block_range__create
73 * @start: branch target starting this basic block
74 * @end: branch ending this basic block
75 *
76 * Create all the required block ranges to precisely span the given range.
77 */
78struct block_range_iter block_range__create(u64 start, u64 end)
79{
80 struct rb_node **p = &block_ranges.root.rb_node;
81 struct rb_node *n, *parent = NULL;
82 struct block_range *next, *entry = NULL;
83 struct block_range_iter iter = { NULL, NULL };
84
85 while (*p != NULL) {
86 parent = *p;
87 entry = rb_entry(parent, struct block_range, node);
88
89 if (start < entry->start)
90 p = &parent->rb_left;
91 else if (start > entry->end)
92 p = &parent->rb_right;
93 else
94 break;
95 }
96
97 /*
98 * Didn't find anything.. there's a hole at @start, however @end might
99 * be inside/behind the next range.
100 */
101 if (!*p) {
102 if (!entry) /* tree empty */
103 goto do_whole;
104
105 /*
106 * If the last node is before, advance one to find the next.
107 */
108 n = parent;
109 if (entry->end < start) {
110 n = rb_next(n);
111 if (!n)
112 goto do_whole;
113 }
114 next = rb_entry(n, struct block_range, node);
115
116 if (next->start <= end) { /* add head: [start...][n->start...] */
117 struct block_range *head = malloc(sizeof(struct block_range));
118 if (!head)
119 return iter;
120
121 *head = (struct block_range){
122 .start = start,
123 .end = next->start - 1,
124 .is_target = 1,
125 .is_branch = 0,
126 };
127
128 rb_link_left_of_node(&head->node, &next->node);
129 rb_insert_color(&head->node, &block_ranges.root);
130 block_range__debug();
131
132 iter.start = head;
133 goto do_tail;
134 }
135
136do_whole:
137 /*
138 * The whole [start..end] range is non-overlapping.
139 */
140 entry = malloc(sizeof(struct block_range));
141 if (!entry)
142 return iter;
143
144 *entry = (struct block_range){
145 .start = start,
146 .end = end,
147 .is_target = 1,
148 .is_branch = 1,
149 };
150
151 rb_link_node(&entry->node, parent, p);
152 rb_insert_color(&entry->node, &block_ranges.root);
153 block_range__debug();
154
155 iter.start = entry;
156 iter.end = entry;
157 goto done;
158 }
159
160 /*
161 * We found a range that overlapped with ours, split if needed.
162 */
163 if (entry->start < start) { /* split: [e->start...][start...] */
164 struct block_range *head = malloc(sizeof(struct block_range));
165 if (!head)
166 return iter;
167
168 *head = (struct block_range){
169 .start = entry->start,
170 .end = start - 1,
171 .is_target = entry->is_target,
172 .is_branch = 0,
173
174 .coverage = entry->coverage,
175 .entry = entry->entry,
176 };
177
178 entry->start = start;
179 entry->is_target = 1;
180 entry->entry = 0;
181
182 rb_link_left_of_node(&head->node, &entry->node);
183 rb_insert_color(&head->node, &block_ranges.root);
184 block_range__debug();
185
186 } else if (entry->start == start)
187 entry->is_target = 1;
188
189 iter.start = entry;
190
191do_tail:
192 /*
193 * At this point we've got: @iter.start = [@start...] but @end can still be
194 * inside or beyond it.
195 */
196 entry = iter.start;
197 for (;;) {
198 /*
199 * If @end is inside @entry, split.
200 */
201 if (end < entry->end) { /* split: [...end][...e->end] */
202 struct block_range *tail = malloc(sizeof(struct block_range));
203 if (!tail)
204 return iter;
205
206 *tail = (struct block_range){
207 .start = end + 1,
208 .end = entry->end,
209 .is_target = 0,
210 .is_branch = entry->is_branch,
211
212 .coverage = entry->coverage,
213 .taken = entry->taken,
214 .pred = entry->pred,
215 };
216
217 entry->end = end;
218 entry->is_branch = 1;
219 entry->taken = 0;
220 entry->pred = 0;
221
222 rb_link_right_of_node(&tail->node, &entry->node);
223 rb_insert_color(&tail->node, &block_ranges.root);
224 block_range__debug();
225
226 iter.end = entry;
227 goto done;
228 }
229
230 /*
231 * If @end matches @entry, done
232 */
233 if (end == entry->end) {
234 entry->is_branch = 1;
235 iter.end = entry;
236 goto done;
237 }
238
239 next = block_range__next(entry);
240 if (!next)
241 goto add_tail;
242
243 /*
244 * If @end is in beyond @entry but not inside @next, add tail.
245 */
246 if (end < next->start) { /* add tail: [...e->end][...end] */
247 struct block_range *tail;
248add_tail:
249 tail = malloc(sizeof(struct block_range));
250 if (!tail)
251 return iter;
252
253 *tail = (struct block_range){
254 .start = entry->end + 1,
255 .end = end,
256 .is_target = 0,
257 .is_branch = 1,
258 };
259
260 rb_link_right_of_node(&tail->node, &entry->node);
261 rb_insert_color(&tail->node, &block_ranges.root);
262 block_range__debug();
263
264 iter.end = tail;
265 goto done;
266 }
267
268 /*
269 * If there is a hole between @entry and @next, fill it.
270 */
271 if (entry->end + 1 != next->start) {
272 struct block_range *hole = malloc(sizeof(struct block_range));
273 if (!hole)
274 return iter;
275
276 *hole = (struct block_range){
277 .start = entry->end + 1,
278 .end = next->start - 1,
279 .is_target = 0,
280 .is_branch = 0,
281 };
282
283 rb_link_left_of_node(&hole->node, &next->node);
284 rb_insert_color(&hole->node, &block_ranges.root);
285 block_range__debug();
286 }
287
288 entry = next;
289 }
290
291done:
292 assert(iter.start->start == start && iter.start->is_target);
293 assert(iter.end->end == end && iter.end->is_branch);
294
295 block_ranges.blocks++;
296
297 return iter;
298}
299
300
301/*
302 * Compute coverage as:
303 *
304 * br->coverage / br->sym->max_coverage
305 *
306 * This ensures each symbol has a 100% spot, to reflect that each symbol has a
307 * most covered section.
308 *
309 * Returns [0-1] for coverage and -1 if we had no data what so ever or the
310 * symbol does not exist.
311 */
312double block_range__coverage(struct block_range *br)
313{
314 struct symbol *sym;
315
316 if (!br) {
317 if (block_ranges.blocks)
318 return 0;
319
320 return -1;
321 }
322
323 sym = br->sym;
324 if (!sym)
325 return -1;
326
327 return (double)br->coverage / symbol__annotation(sym)->max_coverage;
328}
diff --git a/tools/perf/util/block-range.h b/tools/perf/util/block-range.h
new file mode 100644
index 000000000000..a8c841381131
--- /dev/null
+++ b/tools/perf/util/block-range.h
@@ -0,0 +1,71 @@
1#ifndef __PERF_BLOCK_RANGE_H
2#define __PERF_BLOCK_RANGE_H
3
4#include "symbol.h"
5
6/*
7 * struct block_range - non-overlapping parts of basic blocks
8 * @node: treenode
9 * @start: inclusive start of range
10 * @end: inclusive end of range
11 * @is_target: @start is a jump target
12 * @is_branch: @end is a branch instruction
13 * @coverage: number of blocks that cover this range
14 * @taken: number of times the branch is taken (requires @is_branch)
15 * @pred: number of times the taken branch was predicted
16 */
17struct block_range {
18 struct rb_node node;
19
20 struct symbol *sym;
21
22 u64 start;
23 u64 end;
24
25 int is_target, is_branch;
26
27 u64 coverage;
28 u64 entry;
29 u64 taken;
30 u64 pred;
31};
32
33static inline struct block_range *block_range__next(struct block_range *br)
34{
35 struct rb_node *n = rb_next(&br->node);
36 if (!n)
37 return NULL;
38 return rb_entry(n, struct block_range, node);
39}
40
41struct block_range_iter {
42 struct block_range *start;
43 struct block_range *end;
44};
45
46static inline struct block_range *block_range_iter(struct block_range_iter *iter)
47{
48 return iter->start;
49}
50
51static inline bool block_range_iter__next(struct block_range_iter *iter)
52{
53 if (iter->start == iter->end)
54 return false;
55
56 iter->start = block_range__next(iter->start);
57 return true;
58}
59
60static inline bool block_range_iter__valid(struct block_range_iter *iter)
61{
62 if (!iter->start || !iter->end)
63 return false;
64 return true;
65}
66
67extern struct block_range *block_range__find(u64 addr);
68extern struct block_range_iter block_range__create(u64 start, u64 end);
69extern double block_range__coverage(struct block_range *br);
70
71#endif /* __PERF_BLOCK_RANGE_H */
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 1f12e4e40006..36c861103291 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -14,11 +14,11 @@
14#include "debug.h" 14#include "debug.h"
15#include "bpf-loader.h" 15#include "bpf-loader.h"
16#include "bpf-prologue.h" 16#include "bpf-prologue.h"
17#include "llvm-utils.h"
18#include "probe-event.h" 17#include "probe-event.h"
19#include "probe-finder.h" // for MAX_PROBES 18#include "probe-finder.h" // for MAX_PROBES
20#include "parse-events.h" 19#include "parse-events.h"
21#include "llvm-utils.h" 20#include "llvm-utils.h"
21#include "c++/clang-c.h"
22 22
23#define DEFINE_PRINT_FN(name, level) \ 23#define DEFINE_PRINT_FN(name, level) \
24static int libbpf_##name(const char *fmt, ...) \ 24static int libbpf_##name(const char *fmt, ...) \
@@ -86,10 +86,21 @@ struct bpf_object *bpf__prepare_load(const char *filename, bool source)
86 void *obj_buf; 86 void *obj_buf;
87 size_t obj_buf_sz; 87 size_t obj_buf_sz;
88 88
89 err = llvm__compile_bpf(filename, &obj_buf, &obj_buf_sz); 89 perf_clang__init();
90 if (err) 90 err = perf_clang__compile_bpf(filename, &obj_buf, &obj_buf_sz);
91 return ERR_PTR(-BPF_LOADER_ERRNO__COMPILE); 91 perf_clang__cleanup();
92 if (err) {
93 pr_warning("bpf: builtin compilation failed: %d, try external compiler\n", err);
94 err = llvm__compile_bpf(filename, &obj_buf, &obj_buf_sz);
95 if (err)
96 return ERR_PTR(-BPF_LOADER_ERRNO__COMPILE);
97 } else
98 pr_debug("bpf: successfull builtin compilation\n");
92 obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, filename); 99 obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, filename);
100
101 if (!IS_ERR(obj) && llvm_param.dump_obj)
102 llvm__dump_obj(filename, obj_buf, obj_buf_sz);
103
93 free(obj_buf); 104 free(obj_buf);
94 } else 105 } else
95 obj = bpf_object__open(filename); 106 obj = bpf_object__open(filename);
@@ -241,7 +252,7 @@ parse_prog_config_kvpair(const char *config_str, struct perf_probe_event *pev)
241 int err = 0; 252 int err = 0;
242 253
243 if (!text) { 254 if (!text) {
244 pr_debug("No enough memory: dup config_str failed\n"); 255 pr_debug("Not enough memory: dup config_str failed\n");
245 return ERR_PTR(-ENOMEM); 256 return ERR_PTR(-ENOMEM);
246 } 257 }
247 258
@@ -531,7 +542,7 @@ static int map_prologue(struct perf_probe_event *pev, int *mapping,
531 542
532 ptevs = malloc(array_sz); 543 ptevs = malloc(array_sz);
533 if (!ptevs) { 544 if (!ptevs) {
534 pr_debug("No ehough memory: alloc ptevs failed\n"); 545 pr_debug("Not enough memory: alloc ptevs failed\n");
535 return -ENOMEM; 546 return -ENOMEM;
536 } 547 }
537 548
@@ -604,13 +615,13 @@ static int hook_load_preprocessor(struct bpf_program *prog)
604 priv->need_prologue = true; 615 priv->need_prologue = true;
605 priv->insns_buf = malloc(sizeof(struct bpf_insn) * BPF_MAXINSNS); 616 priv->insns_buf = malloc(sizeof(struct bpf_insn) * BPF_MAXINSNS);
606 if (!priv->insns_buf) { 617 if (!priv->insns_buf) {
607 pr_debug("No enough memory: alloc insns_buf failed\n"); 618 pr_debug("Not enough memory: alloc insns_buf failed\n");
608 return -ENOMEM; 619 return -ENOMEM;
609 } 620 }
610 621
611 priv->type_mapping = malloc(sizeof(int) * pev->ntevs); 622 priv->type_mapping = malloc(sizeof(int) * pev->ntevs);
612 if (!priv->type_mapping) { 623 if (!priv->type_mapping) {
613 pr_debug("No enough memory: alloc type_mapping failed\n"); 624 pr_debug("Not enough memory: alloc type_mapping failed\n");
614 return -ENOMEM; 625 return -ENOMEM;
615 } 626 }
616 memset(priv->type_mapping, -1, 627 memset(priv->type_mapping, -1,
@@ -864,7 +875,7 @@ bpf_map_op_setkey(struct bpf_map_op *op, struct parse_events_term *term)
864 875
865 op->k.array.ranges = memdup(term->array.ranges, memsz); 876 op->k.array.ranges = memdup(term->array.ranges, memsz);
866 if (!op->k.array.ranges) { 877 if (!op->k.array.ranges) {
867 pr_debug("No enough memory to alloc indices for map\n"); 878 pr_debug("Not enough memory to alloc indices for map\n");
868 return -ENOMEM; 879 return -ENOMEM;
869 } 880 }
870 op->key_type = BPF_MAP_KEY_RANGES; 881 op->key_type = BPF_MAP_KEY_RANGES;
@@ -929,7 +940,7 @@ bpf_map_priv__clone(struct bpf_map_priv *priv)
929 940
930 newpriv = zalloc(sizeof(*newpriv)); 941 newpriv = zalloc(sizeof(*newpriv));
931 if (!newpriv) { 942 if (!newpriv) {
932 pr_debug("No enough memory to alloc map private\n"); 943 pr_debug("Not enough memory to alloc map private\n");
933 return NULL; 944 return NULL;
934 } 945 }
935 INIT_LIST_HEAD(&newpriv->ops_list); 946 INIT_LIST_HEAD(&newpriv->ops_list);
@@ -960,7 +971,7 @@ bpf_map__add_op(struct bpf_map *map, struct bpf_map_op *op)
960 if (!priv) { 971 if (!priv) {
961 priv = zalloc(sizeof(*priv)); 972 priv = zalloc(sizeof(*priv));
962 if (!priv) { 973 if (!priv) {
963 pr_debug("No enough memory to alloc map private\n"); 974 pr_debug("Not enough memory to alloc map private\n");
964 return -ENOMEM; 975 return -ENOMEM;
965 } 976 }
966 INIT_LIST_HEAD(&priv->ops_list); 977 INIT_LIST_HEAD(&priv->ops_list);
diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
index 5651f3c12f93..e528c40739cc 100644
--- a/tools/perf/util/build-id.c
+++ b/tools/perf/util/build-id.c
@@ -620,7 +620,7 @@ static int build_id_cache__add_sdt_cache(const char *sbuild_id,
620 620
621 ret = probe_cache__scan_sdt(cache, realname); 621 ret = probe_cache__scan_sdt(cache, realname);
622 if (ret >= 0) { 622 if (ret >= 0) {
623 pr_debug("Found %d SDTs in %s\n", ret, realname); 623 pr_debug4("Found %d SDTs in %s\n", ret, realname);
624 if (probe_cache__commit(cache) < 0) 624 if (probe_cache__commit(cache) < 0)
625 ret = -1; 625 ret = -1;
626 } 626 }
@@ -691,7 +691,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *name,
691 691
692 /* Update SDT cache : error is just warned */ 692 /* Update SDT cache : error is just warned */
693 if (build_id_cache__add_sdt_cache(sbuild_id, realname) < 0) 693 if (build_id_cache__add_sdt_cache(sbuild_id, realname) < 0)
694 pr_debug("Failed to update/scan SDT cache for %s\n", realname); 694 pr_debug4("Failed to update/scan SDT cache for %s\n", realname);
695 695
696out_free: 696out_free:
697 if (!is_kallsyms) 697 if (!is_kallsyms)
diff --git a/tools/perf/util/c++/Build b/tools/perf/util/c++/Build
new file mode 100644
index 000000000000..988fef1b11d7
--- /dev/null
+++ b/tools/perf/util/c++/Build
@@ -0,0 +1,2 @@
1libperf-$(CONFIG_CLANGLLVM) += clang.o
2libperf-$(CONFIG_CLANGLLVM) += clang-test.o
diff --git a/tools/perf/util/c++/clang-c.h b/tools/perf/util/c++/clang-c.h
new file mode 100644
index 000000000000..0eadd792ab1f
--- /dev/null
+++ b/tools/perf/util/c++/clang-c.h
@@ -0,0 +1,43 @@
1#ifndef PERF_UTIL_CLANG_C_H
2#define PERF_UTIL_CLANG_C_H
3
4#include <stddef.h> /* for size_t */
5#include <util-cxx.h> /* for __maybe_unused */
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11#ifdef HAVE_LIBCLANGLLVM_SUPPORT
12extern void perf_clang__init(void);
13extern void perf_clang__cleanup(void);
14
15extern int test__clang_to_IR(void);
16extern int test__clang_to_obj(void);
17
18extern int perf_clang__compile_bpf(const char *filename,
19 void **p_obj_buf,
20 size_t *p_obj_buf_sz);
21#else
22
23
24static inline void perf_clang__init(void) { }
25static inline void perf_clang__cleanup(void) { }
26
27static inline int test__clang_to_IR(void) { return -1; }
28static inline int test__clang_to_obj(void) { return -1;}
29
30static inline int
31perf_clang__compile_bpf(const char *filename __maybe_unused,
32 void **p_obj_buf __maybe_unused,
33 size_t *p_obj_buf_sz __maybe_unused)
34{
35 return -ENOTSUP;
36}
37
38#endif
39
40#ifdef __cplusplus
41}
42#endif
43#endif
diff --git a/tools/perf/util/c++/clang-test.cpp b/tools/perf/util/c++/clang-test.cpp
new file mode 100644
index 000000000000..9b11e8c82798
--- /dev/null
+++ b/tools/perf/util/c++/clang-test.cpp
@@ -0,0 +1,62 @@
1#include "clang.h"
2#include "clang-c.h"
3#include "llvm/IR/Function.h"
4#include "llvm/IR/LLVMContext.h"
5
6#include <util-cxx.h>
7#include <tests/llvm.h>
8#include <string>
9
10class perf_clang_scope {
11public:
12 explicit perf_clang_scope() {perf_clang__init();}
13 ~perf_clang_scope() {perf_clang__cleanup();}
14};
15
16static std::unique_ptr<llvm::Module>
17__test__clang_to_IR(void)
18{
19 unsigned int kernel_version;
20
21 if (fetch_kernel_version(&kernel_version, NULL, 0))
22 return std::unique_ptr<llvm::Module>(nullptr);
23
24 std::string cflag_kver("-DLINUX_VERSION_CODE=" +
25 std::to_string(kernel_version));
26
27 std::unique_ptr<llvm::Module> M =
28 perf::getModuleFromSource({cflag_kver.c_str()},
29 "perf-test.c",
30 test_llvm__bpf_base_prog);
31 return M;
32}
33
34extern "C" {
35int test__clang_to_IR(void)
36{
37 perf_clang_scope _scope;
38
39 auto M = __test__clang_to_IR();
40 if (!M)
41 return -1;
42 for (llvm::Function& F : *M)
43 if (F.getName() == "bpf_func__SyS_epoll_wait")
44 return 0;
45 return -1;
46}
47
48int test__clang_to_obj(void)
49{
50 perf_clang_scope _scope;
51
52 auto M = __test__clang_to_IR();
53 if (!M)
54 return -1;
55
56 auto Buffer = perf::getBPFObjectFromModule(&*M);
57 if (!Buffer)
58 return -1;
59 return 0;
60}
61
62}
diff --git a/tools/perf/util/c++/clang.cpp b/tools/perf/util/c++/clang.cpp
new file mode 100644
index 000000000000..1e974152cac2
--- /dev/null
+++ b/tools/perf/util/c++/clang.cpp
@@ -0,0 +1,195 @@
1/*
2 * llvm C frontend for perf. Support dynamically compile C file
3 *
4 * Inspired by clang example code:
5 * http://llvm.org/svn/llvm-project/cfe/trunk/examples/clang-interpreter/main.cpp
6 *
7 * Copyright (C) 2016 Wang Nan <wangnan0@huawei.com>
8 * Copyright (C) 2016 Huawei Inc.
9 */
10
11#include "clang/CodeGen/CodeGenAction.h"
12#include "clang/Frontend/CompilerInvocation.h"
13#include "clang/Frontend/CompilerInstance.h"
14#include "clang/Frontend/TextDiagnosticPrinter.h"
15#include "clang/Tooling/Tooling.h"
16#include "llvm/IR/LegacyPassManager.h"
17#include "llvm/IR/Module.h"
18#include "llvm/Option/Option.h"
19#include "llvm/Support/FileSystem.h"
20#include "llvm/Support/ManagedStatic.h"
21#include "llvm/Support/TargetRegistry.h"
22#include "llvm/Support/TargetSelect.h"
23#include "llvm/Target/TargetMachine.h"
24#include "llvm/Target/TargetOptions.h"
25#include <memory>
26
27#include "clang.h"
28#include "clang-c.h"
29
30namespace perf {
31
32static std::unique_ptr<llvm::LLVMContext> LLVMCtx;
33
34using namespace clang;
35
36static CompilerInvocation *
37createCompilerInvocation(llvm::opt::ArgStringList CFlags, StringRef& Path,
38 DiagnosticsEngine& Diags)
39{
40 llvm::opt::ArgStringList CCArgs {
41 "-cc1",
42 "-triple", "bpf-pc-linux",
43 "-fsyntax-only",
44 "-ferror-limit", "19",
45 "-fmessage-length", "127",
46 "-O2",
47 "-nostdsysteminc",
48 "-nobuiltininc",
49 "-vectorize-loops",
50 "-vectorize-slp",
51 "-Wno-unused-value",
52 "-Wno-pointer-sign",
53 "-x", "c"};
54
55 CCArgs.append(CFlags.begin(), CFlags.end());
56 CompilerInvocation *CI = tooling::newInvocation(&Diags, CCArgs);
57
58 FrontendOptions& Opts = CI->getFrontendOpts();
59 Opts.Inputs.clear();
60 Opts.Inputs.emplace_back(Path, IK_C);
61 return CI;
62}
63
64static std::unique_ptr<llvm::Module>
65getModuleFromSource(llvm::opt::ArgStringList CFlags,
66 StringRef Path, IntrusiveRefCntPtr<vfs::FileSystem> VFS)
67{
68 CompilerInstance Clang;
69 Clang.createDiagnostics();
70
71 Clang.setVirtualFileSystem(&*VFS);
72
73 IntrusiveRefCntPtr<CompilerInvocation> CI =
74 createCompilerInvocation(std::move(CFlags), Path,
75 Clang.getDiagnostics());
76 Clang.setInvocation(&*CI);
77
78 std::unique_ptr<CodeGenAction> Act(new EmitLLVMOnlyAction(&*LLVMCtx));
79 if (!Clang.ExecuteAction(*Act))
80 return std::unique_ptr<llvm::Module>(nullptr);
81
82 return Act->takeModule();
83}
84
85std::unique_ptr<llvm::Module>
86getModuleFromSource(llvm::opt::ArgStringList CFlags,
87 StringRef Name, StringRef Content)
88{
89 using namespace vfs;
90
91 llvm::IntrusiveRefCntPtr<OverlayFileSystem> OverlayFS(
92 new OverlayFileSystem(getRealFileSystem()));
93 llvm::IntrusiveRefCntPtr<InMemoryFileSystem> MemFS(
94 new InMemoryFileSystem(true));
95
96 /*
97 * pushOverlay helps setting working dir for MemFS. Must call
98 * before addFile.
99 */
100 OverlayFS->pushOverlay(MemFS);
101 MemFS->addFile(Twine(Name), 0, llvm::MemoryBuffer::getMemBuffer(Content));
102
103 return getModuleFromSource(std::move(CFlags), Name, OverlayFS);
104}
105
106std::unique_ptr<llvm::Module>
107getModuleFromSource(llvm::opt::ArgStringList CFlags, StringRef Path)
108{
109 IntrusiveRefCntPtr<vfs::FileSystem> VFS(vfs::getRealFileSystem());
110 return getModuleFromSource(std::move(CFlags), Path, VFS);
111}
112
113std::unique_ptr<llvm::SmallVectorImpl<char>>
114getBPFObjectFromModule(llvm::Module *Module)
115{
116 using namespace llvm;
117
118 std::string TargetTriple("bpf-pc-linux");
119 std::string Error;
120 const Target* Target = TargetRegistry::lookupTarget(TargetTriple, Error);
121 if (!Target) {
122 llvm::errs() << Error;
123 return std::unique_ptr<llvm::SmallVectorImpl<char>>(nullptr);
124 }
125
126 llvm::TargetOptions Opt;
127 TargetMachine *TargetMachine =
128 Target->createTargetMachine(TargetTriple,
129 "generic", "",
130 Opt, Reloc::Static);
131
132 Module->setDataLayout(TargetMachine->createDataLayout());
133 Module->setTargetTriple(TargetTriple);
134
135 std::unique_ptr<SmallVectorImpl<char>> Buffer(new SmallVector<char, 0>());
136 raw_svector_ostream ostream(*Buffer);
137
138 legacy::PassManager PM;
139 if (TargetMachine->addPassesToEmitFile(PM, ostream,
140 TargetMachine::CGFT_ObjectFile)) {
141 llvm::errs() << "TargetMachine can't emit a file of this type\n";
142 return std::unique_ptr<llvm::SmallVectorImpl<char>>(nullptr);;
143 }
144 PM.run(*Module);
145
146 return std::move(Buffer);
147}
148
149}
150
151extern "C" {
152void perf_clang__init(void)
153{
154 perf::LLVMCtx.reset(new llvm::LLVMContext());
155 LLVMInitializeBPFTargetInfo();
156 LLVMInitializeBPFTarget();
157 LLVMInitializeBPFTargetMC();
158 LLVMInitializeBPFAsmPrinter();
159}
160
161void perf_clang__cleanup(void)
162{
163 perf::LLVMCtx.reset(nullptr);
164 llvm::llvm_shutdown();
165}
166
167int perf_clang__compile_bpf(const char *filename,
168 void **p_obj_buf,
169 size_t *p_obj_buf_sz)
170{
171 using namespace perf;
172
173 if (!p_obj_buf || !p_obj_buf_sz)
174 return -EINVAL;
175
176 llvm::opt::ArgStringList CFlags;
177 auto M = getModuleFromSource(std::move(CFlags), filename);
178 if (!M)
179 return -EINVAL;
180 auto O = getBPFObjectFromModule(&*M);
181 if (!O)
182 return -EINVAL;
183
184 size_t size = O->size_in_bytes();
185 void *buffer;
186
187 buffer = malloc(size);
188 if (!buffer)
189 return -ENOMEM;
190 memcpy(buffer, O->data(), size);
191 *p_obj_buf = buffer;
192 *p_obj_buf_sz = size;
193 return 0;
194}
195}
diff --git a/tools/perf/util/c++/clang.h b/tools/perf/util/c++/clang.h
new file mode 100644
index 000000000000..dd8b0427550d
--- /dev/null
+++ b/tools/perf/util/c++/clang.h
@@ -0,0 +1,26 @@
1#ifndef PERF_UTIL_CLANG_H
2#define PERF_UTIL_CLANG_H
3
4#include "llvm/ADT/StringRef.h"
5#include "llvm/IR/LLVMContext.h"
6#include "llvm/IR/Module.h"
7#include "llvm/Option/Option.h"
8#include <memory>
9
10namespace perf {
11
12using namespace llvm;
13
14std::unique_ptr<Module>
15getModuleFromSource(opt::ArgStringList CFlags,
16 StringRef Name, StringRef Content);
17
18std::unique_ptr<Module>
19getModuleFromSource(opt::ArgStringList CFlags,
20 StringRef Path);
21
22std::unique_ptr<llvm::SmallVectorImpl<char>>
23getBPFObjectFromModule(llvm::Module *Module);
24
25}
26#endif
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
index 07fd30bc2f81..42922512c1c6 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -193,7 +193,6 @@ int perf_callchain_config(const char *var, const char *value)
193 193
194 if (!strcmp(var, "record-mode")) 194 if (!strcmp(var, "record-mode"))
195 return parse_callchain_record_opt(value, &callchain_param); 195 return parse_callchain_record_opt(value, &callchain_param);
196#ifdef HAVE_DWARF_UNWIND_SUPPORT
197 if (!strcmp(var, "dump-size")) { 196 if (!strcmp(var, "dump-size")) {
198 unsigned long size = 0; 197 unsigned long size = 0;
199 int ret; 198 int ret;
@@ -203,7 +202,6 @@ int perf_callchain_config(const char *var, const char *value)
203 202
204 return ret; 203 return ret;
205 } 204 }
206#endif
207 if (!strcmp(var, "print-type")) 205 if (!strcmp(var, "print-type"))
208 return parse_callchain_mode(value); 206 return parse_callchain_mode(value);
209 if (!strcmp(var, "order")) 207 if (!strcmp(var, "order"))
@@ -440,6 +438,21 @@ fill_node(struct callchain_node *node, struct callchain_cursor *cursor)
440 call->ip = cursor_node->ip; 438 call->ip = cursor_node->ip;
441 call->ms.sym = cursor_node->sym; 439 call->ms.sym = cursor_node->sym;
442 call->ms.map = cursor_node->map; 440 call->ms.map = cursor_node->map;
441
442 if (cursor_node->branch) {
443 call->branch_count = 1;
444
445 if (cursor_node->branch_flags.predicted)
446 call->predicted_count = 1;
447
448 if (cursor_node->branch_flags.abort)
449 call->abort_count = 1;
450
451 call->cycles_count = cursor_node->branch_flags.cycles;
452 call->iter_count = cursor_node->nr_loop_iter;
453 call->samples_count = cursor_node->samples;
454 }
455
443 list_add_tail(&call->list, &node->val); 456 list_add_tail(&call->list, &node->val);
444 457
445 callchain_cursor_advance(cursor); 458 callchain_cursor_advance(cursor);
@@ -499,8 +512,23 @@ static enum match_result match_chain(struct callchain_cursor_node *node,
499 right = node->ip; 512 right = node->ip;
500 } 513 }
501 514
502 if (left == right) 515 if (left == right) {
516 if (node->branch) {
517 cnode->branch_count++;
518
519 if (node->branch_flags.predicted)
520 cnode->predicted_count++;
521
522 if (node->branch_flags.abort)
523 cnode->abort_count++;
524
525 cnode->cycles_count += node->branch_flags.cycles;
526 cnode->iter_count += node->nr_loop_iter;
527 cnode->samples_count += node->samples;
528 }
529
503 return MATCH_EQ; 530 return MATCH_EQ;
531 }
504 532
505 return left > right ? MATCH_GT : MATCH_LT; 533 return left > right ? MATCH_GT : MATCH_LT;
506} 534}
@@ -730,7 +758,8 @@ merge_chain_branch(struct callchain_cursor *cursor,
730 758
731 list_for_each_entry_safe(list, next_list, &src->val, list) { 759 list_for_each_entry_safe(list, next_list, &src->val, list) {
732 callchain_cursor_append(cursor, list->ip, 760 callchain_cursor_append(cursor, list->ip,
733 list->ms.map, list->ms.sym); 761 list->ms.map, list->ms.sym,
762 false, NULL, 0, 0);
734 list_del(&list->list); 763 list_del(&list->list);
735 free(list); 764 free(list);
736 } 765 }
@@ -767,7 +796,9 @@ int callchain_merge(struct callchain_cursor *cursor,
767} 796}
768 797
769int callchain_cursor_append(struct callchain_cursor *cursor, 798int callchain_cursor_append(struct callchain_cursor *cursor,
770 u64 ip, struct map *map, struct symbol *sym) 799 u64 ip, struct map *map, struct symbol *sym,
800 bool branch, struct branch_flags *flags,
801 int nr_loop_iter, int samples)
771{ 802{
772 struct callchain_cursor_node *node = *cursor->last; 803 struct callchain_cursor_node *node = *cursor->last;
773 804
@@ -782,6 +813,13 @@ int callchain_cursor_append(struct callchain_cursor *cursor,
782 node->ip = ip; 813 node->ip = ip;
783 node->map = map; 814 node->map = map;
784 node->sym = sym; 815 node->sym = sym;
816 node->branch = branch;
817 node->nr_loop_iter = nr_loop_iter;
818 node->samples = samples;
819
820 if (flags)
821 memcpy(&node->branch_flags, flags,
822 sizeof(struct branch_flags));
785 823
786 cursor->nr++; 824 cursor->nr++;
787 825
@@ -939,6 +977,163 @@ int callchain_node__fprintf_value(struct callchain_node *node,
939 return 0; 977 return 0;
940} 978}
941 979
980static void callchain_counts_value(struct callchain_node *node,
981 u64 *branch_count, u64 *predicted_count,
982 u64 *abort_count, u64 *cycles_count)
983{
984 struct callchain_list *clist;
985
986 list_for_each_entry(clist, &node->val, list) {
987 if (branch_count)
988 *branch_count += clist->branch_count;
989
990 if (predicted_count)
991 *predicted_count += clist->predicted_count;
992
993 if (abort_count)
994 *abort_count += clist->abort_count;
995
996 if (cycles_count)
997 *cycles_count += clist->cycles_count;
998 }
999}
1000
1001static int callchain_node_branch_counts_cumul(struct callchain_node *node,
1002 u64 *branch_count,
1003 u64 *predicted_count,
1004 u64 *abort_count,
1005 u64 *cycles_count)
1006{
1007 struct callchain_node *child;
1008 struct rb_node *n;
1009
1010 n = rb_first(&node->rb_root_in);
1011 while (n) {
1012 child = rb_entry(n, struct callchain_node, rb_node_in);
1013 n = rb_next(n);
1014
1015 callchain_node_branch_counts_cumul(child, branch_count,
1016 predicted_count,
1017 abort_count,
1018 cycles_count);
1019
1020 callchain_counts_value(child, branch_count,
1021 predicted_count, abort_count,
1022 cycles_count);
1023 }
1024
1025 return 0;
1026}
1027
1028int callchain_branch_counts(struct callchain_root *root,
1029 u64 *branch_count, u64 *predicted_count,
1030 u64 *abort_count, u64 *cycles_count)
1031{
1032 if (branch_count)
1033 *branch_count = 0;
1034
1035 if (predicted_count)
1036 *predicted_count = 0;
1037
1038 if (abort_count)
1039 *abort_count = 0;
1040
1041 if (cycles_count)
1042 *cycles_count = 0;
1043
1044 return callchain_node_branch_counts_cumul(&root->node,
1045 branch_count,
1046 predicted_count,
1047 abort_count,
1048 cycles_count);
1049}
1050
1051static int callchain_counts_printf(FILE *fp, char *bf, int bfsize,
1052 u64 branch_count, u64 predicted_count,
1053 u64 abort_count, u64 cycles_count,
1054 u64 iter_count, u64 samples_count)
1055{
1056 double predicted_percent = 0.0;
1057 const char *null_str = "";
1058 char iter_str[32];
1059 char *str;
1060 u64 cycles = 0;
1061
1062 if (branch_count == 0) {
1063 if (fp)
1064 return fprintf(fp, " (calltrace)");
1065
1066 return scnprintf(bf, bfsize, " (calltrace)");
1067 }
1068
1069 if (iter_count && samples_count) {
1070 scnprintf(iter_str, sizeof(iter_str),
1071 ", iterations:%" PRId64 "",
1072 iter_count / samples_count);
1073 str = iter_str;
1074 } else
1075 str = (char *)null_str;
1076
1077 predicted_percent = predicted_count * 100.0 / branch_count;
1078 cycles = cycles_count / branch_count;
1079
1080 if ((predicted_percent >= 100.0) && (abort_count == 0)) {
1081 if (fp)
1082 return fprintf(fp, " (cycles:%" PRId64 "%s)",
1083 cycles, str);
1084
1085 return scnprintf(bf, bfsize, " (cycles:%" PRId64 "%s)",
1086 cycles, str);
1087 }
1088
1089 if ((predicted_percent < 100.0) && (abort_count == 0)) {
1090 if (fp)
1091 return fprintf(fp,
1092 " (predicted:%.1f%%, cycles:%" PRId64 "%s)",
1093 predicted_percent, cycles, str);
1094
1095 return scnprintf(bf, bfsize,
1096 " (predicted:%.1f%%, cycles:%" PRId64 "%s)",
1097 predicted_percent, cycles, str);
1098 }
1099
1100 if (fp)
1101 return fprintf(fp,
1102 " (predicted:%.1f%%, abort:%" PRId64 ", cycles:%" PRId64 "%s)",
1103 predicted_percent, abort_count, cycles, str);
1104
1105 return scnprintf(bf, bfsize,
1106 " (predicted:%.1f%%, abort:%" PRId64 ", cycles:%" PRId64 "%s)",
1107 predicted_percent, abort_count, cycles, str);
1108}
1109
1110int callchain_list_counts__printf_value(struct callchain_node *node,
1111 struct callchain_list *clist,
1112 FILE *fp, char *bf, int bfsize)
1113{
1114 u64 branch_count, predicted_count;
1115 u64 abort_count, cycles_count;
1116 u64 iter_count = 0, samples_count = 0;
1117
1118 branch_count = clist->branch_count;
1119 predicted_count = clist->predicted_count;
1120 abort_count = clist->abort_count;
1121 cycles_count = clist->cycles_count;
1122
1123 if (node) {
1124 struct callchain_list *call;
1125
1126 list_for_each_entry(call, &node->val, list) {
1127 iter_count += call->iter_count;
1128 samples_count += call->samples_count;
1129 }
1130 }
1131
1132 return callchain_counts_printf(fp, bf, bfsize, branch_count,
1133 predicted_count, abort_count,
1134 cycles_count, iter_count, samples_count);
1135}
1136
942static void free_callchain_node(struct callchain_node *node) 1137static void free_callchain_node(struct callchain_node *node)
943{ 1138{
944 struct callchain_list *list, *tmp; 1139 struct callchain_list *list, *tmp;
@@ -1039,3 +1234,30 @@ out:
1039 } 1234 }
1040 return -ENOMEM; 1235 return -ENOMEM;
1041} 1236}
1237
1238int callchain_cursor__copy(struct callchain_cursor *dst,
1239 struct callchain_cursor *src)
1240{
1241 int rc = 0;
1242
1243 callchain_cursor_reset(dst);
1244 callchain_cursor_commit(src);
1245
1246 while (true) {
1247 struct callchain_cursor_node *node;
1248
1249 node = callchain_cursor_current(src);
1250 if (node == NULL)
1251 break;
1252
1253 rc = callchain_cursor_append(dst, node->ip, node->map, node->sym,
1254 node->branch, &node->branch_flags,
1255 node->nr_loop_iter, node->samples);
1256 if (rc)
1257 break;
1258
1259 callchain_cursor_advance(src);
1260 }
1261
1262 return rc;
1263}
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index 13e75549c440..35c8e379530f 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -11,11 +11,7 @@
11 11
12#define CALLCHAIN_HELP "setup and enables call-graph (stack chain/backtrace):\n\n" 12#define CALLCHAIN_HELP "setup and enables call-graph (stack chain/backtrace):\n\n"
13 13
14#ifdef HAVE_DWARF_UNWIND_SUPPORT
15# define RECORD_MODE_HELP HELP_PAD "record_mode:\tcall graph recording mode (fp|dwarf|lbr)\n" 14# define RECORD_MODE_HELP HELP_PAD "record_mode:\tcall graph recording mode (fp|dwarf|lbr)\n"
16#else
17# define RECORD_MODE_HELP HELP_PAD "record_mode:\tcall graph recording mode (fp|lbr)\n"
18#endif
19 15
20#define RECORD_SIZE_HELP \ 16#define RECORD_SIZE_HELP \
21 HELP_PAD "record_size:\tif record_mode is 'dwarf', max size of stack recording (<bytes>)\n" \ 17 HELP_PAD "record_size:\tif record_mode is 'dwarf', max size of stack recording (<bytes>)\n" \
@@ -115,6 +111,12 @@ struct callchain_list {
115 bool unfolded; 111 bool unfolded;
116 bool has_children; 112 bool has_children;
117 }; 113 };
114 u64 branch_count;
115 u64 predicted_count;
116 u64 abort_count;
117 u64 cycles_count;
118 u64 iter_count;
119 u64 samples_count;
118 char *srcline; 120 char *srcline;
119 struct list_head list; 121 struct list_head list;
120}; 122};
@@ -129,6 +131,10 @@ struct callchain_cursor_node {
129 u64 ip; 131 u64 ip;
130 struct map *map; 132 struct map *map;
131 struct symbol *sym; 133 struct symbol *sym;
134 bool branch;
135 struct branch_flags branch_flags;
136 int nr_loop_iter;
137 int samples;
132 struct callchain_cursor_node *next; 138 struct callchain_cursor_node *next;
133}; 139};
134 140
@@ -183,7 +189,9 @@ static inline void callchain_cursor_reset(struct callchain_cursor *cursor)
183} 189}
184 190
185int callchain_cursor_append(struct callchain_cursor *cursor, u64 ip, 191int callchain_cursor_append(struct callchain_cursor *cursor, u64 ip,
186 struct map *map, struct symbol *sym); 192 struct map *map, struct symbol *sym,
193 bool branch, struct branch_flags *flags,
194 int nr_loop_iter, int samples);
187 195
188/* Close a cursor writing session. Initialize for the reader */ 196/* Close a cursor writing session. Initialize for the reader */
189static inline void callchain_cursor_commit(struct callchain_cursor *cursor) 197static inline void callchain_cursor_commit(struct callchain_cursor *cursor)
@@ -208,6 +216,9 @@ static inline void callchain_cursor_advance(struct callchain_cursor *cursor)
208 cursor->pos++; 216 cursor->pos++;
209} 217}
210 218
219int callchain_cursor__copy(struct callchain_cursor *dst,
220 struct callchain_cursor *src);
221
211struct option; 222struct option;
212struct hist_entry; 223struct hist_entry;
213 224
@@ -261,8 +272,16 @@ char *callchain_node__scnprintf_value(struct callchain_node *node,
261int callchain_node__fprintf_value(struct callchain_node *node, 272int callchain_node__fprintf_value(struct callchain_node *node,
262 FILE *fp, u64 total); 273 FILE *fp, u64 total);
263 274
275int callchain_list_counts__printf_value(struct callchain_node *node,
276 struct callchain_list *clist,
277 FILE *fp, char *bf, int bfsize);
278
264void free_callchain(struct callchain_root *root); 279void free_callchain(struct callchain_root *root);
265void decay_callchain(struct callchain_root *root); 280void decay_callchain(struct callchain_root *root);
266int callchain_node__make_parent_list(struct callchain_node *node); 281int callchain_node__make_parent_list(struct callchain_node *node);
267 282
283int callchain_branch_counts(struct callchain_root *root,
284 u64 *branch_count, u64 *predicted_count,
285 u64 *abort_count, u64 *cycles_count);
286
268#endif /* __PERF_CALLCHAIN_H */ 287#endif /* __PERF_CALLCHAIN_H */
diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
index 18dae745034f..3d906dbbef74 100644
--- a/tools/perf/util/config.c
+++ b/tools/perf/util/config.c
@@ -594,6 +594,19 @@ static int collect_config(const char *var, const char *value,
594 goto out_free; 594 goto out_free;
595 } 595 }
596 596
597 /* perf_config_set can contain both user and system config items.
598 * So we should know where each value is from.
599 * The classification would be needed when a particular config file
600 * is overwrited by setting feature i.e. set_config().
601 */
602 if (strcmp(config_file_name, perf_etc_perfconfig()) == 0) {
603 section->from_system_config = true;
604 item->from_system_config = true;
605 } else {
606 section->from_system_config = false;
607 item->from_system_config = false;
608 }
609
597 ret = set_value(item, value); 610 ret = set_value(item, value);
598 return ret; 611 return ret;
599 612
@@ -602,6 +615,13 @@ out_free:
602 return -1; 615 return -1;
603} 616}
604 617
618int perf_config_set__collect(struct perf_config_set *set, const char *file_name,
619 const char *var, const char *value)
620{
621 config_file_name = file_name;
622 return collect_config(var, value, set);
623}
624
605static int perf_config_set__init(struct perf_config_set *set) 625static int perf_config_set__init(struct perf_config_set *set)
606{ 626{
607 int ret = -1; 627 int ret = -1;
diff --git a/tools/perf/util/config.h b/tools/perf/util/config.h
index 6f813d46045e..1a59a6b43f8b 100644
--- a/tools/perf/util/config.h
+++ b/tools/perf/util/config.h
@@ -7,12 +7,14 @@
7struct perf_config_item { 7struct perf_config_item {
8 char *name; 8 char *name;
9 char *value; 9 char *value;
10 bool from_system_config;
10 struct list_head node; 11 struct list_head node;
11}; 12};
12 13
13struct perf_config_section { 14struct perf_config_section {
14 char *name; 15 char *name;
15 struct list_head items; 16 struct list_head items;
17 bool from_system_config;
16 struct list_head node; 18 struct list_head node;
17}; 19};
18 20
@@ -33,6 +35,8 @@ const char *perf_etc_perfconfig(void);
33 35
34struct perf_config_set *perf_config_set__new(void); 36struct perf_config_set *perf_config_set__new(void);
35void perf_config_set__delete(struct perf_config_set *set); 37void perf_config_set__delete(struct perf_config_set *set);
38int perf_config_set__collect(struct perf_config_set *set, const char *file_name,
39 const char *var, const char *value);
36void perf_config__init(void); 40void perf_config__init(void);
37void perf_config__exit(void); 41void perf_config__exit(void);
38void perf_config__refresh(void); 42void perf_config__refresh(void);
diff --git a/tools/perf/util/cs-etm.h b/tools/perf/util/cs-etm.h
new file mode 100644
index 000000000000..3cc6bc3263fe
--- /dev/null
+++ b/tools/perf/util/cs-etm.h
@@ -0,0 +1,74 @@
1/*
2 * Copyright(C) 2015 Linaro Limited. All rights reserved.
3 * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published by
7 * the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef INCLUDE__UTIL_PERF_CS_ETM_H__
19#define INCLUDE__UTIL_PERF_CS_ETM_H__
20
21/* Versionning header in case things need tro change in the future. That way
22 * decoding of old snapshot is still possible.
23 */
24enum {
25 /* Starting with 0x0 */
26 CS_HEADER_VERSION_0,
27 /* PMU->type (32 bit), total # of CPUs (32 bit) */
28 CS_PMU_TYPE_CPUS,
29 CS_ETM_SNAPSHOT,
30 CS_HEADER_VERSION_0_MAX,
31};
32
33/* Beginning of header common to both ETMv3 and V4 */
34enum {
35 CS_ETM_MAGIC,
36 CS_ETM_CPU,
37};
38
39/* ETMv3/PTM metadata */
40enum {
41 /* Dynamic, configurable parameters */
42 CS_ETM_ETMCR = CS_ETM_CPU + 1,
43 CS_ETM_ETMTRACEIDR,
44 /* RO, taken from sysFS */
45 CS_ETM_ETMCCER,
46 CS_ETM_ETMIDR,
47 CS_ETM_PRIV_MAX,
48};
49
50/* ETMv4 metadata */
51enum {
52 /* Dynamic, configurable parameters */
53 CS_ETMV4_TRCCONFIGR = CS_ETM_CPU + 1,
54 CS_ETMV4_TRCTRACEIDR,
55 /* RO, taken from sysFS */
56 CS_ETMV4_TRCIDR0,
57 CS_ETMV4_TRCIDR1,
58 CS_ETMV4_TRCIDR2,
59 CS_ETMV4_TRCIDR8,
60 CS_ETMV4_TRCAUTHSTATUS,
61 CS_ETMV4_PRIV_MAX,
62};
63
64#define KiB(x) ((x) * 1024)
65#define MiB(x) ((x) * 1024 * 1024)
66
67#define CS_ETM_HEADER_SIZE (CS_HEADER_VERSION_0_MAX * sizeof(u64))
68
69static const u64 __perf_cs_etmv3_magic = 0x3030303030303030ULL;
70static const u64 __perf_cs_etmv4_magic = 0x4040404040404040ULL;
71#define CS_ETMV3_PRIV_SIZE (CS_ETM_PRIV_MAX * sizeof(u64))
72#define CS_ETMV4_PRIV_SIZE (CS_ETMV4_PRIV_MAX * sizeof(u64))
73
74#endif
diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
index 4f979bb27b6c..7123f4de32cc 100644
--- a/tools/perf/util/data-convert-bt.c
+++ b/tools/perf/util/data-convert-bt.c
@@ -437,7 +437,7 @@ add_bpf_output_values(struct bt_ctf_event_class *event_class,
437 int ret; 437 int ret;
438 438
439 if (nr_elements * sizeof(u32) != raw_size) 439 if (nr_elements * sizeof(u32) != raw_size)
440 pr_warning("Incorrect raw_size (%u) in bpf output event, skip %lu bytes\n", 440 pr_warning("Incorrect raw_size (%u) in bpf output event, skip %zu bytes\n",
441 raw_size, nr_elements * sizeof(u32) - raw_size); 441 raw_size, nr_elements * sizeof(u32) - raw_size);
442 442
443 len_type = bt_ctf_event_class_get_field_by_name(event_class, "raw_len"); 443 len_type = bt_ctf_event_class_get_field_by_name(event_class, "raw_len");
diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c
index 8c4212abd19b..c1838b643108 100644
--- a/tools/perf/util/debug.c
+++ b/tools/perf/util/debug.c
@@ -6,6 +6,7 @@
6#include <stdarg.h> 6#include <stdarg.h>
7#include <stdio.h> 7#include <stdio.h>
8#include <api/debug.h> 8#include <api/debug.h>
9#include <linux/time64.h>
9 10
10#include "cache.h" 11#include "cache.h"
11#include "color.h" 12#include "color.h"
@@ -14,9 +15,6 @@
14#include "util.h" 15#include "util.h"
15#include "target.h" 16#include "target.h"
16 17
17#define NSECS_PER_SEC 1000000000ULL
18#define NSECS_PER_USEC 1000ULL
19
20int verbose; 18int verbose;
21bool dump_trace = false, quiet = false; 19bool dump_trace = false, quiet = false;
22int debug_ordered_events; 20int debug_ordered_events;
@@ -54,9 +52,9 @@ static int veprintf_time(u64 t, const char *fmt, va_list args)
54 int ret = 0; 52 int ret = 0;
55 u64 secs, usecs, nsecs = t; 53 u64 secs, usecs, nsecs = t;
56 54
57 secs = nsecs / NSECS_PER_SEC; 55 secs = nsecs / NSEC_PER_SEC;
58 nsecs -= secs * NSECS_PER_SEC; 56 nsecs -= secs * NSEC_PER_SEC;
59 usecs = nsecs / NSECS_PER_USEC; 57 usecs = nsecs / NSEC_PER_USEC;
60 58
61 ret = fprintf(stderr, "[%13" PRIu64 ".%06" PRIu64 "] ", 59 ret = fprintf(stderr, "[%13" PRIu64 ".%06" PRIu64 "] ",
62 secs, usecs); 60 secs, usecs);
diff --git a/tools/perf/util/drv_configs.c b/tools/perf/util/drv_configs.c
new file mode 100644
index 000000000000..1647f285c629
--- /dev/null
+++ b/tools/perf/util/drv_configs.c
@@ -0,0 +1,77 @@
1/*
2 * drv_configs.h: Interface to apply PMU specific configuration
3 * Copyright (c) 2016-2018, Linaro Ltd.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 */
15
16#include "drv_configs.h"
17#include "evlist.h"
18#include "evsel.h"
19#include "pmu.h"
20
21static int
22perf_evsel__apply_drv_configs(struct perf_evsel *evsel,
23 struct perf_evsel_config_term **err_term)
24{
25 bool found = false;
26 int err = 0;
27 struct perf_evsel_config_term *term;
28 struct perf_pmu *pmu = NULL;
29
30 while ((pmu = perf_pmu__scan(pmu)) != NULL)
31 if (pmu->type == evsel->attr.type) {
32 found = true;
33 break;
34 }
35
36 list_for_each_entry(term, &evsel->config_terms, list) {
37 if (term->type != PERF_EVSEL__CONFIG_TERM_DRV_CFG)
38 continue;
39
40 /*
41 * We have a configuration term, report an error if we
42 * can't find the PMU or if the PMU driver doesn't support
43 * cmd line driver configuration.
44 */
45 if (!found || !pmu->set_drv_config) {
46 err = -EINVAL;
47 *err_term = term;
48 break;
49 }
50
51 err = pmu->set_drv_config(term);
52 if (err) {
53 *err_term = term;
54 break;
55 }
56 }
57
58 return err;
59}
60
61int perf_evlist__apply_drv_configs(struct perf_evlist *evlist,
62 struct perf_evsel **err_evsel,
63 struct perf_evsel_config_term **err_term)
64{
65 struct perf_evsel *evsel;
66 int err = 0;
67
68 evlist__for_each_entry(evlist, evsel) {
69 err = perf_evsel__apply_drv_configs(evsel, err_term);
70 if (err) {
71 *err_evsel = evsel;
72 break;
73 }
74 }
75
76 return err;
77}
diff --git a/tools/perf/util/drv_configs.h b/tools/perf/util/drv_configs.h
new file mode 100644
index 000000000000..32bc9babc2e0
--- /dev/null
+++ b/tools/perf/util/drv_configs.h
@@ -0,0 +1,26 @@
1/*
2 * drv_configs.h: Interface to apply PMU specific configuration
3 * Copyright (c) 2016-2018, Linaro Ltd.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 */
15
16#ifndef __PERF_DRV_CONFIGS_H
17#define __PERF_DRV_CONFIGS_H
18
19#include "drv_configs.h"
20#include "evlist.h"
21#include "evsel.h"
22
23int perf_evlist__apply_drv_configs(struct perf_evlist *evlist,
24 struct perf_evsel **err_evsel,
25 struct perf_evsel_config_term **term);
26#endif
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
index 774f6ec884d5..d2c6cdd9d42b 100644
--- a/tools/perf/util/dso.c
+++ b/tools/perf/util/dso.c
@@ -363,6 +363,9 @@ static int __open_dso(struct dso *dso, struct machine *machine)
363 return -EINVAL; 363 return -EINVAL;
364 } 364 }
365 365
366 if (!is_regular_file(name))
367 return -EINVAL;
368
366 fd = do_open(name); 369 fd = do_open(name);
367 free(name); 370 free(name);
368 return fd; 371 return fd;
diff --git a/tools/perf/util/dwarf-aux.c b/tools/perf/util/dwarf-aux.c
index a347b19c961a..41e068e94349 100644
--- a/tools/perf/util/dwarf-aux.c
+++ b/tools/perf/util/dwarf-aux.c
@@ -130,6 +130,22 @@ int cu_walk_functions_at(Dwarf_Die *cu_die, Dwarf_Addr addr,
130} 130}
131 131
132/** 132/**
133 * die_get_linkage_name - Get the linkage name of the object
134 * @dw_die: A DIE of the object
135 *
136 * Get the linkage name attiribute of given @dw_die.
137 * For C++ binary, the linkage name will be the mangled symbol.
138 */
139const char *die_get_linkage_name(Dwarf_Die *dw_die)
140{
141 Dwarf_Attribute attr;
142
143 if (dwarf_attr_integrate(dw_die, DW_AT_linkage_name, &attr) == NULL)
144 return NULL;
145 return dwarf_formstring(&attr);
146}
147
148/**
133 * die_compare_name - Compare diename and tname 149 * die_compare_name - Compare diename and tname
134 * @dw_die: a DIE 150 * @dw_die: a DIE
135 * @tname: a string of target name 151 * @tname: a string of target name
@@ -145,18 +161,26 @@ bool die_compare_name(Dwarf_Die *dw_die, const char *tname)
145} 161}
146 162
147/** 163/**
148 * die_match_name - Match diename and glob 164 * die_match_name - Match diename/linkage name and glob
149 * @dw_die: a DIE 165 * @dw_die: a DIE
150 * @glob: a string of target glob pattern 166 * @glob: a string of target glob pattern
151 * 167 *
152 * Glob matching the name of @dw_die and @glob. Return false if matching fail. 168 * Glob matching the name of @dw_die and @glob. Return false if matching fail.
169 * This also match linkage name.
153 */ 170 */
154bool die_match_name(Dwarf_Die *dw_die, const char *glob) 171bool die_match_name(Dwarf_Die *dw_die, const char *glob)
155{ 172{
156 const char *name; 173 const char *name;
157 174
158 name = dwarf_diename(dw_die); 175 name = dwarf_diename(dw_die);
159 return name ? strglobmatch(name, glob) : false; 176 if (name && strglobmatch(name, glob))
177 return true;
178 /* fall back to check linkage name */
179 name = die_get_linkage_name(dw_die);
180 if (name && strglobmatch(name, glob))
181 return true;
182
183 return false;
160} 184}
161 185
162/** 186/**
@@ -1085,3 +1109,182 @@ int die_get_var_range(Dwarf_Die *sp_die __maybe_unused,
1085 return -ENOTSUP; 1109 return -ENOTSUP;
1086} 1110}
1087#endif 1111#endif
1112
1113/*
1114 * die_has_loclist - Check if DW_AT_location of @vr_die is a location list
1115 * @vr_die: a variable DIE
1116 */
1117static bool die_has_loclist(Dwarf_Die *vr_die)
1118{
1119 Dwarf_Attribute loc;
1120 int tag = dwarf_tag(vr_die);
1121
1122 if (tag != DW_TAG_formal_parameter &&
1123 tag != DW_TAG_variable)
1124 return false;
1125
1126 return (dwarf_attr_integrate(vr_die, DW_AT_location, &loc) &&
1127 dwarf_whatform(&loc) == DW_FORM_sec_offset);
1128}
1129
1130/*
1131 * die_is_optimized_target - Check if target program is compiled with
1132 * optimization
1133 * @cu_die: a CU DIE
1134 *
1135 * For any object in given CU whose DW_AT_location is a location list,
1136 * target program is compiled with optimization. This is applicable to
1137 * clang as well.
1138 */
1139bool die_is_optimized_target(Dwarf_Die *cu_die)
1140{
1141 Dwarf_Die tmp_die;
1142
1143 if (die_has_loclist(cu_die))
1144 return true;
1145
1146 if (!dwarf_child(cu_die, &tmp_die) &&
1147 die_is_optimized_target(&tmp_die))
1148 return true;
1149
1150 if (!dwarf_siblingof(cu_die, &tmp_die) &&
1151 die_is_optimized_target(&tmp_die))
1152 return true;
1153
1154 return false;
1155}
1156
1157/*
1158 * die_search_idx - Search index of given line address
1159 * @lines: Line records of single CU
1160 * @nr_lines: Number of @lines
1161 * @addr: address we are looking for
1162 * @idx: index to be set by this function (return value)
1163 *
1164 * Search for @addr by looping over every lines of CU. If address
1165 * matches, set index of that line in @idx. Note that single source
1166 * line can have multiple line records. i.e. single source line can
1167 * have multiple index.
1168 */
1169static bool die_search_idx(Dwarf_Lines *lines, unsigned long nr_lines,
1170 Dwarf_Addr addr, unsigned long *idx)
1171{
1172 unsigned long i;
1173 Dwarf_Addr tmp;
1174
1175 for (i = 0; i < nr_lines; i++) {
1176 if (dwarf_lineaddr(dwarf_onesrcline(lines, i), &tmp))
1177 return false;
1178
1179 if (tmp == addr) {
1180 *idx = i;
1181 return true;
1182 }
1183 }
1184 return false;
1185}
1186
1187/*
1188 * die_get_postprologue_addr - Search next address after function prologue
1189 * @entrypc_idx: entrypc index
1190 * @lines: Line records of single CU
1191 * @nr_lines: Number of @lines
1192 * @hignpc: high PC address of function
1193 * @postprologue_addr: Next address after function prologue (return value)
1194 *
1195 * Look for prologue-end marker. If there is no explicit marker, return
1196 * address of next line record or next source line.
1197 */
1198static bool die_get_postprologue_addr(unsigned long entrypc_idx,
1199 Dwarf_Lines *lines,
1200 unsigned long nr_lines,
1201 Dwarf_Addr highpc,
1202 Dwarf_Addr *postprologue_addr)
1203{
1204 unsigned long i;
1205 int entrypc_lno, lno;
1206 Dwarf_Line *line;
1207 Dwarf_Addr addr;
1208 bool p_end;
1209
1210 /* entrypc_lno is actual source line number */
1211 line = dwarf_onesrcline(lines, entrypc_idx);
1212 if (dwarf_lineno(line, &entrypc_lno))
1213 return false;
1214
1215 for (i = entrypc_idx; i < nr_lines; i++) {
1216 line = dwarf_onesrcline(lines, i);
1217
1218 if (dwarf_lineaddr(line, &addr) ||
1219 dwarf_lineno(line, &lno) ||
1220 dwarf_lineprologueend(line, &p_end))
1221 return false;
1222
1223 /* highpc is exclusive. [entrypc,highpc) */
1224 if (addr >= highpc)
1225 break;
1226
1227 /* clang supports prologue-end marker */
1228 if (p_end)
1229 break;
1230
1231 /* Actual next line in source */
1232 if (lno != entrypc_lno)
1233 break;
1234
1235 /*
1236 * Single source line can have multiple line records.
1237 * For Example,
1238 * void foo() { printf("hello\n"); }
1239 * contains two line records. One points to declaration and
1240 * other points to printf() line. Variable 'lno' won't get
1241 * incremented in this case but 'i' will.
1242 */
1243 if (i != entrypc_idx)
1244 break;
1245 }
1246
1247 dwarf_lineaddr(line, postprologue_addr);
1248 if (*postprologue_addr >= highpc)
1249 dwarf_lineaddr(dwarf_onesrcline(lines, i - 1),
1250 postprologue_addr);
1251
1252 return true;
1253}
1254
1255/*
1256 * die_skip_prologue - Use next address after prologue as probe location
1257 * @sp_die: a subprogram DIE
1258 * @cu_die: a CU DIE
1259 * @entrypc: entrypc of the function
1260 *
1261 * Function prologue prepares stack and registers before executing function
1262 * logic. When target program is compiled without optimization, function
1263 * parameter information is only valid after prologue. When we probe entrypc
1264 * of the function, and try to record function parameter, it contains
1265 * garbage value.
1266 */
1267void die_skip_prologue(Dwarf_Die *sp_die, Dwarf_Die *cu_die,
1268 Dwarf_Addr *entrypc)
1269{
1270 size_t nr_lines = 0;
1271 unsigned long entrypc_idx = 0;
1272 Dwarf_Lines *lines = NULL;
1273 Dwarf_Addr postprologue_addr;
1274 Dwarf_Addr highpc;
1275
1276 if (dwarf_highpc(sp_die, &highpc))
1277 return;
1278
1279 if (dwarf_getsrclines(cu_die, &lines, &nr_lines))
1280 return;
1281
1282 if (!die_search_idx(lines, nr_lines, *entrypc, &entrypc_idx))
1283 return;
1284
1285 if (!die_get_postprologue_addr(entrypc_idx, lines, nr_lines,
1286 highpc, &postprologue_addr))
1287 return;
1288
1289 *entrypc = postprologue_addr;
1290}
diff --git a/tools/perf/util/dwarf-aux.h b/tools/perf/util/dwarf-aux.h
index dc0ce1adb075..8ac53bf1ec4e 100644
--- a/tools/perf/util/dwarf-aux.h
+++ b/tools/perf/util/dwarf-aux.h
@@ -38,6 +38,9 @@ int cu_find_lineinfo(Dwarf_Die *cudie, unsigned long addr,
38int cu_walk_functions_at(Dwarf_Die *cu_die, Dwarf_Addr addr, 38int cu_walk_functions_at(Dwarf_Die *cu_die, Dwarf_Addr addr,
39 int (*callback)(Dwarf_Die *, void *), void *data); 39 int (*callback)(Dwarf_Die *, void *), void *data);
40 40
41/* Get DW_AT_linkage_name (should be NULL for C binary) */
42const char *die_get_linkage_name(Dwarf_Die *dw_die);
43
41/* Ensure that this DIE is a subprogram and definition (not declaration) */ 44/* Ensure that this DIE is a subprogram and definition (not declaration) */
42bool die_is_func_def(Dwarf_Die *dw_die); 45bool die_is_func_def(Dwarf_Die *dw_die);
43 46
@@ -125,4 +128,12 @@ int die_get_typename(Dwarf_Die *vr_die, struct strbuf *buf);
125/* Get the name and type of given variable DIE, stored as "type\tname" */ 128/* Get the name and type of given variable DIE, stored as "type\tname" */
126int die_get_varname(Dwarf_Die *vr_die, struct strbuf *buf); 129int die_get_varname(Dwarf_Die *vr_die, struct strbuf *buf);
127int die_get_var_range(Dwarf_Die *sp_die, Dwarf_Die *vr_die, struct strbuf *buf); 130int die_get_var_range(Dwarf_Die *sp_die, Dwarf_Die *vr_die, struct strbuf *buf);
131
132/* Check if target program is compiled with optimization */
133bool die_is_optimized_target(Dwarf_Die *cu_die);
134
135/* Use next address after prologue as probe location */
136void die_skip_prologue(Dwarf_Die *sp_die, Dwarf_Die *cu_die,
137 Dwarf_Addr *entrypc);
138
128#endif 139#endif
diff --git a/tools/perf/util/dwarf-regs.c b/tools/perf/util/dwarf-regs.c
new file mode 100644
index 000000000000..62bc4a86a970
--- /dev/null
+++ b/tools/perf/util/dwarf-regs.c
@@ -0,0 +1,59 @@
1/*
2 * dwarf-regs.c : Mapping of DWARF debug register numbers into register names.
3 *
4 * Written by: Masami Hiramatsu <mhiramat@kernel.org>
5 */
6
7#include <util.h>
8#include <debug.h>
9#include <dwarf-regs.h>
10#include <elf.h>
11
12#ifndef EM_AARCH64
13#define EM_AARCH64 183 /* ARM 64 bit */
14#endif
15
16/* Define const char * {arch}_register_tbl[] */
17#define DEFINE_DWARF_REGSTR_TABLE
18#include "../arch/x86/include/dwarf-regs-table.h"
19#include "../arch/arm/include/dwarf-regs-table.h"
20#include "../arch/arm64/include/dwarf-regs-table.h"
21#include "../arch/sh/include/dwarf-regs-table.h"
22#include "../arch/powerpc/include/dwarf-regs-table.h"
23#include "../arch/s390/include/dwarf-regs-table.h"
24#include "../arch/sparc/include/dwarf-regs-table.h"
25#include "../arch/xtensa/include/dwarf-regs-table.h"
26
27#define __get_dwarf_regstr(tbl, n) (((n) < ARRAY_SIZE(tbl)) ? (tbl)[(n)] : NULL)
28
29/* Return architecture dependent register string (for kprobe-tracer) */
30const char *get_dwarf_regstr(unsigned int n, unsigned int machine)
31{
32 switch (machine) {
33 case EM_NONE: /* Generic arch - use host arch */
34 return get_arch_regstr(n);
35 case EM_386:
36 return __get_dwarf_regstr(x86_32_regstr_tbl, n);
37 case EM_X86_64:
38 return __get_dwarf_regstr(x86_64_regstr_tbl, n);
39 case EM_ARM:
40 return __get_dwarf_regstr(arm_regstr_tbl, n);
41 case EM_AARCH64:
42 return __get_dwarf_regstr(aarch64_regstr_tbl, n);
43 case EM_SH:
44 return __get_dwarf_regstr(sh_regstr_tbl, n);
45 case EM_S390:
46 return __get_dwarf_regstr(s390_regstr_tbl, n);
47 case EM_PPC:
48 case EM_PPC64:
49 return __get_dwarf_regstr(powerpc_regstr_tbl, n);
50 case EM_SPARC:
51 case EM_SPARCV9:
52 return __get_dwarf_regstr(sparc_regstr_tbl, n);
53 case EM_XTENSA:
54 return __get_dwarf_regstr(xtensa_regstr_tbl, n);
55 default:
56 pr_err("ELF MACHINE %x is not supported.\n", machine);
57 }
58 return NULL;
59}
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index e20438b784be..8ab0d7da956b 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -1,5 +1,6 @@
1#include <linux/types.h> 1#include <linux/types.h>
2#include <sys/mman.h> 2#include <uapi/linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */
3#include <api/fs/fs.h>
3#include "event.h" 4#include "event.h"
4#include "debug.h" 5#include "debug.h"
5#include "hist.h" 6#include "hist.h"
@@ -248,6 +249,8 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
248 bool truncation = false; 249 bool truncation = false;
249 unsigned long long timeout = proc_map_timeout * 1000000ULL; 250 unsigned long long timeout = proc_map_timeout * 1000000ULL;
250 int rc = 0; 251 int rc = 0;
252 const char *hugetlbfs_mnt = hugetlbfs__mountpoint();
253 int hugetlbfs_mnt_len = hugetlbfs_mnt ? strlen(hugetlbfs_mnt) : 0;
251 254
252 if (machine__is_default_guest(machine)) 255 if (machine__is_default_guest(machine))
253 return 0; 256 return 0;
@@ -343,6 +346,12 @@ out:
343 if (!strcmp(execname, "")) 346 if (!strcmp(execname, ""))
344 strcpy(execname, anonstr); 347 strcpy(execname, anonstr);
345 348
349 if (hugetlbfs_mnt_len &&
350 !strncmp(execname, hugetlbfs_mnt, hugetlbfs_mnt_len)) {
351 strcpy(execname, anonstr);
352 event->mmap2.flags |= MAP_HUGETLB;
353 }
354
346 size = strlen(execname) + 1; 355 size = strlen(execname) + 1;
347 memcpy(event->mmap2.filename, execname, size); 356 memcpy(event->mmap2.filename, execname, size);
348 size = PERF_ALIGN(size, sizeof(u64)); 357 size = PERF_ALIGN(size, sizeof(u64));
@@ -1286,7 +1295,7 @@ try_again:
1286 * must be done prior to using kernel maps. 1295 * must be done prior to using kernel maps.
1287 */ 1296 */
1288 if (load_map) 1297 if (load_map)
1289 map__load(al->map, machine->symbol_filter); 1298 map__load(al->map);
1290 al->addr = al->map->map_ip(al->map, al->addr); 1299 al->addr = al->map->map_ip(al->map, al->addr);
1291 } 1300 }
1292} 1301}
@@ -1297,8 +1306,7 @@ void thread__find_addr_location(struct thread *thread,
1297{ 1306{
1298 thread__find_addr_map(thread, cpumode, type, addr, al); 1307 thread__find_addr_map(thread, cpumode, type, addr, al);
1299 if (al->map != NULL) 1308 if (al->map != NULL)
1300 al->sym = map__find_symbol(al->map, al->addr, 1309 al->sym = map__find_symbol(al->map, al->addr);
1301 thread->mg->machine->symbol_filter);
1302 else 1310 else
1303 al->sym = NULL; 1311 al->sym = NULL;
1304} 1312}
@@ -1359,8 +1367,7 @@ int machine__resolve(struct machine *machine, struct addr_location *al,
1359 al->filtered |= (1 << HIST_FILTER__DSO); 1367 al->filtered |= (1 << HIST_FILTER__DSO);
1360 } 1368 }
1361 1369
1362 al->sym = map__find_symbol(al->map, al->addr, 1370 al->sym = map__find_symbol(al->map, al->addr);
1363 machine->symbol_filter);
1364 } 1371 }
1365 1372
1366 if (symbol_conf.sym_list && 1373 if (symbol_conf.sym_list &&
@@ -1416,5 +1423,5 @@ void thread__resolve(struct thread *thread, struct addr_location *al,
1416 al->sym = NULL; 1423 al->sym = NULL;
1417 1424
1418 if (al->map) 1425 if (al->map)
1419 al->sym = map__find_symbol(al->map, al->addr, NULL); 1426 al->sym = map__find_symbol(al->map, al->addr);
1420} 1427}
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index 8d363d5e65a2..c735c53a26f8 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -177,6 +177,8 @@ enum {
177 PERF_IP_FLAG_TRACE_BEGIN |\ 177 PERF_IP_FLAG_TRACE_BEGIN |\
178 PERF_IP_FLAG_TRACE_END) 178 PERF_IP_FLAG_TRACE_END)
179 179
180#define MAX_INSN 16
181
180struct perf_sample { 182struct perf_sample {
181 u64 ip; 183 u64 ip;
182 u32 pid, tid; 184 u32 pid, tid;
@@ -193,6 +195,7 @@ struct perf_sample {
193 u32 flags; 195 u32 flags;
194 u16 insn_len; 196 u16 insn_len;
195 u8 cpumode; 197 u8 cpumode;
198 char insn[MAX_INSN];
196 void *raw_data; 199 void *raw_data;
197 struct ip_callchain *callchain; 200 struct ip_callchain *callchain;
198 struct branch_stack *branch_stack; 201 struct branch_stack *branch_stack;
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 097b3ed77fdd..d92e02006fb8 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -384,15 +384,14 @@ void perf_evlist__toggle_enable(struct perf_evlist *evlist)
384static int perf_evlist__enable_event_cpu(struct perf_evlist *evlist, 384static int perf_evlist__enable_event_cpu(struct perf_evlist *evlist,
385 struct perf_evsel *evsel, int cpu) 385 struct perf_evsel *evsel, int cpu)
386{ 386{
387 int thread, err; 387 int thread;
388 int nr_threads = perf_evlist__nr_threads(evlist, evsel); 388 int nr_threads = perf_evlist__nr_threads(evlist, evsel);
389 389
390 if (!evsel->fd) 390 if (!evsel->fd)
391 return -EINVAL; 391 return -EINVAL;
392 392
393 for (thread = 0; thread < nr_threads; thread++) { 393 for (thread = 0; thread < nr_threads; thread++) {
394 err = ioctl(FD(evsel, cpu, thread), 394 int err = ioctl(FD(evsel, cpu, thread), PERF_EVENT_IOC_ENABLE, 0);
395 PERF_EVENT_IOC_ENABLE, 0);
396 if (err) 395 if (err)
397 return err; 396 return err;
398 } 397 }
@@ -403,14 +402,14 @@ static int perf_evlist__enable_event_thread(struct perf_evlist *evlist,
403 struct perf_evsel *evsel, 402 struct perf_evsel *evsel,
404 int thread) 403 int thread)
405{ 404{
406 int cpu, err; 405 int cpu;
407 int nr_cpus = cpu_map__nr(evlist->cpus); 406 int nr_cpus = cpu_map__nr(evlist->cpus);
408 407
409 if (!evsel->fd) 408 if (!evsel->fd)
410 return -EINVAL; 409 return -EINVAL;
411 410
412 for (cpu = 0; cpu < nr_cpus; cpu++) { 411 for (cpu = 0; cpu < nr_cpus; cpu++) {
413 err = ioctl(FD(evsel, cpu, thread), PERF_EVENT_IOC_ENABLE, 0); 412 int err = ioctl(FD(evsel, cpu, thread), PERF_EVENT_IOC_ENABLE, 0);
414 if (err) 413 if (err)
415 return err; 414 return err;
416 } 415 }
@@ -1032,16 +1031,18 @@ perf_evlist__should_poll(struct perf_evlist *evlist __maybe_unused,
1032} 1031}
1033 1032
1034static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx, 1033static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx,
1035 struct mmap_params *mp, int cpu, 1034 struct mmap_params *mp, int cpu_idx,
1036 int thread, int *_output, int *_output_backward) 1035 int thread, int *_output, int *_output_backward)
1037{ 1036{
1038 struct perf_evsel *evsel; 1037 struct perf_evsel *evsel;
1039 int revent; 1038 int revent;
1039 int evlist_cpu = cpu_map__cpu(evlist->cpus, cpu_idx);
1040 1040
1041 evlist__for_each_entry(evlist, evsel) { 1041 evlist__for_each_entry(evlist, evsel) {
1042 struct perf_mmap *maps = evlist->mmap; 1042 struct perf_mmap *maps = evlist->mmap;
1043 int *output = _output; 1043 int *output = _output;
1044 int fd; 1044 int fd;
1045 int cpu;
1045 1046
1046 if (evsel->attr.write_backward) { 1047 if (evsel->attr.write_backward) {
1047 output = _output_backward; 1048 output = _output_backward;
@@ -1060,6 +1061,10 @@ static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx,
1060 if (evsel->system_wide && thread) 1061 if (evsel->system_wide && thread)
1061 continue; 1062 continue;
1062 1063
1064 cpu = cpu_map__idx(evsel->cpus, evlist_cpu);
1065 if (cpu == -1)
1066 continue;
1067
1063 fd = FD(evsel, cpu, thread); 1068 fd = FD(evsel, cpu, thread);
1064 1069
1065 if (*output == -1) { 1070 if (*output == -1) {
@@ -1600,10 +1605,9 @@ void perf_evlist__close(struct perf_evlist *evlist)
1600 struct perf_evsel *evsel; 1605 struct perf_evsel *evsel;
1601 int ncpus = cpu_map__nr(evlist->cpus); 1606 int ncpus = cpu_map__nr(evlist->cpus);
1602 int nthreads = thread_map__nr(evlist->threads); 1607 int nthreads = thread_map__nr(evlist->threads);
1603 int n;
1604 1608
1605 evlist__for_each_entry_reverse(evlist, evsel) { 1609 evlist__for_each_entry_reverse(evlist, evsel) {
1606 n = evsel->cpus ? evsel->cpus->nr : ncpus; 1610 int n = evsel->cpus ? evsel->cpus->nr : ncpus;
1607 perf_evsel__close(evsel, n, nthreads); 1611 perf_evsel__close(evsel, n, nthreads);
1608 } 1612 }
1609} 1613}
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 21fd573106ed..04e536ae4d88 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -28,6 +28,7 @@
28#include "debug.h" 28#include "debug.h"
29#include "trace-event.h" 29#include "trace-event.h"
30#include "stat.h" 30#include "stat.h"
31#include "util/parse-branch-options.h"
31 32
32static struct { 33static struct {
33 bool sample_id_all; 34 bool sample_id_all;
@@ -708,6 +709,14 @@ static void apply_config_terms(struct perf_evsel *evsel,
708 case PERF_EVSEL__CONFIG_TERM_CALLGRAPH: 709 case PERF_EVSEL__CONFIG_TERM_CALLGRAPH:
709 callgraph_buf = term->val.callgraph; 710 callgraph_buf = term->val.callgraph;
710 break; 711 break;
712 case PERF_EVSEL__CONFIG_TERM_BRANCH:
713 if (term->val.branch && strcmp(term->val.branch, "no")) {
714 perf_evsel__set_sample_bit(evsel, BRANCH_STACK);
715 parse_branch_str(term->val.branch,
716 &attr->branch_sample_type);
717 } else
718 perf_evsel__reset_sample_bit(evsel, BRANCH_STACK);
719 break;
711 case PERF_EVSEL__CONFIG_TERM_STACK_USER: 720 case PERF_EVSEL__CONFIG_TERM_STACK_USER:
712 dump_size = term->val.stack_user; 721 dump_size = term->val.stack_user;
713 break; 722 break;
@@ -981,18 +990,19 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts,
981 * it overloads any global configuration. 990 * it overloads any global configuration.
982 */ 991 */
983 apply_config_terms(evsel, opts); 992 apply_config_terms(evsel, opts);
993
994 evsel->ignore_missing_thread = opts->ignore_missing_thread;
984} 995}
985 996
986static int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads) 997static int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads)
987{ 998{
988 int cpu, thread;
989
990 if (evsel->system_wide) 999 if (evsel->system_wide)
991 nthreads = 1; 1000 nthreads = 1;
992 1001
993 evsel->fd = xyarray__new(ncpus, nthreads, sizeof(int)); 1002 evsel->fd = xyarray__new(ncpus, nthreads, sizeof(int));
994 1003
995 if (evsel->fd) { 1004 if (evsel->fd) {
1005 int cpu, thread;
996 for (cpu = 0; cpu < ncpus; cpu++) { 1006 for (cpu = 0; cpu < ncpus; cpu++) {
997 for (thread = 0; thread < nthreads; thread++) { 1007 for (thread = 0; thread < nthreads; thread++) {
998 FD(evsel, cpu, thread) = -1; 1008 FD(evsel, cpu, thread) = -1;
@@ -1045,15 +1055,15 @@ int perf_evsel__set_filter(struct perf_evsel *evsel, const char *filter)
1045 return -1; 1055 return -1;
1046} 1056}
1047 1057
1048int perf_evsel__append_filter(struct perf_evsel *evsel, 1058static int perf_evsel__append_filter(struct perf_evsel *evsel,
1049 const char *op, const char *filter) 1059 const char *fmt, const char *filter)
1050{ 1060{
1051 char *new_filter; 1061 char *new_filter;
1052 1062
1053 if (evsel->filter == NULL) 1063 if (evsel->filter == NULL)
1054 return perf_evsel__set_filter(evsel, filter); 1064 return perf_evsel__set_filter(evsel, filter);
1055 1065
1056 if (asprintf(&new_filter,"(%s) %s (%s)", evsel->filter, op, filter) > 0) { 1066 if (asprintf(&new_filter, fmt, evsel->filter, filter) > 0) {
1057 free(evsel->filter); 1067 free(evsel->filter);
1058 evsel->filter = new_filter; 1068 evsel->filter = new_filter;
1059 return 0; 1069 return 0;
@@ -1062,6 +1072,16 @@ int perf_evsel__append_filter(struct perf_evsel *evsel,
1062 return -1; 1072 return -1;
1063} 1073}
1064 1074
1075int perf_evsel__append_tp_filter(struct perf_evsel *evsel, const char *filter)
1076{
1077 return perf_evsel__append_filter(evsel, "(%s) && (%s)", filter);
1078}
1079
1080int perf_evsel__append_addr_filter(struct perf_evsel *evsel, const char *filter)
1081{
1082 return perf_evsel__append_filter(evsel, "%s,%s", filter);
1083}
1084
1065int perf_evsel__enable(struct perf_evsel *evsel) 1085int perf_evsel__enable(struct perf_evsel *evsel)
1066{ 1086{
1067 int nthreads = thread_map__nr(evsel->threads); 1087 int nthreads = thread_map__nr(evsel->threads);
@@ -1401,6 +1421,33 @@ static int __open_attr__fprintf(FILE *fp, const char *name, const char *val,
1401 return fprintf(fp, " %-32s %s\n", name, val); 1421 return fprintf(fp, " %-32s %s\n", name, val);
1402} 1422}
1403 1423
1424static bool ignore_missing_thread(struct perf_evsel *evsel,
1425 struct thread_map *threads,
1426 int thread, int err)
1427{
1428 if (!evsel->ignore_missing_thread)
1429 return false;
1430
1431 /* The system wide setup does not work with threads. */
1432 if (evsel->system_wide)
1433 return false;
1434
1435 /* The -ESRCH is perf event syscall errno for pid's not found. */
1436 if (err != -ESRCH)
1437 return false;
1438
1439 /* If there's only one thread, let it fail. */
1440 if (threads->nr == 1)
1441 return false;
1442
1443 if (thread_map__remove(threads, thread))
1444 return false;
1445
1446 pr_warning("WARNING: Ignored open failure for pid %d\n",
1447 thread_map__pid(threads, thread));
1448 return true;
1449}
1450
1404static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, 1451static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus,
1405 struct thread_map *threads) 1452 struct thread_map *threads)
1406{ 1453{
@@ -1456,29 +1503,47 @@ retry_sample_id:
1456 for (cpu = 0; cpu < cpus->nr; cpu++) { 1503 for (cpu = 0; cpu < cpus->nr; cpu++) {
1457 1504
1458 for (thread = 0; thread < nthreads; thread++) { 1505 for (thread = 0; thread < nthreads; thread++) {
1459 int group_fd; 1506 int fd, group_fd;
1460 1507
1461 if (!evsel->cgrp && !evsel->system_wide) 1508 if (!evsel->cgrp && !evsel->system_wide)
1462 pid = thread_map__pid(threads, thread); 1509 pid = thread_map__pid(threads, thread);
1463 1510
1464 group_fd = get_group_fd(evsel, cpu, thread); 1511 group_fd = get_group_fd(evsel, cpu, thread);
1465retry_open: 1512retry_open:
1466 pr_debug2("sys_perf_event_open: pid %d cpu %d group_fd %d flags %#lx\n", 1513 pr_debug2("sys_perf_event_open: pid %d cpu %d group_fd %d flags %#lx",
1467 pid, cpus->map[cpu], group_fd, flags); 1514 pid, cpus->map[cpu], group_fd, flags);
1468 1515
1469 FD(evsel, cpu, thread) = sys_perf_event_open(&evsel->attr, 1516 fd = sys_perf_event_open(&evsel->attr, pid, cpus->map[cpu],
1470 pid, 1517 group_fd, flags);
1471 cpus->map[cpu], 1518
1472 group_fd, flags); 1519 FD(evsel, cpu, thread) = fd;
1473 if (FD(evsel, cpu, thread) < 0) { 1520
1521 if (fd < 0) {
1474 err = -errno; 1522 err = -errno;
1475 pr_debug2("sys_perf_event_open failed, error %d\n", 1523
1524 if (ignore_missing_thread(evsel, threads, thread, err)) {
1525 /*
1526 * We just removed 1 thread, so take a step
1527 * back on thread index and lower the upper
1528 * nthreads limit.
1529 */
1530 nthreads--;
1531 thread--;
1532
1533 /* ... and pretend like nothing have happened. */
1534 err = 0;
1535 continue;
1536 }
1537
1538 pr_debug2("\nsys_perf_event_open failed, error %d\n",
1476 err); 1539 err);
1477 goto try_fallback; 1540 goto try_fallback;
1478 } 1541 }
1479 1542
1543 pr_debug2(" = %d\n", fd);
1544
1480 if (evsel->bpf_fd >= 0) { 1545 if (evsel->bpf_fd >= 0) {
1481 int evt_fd = FD(evsel, cpu, thread); 1546 int evt_fd = fd;
1482 int bpf_fd = evsel->bpf_fd; 1547 int bpf_fd = evsel->bpf_fd;
1483 1548
1484 err = ioctl(evt_fd, 1549 err = ioctl(evt_fd,
@@ -1728,7 +1793,6 @@ int perf_evsel__parse_sample(struct perf_evsel *evsel, union perf_event *event,
1728 data->cpu = data->pid = data->tid = -1; 1793 data->cpu = data->pid = data->tid = -1;
1729 data->stream_id = data->id = data->time = -1ULL; 1794 data->stream_id = data->id = data->time = -1ULL;
1730 data->period = evsel->attr.sample_period; 1795 data->period = evsel->attr.sample_period;
1731 data->weight = 0;
1732 data->cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; 1796 data->cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
1733 1797
1734 if (event->header.type != PERF_RECORD_SAMPLE) { 1798 if (event->header.type != PERF_RECORD_SAMPLE) {
@@ -1935,7 +1999,6 @@ int perf_evsel__parse_sample(struct perf_evsel *evsel, union perf_event *event,
1935 } 1999 }
1936 } 2000 }
1937 2001
1938 data->weight = 0;
1939 if (type & PERF_SAMPLE_WEIGHT) { 2002 if (type & PERF_SAMPLE_WEIGHT) {
1940 OVERFLOW_CHECK_u64(array); 2003 OVERFLOW_CHECK_u64(array);
1941 data->weight = *array; 2004 data->weight = *array;
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 4d44129e050b..06ef6f29efa1 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -46,6 +46,8 @@ enum {
46 PERF_EVSEL__CONFIG_TERM_INHERIT, 46 PERF_EVSEL__CONFIG_TERM_INHERIT,
47 PERF_EVSEL__CONFIG_TERM_MAX_STACK, 47 PERF_EVSEL__CONFIG_TERM_MAX_STACK,
48 PERF_EVSEL__CONFIG_TERM_OVERWRITE, 48 PERF_EVSEL__CONFIG_TERM_OVERWRITE,
49 PERF_EVSEL__CONFIG_TERM_DRV_CFG,
50 PERF_EVSEL__CONFIG_TERM_BRANCH,
49 PERF_EVSEL__CONFIG_TERM_MAX, 51 PERF_EVSEL__CONFIG_TERM_MAX,
50}; 52};
51 53
@@ -57,10 +59,12 @@ struct perf_evsel_config_term {
57 u64 freq; 59 u64 freq;
58 bool time; 60 bool time;
59 char *callgraph; 61 char *callgraph;
62 char *drv_cfg;
60 u64 stack_user; 63 u64 stack_user;
61 int max_stack; 64 int max_stack;
62 bool inherit; 65 bool inherit;
63 bool overwrite; 66 bool overwrite;
67 char *branch;
64 } val; 68 } val;
65}; 69};
66 70
@@ -116,6 +120,7 @@ struct perf_evsel {
116 bool tracking; 120 bool tracking;
117 bool per_pkg; 121 bool per_pkg;
118 bool precise_max; 122 bool precise_max;
123 bool ignore_missing_thread;
119 /* parse modifier helper */ 124 /* parse modifier helper */
120 int exclude_GH; 125 int exclude_GH;
121 int nr_members; 126 int nr_members;
@@ -233,8 +238,9 @@ void perf_evsel__set_sample_id(struct perf_evsel *evsel,
233 bool use_sample_identifier); 238 bool use_sample_identifier);
234 239
235int perf_evsel__set_filter(struct perf_evsel *evsel, const char *filter); 240int perf_evsel__set_filter(struct perf_evsel *evsel, const char *filter);
236int perf_evsel__append_filter(struct perf_evsel *evsel, 241int perf_evsel__append_tp_filter(struct perf_evsel *evsel, const char *filter);
237 const char *op, const char *filter); 242int perf_evsel__append_addr_filter(struct perf_evsel *evsel,
243 const char *filter);
238int perf_evsel__apply_filter(struct perf_evsel *evsel, int ncpus, int nthreads, 244int perf_evsel__apply_filter(struct perf_evsel *evsel, int ncpus, int nthreads,
239 const char *filter); 245 const char *filter);
240int perf_evsel__enable(struct perf_evsel *evsel); 246int perf_evsel__enable(struct perf_evsel *evsel);
@@ -386,6 +392,8 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,
386#define EVSEL__PRINT_ONELINE (1<<4) 392#define EVSEL__PRINT_ONELINE (1<<4)
387#define EVSEL__PRINT_SRCLINE (1<<5) 393#define EVSEL__PRINT_SRCLINE (1<<5)
388#define EVSEL__PRINT_UNKNOWN_AS_ADDR (1<<6) 394#define EVSEL__PRINT_UNKNOWN_AS_ADDR (1<<6)
395#define EVSEL__PRINT_CALLCHAIN_ARROW (1<<7)
396#define EVSEL__PRINT_SKIP_IGNORED (1<<8)
389 397
390struct callchain_cursor; 398struct callchain_cursor;
391 399
diff --git a/tools/perf/util/evsel_fprintf.c b/tools/perf/util/evsel_fprintf.c
index 3674e77ad640..6b2925542c0a 100644
--- a/tools/perf/util/evsel_fprintf.c
+++ b/tools/perf/util/evsel_fprintf.c
@@ -108,7 +108,10 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
108 int print_oneline = print_opts & EVSEL__PRINT_ONELINE; 108 int print_oneline = print_opts & EVSEL__PRINT_ONELINE;
109 int print_srcline = print_opts & EVSEL__PRINT_SRCLINE; 109 int print_srcline = print_opts & EVSEL__PRINT_SRCLINE;
110 int print_unknown_as_addr = print_opts & EVSEL__PRINT_UNKNOWN_AS_ADDR; 110 int print_unknown_as_addr = print_opts & EVSEL__PRINT_UNKNOWN_AS_ADDR;
111 int print_arrow = print_opts & EVSEL__PRINT_CALLCHAIN_ARROW;
112 int print_skip_ignored = print_opts & EVSEL__PRINT_SKIP_IGNORED;
111 char s = print_oneline ? ' ' : '\t'; 113 char s = print_oneline ? ' ' : '\t';
114 bool first = true;
112 115
113 if (sample->callchain) { 116 if (sample->callchain) {
114 struct addr_location node_al; 117 struct addr_location node_al;
@@ -122,11 +125,14 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
122 if (!node) 125 if (!node)
123 break; 126 break;
124 127
125 if (node->sym && node->sym->ignore) 128 if (node->sym && node->sym->ignore && print_skip_ignored)
126 goto next; 129 goto next;
127 130
128 printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " "); 131 printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " ");
129 132
133 if (print_arrow && !first)
134 printed += fprintf(fp, " <-");
135
130 if (print_ip) 136 if (print_ip)
131 printed += fprintf(fp, "%c%16" PRIx64, s, node->ip); 137 printed += fprintf(fp, "%c%16" PRIx64, s, node->ip);
132 138
@@ -140,7 +146,8 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
140 146
141 if (print_symoffset) { 147 if (print_symoffset) {
142 printed += __symbol__fprintf_symname_offs(node->sym, &node_al, 148 printed += __symbol__fprintf_symname_offs(node->sym, &node_al,
143 print_unknown_as_addr, fp); 149 print_unknown_as_addr,
150 true, fp);
144 } else { 151 } else {
145 printed += __symbol__fprintf_symname(node->sym, &node_al, 152 printed += __symbol__fprintf_symname(node->sym, &node_al,
146 print_unknown_as_addr, fp); 153 print_unknown_as_addr, fp);
@@ -158,6 +165,16 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
158 165
159 if (!print_oneline) 166 if (!print_oneline)
160 printed += fprintf(fp, "\n"); 167 printed += fprintf(fp, "\n");
168
169 if (symbol_conf.bt_stop_list &&
170 node->sym &&
171 node->sym->name &&
172 strlist__has_entry(symbol_conf.bt_stop_list,
173 node->sym->name)) {
174 break;
175 }
176
177 first = false;
161next: 178next:
162 callchain_cursor_advance(cursor); 179 callchain_cursor_advance(cursor);
163 } 180 }
@@ -181,7 +198,7 @@ int sample__fprintf_sym(struct perf_sample *sample, struct addr_location *al,
181 if (cursor != NULL) { 198 if (cursor != NULL) {
182 printed += sample__fprintf_callchain(sample, left_alignment, 199 printed += sample__fprintf_callchain(sample, left_alignment,
183 print_opts, cursor, fp); 200 print_opts, cursor, fp);
184 } else if (!(al->sym && al->sym->ignore)) { 201 } else {
185 printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " "); 202 printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " ");
186 203
187 if (print_ip) 204 if (print_ip)
@@ -191,7 +208,8 @@ int sample__fprintf_sym(struct perf_sample *sample, struct addr_location *al,
191 printed += fprintf(fp, " "); 208 printed += fprintf(fp, " ");
192 if (print_symoffset) { 209 if (print_symoffset) {
193 printed += __symbol__fprintf_symname_offs(al->sym, al, 210 printed += __symbol__fprintf_symname_offs(al->sym, al,
194 print_unknown_as_addr, fp); 211 print_unknown_as_addr,
212 true, fp);
195 } else { 213 } else {
196 printed += __symbol__fprintf_symname(al->sym, al, 214 printed += __symbol__fprintf_symname(al->sym, al,
197 print_unknown_as_addr, fp); 215 print_unknown_as_addr, fp);
diff --git a/tools/perf/util/genelf.c b/tools/perf/util/genelf.c
index c1ef805c6a8f..c540d47583e7 100644
--- a/tools/perf/util/genelf.c
+++ b/tools/perf/util/genelf.c
@@ -19,12 +19,18 @@
19#include <limits.h> 19#include <limits.h>
20#include <fcntl.h> 20#include <fcntl.h>
21#include <err.h> 21#include <err.h>
22#ifdef HAVE_DWARF_SUPPORT
22#include <dwarf.h> 23#include <dwarf.h>
24#endif
23 25
24#include "perf.h" 26#include "perf.h"
25#include "genelf.h" 27#include "genelf.h"
26#include "../util/jitdump.h" 28#include "../util/jitdump.h"
27 29
30#ifndef NT_GNU_BUILD_ID
31#define NT_GNU_BUILD_ID 3
32#endif
33
28#define JVMTI 34#define JVMTI
29 35
30#define BUILD_ID_URANDOM /* different uuid for each run */ 36#define BUILD_ID_URANDOM /* different uuid for each run */
@@ -67,6 +73,8 @@ static char shd_string_table[] = {
67 '.', 'd', 'e', 'b', 'u', 'g', '_', 'l', 'i', 'n', 'e', 0, /* 52 */ 73 '.', 'd', 'e', 'b', 'u', 'g', '_', 'l', 'i', 'n', 'e', 0, /* 52 */
68 '.', 'd', 'e', 'b', 'u', 'g', '_', 'i', 'n', 'f', 'o', 0, /* 64 */ 74 '.', 'd', 'e', 'b', 'u', 'g', '_', 'i', 'n', 'f', 'o', 0, /* 64 */
69 '.', 'd', 'e', 'b', 'u', 'g', '_', 'a', 'b', 'b', 'r', 'e', 'v', 0, /* 76 */ 75 '.', 'd', 'e', 'b', 'u', 'g', '_', 'a', 'b', 'b', 'r', 'e', 'v', 0, /* 76 */
76 '.', 'e', 'h', '_', 'f', 'r', 'a', 'm', 'e', '_', 'h', 'd', 'r', 0, /* 90 */
77 '.', 'e', 'h', '_', 'f', 'r', 'a', 'm', 'e', 0, /* 104 */
70}; 78};
71 79
72static struct buildid_note { 80static struct buildid_note {
@@ -147,6 +155,86 @@ gen_build_id(struct buildid_note *note, unsigned long load_addr, const void *cod
147} 155}
148#endif 156#endif
149 157
158static int
159jit_add_eh_frame_info(Elf *e, void* unwinding, uint64_t unwinding_header_size,
160 uint64_t unwinding_size, uint64_t base_offset)
161{
162 Elf_Data *d;
163 Elf_Scn *scn;
164 Elf_Shdr *shdr;
165 uint64_t unwinding_table_size = unwinding_size - unwinding_header_size;
166
167 /*
168 * setup eh_frame section
169 */
170 scn = elf_newscn(e);
171 if (!scn) {
172 warnx("cannot create section");
173 return -1;
174 }
175
176 d = elf_newdata(scn);
177 if (!d) {
178 warnx("cannot get new data");
179 return -1;
180 }
181
182 d->d_align = 8;
183 d->d_off = 0LL;
184 d->d_buf = unwinding;
185 d->d_type = ELF_T_BYTE;
186 d->d_size = unwinding_table_size;
187 d->d_version = EV_CURRENT;
188
189 shdr = elf_getshdr(scn);
190 if (!shdr) {
191 warnx("cannot get section header");
192 return -1;
193 }
194
195 shdr->sh_name = 104;
196 shdr->sh_type = SHT_PROGBITS;
197 shdr->sh_addr = base_offset;
198 shdr->sh_flags = SHF_ALLOC;
199 shdr->sh_entsize = 0;
200
201 /*
202 * setup eh_frame_hdr section
203 */
204 scn = elf_newscn(e);
205 if (!scn) {
206 warnx("cannot create section");
207 return -1;
208 }
209
210 d = elf_newdata(scn);
211 if (!d) {
212 warnx("cannot get new data");
213 return -1;
214 }
215
216 d->d_align = 4;
217 d->d_off = 0LL;
218 d->d_buf = unwinding + unwinding_table_size;
219 d->d_type = ELF_T_BYTE;
220 d->d_size = unwinding_header_size;
221 d->d_version = EV_CURRENT;
222
223 shdr = elf_getshdr(scn);
224 if (!shdr) {
225 warnx("cannot get section header");
226 return -1;
227 }
228
229 shdr->sh_name = 90;
230 shdr->sh_type = SHT_PROGBITS;
231 shdr->sh_addr = base_offset + unwinding_table_size;
232 shdr->sh_flags = SHF_ALLOC;
233 shdr->sh_entsize = 0;
234
235 return 0;
236}
237
150/* 238/*
151 * fd: file descriptor open for writing for the output file 239 * fd: file descriptor open for writing for the output file
152 * load_addr: code load address (could be zero, just used for buildid) 240 * load_addr: code load address (could be zero, just used for buildid)
@@ -157,13 +245,15 @@ gen_build_id(struct buildid_note *note, unsigned long load_addr, const void *cod
157int 245int
158jit_write_elf(int fd, uint64_t load_addr, const char *sym, 246jit_write_elf(int fd, uint64_t load_addr, const char *sym,
159 const void *code, int csize, 247 const void *code, int csize,
160 void *debug, int nr_debug_entries) 248 void *debug __maybe_unused, int nr_debug_entries __maybe_unused,
249 void *unwinding, uint64_t unwinding_header_size, uint64_t unwinding_size)
161{ 250{
162 Elf *e; 251 Elf *e;
163 Elf_Data *d; 252 Elf_Data *d;
164 Elf_Scn *scn; 253 Elf_Scn *scn;
165 Elf_Ehdr *ehdr; 254 Elf_Ehdr *ehdr;
166 Elf_Shdr *shdr; 255 Elf_Shdr *shdr;
256 uint64_t eh_frame_base_offset;
167 char *strsym = NULL; 257 char *strsym = NULL;
168 int symlen; 258 int symlen;
169 int retval = -1; 259 int retval = -1;
@@ -194,7 +284,7 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
194 ehdr->e_type = ET_DYN; 284 ehdr->e_type = ET_DYN;
195 ehdr->e_entry = GEN_ELF_TEXT_OFFSET; 285 ehdr->e_entry = GEN_ELF_TEXT_OFFSET;
196 ehdr->e_version = EV_CURRENT; 286 ehdr->e_version = EV_CURRENT;
197 ehdr->e_shstrndx= 2; /* shdr index for section name */ 287 ehdr->e_shstrndx= unwinding ? 4 : 2; /* shdr index for section name */
198 288
199 /* 289 /*
200 * setup text section 290 * setup text section
@@ -231,6 +321,18 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
231 shdr->sh_entsize = 0; 321 shdr->sh_entsize = 0;
232 322
233 /* 323 /*
324 * Setup .eh_frame_hdr and .eh_frame
325 */
326 if (unwinding) {
327 eh_frame_base_offset = ALIGN_8(GEN_ELF_TEXT_OFFSET + csize);
328 retval = jit_add_eh_frame_info(e, unwinding,
329 unwinding_header_size, unwinding_size,
330 eh_frame_base_offset);
331 if (retval)
332 goto error;
333 }
334
335 /*
234 * setup section headers string table 336 * setup section headers string table
235 */ 337 */
236 scn = elf_newscn(e); 338 scn = elf_newscn(e);
@@ -298,7 +400,7 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
298 shdr->sh_type = SHT_SYMTAB; 400 shdr->sh_type = SHT_SYMTAB;
299 shdr->sh_flags = 0; 401 shdr->sh_flags = 0;
300 shdr->sh_entsize = sizeof(Elf_Sym); 402 shdr->sh_entsize = sizeof(Elf_Sym);
301 shdr->sh_link = 4; /* index of .strtab section */ 403 shdr->sh_link = unwinding ? 6 : 4; /* index of .strtab section */
302 404
303 /* 405 /*
304 * setup symbols string table 406 * setup symbols string table
@@ -386,11 +488,14 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
386 shdr->sh_size = sizeof(bnote); 488 shdr->sh_size = sizeof(bnote);
387 shdr->sh_entsize = 0; 489 shdr->sh_entsize = 0;
388 490
491#ifdef HAVE_DWARF_SUPPORT
389 if (debug && nr_debug_entries) { 492 if (debug && nr_debug_entries) {
390 retval = jit_add_debug_info(e, load_addr, debug, nr_debug_entries); 493 retval = jit_add_debug_info(e, load_addr, debug, nr_debug_entries);
391 if (retval) 494 if (retval)
392 goto error; 495 goto error;
393 } else { 496 } else
497#endif
498 {
394 if (elf_update(e, ELF_C_WRITE) < 0) { 499 if (elf_update(e, ELF_C_WRITE) < 0) {
395 warnx("elf_update 4 failed"); 500 warnx("elf_update 4 failed");
396 goto error; 501 goto error;
diff --git a/tools/perf/util/genelf.h b/tools/perf/util/genelf.h
index 2fbeb59c4bdd..2424bd9862a3 100644
--- a/tools/perf/util/genelf.h
+++ b/tools/perf/util/genelf.h
@@ -3,9 +3,12 @@
3 3
4/* genelf.c */ 4/* genelf.c */
5int jit_write_elf(int fd, uint64_t code_addr, const char *sym, 5int jit_write_elf(int fd, uint64_t code_addr, const char *sym,
6 const void *code, int csize, void *debug, int nr_debug_entries); 6 const void *code, int csize, void *debug, int nr_debug_entries,
7 void *unwinding, uint64_t unwinding_header_size, uint64_t unwinding_size);
8#ifdef HAVE_DWARF_SUPPORT
7/* genelf_debug.c */ 9/* genelf_debug.c */
8int jit_add_debug_info(Elf *e, uint64_t code_addr, void *debug, int nr_debug_entries); 10int jit_add_debug_info(Elf *e, uint64_t code_addr, void *debug, int nr_debug_entries);
11#endif
9 12
10#if defined(__arm__) 13#if defined(__arm__)
11#define GEN_ELF_ARCH EM_ARM 14#define GEN_ELF_ARCH EM_ARM
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 8f0db4007282..d89c9c7ef4e5 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -828,8 +828,7 @@ static int write_group_desc(int fd, struct perf_header *h __maybe_unused,
828 * default get_cpuid(): nothing gets recorded 828 * default get_cpuid(): nothing gets recorded
829 * actual implementation must be in arch/$(ARCH)/util/header.c 829 * actual implementation must be in arch/$(ARCH)/util/header.c
830 */ 830 */
831int __attribute__ ((weak)) get_cpuid(char *buffer __maybe_unused, 831int __weak get_cpuid(char *buffer __maybe_unused, size_t sz __maybe_unused)
832 size_t sz __maybe_unused)
833{ 832{
834 return -1; 833 return -1;
835} 834}
@@ -1896,7 +1895,6 @@ static int process_numa_topology(struct perf_file_section *section __maybe_unuse
1896 if (ph->needs_swap) 1895 if (ph->needs_swap)
1897 nr = bswap_32(nr); 1896 nr = bswap_32(nr);
1898 1897
1899 ph->env.nr_numa_nodes = nr;
1900 nodes = zalloc(sizeof(*nodes) * nr); 1898 nodes = zalloc(sizeof(*nodes) * nr);
1901 if (!nodes) 1899 if (!nodes)
1902 return -ENOMEM; 1900 return -ENOMEM;
@@ -1933,6 +1931,7 @@ static int process_numa_topology(struct perf_file_section *section __maybe_unuse
1933 1931
1934 free(str); 1932 free(str);
1935 } 1933 }
1934 ph->env.nr_numa_nodes = nr;
1936 ph->env.numa_nodes = nodes; 1935 ph->env.numa_nodes = nodes;
1937 return 0; 1936 return 0;
1938 1937
@@ -2251,11 +2250,28 @@ int perf_header__fprintf_info(struct perf_session *session, FILE *fp, bool full)
2251 struct header_print_data hd; 2250 struct header_print_data hd;
2252 struct perf_header *header = &session->header; 2251 struct perf_header *header = &session->header;
2253 int fd = perf_data_file__fd(session->file); 2252 int fd = perf_data_file__fd(session->file);
2253 struct stat st;
2254 int ret, bit;
2255
2254 hd.fp = fp; 2256 hd.fp = fp;
2255 hd.full = full; 2257 hd.full = full;
2256 2258
2259 ret = fstat(fd, &st);
2260 if (ret == -1)
2261 return -1;
2262
2263 fprintf(fp, "# captured on: %s", ctime(&st.st_ctime));
2264
2257 perf_header__process_sections(header, fd, &hd, 2265 perf_header__process_sections(header, fd, &hd,
2258 perf_file_section__fprintf_info); 2266 perf_file_section__fprintf_info);
2267
2268 fprintf(fp, "# missing features: ");
2269 for_each_clear_bit(bit, header->adds_features, HEADER_LAST_FEATURE) {
2270 if (bit)
2271 fprintf(fp, "%s ", feat_ops[bit].name);
2272 }
2273
2274 fprintf(fp, "\n");
2259 return 0; 2275 return 0;
2260} 2276}
2261 2277
@@ -2274,7 +2290,7 @@ static int do_write_feat(int fd, struct perf_header *h, int type,
2274 2290
2275 err = feat_ops[type].write(fd, h, evlist); 2291 err = feat_ops[type].write(fd, h, evlist);
2276 if (err < 0) { 2292 if (err < 0) {
2277 pr_debug("failed to write feature %d\n", type); 2293 pr_debug("failed to write feature %s\n", feat_ops[type].name);
2278 2294
2279 /* undo anything written */ 2295 /* undo anything written */
2280 lseek(fd, (*p)->offset, SEEK_SET); 2296 lseek(fd, (*p)->offset, SEEK_SET);
diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h
index d306ca118449..d30109b421ee 100644
--- a/tools/perf/util/header.h
+++ b/tools/perf/util/header.h
@@ -151,4 +151,5 @@ int write_padded(int fd, const void *bf, size_t count, size_t count_aligned);
151 */ 151 */
152int get_cpuid(char *buffer, size_t sz); 152int get_cpuid(char *buffer, size_t sz);
153 153
154char *get_cpuid_str(void);
154#endif /* __PERF_HEADER_H */ 155#endif /* __PERF_HEADER_H */
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index de15dbcdcecf..6770a9645609 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -177,8 +177,10 @@ void hists__calc_col_len(struct hists *hists, struct hist_entry *h)
177 hists__new_col_len(hists, HISTC_LOCAL_WEIGHT, 12); 177 hists__new_col_len(hists, HISTC_LOCAL_WEIGHT, 12);
178 hists__new_col_len(hists, HISTC_GLOBAL_WEIGHT, 12); 178 hists__new_col_len(hists, HISTC_GLOBAL_WEIGHT, 12);
179 179
180 if (h->srcline) 180 if (h->srcline) {
181 hists__new_col_len(hists, HISTC_SRCLINE, strlen(h->srcline)); 181 len = MAX(strlen(h->srcline), strlen(sort_srcline.se_header));
182 hists__new_col_len(hists, HISTC_SRCLINE, len);
183 }
182 184
183 if (h->srcfile) 185 if (h->srcfile)
184 hists__new_col_len(hists, HISTC_SRCFILE, strlen(h->srcfile)); 186 hists__new_col_len(hists, HISTC_SRCFILE, strlen(h->srcfile));
@@ -417,6 +419,8 @@ static int hist_entry__init(struct hist_entry *he,
417 } 419 }
418 INIT_LIST_HEAD(&he->pairs.node); 420 INIT_LIST_HEAD(&he->pairs.node);
419 thread__get(he->thread); 421 thread__get(he->thread);
422 he->hroot_in = RB_ROOT;
423 he->hroot_out = RB_ROOT;
420 424
421 if (!symbol_conf.report_hierarchy) 425 if (!symbol_conf.report_hierarchy)
422 he->leaf = true; 426 he->leaf = true;
@@ -1191,6 +1195,7 @@ static void hist_entry__check_and_remove_filter(struct hist_entry *he,
1191 case HIST_FILTER__GUEST: 1195 case HIST_FILTER__GUEST:
1192 case HIST_FILTER__HOST: 1196 case HIST_FILTER__HOST:
1193 case HIST_FILTER__SOCKET: 1197 case HIST_FILTER__SOCKET:
1198 case HIST_FILTER__C2C:
1194 default: 1199 default:
1195 return; 1200 return;
1196 } 1201 }
@@ -1596,18 +1601,18 @@ static void hists__hierarchy_output_resort(struct hists *hists,
1596 if (prog) 1601 if (prog)
1597 ui_progress__update(prog, 1); 1602 ui_progress__update(prog, 1);
1598 1603
1604 hists->nr_entries++;
1605 if (!he->filtered) {
1606 hists->nr_non_filtered_entries++;
1607 hists__calc_col_len(hists, he);
1608 }
1609
1599 if (!he->leaf) { 1610 if (!he->leaf) {
1600 hists__hierarchy_output_resort(hists, prog, 1611 hists__hierarchy_output_resort(hists, prog,
1601 &he->hroot_in, 1612 &he->hroot_in,
1602 &he->hroot_out, 1613 &he->hroot_out,
1603 min_callchain_hits, 1614 min_callchain_hits,
1604 use_callchain); 1615 use_callchain);
1605 hists->nr_entries++;
1606 if (!he->filtered) {
1607 hists->nr_non_filtered_entries++;
1608 hists__calc_col_len(hists, he);
1609 }
1610
1611 continue; 1616 continue;
1612 } 1617 }
1613 1618
@@ -2149,6 +2154,50 @@ out:
2149 return he; 2154 return he;
2150} 2155}
2151 2156
2157static struct hist_entry *add_dummy_hierarchy_entry(struct hists *hists,
2158 struct rb_root *root,
2159 struct hist_entry *pair)
2160{
2161 struct rb_node **p;
2162 struct rb_node *parent = NULL;
2163 struct hist_entry *he;
2164 struct perf_hpp_fmt *fmt;
2165
2166 p = &root->rb_node;
2167 while (*p != NULL) {
2168 int64_t cmp = 0;
2169
2170 parent = *p;
2171 he = rb_entry(parent, struct hist_entry, rb_node_in);
2172
2173 perf_hpp_list__for_each_sort_list(he->hpp_list, fmt) {
2174 cmp = fmt->collapse(fmt, he, pair);
2175 if (cmp)
2176 break;
2177 }
2178 if (!cmp)
2179 goto out;
2180
2181 if (cmp < 0)
2182 p = &parent->rb_left;
2183 else
2184 p = &parent->rb_right;
2185 }
2186
2187 he = hist_entry__new(pair, true);
2188 if (he) {
2189 rb_link_node(&he->rb_node_in, parent, p);
2190 rb_insert_color(&he->rb_node_in, root);
2191
2192 he->dummy = true;
2193 he->hists = hists;
2194 memset(&he->stat, 0, sizeof(he->stat));
2195 hists__inc_stats(hists, he);
2196 }
2197out:
2198 return he;
2199}
2200
2152static struct hist_entry *hists__find_entry(struct hists *hists, 2201static struct hist_entry *hists__find_entry(struct hists *hists,
2153 struct hist_entry *he) 2202 struct hist_entry *he)
2154{ 2203{
@@ -2174,6 +2223,51 @@ static struct hist_entry *hists__find_entry(struct hists *hists,
2174 return NULL; 2223 return NULL;
2175} 2224}
2176 2225
2226static struct hist_entry *hists__find_hierarchy_entry(struct rb_root *root,
2227 struct hist_entry *he)
2228{
2229 struct rb_node *n = root->rb_node;
2230
2231 while (n) {
2232 struct hist_entry *iter;
2233 struct perf_hpp_fmt *fmt;
2234 int64_t cmp = 0;
2235
2236 iter = rb_entry(n, struct hist_entry, rb_node_in);
2237 perf_hpp_list__for_each_sort_list(he->hpp_list, fmt) {
2238 cmp = fmt->collapse(fmt, iter, he);
2239 if (cmp)
2240 break;
2241 }
2242
2243 if (cmp < 0)
2244 n = n->rb_left;
2245 else if (cmp > 0)
2246 n = n->rb_right;
2247 else
2248 return iter;
2249 }
2250
2251 return NULL;
2252}
2253
2254static void hists__match_hierarchy(struct rb_root *leader_root,
2255 struct rb_root *other_root)
2256{
2257 struct rb_node *nd;
2258 struct hist_entry *pos, *pair;
2259
2260 for (nd = rb_first(leader_root); nd; nd = rb_next(nd)) {
2261 pos = rb_entry(nd, struct hist_entry, rb_node_in);
2262 pair = hists__find_hierarchy_entry(other_root, pos);
2263
2264 if (pair) {
2265 hist_entry__add_pair(pair, pos);
2266 hists__match_hierarchy(&pos->hroot_in, &pair->hroot_in);
2267 }
2268 }
2269}
2270
2177/* 2271/*
2178 * Look for pairs to link to the leader buckets (hist_entries): 2272 * Look for pairs to link to the leader buckets (hist_entries):
2179 */ 2273 */
@@ -2183,6 +2277,12 @@ void hists__match(struct hists *leader, struct hists *other)
2183 struct rb_node *nd; 2277 struct rb_node *nd;
2184 struct hist_entry *pos, *pair; 2278 struct hist_entry *pos, *pair;
2185 2279
2280 if (symbol_conf.report_hierarchy) {
2281 /* hierarchy report always collapses entries */
2282 return hists__match_hierarchy(&leader->entries_collapsed,
2283 &other->entries_collapsed);
2284 }
2285
2186 if (hists__has(leader, need_collapse)) 2286 if (hists__has(leader, need_collapse))
2187 root = &leader->entries_collapsed; 2287 root = &leader->entries_collapsed;
2188 else 2288 else
@@ -2197,6 +2297,50 @@ void hists__match(struct hists *leader, struct hists *other)
2197 } 2297 }
2198} 2298}
2199 2299
2300static int hists__link_hierarchy(struct hists *leader_hists,
2301 struct hist_entry *parent,
2302 struct rb_root *leader_root,
2303 struct rb_root *other_root)
2304{
2305 struct rb_node *nd;
2306 struct hist_entry *pos, *leader;
2307
2308 for (nd = rb_first(other_root); nd; nd = rb_next(nd)) {
2309 pos = rb_entry(nd, struct hist_entry, rb_node_in);
2310
2311 if (hist_entry__has_pairs(pos)) {
2312 bool found = false;
2313
2314 list_for_each_entry(leader, &pos->pairs.head, pairs.node) {
2315 if (leader->hists == leader_hists) {
2316 found = true;
2317 break;
2318 }
2319 }
2320 if (!found)
2321 return -1;
2322 } else {
2323 leader = add_dummy_hierarchy_entry(leader_hists,
2324 leader_root, pos);
2325 if (leader == NULL)
2326 return -1;
2327
2328 /* do not point parent in the pos */
2329 leader->parent_he = parent;
2330
2331 hist_entry__add_pair(pos, leader);
2332 }
2333
2334 if (!pos->leaf) {
2335 if (hists__link_hierarchy(leader_hists, leader,
2336 &leader->hroot_in,
2337 &pos->hroot_in) < 0)
2338 return -1;
2339 }
2340 }
2341 return 0;
2342}
2343
2200/* 2344/*
2201 * Look for entries in the other hists that are not present in the leader, if 2345 * Look for entries in the other hists that are not present in the leader, if
2202 * we find them, just add a dummy entry on the leader hists, with period=0, 2346 * we find them, just add a dummy entry on the leader hists, with period=0,
@@ -2208,6 +2352,13 @@ int hists__link(struct hists *leader, struct hists *other)
2208 struct rb_node *nd; 2352 struct rb_node *nd;
2209 struct hist_entry *pos, *pair; 2353 struct hist_entry *pos, *pair;
2210 2354
2355 if (symbol_conf.report_hierarchy) {
2356 /* hierarchy report always collapses entries */
2357 return hists__link_hierarchy(leader, NULL,
2358 &leader->entries_collapsed,
2359 &other->entries_collapsed);
2360 }
2361
2211 if (hists__has(other, need_collapse)) 2362 if (hists__has(other, need_collapse))
2212 root = &other->entries_collapsed; 2363 root = &other->entries_collapsed;
2213 else 2364 else
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 0a1edf1ab450..d4b6514eeef5 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -22,6 +22,7 @@ enum hist_filter {
22 HIST_FILTER__GUEST, 22 HIST_FILTER__GUEST,
23 HIST_FILTER__HOST, 23 HIST_FILTER__HOST,
24 HIST_FILTER__SOCKET, 24 HIST_FILTER__SOCKET,
25 HIST_FILTER__C2C,
25}; 26};
26 27
27enum hist_column { 28enum hist_column {
@@ -230,7 +231,7 @@ struct perf_hpp {
230struct perf_hpp_fmt { 231struct perf_hpp_fmt {
231 const char *name; 232 const char *name;
232 int (*header)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 233 int (*header)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
233 struct hists *hists); 234 struct hists *hists, int line, int *span);
234 int (*width)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 235 int (*width)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
235 struct hists *hists); 236 struct hists *hists);
236 int (*color)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 237 int (*color)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
@@ -259,6 +260,7 @@ struct perf_hpp_list {
259 struct list_head fields; 260 struct list_head fields;
260 struct list_head sorts; 261 struct list_head sorts;
261 262
263 int nr_header_lines;
262 int need_collapse; 264 int need_collapse;
263 int parent; 265 int parent;
264 int sym; 266 int sym;
@@ -367,6 +369,7 @@ static inline bool perf_hpp__should_skip(struct perf_hpp_fmt *format,
367void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists); 369void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists);
368void perf_hpp__reset_sort_width(struct perf_hpp_fmt *fmt, struct hists *hists); 370void perf_hpp__reset_sort_width(struct perf_hpp_fmt *fmt, struct hists *hists);
369void perf_hpp__set_user_width(const char *width_list_str); 371void perf_hpp__set_user_width(const char *width_list_str);
372void hists__reset_column_width(struct hists *hists);
370 373
371typedef u64 (*hpp_field_fn)(struct hist_entry *he); 374typedef u64 (*hpp_field_fn)(struct hist_entry *he);
372typedef int (*hpp_callback_fn)(struct perf_hpp *hpp, bool front); 375typedef int (*hpp_callback_fn)(struct perf_hpp *hpp, bool front);
@@ -483,5 +486,10 @@ static inline struct rb_node *rb_hierarchy_next(struct rb_node *node)
483#define HIERARCHY_INDENT 3 486#define HIERARCHY_INDENT 3
484 487
485bool hist_entry__has_hierarchy_children(struct hist_entry *he, float limit); 488bool hist_entry__has_hierarchy_children(struct hist_entry *he, float limit);
489int hpp_color_scnprintf(struct perf_hpp *hpp, const char *fmt, ...);
490int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...);
491int __hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp,
492 struct perf_hpp_list *hpp_list);
493int hists__fprintf_headers(struct hists *hists, FILE *fp);
486 494
487#endif /* __PERF_HIST_H */ 495#endif /* __PERF_HIST_H */
diff --git a/tools/perf/util/include/dwarf-regs.h b/tools/perf/util/include/dwarf-regs.h
index 07c644ed64c4..43bfd8da7919 100644
--- a/tools/perf/util/include/dwarf-regs.h
+++ b/tools/perf/util/include/dwarf-regs.h
@@ -3,6 +3,12 @@
3 3
4#ifdef HAVE_DWARF_SUPPORT 4#ifdef HAVE_DWARF_SUPPORT
5const char *get_arch_regstr(unsigned int n); 5const char *get_arch_regstr(unsigned int n);
6/*
7 * get_dwarf_regstr - Returns ftrace register string from DWARF regnum
8 * n: DWARF register number
9 * machine: ELF machine signature (EM_*)
10 */
11const char *get_dwarf_regstr(unsigned int n, unsigned int machine);
6#endif 12#endif
7 13
8#ifdef HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET 14#ifdef HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
diff --git a/tools/perf/util/intel-bts.c b/tools/perf/util/intel-bts.c
index 749e6f2e37ca..6c2eb5da4afc 100644
--- a/tools/perf/util/intel-bts.c
+++ b/tools/perf/util/intel-bts.c
@@ -295,6 +295,7 @@ static int intel_bts_synth_branch_sample(struct intel_bts_queue *btsq,
295 sample.cpu = btsq->cpu; 295 sample.cpu = btsq->cpu;
296 sample.flags = btsq->sample_flags; 296 sample.flags = btsq->sample_flags;
297 sample.insn_len = btsq->intel_pt_insn.length; 297 sample.insn_len = btsq->intel_pt_insn.length;
298 memcpy(sample.insn, btsq->intel_pt_insn.buf, INTEL_PT_INSN_BUF_SZ);
298 299
299 if (bts->synth_opts.inject) { 300 if (bts->synth_opts.inject) {
300 event.sample.header.size = bts->branches_event_size; 301 event.sample.header.size = bts->branches_event_size;
@@ -319,15 +320,12 @@ static int intel_bts_get_next_insn(struct intel_bts_queue *btsq, u64 ip)
319 struct machine *machine = btsq->bts->machine; 320 struct machine *machine = btsq->bts->machine;
320 struct thread *thread; 321 struct thread *thread;
321 struct addr_location al; 322 struct addr_location al;
322 unsigned char buf[1024]; 323 unsigned char buf[INTEL_PT_INSN_BUF_SZ];
323 size_t bufsz;
324 ssize_t len; 324 ssize_t len;
325 int x86_64; 325 int x86_64;
326 uint8_t cpumode; 326 uint8_t cpumode;
327 int err = -1; 327 int err = -1;
328 328
329 bufsz = intel_pt_insn_max_size();
330
331 if (machine__kernel_ip(machine, ip)) 329 if (machine__kernel_ip(machine, ip))
332 cpumode = PERF_RECORD_MISC_KERNEL; 330 cpumode = PERF_RECORD_MISC_KERNEL;
333 else 331 else
@@ -341,12 +339,13 @@ static int intel_bts_get_next_insn(struct intel_bts_queue *btsq, u64 ip)
341 if (!al.map || !al.map->dso) 339 if (!al.map || !al.map->dso)
342 goto out_put; 340 goto out_put;
343 341
344 len = dso__data_read_addr(al.map->dso, al.map, machine, ip, buf, bufsz); 342 len = dso__data_read_addr(al.map->dso, al.map, machine, ip, buf,
343 INTEL_PT_INSN_BUF_SZ);
345 if (len <= 0) 344 if (len <= 0)
346 goto out_put; 345 goto out_put;
347 346
348 /* Load maps to ensure dso->is_64_bit has been updated */ 347 /* Load maps to ensure dso->is_64_bit has been updated */
349 map__load(al.map, machine->symbol_filter); 348 map__load(al.map);
350 349
351 x86_64 = al.map->dso->is_64_bit; 350 x86_64 = al.map->dso->is_64_bit;
352 351
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
index 8ff6c6a61291..e4e7dc781d21 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
@@ -80,6 +80,7 @@ struct intel_pt_decoder {
80 int (*walk_insn)(struct intel_pt_insn *intel_pt_insn, 80 int (*walk_insn)(struct intel_pt_insn *intel_pt_insn,
81 uint64_t *insn_cnt_ptr, uint64_t *ip, uint64_t to_ip, 81 uint64_t *insn_cnt_ptr, uint64_t *ip, uint64_t to_ip,
82 uint64_t max_insn_cnt, void *data); 82 uint64_t max_insn_cnt, void *data);
83 bool (*pgd_ip)(uint64_t ip, void *data);
83 void *data; 84 void *data;
84 struct intel_pt_state state; 85 struct intel_pt_state state;
85 const unsigned char *buf; 86 const unsigned char *buf;
@@ -89,6 +90,7 @@ struct intel_pt_decoder {
89 bool pge; 90 bool pge;
90 bool have_tma; 91 bool have_tma;
91 bool have_cyc; 92 bool have_cyc;
93 bool fixup_last_mtc;
92 uint64_t pos; 94 uint64_t pos;
93 uint64_t last_ip; 95 uint64_t last_ip;
94 uint64_t ip; 96 uint64_t ip;
@@ -186,6 +188,7 @@ struct intel_pt_decoder *intel_pt_decoder_new(struct intel_pt_params *params)
186 188
187 decoder->get_trace = params->get_trace; 189 decoder->get_trace = params->get_trace;
188 decoder->walk_insn = params->walk_insn; 190 decoder->walk_insn = params->walk_insn;
191 decoder->pgd_ip = params->pgd_ip;
189 decoder->data = params->data; 192 decoder->data = params->data;
190 decoder->return_compression = params->return_compression; 193 decoder->return_compression = params->return_compression;
191 194
@@ -584,10 +587,31 @@ struct intel_pt_calc_cyc_to_tsc_info {
584 uint64_t tsc_timestamp; 587 uint64_t tsc_timestamp;
585 uint64_t timestamp; 588 uint64_t timestamp;
586 bool have_tma; 589 bool have_tma;
590 bool fixup_last_mtc;
587 bool from_mtc; 591 bool from_mtc;
588 double cbr_cyc_to_tsc; 592 double cbr_cyc_to_tsc;
589}; 593};
590 594
595/*
596 * MTC provides a 8-bit slice of CTC but the TMA packet only provides the lower
597 * 16 bits of CTC. If mtc_shift > 8 then some of the MTC bits are not in the CTC
598 * provided by the TMA packet. Fix-up the last_mtc calculated from the TMA
599 * packet by copying the missing bits from the current MTC assuming the least
600 * difference between the two, and that the current MTC comes after last_mtc.
601 */
602static void intel_pt_fixup_last_mtc(uint32_t mtc, int mtc_shift,
603 uint32_t *last_mtc)
604{
605 uint32_t first_missing_bit = 1U << (16 - mtc_shift);
606 uint32_t mask = ~(first_missing_bit - 1);
607
608 *last_mtc |= mtc & mask;
609 if (*last_mtc >= mtc) {
610 *last_mtc -= first_missing_bit;
611 *last_mtc &= 0xff;
612 }
613}
614
591static int intel_pt_calc_cyc_cb(struct intel_pt_pkt_info *pkt_info) 615static int intel_pt_calc_cyc_cb(struct intel_pt_pkt_info *pkt_info)
592{ 616{
593 struct intel_pt_decoder *decoder = pkt_info->decoder; 617 struct intel_pt_decoder *decoder = pkt_info->decoder;
@@ -617,6 +641,11 @@ static int intel_pt_calc_cyc_cb(struct intel_pt_pkt_info *pkt_info)
617 return 0; 641 return 0;
618 642
619 mtc = pkt_info->packet.payload; 643 mtc = pkt_info->packet.payload;
644 if (decoder->mtc_shift > 8 && data->fixup_last_mtc) {
645 data->fixup_last_mtc = false;
646 intel_pt_fixup_last_mtc(mtc, decoder->mtc_shift,
647 &data->last_mtc);
648 }
620 if (mtc > data->last_mtc) 649 if (mtc > data->last_mtc)
621 mtc_delta = mtc - data->last_mtc; 650 mtc_delta = mtc - data->last_mtc;
622 else 651 else
@@ -685,6 +714,7 @@ static int intel_pt_calc_cyc_cb(struct intel_pt_pkt_info *pkt_info)
685 714
686 data->ctc_delta = 0; 715 data->ctc_delta = 0;
687 data->have_tma = true; 716 data->have_tma = true;
717 data->fixup_last_mtc = true;
688 718
689 return 0; 719 return 0;
690 720
@@ -751,6 +781,7 @@ static void intel_pt_calc_cyc_to_tsc(struct intel_pt_decoder *decoder,
751 .tsc_timestamp = decoder->tsc_timestamp, 781 .tsc_timestamp = decoder->tsc_timestamp,
752 .timestamp = decoder->timestamp, 782 .timestamp = decoder->timestamp,
753 .have_tma = decoder->have_tma, 783 .have_tma = decoder->have_tma,
784 .fixup_last_mtc = decoder->fixup_last_mtc,
754 .from_mtc = from_mtc, 785 .from_mtc = from_mtc,
755 .cbr_cyc_to_tsc = 0, 786 .cbr_cyc_to_tsc = 0,
756 }; 787 };
@@ -949,6 +980,8 @@ out:
949out_no_progress: 980out_no_progress:
950 decoder->state.insn_op = intel_pt_insn->op; 981 decoder->state.insn_op = intel_pt_insn->op;
951 decoder->state.insn_len = intel_pt_insn->length; 982 decoder->state.insn_len = intel_pt_insn->length;
983 memcpy(decoder->state.insn, intel_pt_insn->buf,
984 INTEL_PT_INSN_BUF_SZ);
952 985
953 if (decoder->tx_flags & INTEL_PT_IN_TX) 986 if (decoder->tx_flags & INTEL_PT_IN_TX)
954 decoder->state.flags |= INTEL_PT_IN_TX; 987 decoder->state.flags |= INTEL_PT_IN_TX;
@@ -1008,6 +1041,19 @@ static int intel_pt_walk_tip(struct intel_pt_decoder *decoder)
1008 int err; 1041 int err;
1009 1042
1010 err = intel_pt_walk_insn(decoder, &intel_pt_insn, 0); 1043 err = intel_pt_walk_insn(decoder, &intel_pt_insn, 0);
1044 if (err == INTEL_PT_RETURN &&
1045 decoder->pgd_ip &&
1046 decoder->pkt_state == INTEL_PT_STATE_TIP_PGD &&
1047 (decoder->state.type & INTEL_PT_BRANCH) &&
1048 decoder->pgd_ip(decoder->state.to_ip, decoder->data)) {
1049 /* Unconditional branch leaving filter region */
1050 decoder->no_progress = 0;
1051 decoder->pge = false;
1052 decoder->continuous_period = false;
1053 decoder->pkt_state = INTEL_PT_STATE_IN_SYNC;
1054 decoder->state.to_ip = 0;
1055 return 0;
1056 }
1011 if (err == INTEL_PT_RETURN) 1057 if (err == INTEL_PT_RETURN)
1012 return 0; 1058 return 0;
1013 if (err) 1059 if (err)
@@ -1036,6 +1082,21 @@ static int intel_pt_walk_tip(struct intel_pt_decoder *decoder)
1036 } 1082 }
1037 1083
1038 if (intel_pt_insn.branch == INTEL_PT_BR_CONDITIONAL) { 1084 if (intel_pt_insn.branch == INTEL_PT_BR_CONDITIONAL) {
1085 uint64_t to_ip = decoder->ip + intel_pt_insn.length +
1086 intel_pt_insn.rel;
1087
1088 if (decoder->pgd_ip &&
1089 decoder->pkt_state == INTEL_PT_STATE_TIP_PGD &&
1090 decoder->pgd_ip(to_ip, decoder->data)) {
1091 /* Conditional branch leaving filter region */
1092 decoder->pge = false;
1093 decoder->continuous_period = false;
1094 decoder->pkt_state = INTEL_PT_STATE_IN_SYNC;
1095 decoder->ip = to_ip;
1096 decoder->state.from_ip = decoder->ip;
1097 decoder->state.to_ip = 0;
1098 return 0;
1099 }
1039 intel_pt_log_at("ERROR: Conditional branch when expecting indirect branch", 1100 intel_pt_log_at("ERROR: Conditional branch when expecting indirect branch",
1040 decoder->ip); 1101 decoder->ip);
1041 decoder->pkt_state = INTEL_PT_STATE_ERR_RESYNC; 1102 decoder->pkt_state = INTEL_PT_STATE_ERR_RESYNC;
@@ -1241,6 +1302,7 @@ static void intel_pt_calc_tma(struct intel_pt_decoder *decoder)
1241 } 1302 }
1242 decoder->ctc_delta = 0; 1303 decoder->ctc_delta = 0;
1243 decoder->have_tma = true; 1304 decoder->have_tma = true;
1305 decoder->fixup_last_mtc = true;
1244 intel_pt_log("CTC timestamp " x64_fmt " last MTC %#x CTC rem %#x\n", 1306 intel_pt_log("CTC timestamp " x64_fmt " last MTC %#x CTC rem %#x\n",
1245 decoder->ctc_timestamp, decoder->last_mtc, ctc_rem); 1307 decoder->ctc_timestamp, decoder->last_mtc, ctc_rem);
1246} 1308}
@@ -1255,6 +1317,12 @@ static void intel_pt_calc_mtc_timestamp(struct intel_pt_decoder *decoder)
1255 1317
1256 mtc = decoder->packet.payload; 1318 mtc = decoder->packet.payload;
1257 1319
1320 if (decoder->mtc_shift > 8 && decoder->fixup_last_mtc) {
1321 decoder->fixup_last_mtc = false;
1322 intel_pt_fixup_last_mtc(mtc, decoder->mtc_shift,
1323 &decoder->last_mtc);
1324 }
1325
1258 if (mtc > decoder->last_mtc) 1326 if (mtc > decoder->last_mtc)
1259 mtc_delta = mtc - decoder->last_mtc; 1327 mtc_delta = mtc - decoder->last_mtc;
1260 else 1328 else
@@ -1323,6 +1391,8 @@ static void intel_pt_calc_cyc_timestamp(struct intel_pt_decoder *decoder)
1323 timestamp, decoder->timestamp); 1391 timestamp, decoder->timestamp);
1324 else 1392 else
1325 decoder->timestamp = timestamp; 1393 decoder->timestamp = timestamp;
1394
1395 decoder->timestamp_insn_cnt = 0;
1326} 1396}
1327 1397
1328/* Walk PSB+ packets when already in sync. */ 1398/* Walk PSB+ packets when already in sync. */
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h
index 02c38fec1c37..e90619a43c0c 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h
@@ -66,6 +66,7 @@ struct intel_pt_state {
66 uint32_t flags; 66 uint32_t flags;
67 enum intel_pt_insn_op insn_op; 67 enum intel_pt_insn_op insn_op;
68 int insn_len; 68 int insn_len;
69 char insn[INTEL_PT_INSN_BUF_SZ];
69}; 70};
70 71
71struct intel_pt_insn; 72struct intel_pt_insn;
@@ -83,6 +84,7 @@ struct intel_pt_params {
83 int (*walk_insn)(struct intel_pt_insn *intel_pt_insn, 84 int (*walk_insn)(struct intel_pt_insn *intel_pt_insn,
84 uint64_t *insn_cnt_ptr, uint64_t *ip, uint64_t to_ip, 85 uint64_t *insn_cnt_ptr, uint64_t *ip, uint64_t to_ip,
85 uint64_t max_insn_cnt, void *data); 86 uint64_t max_insn_cnt, void *data);
87 bool (*pgd_ip)(uint64_t ip, void *data);
86 void *data; 88 void *data;
87 bool return_compression; 89 bool return_compression;
88 uint64_t period; 90 uint64_t period;
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c
index d23138c06665..7913363bde5c 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c
@@ -27,6 +27,10 @@
27 27
28#include "intel-pt-insn-decoder.h" 28#include "intel-pt-insn-decoder.h"
29 29
30#if INTEL_PT_INSN_BUF_SZ < MAX_INSN_SIZE || INTEL_PT_INSN_BUF_SZ > MAX_INSN
31#error Instruction buffer size too small
32#endif
33
30/* Based on branch_type() from perf_event_intel_lbr.c */ 34/* Based on branch_type() from perf_event_intel_lbr.c */
31static void intel_pt_insn_decoder(struct insn *insn, 35static void intel_pt_insn_decoder(struct insn *insn,
32 struct intel_pt_insn *intel_pt_insn) 36 struct intel_pt_insn *intel_pt_insn)
@@ -166,10 +170,10 @@ int intel_pt_get_insn(const unsigned char *buf, size_t len, int x86_64,
166 if (!insn_complete(&insn) || insn.length > len) 170 if (!insn_complete(&insn) || insn.length > len)
167 return -1; 171 return -1;
168 intel_pt_insn_decoder(&insn, intel_pt_insn); 172 intel_pt_insn_decoder(&insn, intel_pt_insn);
169 if (insn.length < INTEL_PT_INSN_DBG_BUF_SZ) 173 if (insn.length < INTEL_PT_INSN_BUF_SZ)
170 memcpy(intel_pt_insn->buf, buf, insn.length); 174 memcpy(intel_pt_insn->buf, buf, insn.length);
171 else 175 else
172 memcpy(intel_pt_insn->buf, buf, INTEL_PT_INSN_DBG_BUF_SZ); 176 memcpy(intel_pt_insn->buf, buf, INTEL_PT_INSN_BUF_SZ);
173 return 0; 177 return 0;
174} 178}
175 179
@@ -211,11 +215,6 @@ int intel_pt_insn_desc(const struct intel_pt_insn *intel_pt_insn, char *buf,
211 return 0; 215 return 0;
212} 216}
213 217
214size_t intel_pt_insn_max_size(void)
215{
216 return MAX_INSN_SIZE;
217}
218
219int intel_pt_insn_type(enum intel_pt_insn_op op) 218int intel_pt_insn_type(enum intel_pt_insn_op op)
220{ 219{
221 switch (op) { 220 switch (op) {
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.h b/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.h
index b0adbf37323e..37ec5627ae9b 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.h
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.h
@@ -20,7 +20,7 @@
20#include <stdint.h> 20#include <stdint.h>
21 21
22#define INTEL_PT_INSN_DESC_MAX 32 22#define INTEL_PT_INSN_DESC_MAX 32
23#define INTEL_PT_INSN_DBG_BUF_SZ 16 23#define INTEL_PT_INSN_BUF_SZ 16
24 24
25enum intel_pt_insn_op { 25enum intel_pt_insn_op {
26 INTEL_PT_OP_OTHER, 26 INTEL_PT_OP_OTHER,
@@ -47,7 +47,7 @@ struct intel_pt_insn {
47 enum intel_pt_insn_branch branch; 47 enum intel_pt_insn_branch branch;
48 int length; 48 int length;
49 int32_t rel; 49 int32_t rel;
50 unsigned char buf[INTEL_PT_INSN_DBG_BUF_SZ]; 50 unsigned char buf[INTEL_PT_INSN_BUF_SZ];
51}; 51};
52 52
53int intel_pt_get_insn(const unsigned char *buf, size_t len, int x86_64, 53int intel_pt_get_insn(const unsigned char *buf, size_t len, int x86_64,
@@ -58,8 +58,6 @@ const char *intel_pt_insn_name(enum intel_pt_insn_op op);
58int intel_pt_insn_desc(const struct intel_pt_insn *intel_pt_insn, char *buf, 58int intel_pt_insn_desc(const struct intel_pt_insn *intel_pt_insn, char *buf,
59 size_t buf_len); 59 size_t buf_len);
60 60
61size_t intel_pt_insn_max_size(void);
62
63int intel_pt_insn_type(enum intel_pt_insn_op op); 61int intel_pt_insn_type(enum intel_pt_insn_op op);
64 62
65#endif 63#endif
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-log.c b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
index 319bef33a64b..e02bc7b166a0 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-log.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
@@ -119,8 +119,8 @@ void __intel_pt_log_insn(struct intel_pt_insn *intel_pt_insn, uint64_t ip)
119 if (intel_pt_log_open()) 119 if (intel_pt_log_open())
120 return; 120 return;
121 121
122 if (len > INTEL_PT_INSN_DBG_BUF_SZ) 122 if (len > INTEL_PT_INSN_BUF_SZ)
123 len = INTEL_PT_INSN_DBG_BUF_SZ; 123 len = INTEL_PT_INSN_BUF_SZ;
124 intel_pt_print_data(intel_pt_insn->buf, len, ip, 8); 124 intel_pt_print_data(intel_pt_insn->buf, len, ip, 8);
125 if (intel_pt_insn_desc(intel_pt_insn, desc, INTEL_PT_INSN_DESC_MAX) > 0) 125 if (intel_pt_insn_desc(intel_pt_insn, desc, INTEL_PT_INSN_DESC_MAX) > 0)
126 fprintf(f, "%s\n", desc); 126 fprintf(f, "%s\n", desc);
diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c
index 551ff6f640be..85d5eeb66c75 100644
--- a/tools/perf/util/intel-pt.c
+++ b/tools/perf/util/intel-pt.c
@@ -103,6 +103,9 @@ struct intel_pt {
103 unsigned max_non_turbo_ratio; 103 unsigned max_non_turbo_ratio;
104 104
105 unsigned long num_events; 105 unsigned long num_events;
106
107 char *filter;
108 struct addr_filters filts;
106}; 109};
107 110
108enum switch_state { 111enum switch_state {
@@ -140,6 +143,7 @@ struct intel_pt_queue {
140 u32 flags; 143 u32 flags;
141 u16 insn_len; 144 u16 insn_len;
142 u64 last_insn_cnt; 145 u64 last_insn_cnt;
146 char insn[INTEL_PT_INSN_BUF_SZ];
143}; 147};
144 148
145static void intel_pt_dump(struct intel_pt *pt __maybe_unused, 149static void intel_pt_dump(struct intel_pt *pt __maybe_unused,
@@ -241,7 +245,7 @@ static int intel_pt_get_trace(struct intel_pt_buffer *b, void *data)
241 } 245 }
242 246
243 queue = &ptq->pt->queues.queue_array[ptq->queue_nr]; 247 queue = &ptq->pt->queues.queue_array[ptq->queue_nr];
244 248next:
245 buffer = auxtrace_buffer__next(queue, buffer); 249 buffer = auxtrace_buffer__next(queue, buffer);
246 if (!buffer) { 250 if (!buffer) {
247 if (old_buffer) 251 if (old_buffer)
@@ -264,9 +268,6 @@ static int intel_pt_get_trace(struct intel_pt_buffer *b, void *data)
264 intel_pt_do_fix_overlap(ptq->pt, old_buffer, buffer)) 268 intel_pt_do_fix_overlap(ptq->pt, old_buffer, buffer))
265 return -ENOMEM; 269 return -ENOMEM;
266 270
267 if (old_buffer)
268 auxtrace_buffer__drop_data(old_buffer);
269
270 if (buffer->use_data) { 271 if (buffer->use_data) {
271 b->len = buffer->use_size; 272 b->len = buffer->use_size;
272 b->buf = buffer->use_data; 273 b->buf = buffer->use_data;
@@ -276,6 +277,16 @@ static int intel_pt_get_trace(struct intel_pt_buffer *b, void *data)
276 } 277 }
277 b->ref_timestamp = buffer->reference; 278 b->ref_timestamp = buffer->reference;
278 279
280 /*
281 * If in snapshot mode and the buffer has no usable data, get next
282 * buffer and again check overlap against old_buffer.
283 */
284 if (ptq->pt->snapshot_mode && !b->len)
285 goto next;
286
287 if (old_buffer)
288 auxtrace_buffer__drop_data(old_buffer);
289
279 if (!old_buffer || ptq->pt->sampling_mode || (ptq->pt->snapshot_mode && 290 if (!old_buffer || ptq->pt->sampling_mode || (ptq->pt->snapshot_mode &&
280 !buffer->consecutive)) { 291 !buffer->consecutive)) {
281 b->consecutive = false; 292 b->consecutive = false;
@@ -305,6 +316,7 @@ struct intel_pt_cache_entry {
305 enum intel_pt_insn_branch branch; 316 enum intel_pt_insn_branch branch;
306 int length; 317 int length;
307 int32_t rel; 318 int32_t rel;
319 char insn[INTEL_PT_INSN_BUF_SZ];
308}; 320};
309 321
310static int intel_pt_config_div(const char *var, const char *value, void *data) 322static int intel_pt_config_div(const char *var, const char *value, void *data)
@@ -390,6 +402,7 @@ static int intel_pt_cache_add(struct dso *dso, struct machine *machine,
390 e->branch = intel_pt_insn->branch; 402 e->branch = intel_pt_insn->branch;
391 e->length = intel_pt_insn->length; 403 e->length = intel_pt_insn->length;
392 e->rel = intel_pt_insn->rel; 404 e->rel = intel_pt_insn->rel;
405 memcpy(e->insn, intel_pt_insn->buf, INTEL_PT_INSN_BUF_SZ);
393 406
394 err = auxtrace_cache__add(c, offset, &e->entry); 407 err = auxtrace_cache__add(c, offset, &e->entry);
395 if (err) 408 if (err)
@@ -418,8 +431,7 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
418 struct machine *machine = ptq->pt->machine; 431 struct machine *machine = ptq->pt->machine;
419 struct thread *thread; 432 struct thread *thread;
420 struct addr_location al; 433 struct addr_location al;
421 unsigned char buf[1024]; 434 unsigned char buf[INTEL_PT_INSN_BUF_SZ];
422 size_t bufsz;
423 ssize_t len; 435 ssize_t len;
424 int x86_64; 436 int x86_64;
425 u8 cpumode; 437 u8 cpumode;
@@ -427,11 +439,11 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
427 u64 insn_cnt = 0; 439 u64 insn_cnt = 0;
428 bool one_map = true; 440 bool one_map = true;
429 441
442 intel_pt_insn->length = 0;
443
430 if (to_ip && *ip == to_ip) 444 if (to_ip && *ip == to_ip)
431 goto out_no_cache; 445 goto out_no_cache;
432 446
433 bufsz = intel_pt_insn_max_size();
434
435 if (*ip >= ptq->pt->kernel_start) 447 if (*ip >= ptq->pt->kernel_start)
436 cpumode = PERF_RECORD_MISC_KERNEL; 448 cpumode = PERF_RECORD_MISC_KERNEL;
437 else 449 else
@@ -468,6 +480,8 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
468 intel_pt_insn->branch = e->branch; 480 intel_pt_insn->branch = e->branch;
469 intel_pt_insn->length = e->length; 481 intel_pt_insn->length = e->length;
470 intel_pt_insn->rel = e->rel; 482 intel_pt_insn->rel = e->rel;
483 memcpy(intel_pt_insn->buf, e->insn,
484 INTEL_PT_INSN_BUF_SZ);
471 intel_pt_log_insn_no_data(intel_pt_insn, *ip); 485 intel_pt_log_insn_no_data(intel_pt_insn, *ip);
472 return 0; 486 return 0;
473 } 487 }
@@ -477,13 +491,14 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
477 start_ip = *ip; 491 start_ip = *ip;
478 492
479 /* Load maps to ensure dso->is_64_bit has been updated */ 493 /* Load maps to ensure dso->is_64_bit has been updated */
480 map__load(al.map, machine->symbol_filter); 494 map__load(al.map);
481 495
482 x86_64 = al.map->dso->is_64_bit; 496 x86_64 = al.map->dso->is_64_bit;
483 497
484 while (1) { 498 while (1) {
485 len = dso__data_read_offset(al.map->dso, machine, 499 len = dso__data_read_offset(al.map->dso, machine,
486 offset, buf, bufsz); 500 offset, buf,
501 INTEL_PT_INSN_BUF_SZ);
487 if (len <= 0) 502 if (len <= 0)
488 return -EINVAL; 503 return -EINVAL;
489 504
@@ -541,6 +556,76 @@ out_no_cache:
541 return 0; 556 return 0;
542} 557}
543 558
559static bool intel_pt_match_pgd_ip(struct intel_pt *pt, uint64_t ip,
560 uint64_t offset, const char *filename)
561{
562 struct addr_filter *filt;
563 bool have_filter = false;
564 bool hit_tracestop = false;
565 bool hit_filter = false;
566
567 list_for_each_entry(filt, &pt->filts.head, list) {
568 if (filt->start)
569 have_filter = true;
570
571 if ((filename && !filt->filename) ||
572 (!filename && filt->filename) ||
573 (filename && strcmp(filename, filt->filename)))
574 continue;
575
576 if (!(offset >= filt->addr && offset < filt->addr + filt->size))
577 continue;
578
579 intel_pt_log("TIP.PGD ip %#"PRIx64" offset %#"PRIx64" in %s hit filter: %s offset %#"PRIx64" size %#"PRIx64"\n",
580 ip, offset, filename ? filename : "[kernel]",
581 filt->start ? "filter" : "stop",
582 filt->addr, filt->size);
583
584 if (filt->start)
585 hit_filter = true;
586 else
587 hit_tracestop = true;
588 }
589
590 if (!hit_tracestop && !hit_filter)
591 intel_pt_log("TIP.PGD ip %#"PRIx64" offset %#"PRIx64" in %s is not in a filter region\n",
592 ip, offset, filename ? filename : "[kernel]");
593
594 return hit_tracestop || (have_filter && !hit_filter);
595}
596
597static int __intel_pt_pgd_ip(uint64_t ip, void *data)
598{
599 struct intel_pt_queue *ptq = data;
600 struct thread *thread;
601 struct addr_location al;
602 u8 cpumode;
603 u64 offset;
604
605 if (ip >= ptq->pt->kernel_start)
606 return intel_pt_match_pgd_ip(ptq->pt, ip, ip, NULL);
607
608 cpumode = PERF_RECORD_MISC_USER;
609
610 thread = ptq->thread;
611 if (!thread)
612 return -EINVAL;
613
614 thread__find_addr_map(thread, cpumode, MAP__FUNCTION, ip, &al);
615 if (!al.map || !al.map->dso)
616 return -EINVAL;
617
618 offset = al.map->map_ip(al.map, ip);
619
620 return intel_pt_match_pgd_ip(ptq->pt, ip, offset,
621 al.map->dso->long_name);
622}
623
624static bool intel_pt_pgd_ip(uint64_t ip, void *data)
625{
626 return __intel_pt_pgd_ip(ip, data) > 0;
627}
628
544static bool intel_pt_get_config(struct intel_pt *pt, 629static bool intel_pt_get_config(struct intel_pt *pt,
545 struct perf_event_attr *attr, u64 *config) 630 struct perf_event_attr *attr, u64 *config)
546{ 631{
@@ -717,6 +802,9 @@ static struct intel_pt_queue *intel_pt_alloc_queue(struct intel_pt *pt,
717 params.tsc_ctc_ratio_n = pt->tsc_ctc_ratio_n; 802 params.tsc_ctc_ratio_n = pt->tsc_ctc_ratio_n;
718 params.tsc_ctc_ratio_d = pt->tsc_ctc_ratio_d; 803 params.tsc_ctc_ratio_d = pt->tsc_ctc_ratio_d;
719 804
805 if (pt->filts.cnt > 0)
806 params.pgd_ip = intel_pt_pgd_ip;
807
720 if (pt->synth_opts.instructions) { 808 if (pt->synth_opts.instructions) {
721 if (pt->synth_opts.period) { 809 if (pt->synth_opts.period) {
722 switch (pt->synth_opts.period_type) { 810 switch (pt->synth_opts.period_type) {
@@ -817,6 +905,7 @@ static void intel_pt_sample_flags(struct intel_pt_queue *ptq)
817 if (ptq->state->flags & INTEL_PT_IN_TX) 905 if (ptq->state->flags & INTEL_PT_IN_TX)
818 ptq->flags |= PERF_IP_FLAG_IN_TX; 906 ptq->flags |= PERF_IP_FLAG_IN_TX;
819 ptq->insn_len = ptq->state->insn_len; 907 ptq->insn_len = ptq->state->insn_len;
908 memcpy(ptq->insn, ptq->state->insn, INTEL_PT_INSN_BUF_SZ);
820 } 909 }
821} 910}
822 911
@@ -997,6 +1086,7 @@ static int intel_pt_synth_branch_sample(struct intel_pt_queue *ptq)
997 sample.cpu = ptq->cpu; 1086 sample.cpu = ptq->cpu;
998 sample.flags = ptq->flags; 1087 sample.flags = ptq->flags;
999 sample.insn_len = ptq->insn_len; 1088 sample.insn_len = ptq->insn_len;
1089 memcpy(sample.insn, ptq->insn, INTEL_PT_INSN_BUF_SZ);
1000 1090
1001 /* 1091 /*
1002 * perf report cannot handle events without a branch stack when using 1092 * perf report cannot handle events without a branch stack when using
@@ -1058,6 +1148,7 @@ static int intel_pt_synth_instruction_sample(struct intel_pt_queue *ptq)
1058 sample.cpu = ptq->cpu; 1148 sample.cpu = ptq->cpu;
1059 sample.flags = ptq->flags; 1149 sample.flags = ptq->flags;
1060 sample.insn_len = ptq->insn_len; 1150 sample.insn_len = ptq->insn_len;
1151 memcpy(sample.insn, ptq->insn, INTEL_PT_INSN_BUF_SZ);
1061 1152
1062 ptq->last_insn_cnt = ptq->state->tot_insn_cnt; 1153 ptq->last_insn_cnt = ptq->state->tot_insn_cnt;
1063 1154
@@ -1120,6 +1211,7 @@ static int intel_pt_synth_transaction_sample(struct intel_pt_queue *ptq)
1120 sample.cpu = ptq->cpu; 1211 sample.cpu = ptq->cpu;
1121 sample.flags = ptq->flags; 1212 sample.flags = ptq->flags;
1122 sample.insn_len = ptq->insn_len; 1213 sample.insn_len = ptq->insn_len;
1214 memcpy(sample.insn, ptq->insn, INTEL_PT_INSN_BUF_SZ);
1123 1215
1124 if (pt->synth_opts.callchain) { 1216 if (pt->synth_opts.callchain) {
1125 thread_stack__sample(ptq->thread, ptq->chain, 1217 thread_stack__sample(ptq->thread, ptq->chain,
@@ -1294,7 +1386,7 @@ static u64 intel_pt_switch_ip(struct intel_pt *pt, u64 *ptss_ip)
1294 if (!map) 1386 if (!map)
1295 return 0; 1387 return 0;
1296 1388
1297 if (map__load(map, machine->symbol_filter)) 1389 if (map__load(map))
1298 return 0; 1390 return 0;
1299 1391
1300 start = dso__first_symbol(map->dso, MAP__FUNCTION); 1392 start = dso__first_symbol(map->dso, MAP__FUNCTION);
@@ -1767,6 +1859,8 @@ static void intel_pt_free(struct perf_session *session)
1767 intel_pt_free_events(session); 1859 intel_pt_free_events(session);
1768 session->auxtrace = NULL; 1860 session->auxtrace = NULL;
1769 thread__put(pt->unknown_thread); 1861 thread__put(pt->unknown_thread);
1862 addr_filters__exit(&pt->filts);
1863 zfree(&pt->filter);
1770 free(pt); 1864 free(pt);
1771} 1865}
1772 1866
@@ -2016,6 +2110,8 @@ static const char * const intel_pt_info_fmts[] = {
2016 [INTEL_PT_TSC_CTC_N] = " TSC:CTC numerator %"PRIu64"\n", 2110 [INTEL_PT_TSC_CTC_N] = " TSC:CTC numerator %"PRIu64"\n",
2017 [INTEL_PT_TSC_CTC_D] = " TSC:CTC denominator %"PRIu64"\n", 2111 [INTEL_PT_TSC_CTC_D] = " TSC:CTC denominator %"PRIu64"\n",
2018 [INTEL_PT_CYC_BIT] = " CYC bit %#"PRIx64"\n", 2112 [INTEL_PT_CYC_BIT] = " CYC bit %#"PRIx64"\n",
2113 [INTEL_PT_MAX_NONTURBO_RATIO] = " Max non-turbo ratio %"PRIu64"\n",
2114 [INTEL_PT_FILTER_STR_LEN] = " Filter string len. %"PRIu64"\n",
2019}; 2115};
2020 2116
2021static void intel_pt_print_info(u64 *arr, int start, int finish) 2117static void intel_pt_print_info(u64 *arr, int start, int finish)
@@ -2029,12 +2125,28 @@ static void intel_pt_print_info(u64 *arr, int start, int finish)
2029 fprintf(stdout, intel_pt_info_fmts[i], arr[i]); 2125 fprintf(stdout, intel_pt_info_fmts[i], arr[i]);
2030} 2126}
2031 2127
2128static void intel_pt_print_info_str(const char *name, const char *str)
2129{
2130 if (!dump_trace)
2131 return;
2132
2133 fprintf(stdout, " %-20s%s\n", name, str ? str : "");
2134}
2135
2136static bool intel_pt_has(struct auxtrace_info_event *auxtrace_info, int pos)
2137{
2138 return auxtrace_info->header.size >=
2139 sizeof(struct auxtrace_info_event) + (sizeof(u64) * (pos + 1));
2140}
2141
2032int intel_pt_process_auxtrace_info(union perf_event *event, 2142int intel_pt_process_auxtrace_info(union perf_event *event,
2033 struct perf_session *session) 2143 struct perf_session *session)
2034{ 2144{
2035 struct auxtrace_info_event *auxtrace_info = &event->auxtrace_info; 2145 struct auxtrace_info_event *auxtrace_info = &event->auxtrace_info;
2036 size_t min_sz = sizeof(u64) * INTEL_PT_PER_CPU_MMAPS; 2146 size_t min_sz = sizeof(u64) * INTEL_PT_PER_CPU_MMAPS;
2037 struct intel_pt *pt; 2147 struct intel_pt *pt;
2148 void *info_end;
2149 u64 *info;
2038 int err; 2150 int err;
2039 2151
2040 if (auxtrace_info->header.size < sizeof(struct auxtrace_info_event) + 2152 if (auxtrace_info->header.size < sizeof(struct auxtrace_info_event) +
@@ -2045,6 +2157,8 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
2045 if (!pt) 2157 if (!pt)
2046 return -ENOMEM; 2158 return -ENOMEM;
2047 2159
2160 addr_filters__init(&pt->filts);
2161
2048 perf_config(intel_pt_perf_config, pt); 2162 perf_config(intel_pt_perf_config, pt);
2049 2163
2050 err = auxtrace_queues__init(&pt->queues); 2164 err = auxtrace_queues__init(&pt->queues);
@@ -2069,8 +2183,7 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
2069 intel_pt_print_info(&auxtrace_info->priv[0], INTEL_PT_PMU_TYPE, 2183 intel_pt_print_info(&auxtrace_info->priv[0], INTEL_PT_PMU_TYPE,
2070 INTEL_PT_PER_CPU_MMAPS); 2184 INTEL_PT_PER_CPU_MMAPS);
2071 2185
2072 if (auxtrace_info->header.size >= sizeof(struct auxtrace_info_event) + 2186 if (intel_pt_has(auxtrace_info, INTEL_PT_CYC_BIT)) {
2073 (sizeof(u64) * INTEL_PT_CYC_BIT)) {
2074 pt->mtc_bit = auxtrace_info->priv[INTEL_PT_MTC_BIT]; 2187 pt->mtc_bit = auxtrace_info->priv[INTEL_PT_MTC_BIT];
2075 pt->mtc_freq_bits = auxtrace_info->priv[INTEL_PT_MTC_FREQ_BITS]; 2188 pt->mtc_freq_bits = auxtrace_info->priv[INTEL_PT_MTC_FREQ_BITS];
2076 pt->tsc_ctc_ratio_n = auxtrace_info->priv[INTEL_PT_TSC_CTC_N]; 2189 pt->tsc_ctc_ratio_n = auxtrace_info->priv[INTEL_PT_TSC_CTC_N];
@@ -2080,6 +2193,54 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
2080 INTEL_PT_CYC_BIT); 2193 INTEL_PT_CYC_BIT);
2081 } 2194 }
2082 2195
2196 if (intel_pt_has(auxtrace_info, INTEL_PT_MAX_NONTURBO_RATIO)) {
2197 pt->max_non_turbo_ratio =
2198 auxtrace_info->priv[INTEL_PT_MAX_NONTURBO_RATIO];
2199 intel_pt_print_info(&auxtrace_info->priv[0],
2200 INTEL_PT_MAX_NONTURBO_RATIO,
2201 INTEL_PT_MAX_NONTURBO_RATIO);
2202 }
2203
2204 info = &auxtrace_info->priv[INTEL_PT_FILTER_STR_LEN] + 1;
2205 info_end = (void *)info + auxtrace_info->header.size;
2206
2207 if (intel_pt_has(auxtrace_info, INTEL_PT_FILTER_STR_LEN)) {
2208 size_t len;
2209
2210 len = auxtrace_info->priv[INTEL_PT_FILTER_STR_LEN];
2211 intel_pt_print_info(&auxtrace_info->priv[0],
2212 INTEL_PT_FILTER_STR_LEN,
2213 INTEL_PT_FILTER_STR_LEN);
2214 if (len) {
2215 const char *filter = (const char *)info;
2216
2217 len = roundup(len + 1, 8);
2218 info += len >> 3;
2219 if ((void *)info > info_end) {
2220 pr_err("%s: bad filter string length\n", __func__);
2221 err = -EINVAL;
2222 goto err_free_queues;
2223 }
2224 pt->filter = memdup(filter, len);
2225 if (!pt->filter) {
2226 err = -ENOMEM;
2227 goto err_free_queues;
2228 }
2229 if (session->header.needs_swap)
2230 mem_bswap_64(pt->filter, len);
2231 if (pt->filter[len - 1]) {
2232 pr_err("%s: filter string not null terminated\n", __func__);
2233 err = -EINVAL;
2234 goto err_free_queues;
2235 }
2236 err = addr_filters__parse_bare_filter(&pt->filts,
2237 filter);
2238 if (err)
2239 goto err_free_queues;
2240 }
2241 intel_pt_print_info_str("Filter string", pt->filter);
2242 }
2243
2083 pt->timeless_decoding = intel_pt_timeless_decoding(pt); 2244 pt->timeless_decoding = intel_pt_timeless_decoding(pt);
2084 pt->have_tsc = intel_pt_have_tsc(pt); 2245 pt->have_tsc = intel_pt_have_tsc(pt);
2085 pt->sampling_mode = false; 2246 pt->sampling_mode = false;
@@ -2121,11 +2282,13 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
2121 pt->switch_evsel = intel_pt_find_sched_switch(session->evlist); 2282 pt->switch_evsel = intel_pt_find_sched_switch(session->evlist);
2122 if (!pt->switch_evsel) { 2283 if (!pt->switch_evsel) {
2123 pr_err("%s: missing sched_switch event\n", __func__); 2284 pr_err("%s: missing sched_switch event\n", __func__);
2285 err = -EINVAL;
2124 goto err_delete_thread; 2286 goto err_delete_thread;
2125 } 2287 }
2126 } else if (pt->have_sched_switch == 2 && 2288 } else if (pt->have_sched_switch == 2 &&
2127 !intel_pt_find_switch(session->evlist)) { 2289 !intel_pt_find_switch(session->evlist)) {
2128 pr_err("%s: missing context_switch attribute flag\n", __func__); 2290 pr_err("%s: missing context_switch attribute flag\n", __func__);
2291 err = -EINVAL;
2129 goto err_delete_thread; 2292 goto err_delete_thread;
2130 } 2293 }
2131 2294
@@ -2149,7 +2312,9 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
2149 if (pt->tc.time_mult) { 2312 if (pt->tc.time_mult) {
2150 u64 tsc_freq = intel_pt_ns_to_ticks(pt, 1000000000); 2313 u64 tsc_freq = intel_pt_ns_to_ticks(pt, 1000000000);
2151 2314
2152 pt->max_non_turbo_ratio = (tsc_freq + 50000000) / 100000000; 2315 if (!pt->max_non_turbo_ratio)
2316 pt->max_non_turbo_ratio =
2317 (tsc_freq + 50000000) / 100000000;
2153 intel_pt_log("TSC frequency %"PRIu64"\n", tsc_freq); 2318 intel_pt_log("TSC frequency %"PRIu64"\n", tsc_freq);
2154 intel_pt_log("Maximum non-turbo ratio %u\n", 2319 intel_pt_log("Maximum non-turbo ratio %u\n",
2155 pt->max_non_turbo_ratio); 2320 pt->max_non_turbo_ratio);
@@ -2193,6 +2358,8 @@ err_free_queues:
2193 auxtrace_queues__free(&pt->queues); 2358 auxtrace_queues__free(&pt->queues);
2194 session->auxtrace = NULL; 2359 session->auxtrace = NULL;
2195err_free: 2360err_free:
2361 addr_filters__exit(&pt->filts);
2362 zfree(&pt->filter);
2196 free(pt); 2363 free(pt);
2197 return err; 2364 return err;
2198} 2365}
diff --git a/tools/perf/util/intel-pt.h b/tools/perf/util/intel-pt.h
index 0065949df693..e13b14e5a37b 100644
--- a/tools/perf/util/intel-pt.h
+++ b/tools/perf/util/intel-pt.h
@@ -34,11 +34,11 @@ enum {
34 INTEL_PT_TSC_CTC_N, 34 INTEL_PT_TSC_CTC_N,
35 INTEL_PT_TSC_CTC_D, 35 INTEL_PT_TSC_CTC_D,
36 INTEL_PT_CYC_BIT, 36 INTEL_PT_CYC_BIT,
37 INTEL_PT_MAX_NONTURBO_RATIO,
38 INTEL_PT_FILTER_STR_LEN,
37 INTEL_PT_AUXTRACE_PRIV_MAX, 39 INTEL_PT_AUXTRACE_PRIV_MAX,
38}; 40};
39 41
40#define INTEL_PT_AUXTRACE_PRIV_SIZE (INTEL_PT_AUXTRACE_PRIV_MAX * sizeof(u64))
41
42struct auxtrace_record; 42struct auxtrace_record;
43struct perf_tool; 43struct perf_tool;
44union perf_event; 44union perf_event;
diff --git a/tools/perf/util/jitdump.c b/tools/perf/util/jitdump.c
index 95f0884aae02..c9a941ef0f6d 100644
--- a/tools/perf/util/jitdump.c
+++ b/tools/perf/util/jitdump.c
@@ -37,6 +37,10 @@ struct jit_buf_desc {
37 bool needs_bswap; /* handles cross-endianess */ 37 bool needs_bswap; /* handles cross-endianess */
38 bool use_arch_timestamp; 38 bool use_arch_timestamp;
39 void *debug_data; 39 void *debug_data;
40 void *unwinding_data;
41 uint64_t unwinding_size;
42 uint64_t unwinding_mapped_size;
43 uint64_t eh_frame_hdr_size;
40 size_t nr_debug_entries; 44 size_t nr_debug_entries;
41 uint32_t code_load_count; 45 uint32_t code_load_count;
42 u64 bytes_written; 46 u64 bytes_written;
@@ -68,7 +72,10 @@ jit_emit_elf(char *filename,
68 const void *code, 72 const void *code,
69 int csize, 73 int csize,
70 void *debug, 74 void *debug,
71 int nr_debug_entries) 75 int nr_debug_entries,
76 void *unwinding,
77 uint32_t unwinding_header_size,
78 uint32_t unwinding_size)
72{ 79{
73 int ret, fd; 80 int ret, fd;
74 81
@@ -81,7 +88,8 @@ jit_emit_elf(char *filename,
81 return -1; 88 return -1;
82 } 89 }
83 90
84 ret = jit_write_elf(fd, code_addr, sym, (const void *)code, csize, debug, nr_debug_entries); 91 ret = jit_write_elf(fd, code_addr, sym, (const void *)code, csize, debug, nr_debug_entries,
92 unwinding, unwinding_header_size, unwinding_size);
85 93
86 close(fd); 94 close(fd);
87 95
@@ -172,6 +180,12 @@ jit_open(struct jit_buf_desc *jd, const char *name)
172 header.elf_mach, 180 header.elf_mach,
173 jd->use_arch_timestamp); 181 jd->use_arch_timestamp);
174 182
183 if (header.version > JITHEADER_VERSION) {
184 pr_err("wrong jitdump version %u, expected " STR(JITHEADER_VERSION),
185 header.version);
186 goto error;
187 }
188
175 if (header.flags & JITDUMP_FLAGS_RESERVED) { 189 if (header.flags & JITDUMP_FLAGS_RESERVED) {
176 pr_err("jitdump file contains invalid or unsupported flags 0x%llx\n", 190 pr_err("jitdump file contains invalid or unsupported flags 0x%llx\n",
177 (unsigned long long)header.flags & JITDUMP_FLAGS_RESERVED); 191 (unsigned long long)header.flags & JITDUMP_FLAGS_RESERVED);
@@ -263,8 +277,7 @@ jit_get_next_entry(struct jit_buf_desc *jd)
263 return NULL; 277 return NULL;
264 278
265 if (id >= JIT_CODE_MAX) { 279 if (id >= JIT_CODE_MAX) {
266 pr_warning("next_entry: unknown prefix %d, skipping\n", id); 280 pr_warning("next_entry: unknown record type %d, skipping\n", id);
267 return NULL;
268 } 281 }
269 if (bs > jd->bufsize) { 282 if (bs > jd->bufsize) {
270 void *n; 283 void *n;
@@ -296,6 +309,13 @@ jit_get_next_entry(struct jit_buf_desc *jd)
296 } 309 }
297 } 310 }
298 break; 311 break;
312 case JIT_CODE_UNWINDING_INFO:
313 if (jd->needs_bswap) {
314 jr->unwinding.unwinding_size = bswap_64(jr->unwinding.unwinding_size);
315 jr->unwinding.eh_frame_hdr_size = bswap_64(jr->unwinding.eh_frame_hdr_size);
316 jr->unwinding.mapped_size = bswap_64(jr->unwinding.mapped_size);
317 }
318 break;
299 case JIT_CODE_CLOSE: 319 case JIT_CODE_CLOSE:
300 break; 320 break;
301 case JIT_CODE_LOAD: 321 case JIT_CODE_LOAD:
@@ -322,7 +342,8 @@ jit_get_next_entry(struct jit_buf_desc *jd)
322 break; 342 break;
323 case JIT_CODE_MAX: 343 case JIT_CODE_MAX:
324 default: 344 default:
325 return NULL; 345 /* skip unknown record (we have read them) */
346 break;
326 } 347 }
327 return jr; 348 return jr;
328} 349}
@@ -370,7 +391,7 @@ static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr)
370 u16 idr_size; 391 u16 idr_size;
371 const char *sym; 392 const char *sym;
372 uint32_t count; 393 uint32_t count;
373 int ret, csize; 394 int ret, csize, usize;
374 pid_t pid, tid; 395 pid_t pid, tid;
375 struct { 396 struct {
376 u32 pid, tid; 397 u32 pid, tid;
@@ -380,6 +401,7 @@ static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr)
380 pid = jr->load.pid; 401 pid = jr->load.pid;
381 tid = jr->load.tid; 402 tid = jr->load.tid;
382 csize = jr->load.code_size; 403 csize = jr->load.code_size;
404 usize = jd->unwinding_mapped_size;
383 addr = jr->load.code_addr; 405 addr = jr->load.code_addr;
384 sym = (void *)((unsigned long)jr + sizeof(jr->load)); 406 sym = (void *)((unsigned long)jr + sizeof(jr->load));
385 code = (unsigned long)jr + jr->load.p.total_size - csize; 407 code = (unsigned long)jr + jr->load.p.total_size - csize;
@@ -400,7 +422,8 @@ static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr)
400 422
401 size = PERF_ALIGN(size, sizeof(u64)); 423 size = PERF_ALIGN(size, sizeof(u64));
402 uaddr = (uintptr_t)code; 424 uaddr = (uintptr_t)code;
403 ret = jit_emit_elf(filename, sym, addr, (const void *)uaddr, csize, jd->debug_data, jd->nr_debug_entries); 425 ret = jit_emit_elf(filename, sym, addr, (const void *)uaddr, csize, jd->debug_data, jd->nr_debug_entries,
426 jd->unwinding_data, jd->eh_frame_hdr_size, jd->unwinding_size);
404 427
405 if (jd->debug_data && jd->nr_debug_entries) { 428 if (jd->debug_data && jd->nr_debug_entries) {
406 free(jd->debug_data); 429 free(jd->debug_data);
@@ -408,6 +431,14 @@ static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr)
408 jd->nr_debug_entries = 0; 431 jd->nr_debug_entries = 0;
409 } 432 }
410 433
434 if (jd->unwinding_data && jd->eh_frame_hdr_size) {
435 free(jd->unwinding_data);
436 jd->unwinding_data = NULL;
437 jd->eh_frame_hdr_size = 0;
438 jd->unwinding_mapped_size = 0;
439 jd->unwinding_size = 0;
440 }
441
411 if (ret) { 442 if (ret) {
412 free(event); 443 free(event);
413 return -1; 444 return -1;
@@ -422,7 +453,7 @@ static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr)
422 453
423 event->mmap2.pgoff = GEN_ELF_TEXT_OFFSET; 454 event->mmap2.pgoff = GEN_ELF_TEXT_OFFSET;
424 event->mmap2.start = addr; 455 event->mmap2.start = addr;
425 event->mmap2.len = csize; 456 event->mmap2.len = usize ? ALIGN_8(csize) + usize : csize;
426 event->mmap2.pid = pid; 457 event->mmap2.pid = pid;
427 event->mmap2.tid = tid; 458 event->mmap2.tid = tid;
428 event->mmap2.ino = st.st_ino; 459 event->mmap2.ino = st.st_ino;
@@ -473,6 +504,7 @@ static int jit_repipe_code_move(struct jit_buf_desc *jd, union jr_entry *jr)
473 char *filename; 504 char *filename;
474 size_t size; 505 size_t size;
475 struct stat st; 506 struct stat st;
507 int usize;
476 u16 idr_size; 508 u16 idr_size;
477 int ret; 509 int ret;
478 pid_t pid, tid; 510 pid_t pid, tid;
@@ -483,6 +515,7 @@ static int jit_repipe_code_move(struct jit_buf_desc *jd, union jr_entry *jr)
483 515
484 pid = jr->move.pid; 516 pid = jr->move.pid;
485 tid = jr->move.tid; 517 tid = jr->move.tid;
518 usize = jd->unwinding_mapped_size;
486 idr_size = jd->machine->id_hdr_size; 519 idr_size = jd->machine->id_hdr_size;
487 520
488 /* 521 /*
@@ -511,7 +544,8 @@ static int jit_repipe_code_move(struct jit_buf_desc *jd, union jr_entry *jr)
511 (sizeof(event->mmap2.filename) - size) + idr_size); 544 (sizeof(event->mmap2.filename) - size) + idr_size);
512 event->mmap2.pgoff = GEN_ELF_TEXT_OFFSET; 545 event->mmap2.pgoff = GEN_ELF_TEXT_OFFSET;
513 event->mmap2.start = jr->move.new_code_addr; 546 event->mmap2.start = jr->move.new_code_addr;
514 event->mmap2.len = jr->move.code_size; 547 event->mmap2.len = usize ? ALIGN_8(jr->move.code_size) + usize
548 : jr->move.code_size;
515 event->mmap2.pid = pid; 549 event->mmap2.pid = pid;
516 event->mmap2.tid = tid; 550 event->mmap2.tid = tid;
517 event->mmap2.ino = st.st_ino; 551 event->mmap2.ino = st.st_ino;
@@ -578,10 +612,35 @@ static int jit_repipe_debug_info(struct jit_buf_desc *jd, union jr_entry *jr)
578} 612}
579 613
580static int 614static int
615jit_repipe_unwinding_info(struct jit_buf_desc *jd, union jr_entry *jr)
616{
617 void *unwinding_data;
618 uint32_t unwinding_data_size;
619
620 if (!(jd && jr))
621 return -1;
622
623 unwinding_data_size = jr->prefix.total_size - sizeof(jr->unwinding);
624 unwinding_data = malloc(unwinding_data_size);
625 if (!unwinding_data)
626 return -1;
627
628 memcpy(unwinding_data, &jr->unwinding.unwinding_data,
629 unwinding_data_size);
630
631 jd->eh_frame_hdr_size = jr->unwinding.eh_frame_hdr_size;
632 jd->unwinding_size = jr->unwinding.unwinding_size;
633 jd->unwinding_mapped_size = jr->unwinding.mapped_size;
634 jd->unwinding_data = unwinding_data;
635
636 return 0;
637}
638
639static int
581jit_process_dump(struct jit_buf_desc *jd) 640jit_process_dump(struct jit_buf_desc *jd)
582{ 641{
583 union jr_entry *jr; 642 union jr_entry *jr;
584 int ret; 643 int ret = 0;
585 644
586 while ((jr = jit_get_next_entry(jd))) { 645 while ((jr = jit_get_next_entry(jd))) {
587 switch(jr->prefix.id) { 646 switch(jr->prefix.id) {
@@ -594,6 +653,9 @@ jit_process_dump(struct jit_buf_desc *jd)
594 case JIT_CODE_DEBUG_INFO: 653 case JIT_CODE_DEBUG_INFO:
595 ret = jit_repipe_debug_info(jd, jr); 654 ret = jit_repipe_debug_info(jd, jr);
596 break; 655 break;
656 case JIT_CODE_UNWINDING_INFO:
657 ret = jit_repipe_unwinding_info(jd, jr);
658 break;
597 default: 659 default:
598 ret = 0; 660 ret = 0;
599 continue; 661 continue;
diff --git a/tools/perf/util/jitdump.h b/tools/perf/util/jitdump.h
index bcacd20d0c1c..c6b9b67f43bf 100644
--- a/tools/perf/util/jitdump.h
+++ b/tools/perf/util/jitdump.h
@@ -19,6 +19,7 @@
19#define JITHEADER_MAGIC_SW 0x4454694A 19#define JITHEADER_MAGIC_SW 0x4454694A
20 20
21#define PADDING_8ALIGNED(x) ((((x) + 7) & 7) ^ 7) 21#define PADDING_8ALIGNED(x) ((((x) + 7) & 7) ^ 7)
22#define ALIGN_8(x) (((x) + 7) & (~7))
22 23
23#define JITHEADER_VERSION 1 24#define JITHEADER_VERSION 1
24 25
@@ -48,6 +49,7 @@ enum jit_record_type {
48 JIT_CODE_MOVE = 1, 49 JIT_CODE_MOVE = 1,
49 JIT_CODE_DEBUG_INFO = 2, 50 JIT_CODE_DEBUG_INFO = 2,
50 JIT_CODE_CLOSE = 3, 51 JIT_CODE_CLOSE = 3,
52 JIT_CODE_UNWINDING_INFO = 4,
51 53
52 JIT_CODE_MAX, 54 JIT_CODE_MAX,
53}; 55};
@@ -101,12 +103,22 @@ struct jr_code_debug_info {
101 struct debug_entry entries[0]; 103 struct debug_entry entries[0];
102}; 104};
103 105
106struct jr_code_unwinding_info {
107 struct jr_prefix p;
108
109 uint64_t unwinding_size;
110 uint64_t eh_frame_hdr_size;
111 uint64_t mapped_size;
112 const char unwinding_data[0];
113};
114
104union jr_entry { 115union jr_entry {
105 struct jr_code_debug_info info; 116 struct jr_code_debug_info info;
106 struct jr_code_close close; 117 struct jr_code_close close;
107 struct jr_code_load load; 118 struct jr_code_load load;
108 struct jr_code_move move; 119 struct jr_code_move move;
109 struct jr_prefix prefix; 120 struct jr_prefix prefix;
121 struct jr_code_unwinding_info unwinding;
110}; 122};
111 123
112static inline struct debug_entry * 124static inline struct debug_entry *
diff --git a/tools/perf/util/llvm-utils.c b/tools/perf/util/llvm-utils.c
index bf7216b8731d..b23ff44cf214 100644
--- a/tools/perf/util/llvm-utils.c
+++ b/tools/perf/util/llvm-utils.c
@@ -7,6 +7,7 @@
7#include <limits.h> 7#include <limits.h>
8#include <stdio.h> 8#include <stdio.h>
9#include <stdlib.h> 9#include <stdlib.h>
10#include <linux/err.h>
10#include "debug.h" 11#include "debug.h"
11#include "llvm-utils.h" 12#include "llvm-utils.h"
12#include "config.h" 13#include "config.h"
@@ -282,9 +283,10 @@ static const char *kinc_fetch_script =
282"rm -rf $TMPDIR\n" 283"rm -rf $TMPDIR\n"
283"exit $RET\n"; 284"exit $RET\n";
284 285
285static inline void 286void llvm__get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
286get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
287{ 287{
288 static char *saved_kbuild_dir;
289 static char *saved_kbuild_include_opts;
288 int err; 290 int err;
289 291
290 if (!kbuild_dir || !kbuild_include_opts) 292 if (!kbuild_dir || !kbuild_include_opts)
@@ -293,10 +295,28 @@ get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
293 *kbuild_dir = NULL; 295 *kbuild_dir = NULL;
294 *kbuild_include_opts = NULL; 296 *kbuild_include_opts = NULL;
295 297
298 if (saved_kbuild_dir && saved_kbuild_include_opts &&
299 !IS_ERR(saved_kbuild_dir) && !IS_ERR(saved_kbuild_include_opts)) {
300 *kbuild_dir = strdup(saved_kbuild_dir);
301 *kbuild_include_opts = strdup(saved_kbuild_include_opts);
302
303 if (*kbuild_dir && *kbuild_include_opts)
304 return;
305
306 zfree(kbuild_dir);
307 zfree(kbuild_include_opts);
308 /*
309 * Don't fall through: it may breaks saved_kbuild_dir and
310 * saved_kbuild_include_opts if detect them again when
311 * memory is low.
312 */
313 return;
314 }
315
296 if (llvm_param.kbuild_dir && !llvm_param.kbuild_dir[0]) { 316 if (llvm_param.kbuild_dir && !llvm_param.kbuild_dir[0]) {
297 pr_debug("[llvm.kbuild-dir] is set to \"\" deliberately.\n"); 317 pr_debug("[llvm.kbuild-dir] is set to \"\" deliberately.\n");
298 pr_debug("Skip kbuild options detection.\n"); 318 pr_debug("Skip kbuild options detection.\n");
299 return; 319 goto errout;
300 } 320 }
301 321
302 err = detect_kbuild_dir(kbuild_dir); 322 err = detect_kbuild_dir(kbuild_dir);
@@ -306,7 +326,7 @@ get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
306"Hint:\tSet correct kbuild directory using 'kbuild-dir' option in [llvm]\n" 326"Hint:\tSet correct kbuild directory using 'kbuild-dir' option in [llvm]\n"
307" \tsection of ~/.perfconfig or set it to \"\" to suppress kbuild\n" 327" \tsection of ~/.perfconfig or set it to \"\" to suppress kbuild\n"
308" \tdetection.\n\n"); 328" \tdetection.\n\n");
309 return; 329 goto errout;
310 } 330 }
311 331
312 pr_debug("Kernel build dir is set to %s\n", *kbuild_dir); 332 pr_debug("Kernel build dir is set to %s\n", *kbuild_dir);
@@ -325,21 +345,50 @@ get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
325 345
326 free(*kbuild_dir); 346 free(*kbuild_dir);
327 *kbuild_dir = NULL; 347 *kbuild_dir = NULL;
328 return; 348 goto errout;
329 } 349 }
330 350
331 pr_debug("include option is set to %s\n", *kbuild_include_opts); 351 pr_debug("include option is set to %s\n", *kbuild_include_opts);
352
353 saved_kbuild_dir = strdup(*kbuild_dir);
354 saved_kbuild_include_opts = strdup(*kbuild_include_opts);
355
356 if (!saved_kbuild_dir || !saved_kbuild_include_opts) {
357 zfree(&saved_kbuild_dir);
358 zfree(&saved_kbuild_include_opts);
359 }
360 return;
361errout:
362 saved_kbuild_dir = ERR_PTR(-EINVAL);
363 saved_kbuild_include_opts = ERR_PTR(-EINVAL);
332} 364}
333 365
334static void 366int llvm__get_nr_cpus(void)
335dump_obj(const char *path, void *obj_buf, size_t size) 367{
368 static int nr_cpus_avail = 0;
369 char serr[STRERR_BUFSIZE];
370
371 if (nr_cpus_avail > 0)
372 return nr_cpus_avail;
373
374 nr_cpus_avail = sysconf(_SC_NPROCESSORS_CONF);
375 if (nr_cpus_avail <= 0) {
376 pr_err(
377"WARNING:\tunable to get available CPUs in this system: %s\n"
378" \tUse 128 instead.\n", str_error_r(errno, serr, sizeof(serr)));
379 nr_cpus_avail = 128;
380 }
381 return nr_cpus_avail;
382}
383
384void llvm__dump_obj(const char *path, void *obj_buf, size_t size)
336{ 385{
337 char *obj_path = strdup(path); 386 char *obj_path = strdup(path);
338 FILE *fp; 387 FILE *fp;
339 char *p; 388 char *p;
340 389
341 if (!obj_path) { 390 if (!obj_path) {
342 pr_warning("WARNING: No enough memory, skip object dumping\n"); 391 pr_warning("WARNING: Not enough memory, skip object dumping\n");
343 return; 392 return;
344 } 393 }
345 394
@@ -406,15 +455,9 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
406 * This is an optional work. Even it fail we can continue our 455 * This is an optional work. Even it fail we can continue our
407 * work. Needn't to check error return. 456 * work. Needn't to check error return.
408 */ 457 */
409 get_kbuild_opts(&kbuild_dir, &kbuild_include_opts); 458 llvm__get_kbuild_opts(&kbuild_dir, &kbuild_include_opts);
410 459
411 nr_cpus_avail = sysconf(_SC_NPROCESSORS_CONF); 460 nr_cpus_avail = llvm__get_nr_cpus();
412 if (nr_cpus_avail <= 0) {
413 pr_err(
414"WARNING:\tunable to get available CPUs in this system: %s\n"
415" \tUse 128 instead.\n", str_error_r(errno, serr, sizeof(serr)));
416 nr_cpus_avail = 128;
417 }
418 snprintf(nr_cpus_avail_str, sizeof(nr_cpus_avail_str), "%d", 461 snprintf(nr_cpus_avail_str, sizeof(nr_cpus_avail_str), "%d",
419 nr_cpus_avail); 462 nr_cpus_avail);
420 463
@@ -453,9 +496,6 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
453 free(kbuild_dir); 496 free(kbuild_dir);
454 free(kbuild_include_opts); 497 free(kbuild_include_opts);
455 498
456 if (llvm_param.dump_obj)
457 dump_obj(path, obj_buf, obj_buf_sz);
458
459 if (!p_obj_buf) 499 if (!p_obj_buf)
460 free(obj_buf); 500 free(obj_buf);
461 else 501 else
diff --git a/tools/perf/util/llvm-utils.h b/tools/perf/util/llvm-utils.h
index 9f501cef06a1..c87a2a92a88f 100644
--- a/tools/perf/util/llvm-utils.h
+++ b/tools/perf/util/llvm-utils.h
@@ -50,4 +50,10 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf, size_t *p_obj_buf_sz);
50 50
51/* This function is for test__llvm() use only */ 51/* This function is for test__llvm() use only */
52int llvm__search_clang(void); 52int llvm__search_clang(void);
53
54/* Following functions are reused by builtin clang support */
55void llvm__get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts);
56int llvm__get_nr_cpus(void);
57
58void llvm__dump_obj(const char *path, void *obj_buf, size_t size);
53#endif 59#endif
diff --git a/tools/perf/util/lzma.c b/tools/perf/util/lzma.c
index 95a1acb61245..9ddea5cecd94 100644
--- a/tools/perf/util/lzma.c
+++ b/tools/perf/util/lzma.c
@@ -29,6 +29,7 @@ int lzma_decompress_to_file(const char *input, int output_fd)
29 lzma_action action = LZMA_RUN; 29 lzma_action action = LZMA_RUN;
30 lzma_stream strm = LZMA_STREAM_INIT; 30 lzma_stream strm = LZMA_STREAM_INIT;
31 lzma_ret ret; 31 lzma_ret ret;
32 int err = -1;
32 33
33 u8 buf_in[BUFSIZE]; 34 u8 buf_in[BUFSIZE];
34 u8 buf_out[BUFSIZE]; 35 u8 buf_out[BUFSIZE];
@@ -45,7 +46,7 @@ int lzma_decompress_to_file(const char *input, int output_fd)
45 if (ret != LZMA_OK) { 46 if (ret != LZMA_OK) {
46 pr_err("lzma: lzma_stream_decoder failed %s (%d)\n", 47 pr_err("lzma: lzma_stream_decoder failed %s (%d)\n",
47 lzma_strerror(ret), ret); 48 lzma_strerror(ret), ret);
48 return -1; 49 goto err_fclose;
49 } 50 }
50 51
51 strm.next_in = NULL; 52 strm.next_in = NULL;
@@ -60,7 +61,7 @@ int lzma_decompress_to_file(const char *input, int output_fd)
60 61
61 if (ferror(infile)) { 62 if (ferror(infile)) {
62 pr_err("lzma: read error: %s\n", strerror(errno)); 63 pr_err("lzma: read error: %s\n", strerror(errno));
63 return -1; 64 goto err_fclose;
64 } 65 }
65 66
66 if (feof(infile)) 67 if (feof(infile))
@@ -74,7 +75,7 @@ int lzma_decompress_to_file(const char *input, int output_fd)
74 75
75 if (writen(output_fd, buf_out, write_size) != write_size) { 76 if (writen(output_fd, buf_out, write_size) != write_size) {
76 pr_err("lzma: write error: %s\n", strerror(errno)); 77 pr_err("lzma: write error: %s\n", strerror(errno));
77 return -1; 78 goto err_fclose;
78 } 79 }
79 80
80 strm.next_out = buf_out; 81 strm.next_out = buf_out;
@@ -83,13 +84,15 @@ int lzma_decompress_to_file(const char *input, int output_fd)
83 84
84 if (ret != LZMA_OK) { 85 if (ret != LZMA_OK) {
85 if (ret == LZMA_STREAM_END) 86 if (ret == LZMA_STREAM_END)
86 return 0; 87 break;
87 88
88 pr_err("lzma: failed %s\n", lzma_strerror(ret)); 89 pr_err("lzma: failed %s\n", lzma_strerror(ret));
89 return -1; 90 goto err_fclose;
90 } 91 }
91 } 92 }
92 93
94 err = 0;
95err_fclose:
93 fclose(infile); 96 fclose(infile);
94 return 0; 97 return err;
95} 98}
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index cb6388dbdd98..9b33bef54581 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -41,7 +41,6 @@ int machine__init(struct machine *machine, const char *root_dir, pid_t pid)
41 41
42 machine->pid = pid; 42 machine->pid = pid;
43 43
44 machine->symbol_filter = NULL;
45 machine->id_hdr_size = 0; 44 machine->id_hdr_size = 0;
46 machine->kptr_restrict_warned = false; 45 machine->kptr_restrict_warned = false;
47 machine->comm_exec = false; 46 machine->comm_exec = false;
@@ -148,7 +147,6 @@ void machines__init(struct machines *machines)
148{ 147{
149 machine__init(&machines->host, "", HOST_KERNEL_ID); 148 machine__init(&machines->host, "", HOST_KERNEL_ID);
150 machines->guests = RB_ROOT; 149 machines->guests = RB_ROOT;
151 machines->symbol_filter = NULL;
152} 150}
153 151
154void machines__exit(struct machines *machines) 152void machines__exit(struct machines *machines)
@@ -172,8 +170,6 @@ struct machine *machines__add(struct machines *machines, pid_t pid,
172 return NULL; 170 return NULL;
173 } 171 }
174 172
175 machine->symbol_filter = machines->symbol_filter;
176
177 while (*p != NULL) { 173 while (*p != NULL) {
178 parent = *p; 174 parent = *p;
179 pos = rb_entry(parent, struct machine, rb_node); 175 pos = rb_entry(parent, struct machine, rb_node);
@@ -189,21 +185,6 @@ struct machine *machines__add(struct machines *machines, pid_t pid,
189 return machine; 185 return machine;
190} 186}
191 187
192void machines__set_symbol_filter(struct machines *machines,
193 symbol_filter_t symbol_filter)
194{
195 struct rb_node *nd;
196
197 machines->symbol_filter = symbol_filter;
198 machines->host.symbol_filter = symbol_filter;
199
200 for (nd = rb_first(&machines->guests); nd; nd = rb_next(nd)) {
201 struct machine *machine = rb_entry(nd, struct machine, rb_node);
202
203 machine->symbol_filter = symbol_filter;
204 }
205}
206
207void machines__set_comm_exec(struct machines *machines, bool comm_exec) 188void machines__set_comm_exec(struct machines *machines, bool comm_exec)
208{ 189{
209 struct rb_node *nd; 190 struct rb_node *nd;
@@ -916,10 +897,10 @@ int machines__create_kernel_maps(struct machines *machines, pid_t pid)
916} 897}
917 898
918int __machine__load_kallsyms(struct machine *machine, const char *filename, 899int __machine__load_kallsyms(struct machine *machine, const char *filename,
919 enum map_type type, bool no_kcore, symbol_filter_t filter) 900 enum map_type type, bool no_kcore)
920{ 901{
921 struct map *map = machine__kernel_map(machine); 902 struct map *map = machine__kernel_map(machine);
922 int ret = __dso__load_kallsyms(map->dso, filename, map, no_kcore, filter); 903 int ret = __dso__load_kallsyms(map->dso, filename, map, no_kcore);
923 904
924 if (ret > 0) { 905 if (ret > 0) {
925 dso__set_loaded(map->dso, type); 906 dso__set_loaded(map->dso, type);
@@ -935,16 +916,15 @@ int __machine__load_kallsyms(struct machine *machine, const char *filename,
935} 916}
936 917
937int machine__load_kallsyms(struct machine *machine, const char *filename, 918int machine__load_kallsyms(struct machine *machine, const char *filename,
938 enum map_type type, symbol_filter_t filter) 919 enum map_type type)
939{ 920{
940 return __machine__load_kallsyms(machine, filename, type, false, filter); 921 return __machine__load_kallsyms(machine, filename, type, false);
941} 922}
942 923
943int machine__load_vmlinux_path(struct machine *machine, enum map_type type, 924int machine__load_vmlinux_path(struct machine *machine, enum map_type type)
944 symbol_filter_t filter)
945{ 925{
946 struct map *map = machine__kernel_map(machine); 926 struct map *map = machine__kernel_map(machine);
947 int ret = dso__load_vmlinux_path(map->dso, map, filter); 927 int ret = dso__load_vmlinux_path(map->dso, map);
948 928
949 if (ret > 0) 929 if (ret > 0)
950 dso__set_loaded(map->dso, type); 930 dso__set_loaded(map->dso, type);
@@ -1313,7 +1293,7 @@ static int machine__process_kernel_mmap_event(struct machine *machine,
1313 /* 1293 /*
1314 * preload dso of guest kernel and modules 1294 * preload dso of guest kernel and modules
1315 */ 1295 */
1316 dso__load(kernel, machine__kernel_map(machine), NULL); 1296 dso__load(kernel, machine__kernel_map(machine));
1317 } 1297 }
1318 } 1298 }
1319 return 0; 1299 return 0;
@@ -1636,7 +1616,11 @@ static int add_callchain_ip(struct thread *thread,
1636 struct symbol **parent, 1616 struct symbol **parent,
1637 struct addr_location *root_al, 1617 struct addr_location *root_al,
1638 u8 *cpumode, 1618 u8 *cpumode,
1639 u64 ip) 1619 u64 ip,
1620 bool branch,
1621 struct branch_flags *flags,
1622 int nr_loop_iter,
1623 int samples)
1640{ 1624{
1641 struct addr_location al; 1625 struct addr_location al;
1642 1626
@@ -1688,7 +1672,8 @@ static int add_callchain_ip(struct thread *thread,
1688 1672
1689 if (symbol_conf.hide_unresolved && al.sym == NULL) 1673 if (symbol_conf.hide_unresolved && al.sym == NULL)
1690 return 0; 1674 return 0;
1691 return callchain_cursor_append(cursor, al.addr, al.map, al.sym); 1675 return callchain_cursor_append(cursor, al.addr, al.map, al.sym,
1676 branch, flags, nr_loop_iter, samples);
1692} 1677}
1693 1678
1694struct branch_info *sample__resolve_bstack(struct perf_sample *sample, 1679struct branch_info *sample__resolve_bstack(struct perf_sample *sample,
@@ -1765,9 +1750,8 @@ static int resolve_lbr_callchain_sample(struct thread *thread,
1765 int max_stack) 1750 int max_stack)
1766{ 1751{
1767 struct ip_callchain *chain = sample->callchain; 1752 struct ip_callchain *chain = sample->callchain;
1768 int chain_nr = min(max_stack, (int)chain->nr); 1753 int chain_nr = min(max_stack, (int)chain->nr), i;
1769 u8 cpumode = PERF_RECORD_MISC_USER; 1754 u8 cpumode = PERF_RECORD_MISC_USER;
1770 int i, j, err;
1771 u64 ip; 1755 u64 ip;
1772 1756
1773 for (i = 0; i < chain_nr; i++) { 1757 for (i = 0; i < chain_nr; i++) {
@@ -1778,7 +1762,9 @@ static int resolve_lbr_callchain_sample(struct thread *thread,
1778 /* LBR only affects the user callchain */ 1762 /* LBR only affects the user callchain */
1779 if (i != chain_nr) { 1763 if (i != chain_nr) {
1780 struct branch_stack *lbr_stack = sample->branch_stack; 1764 struct branch_stack *lbr_stack = sample->branch_stack;
1781 int lbr_nr = lbr_stack->nr; 1765 int lbr_nr = lbr_stack->nr, j, k;
1766 bool branch;
1767 struct branch_flags *flags;
1782 /* 1768 /*
1783 * LBR callstack can only get user call chain. 1769 * LBR callstack can only get user call chain.
1784 * The mix_chain_nr is kernel call chain 1770 * The mix_chain_nr is kernel call chain
@@ -1792,23 +1778,42 @@ static int resolve_lbr_callchain_sample(struct thread *thread,
1792 int mix_chain_nr = i + 1 + lbr_nr + 1; 1778 int mix_chain_nr = i + 1 + lbr_nr + 1;
1793 1779
1794 for (j = 0; j < mix_chain_nr; j++) { 1780 for (j = 0; j < mix_chain_nr; j++) {
1781 int err;
1782 branch = false;
1783 flags = NULL;
1784
1795 if (callchain_param.order == ORDER_CALLEE) { 1785 if (callchain_param.order == ORDER_CALLEE) {
1796 if (j < i + 1) 1786 if (j < i + 1)
1797 ip = chain->ips[j]; 1787 ip = chain->ips[j];
1798 else if (j > i + 1) 1788 else if (j > i + 1) {
1799 ip = lbr_stack->entries[j - i - 2].from; 1789 k = j - i - 2;
1800 else 1790 ip = lbr_stack->entries[k].from;
1791 branch = true;
1792 flags = &lbr_stack->entries[k].flags;
1793 } else {
1801 ip = lbr_stack->entries[0].to; 1794 ip = lbr_stack->entries[0].to;
1795 branch = true;
1796 flags = &lbr_stack->entries[0].flags;
1797 }
1802 } else { 1798 } else {
1803 if (j < lbr_nr) 1799 if (j < lbr_nr) {
1804 ip = lbr_stack->entries[lbr_nr - j - 1].from; 1800 k = lbr_nr - j - 1;
1801 ip = lbr_stack->entries[k].from;
1802 branch = true;
1803 flags = &lbr_stack->entries[k].flags;
1804 }
1805 else if (j > lbr_nr) 1805 else if (j > lbr_nr)
1806 ip = chain->ips[i + 1 - (j - lbr_nr)]; 1806 ip = chain->ips[i + 1 - (j - lbr_nr)];
1807 else 1807 else {
1808 ip = lbr_stack->entries[0].to; 1808 ip = lbr_stack->entries[0].to;
1809 branch = true;
1810 flags = &lbr_stack->entries[0].flags;
1811 }
1809 } 1812 }
1810 1813
1811 err = add_callchain_ip(thread, cursor, parent, root_al, &cpumode, ip); 1814 err = add_callchain_ip(thread, cursor, parent,
1815 root_al, &cpumode, ip,
1816 branch, flags, 0, 0);
1812 if (err) 1817 if (err)
1813 return (err < 0) ? err : 0; 1818 return (err < 0) ? err : 0;
1814 } 1819 }
@@ -1833,6 +1838,7 @@ static int thread__resolve_callchain_sample(struct thread *thread,
1833 int i, j, err, nr_entries; 1838 int i, j, err, nr_entries;
1834 int skip_idx = -1; 1839 int skip_idx = -1;
1835 int first_call = 0; 1840 int first_call = 0;
1841 int nr_loop_iter;
1836 1842
1837 if (perf_evsel__has_branch_callstack(evsel)) { 1843 if (perf_evsel__has_branch_callstack(evsel)) {
1838 err = resolve_lbr_callchain_sample(thread, cursor, sample, parent, 1844 err = resolve_lbr_callchain_sample(thread, cursor, sample, parent,
@@ -1888,14 +1894,37 @@ static int thread__resolve_callchain_sample(struct thread *thread,
1888 be[i] = branch->entries[branch->nr - i - 1]; 1894 be[i] = branch->entries[branch->nr - i - 1];
1889 } 1895 }
1890 1896
1897 nr_loop_iter = nr;
1891 nr = remove_loops(be, nr); 1898 nr = remove_loops(be, nr);
1892 1899
1900 /*
1901 * Get the number of iterations.
1902 * It's only approximation, but good enough in practice.
1903 */
1904 if (nr_loop_iter > nr)
1905 nr_loop_iter = nr_loop_iter - nr + 1;
1906 else
1907 nr_loop_iter = 0;
1908
1893 for (i = 0; i < nr; i++) { 1909 for (i = 0; i < nr; i++) {
1894 err = add_callchain_ip(thread, cursor, parent, root_al, 1910 if (i == nr - 1)
1895 NULL, be[i].to); 1911 err = add_callchain_ip(thread, cursor, parent,
1912 root_al,
1913 NULL, be[i].to,
1914 true, &be[i].flags,
1915 nr_loop_iter, 1);
1916 else
1917 err = add_callchain_ip(thread, cursor, parent,
1918 root_al,
1919 NULL, be[i].to,
1920 true, &be[i].flags,
1921 0, 0);
1922
1896 if (!err) 1923 if (!err)
1897 err = add_callchain_ip(thread, cursor, parent, root_al, 1924 err = add_callchain_ip(thread, cursor, parent, root_al,
1898 NULL, be[i].from); 1925 NULL, be[i].from,
1926 true, &be[i].flags,
1927 0, 0);
1899 if (err == -EINVAL) 1928 if (err == -EINVAL)
1900 break; 1929 break;
1901 if (err) 1930 if (err)
@@ -1923,7 +1952,9 @@ check_calls:
1923 if (ip < PERF_CONTEXT_MAX) 1952 if (ip < PERF_CONTEXT_MAX)
1924 ++nr_entries; 1953 ++nr_entries;
1925 1954
1926 err = add_callchain_ip(thread, cursor, parent, root_al, &cpumode, ip); 1955 err = add_callchain_ip(thread, cursor, parent,
1956 root_al, &cpumode, ip,
1957 false, NULL, 0, 0);
1927 1958
1928 if (err) 1959 if (err)
1929 return (err < 0) ? err : 0; 1960 return (err < 0) ? err : 0;
@@ -1939,7 +1970,8 @@ static int unwind_entry(struct unwind_entry *entry, void *arg)
1939 if (symbol_conf.hide_unresolved && entry->sym == NULL) 1970 if (symbol_conf.hide_unresolved && entry->sym == NULL)
1940 return 0; 1971 return 0;
1941 return callchain_cursor_append(cursor, entry->ip, 1972 return callchain_cursor_append(cursor, entry->ip,
1942 entry->map, entry->sym); 1973 entry->map, entry->sym,
1974 false, NULL, 0, 0);
1943} 1975}
1944 1976
1945static int thread__resolve_callchain_unwind(struct thread *thread, 1977static int thread__resolve_callchain_unwind(struct thread *thread,
@@ -2115,7 +2147,7 @@ int machine__get_kernel_start(struct machine *machine)
2115 */ 2147 */
2116 machine->kernel_start = 1ULL << 63; 2148 machine->kernel_start = 1ULL << 63;
2117 if (map) { 2149 if (map) {
2118 err = map__load(map, machine->symbol_filter); 2150 err = map__load(map);
2119 if (map->start) 2151 if (map->start)
2120 machine->kernel_start = map->start; 2152 machine->kernel_start = map->start;
2121 } 2153 }
@@ -2131,7 +2163,7 @@ char *machine__resolve_kernel_addr(void *vmachine, unsigned long long *addrp, ch
2131{ 2163{
2132 struct machine *machine = vmachine; 2164 struct machine *machine = vmachine;
2133 struct map *map; 2165 struct map *map;
2134 struct symbol *sym = map_groups__find_symbol(&machine->kmaps, MAP__FUNCTION, *addrp, &map, NULL); 2166 struct symbol *sym = map_groups__find_symbol(&machine->kmaps, MAP__FUNCTION, *addrp, &map);
2135 2167
2136 if (sym == NULL) 2168 if (sym == NULL)
2137 return NULL; 2169 return NULL;
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index 20739f746bc4..354de6e56109 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -41,7 +41,6 @@ struct machine {
41 struct map_groups kmaps; 41 struct map_groups kmaps;
42 struct map *vmlinux_maps[MAP__NR_TYPES]; 42 struct map *vmlinux_maps[MAP__NR_TYPES];
43 u64 kernel_start; 43 u64 kernel_start;
44 symbol_filter_t symbol_filter;
45 pid_t *current_tid; 44 pid_t *current_tid;
46 union { /* Tool specific area */ 45 union { /* Tool specific area */
47 void *priv; 46 void *priv;
@@ -110,7 +109,6 @@ typedef void (*machine__process_t)(struct machine *machine, void *data);
110struct machines { 109struct machines {
111 struct machine host; 110 struct machine host;
112 struct rb_root guests; 111 struct rb_root guests;
113 symbol_filter_t symbol_filter;
114}; 112};
115 113
116void machines__init(struct machines *machines); 114void machines__init(struct machines *machines);
@@ -128,8 +126,6 @@ struct machine *machines__findnew(struct machines *machines, pid_t pid);
128void machines__set_id_hdr_size(struct machines *machines, u16 id_hdr_size); 126void machines__set_id_hdr_size(struct machines *machines, u16 id_hdr_size);
129char *machine__mmap_name(struct machine *machine, char *bf, size_t size); 127char *machine__mmap_name(struct machine *machine, char *bf, size_t size);
130 128
131void machines__set_symbol_filter(struct machines *machines,
132 symbol_filter_t symbol_filter);
133void machines__set_comm_exec(struct machines *machines, bool comm_exec); 129void machines__set_comm_exec(struct machines *machines, bool comm_exec);
134 130
135struct machine *machine__new_host(void); 131struct machine *machine__new_host(void);
@@ -178,40 +174,33 @@ size_t machine__fprintf(struct machine *machine, FILE *fp);
178static inline 174static inline
179struct symbol *machine__find_kernel_symbol(struct machine *machine, 175struct symbol *machine__find_kernel_symbol(struct machine *machine,
180 enum map_type type, u64 addr, 176 enum map_type type, u64 addr,
181 struct map **mapp, 177 struct map **mapp)
182 symbol_filter_t filter)
183{ 178{
184 return map_groups__find_symbol(&machine->kmaps, type, addr, 179 return map_groups__find_symbol(&machine->kmaps, type, addr, mapp);
185 mapp, filter);
186} 180}
187 181
188static inline 182static inline
189struct symbol *machine__find_kernel_symbol_by_name(struct machine *machine, 183struct symbol *machine__find_kernel_symbol_by_name(struct machine *machine,
190 enum map_type type, const char *name, 184 enum map_type type, const char *name,
191 struct map **mapp, 185 struct map **mapp)
192 symbol_filter_t filter)
193{ 186{
194 return map_groups__find_symbol_by_name(&machine->kmaps, type, name, 187 return map_groups__find_symbol_by_name(&machine->kmaps, type, name, mapp);
195 mapp, filter);
196} 188}
197 189
198static inline 190static inline
199struct symbol *machine__find_kernel_function(struct machine *machine, u64 addr, 191struct symbol *machine__find_kernel_function(struct machine *machine, u64 addr,
200 struct map **mapp, 192 struct map **mapp)
201 symbol_filter_t filter)
202{ 193{
203 return machine__find_kernel_symbol(machine, MAP__FUNCTION, addr, 194 return machine__find_kernel_symbol(machine, MAP__FUNCTION, addr,
204 mapp, filter); 195 mapp);
205} 196}
206 197
207static inline 198static inline
208struct symbol *machine__find_kernel_function_by_name(struct machine *machine, 199struct symbol *machine__find_kernel_function_by_name(struct machine *machine,
209 const char *name, 200 const char *name,
210 struct map **mapp, 201 struct map **mapp)
211 symbol_filter_t filter)
212{ 202{
213 return map_groups__find_function_by_name(&machine->kmaps, name, mapp, 203 return map_groups__find_function_by_name(&machine->kmaps, name, mapp);
214 filter);
215} 204}
216 205
217struct map *machine__findnew_module_map(struct machine *machine, u64 start, 206struct map *machine__findnew_module_map(struct machine *machine, u64 start,
@@ -219,11 +208,10 @@ struct map *machine__findnew_module_map(struct machine *machine, u64 start,
219int arch__fix_module_text_start(u64 *start, const char *name); 208int arch__fix_module_text_start(u64 *start, const char *name);
220 209
221int __machine__load_kallsyms(struct machine *machine, const char *filename, 210int __machine__load_kallsyms(struct machine *machine, const char *filename,
222 enum map_type type, bool no_kcore, symbol_filter_t filter); 211 enum map_type type, bool no_kcore);
223int machine__load_kallsyms(struct machine *machine, const char *filename, 212int machine__load_kallsyms(struct machine *machine, const char *filename,
224 enum map_type type, symbol_filter_t filter); 213 enum map_type type);
225int machine__load_vmlinux_path(struct machine *machine, enum map_type type, 214int machine__load_vmlinux_path(struct machine *machine, enum map_type type);
226 symbol_filter_t filter);
227 215
228size_t machine__fprintf_dsos_buildid(struct machine *machine, FILE *fp, 216size_t machine__fprintf_dsos_buildid(struct machine *machine, FILE *fp,
229 bool (skip)(struct dso *dso, int parm), int parm); 217 bool (skip)(struct dso *dso, int parm), int parm);
diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c
index 728129ac653a..4f9a71c63026 100644
--- a/tools/perf/util/map.c
+++ b/tools/perf/util/map.c
@@ -6,6 +6,7 @@
6#include <string.h> 6#include <string.h>
7#include <stdio.h> 7#include <stdio.h>
8#include <unistd.h> 8#include <unistd.h>
9#include <uapi/linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */
9#include "map.h" 10#include "map.h"
10#include "thread.h" 11#include "thread.h"
11#include "strlist.h" 12#include "strlist.h"
@@ -24,9 +25,10 @@ const char *map_type__name[MAP__NR_TYPES] = {
24 [MAP__VARIABLE] = "Variables", 25 [MAP__VARIABLE] = "Variables",
25}; 26};
26 27
27static inline int is_anon_memory(const char *filename) 28static inline int is_anon_memory(const char *filename, u32 flags)
28{ 29{
29 return !strcmp(filename, "//anon") || 30 return flags & MAP_HUGETLB ||
31 !strcmp(filename, "//anon") ||
30 !strncmp(filename, "/dev/zero", sizeof("/dev/zero") - 1) || 32 !strncmp(filename, "/dev/zero", sizeof("/dev/zero") - 1) ||
31 !strncmp(filename, "/anon_hugepage", sizeof("/anon_hugepage") - 1); 33 !strncmp(filename, "/anon_hugepage", sizeof("/anon_hugepage") - 1);
32} 34}
@@ -155,7 +157,7 @@ struct map *map__new(struct machine *machine, u64 start, u64 len,
155 int anon, no_dso, vdso, android; 157 int anon, no_dso, vdso, android;
156 158
157 android = is_android_lib(filename); 159 android = is_android_lib(filename);
158 anon = is_anon_memory(filename); 160 anon = is_anon_memory(filename, flags);
159 vdso = is_vdso_map(filename); 161 vdso = is_vdso_map(filename);
160 no_dso = is_no_dso_memory(filename); 162 no_dso = is_no_dso_memory(filename);
161 163
@@ -279,7 +281,7 @@ void map__fixup_end(struct map *map)
279 281
280#define DSO__DELETED "(deleted)" 282#define DSO__DELETED "(deleted)"
281 283
282int map__load(struct map *map, symbol_filter_t filter) 284int map__load(struct map *map)
283{ 285{
284 const char *name = map->dso->long_name; 286 const char *name = map->dso->long_name;
285 int nr; 287 int nr;
@@ -287,7 +289,7 @@ int map__load(struct map *map, symbol_filter_t filter)
287 if (dso__loaded(map->dso, map->type)) 289 if (dso__loaded(map->dso, map->type))
288 return 0; 290 return 0;
289 291
290 nr = dso__load(map->dso, map, filter); 292 nr = dso__load(map->dso, map);
291 if (nr < 0) { 293 if (nr < 0) {
292 if (map->dso->has_build_id) { 294 if (map->dso->has_build_id) {
293 char sbuild_id[SBUILD_ID_SIZE]; 295 char sbuild_id[SBUILD_ID_SIZE];
@@ -312,9 +314,6 @@ int map__load(struct map *map, symbol_filter_t filter)
312 pr_warning("%.*s was updated (is prelink enabled?). " 314 pr_warning("%.*s was updated (is prelink enabled?). "
313 "Restart the long running apps that use it!\n", 315 "Restart the long running apps that use it!\n",
314 (int)real_len, name); 316 (int)real_len, name);
315 } else if (filter) {
316 pr_warning("no symbols passed the given filter.\n");
317 return -2; /* Empty but maybe by the filter */
318 } else { 317 } else {
319 pr_warning("no symbols found in %s, maybe install " 318 pr_warning("no symbols found in %s, maybe install "
320 "a debug package?\n", name); 319 "a debug package?\n", name);
@@ -331,19 +330,17 @@ int __weak arch__compare_symbol_names(const char *namea, const char *nameb)
331 return strcmp(namea, nameb); 330 return strcmp(namea, nameb);
332} 331}
333 332
334struct symbol *map__find_symbol(struct map *map, u64 addr, 333struct symbol *map__find_symbol(struct map *map, u64 addr)
335 symbol_filter_t filter)
336{ 334{
337 if (map__load(map, filter) < 0) 335 if (map__load(map) < 0)
338 return NULL; 336 return NULL;
339 337
340 return dso__find_symbol(map->dso, map->type, addr); 338 return dso__find_symbol(map->dso, map->type, addr);
341} 339}
342 340
343struct symbol *map__find_symbol_by_name(struct map *map, const char *name, 341struct symbol *map__find_symbol_by_name(struct map *map, const char *name)
344 symbol_filter_t filter)
345{ 342{
346 if (map__load(map, filter) < 0) 343 if (map__load(map) < 0)
347 return NULL; 344 return NULL;
348 345
349 if (!dso__sorted_by_name(map->dso, map->type)) 346 if (!dso__sorted_by_name(map->dso, map->type))
@@ -556,23 +553,22 @@ void map_groups__put(struct map_groups *mg)
556 553
557struct symbol *map_groups__find_symbol(struct map_groups *mg, 554struct symbol *map_groups__find_symbol(struct map_groups *mg,
558 enum map_type type, u64 addr, 555 enum map_type type, u64 addr,
559 struct map **mapp, 556 struct map **mapp)
560 symbol_filter_t filter)
561{ 557{
562 struct map *map = map_groups__find(mg, type, addr); 558 struct map *map = map_groups__find(mg, type, addr);
563 559
564 /* Ensure map is loaded before using map->map_ip */ 560 /* Ensure map is loaded before using map->map_ip */
565 if (map != NULL && map__load(map, filter) >= 0) { 561 if (map != NULL && map__load(map) >= 0) {
566 if (mapp != NULL) 562 if (mapp != NULL)
567 *mapp = map; 563 *mapp = map;
568 return map__find_symbol(map, map->map_ip(map, addr), filter); 564 return map__find_symbol(map, map->map_ip(map, addr));
569 } 565 }
570 566
571 return NULL; 567 return NULL;
572} 568}
573 569
574struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, 570struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name,
575 struct map **mapp, symbol_filter_t filter) 571 struct map **mapp)
576{ 572{
577 struct symbol *sym; 573 struct symbol *sym;
578 struct rb_node *nd; 574 struct rb_node *nd;
@@ -582,7 +578,7 @@ struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name,
582 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) { 578 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) {
583 struct map *pos = rb_entry(nd, struct map, rb_node); 579 struct map *pos = rb_entry(nd, struct map, rb_node);
584 580
585 sym = map__find_symbol_by_name(pos, name, filter); 581 sym = map__find_symbol_by_name(pos, name);
586 582
587 if (sym == NULL) 583 if (sym == NULL)
588 continue; 584 continue;
@@ -600,15 +596,14 @@ out:
600struct symbol *map_groups__find_symbol_by_name(struct map_groups *mg, 596struct symbol *map_groups__find_symbol_by_name(struct map_groups *mg,
601 enum map_type type, 597 enum map_type type,
602 const char *name, 598 const char *name,
603 struct map **mapp, 599 struct map **mapp)
604 symbol_filter_t filter)
605{ 600{
606 struct symbol *sym = maps__find_symbol_by_name(&mg->maps[type], name, mapp, filter); 601 struct symbol *sym = maps__find_symbol_by_name(&mg->maps[type], name, mapp);
607 602
608 return sym; 603 return sym;
609} 604}
610 605
611int map_groups__find_ams(struct addr_map_symbol *ams, symbol_filter_t filter) 606int map_groups__find_ams(struct addr_map_symbol *ams)
612{ 607{
613 if (ams->addr < ams->map->start || ams->addr >= ams->map->end) { 608 if (ams->addr < ams->map->start || ams->addr >= ams->map->end) {
614 if (ams->map->groups == NULL) 609 if (ams->map->groups == NULL)
@@ -620,7 +615,7 @@ int map_groups__find_ams(struct addr_map_symbol *ams, symbol_filter_t filter)
620 } 615 }
621 616
622 ams->al_addr = ams->map->map_ip(ams->map, ams->addr); 617 ams->al_addr = ams->map->map_ip(ams->map, ams->addr);
623 ams->sym = map__find_symbol(ams->map, ams->al_addr, filter); 618 ams->sym = map__find_symbol(ams->map, ams->al_addr);
624 619
625 return ams->sym ? 0 : -1; 620 return ams->sym ? 0 : -1;
626} 621}
@@ -687,9 +682,16 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
687 continue; 682 continue;
688 683
689 if (verbose >= 2) { 684 if (verbose >= 2) {
690 fputs("overlapping maps:\n", fp); 685
691 map__fprintf(map, fp); 686 if (use_browser) {
692 map__fprintf(pos, fp); 687 pr_warning("overlapping maps in %s "
688 "(disable tui for more info)\n",
689 map->dso->name);
690 } else {
691 fputs("overlapping maps:\n", fp);
692 map__fprintf(map, fp);
693 map__fprintf(pos, fp);
694 }
693 } 695 }
694 696
695 rb_erase_init(&pos->rb_node, root); 697 rb_erase_init(&pos->rb_node, root);
@@ -707,7 +709,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
707 709
708 before->end = map->start; 710 before->end = map->start;
709 __map_groups__insert(pos->groups, before); 711 __map_groups__insert(pos->groups, before);
710 if (verbose >= 2) 712 if (verbose >= 2 && !use_browser)
711 map__fprintf(before, fp); 713 map__fprintf(before, fp);
712 map__put(before); 714 map__put(before);
713 } 715 }
@@ -722,7 +724,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
722 724
723 after->start = map->end; 725 after->start = map->end;
724 __map_groups__insert(pos->groups, after); 726 __map_groups__insert(pos->groups, after);
725 if (verbose >= 2) 727 if (verbose >= 2 && !use_browser)
726 map__fprintf(after, fp); 728 map__fprintf(after, fp);
727 map__put(after); 729 map__put(after);
728 } 730 }
diff --git a/tools/perf/util/map.h b/tools/perf/util/map.h
index d83396ceecba..abdacf800c98 100644
--- a/tools/perf/util/map.h
+++ b/tools/perf/util/map.h
@@ -127,17 +127,14 @@ struct thread;
127 * @map: the 'struct map *' in which symbols itereated 127 * @map: the 'struct map *' in which symbols itereated
128 * @sym_name: the symbol name 128 * @sym_name: the symbol name
129 * @pos: the 'struct symbol *' to use as a loop cursor 129 * @pos: the 'struct symbol *' to use as a loop cursor
130 * @filter: to use when loading the DSO
131 */ 130 */
132#define __map__for_each_symbol_by_name(map, sym_name, pos, filter) \ 131#define __map__for_each_symbol_by_name(map, sym_name, pos) \
133 for (pos = map__find_symbol_by_name(map, sym_name, filter); \ 132 for (pos = map__find_symbol_by_name(map, sym_name); \
134 pos && arch__compare_symbol_names(pos->name, sym_name) == 0; \ 133 pos && arch__compare_symbol_names(pos->name, sym_name) == 0; \
135 pos = symbol__next_by_name(pos)) 134 pos = symbol__next_by_name(pos))
136 135
137#define map__for_each_symbol_by_name(map, sym_name, pos) \ 136#define map__for_each_symbol_by_name(map, sym_name, pos) \
138 __map__for_each_symbol_by_name(map, sym_name, (pos), NULL) 137 __map__for_each_symbol_by_name(map, sym_name, (pos))
139
140typedef int (*symbol_filter_t)(struct map *map, struct symbol *sym);
141 138
142int arch__compare_symbol_names(const char *namea, const char *nameb); 139int arch__compare_symbol_names(const char *namea, const char *nameb);
143void map__init(struct map *map, enum map_type type, 140void map__init(struct map *map, enum map_type type,
@@ -173,11 +170,9 @@ size_t map__fprintf_dsoname(struct map *map, FILE *fp);
173int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix, 170int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix,
174 FILE *fp); 171 FILE *fp);
175 172
176int map__load(struct map *map, symbol_filter_t filter); 173int map__load(struct map *map);
177struct symbol *map__find_symbol(struct map *map, 174struct symbol *map__find_symbol(struct map *map, u64 addr);
178 u64 addr, symbol_filter_t filter); 175struct symbol *map__find_symbol_by_name(struct map *map, const char *name);
179struct symbol *map__find_symbol_by_name(struct map *map, const char *name,
180 symbol_filter_t filter);
181void map__fixup_start(struct map *map); 176void map__fixup_start(struct map *map);
182void map__fixup_end(struct map *map); 177void map__fixup_end(struct map *map);
183 178
@@ -191,7 +186,7 @@ struct map *maps__find(struct maps *maps, u64 addr);
191struct map *maps__first(struct maps *maps); 186struct map *maps__first(struct maps *maps);
192struct map *map__next(struct map *map); 187struct map *map__next(struct map *map);
193struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, 188struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name,
194 struct map **mapp, symbol_filter_t filter); 189 struct map **mapp);
195void map_groups__init(struct map_groups *mg, struct machine *machine); 190void map_groups__init(struct map_groups *mg, struct machine *machine);
196void map_groups__exit(struct map_groups *mg); 191void map_groups__exit(struct map_groups *mg);
197int map_groups__clone(struct thread *thread, 192int map_groups__clone(struct thread *thread,
@@ -231,25 +226,22 @@ static inline struct map *map_groups__next(struct map *map)
231 226
232struct symbol *map_groups__find_symbol(struct map_groups *mg, 227struct symbol *map_groups__find_symbol(struct map_groups *mg,
233 enum map_type type, u64 addr, 228 enum map_type type, u64 addr,
234 struct map **mapp, 229 struct map **mapp);
235 symbol_filter_t filter);
236 230
237struct symbol *map_groups__find_symbol_by_name(struct map_groups *mg, 231struct symbol *map_groups__find_symbol_by_name(struct map_groups *mg,
238 enum map_type type, 232 enum map_type type,
239 const char *name, 233 const char *name,
240 struct map **mapp, 234 struct map **mapp);
241 symbol_filter_t filter);
242 235
243struct addr_map_symbol; 236struct addr_map_symbol;
244 237
245int map_groups__find_ams(struct addr_map_symbol *ams, symbol_filter_t filter); 238int map_groups__find_ams(struct addr_map_symbol *ams);
246 239
247static inline 240static inline
248struct symbol *map_groups__find_function_by_name(struct map_groups *mg, 241struct symbol *map_groups__find_function_by_name(struct map_groups *mg,
249 const char *name, struct map **mapp, 242 const char *name, struct map **mapp)
250 symbol_filter_t filter)
251{ 243{
252 return map_groups__find_symbol_by_name(mg, MAP__FUNCTION, name, mapp, filter); 244 return map_groups__find_symbol_by_name(mg, MAP__FUNCTION, name, mapp);
253} 245}
254 246
255int map_groups__fixup_overlappings(struct map_groups *mg, struct map *map, 247int map_groups__fixup_overlappings(struct map_groups *mg, struct map *map,
diff --git a/tools/perf/util/mem-events.c b/tools/perf/util/mem-events.c
index bbc368e7d1e4..1d4ab53c60ca 100644
--- a/tools/perf/util/mem-events.c
+++ b/tools/perf/util/mem-events.c
@@ -9,6 +9,7 @@
9#include "mem-events.h" 9#include "mem-events.h"
10#include "debug.h" 10#include "debug.h"
11#include "symbol.h" 11#include "symbol.h"
12#include "sort.h"
12 13
13unsigned int perf_mem_events__loads_ldlat = 30; 14unsigned int perf_mem_events__loads_ldlat = 30;
14 15
@@ -268,3 +269,138 @@ int perf_script__meminfo_scnprintf(char *out, size_t sz, struct mem_info *mem_in
268 269
269 return i; 270 return i;
270} 271}
272
273int c2c_decode_stats(struct c2c_stats *stats, struct mem_info *mi)
274{
275 union perf_mem_data_src *data_src = &mi->data_src;
276 u64 daddr = mi->daddr.addr;
277 u64 op = data_src->mem_op;
278 u64 lvl = data_src->mem_lvl;
279 u64 snoop = data_src->mem_snoop;
280 u64 lock = data_src->mem_lock;
281 int err = 0;
282
283#define HITM_INC(__f) \
284do { \
285 stats->__f++; \
286 stats->tot_hitm++; \
287} while (0)
288
289#define P(a, b) PERF_MEM_##a##_##b
290
291 stats->nr_entries++;
292
293 if (lock & P(LOCK, LOCKED)) stats->locks++;
294
295 if (op & P(OP, LOAD)) {
296 /* load */
297 stats->load++;
298
299 if (!daddr) {
300 stats->ld_noadrs++;
301 return -1;
302 }
303
304 if (lvl & P(LVL, HIT)) {
305 if (lvl & P(LVL, UNC)) stats->ld_uncache++;
306 if (lvl & P(LVL, IO)) stats->ld_io++;
307 if (lvl & P(LVL, LFB)) stats->ld_fbhit++;
308 if (lvl & P(LVL, L1 )) stats->ld_l1hit++;
309 if (lvl & P(LVL, L2 )) stats->ld_l2hit++;
310 if (lvl & P(LVL, L3 )) {
311 if (snoop & P(SNOOP, HITM))
312 HITM_INC(lcl_hitm);
313 else
314 stats->ld_llchit++;
315 }
316
317 if (lvl & P(LVL, LOC_RAM)) {
318 stats->lcl_dram++;
319 if (snoop & P(SNOOP, HIT))
320 stats->ld_shared++;
321 else
322 stats->ld_excl++;
323 }
324
325 if ((lvl & P(LVL, REM_RAM1)) ||
326 (lvl & P(LVL, REM_RAM2))) {
327 stats->rmt_dram++;
328 if (snoop & P(SNOOP, HIT))
329 stats->ld_shared++;
330 else
331 stats->ld_excl++;
332 }
333 }
334
335 if ((lvl & P(LVL, REM_CCE1)) ||
336 (lvl & P(LVL, REM_CCE2))) {
337 if (snoop & P(SNOOP, HIT))
338 stats->rmt_hit++;
339 else if (snoop & P(SNOOP, HITM))
340 HITM_INC(rmt_hitm);
341 }
342
343 if ((lvl & P(LVL, MISS)))
344 stats->ld_miss++;
345
346 } else if (op & P(OP, STORE)) {
347 /* store */
348 stats->store++;
349
350 if (!daddr) {
351 stats->st_noadrs++;
352 return -1;
353 }
354
355 if (lvl & P(LVL, HIT)) {
356 if (lvl & P(LVL, UNC)) stats->st_uncache++;
357 if (lvl & P(LVL, L1 )) stats->st_l1hit++;
358 }
359 if (lvl & P(LVL, MISS))
360 if (lvl & P(LVL, L1)) stats->st_l1miss++;
361 } else {
362 /* unparsable data_src? */
363 stats->noparse++;
364 return -1;
365 }
366
367 if (!mi->daddr.map || !mi->iaddr.map) {
368 stats->nomap++;
369 return -1;
370 }
371
372#undef P
373#undef HITM_INC
374 return err;
375}
376
377void c2c_add_stats(struct c2c_stats *stats, struct c2c_stats *add)
378{
379 stats->nr_entries += add->nr_entries;
380
381 stats->locks += add->locks;
382 stats->store += add->store;
383 stats->st_uncache += add->st_uncache;
384 stats->st_noadrs += add->st_noadrs;
385 stats->st_l1hit += add->st_l1hit;
386 stats->st_l1miss += add->st_l1miss;
387 stats->load += add->load;
388 stats->ld_excl += add->ld_excl;
389 stats->ld_shared += add->ld_shared;
390 stats->ld_uncache += add->ld_uncache;
391 stats->ld_io += add->ld_io;
392 stats->ld_miss += add->ld_miss;
393 stats->ld_noadrs += add->ld_noadrs;
394 stats->ld_fbhit += add->ld_fbhit;
395 stats->ld_l1hit += add->ld_l1hit;
396 stats->ld_l2hit += add->ld_l2hit;
397 stats->ld_llchit += add->ld_llchit;
398 stats->lcl_hitm += add->lcl_hitm;
399 stats->rmt_hitm += add->rmt_hitm;
400 stats->tot_hitm += add->tot_hitm;
401 stats->rmt_hit += add->rmt_hit;
402 stats->lcl_dram += add->lcl_dram;
403 stats->rmt_dram += add->rmt_dram;
404 stats->nomap += add->nomap;
405 stats->noparse += add->noparse;
406}
diff --git a/tools/perf/util/mem-events.h b/tools/perf/util/mem-events.h
index 7f69bf9d789d..40f72ee4f42a 100644
--- a/tools/perf/util/mem-events.h
+++ b/tools/perf/util/mem-events.h
@@ -2,6 +2,10 @@
2#define __PERF_MEM_EVENTS_H 2#define __PERF_MEM_EVENTS_H
3 3
4#include <stdbool.h> 4#include <stdbool.h>
5#include <stdint.h>
6#include <stdio.h>
7#include <linux/types.h>
8#include "stat.h"
5 9
6struct perf_mem_event { 10struct perf_mem_event {
7 bool record; 11 bool record;
@@ -33,4 +37,38 @@ int perf_mem__lck_scnprintf(char *out, size_t sz, struct mem_info *mem_info);
33 37
34int perf_script__meminfo_scnprintf(char *bf, size_t size, struct mem_info *mem_info); 38int perf_script__meminfo_scnprintf(char *bf, size_t size, struct mem_info *mem_info);
35 39
40struct c2c_stats {
41 u32 nr_entries;
42
43 u32 locks; /* count of 'lock' transactions */
44 u32 store; /* count of all stores in trace */
45 u32 st_uncache; /* stores to uncacheable address */
46 u32 st_noadrs; /* cacheable store with no address */
47 u32 st_l1hit; /* count of stores that hit L1D */
48 u32 st_l1miss; /* count of stores that miss L1D */
49 u32 load; /* count of all loads in trace */
50 u32 ld_excl; /* exclusive loads, rmt/lcl DRAM - snp none/miss */
51 u32 ld_shared; /* shared loads, rmt/lcl DRAM - snp hit */
52 u32 ld_uncache; /* loads to uncacheable address */
53 u32 ld_io; /* loads to io address */
54 u32 ld_miss; /* loads miss */
55 u32 ld_noadrs; /* cacheable load with no address */
56 u32 ld_fbhit; /* count of loads hitting Fill Buffer */
57 u32 ld_l1hit; /* count of loads that hit L1D */
58 u32 ld_l2hit; /* count of loads that hit L2D */
59 u32 ld_llchit; /* count of loads that hit LLC */
60 u32 lcl_hitm; /* count of loads with local HITM */
61 u32 rmt_hitm; /* count of loads with remote HITM */
62 u32 tot_hitm; /* count of loads with local and remote HITM */
63 u32 rmt_hit; /* count of loads with remote hit clean; */
64 u32 lcl_dram; /* count of loads miss to local DRAM */
65 u32 rmt_dram; /* count of loads miss to remote DRAM */
66 u32 nomap; /* count of load/stores with no phys adrs */
67 u32 noparse; /* count of unparsable data sources */
68};
69
70struct hist_entry;
71int c2c_decode_stats(struct c2c_stats *stats, struct mem_info *mi);
72void c2c_add_stats(struct c2c_stats *stats, struct c2c_stats *add);
73
36#endif /* __PERF_MEM_EVENTS_H */ 74#endif /* __PERF_MEM_EVENTS_H */
diff --git a/tools/perf/util/parse-branch-options.c b/tools/perf/util/parse-branch-options.c
index afc088dd7d20..38fd11504015 100644
--- a/tools/perf/util/parse-branch-options.c
+++ b/tools/perf/util/parse-branch-options.c
@@ -31,59 +31,51 @@ static const struct branch_mode branch_modes[] = {
31 BRANCH_END 31 BRANCH_END
32}; 32};
33 33
34int 34int parse_branch_str(const char *str, __u64 *mode)
35parse_branch_stack(const struct option *opt, const char *str, int unset)
36{ 35{
37#define ONLY_PLM \ 36#define ONLY_PLM \
38 (PERF_SAMPLE_BRANCH_USER |\ 37 (PERF_SAMPLE_BRANCH_USER |\
39 PERF_SAMPLE_BRANCH_KERNEL |\ 38 PERF_SAMPLE_BRANCH_KERNEL |\
40 PERF_SAMPLE_BRANCH_HV) 39 PERF_SAMPLE_BRANCH_HV)
41 40
42 uint64_t *mode = (uint64_t *)opt->value; 41 int ret = 0;
42 char *p, *s;
43 char *os = NULL;
43 const struct branch_mode *br; 44 const struct branch_mode *br;
44 char *s, *os = NULL, *p;
45 int ret = -1;
46 45
47 if (unset) 46 if (str == NULL) {
47 *mode = PERF_SAMPLE_BRANCH_ANY;
48 return 0; 48 return 0;
49 }
49 50
50 /* 51 /* because str is read-only */
51 * cannot set it twice, -b + --branch-filter for instance 52 s = os = strdup(str);
52 */ 53 if (!s)
53 if (*mode)
54 return -1; 54 return -1;
55 55
56 /* str may be NULL in case no arg is passed to -b */ 56 for (;;) {
57 if (str) { 57 p = strchr(s, ',');
58 /* because str is read-only */ 58 if (p)
59 s = os = strdup(str); 59 *p = '\0';
60 if (!s)
61 return -1;
62
63 for (;;) {
64 p = strchr(s, ',');
65 if (p)
66 *p = '\0';
67
68 for (br = branch_modes; br->name; br++) {
69 if (!strcasecmp(s, br->name))
70 break;
71 }
72 if (!br->name) {
73 ui__warning("unknown branch filter %s,"
74 " check man page\n", s);
75 goto error;
76 }
77
78 *mode |= br->mode;
79
80 if (!p)
81 break;
82 60
83 s = p + 1; 61 for (br = branch_modes; br->name; br++) {
62 if (!strcasecmp(s, br->name))
63 break;
64 }
65 if (!br->name) {
66 ret = -1;
67 pr_warning("unknown branch filter %s,"
68 " check man page\n", s);
69 goto error;
84 } 70 }
71
72 *mode |= br->mode;
73
74 if (!p)
75 break;
76
77 s = p + 1;
85 } 78 }
86 ret = 0;
87 79
88 /* default to any branch */ 80 /* default to any branch */
89 if ((*mode & ~ONLY_PLM) == 0) { 81 if ((*mode & ~ONLY_PLM) == 0) {
@@ -93,3 +85,20 @@ error:
93 free(os); 85 free(os);
94 return ret; 86 return ret;
95} 87}
88
89int
90parse_branch_stack(const struct option *opt, const char *str, int unset)
91{
92 __u64 *mode = (__u64 *)opt->value;
93
94 if (unset)
95 return 0;
96
97 /*
98 * cannot set it twice, -b + --branch-filter for instance
99 */
100 if (*mode)
101 return -1;
102
103 return parse_branch_str(str, mode);
104}
diff --git a/tools/perf/util/parse-branch-options.h b/tools/perf/util/parse-branch-options.h
index b9d9470c2e82..6086fd90eb23 100644
--- a/tools/perf/util/parse-branch-options.h
+++ b/tools/perf/util/parse-branch-options.h
@@ -1,5 +1,6 @@
1#ifndef _PERF_PARSE_BRANCH_OPTIONS_H 1#ifndef _PERF_PARSE_BRANCH_OPTIONS_H
2#define _PERF_PARSE_BRANCH_OPTIONS_H 1 2#define _PERF_PARSE_BRANCH_OPTIONS_H 1
3struct option; 3#include <stdint.h>
4int parse_branch_stack(const struct option *opt, const char *str, int unset); 4int parse_branch_stack(const struct option *opt, const char *str, int unset);
5int parse_branch_str(const char *str, __u64 *mode);
5#endif /* _PERF_PARSE_BRANCH_OPTIONS_H */ 6#endif /* _PERF_PARSE_BRANCH_OPTIONS_H */
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 6c913c3914fb..3c876b8ba4de 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -22,6 +22,7 @@
22#include "cpumap.h" 22#include "cpumap.h"
23#include "probe-file.h" 23#include "probe-file.h"
24#include "asm/bug.h" 24#include "asm/bug.h"
25#include "util/parse-branch-options.h"
25 26
26#define MAX_NAME_LEN 100 27#define MAX_NAME_LEN 100
27 28
@@ -904,6 +905,7 @@ static const char *config_term_names[__PARSE_EVENTS__TERM_TYPE_NR] = {
904 [PARSE_EVENTS__TERM_TYPE_MAX_STACK] = "max-stack", 905 [PARSE_EVENTS__TERM_TYPE_MAX_STACK] = "max-stack",
905 [PARSE_EVENTS__TERM_TYPE_OVERWRITE] = "overwrite", 906 [PARSE_EVENTS__TERM_TYPE_OVERWRITE] = "overwrite",
906 [PARSE_EVENTS__TERM_TYPE_NOOVERWRITE] = "no-overwrite", 907 [PARSE_EVENTS__TERM_TYPE_NOOVERWRITE] = "no-overwrite",
908 [PARSE_EVENTS__TERM_TYPE_DRV_CFG] = "driver-config",
907}; 909};
908 910
909static bool config_term_shrinked; 911static bool config_term_shrinked;
@@ -923,6 +925,7 @@ config_term_avail(int term_type, struct parse_events_error *err)
923 case PARSE_EVENTS__TERM_TYPE_CONFIG1: 925 case PARSE_EVENTS__TERM_TYPE_CONFIG1:
924 case PARSE_EVENTS__TERM_TYPE_CONFIG2: 926 case PARSE_EVENTS__TERM_TYPE_CONFIG2:
925 case PARSE_EVENTS__TERM_TYPE_NAME: 927 case PARSE_EVENTS__TERM_TYPE_NAME:
928 case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD:
926 return true; 929 return true;
927 default: 930 default:
928 if (!err) 931 if (!err)
@@ -971,10 +974,13 @@ do { \
971 CHECK_TYPE_VAL(NUM); 974 CHECK_TYPE_VAL(NUM);
972 break; 975 break;
973 case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE: 976 case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE:
974 /* 977 CHECK_TYPE_VAL(STR);
975 * TODO uncomment when the field is available 978 if (strcmp(term->val.str, "no") &&
976 * attr->branch_sample_type = term->val.num; 979 parse_branch_str(term->val.str, &attr->branch_sample_type)) {
977 */ 980 err->str = strdup("invalid branch sample type");
981 err->idx = term->err_val;
982 return -EINVAL;
983 }
978 break; 984 break;
979 case PARSE_EVENTS__TERM_TYPE_TIME: 985 case PARSE_EVENTS__TERM_TYPE_TIME:
980 CHECK_TYPE_VAL(NUM); 986 CHECK_TYPE_VAL(NUM);
@@ -1034,7 +1040,8 @@ static int config_term_pmu(struct perf_event_attr *attr,
1034 struct parse_events_term *term, 1040 struct parse_events_term *term,
1035 struct parse_events_error *err) 1041 struct parse_events_error *err)
1036{ 1042{
1037 if (term->type_term == PARSE_EVENTS__TERM_TYPE_USER) 1043 if (term->type_term == PARSE_EVENTS__TERM_TYPE_USER ||
1044 term->type_term == PARSE_EVENTS__TERM_TYPE_DRV_CFG)
1038 /* 1045 /*
1039 * Always succeed for sysfs terms, as we dont know 1046 * Always succeed for sysfs terms, as we dont know
1040 * at this point what type they need to have. 1047 * at this point what type they need to have.
@@ -1116,6 +1123,9 @@ do { \
1116 case PARSE_EVENTS__TERM_TYPE_CALLGRAPH: 1123 case PARSE_EVENTS__TERM_TYPE_CALLGRAPH:
1117 ADD_CONFIG_TERM(CALLGRAPH, callgraph, term->val.str); 1124 ADD_CONFIG_TERM(CALLGRAPH, callgraph, term->val.str);
1118 break; 1125 break;
1126 case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE:
1127 ADD_CONFIG_TERM(BRANCH, branch, term->val.str);
1128 break;
1119 case PARSE_EVENTS__TERM_TYPE_STACKSIZE: 1129 case PARSE_EVENTS__TERM_TYPE_STACKSIZE:
1120 ADD_CONFIG_TERM(STACK_USER, stack_user, term->val.num); 1130 ADD_CONFIG_TERM(STACK_USER, stack_user, term->val.num);
1121 break; 1131 break;
@@ -1134,6 +1144,9 @@ do { \
1134 case PARSE_EVENTS__TERM_TYPE_NOOVERWRITE: 1144 case PARSE_EVENTS__TERM_TYPE_NOOVERWRITE:
1135 ADD_CONFIG_TERM(OVERWRITE, overwrite, term->val.num ? 0 : 1); 1145 ADD_CONFIG_TERM(OVERWRITE, overwrite, term->val.num ? 0 : 1);
1136 break; 1146 break;
1147 case PARSE_EVENTS__TERM_TYPE_DRV_CFG:
1148 ADD_CONFIG_TERM(DRV_CFG, drv_cfg, term->val.str);
1149 break;
1137 default: 1150 default:
1138 break; 1151 break;
1139 } 1152 }
@@ -1453,7 +1466,7 @@ comp_pmu(const void *p1, const void *p2)
1453 struct perf_pmu_event_symbol *pmu1 = (struct perf_pmu_event_symbol *) p1; 1466 struct perf_pmu_event_symbol *pmu1 = (struct perf_pmu_event_symbol *) p1;
1454 struct perf_pmu_event_symbol *pmu2 = (struct perf_pmu_event_symbol *) p2; 1467 struct perf_pmu_event_symbol *pmu2 = (struct perf_pmu_event_symbol *) p2;
1455 1468
1456 return strcmp(pmu1->symbol, pmu2->symbol); 1469 return strcasecmp(pmu1->symbol, pmu2->symbol);
1457} 1470}
1458 1471
1459static void perf_pmu__parse_cleanup(void) 1472static void perf_pmu__parse_cleanup(void)
@@ -1755,20 +1768,49 @@ foreach_evsel_in_last_glob(struct perf_evlist *evlist,
1755static int set_filter(struct perf_evsel *evsel, const void *arg) 1768static int set_filter(struct perf_evsel *evsel, const void *arg)
1756{ 1769{
1757 const char *str = arg; 1770 const char *str = arg;
1771 bool found = false;
1772 int nr_addr_filters = 0;
1773 struct perf_pmu *pmu = NULL;
1758 1774
1759 if (evsel == NULL || evsel->attr.type != PERF_TYPE_TRACEPOINT) { 1775 if (evsel == NULL)
1760 fprintf(stderr, 1776 goto err;
1761 "--filter option should follow a -e tracepoint option\n"); 1777
1762 return -1; 1778 if (evsel->attr.type == PERF_TYPE_TRACEPOINT) {
1779 if (perf_evsel__append_tp_filter(evsel, str) < 0) {
1780 fprintf(stderr,
1781 "not enough memory to hold filter string\n");
1782 return -1;
1783 }
1784
1785 return 0;
1763 } 1786 }
1764 1787
1765 if (perf_evsel__append_filter(evsel, "&&", str) < 0) { 1788 while ((pmu = perf_pmu__scan(pmu)) != NULL)
1789 if (pmu->type == evsel->attr.type) {
1790 found = true;
1791 break;
1792 }
1793
1794 if (found)
1795 perf_pmu__scan_file(pmu, "nr_addr_filters",
1796 "%d", &nr_addr_filters);
1797
1798 if (!nr_addr_filters)
1799 goto err;
1800
1801 if (perf_evsel__append_addr_filter(evsel, str) < 0) {
1766 fprintf(stderr, 1802 fprintf(stderr,
1767 "not enough memory to hold filter string\n"); 1803 "not enough memory to hold filter string\n");
1768 return -1; 1804 return -1;
1769 } 1805 }
1770 1806
1771 return 0; 1807 return 0;
1808
1809err:
1810 fprintf(stderr,
1811 "--filter option should follow a -e tracepoint or HW tracer option\n");
1812
1813 return -1;
1772} 1814}
1773 1815
1774int parse_filter(const struct option *opt, const char *str, 1816int parse_filter(const struct option *opt, const char *str,
@@ -1793,7 +1835,7 @@ static int add_exclude_perf_filter(struct perf_evsel *evsel,
1793 1835
1794 snprintf(new_filter, sizeof(new_filter), "common_pid != %d", getpid()); 1836 snprintf(new_filter, sizeof(new_filter), "common_pid != %d", getpid());
1795 1837
1796 if (perf_evsel__append_filter(evsel, "&&", new_filter) < 0) { 1838 if (perf_evsel__append_tp_filter(evsel, new_filter) < 0) {
1797 fprintf(stderr, 1839 fprintf(stderr,
1798 "not enough memory to hold filter string\n"); 1840 "not enough memory to hold filter string\n");
1799 return -1; 1841 return -1;
@@ -2229,7 +2271,8 @@ out_enomem:
2229/* 2271/*
2230 * Print the help text for the event symbols: 2272 * Print the help text for the event symbols:
2231 */ 2273 */
2232void print_events(const char *event_glob, bool name_only) 2274void print_events(const char *event_glob, bool name_only, bool quiet_flag,
2275 bool long_desc)
2233{ 2276{
2234 print_symbol_events(event_glob, PERF_TYPE_HARDWARE, 2277 print_symbol_events(event_glob, PERF_TYPE_HARDWARE,
2235 event_symbols_hw, PERF_COUNT_HW_MAX, name_only); 2278 event_symbols_hw, PERF_COUNT_HW_MAX, name_only);
@@ -2239,7 +2282,7 @@ void print_events(const char *event_glob, bool name_only)
2239 2282
2240 print_hwcache_events(event_glob, name_only); 2283 print_hwcache_events(event_glob, name_only);
2241 2284
2242 print_pmu_events(event_glob, name_only); 2285 print_pmu_events(event_glob, name_only, quiet_flag, long_desc);
2243 2286
2244 if (event_glob != NULL) 2287 if (event_glob != NULL)
2245 return; 2288 return;
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index d1edbf8cc66a..da246a3ddb69 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -71,6 +71,7 @@ enum {
71 PARSE_EVENTS__TERM_TYPE_MAX_STACK, 71 PARSE_EVENTS__TERM_TYPE_MAX_STACK,
72 PARSE_EVENTS__TERM_TYPE_NOOVERWRITE, 72 PARSE_EVENTS__TERM_TYPE_NOOVERWRITE,
73 PARSE_EVENTS__TERM_TYPE_OVERWRITE, 73 PARSE_EVENTS__TERM_TYPE_OVERWRITE,
74 PARSE_EVENTS__TERM_TYPE_DRV_CFG,
74 __PARSE_EVENTS__TERM_TYPE_NR, 75 __PARSE_EVENTS__TERM_TYPE_NR,
75}; 76};
76 77
@@ -171,7 +172,8 @@ void parse_events_update_lists(struct list_head *list_event,
171void parse_events_evlist_error(struct parse_events_evlist *data, 172void parse_events_evlist_error(struct parse_events_evlist *data,
172 int idx, const char *str); 173 int idx, const char *str);
173 174
174void print_events(const char *event_glob, bool name_only); 175void print_events(const char *event_glob, bool name_only, bool quiet,
176 bool long_desc);
175 177
176struct event_symbol { 178struct event_symbol {
177 const char *symbol; 179 const char *symbol;
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 7a2519435da0..660fca05bc93 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -53,6 +53,26 @@ static int str(yyscan_t scanner, int token)
53 return token; 53 return token;
54} 54}
55 55
56/*
57 * This function is called when the parser gets two kind of input:
58 *
59 * @cfg1 or @cfg2=config
60 *
61 * The leading '@' is stripped off before 'cfg1' and 'cfg2=config' are given to
62 * bison. In the latter case it is necessary to keep the string intact so that
63 * the PMU kernel driver can determine what configurable is associated to
64 * 'config'.
65 */
66static int drv_str(yyscan_t scanner, int token)
67{
68 YYSTYPE *yylval = parse_events_get_lval(scanner);
69 char *text = parse_events_get_text(scanner);
70
71 /* Strip off the '@' */
72 yylval->str = strdup(text + 1);
73 return token;
74}
75
56#define REWIND(__alloc) \ 76#define REWIND(__alloc) \
57do { \ 77do { \
58 YYSTYPE *__yylval = parse_events_get_lval(yyscanner); \ 78 YYSTYPE *__yylval = parse_events_get_lval(yyscanner); \
@@ -116,14 +136,15 @@ do { \
116group [^,{}/]*[{][^}]*[}][^,{}/]* 136group [^,{}/]*[{][^}]*[}][^,{}/]*
117event_pmu [^,{}/]+[/][^/]*[/][^,{}/]* 137event_pmu [^,{}/]+[/][^/]*[/][^,{}/]*
118event [^,{}/]+ 138event [^,{}/]+
119bpf_object .*\.(o|bpf) 139bpf_object [^,{}]+\.(o|bpf)
120bpf_source .*\.c 140bpf_source [^,{}]+\.c
121 141
122num_dec [0-9]+ 142num_dec [0-9]+
123num_hex 0x[a-fA-F0-9]+ 143num_hex 0x[a-fA-F0-9]+
124num_raw_hex [a-fA-F0-9]+ 144num_raw_hex [a-fA-F0-9]+
125name [a-zA-Z_*?][a-zA-Z0-9_*?.]* 145name [a-zA-Z_*?][a-zA-Z0-9_*?.]*
126name_minus [a-zA-Z_*?][a-zA-Z0-9\-_*?.:]* 146name_minus [a-zA-Z_*?][a-zA-Z0-9\-_*?.:]*
147drv_cfg_term [a-zA-Z0-9_\.]+(=[a-zA-Z0-9_*?\.:]+)?
127/* If you add a modifier you need to update check_modifier() */ 148/* If you add a modifier you need to update check_modifier() */
128modifier_event [ukhpPGHSDI]+ 149modifier_event [ukhpPGHSDI]+
129modifier_bp [rwx]{1,3} 150modifier_bp [rwx]{1,3}
@@ -209,6 +230,7 @@ no-overwrite { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NOOVERWRITE); }
209{name_minus} { return str(yyscanner, PE_NAME); } 230{name_minus} { return str(yyscanner, PE_NAME); }
210\[all\] { return PE_ARRAY_ALL; } 231\[all\] { return PE_ARRAY_ALL; }
211"[" { BEGIN(array); return '['; } 232"[" { BEGIN(array); return '['; }
233@{drv_cfg_term} { return drv_str(yyscanner, PE_DRV_CFG_TERM); }
212} 234}
213 235
214<mem>{ 236<mem>{
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 5be4a5f216d6..879115f93edc 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -49,6 +49,7 @@ static void inc_group_count(struct list_head *list,
49%token PE_ERROR 49%token PE_ERROR
50%token PE_PMU_EVENT_PRE PE_PMU_EVENT_SUF PE_KERNEL_PMU_EVENT 50%token PE_PMU_EVENT_PRE PE_PMU_EVENT_SUF PE_KERNEL_PMU_EVENT
51%token PE_ARRAY_ALL PE_ARRAY_RANGE 51%token PE_ARRAY_ALL PE_ARRAY_RANGE
52%token PE_DRV_CFG_TERM
52%type <num> PE_VALUE 53%type <num> PE_VALUE
53%type <num> PE_VALUE_SYM_HW 54%type <num> PE_VALUE_SYM_HW
54%type <num> PE_VALUE_SYM_SW 55%type <num> PE_VALUE_SYM_SW
@@ -63,6 +64,7 @@ static void inc_group_count(struct list_head *list,
63%type <str> PE_MODIFIER_BP 64%type <str> PE_MODIFIER_BP
64%type <str> PE_EVENT_NAME 65%type <str> PE_EVENT_NAME
65%type <str> PE_PMU_EVENT_PRE PE_PMU_EVENT_SUF PE_KERNEL_PMU_EVENT 66%type <str> PE_PMU_EVENT_PRE PE_PMU_EVENT_SUF PE_KERNEL_PMU_EVENT
67%type <str> PE_DRV_CFG_TERM
66%type <num> value_sym 68%type <num> value_sym
67%type <head> event_config 69%type <head> event_config
68%type <head> opt_event_config 70%type <head> opt_event_config
@@ -599,6 +601,15 @@ PE_NAME array '=' PE_VALUE
599 term->array = $2; 601 term->array = $2;
600 $$ = term; 602 $$ = term;
601} 603}
604|
605PE_DRV_CFG_TERM
606{
607 struct parse_events_term *term;
608
609 ABORT_ON(parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG,
610 $1, $1, &@1, NULL));
611 $$ = term;
612}
602 613
603array: 614array:
604'[' array_terms ']' 615'[' array_terms ']'
diff --git a/tools/perf/util/perf-hooks-list.h b/tools/perf/util/perf-hooks-list.h
new file mode 100644
index 000000000000..2867c07ee84e
--- /dev/null
+++ b/tools/perf/util/perf-hooks-list.h
@@ -0,0 +1,3 @@
1PERF_HOOK(record_start)
2PERF_HOOK(record_end)
3PERF_HOOK(test)
diff --git a/tools/perf/util/perf-hooks.c b/tools/perf/util/perf-hooks.c
new file mode 100644
index 000000000000..cb368306b12b
--- /dev/null
+++ b/tools/perf/util/perf-hooks.c
@@ -0,0 +1,88 @@
1/*
2 * perf_hooks.c
3 *
4 * Copyright (C) 2016 Wang Nan <wangnan0@huawei.com>
5 * Copyright (C) 2016 Huawei Inc.
6 */
7
8#include <errno.h>
9#include <stdlib.h>
10#include <setjmp.h>
11#include <linux/err.h>
12#include "util/util.h"
13#include "util/debug.h"
14#include "util/perf-hooks.h"
15
16static sigjmp_buf jmpbuf;
17static const struct perf_hook_desc *current_perf_hook;
18
19void perf_hooks__invoke(const struct perf_hook_desc *desc)
20{
21 if (!(desc && desc->p_hook_func && *desc->p_hook_func))
22 return;
23
24 if (sigsetjmp(jmpbuf, 1)) {
25 pr_warning("Fatal error (SEGFAULT) in perf hook '%s'\n",
26 desc->hook_name);
27 *(current_perf_hook->p_hook_func) = NULL;
28 } else {
29 current_perf_hook = desc;
30 (**desc->p_hook_func)(desc->hook_ctx);
31 }
32 current_perf_hook = NULL;
33}
34
35void perf_hooks__recover(void)
36{
37 if (current_perf_hook)
38 siglongjmp(jmpbuf, 1);
39}
40
41#define PERF_HOOK(name) \
42perf_hook_func_t __perf_hook_func_##name = NULL; \
43struct perf_hook_desc __perf_hook_desc_##name = \
44 {.hook_name = #name, \
45 .p_hook_func = &__perf_hook_func_##name, \
46 .hook_ctx = NULL};
47#include "perf-hooks-list.h"
48#undef PERF_HOOK
49
50#define PERF_HOOK(name) \
51 &__perf_hook_desc_##name,
52
53static struct perf_hook_desc *perf_hooks[] = {
54#include "perf-hooks-list.h"
55};
56#undef PERF_HOOK
57
58int perf_hooks__set_hook(const char *hook_name,
59 perf_hook_func_t hook_func,
60 void *hook_ctx)
61{
62 unsigned int i;
63
64 for (i = 0; i < ARRAY_SIZE(perf_hooks); i++) {
65 if (strcmp(hook_name, perf_hooks[i]->hook_name) != 0)
66 continue;
67
68 if (*(perf_hooks[i]->p_hook_func))
69 pr_warning("Overwrite existing hook: %s\n", hook_name);
70 *(perf_hooks[i]->p_hook_func) = hook_func;
71 perf_hooks[i]->hook_ctx = hook_ctx;
72 return 0;
73 }
74 return -ENOENT;
75}
76
77perf_hook_func_t perf_hooks__get_hook(const char *hook_name)
78{
79 unsigned int i;
80
81 for (i = 0; i < ARRAY_SIZE(perf_hooks); i++) {
82 if (strcmp(hook_name, perf_hooks[i]->hook_name) != 0)
83 continue;
84
85 return *(perf_hooks[i]->p_hook_func);
86 }
87 return ERR_PTR(-ENOENT);
88}
diff --git a/tools/perf/util/perf-hooks.h b/tools/perf/util/perf-hooks.h
new file mode 100644
index 000000000000..838d5797bc1e
--- /dev/null
+++ b/tools/perf/util/perf-hooks.h
@@ -0,0 +1,39 @@
1#ifndef PERF_UTIL_PERF_HOOKS_H
2#define PERF_UTIL_PERF_HOOKS_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8typedef void (*perf_hook_func_t)(void *ctx);
9struct perf_hook_desc {
10 const char * const hook_name;
11 perf_hook_func_t * const p_hook_func;
12 void *hook_ctx;
13};
14
15extern void perf_hooks__invoke(const struct perf_hook_desc *);
16extern void perf_hooks__recover(void);
17
18#define PERF_HOOK(name) \
19extern struct perf_hook_desc __perf_hook_desc_##name; \
20static inline void perf_hooks__invoke_##name(void) \
21{ \
22 perf_hooks__invoke(&__perf_hook_desc_##name); \
23}
24
25#include "perf-hooks-list.h"
26#undef PERF_HOOK
27
28extern int
29perf_hooks__set_hook(const char *hook_name,
30 perf_hook_func_t hook_func,
31 void *hook_ctx);
32
33extern perf_hook_func_t
34perf_hooks__get_hook(const char *hook_name);
35
36#ifdef __cplusplus
37}
38#endif
39#endif
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index ddb0261b2577..dc6ccaa4e927 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -12,6 +12,9 @@
12#include "pmu.h" 12#include "pmu.h"
13#include "parse-events.h" 13#include "parse-events.h"
14#include "cpumap.h" 14#include "cpumap.h"
15#include "header.h"
16#include "pmu-events/pmu-events.h"
17#include "cache.h"
15 18
16struct perf_pmu_format { 19struct perf_pmu_format {
17 char *name; 20 char *name;
@@ -220,7 +223,8 @@ static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias,
220} 223}
221 224
222static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name, 225static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
223 char *desc __maybe_unused, char *val) 226 char *desc, char *val, char *long_desc,
227 char *topic)
224{ 228{
225 struct perf_pmu_alias *alias; 229 struct perf_pmu_alias *alias;
226 int ret; 230 int ret;
@@ -253,6 +257,11 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
253 perf_pmu__parse_snapshot(alias, dir, name); 257 perf_pmu__parse_snapshot(alias, dir, name);
254 } 258 }
255 259
260 alias->desc = desc ? strdup(desc) : NULL;
261 alias->long_desc = long_desc ? strdup(long_desc) :
262 desc ? strdup(desc) : NULL;
263 alias->topic = topic ? strdup(topic) : NULL;
264
256 list_add_tail(&alias->list, list); 265 list_add_tail(&alias->list, list);
257 266
258 return 0; 267 return 0;
@@ -269,7 +278,7 @@ static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FI
269 278
270 buf[ret] = 0; 279 buf[ret] = 0;
271 280
272 return __perf_pmu__new_alias(list, dir, name, NULL, buf); 281 return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL);
273} 282}
274 283
275static inline bool pmu_alias_info_file(char *name) 284static inline bool pmu_alias_info_file(char *name)
@@ -445,14 +454,23 @@ static struct cpu_map *pmu_cpumask(const char *name)
445 FILE *file; 454 FILE *file;
446 struct cpu_map *cpus; 455 struct cpu_map *cpus;
447 const char *sysfs = sysfs__mountpoint(); 456 const char *sysfs = sysfs__mountpoint();
457 const char *templates[] = {
458 "%s/bus/event_source/devices/%s/cpumask",
459 "%s/bus/event_source/devices/%s/cpus",
460 NULL
461 };
462 const char **template;
448 463
449 if (!sysfs) 464 if (!sysfs)
450 return NULL; 465 return NULL;
451 466
452 snprintf(path, PATH_MAX, 467 for (template = templates; *template; template++) {
453 "%s/bus/event_source/devices/%s/cpumask", sysfs, name); 468 snprintf(path, PATH_MAX, *template, sysfs, name);
469 if (stat(path, &st) == 0)
470 break;
471 }
454 472
455 if (stat(path, &st) < 0) 473 if (!*template)
456 return NULL; 474 return NULL;
457 475
458 file = fopen(path, "r"); 476 file = fopen(path, "r");
@@ -464,6 +482,72 @@ static struct cpu_map *pmu_cpumask(const char *name)
464 return cpus; 482 return cpus;
465} 483}
466 484
485/*
486 * Return the CPU id as a raw string.
487 *
488 * Each architecture should provide a more precise id string that
489 * can be use to match the architecture's "mapfile".
490 */
491char * __weak get_cpuid_str(void)
492{
493 return NULL;
494}
495
496/*
497 * From the pmu_events_map, find the table of PMU events that corresponds
498 * to the current running CPU. Then, add all PMU events from that table
499 * as aliases.
500 */
501static void pmu_add_cpu_aliases(struct list_head *head)
502{
503 int i;
504 struct pmu_events_map *map;
505 struct pmu_event *pe;
506 char *cpuid;
507 static bool printed;
508
509 cpuid = getenv("PERF_CPUID");
510 if (cpuid)
511 cpuid = strdup(cpuid);
512 if (!cpuid)
513 cpuid = get_cpuid_str();
514 if (!cpuid)
515 return;
516
517 if (!printed) {
518 pr_debug("Using CPUID %s\n", cpuid);
519 printed = true;
520 }
521
522 i = 0;
523 while (1) {
524 map = &pmu_events_map[i++];
525 if (!map->table)
526 goto out;
527
528 if (!strcmp(map->cpuid, cpuid))
529 break;
530 }
531
532 /*
533 * Found a matching PMU events table. Create aliases
534 */
535 i = 0;
536 while (1) {
537 pe = &map->table[i++];
538 if (!pe->name)
539 break;
540
541 /* need type casts to override 'const' */
542 __perf_pmu__new_alias(head, NULL, (char *)pe->name,
543 (char *)pe->desc, (char *)pe->event,
544 (char *)pe->long_desc, (char *)pe->topic);
545 }
546
547out:
548 free(cpuid);
549}
550
467struct perf_event_attr * __weak 551struct perf_event_attr * __weak
468perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) 552perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused)
469{ 553{
@@ -488,6 +572,9 @@ static struct perf_pmu *pmu_lookup(const char *name)
488 if (pmu_aliases(name, &aliases)) 572 if (pmu_aliases(name, &aliases))
489 return NULL; 573 return NULL;
490 574
575 if (!strcmp(name, "cpu"))
576 pmu_add_cpu_aliases(&aliases);
577
491 if (pmu_type(name, &type)) 578 if (pmu_type(name, &type))
492 return NULL; 579 return NULL;
493 580
@@ -974,21 +1061,63 @@ static char *format_alias_or(char *buf, int len, struct perf_pmu *pmu,
974 return buf; 1061 return buf;
975} 1062}
976 1063
977static int cmp_string(const void *a, const void *b) 1064struct sevent {
1065 char *name;
1066 char *desc;
1067 char *topic;
1068};
1069
1070static int cmp_sevent(const void *a, const void *b)
978{ 1071{
979 const char * const *as = a; 1072 const struct sevent *as = a;
980 const char * const *bs = b; 1073 const struct sevent *bs = b;
981 return strcmp(*as, *bs); 1074
1075 /* Put extra events last */
1076 if (!!as->desc != !!bs->desc)
1077 return !!as->desc - !!bs->desc;
1078 if (as->topic && bs->topic) {
1079 int n = strcmp(as->topic, bs->topic);
1080
1081 if (n)
1082 return n;
1083 }
1084 return strcmp(as->name, bs->name);
982} 1085}
983 1086
984void print_pmu_events(const char *event_glob, bool name_only) 1087static void wordwrap(char *s, int start, int max, int corr)
1088{
1089 int column = start;
1090 int n;
1091
1092 while (*s) {
1093 int wlen = strcspn(s, " \t");
1094
1095 if (column + wlen >= max && column > start) {
1096 printf("\n%*s", start, "");
1097 column = start + corr;
1098 }
1099 n = printf("%s%.*s", column > start ? " " : "", wlen, s);
1100 if (n <= 0)
1101 break;
1102 s += wlen;
1103 column += n;
1104 while (isspace(*s))
1105 s++;
1106 }
1107}
1108
1109void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
1110 bool long_desc)
985{ 1111{
986 struct perf_pmu *pmu; 1112 struct perf_pmu *pmu;
987 struct perf_pmu_alias *alias; 1113 struct perf_pmu_alias *alias;
988 char buf[1024]; 1114 char buf[1024];
989 int printed = 0; 1115 int printed = 0;
990 int len, j; 1116 int len, j;
991 char **aliases; 1117 struct sevent *aliases;
1118 int numdesc = 0;
1119 int columns = pager_get_columns();
1120 char *topic = NULL;
992 1121
993 pmu = NULL; 1122 pmu = NULL;
994 len = 0; 1123 len = 0;
@@ -998,28 +1127,40 @@ void print_pmu_events(const char *event_glob, bool name_only)
998 if (pmu->selectable) 1127 if (pmu->selectable)
999 len++; 1128 len++;
1000 } 1129 }
1001 aliases = zalloc(sizeof(char *) * len); 1130 aliases = zalloc(sizeof(struct sevent) * len);
1002 if (!aliases) 1131 if (!aliases)
1003 goto out_enomem; 1132 goto out_enomem;
1004 pmu = NULL; 1133 pmu = NULL;
1005 j = 0; 1134 j = 0;
1006 while ((pmu = perf_pmu__scan(pmu)) != NULL) { 1135 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
1007 list_for_each_entry(alias, &pmu->aliases, list) { 1136 list_for_each_entry(alias, &pmu->aliases, list) {
1008 char *name = format_alias(buf, sizeof(buf), pmu, alias); 1137 char *name = alias->desc ? alias->name :
1138 format_alias(buf, sizeof(buf), pmu, alias);
1009 bool is_cpu = !strcmp(pmu->name, "cpu"); 1139 bool is_cpu = !strcmp(pmu->name, "cpu");
1010 1140
1011 if (event_glob != NULL && 1141 if (event_glob != NULL &&
1012 !(strglobmatch(name, event_glob) || 1142 !(strglobmatch_nocase(name, event_glob) ||
1013 (!is_cpu && strglobmatch(alias->name, 1143 (!is_cpu && strglobmatch_nocase(alias->name,
1014 event_glob)))) 1144 event_glob)) ||
1145 (alias->topic &&
1146 strglobmatch_nocase(alias->topic, event_glob))))
1015 continue; 1147 continue;
1016 1148
1017 if (is_cpu && !name_only) 1149 if (is_cpu && !name_only && !alias->desc)
1018 name = format_alias_or(buf, sizeof(buf), pmu, alias); 1150 name = format_alias_or(buf, sizeof(buf), pmu, alias);
1019 1151
1020 aliases[j] = strdup(name); 1152 aliases[j].name = name;
1021 if (aliases[j] == NULL) 1153 if (is_cpu && !name_only && !alias->desc)
1154 aliases[j].name = format_alias_or(buf,
1155 sizeof(buf),
1156 pmu, alias);
1157 aliases[j].name = strdup(aliases[j].name);
1158 if (!aliases[j].name)
1022 goto out_enomem; 1159 goto out_enomem;
1160
1161 aliases[j].desc = long_desc ? alias->long_desc :
1162 alias->desc;
1163 aliases[j].topic = alias->topic;
1023 j++; 1164 j++;
1024 } 1165 }
1025 if (pmu->selectable && 1166 if (pmu->selectable &&
@@ -1027,25 +1168,39 @@ void print_pmu_events(const char *event_glob, bool name_only)
1027 char *s; 1168 char *s;
1028 if (asprintf(&s, "%s//", pmu->name) < 0) 1169 if (asprintf(&s, "%s//", pmu->name) < 0)
1029 goto out_enomem; 1170 goto out_enomem;
1030 aliases[j] = s; 1171 aliases[j].name = s;
1031 j++; 1172 j++;
1032 } 1173 }
1033 } 1174 }
1034 len = j; 1175 len = j;
1035 qsort(aliases, len, sizeof(char *), cmp_string); 1176 qsort(aliases, len, sizeof(struct sevent), cmp_sevent);
1036 for (j = 0; j < len; j++) { 1177 for (j = 0; j < len; j++) {
1037 if (name_only) { 1178 if (name_only) {
1038 printf("%s ", aliases[j]); 1179 printf("%s ", aliases[j].name);
1039 continue; 1180 continue;
1040 } 1181 }
1041 printf(" %-50s [Kernel PMU event]\n", aliases[j]); 1182 if (aliases[j].desc && !quiet_flag) {
1183 if (numdesc++ == 0)
1184 printf("\n");
1185 if (aliases[j].topic && (!topic ||
1186 strcmp(topic, aliases[j].topic))) {
1187 printf("%s%s:\n", topic ? "\n" : "",
1188 aliases[j].topic);
1189 topic = aliases[j].topic;
1190 }
1191 printf(" %-50s\n", aliases[j].name);
1192 printf("%*s", 8, "[");
1193 wordwrap(aliases[j].desc, 8, columns, 0);
1194 printf("]\n");
1195 } else
1196 printf(" %-50s [Kernel PMU event]\n", aliases[j].name);
1042 printed++; 1197 printed++;
1043 } 1198 }
1044 if (printed && pager_in_use()) 1199 if (printed && pager_in_use())
1045 printf("\n"); 1200 printf("\n");
1046out_free: 1201out_free:
1047 for (j = 0; j < len; j++) 1202 for (j = 0; j < len; j++)
1048 zfree(&aliases[j]); 1203 zfree(&aliases[j].name);
1049 zfree(&aliases); 1204 zfree(&aliases);
1050 return; 1205 return;
1051 1206
diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
index 5d7e84466bee..25712034c815 100644
--- a/tools/perf/util/pmu.h
+++ b/tools/perf/util/pmu.h
@@ -4,6 +4,7 @@
4#include <linux/bitmap.h> 4#include <linux/bitmap.h>
5#include <linux/perf_event.h> 5#include <linux/perf_event.h>
6#include <stdbool.h> 6#include <stdbool.h>
7#include "evsel.h"
7#include "parse-events.h" 8#include "parse-events.h"
8 9
9enum { 10enum {
@@ -25,6 +26,7 @@ struct perf_pmu {
25 struct list_head format; /* HEAD struct perf_pmu_format -> list */ 26 struct list_head format; /* HEAD struct perf_pmu_format -> list */
26 struct list_head aliases; /* HEAD struct perf_pmu_alias -> list */ 27 struct list_head aliases; /* HEAD struct perf_pmu_alias -> list */
27 struct list_head list; /* ELEM */ 28 struct list_head list; /* ELEM */
29 int (*set_drv_config) (struct perf_evsel_config_term *term);
28}; 30};
29 31
30struct perf_pmu_info { 32struct perf_pmu_info {
@@ -38,6 +40,9 @@ struct perf_pmu_info {
38 40
39struct perf_pmu_alias { 41struct perf_pmu_alias {
40 char *name; 42 char *name;
43 char *desc;
44 char *long_desc;
45 char *topic;
41 struct list_head terms; /* HEAD struct parse_events_term -> list */ 46 struct list_head terms; /* HEAD struct parse_events_term -> list */
42 struct list_head list; /* ELEM */ 47 struct list_head list; /* ELEM */
43 char unit[UNIT_MAX_LEN+1]; 48 char unit[UNIT_MAX_LEN+1];
@@ -69,7 +74,8 @@ int perf_pmu__format_parse(char *dir, struct list_head *head);
69 74
70struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu); 75struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu);
71 76
72void print_pmu_events(const char *event_glob, bool name_only); 77void print_pmu_events(const char *event_glob, bool name_only, bool quiet,
78 bool long_desc);
73bool pmu_have_event(const char *pname, const char *name); 79bool pmu_have_event(const char *pname, const char *name);
74 80
75int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char *fmt, 81int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char *fmt,
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 28733962cd80..6a6f44dd594b 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -110,13 +110,12 @@ void exit_probe_symbol_maps(void)
110static struct symbol *__find_kernel_function_by_name(const char *name, 110static struct symbol *__find_kernel_function_by_name(const char *name,
111 struct map **mapp) 111 struct map **mapp)
112{ 112{
113 return machine__find_kernel_function_by_name(host_machine, name, mapp, 113 return machine__find_kernel_function_by_name(host_machine, name, mapp);
114 NULL);
115} 114}
116 115
117static struct symbol *__find_kernel_function(u64 addr, struct map **mapp) 116static struct symbol *__find_kernel_function(u64 addr, struct map **mapp)
118{ 117{
119 return machine__find_kernel_function(host_machine, addr, mapp, NULL); 118 return machine__find_kernel_function(host_machine, addr, mapp);
120} 119}
121 120
122static struct ref_reloc_sym *kernel_get_ref_reloc_sym(void) 121static struct ref_reloc_sym *kernel_get_ref_reloc_sym(void)
@@ -125,7 +124,7 @@ static struct ref_reloc_sym *kernel_get_ref_reloc_sym(void)
125 struct kmap *kmap; 124 struct kmap *kmap;
126 struct map *map = machine__kernel_map(host_machine); 125 struct map *map = machine__kernel_map(host_machine);
127 126
128 if (map__load(map, NULL) < 0) 127 if (map__load(map) < 0)
129 return NULL; 128 return NULL;
130 129
131 kmap = map__kmap(map); 130 kmap = map__kmap(map);
@@ -164,7 +163,7 @@ static struct map *kernel_get_module_map(const char *module)
164 163
165 /* A file path -- this is an offline module */ 164 /* A file path -- this is an offline module */
166 if (module && strchr(module, '/')) 165 if (module && strchr(module, '/'))
167 return machine__findnew_module_map(host_machine, 0, module); 166 return dso__new_map(module);
168 167
169 if (!module) 168 if (!module)
170 module = "kernel"; 169 module = "kernel";
@@ -174,6 +173,7 @@ static struct map *kernel_get_module_map(const char *module)
174 if (strncmp(pos->dso->short_name + 1, module, 173 if (strncmp(pos->dso->short_name + 1, module,
175 pos->dso->short_name_len - 2) == 0 && 174 pos->dso->short_name_len - 2) == 0 &&
176 module[pos->dso->short_name_len - 2] == '\0') { 175 module[pos->dso->short_name_len - 2] == '\0') {
176 map__get(pos);
177 return pos; 177 return pos;
178 } 178 }
179 } 179 }
@@ -189,15 +189,6 @@ struct map *get_target_map(const char *target, bool user)
189 return kernel_get_module_map(target); 189 return kernel_get_module_map(target);
190} 190}
191 191
192static void put_target_map(struct map *map, bool user)
193{
194 if (map && user) {
195 /* Only the user map needs to be released */
196 map__put(map);
197 }
198}
199
200
201static int convert_exec_to_group(const char *exec, char **result) 192static int convert_exec_to_group(const char *exec, char **result)
202{ 193{
203 char *ptr1, *ptr2, *exec_copy; 194 char *ptr1, *ptr2, *exec_copy;
@@ -214,9 +205,13 @@ static int convert_exec_to_group(const char *exec, char **result)
214 goto out; 205 goto out;
215 } 206 }
216 207
217 ptr2 = strpbrk(ptr1, "-._"); 208 for (ptr2 = ptr1; *ptr2 != '\0'; ptr2++) {
218 if (ptr2) 209 if (!isalnum(*ptr2) && *ptr2 != '_') {
219 *ptr2 = '\0'; 210 *ptr2 = '\0';
211 break;
212 }
213 }
214
220 ret = e_snprintf(buf, 64, "%s_%s", PERFPROBE_GROUP, ptr1); 215 ret = e_snprintf(buf, 64, "%s_%s", PERFPROBE_GROUP, ptr1);
221 if (ret < 0) 216 if (ret < 0)
222 goto out; 217 goto out;
@@ -265,21 +260,6 @@ static bool kprobe_warn_out_range(const char *symbol, unsigned long address)
265} 260}
266 261
267/* 262/*
268 * NOTE:
269 * '.gnu.linkonce.this_module' section of kernel module elf directly
270 * maps to 'struct module' from linux/module.h. This section contains
271 * actual module name which will be used by kernel after loading it.
272 * But, we cannot use 'struct module' here since linux/module.h is not
273 * exposed to user-space. Offset of 'name' has remained same from long
274 * time, so hardcoding it here.
275 */
276#ifdef __LP64__
277#define MOD_NAME_OFFSET 24
278#else
279#define MOD_NAME_OFFSET 12
280#endif
281
282/*
283 * @module can be module name of module file path. In case of path, 263 * @module can be module name of module file path. In case of path,
284 * inspect elf and find out what is actual module name. 264 * inspect elf and find out what is actual module name.
285 * Caller has to free mod_name after using it. 265 * Caller has to free mod_name after using it.
@@ -293,6 +273,7 @@ static char *find_module_name(const char *module)
293 Elf_Data *data; 273 Elf_Data *data;
294 Elf_Scn *sec; 274 Elf_Scn *sec;
295 char *mod_name = NULL; 275 char *mod_name = NULL;
276 int name_offset;
296 277
297 fd = open(module, O_RDONLY); 278 fd = open(module, O_RDONLY);
298 if (fd < 0) 279 if (fd < 0)
@@ -314,7 +295,21 @@ static char *find_module_name(const char *module)
314 if (!data || !data->d_buf) 295 if (!data || !data->d_buf)
315 goto ret_err; 296 goto ret_err;
316 297
317 mod_name = strdup((char *)data->d_buf + MOD_NAME_OFFSET); 298 /*
299 * NOTE:
300 * '.gnu.linkonce.this_module' section of kernel module elf directly
301 * maps to 'struct module' from linux/module.h. This section contains
302 * actual module name which will be used by kernel after loading it.
303 * But, we cannot use 'struct module' here since linux/module.h is not
304 * exposed to user-space. Offset of 'name' has remained same from long
305 * time, so hardcoding it here.
306 */
307 if (ehdr.e_ident[EI_CLASS] == ELFCLASS32)
308 name_offset = 12;
309 else /* expect ELFCLASS64 by default */
310 name_offset = 24;
311
312 mod_name = strdup((char *)data->d_buf + name_offset);
318 313
319ret_err: 314ret_err:
320 elf_end(elf); 315 elf_end(elf);
@@ -351,9 +346,9 @@ static int kernel_get_module_dso(const char *module, struct dso **pdso)
351 vmlinux_name = symbol_conf.vmlinux_name; 346 vmlinux_name = symbol_conf.vmlinux_name;
352 dso->load_errno = 0; 347 dso->load_errno = 0;
353 if (vmlinux_name) 348 if (vmlinux_name)
354 ret = dso__load_vmlinux(dso, map, vmlinux_name, false, NULL); 349 ret = dso__load_vmlinux(dso, map, vmlinux_name, false);
355 else 350 else
356 ret = dso__load_vmlinux_path(dso, map, NULL); 351 ret = dso__load_vmlinux_path(dso, map);
357found: 352found:
358 *pdso = dso; 353 *pdso = dso;
359 return ret; 354 return ret;
@@ -409,7 +404,7 @@ static int find_alternative_probe_point(struct debuginfo *dinfo,
409 } 404 }
410 405
411out: 406out:
412 put_target_map(map, uprobes); 407 map__put(map);
413 return ret; 408 return ret;
414 409
415} 410}
@@ -615,6 +610,67 @@ error:
615 return ret ? : -ENOENT; 610 return ret ? : -ENOENT;
616} 611}
617 612
613/* Adjust symbol name and address */
614static int post_process_probe_trace_point(struct probe_trace_point *tp,
615 struct map *map, unsigned long offs)
616{
617 struct symbol *sym;
618 u64 addr = tp->address + tp->offset - offs;
619
620 sym = map__find_symbol(map, addr);
621 if (!sym)
622 return -ENOENT;
623
624 if (strcmp(sym->name, tp->symbol)) {
625 /* If we have no realname, use symbol for it */
626 if (!tp->realname)
627 tp->realname = tp->symbol;
628 else
629 free(tp->symbol);
630 tp->symbol = strdup(sym->name);
631 if (!tp->symbol)
632 return -ENOMEM;
633 }
634 tp->offset = addr - sym->start;
635 tp->address -= offs;
636
637 return 0;
638}
639
640/*
641 * Rename DWARF symbols to ELF symbols -- gcc sometimes optimizes functions
642 * and generate new symbols with suffixes such as .constprop.N or .isra.N
643 * etc. Since those symbols are not recorded in DWARF, we have to find
644 * correct generated symbols from offline ELF binary.
645 * For online kernel or uprobes we don't need this because those are
646 * rebased on _text, or already a section relative address.
647 */
648static int
649post_process_offline_probe_trace_events(struct probe_trace_event *tevs,
650 int ntevs, const char *pathname)
651{
652 struct map *map;
653 unsigned long stext = 0;
654 int i, ret = 0;
655
656 /* Prepare a map for offline binary */
657 map = dso__new_map(pathname);
658 if (!map || get_text_start_address(pathname, &stext) < 0) {
659 pr_warning("Failed to get ELF symbols for %s\n", pathname);
660 return -EINVAL;
661 }
662
663 for (i = 0; i < ntevs; i++) {
664 ret = post_process_probe_trace_point(&tevs[i].point,
665 map, stext);
666 if (ret < 0)
667 break;
668 }
669 map__put(map);
670
671 return ret;
672}
673
618static int add_exec_to_probe_trace_events(struct probe_trace_event *tevs, 674static int add_exec_to_probe_trace_events(struct probe_trace_event *tevs,
619 int ntevs, const char *exec) 675 int ntevs, const char *exec)
620{ 676{
@@ -642,18 +698,31 @@ static int add_exec_to_probe_trace_events(struct probe_trace_event *tevs,
642 return ret; 698 return ret;
643} 699}
644 700
645static int add_module_to_probe_trace_events(struct probe_trace_event *tevs, 701static int
646 int ntevs, const char *module) 702post_process_module_probe_trace_events(struct probe_trace_event *tevs,
703 int ntevs, const char *module,
704 struct debuginfo *dinfo)
647{ 705{
706 Dwarf_Addr text_offs = 0;
648 int i, ret = 0; 707 int i, ret = 0;
649 char *mod_name = NULL; 708 char *mod_name = NULL;
709 struct map *map;
650 710
651 if (!module) 711 if (!module)
652 return 0; 712 return 0;
653 713
654 mod_name = find_module_name(module); 714 map = get_target_map(module, false);
715 if (!map || debuginfo__get_text_offset(dinfo, &text_offs, true) < 0) {
716 pr_warning("Failed to get ELF symbols for %s\n", module);
717 return -EINVAL;
718 }
655 719
720 mod_name = find_module_name(module);
656 for (i = 0; i < ntevs; i++) { 721 for (i = 0; i < ntevs; i++) {
722 ret = post_process_probe_trace_point(&tevs[i].point,
723 map, (unsigned long)text_offs);
724 if (ret < 0)
725 break;
657 tevs[i].point.module = 726 tevs[i].point.module =
658 strdup(mod_name ? mod_name : module); 727 strdup(mod_name ? mod_name : module);
659 if (!tevs[i].point.module) { 728 if (!tevs[i].point.module) {
@@ -663,6 +732,8 @@ static int add_module_to_probe_trace_events(struct probe_trace_event *tevs,
663 } 732 }
664 733
665 free(mod_name); 734 free(mod_name);
735 map__put(map);
736
666 return ret; 737 return ret;
667} 738}
668 739
@@ -674,6 +745,11 @@ post_process_kernel_probe_trace_events(struct probe_trace_event *tevs,
674 char *tmp; 745 char *tmp;
675 int i, skipped = 0; 746 int i, skipped = 0;
676 747
748 /* Skip post process if the target is an offline kernel */
749 if (symbol_conf.ignore_vmlinux_buildid)
750 return post_process_offline_probe_trace_events(tevs, ntevs,
751 symbol_conf.vmlinux_name);
752
677 reloc_sym = kernel_get_ref_reloc_sym(); 753 reloc_sym = kernel_get_ref_reloc_sym();
678 if (!reloc_sym) { 754 if (!reloc_sym) {
679 pr_warning("Relocated base symbol is not found!\n"); 755 pr_warning("Relocated base symbol is not found!\n");
@@ -715,7 +791,7 @@ arch__post_process_probe_trace_events(struct perf_probe_event *pev __maybe_unuse
715static int post_process_probe_trace_events(struct perf_probe_event *pev, 791static int post_process_probe_trace_events(struct perf_probe_event *pev,
716 struct probe_trace_event *tevs, 792 struct probe_trace_event *tevs,
717 int ntevs, const char *module, 793 int ntevs, const char *module,
718 bool uprobe) 794 bool uprobe, struct debuginfo *dinfo)
719{ 795{
720 int ret; 796 int ret;
721 797
@@ -723,7 +799,8 @@ static int post_process_probe_trace_events(struct perf_probe_event *pev,
723 ret = add_exec_to_probe_trace_events(tevs, ntevs, module); 799 ret = add_exec_to_probe_trace_events(tevs, ntevs, module);
724 else if (module) 800 else if (module)
725 /* Currently ref_reloc_sym based probe is not for drivers */ 801 /* Currently ref_reloc_sym based probe is not for drivers */
726 ret = add_module_to_probe_trace_events(tevs, ntevs, module); 802 ret = post_process_module_probe_trace_events(tevs, ntevs,
803 module, dinfo);
727 else 804 else
728 ret = post_process_kernel_probe_trace_events(tevs, ntevs); 805 ret = post_process_kernel_probe_trace_events(tevs, ntevs);
729 806
@@ -767,30 +844,27 @@ static int try_to_find_probe_trace_events(struct perf_probe_event *pev,
767 } 844 }
768 } 845 }
769 846
770 debuginfo__delete(dinfo);
771
772 if (ntevs > 0) { /* Succeeded to find trace events */ 847 if (ntevs > 0) { /* Succeeded to find trace events */
773 pr_debug("Found %d probe_trace_events.\n", ntevs); 848 pr_debug("Found %d probe_trace_events.\n", ntevs);
774 ret = post_process_probe_trace_events(pev, *tevs, ntevs, 849 ret = post_process_probe_trace_events(pev, *tevs, ntevs,
775 pev->target, pev->uprobes); 850 pev->target, pev->uprobes, dinfo);
776 if (ret < 0 || ret == ntevs) { 851 if (ret < 0 || ret == ntevs) {
852 pr_debug("Post processing failed or all events are skipped. (%d)\n", ret);
777 clear_probe_trace_events(*tevs, ntevs); 853 clear_probe_trace_events(*tevs, ntevs);
778 zfree(tevs); 854 zfree(tevs);
855 ntevs = 0;
779 } 856 }
780 if (ret != ntevs)
781 return ret < 0 ? ret : ntevs;
782 ntevs = 0;
783 /* Fall through */
784 } 857 }
785 858
859 debuginfo__delete(dinfo);
860
786 if (ntevs == 0) { /* No error but failed to find probe point. */ 861 if (ntevs == 0) { /* No error but failed to find probe point. */
787 pr_warning("Probe point '%s' not found.\n", 862 pr_warning("Probe point '%s' not found.\n",
788 synthesize_perf_probe_point(&pev->point)); 863 synthesize_perf_probe_point(&pev->point));
789 return -ENOENT; 864 return -ENOENT;
790 } 865 } else if (ntevs < 0) {
791 /* Error path : ntevs < 0 */ 866 /* Error path : ntevs < 0 */
792 pr_debug("An error occurred in debuginfo analysis (%d).\n", ntevs); 867 pr_debug("An error occurred in debuginfo analysis (%d).\n", ntevs);
793 if (ntevs < 0) {
794 if (ntevs == -EBADF) 868 if (ntevs == -EBADF)
795 pr_warning("Warning: No dwarf info found in the vmlinux - " 869 pr_warning("Warning: No dwarf info found in the vmlinux - "
796 "please rebuild kernel with CONFIG_DEBUG_INFO=y.\n"); 870 "please rebuild kernel with CONFIG_DEBUG_INFO=y.\n");
@@ -1614,19 +1688,27 @@ out:
1614 return ret; 1688 return ret;
1615} 1689}
1616 1690
1691/* Returns true if *any* ARG is either C variable, $params or $vars. */
1692bool perf_probe_with_var(struct perf_probe_event *pev)
1693{
1694 int i = 0;
1695
1696 for (i = 0; i < pev->nargs; i++)
1697 if (is_c_varname(pev->args[i].var) ||
1698 !strcmp(pev->args[i].var, PROBE_ARG_PARAMS) ||
1699 !strcmp(pev->args[i].var, PROBE_ARG_VARS))
1700 return true;
1701 return false;
1702}
1703
1617/* Return true if this perf_probe_event requires debuginfo */ 1704/* Return true if this perf_probe_event requires debuginfo */
1618bool perf_probe_event_need_dwarf(struct perf_probe_event *pev) 1705bool perf_probe_event_need_dwarf(struct perf_probe_event *pev)
1619{ 1706{
1620 int i;
1621
1622 if (pev->point.file || pev->point.line || pev->point.lazy_line) 1707 if (pev->point.file || pev->point.line || pev->point.lazy_line)
1623 return true; 1708 return true;
1624 1709
1625 for (i = 0; i < pev->nargs; i++) 1710 if (perf_probe_with_var(pev))
1626 if (is_c_varname(pev->args[i].var) || 1711 return true;
1627 !strcmp(pev->args[i].var, "$params") ||
1628 !strcmp(pev->args[i].var, "$vars"))
1629 return true;
1630 1712
1631 return false; 1713 return false;
1632} 1714}
@@ -1987,7 +2069,7 @@ static int find_perf_probe_point_from_map(struct probe_trace_point *tp,
1987 map = dso__new_map(tp->module); 2069 map = dso__new_map(tp->module);
1988 if (!map) 2070 if (!map)
1989 goto out; 2071 goto out;
1990 sym = map__find_symbol(map, addr, NULL); 2072 sym = map__find_symbol(map, addr);
1991 } else { 2073 } else {
1992 if (tp->symbol && !addr) { 2074 if (tp->symbol && !addr) {
1993 if (kernel_get_symbol_address_by_name(tp->symbol, 2075 if (kernel_get_symbol_address_by_name(tp->symbol,
@@ -2692,7 +2774,7 @@ static int find_probe_functions(struct map *map, char *name,
2692 struct symbol *sym; 2774 struct symbol *sym;
2693 struct rb_node *tmp; 2775 struct rb_node *tmp;
2694 2776
2695 if (map__load(map, NULL) < 0) 2777 if (map__load(map) < 0)
2696 return 0; 2778 return 0;
2697 2779
2698 map__for_each_symbol(map, sym, tmp) { 2780 map__for_each_symbol(map, sym, tmp) {
@@ -2854,7 +2936,7 @@ static int find_probe_trace_events_from_map(struct perf_probe_event *pev,
2854 } 2936 }
2855 2937
2856out: 2938out:
2857 put_target_map(map, pev->uprobes); 2939 map__put(map);
2858 free(syms); 2940 free(syms);
2859 return ret; 2941 return ret;
2860 2942
@@ -3207,6 +3289,52 @@ int convert_perf_probe_events(struct perf_probe_event *pevs, int npevs)
3207 return 0; 3289 return 0;
3208} 3290}
3209 3291
3292static int show_probe_trace_event(struct probe_trace_event *tev)
3293{
3294 char *buf = synthesize_probe_trace_command(tev);
3295
3296 if (!buf) {
3297 pr_debug("Failed to synthesize probe trace event.\n");
3298 return -EINVAL;
3299 }
3300
3301 /* Showing definition always go stdout */
3302 printf("%s\n", buf);
3303 free(buf);
3304
3305 return 0;
3306}
3307
3308int show_probe_trace_events(struct perf_probe_event *pevs, int npevs)
3309{
3310 struct strlist *namelist = strlist__new(NULL, NULL);
3311 struct probe_trace_event *tev;
3312 struct perf_probe_event *pev;
3313 int i, j, ret = 0;
3314
3315 if (!namelist)
3316 return -ENOMEM;
3317
3318 for (j = 0; j < npevs && !ret; j++) {
3319 pev = &pevs[j];
3320 for (i = 0; i < pev->ntevs && !ret; i++) {
3321 tev = &pev->tevs[i];
3322 /* Skip if the symbol is out of .text or blacklisted */
3323 if (!tev->point.symbol && !pev->uprobes)
3324 continue;
3325
3326 /* Set new name for tev (and update namelist) */
3327 ret = probe_trace_event__set_name(tev, pev,
3328 namelist, true);
3329 if (!ret)
3330 ret = show_probe_trace_event(tev);
3331 }
3332 }
3333 strlist__delete(namelist);
3334
3335 return ret;
3336}
3337
3210int apply_perf_probe_events(struct perf_probe_event *pevs, int npevs) 3338int apply_perf_probe_events(struct perf_probe_event *pevs, int npevs)
3211{ 3339{
3212 int i, ret = 0; 3340 int i, ret = 0;
@@ -3289,24 +3417,10 @@ out:
3289 return ret; 3417 return ret;
3290} 3418}
3291 3419
3292/* TODO: don't use a global variable for filter ... */
3293static struct strfilter *available_func_filter;
3294
3295/*
3296 * If a symbol corresponds to a function with global binding and
3297 * matches filter return 0. For all others return 1.
3298 */
3299static int filter_available_functions(struct map *map __maybe_unused,
3300 struct symbol *sym)
3301{
3302 if (strfilter__compare(available_func_filter, sym->name))
3303 return 0;
3304 return 1;
3305}
3306
3307int show_available_funcs(const char *target, struct strfilter *_filter, 3420int show_available_funcs(const char *target, struct strfilter *_filter,
3308 bool user) 3421 bool user)
3309{ 3422{
3423 struct rb_node *nd;
3310 struct map *map; 3424 struct map *map;
3311 int ret; 3425 int ret;
3312 3426
@@ -3315,18 +3429,13 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
3315 return ret; 3429 return ret;
3316 3430
3317 /* Get a symbol map */ 3431 /* Get a symbol map */
3318 if (user) 3432 map = get_target_map(target, user);
3319 map = dso__new_map(target);
3320 else
3321 map = kernel_get_module_map(target);
3322 if (!map) { 3433 if (!map) {
3323 pr_err("Failed to get a map for %s\n", (target) ? : "kernel"); 3434 pr_err("Failed to get a map for %s\n", (target) ? : "kernel");
3324 return -EINVAL; 3435 return -EINVAL;
3325 } 3436 }
3326 3437
3327 /* Load symbols with given filter */ 3438 ret = map__load(map);
3328 available_func_filter = _filter;
3329 ret = map__load(map, filter_available_functions);
3330 if (ret) { 3439 if (ret) {
3331 if (ret == -2) { 3440 if (ret == -2) {
3332 char *str = strfilter__string(_filter); 3441 char *str = strfilter__string(_filter);
@@ -3343,11 +3452,16 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
3343 3452
3344 /* Show all (filtered) symbols */ 3453 /* Show all (filtered) symbols */
3345 setup_pager(); 3454 setup_pager();
3346 dso__fprintf_symbols_by_name(map->dso, map->type, stdout); 3455
3456 for (nd = rb_first(&map->dso->symbol_names[map->type]); nd; nd = rb_next(nd)) {
3457 struct symbol_name_rb_node *pos = rb_entry(nd, struct symbol_name_rb_node, rb_node);
3458
3459 if (strfilter__compare(_filter, pos->sym.name))
3460 printf("%s\n", pos->sym.name);
3461 }
3462
3347end: 3463end:
3348 if (user) { 3464 map__put(map);
3349 map__put(map);
3350 }
3351 exit_probe_symbol_maps(); 3465 exit_probe_symbol_maps();
3352 3466
3353 return ret; 3467 return ret;
diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h
index f4f45db77c1c..5d4e94061402 100644
--- a/tools/perf/util/probe-event.h
+++ b/tools/perf/util/probe-event.h
@@ -18,6 +18,8 @@ struct probe_conf {
18extern struct probe_conf probe_conf; 18extern struct probe_conf probe_conf;
19extern bool probe_event_dry_run; 19extern bool probe_event_dry_run;
20 20
21struct symbol;
22
21/* kprobe-tracer and uprobe-tracer tracing point */ 23/* kprobe-tracer and uprobe-tracer tracing point */
22struct probe_trace_point { 24struct probe_trace_point {
23 char *realname; /* function real name (if needed) */ 25 char *realname; /* function real name (if needed) */
@@ -128,6 +130,8 @@ char *synthesize_perf_probe_point(struct perf_probe_point *pp);
128int perf_probe_event__copy(struct perf_probe_event *dst, 130int perf_probe_event__copy(struct perf_probe_event *dst,
129 struct perf_probe_event *src); 131 struct perf_probe_event *src);
130 132
133bool perf_probe_with_var(struct perf_probe_event *pev);
134
131/* Check the perf_probe_event needs debuginfo */ 135/* Check the perf_probe_event needs debuginfo */
132bool perf_probe_event_need_dwarf(struct perf_probe_event *pev); 136bool perf_probe_event_need_dwarf(struct perf_probe_event *pev);
133 137
@@ -147,6 +151,7 @@ int line_range__init(struct line_range *lr);
147int add_perf_probe_events(struct perf_probe_event *pevs, int npevs); 151int add_perf_probe_events(struct perf_probe_event *pevs, int npevs);
148int convert_perf_probe_events(struct perf_probe_event *pevs, int npevs); 152int convert_perf_probe_events(struct perf_probe_event *pevs, int npevs);
149int apply_perf_probe_events(struct perf_probe_event *pevs, int npevs); 153int apply_perf_probe_events(struct perf_probe_event *pevs, int npevs);
154int show_probe_trace_events(struct perf_probe_event *pevs, int npevs);
150void cleanup_perf_probe_events(struct perf_probe_event *pevs, int npevs); 155void cleanup_perf_probe_events(struct perf_probe_event *pevs, int npevs);
151int del_perf_probe_events(struct strfilter *filter); 156int del_perf_probe_events(struct strfilter *filter);
152 157
diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c
index 9c3b9ed5b3c3..436b64731f65 100644
--- a/tools/perf/util/probe-file.c
+++ b/tools/perf/util/probe-file.c
@@ -73,11 +73,10 @@ static void print_both_open_warning(int kerr, int uerr)
73static int open_probe_events(const char *trace_file, bool readwrite) 73static int open_probe_events(const char *trace_file, bool readwrite)
74{ 74{
75 char buf[PATH_MAX]; 75 char buf[PATH_MAX];
76 const char *tracing_dir = "";
77 int ret; 76 int ret;
78 77
79 ret = e_snprintf(buf, PATH_MAX, "%s/%s%s", 78 ret = e_snprintf(buf, PATH_MAX, "%s/%s",
80 tracing_path, tracing_dir, trace_file); 79 tracing_path, trace_file);
81 if (ret >= 0) { 80 if (ret >= 0) {
82 pr_debug("Opening %s write=%d\n", buf, readwrite); 81 pr_debug("Opening %s write=%d\n", buf, readwrite);
83 if (readwrite && !probe_event_dry_run) 82 if (readwrite && !probe_event_dry_run)
@@ -700,7 +699,7 @@ int probe_cache__scan_sdt(struct probe_cache *pcache, const char *pathname)
700 INIT_LIST_HEAD(&sdtlist); 699 INIT_LIST_HEAD(&sdtlist);
701 ret = get_sdt_note_list(&sdtlist, pathname); 700 ret = get_sdt_note_list(&sdtlist, pathname);
702 if (ret < 0) { 701 if (ret < 0) {
703 pr_debug("Failed to get sdt note: %d\n", ret); 702 pr_debug4("Failed to get sdt note: %d\n", ret);
704 return ret; 703 return ret;
705 } 704 }
706 list_for_each_entry(note, &sdtlist, note_list) { 705 list_for_each_entry(note, &sdtlist, note_list) {
@@ -877,3 +876,60 @@ int probe_cache__show_all_caches(struct strfilter *filter)
877 876
878 return 0; 877 return 0;
879} 878}
879
880static struct {
881 const char *pattern;
882 bool avail;
883 bool checked;
884} probe_type_table[] = {
885#define DEFINE_TYPE(idx, pat, def_avail) \
886 [idx] = {.pattern = pat, .avail = (def_avail)}
887 DEFINE_TYPE(PROBE_TYPE_U, "* u8/16/32/64,*", true),
888 DEFINE_TYPE(PROBE_TYPE_S, "* s8/16/32/64,*", true),
889 DEFINE_TYPE(PROBE_TYPE_X, "* x8/16/32/64,*", false),
890 DEFINE_TYPE(PROBE_TYPE_STRING, "* string,*", true),
891 DEFINE_TYPE(PROBE_TYPE_BITFIELD,
892 "* b<bit-width>@<bit-offset>/<container-size>", true),
893};
894
895bool probe_type_is_available(enum probe_type type)
896{
897 FILE *fp;
898 char *buf = NULL;
899 size_t len = 0;
900 bool target_line = false;
901 bool ret = probe_type_table[type].avail;
902
903 if (type >= PROBE_TYPE_END)
904 return false;
905 /* We don't have to check the type which supported by default */
906 if (ret || probe_type_table[type].checked)
907 return ret;
908
909 if (asprintf(&buf, "%s/README", tracing_path) < 0)
910 return ret;
911
912 fp = fopen(buf, "r");
913 if (!fp)
914 goto end;
915
916 zfree(&buf);
917 while (getline(&buf, &len, fp) > 0 && !ret) {
918 if (!target_line) {
919 target_line = !!strstr(buf, " type: ");
920 if (!target_line)
921 continue;
922 } else if (strstr(buf, "\t ") != buf)
923 break;
924 ret = strglobmatch(buf, probe_type_table[type].pattern);
925 }
926 /* Cache the result */
927 probe_type_table[type].checked = true;
928 probe_type_table[type].avail = ret;
929
930 fclose(fp);
931end:
932 free(buf);
933
934 return ret;
935}
diff --git a/tools/perf/util/probe-file.h b/tools/perf/util/probe-file.h
index 9577b5c0b487..eba44c3e9dca 100644
--- a/tools/perf/util/probe-file.h
+++ b/tools/perf/util/probe-file.h
@@ -19,6 +19,15 @@ struct probe_cache {
19 struct list_head entries; 19 struct list_head entries;
20}; 20};
21 21
22enum probe_type {
23 PROBE_TYPE_U = 0,
24 PROBE_TYPE_S,
25 PROBE_TYPE_X,
26 PROBE_TYPE_STRING,
27 PROBE_TYPE_BITFIELD,
28 PROBE_TYPE_END,
29};
30
22#define PF_FL_UPROBE 1 31#define PF_FL_UPROBE 1
23#define PF_FL_RW 2 32#define PF_FL_RW 2
24#define for_each_probe_cache_entry(entry, pcache) \ 33#define for_each_probe_cache_entry(entry, pcache) \
@@ -54,6 +63,7 @@ struct probe_cache_entry *probe_cache__find(struct probe_cache *pcache,
54struct probe_cache_entry *probe_cache__find_by_name(struct probe_cache *pcache, 63struct probe_cache_entry *probe_cache__find_by_name(struct probe_cache *pcache,
55 const char *group, const char *event); 64 const char *group, const char *event);
56int probe_cache__show_all_caches(struct strfilter *filter); 65int probe_cache__show_all_caches(struct strfilter *filter);
66bool probe_type_is_available(enum probe_type type);
57#else /* ! HAVE_LIBELF_SUPPORT */ 67#else /* ! HAVE_LIBELF_SUPPORT */
58static inline struct probe_cache *probe_cache__new(const char *tgt __maybe_unused) 68static inline struct probe_cache *probe_cache__new(const char *tgt __maybe_unused)
59{ 69{
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index 5c290c682afe..0d9d6e0803b8 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -39,6 +39,7 @@
39#include "util.h" 39#include "util.h"
40#include "symbol.h" 40#include "symbol.h"
41#include "probe-finder.h" 41#include "probe-finder.h"
42#include "probe-file.h"
42 43
43/* Kprobe tracer basic type is up to u64 */ 44/* Kprobe tracer basic type is up to u64 */
44#define MAX_BASIC_TYPE_BITS 64 45#define MAX_BASIC_TYPE_BITS 64
@@ -170,6 +171,7 @@ static struct probe_trace_arg_ref *alloc_trace_arg_ref(long offs)
170 */ 171 */
171static int convert_variable_location(Dwarf_Die *vr_die, Dwarf_Addr addr, 172static int convert_variable_location(Dwarf_Die *vr_die, Dwarf_Addr addr,
172 Dwarf_Op *fb_ops, Dwarf_Die *sp_die, 173 Dwarf_Op *fb_ops, Dwarf_Die *sp_die,
174 unsigned int machine,
173 struct probe_trace_arg *tvar) 175 struct probe_trace_arg *tvar)
174{ 176{
175 Dwarf_Attribute attr; 177 Dwarf_Attribute attr;
@@ -265,7 +267,7 @@ static_var:
265 if (!tvar) 267 if (!tvar)
266 return ret2; 268 return ret2;
267 269
268 regs = get_arch_regstr(regn); 270 regs = get_dwarf_regstr(regn, machine);
269 if (!regs) { 271 if (!regs) {
270 /* This should be a bug in DWARF or this tool */ 272 /* This should be a bug in DWARF or this tool */
271 pr_warning("Mapping for the register number %u " 273 pr_warning("Mapping for the register number %u "
@@ -297,13 +299,13 @@ static int convert_variable_type(Dwarf_Die *vr_die,
297 char sbuf[STRERR_BUFSIZE]; 299 char sbuf[STRERR_BUFSIZE];
298 int bsize, boffs, total; 300 int bsize, boffs, total;
299 int ret; 301 int ret;
300 char sign; 302 char prefix;
301 303
302 /* TODO: check all types */ 304 /* TODO: check all types */
303 if (cast && strcmp(cast, "string") != 0 && 305 if (cast && strcmp(cast, "string") != 0 && strcmp(cast, "x") != 0 &&
304 strcmp(cast, "s") != 0 && strcmp(cast, "u") != 0) { 306 strcmp(cast, "s") != 0 && strcmp(cast, "u") != 0) {
305 /* Non string type is OK */ 307 /* Non string type is OK */
306 /* and respect signedness cast */ 308 /* and respect signedness/hexadecimal cast */
307 tvar->type = strdup(cast); 309 tvar->type = strdup(cast);
308 return (tvar->type == NULL) ? -ENOMEM : 0; 310 return (tvar->type == NULL) ? -ENOMEM : 0;
309 } 311 }
@@ -365,11 +367,15 @@ static int convert_variable_type(Dwarf_Die *vr_die,
365 } 367 }
366 368
367 if (cast && (strcmp(cast, "u") == 0)) 369 if (cast && (strcmp(cast, "u") == 0))
368 sign = 'u'; 370 prefix = 'u';
369 else if (cast && (strcmp(cast, "s") == 0)) 371 else if (cast && (strcmp(cast, "s") == 0))
370 sign = 's'; 372 prefix = 's';
373 else if (cast && (strcmp(cast, "x") == 0) &&
374 probe_type_is_available(PROBE_TYPE_X))
375 prefix = 'x';
371 else 376 else
372 sign = die_is_signed_type(&type) ? 's' : 'u'; 377 prefix = die_is_signed_type(&type) ? 's' :
378 probe_type_is_available(PROBE_TYPE_X) ? 'x' : 'u';
373 379
374 ret = dwarf_bytesize(&type); 380 ret = dwarf_bytesize(&type);
375 if (ret <= 0) 381 if (ret <= 0)
@@ -383,7 +389,7 @@ static int convert_variable_type(Dwarf_Die *vr_die,
383 dwarf_diename(&type), MAX_BASIC_TYPE_BITS); 389 dwarf_diename(&type), MAX_BASIC_TYPE_BITS);
384 ret = MAX_BASIC_TYPE_BITS; 390 ret = MAX_BASIC_TYPE_BITS;
385 } 391 }
386 ret = snprintf(buf, 16, "%c%d", sign, ret); 392 ret = snprintf(buf, 16, "%c%d", prefix, ret);
387 393
388formatted: 394formatted:
389 if (ret < 0 || ret >= 16) { 395 if (ret < 0 || ret >= 16) {
@@ -538,7 +544,7 @@ static int convert_variable(Dwarf_Die *vr_die, struct probe_finder *pf)
538 dwarf_diename(vr_die)); 544 dwarf_diename(vr_die));
539 545
540 ret = convert_variable_location(vr_die, pf->addr, pf->fb_ops, 546 ret = convert_variable_location(vr_die, pf->addr, pf->fb_ops,
541 &pf->sp_die, pf->tvar); 547 &pf->sp_die, pf->machine, pf->tvar);
542 if (ret == -ENOENT || ret == -EINVAL) { 548 if (ret == -ENOENT || ret == -EINVAL) {
543 pr_err("Failed to find the location of the '%s' variable at this address.\n" 549 pr_err("Failed to find the location of the '%s' variable at this address.\n"
544 " Perhaps it has been optimized out.\n" 550 " Perhaps it has been optimized out.\n"
@@ -901,6 +907,38 @@ static int find_probe_point_lazy(Dwarf_Die *sp_die, struct probe_finder *pf)
901 return die_walk_lines(sp_die, probe_point_lazy_walker, pf); 907 return die_walk_lines(sp_die, probe_point_lazy_walker, pf);
902} 908}
903 909
910static void skip_prologue(Dwarf_Die *sp_die, struct probe_finder *pf)
911{
912 struct perf_probe_point *pp = &pf->pev->point;
913
914 /* Not uprobe? */
915 if (!pf->pev->uprobes)
916 return;
917
918 /* Compiled with optimization? */
919 if (die_is_optimized_target(&pf->cu_die))
920 return;
921
922 /* Don't know entrypc? */
923 if (!pf->addr)
924 return;
925
926 /* Only FUNC and FUNC@SRC are eligible. */
927 if (!pp->function || pp->line || pp->retprobe || pp->lazy_line ||
928 pp->offset || pp->abs_address)
929 return;
930
931 /* Not interested in func parameter? */
932 if (!perf_probe_with_var(pf->pev))
933 return;
934
935 pr_info("Target program is compiled without optimization. Skipping prologue.\n"
936 "Probe on address 0x%" PRIx64 " to force probing at the function entry.\n\n",
937 pf->addr);
938
939 die_skip_prologue(sp_die, &pf->cu_die, &pf->addr);
940}
941
904static int probe_point_inline_cb(Dwarf_Die *in_die, void *data) 942static int probe_point_inline_cb(Dwarf_Die *in_die, void *data)
905{ 943{
906 struct probe_finder *pf = data; 944 struct probe_finder *pf = data;
@@ -917,6 +955,11 @@ static int probe_point_inline_cb(Dwarf_Die *in_die, void *data)
917 dwarf_diename(in_die)); 955 dwarf_diename(in_die));
918 return -ENOENT; 956 return -ENOENT;
919 } 957 }
958 if (addr == 0) {
959 pr_debug("%s has no valid entry address. skipped.\n",
960 dwarf_diename(in_die));
961 return -ENOENT;
962 }
920 pf->addr = addr; 963 pf->addr = addr;
921 pf->addr += pp->offset; 964 pf->addr += pp->offset;
922 pr_debug("found inline addr: 0x%jx\n", 965 pr_debug("found inline addr: 0x%jx\n",
@@ -950,7 +993,8 @@ static int probe_point_search_cb(Dwarf_Die *sp_die, void *data)
950 if (pp->file && strtailcmp(pp->file, dwarf_decl_file(sp_die))) 993 if (pp->file && strtailcmp(pp->file, dwarf_decl_file(sp_die)))
951 return DWARF_CB_OK; 994 return DWARF_CB_OK;
952 995
953 pr_debug("Matched function: %s\n", dwarf_diename(sp_die)); 996 pr_debug("Matched function: %s [%lx]\n", dwarf_diename(sp_die),
997 (unsigned long)dwarf_dieoffset(sp_die));
954 pf->fname = dwarf_decl_file(sp_die); 998 pf->fname = dwarf_decl_file(sp_die);
955 if (pp->line) { /* Function relative line */ 999 if (pp->line) { /* Function relative line */
956 dwarf_decl_line(sp_die, &pf->lno); 1000 dwarf_decl_line(sp_die, &pf->lno);
@@ -959,10 +1003,16 @@ static int probe_point_search_cb(Dwarf_Die *sp_die, void *data)
959 } else if (die_is_func_instance(sp_die)) { 1003 } else if (die_is_func_instance(sp_die)) {
960 /* Instances always have the entry address */ 1004 /* Instances always have the entry address */
961 dwarf_entrypc(sp_die, &pf->addr); 1005 dwarf_entrypc(sp_die, &pf->addr);
1006 /* But in some case the entry address is 0 */
1007 if (pf->addr == 0) {
1008 pr_debug("%s has no entry PC. Skipped\n",
1009 dwarf_diename(sp_die));
1010 param->retval = 0;
962 /* Real function */ 1011 /* Real function */
963 if (pp->lazy_line) 1012 } else if (pp->lazy_line)
964 param->retval = find_probe_point_lazy(sp_die, pf); 1013 param->retval = find_probe_point_lazy(sp_die, pf);
965 else { 1014 else {
1015 skip_prologue(sp_die, pf);
966 pf->addr += pp->offset; 1016 pf->addr += pp->offset;
967 /* TODO: Check the address in this function */ 1017 /* TODO: Check the address in this function */
968 param->retval = call_probe_finder(sp_die, pf); 1018 param->retval = call_probe_finder(sp_die, pf);
@@ -972,7 +1022,7 @@ static int probe_point_search_cb(Dwarf_Die *sp_die, void *data)
972 param->retval = die_walk_instances(sp_die, 1022 param->retval = die_walk_instances(sp_die,
973 probe_point_inline_cb, (void *)pf); 1023 probe_point_inline_cb, (void *)pf);
974 /* This could be a non-existed inline definition */ 1024 /* This could be a non-existed inline definition */
975 if (param->retval == -ENOENT && strisglob(pp->function)) 1025 if (param->retval == -ENOENT)
976 param->retval = 0; 1026 param->retval = 0;
977 } 1027 }
978 1028
@@ -1101,11 +1151,8 @@ static int debuginfo__find_probes(struct debuginfo *dbg,
1101 struct probe_finder *pf) 1151 struct probe_finder *pf)
1102{ 1152{
1103 int ret = 0; 1153 int ret = 0;
1104
1105#if _ELFUTILS_PREREQ(0, 142)
1106 Elf *elf; 1154 Elf *elf;
1107 GElf_Ehdr ehdr; 1155 GElf_Ehdr ehdr;
1108 GElf_Shdr shdr;
1109 1156
1110 if (pf->cfi_eh || pf->cfi_dbg) 1157 if (pf->cfi_eh || pf->cfi_dbg)
1111 return debuginfo__find_probe_location(dbg, pf); 1158 return debuginfo__find_probe_location(dbg, pf);
@@ -1118,11 +1165,18 @@ static int debuginfo__find_probes(struct debuginfo *dbg,
1118 if (gelf_getehdr(elf, &ehdr) == NULL) 1165 if (gelf_getehdr(elf, &ehdr) == NULL)
1119 return -EINVAL; 1166 return -EINVAL;
1120 1167
1121 if (elf_section_by_name(elf, &ehdr, &shdr, ".eh_frame", NULL) && 1168 pf->machine = ehdr.e_machine;
1122 shdr.sh_type == SHT_PROGBITS) 1169
1123 pf->cfi_eh = dwarf_getcfi_elf(elf); 1170#if _ELFUTILS_PREREQ(0, 142)
1171 do {
1172 GElf_Shdr shdr;
1124 1173
1125 pf->cfi_dbg = dwarf_getcfi(dbg->dbg); 1174 if (elf_section_by_name(elf, &ehdr, &shdr, ".eh_frame", NULL) &&
1175 shdr.sh_type == SHT_PROGBITS)
1176 pf->cfi_eh = dwarf_getcfi_elf(elf);
1177
1178 pf->cfi_dbg = dwarf_getcfi(dbg->dbg);
1179 } while (0);
1126#endif 1180#endif
1127 1181
1128 ret = debuginfo__find_probe_location(dbg, pf); 1182 ret = debuginfo__find_probe_location(dbg, pf);
@@ -1150,7 +1204,7 @@ static int copy_variables_cb(Dwarf_Die *die_mem, void *data)
1150 (tag == DW_TAG_variable && vf->vars)) { 1204 (tag == DW_TAG_variable && vf->vars)) {
1151 if (convert_variable_location(die_mem, vf->pf->addr, 1205 if (convert_variable_location(die_mem, vf->pf->addr,
1152 vf->pf->fb_ops, &pf->sp_die, 1206 vf->pf->fb_ops, &pf->sp_die,
1153 NULL) == 0) { 1207 pf->machine, NULL) == 0) {
1154 vf->args[vf->nargs].var = (char *)dwarf_diename(die_mem); 1208 vf->args[vf->nargs].var = (char *)dwarf_diename(die_mem);
1155 if (vf->args[vf->nargs].var == NULL) { 1209 if (vf->args[vf->nargs].var == NULL) {
1156 vf->ret = -ENOMEM; 1210 vf->ret = -ENOMEM;
@@ -1313,7 +1367,7 @@ static int collect_variables_cb(Dwarf_Die *die_mem, void *data)
1313 tag == DW_TAG_variable) { 1367 tag == DW_TAG_variable) {
1314 ret = convert_variable_location(die_mem, af->pf.addr, 1368 ret = convert_variable_location(die_mem, af->pf.addr,
1315 af->pf.fb_ops, &af->pf.sp_die, 1369 af->pf.fb_ops, &af->pf.sp_die,
1316 NULL); 1370 af->pf.machine, NULL);
1317 if (ret == 0 || ret == -ERANGE) { 1371 if (ret == 0 || ret == -ERANGE) {
1318 int ret2; 1372 int ret2;
1319 bool externs = !af->child; 1373 bool externs = !af->child;
@@ -1447,7 +1501,8 @@ int debuginfo__find_available_vars_at(struct debuginfo *dbg,
1447} 1501}
1448 1502
1449/* For the kernel module, we need a special code to get a DIE */ 1503/* For the kernel module, we need a special code to get a DIE */
1450static int debuginfo__get_text_offset(struct debuginfo *dbg, Dwarf_Addr *offs) 1504int debuginfo__get_text_offset(struct debuginfo *dbg, Dwarf_Addr *offs,
1505 bool adjust_offset)
1451{ 1506{
1452 int n, i; 1507 int n, i;
1453 Elf32_Word shndx; 1508 Elf32_Word shndx;
@@ -1476,6 +1531,8 @@ static int debuginfo__get_text_offset(struct debuginfo *dbg, Dwarf_Addr *offs)
1476 if (!shdr) 1531 if (!shdr)
1477 return -ENOENT; 1532 return -ENOENT;
1478 *offs = shdr->sh_addr; 1533 *offs = shdr->sh_addr;
1534 if (adjust_offset)
1535 *offs -= shdr->sh_offset;
1479 } 1536 }
1480 } 1537 }
1481 return 0; 1538 return 0;
@@ -1489,16 +1546,12 @@ int debuginfo__find_probe_point(struct debuginfo *dbg, unsigned long addr,
1489 Dwarf_Addr _addr = 0, baseaddr = 0; 1546 Dwarf_Addr _addr = 0, baseaddr = 0;
1490 const char *fname = NULL, *func = NULL, *basefunc = NULL, *tmp; 1547 const char *fname = NULL, *func = NULL, *basefunc = NULL, *tmp;
1491 int baseline = 0, lineno = 0, ret = 0; 1548 int baseline = 0, lineno = 0, ret = 0;
1492 bool reloc = false;
1493 1549
1494retry: 1550 /* We always need to relocate the address for aranges */
1551 if (debuginfo__get_text_offset(dbg, &baseaddr, false) == 0)
1552 addr += baseaddr;
1495 /* Find cu die */ 1553 /* Find cu die */
1496 if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr, &cudie)) { 1554 if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr, &cudie)) {
1497 if (!reloc && debuginfo__get_text_offset(dbg, &baseaddr) == 0) {
1498 addr += baseaddr;
1499 reloc = true;
1500 goto retry;
1501 }
1502 pr_warning("Failed to find debug information for address %lx\n", 1555 pr_warning("Failed to find debug information for address %lx\n",
1503 addr); 1556 addr);
1504 ret = -EINVAL; 1557 ret = -EINVAL;
diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h
index 51137fccb9c8..2956c5198652 100644
--- a/tools/perf/util/probe-finder.h
+++ b/tools/perf/util/probe-finder.h
@@ -46,6 +46,9 @@ int debuginfo__find_trace_events(struct debuginfo *dbg,
46int debuginfo__find_probe_point(struct debuginfo *dbg, unsigned long addr, 46int debuginfo__find_probe_point(struct debuginfo *dbg, unsigned long addr,
47 struct perf_probe_point *ppt); 47 struct perf_probe_point *ppt);
48 48
49int debuginfo__get_text_offset(struct debuginfo *dbg, Dwarf_Addr *offs,
50 bool adjust_offset);
51
49/* Find a line range */ 52/* Find a line range */
50int debuginfo__find_line_range(struct debuginfo *dbg, struct line_range *lr); 53int debuginfo__find_line_range(struct debuginfo *dbg, struct line_range *lr);
51 54
@@ -80,6 +83,7 @@ struct probe_finder {
80 Dwarf_CFI *cfi_dbg; 83 Dwarf_CFI *cfi_dbg;
81#endif 84#endif
82 Dwarf_Op *fb_ops; /* Frame base attribute */ 85 Dwarf_Op *fb_ops; /* Frame base attribute */
86 unsigned int machine; /* Target machine arch */
83 struct perf_probe_arg *pvar; /* Current target variable */ 87 struct perf_probe_arg *pvar; /* Current target variable */
84 struct probe_trace_arg *tvar; /* Current result variable */ 88 struct probe_trace_arg *tvar; /* Current result variable */
85}; 89};
diff --git a/tools/perf/util/python-ext-sources b/tools/perf/util/python-ext-sources
index b7d4f4aeee61..0546a4304347 100644
--- a/tools/perf/util/python-ext-sources
+++ b/tools/perf/util/python-ext-sources
@@ -18,6 +18,7 @@ util/thread_map.c
18util/util.c 18util/util.c
19util/xyarray.c 19util/xyarray.c
20util/cgroup.c 20util/cgroup.c
21util/parse-branch-options.c
21util/rblist.c 22util/rblist.c
22util/counts.c 23util/counts.c
23util/strlist.c 24util/strlist.c
diff --git a/tools/perf/util/quote.c b/tools/perf/util/quote.c
index 639d1da2f978..293534c1a474 100644
--- a/tools/perf/util/quote.c
+++ b/tools/perf/util/quote.c
@@ -54,7 +54,7 @@ int sq_quote_argv(struct strbuf *dst, const char** argv, size_t maxlen)
54 break; 54 break;
55 ret = sq_quote_buf(dst, argv[i]); 55 ret = sq_quote_buf(dst, argv[i]);
56 if (maxlen && dst->len > maxlen) 56 if (maxlen && dst->len > maxlen)
57 die("Too many or long arguments"); 57 return -ENOSPC;
58 } 58 }
59 return ret; 59 return ret;
60} 60}
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index 5d1eb1ccd96c..e55a132f69b7 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -25,6 +25,7 @@
25#include <ctype.h> 25#include <ctype.h>
26#include <errno.h> 26#include <errno.h>
27#include <linux/bitmap.h> 27#include <linux/bitmap.h>
28#include <linux/time64.h>
28 29
29#include "../util.h" 30#include "../util.h"
30#include <EXTERN.h> 31#include <EXTERN.h>
@@ -359,8 +360,8 @@ static void perl_process_tracepoint(struct perf_sample *sample,
359 if (!test_and_set_bit(event->id, events_defined)) 360 if (!test_and_set_bit(event->id, events_defined))
360 define_event_symbols(event, handler, event->print_fmt.args); 361 define_event_symbols(event, handler, event->print_fmt.args);
361 362
362 s = nsecs / NSECS_PER_SEC; 363 s = nsecs / NSEC_PER_SEC;
363 ns = nsecs - s * NSECS_PER_SEC; 364 ns = nsecs - s * NSEC_PER_SEC;
364 365
365 scripting_context->event_data = data; 366 scripting_context->event_data = data;
366 scripting_context->pevent = evsel->tp_format->pevent; 367 scripting_context->pevent = evsel->tp_format->pevent;
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index e0203b979474..089438da1f7f 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -27,6 +27,7 @@
27#include <stdbool.h> 27#include <stdbool.h>
28#include <errno.h> 28#include <errno.h>
29#include <linux/bitmap.h> 29#include <linux/bitmap.h>
30#include <linux/time64.h>
30 31
31#include "../../perf.h" 32#include "../../perf.h"
32#include "../debug.h" 33#include "../debug.h"
@@ -426,8 +427,8 @@ static void python_process_tracepoint(struct perf_sample *sample,
426 if (!dict) 427 if (!dict)
427 Py_FatalError("couldn't create Python dict"); 428 Py_FatalError("couldn't create Python dict");
428 } 429 }
429 s = nsecs / NSECS_PER_SEC; 430 s = nsecs / NSEC_PER_SEC;
430 ns = nsecs - s * NSECS_PER_SEC; 431 ns = nsecs - s * NSEC_PER_SEC;
431 432
432 scripting_context->event_data = data; 433 scripting_context->event_data = data;
433 scripting_context->pevent = evsel->tp_format->pevent; 434 scripting_context->pevent = evsel->tp_format->pevent;
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 5d61242a6e64..f268201048a0 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -2025,20 +2025,10 @@ out_delete_map:
2025void perf_session__fprintf_info(struct perf_session *session, FILE *fp, 2025void perf_session__fprintf_info(struct perf_session *session, FILE *fp,
2026 bool full) 2026 bool full)
2027{ 2027{
2028 struct stat st;
2029 int fd, ret;
2030
2031 if (session == NULL || fp == NULL) 2028 if (session == NULL || fp == NULL)
2032 return; 2029 return;
2033 2030
2034 fd = perf_data_file__fd(session->file);
2035
2036 ret = fstat(fd, &st);
2037 if (ret == -1)
2038 return;
2039
2040 fprintf(fp, "# ========\n"); 2031 fprintf(fp, "# ========\n");
2041 fprintf(fp, "# captured on: %s", ctime(&st.st_ctime));
2042 perf_header__fprintf_info(session, fp, full); 2032 perf_header__fprintf_info(session, fp, full);
2043 fprintf(fp, "# ========\n#\n"); 2033 fprintf(fp, "# ========\n#\n");
2044} 2034}
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 3d3cb8392c86..df622f4e301e 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -11,7 +11,7 @@
11regex_t parent_regex; 11regex_t parent_regex;
12const char default_parent_pattern[] = "^sys_|^do_page_fault"; 12const char default_parent_pattern[] = "^sys_|^do_page_fault";
13const char *parent_pattern = default_parent_pattern; 13const char *parent_pattern = default_parent_pattern;
14const char default_sort_order[] = "comm,dso,symbol"; 14const char *default_sort_order = "comm,dso,symbol";
15const char default_branch_sort_order[] = "comm,dso_from,symbol_from,symbol_to,cycles"; 15const char default_branch_sort_order[] = "comm,dso_from,symbol_from,symbol_to,cycles";
16const char default_mem_sort_order[] = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked"; 16const char default_mem_sort_order[] = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked";
17const char default_top_sort_order[] = "dso,symbol"; 17const char default_top_sort_order[] = "dso,symbol";
@@ -315,7 +315,7 @@ struct sort_entry sort_sym = {
315 315
316/* --sort srcline */ 316/* --sort srcline */
317 317
318static char *hist_entry__get_srcline(struct hist_entry *he) 318char *hist_entry__get_srcline(struct hist_entry *he)
319{ 319{
320 struct map *map = he->ms.map; 320 struct map *map = he->ms.map;
321 321
@@ -867,7 +867,7 @@ struct sort_entry sort_cycles = {
867}; 867};
868 868
869/* --sort daddr_sym */ 869/* --sort daddr_sym */
870static int64_t 870int64_t
871sort__daddr_cmp(struct hist_entry *left, struct hist_entry *right) 871sort__daddr_cmp(struct hist_entry *left, struct hist_entry *right)
872{ 872{
873 uint64_t l = 0, r = 0; 873 uint64_t l = 0, r = 0;
@@ -896,7 +896,7 @@ static int hist_entry__daddr_snprintf(struct hist_entry *he, char *bf,
896 width); 896 width);
897} 897}
898 898
899static int64_t 899int64_t
900sort__iaddr_cmp(struct hist_entry *left, struct hist_entry *right) 900sort__iaddr_cmp(struct hist_entry *left, struct hist_entry *right)
901{ 901{
902 uint64_t l = 0, r = 0; 902 uint64_t l = 0, r = 0;
@@ -1062,7 +1062,7 @@ static int hist_entry__snoop_snprintf(struct hist_entry *he, char *bf,
1062 return repsep_snprintf(bf, size, "%-*s", width, out); 1062 return repsep_snprintf(bf, size, "%-*s", width, out);
1063} 1063}
1064 1064
1065static int64_t 1065int64_t
1066sort__dcacheline_cmp(struct hist_entry *left, struct hist_entry *right) 1066sort__dcacheline_cmp(struct hist_entry *left, struct hist_entry *right)
1067{ 1067{
1068 u64 l, r; 1068 u64 l, r;
@@ -1492,7 +1492,8 @@ void perf_hpp__reset_sort_width(struct perf_hpp_fmt *fmt, struct hists *hists)
1492} 1492}
1493 1493
1494static int __sort__hpp_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 1494static int __sort__hpp_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1495 struct hists *hists) 1495 struct hists *hists, int line __maybe_unused,
1496 int *span __maybe_unused)
1496{ 1497{
1497 struct hpp_sort_entry *hse; 1498 struct hpp_sort_entry *hse;
1498 size_t len = fmt->user_len; 1499 size_t len = fmt->user_len;
@@ -1797,7 +1798,9 @@ static void update_dynamic_len(struct hpp_dynamic_entry *hde,
1797} 1798}
1798 1799
1799static int __sort__hde_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 1800static int __sort__hde_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1800 struct hists *hists __maybe_unused) 1801 struct hists *hists __maybe_unused,
1802 int line __maybe_unused,
1803 int *span __maybe_unused)
1801{ 1804{
1802 struct hpp_dynamic_entry *hde; 1805 struct hpp_dynamic_entry *hde;
1803 size_t len = fmt->user_len; 1806 size_t len = fmt->user_len;
@@ -2305,9 +2308,9 @@ int hpp_dimension__add_output(unsigned col)
2305 return __hpp_dimension__add_output(&perf_hpp_list, &hpp_sort_dimensions[col]); 2308 return __hpp_dimension__add_output(&perf_hpp_list, &hpp_sort_dimensions[col]);
2306} 2309}
2307 2310
2308static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, 2311int sort_dimension__add(struct perf_hpp_list *list, const char *tok,
2309 struct perf_evlist *evlist, 2312 struct perf_evlist *evlist,
2310 int level) 2313 int level)
2311{ 2314{
2312 unsigned int i; 2315 unsigned int i;
2313 2316
@@ -2682,7 +2685,7 @@ void sort__setup_elide(FILE *output)
2682 } 2685 }
2683} 2686}
2684 2687
2685static int output_field_add(struct perf_hpp_list *list, char *tok) 2688int output_field_add(struct perf_hpp_list *list, char *tok)
2686{ 2689{
2687 unsigned int i; 2690 unsigned int i;
2688 2691
@@ -2745,7 +2748,7 @@ static int setup_output_list(struct perf_hpp_list *list, char *str)
2745 return ret; 2748 return ret;
2746} 2749}
2747 2750
2748static void reset_dimensions(void) 2751void reset_dimensions(void)
2749{ 2752{
2750 unsigned int i; 2753 unsigned int i;
2751 2754
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 7ca37ea17395..7aff317fc7c4 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -28,7 +28,7 @@ extern const char *sort_order;
28extern const char *field_order; 28extern const char *field_order;
29extern const char default_parent_pattern[]; 29extern const char default_parent_pattern[];
30extern const char *parent_pattern; 30extern const char *parent_pattern;
31extern const char default_sort_order[]; 31extern const char *default_sort_order;
32extern regex_t ignore_callees_regex; 32extern regex_t ignore_callees_regex;
33extern int have_ignore_callees; 33extern int have_ignore_callees;
34extern enum sort_mode sort__mode; 34extern enum sort_mode sort__mode;
@@ -40,6 +40,7 @@ extern struct sort_entry sort_dso_from;
40extern struct sort_entry sort_dso_to; 40extern struct sort_entry sort_dso_to;
41extern struct sort_entry sort_sym_from; 41extern struct sort_entry sort_sym_from;
42extern struct sort_entry sort_sym_to; 42extern struct sort_entry sort_sym_to;
43extern struct sort_entry sort_srcline;
43extern enum sort_type sort__first_dimension; 44extern enum sort_type sort__first_dimension;
44extern const char default_mem_sort_order[]; 45extern const char default_mem_sort_order[];
45 46
@@ -268,4 +269,16 @@ int report_parse_ignore_callees_opt(const struct option *opt, const char *arg, i
268bool is_strict_order(const char *order); 269bool is_strict_order(const char *order);
269 270
270int hpp_dimension__add_output(unsigned col); 271int hpp_dimension__add_output(unsigned col);
272void reset_dimensions(void);
273int sort_dimension__add(struct perf_hpp_list *list, const char *tok,
274 struct perf_evlist *evlist,
275 int level);
276int output_field_add(struct perf_hpp_list *list, char *tok);
277int64_t
278sort__iaddr_cmp(struct hist_entry *left, struct hist_entry *right);
279int64_t
280sort__daddr_cmp(struct hist_entry *left, struct hist_entry *right);
281int64_t
282sort__dcacheline_cmp(struct hist_entry *left, struct hist_entry *right);
283char *hist_entry__get_srcline(struct hist_entry *he);
271#endif /* __PERF_SORT_H */ 284#endif /* __PERF_SORT_H */
diff --git a/tools/perf/util/strbuf.h b/tools/perf/util/strbuf.h
index b268a6648a5d..318424ea561d 100644
--- a/tools/perf/util/strbuf.h
+++ b/tools/perf/util/strbuf.h
@@ -66,9 +66,8 @@ static inline ssize_t strbuf_avail(const struct strbuf *sb) {
66int strbuf_grow(struct strbuf *buf, size_t); 66int strbuf_grow(struct strbuf *buf, size_t);
67 67
68static inline int strbuf_setlen(struct strbuf *sb, size_t len) { 68static inline int strbuf_setlen(struct strbuf *sb, size_t len) {
69 int ret;
70 if (!sb->alloc) { 69 if (!sb->alloc) {
71 ret = strbuf_grow(sb, 0); 70 int ret = strbuf_grow(sb, 0);
72 if (ret) 71 if (ret)
73 return ret; 72 return ret;
74 } 73 }
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c
index 7f7e072be746..d8dfaf64b32e 100644
--- a/tools/perf/util/string.c
+++ b/tools/perf/util/string.c
@@ -193,7 +193,8 @@ error:
193} 193}
194 194
195/* Glob/lazy pattern matching */ 195/* Glob/lazy pattern matching */
196static bool __match_glob(const char *str, const char *pat, bool ignore_space) 196static bool __match_glob(const char *str, const char *pat, bool ignore_space,
197 bool case_ins)
197{ 198{
198 while (*str && *pat && *pat != '*') { 199 while (*str && *pat && *pat != '*') {
199 if (ignore_space) { 200 if (ignore_space) {
@@ -219,8 +220,13 @@ static bool __match_glob(const char *str, const char *pat, bool ignore_space)
219 return false; 220 return false;
220 else if (*pat == '\\') /* Escaped char match as normal char */ 221 else if (*pat == '\\') /* Escaped char match as normal char */
221 pat++; 222 pat++;
222 if (*str++ != *pat++) 223 if (case_ins) {
224 if (tolower(*str) != tolower(*pat))
225 return false;
226 } else if (*str != *pat)
223 return false; 227 return false;
228 str++;
229 pat++;
224 } 230 }
225 /* Check wild card */ 231 /* Check wild card */
226 if (*pat == '*') { 232 if (*pat == '*') {
@@ -229,7 +235,7 @@ static bool __match_glob(const char *str, const char *pat, bool ignore_space)
229 if (!*pat) /* Tail wild card matches all */ 235 if (!*pat) /* Tail wild card matches all */
230 return true; 236 return true;
231 while (*str) 237 while (*str)
232 if (__match_glob(str++, pat, ignore_space)) 238 if (__match_glob(str++, pat, ignore_space, case_ins))
233 return true; 239 return true;
234 } 240 }
235 return !*str && !*pat; 241 return !*str && !*pat;
@@ -249,7 +255,12 @@ static bool __match_glob(const char *str, const char *pat, bool ignore_space)
249 */ 255 */
250bool strglobmatch(const char *str, const char *pat) 256bool strglobmatch(const char *str, const char *pat)
251{ 257{
252 return __match_glob(str, pat, false); 258 return __match_glob(str, pat, false, false);
259}
260
261bool strglobmatch_nocase(const char *str, const char *pat)
262{
263 return __match_glob(str, pat, false, true);
253} 264}
254 265
255/** 266/**
@@ -262,7 +273,7 @@ bool strglobmatch(const char *str, const char *pat)
262 */ 273 */
263bool strlazymatch(const char *str, const char *pat) 274bool strlazymatch(const char *str, const char *pat)
264{ 275{
265 return __match_glob(str, pat, true); 276 return __match_glob(str, pat, true, false);
266} 277}
267 278
268/** 279/**
diff --git a/tools/perf/util/svghelper.c b/tools/perf/util/svghelper.c
index eec6c1149f44..1cbada2dc6be 100644
--- a/tools/perf/util/svghelper.c
+++ b/tools/perf/util/svghelper.c
@@ -18,6 +18,7 @@
18#include <unistd.h> 18#include <unistd.h>
19#include <string.h> 19#include <string.h>
20#include <linux/bitmap.h> 20#include <linux/bitmap.h>
21#include <linux/time64.h>
21 22
22#include "perf.h" 23#include "perf.h"
23#include "svghelper.h" 24#include "svghelper.h"
@@ -274,14 +275,14 @@ static char *time_to_string(u64 duration)
274 275
275 text[0] = 0; 276 text[0] = 0;
276 277
277 if (duration < 1000) /* less than 1 usec */ 278 if (duration < NSEC_PER_USEC) /* less than 1 usec */
278 return text; 279 return text;
279 280
280 if (duration < 1000 * 1000) { /* less than 1 msec */ 281 if (duration < NSEC_PER_MSEC) { /* less than 1 msec */
281 sprintf(text, "%.1f us", duration / 1000.0); 282 sprintf(text, "%.1f us", duration / (double)NSEC_PER_USEC);
282 return text; 283 return text;
283 } 284 }
284 sprintf(text, "%.1f ms", duration / 1000.0 / 1000); 285 sprintf(text, "%.1f ms", duration / (double)NSEC_PER_MSEC);
285 286
286 return text; 287 return text;
287} 288}
@@ -297,7 +298,7 @@ void svg_waiting(int Yslot, int cpu, u64 start, u64 end, const char *backtrace)
297 298
298 style = "waiting"; 299 style = "waiting";
299 300
300 if (end-start > 10 * 1000000) /* 10 msec */ 301 if (end-start > 10 * NSEC_PER_MSEC) /* 10 msec */
301 style = "WAITING"; 302 style = "WAITING";
302 303
303 text = time_to_string(end-start); 304 text = time_to_string(end-start);
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index a811c13a74d6..adbc6c02c3aa 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -206,6 +206,37 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
206 return NULL; 206 return NULL;
207} 207}
208 208
209static bool want_demangle(bool is_kernel_sym)
210{
211 return is_kernel_sym ? symbol_conf.demangle_kernel : symbol_conf.demangle;
212}
213
214static char *demangle_sym(struct dso *dso, int kmodule, const char *elf_name)
215{
216 int demangle_flags = verbose ? (DMGL_PARAMS | DMGL_ANSI) : DMGL_NO_OPTS;
217 char *demangled = NULL;
218
219 /*
220 * We need to figure out if the object was created from C++ sources
221 * DWARF DW_compile_unit has this, but we don't always have access
222 * to it...
223 */
224 if (!want_demangle(dso->kernel || kmodule))
225 return demangled;
226
227 demangled = bfd_demangle(NULL, elf_name, demangle_flags);
228 if (demangled == NULL)
229 demangled = java_demangle_sym(elf_name, JAVA_DEMANGLE_NORET);
230 else if (rust_is_mangled(demangled))
231 /*
232 * Input to Rust demangling is the BFD-demangled
233 * name which it Rust-demangles in place.
234 */
235 rust_demangle_sym(demangled);
236
237 return demangled;
238}
239
209#define elf_section__for_each_rel(reldata, pos, pos_mem, idx, nr_entries) \ 240#define elf_section__for_each_rel(reldata, pos, pos_mem, idx, nr_entries) \
210 for (idx = 0, pos = gelf_getrel(reldata, 0, &pos_mem); \ 241 for (idx = 0, pos = gelf_getrel(reldata, 0, &pos_mem); \
211 idx < nr_entries; \ 242 idx < nr_entries; \
@@ -223,8 +254,7 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
223 * And always look at the original dso, not at debuginfo packages, that 254 * And always look at the original dso, not at debuginfo packages, that
224 * have the PLT data stripped out (shdr_rel_plt.sh_type == SHT_NOBITS). 255 * have the PLT data stripped out (shdr_rel_plt.sh_type == SHT_NOBITS).
225 */ 256 */
226int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss, struct map *map, 257int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss, struct map *map)
227 symbol_filter_t filter)
228{ 258{
229 uint32_t nr_rel_entries, idx; 259 uint32_t nr_rel_entries, idx;
230 GElf_Sym sym; 260 GElf_Sym sym;
@@ -301,45 +331,53 @@ int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss, struct map *
301 331
302 elf_section__for_each_rela(reldata, pos, pos_mem, idx, 332 elf_section__for_each_rela(reldata, pos, pos_mem, idx,
303 nr_rel_entries) { 333 nr_rel_entries) {
334 const char *elf_name = NULL;
335 char *demangled = NULL;
304 symidx = GELF_R_SYM(pos->r_info); 336 symidx = GELF_R_SYM(pos->r_info);
305 plt_offset += shdr_plt.sh_entsize; 337 plt_offset += shdr_plt.sh_entsize;
306 gelf_getsym(syms, symidx, &sym); 338 gelf_getsym(syms, symidx, &sym);
339
340 elf_name = elf_sym__name(&sym, symstrs);
341 demangled = demangle_sym(dso, 0, elf_name);
342 if (demangled != NULL)
343 elf_name = demangled;
307 snprintf(sympltname, sizeof(sympltname), 344 snprintf(sympltname, sizeof(sympltname),
308 "%s@plt", elf_sym__name(&sym, symstrs)); 345 "%s@plt", elf_name);
346 free(demangled);
309 347
310 f = symbol__new(plt_offset, shdr_plt.sh_entsize, 348 f = symbol__new(plt_offset, shdr_plt.sh_entsize,
311 STB_GLOBAL, sympltname); 349 STB_GLOBAL, sympltname);
312 if (!f) 350 if (!f)
313 goto out_elf_end; 351 goto out_elf_end;
314 352
315 if (filter && filter(map, f)) 353 symbols__insert(&dso->symbols[map->type], f);
316 symbol__delete(f); 354 ++nr;
317 else {
318 symbols__insert(&dso->symbols[map->type], f);
319 ++nr;
320 }
321 } 355 }
322 } else if (shdr_rel_plt.sh_type == SHT_REL) { 356 } else if (shdr_rel_plt.sh_type == SHT_REL) {
323 GElf_Rel pos_mem, *pos; 357 GElf_Rel pos_mem, *pos;
324 elf_section__for_each_rel(reldata, pos, pos_mem, idx, 358 elf_section__for_each_rel(reldata, pos, pos_mem, idx,
325 nr_rel_entries) { 359 nr_rel_entries) {
360 const char *elf_name = NULL;
361 char *demangled = NULL;
326 symidx = GELF_R_SYM(pos->r_info); 362 symidx = GELF_R_SYM(pos->r_info);
327 plt_offset += shdr_plt.sh_entsize; 363 plt_offset += shdr_plt.sh_entsize;
328 gelf_getsym(syms, symidx, &sym); 364 gelf_getsym(syms, symidx, &sym);
365
366 elf_name = elf_sym__name(&sym, symstrs);
367 demangled = demangle_sym(dso, 0, elf_name);
368 if (demangled != NULL)
369 elf_name = demangled;
329 snprintf(sympltname, sizeof(sympltname), 370 snprintf(sympltname, sizeof(sympltname),
330 "%s@plt", elf_sym__name(&sym, symstrs)); 371 "%s@plt", elf_name);
372 free(demangled);
331 373
332 f = symbol__new(plt_offset, shdr_plt.sh_entsize, 374 f = symbol__new(plt_offset, shdr_plt.sh_entsize,
333 STB_GLOBAL, sympltname); 375 STB_GLOBAL, sympltname);
334 if (!f) 376 if (!f)
335 goto out_elf_end; 377 goto out_elf_end;
336 378
337 if (filter && filter(map, f)) 379 symbols__insert(&dso->symbols[map->type], f);
338 symbol__delete(f); 380 ++nr;
339 else {
340 symbols__insert(&dso->symbols[map->type], f);
341 ++nr;
342 }
343 } 381 }
344 } 382 }
345 383
@@ -499,6 +537,12 @@ int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
499 break; 537 break;
500 } else { 538 } else {
501 int n = namesz + descsz; 539 int n = namesz + descsz;
540
541 if (n > (int)sizeof(bf)) {
542 n = sizeof(bf);
543 pr_debug("%s: truncating reading of build id in sysfs file %s: n_namesz=%u, n_descsz=%u.\n",
544 __func__, filename, nhdr.n_namesz, nhdr.n_descsz);
545 }
502 if (read(fd, bf, n) != n) 546 if (read(fd, bf, n) != n)
503 break; 547 break;
504 } 548 }
@@ -685,7 +729,7 @@ int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name,
685 } 729 }
686 730
687 /* Always reject images with a mismatched build-id: */ 731 /* Always reject images with a mismatched build-id: */
688 if (dso->has_build_id) { 732 if (dso->has_build_id && !symbol_conf.ignore_vmlinux_buildid) {
689 u8 build_id[BUILD_ID_SIZE]; 733 u8 build_id[BUILD_ID_SIZE];
690 734
691 if (elf_read_build_id(elf, build_id, BUILD_ID_SIZE) < 0) { 735 if (elf_read_build_id(elf, build_id, BUILD_ID_SIZE) < 0) {
@@ -775,17 +819,11 @@ static u64 ref_reloc(struct kmap *kmap)
775 return 0; 819 return 0;
776} 820}
777 821
778static bool want_demangle(bool is_kernel_sym)
779{
780 return is_kernel_sym ? symbol_conf.demangle_kernel : symbol_conf.demangle;
781}
782
783void __weak arch__sym_update(struct symbol *s __maybe_unused, 822void __weak arch__sym_update(struct symbol *s __maybe_unused,
784 GElf_Sym *sym __maybe_unused) { } 823 GElf_Sym *sym __maybe_unused) { }
785 824
786int dso__load_sym(struct dso *dso, struct map *map, 825int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss,
787 struct symsrc *syms_ss, struct symsrc *runtime_ss, 826 struct symsrc *runtime_ss, int kmodule)
788 symbol_filter_t filter, int kmodule)
789{ 827{
790 struct kmap *kmap = dso->kernel ? map__kmap(map) : NULL; 828 struct kmap *kmap = dso->kernel ? map__kmap(map) : NULL;
791 struct map_groups *kmaps = kmap ? map__kmaps(map) : NULL; 829 struct map_groups *kmaps = kmap ? map__kmaps(map) : NULL;
@@ -1070,29 +1108,10 @@ int dso__load_sym(struct dso *dso, struct map *map,
1070 sym.st_value -= shdr.sh_addr - shdr.sh_offset; 1108 sym.st_value -= shdr.sh_addr - shdr.sh_offset;
1071 } 1109 }
1072new_symbol: 1110new_symbol:
1073 /* 1111 demangled = demangle_sym(dso, kmodule, elf_name);
1074 * We need to figure out if the object was created from C++ sources 1112 if (demangled != NULL)
1075 * DWARF DW_compile_unit has this, but we don't always have access 1113 elf_name = demangled;
1076 * to it...
1077 */
1078 if (want_demangle(dso->kernel || kmodule)) {
1079 int demangle_flags = DMGL_NO_OPTS;
1080 if (verbose)
1081 demangle_flags = DMGL_PARAMS | DMGL_ANSI;
1082
1083 demangled = bfd_demangle(NULL, elf_name, demangle_flags);
1084 if (demangled == NULL)
1085 demangled = java_demangle_sym(elf_name, JAVA_DEMANGLE_NORET);
1086 else if (rust_is_mangled(demangled))
1087 /*
1088 * Input to Rust demangling is the BFD-demangled
1089 * name which it Rust-demangles in place.
1090 */
1091 rust_demangle_sym(demangled);
1092 1114
1093 if (demangled != NULL)
1094 elf_name = demangled;
1095 }
1096 f = symbol__new(sym.st_value, sym.st_size, 1115 f = symbol__new(sym.st_value, sym.st_size,
1097 GELF_ST_BIND(sym.st_info), elf_name); 1116 GELF_ST_BIND(sym.st_info), elf_name);
1098 free(demangled); 1117 free(demangled);
@@ -1101,21 +1120,16 @@ new_symbol:
1101 1120
1102 arch__sym_update(f, &sym); 1121 arch__sym_update(f, &sym);
1103 1122
1104 if (filter && filter(curr_map, f)) 1123 __symbols__insert(&curr_dso->symbols[curr_map->type], f, dso->kernel);
1105 symbol__delete(f); 1124 nr++;
1106 else {
1107 symbols__insert(&curr_dso->symbols[curr_map->type], f);
1108 nr++;
1109 }
1110 } 1125 }
1111 1126
1112 /* 1127 /*
1113 * For misannotated, zeroed, ASM function sizes. 1128 * For misannotated, zeroed, ASM function sizes.
1114 */ 1129 */
1115 if (nr > 0) { 1130 if (nr > 0) {
1116 if (!symbol_conf.allow_aliases)
1117 symbols__fixup_duplicate(&dso->symbols[map->type]);
1118 symbols__fixup_end(&dso->symbols[map->type]); 1131 symbols__fixup_end(&dso->symbols[map->type]);
1132 symbols__fixup_duplicate(&dso->symbols[map->type]);
1119 if (kmap) { 1133 if (kmap) {
1120 /* 1134 /*
1121 * We need to fixup this here too because we create new 1135 * We need to fixup this here too because we create new
diff --git a/tools/perf/util/symbol-minimal.c b/tools/perf/util/symbol-minimal.c
index 48906333a858..11cdde980545 100644
--- a/tools/perf/util/symbol-minimal.c
+++ b/tools/perf/util/symbol-minimal.c
@@ -287,8 +287,7 @@ void symsrc__destroy(struct symsrc *ss)
287 287
288int dso__synthesize_plt_symbols(struct dso *dso __maybe_unused, 288int dso__synthesize_plt_symbols(struct dso *dso __maybe_unused,
289 struct symsrc *ss __maybe_unused, 289 struct symsrc *ss __maybe_unused,
290 struct map *map __maybe_unused, 290 struct map *map __maybe_unused)
291 symbol_filter_t filter __maybe_unused)
292{ 291{
293 return 0; 292 return 0;
294} 293}
@@ -334,7 +333,6 @@ enum dso_type dso__type_fd(int fd)
334int dso__load_sym(struct dso *dso, struct map *map __maybe_unused, 333int dso__load_sym(struct dso *dso, struct map *map __maybe_unused,
335 struct symsrc *ss, 334 struct symsrc *ss,
336 struct symsrc *runtime_ss __maybe_unused, 335 struct symsrc *runtime_ss __maybe_unused,
337 symbol_filter_t filter __maybe_unused,
338 int kmodule __maybe_unused) 336 int kmodule __maybe_unused)
339{ 337{
340 unsigned char build_id[BUILD_ID_SIZE]; 338 unsigned char build_id[BUILD_ID_SIZE];
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 37e8d20ae03e..dc93940de351 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -9,6 +9,7 @@
9#include <fcntl.h> 9#include <fcntl.h>
10#include <unistd.h> 10#include <unistd.h>
11#include <inttypes.h> 11#include <inttypes.h>
12#include "annotate.h"
12#include "build-id.h" 13#include "build-id.h"
13#include "util.h" 14#include "util.h"
14#include "debug.h" 15#include "debug.h"
@@ -23,10 +24,10 @@
23#include <symbol/kallsyms.h> 24#include <symbol/kallsyms.h>
24#include <sys/utsname.h> 25#include <sys/utsname.h>
25 26
26static int dso__load_kernel_sym(struct dso *dso, struct map *map, 27static int dso__load_kernel_sym(struct dso *dso, struct map *map);
27 symbol_filter_t filter); 28static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map);
28static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map, 29static bool symbol__is_idle(const char *name);
29 symbol_filter_t filter); 30
30int vmlinux_path__nr_entries; 31int vmlinux_path__nr_entries;
31char **vmlinux_path; 32char **vmlinux_path;
32 33
@@ -152,6 +153,9 @@ void symbols__fixup_duplicate(struct rb_root *symbols)
152 struct rb_node *nd; 153 struct rb_node *nd;
153 struct symbol *curr, *next; 154 struct symbol *curr, *next;
154 155
156 if (symbol_conf.allow_aliases)
157 return;
158
155 nd = rb_first(symbols); 159 nd = rb_first(symbols);
156 160
157 while (nd) { 161 while (nd) {
@@ -235,8 +239,13 @@ struct symbol *symbol__new(u64 start, u64 len, u8 binding, const char *name)
235 if (sym == NULL) 239 if (sym == NULL)
236 return NULL; 240 return NULL;
237 241
238 if (symbol_conf.priv_size) 242 if (symbol_conf.priv_size) {
243 if (symbol_conf.init_annotation) {
244 struct annotation *notes = (void *)sym;
245 pthread_mutex_init(&notes->lock, NULL);
246 }
239 sym = ((void *)sym) + symbol_conf.priv_size; 247 sym = ((void *)sym) + symbol_conf.priv_size;
248 }
240 249
241 sym->start = start; 250 sym->start = start;
242 sym->end = len ? start + len : start; 251 sym->end = len ? start + len : start;
@@ -268,13 +277,24 @@ void symbols__delete(struct rb_root *symbols)
268 } 277 }
269} 278}
270 279
271void symbols__insert(struct rb_root *symbols, struct symbol *sym) 280void __symbols__insert(struct rb_root *symbols, struct symbol *sym, bool kernel)
272{ 281{
273 struct rb_node **p = &symbols->rb_node; 282 struct rb_node **p = &symbols->rb_node;
274 struct rb_node *parent = NULL; 283 struct rb_node *parent = NULL;
275 const u64 ip = sym->start; 284 const u64 ip = sym->start;
276 struct symbol *s; 285 struct symbol *s;
277 286
287 if (kernel) {
288 const char *name = sym->name;
289 /*
290 * ppc64 uses function descriptors and appends a '.' to the
291 * start of every instruction address. Remove it.
292 */
293 if (name[0] == '.')
294 name++;
295 sym->idle = symbol__is_idle(name);
296 }
297
278 while (*p != NULL) { 298 while (*p != NULL) {
279 parent = *p; 299 parent = *p;
280 s = rb_entry(parent, struct symbol, rb_node); 300 s = rb_entry(parent, struct symbol, rb_node);
@@ -287,6 +307,11 @@ void symbols__insert(struct rb_root *symbols, struct symbol *sym)
287 rb_insert_color(&sym->rb_node, symbols); 307 rb_insert_color(&sym->rb_node, symbols);
288} 308}
289 309
310void symbols__insert(struct rb_root *symbols, struct symbol *sym)
311{
312 __symbols__insert(symbols, sym, false);
313}
314
290static struct symbol *symbols__find(struct rb_root *symbols, u64 ip) 315static struct symbol *symbols__find(struct rb_root *symbols, u64 ip)
291{ 316{
292 struct rb_node *n; 317 struct rb_node *n;
@@ -320,6 +345,16 @@ static struct symbol *symbols__first(struct rb_root *symbols)
320 return NULL; 345 return NULL;
321} 346}
322 347
348static struct symbol *symbols__last(struct rb_root *symbols)
349{
350 struct rb_node *n = rb_last(symbols);
351
352 if (n)
353 return rb_entry(n, struct symbol, rb_node);
354
355 return NULL;
356}
357
323static struct symbol *symbols__next(struct symbol *sym) 358static struct symbol *symbols__next(struct symbol *sym)
324{ 359{
325 struct rb_node *n = rb_next(&sym->rb_node); 360 struct rb_node *n = rb_next(&sym->rb_node);
@@ -415,7 +450,7 @@ void dso__reset_find_symbol_cache(struct dso *dso)
415 450
416void dso__insert_symbol(struct dso *dso, enum map_type type, struct symbol *sym) 451void dso__insert_symbol(struct dso *dso, enum map_type type, struct symbol *sym)
417{ 452{
418 symbols__insert(&dso->symbols[type], sym); 453 __symbols__insert(&dso->symbols[type], sym, dso->kernel);
419 454
420 /* update the symbol cache if necessary */ 455 /* update the symbol cache if necessary */
421 if (dso->last_find_result[type].addr >= sym->start && 456 if (dso->last_find_result[type].addr >= sym->start &&
@@ -441,6 +476,11 @@ struct symbol *dso__first_symbol(struct dso *dso, enum map_type type)
441 return symbols__first(&dso->symbols[type]); 476 return symbols__first(&dso->symbols[type]);
442} 477}
443 478
479struct symbol *dso__last_symbol(struct dso *dso, enum map_type type)
480{
481 return symbols__last(&dso->symbols[type]);
482}
483
444struct symbol *dso__next_symbol(struct symbol *sym) 484struct symbol *dso__next_symbol(struct symbol *sym)
445{ 485{
446 return symbols__next(sym); 486 return symbols__next(sym);
@@ -537,7 +577,7 @@ struct process_kallsyms_args {
537 * These are symbols in the kernel image, so make sure that 577 * These are symbols in the kernel image, so make sure that
538 * sym is from a kernel DSO. 578 * sym is from a kernel DSO.
539 */ 579 */
540bool symbol__is_idle(struct symbol *sym) 580static bool symbol__is_idle(const char *name)
541{ 581{
542 const char * const idle_symbols[] = { 582 const char * const idle_symbols[] = {
543 "cpu_idle", 583 "cpu_idle",
@@ -554,14 +594,10 @@ bool symbol__is_idle(struct symbol *sym)
554 "pseries_dedicated_idle_sleep", 594 "pseries_dedicated_idle_sleep",
555 NULL 595 NULL
556 }; 596 };
557
558 int i; 597 int i;
559 598
560 if (!sym)
561 return false;
562
563 for (i = 0; idle_symbols[i]; i++) { 599 for (i = 0; idle_symbols[i]; i++) {
564 if (!strcmp(idle_symbols[i], sym->name)) 600 if (!strcmp(idle_symbols[i], name))
565 return true; 601 return true;
566 } 602 }
567 603
@@ -590,7 +626,7 @@ static int map__process_kallsym_symbol(void *arg, const char *name,
590 * We will pass the symbols to the filter later, in 626 * We will pass the symbols to the filter later, in
591 * map__split_kallsyms, when we have split the maps per module 627 * map__split_kallsyms, when we have split the maps per module
592 */ 628 */
593 symbols__insert(root, sym); 629 __symbols__insert(root, sym, !strchr(name, '['));
594 630
595 return 0; 631 return 0;
596} 632}
@@ -607,8 +643,7 @@ static int dso__load_all_kallsyms(struct dso *dso, const char *filename,
607 return kallsyms__parse(filename, &args, map__process_kallsym_symbol); 643 return kallsyms__parse(filename, &args, map__process_kallsym_symbol);
608} 644}
609 645
610static int dso__split_kallsyms_for_kcore(struct dso *dso, struct map *map, 646static int dso__split_kallsyms_for_kcore(struct dso *dso, struct map *map)
611 symbol_filter_t filter)
612{ 647{
613 struct map_groups *kmaps = map__kmaps(map); 648 struct map_groups *kmaps = map__kmaps(map);
614 struct map *curr_map; 649 struct map *curr_map;
@@ -637,7 +672,7 @@ static int dso__split_kallsyms_for_kcore(struct dso *dso, struct map *map,
637 672
638 curr_map = map_groups__find(kmaps, map->type, pos->start); 673 curr_map = map_groups__find(kmaps, map->type, pos->start);
639 674
640 if (!curr_map || (filter && filter(curr_map, pos))) { 675 if (!curr_map) {
641 symbol__delete(pos); 676 symbol__delete(pos);
642 continue; 677 continue;
643 } 678 }
@@ -660,8 +695,7 @@ static int dso__split_kallsyms_for_kcore(struct dso *dso, struct map *map,
660 * kernel range is broken in several maps, named [kernel].N, as we don't have 695 * kernel range is broken in several maps, named [kernel].N, as we don't have
661 * the original ELF section names vmlinux have. 696 * the original ELF section names vmlinux have.
662 */ 697 */
663static int dso__split_kallsyms(struct dso *dso, struct map *map, u64 delta, 698static int dso__split_kallsyms(struct dso *dso, struct map *map, u64 delta)
664 symbol_filter_t filter)
665{ 699{
666 struct map_groups *kmaps = map__kmaps(map); 700 struct map_groups *kmaps = map__kmaps(map);
667 struct machine *machine; 701 struct machine *machine;
@@ -738,7 +772,7 @@ static int dso__split_kallsyms(struct dso *dso, struct map *map, u64 delta,
738 772
739 if (count == 0) { 773 if (count == 0) {
740 curr_map = map; 774 curr_map = map;
741 goto filter_symbol; 775 goto add_symbol;
742 } 776 }
743 777
744 if (dso->kernel == DSO_TYPE_GUEST_KERNEL) 778 if (dso->kernel == DSO_TYPE_GUEST_KERNEL)
@@ -770,18 +804,18 @@ static int dso__split_kallsyms(struct dso *dso, struct map *map, u64 delta,
770 pos->start -= delta; 804 pos->start -= delta;
771 pos->end -= delta; 805 pos->end -= delta;
772 } 806 }
773filter_symbol: 807add_symbol:
774 if (filter && filter(curr_map, pos)) { 808 if (curr_map != map) {
775discard_symbol: rb_erase(&pos->rb_node, root); 809 rb_erase(&pos->rb_node, root);
776 symbol__delete(pos); 810 symbols__insert(&curr_map->dso->symbols[curr_map->type], pos);
777 } else { 811 ++moved;
778 if (curr_map != map) { 812 } else
779 rb_erase(&pos->rb_node, root); 813 ++count;
780 symbols__insert(&curr_map->dso->symbols[curr_map->type], pos); 814
781 ++moved; 815 continue;
782 } else 816discard_symbol:
783 ++count; 817 rb_erase(&pos->rb_node, root);
784 } 818 symbol__delete(pos);
785 } 819 }
786 820
787 if (curr_map != map && 821 if (curr_map != map &&
@@ -1221,7 +1255,7 @@ static int kallsyms__delta(struct map *map, const char *filename, u64 *delta)
1221} 1255}
1222 1256
1223int __dso__load_kallsyms(struct dso *dso, const char *filename, 1257int __dso__load_kallsyms(struct dso *dso, const char *filename,
1224 struct map *map, bool no_kcore, symbol_filter_t filter) 1258 struct map *map, bool no_kcore)
1225{ 1259{
1226 u64 delta = 0; 1260 u64 delta = 0;
1227 1261
@@ -1234,8 +1268,8 @@ int __dso__load_kallsyms(struct dso *dso, const char *filename,
1234 if (kallsyms__delta(map, filename, &delta)) 1268 if (kallsyms__delta(map, filename, &delta))
1235 return -1; 1269 return -1;
1236 1270
1237 symbols__fixup_duplicate(&dso->symbols[map->type]);
1238 symbols__fixup_end(&dso->symbols[map->type]); 1271 symbols__fixup_end(&dso->symbols[map->type]);
1272 symbols__fixup_duplicate(&dso->symbols[map->type]);
1239 1273
1240 if (dso->kernel == DSO_TYPE_GUEST_KERNEL) 1274 if (dso->kernel == DSO_TYPE_GUEST_KERNEL)
1241 dso->symtab_type = DSO_BINARY_TYPE__GUEST_KALLSYMS; 1275 dso->symtab_type = DSO_BINARY_TYPE__GUEST_KALLSYMS;
@@ -1243,19 +1277,18 @@ int __dso__load_kallsyms(struct dso *dso, const char *filename,
1243 dso->symtab_type = DSO_BINARY_TYPE__KALLSYMS; 1277 dso->symtab_type = DSO_BINARY_TYPE__KALLSYMS;
1244 1278
1245 if (!no_kcore && !dso__load_kcore(dso, map, filename)) 1279 if (!no_kcore && !dso__load_kcore(dso, map, filename))
1246 return dso__split_kallsyms_for_kcore(dso, map, filter); 1280 return dso__split_kallsyms_for_kcore(dso, map);
1247 else 1281 else
1248 return dso__split_kallsyms(dso, map, delta, filter); 1282 return dso__split_kallsyms(dso, map, delta);
1249} 1283}
1250 1284
1251int dso__load_kallsyms(struct dso *dso, const char *filename, 1285int dso__load_kallsyms(struct dso *dso, const char *filename,
1252 struct map *map, symbol_filter_t filter) 1286 struct map *map)
1253{ 1287{
1254 return __dso__load_kallsyms(dso, filename, map, false, filter); 1288 return __dso__load_kallsyms(dso, filename, map, false);
1255} 1289}
1256 1290
1257static int dso__load_perf_map(struct dso *dso, struct map *map, 1291static int dso__load_perf_map(struct dso *dso, struct map *map)
1258 symbol_filter_t filter)
1259{ 1292{
1260 char *line = NULL; 1293 char *line = NULL;
1261 size_t n; 1294 size_t n;
@@ -1297,12 +1330,8 @@ static int dso__load_perf_map(struct dso *dso, struct map *map,
1297 if (sym == NULL) 1330 if (sym == NULL)
1298 goto out_delete_line; 1331 goto out_delete_line;
1299 1332
1300 if (filter && filter(map, sym)) 1333 symbols__insert(&dso->symbols[map->type], sym);
1301 symbol__delete(sym); 1334 nr_syms++;
1302 else {
1303 symbols__insert(&dso->symbols[map->type], sym);
1304 nr_syms++;
1305 }
1306 } 1335 }
1307 1336
1308 free(line); 1337 free(line);
@@ -1358,7 +1387,7 @@ static bool dso__is_compatible_symtab_type(struct dso *dso, bool kmod,
1358 } 1387 }
1359} 1388}
1360 1389
1361int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter) 1390int dso__load(struct dso *dso, struct map *map)
1362{ 1391{
1363 char *name; 1392 char *name;
1364 int ret = -1; 1393 int ret = -1;
@@ -1381,9 +1410,9 @@ int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter)
1381 1410
1382 if (dso->kernel) { 1411 if (dso->kernel) {
1383 if (dso->kernel == DSO_TYPE_KERNEL) 1412 if (dso->kernel == DSO_TYPE_KERNEL)
1384 ret = dso__load_kernel_sym(dso, map, filter); 1413 ret = dso__load_kernel_sym(dso, map);
1385 else if (dso->kernel == DSO_TYPE_GUEST_KERNEL) 1414 else if (dso->kernel == DSO_TYPE_GUEST_KERNEL)
1386 ret = dso__load_guest_kernel_sym(dso, map, filter); 1415 ret = dso__load_guest_kernel_sym(dso, map);
1387 1416
1388 goto out; 1417 goto out;
1389 } 1418 }
@@ -1407,7 +1436,7 @@ int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter)
1407 goto out; 1436 goto out;
1408 } 1437 }
1409 1438
1410 ret = dso__load_perf_map(dso, map, filter); 1439 ret = dso__load_perf_map(dso, map);
1411 dso->symtab_type = ret > 0 ? DSO_BINARY_TYPE__JAVA_JIT : 1440 dso->symtab_type = ret > 0 ? DSO_BINARY_TYPE__JAVA_JIT :
1412 DSO_BINARY_TYPE__NOT_FOUND; 1441 DSO_BINARY_TYPE__NOT_FOUND;
1413 goto out; 1442 goto out;
@@ -1430,7 +1459,8 @@ int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter)
1430 * Read the build id if possible. This is required for 1459 * Read the build id if possible. This is required for
1431 * DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work 1460 * DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work
1432 */ 1461 */
1433 if (is_regular_file(dso->long_name) && 1462 if (!dso->has_build_id &&
1463 is_regular_file(dso->long_name) &&
1434 filename__read_build_id(dso->long_name, build_id, BUILD_ID_SIZE) > 0) 1464 filename__read_build_id(dso->long_name, build_id, BUILD_ID_SIZE) > 0)
1435 dso__set_build_id(dso, build_id); 1465 dso__set_build_id(dso, build_id);
1436 1466
@@ -1498,14 +1528,14 @@ int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter)
1498 kmod = true; 1528 kmod = true;
1499 1529
1500 if (syms_ss) 1530 if (syms_ss)
1501 ret = dso__load_sym(dso, map, syms_ss, runtime_ss, filter, kmod); 1531 ret = dso__load_sym(dso, map, syms_ss, runtime_ss, kmod);
1502 else 1532 else
1503 ret = -1; 1533 ret = -1;
1504 1534
1505 if (ret > 0) { 1535 if (ret > 0) {
1506 int nr_plt; 1536 int nr_plt;
1507 1537
1508 nr_plt = dso__synthesize_plt_symbols(dso, runtime_ss, map, filter); 1538 nr_plt = dso__synthesize_plt_symbols(dso, runtime_ss, map);
1509 if (nr_plt > 0) 1539 if (nr_plt > 0)
1510 ret += nr_plt; 1540 ret += nr_plt;
1511 } 1541 }
@@ -1544,8 +1574,7 @@ out_unlock:
1544} 1574}
1545 1575
1546int dso__load_vmlinux(struct dso *dso, struct map *map, 1576int dso__load_vmlinux(struct dso *dso, struct map *map,
1547 const char *vmlinux, bool vmlinux_allocated, 1577 const char *vmlinux, bool vmlinux_allocated)
1548 symbol_filter_t filter)
1549{ 1578{
1550 int err = -1; 1579 int err = -1;
1551 struct symsrc ss; 1580 struct symsrc ss;
@@ -1565,7 +1594,7 @@ int dso__load_vmlinux(struct dso *dso, struct map *map,
1565 if (symsrc__init(&ss, dso, symfs_vmlinux, symtab_type)) 1594 if (symsrc__init(&ss, dso, symfs_vmlinux, symtab_type))
1566 return -1; 1595 return -1;
1567 1596
1568 err = dso__load_sym(dso, map, &ss, &ss, filter, 0); 1597 err = dso__load_sym(dso, map, &ss, &ss, 0);
1569 symsrc__destroy(&ss); 1598 symsrc__destroy(&ss);
1570 1599
1571 if (err > 0) { 1600 if (err > 0) {
@@ -1581,8 +1610,7 @@ int dso__load_vmlinux(struct dso *dso, struct map *map,
1581 return err; 1610 return err;
1582} 1611}
1583 1612
1584int dso__load_vmlinux_path(struct dso *dso, struct map *map, 1613int dso__load_vmlinux_path(struct dso *dso, struct map *map)
1585 symbol_filter_t filter)
1586{ 1614{
1587 int i, err = 0; 1615 int i, err = 0;
1588 char *filename = NULL; 1616 char *filename = NULL;
@@ -1591,7 +1619,7 @@ int dso__load_vmlinux_path(struct dso *dso, struct map *map,
1591 vmlinux_path__nr_entries + 1); 1619 vmlinux_path__nr_entries + 1);
1592 1620
1593 for (i = 0; i < vmlinux_path__nr_entries; ++i) { 1621 for (i = 0; i < vmlinux_path__nr_entries; ++i) {
1594 err = dso__load_vmlinux(dso, map, vmlinux_path[i], false, filter); 1622 err = dso__load_vmlinux(dso, map, vmlinux_path[i], false);
1595 if (err > 0) 1623 if (err > 0)
1596 goto out; 1624 goto out;
1597 } 1625 }
@@ -1599,7 +1627,7 @@ int dso__load_vmlinux_path(struct dso *dso, struct map *map,
1599 if (!symbol_conf.ignore_vmlinux_buildid) 1627 if (!symbol_conf.ignore_vmlinux_buildid)
1600 filename = dso__build_id_filename(dso, NULL, 0); 1628 filename = dso__build_id_filename(dso, NULL, 0);
1601 if (filename != NULL) { 1629 if (filename != NULL) {
1602 err = dso__load_vmlinux(dso, map, filename, true, filter); 1630 err = dso__load_vmlinux(dso, map, filename, true);
1603 if (err > 0) 1631 if (err > 0)
1604 goto out; 1632 goto out;
1605 free(filename); 1633 free(filename);
@@ -1713,8 +1741,7 @@ proc_kallsyms:
1713 return strdup(path); 1741 return strdup(path);
1714} 1742}
1715 1743
1716static int dso__load_kernel_sym(struct dso *dso, struct map *map, 1744static int dso__load_kernel_sym(struct dso *dso, struct map *map)
1717 symbol_filter_t filter)
1718{ 1745{
1719 int err; 1746 int err;
1720 const char *kallsyms_filename = NULL; 1747 const char *kallsyms_filename = NULL;
@@ -1740,12 +1767,11 @@ static int dso__load_kernel_sym(struct dso *dso, struct map *map,
1740 } 1767 }
1741 1768
1742 if (!symbol_conf.ignore_vmlinux && symbol_conf.vmlinux_name != NULL) { 1769 if (!symbol_conf.ignore_vmlinux && symbol_conf.vmlinux_name != NULL) {
1743 return dso__load_vmlinux(dso, map, symbol_conf.vmlinux_name, 1770 return dso__load_vmlinux(dso, map, symbol_conf.vmlinux_name, false);
1744 false, filter);
1745 } 1771 }
1746 1772
1747 if (!symbol_conf.ignore_vmlinux && vmlinux_path != NULL) { 1773 if (!symbol_conf.ignore_vmlinux && vmlinux_path != NULL) {
1748 err = dso__load_vmlinux_path(dso, map, filter); 1774 err = dso__load_vmlinux_path(dso, map);
1749 if (err > 0) 1775 if (err > 0)
1750 return err; 1776 return err;
1751 } 1777 }
@@ -1761,7 +1787,7 @@ static int dso__load_kernel_sym(struct dso *dso, struct map *map,
1761 kallsyms_filename = kallsyms_allocated_filename; 1787 kallsyms_filename = kallsyms_allocated_filename;
1762 1788
1763do_kallsyms: 1789do_kallsyms:
1764 err = dso__load_kallsyms(dso, kallsyms_filename, map, filter); 1790 err = dso__load_kallsyms(dso, kallsyms_filename, map);
1765 if (err > 0) 1791 if (err > 0)
1766 pr_debug("Using %s for symbols\n", kallsyms_filename); 1792 pr_debug("Using %s for symbols\n", kallsyms_filename);
1767 free(kallsyms_allocated_filename); 1793 free(kallsyms_allocated_filename);
@@ -1776,8 +1802,7 @@ do_kallsyms:
1776 return err; 1802 return err;
1777} 1803}
1778 1804
1779static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map, 1805static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map)
1780 symbol_filter_t filter)
1781{ 1806{
1782 int err; 1807 int err;
1783 const char *kallsyms_filename = NULL; 1808 const char *kallsyms_filename = NULL;
@@ -1799,7 +1824,7 @@ static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map,
1799 if (symbol_conf.default_guest_vmlinux_name != NULL) { 1824 if (symbol_conf.default_guest_vmlinux_name != NULL) {
1800 err = dso__load_vmlinux(dso, map, 1825 err = dso__load_vmlinux(dso, map,
1801 symbol_conf.default_guest_vmlinux_name, 1826 symbol_conf.default_guest_vmlinux_name,
1802 false, filter); 1827 false);
1803 return err; 1828 return err;
1804 } 1829 }
1805 1830
@@ -1811,7 +1836,7 @@ static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map,
1811 kallsyms_filename = path; 1836 kallsyms_filename = path;
1812 } 1837 }
1813 1838
1814 err = dso__load_kallsyms(dso, kallsyms_filename, map, filter); 1839 err = dso__load_kallsyms(dso, kallsyms_filename, map);
1815 if (err > 0) 1840 if (err > 0)
1816 pr_debug("Using %s for symbols\n", kallsyms_filename); 1841 pr_debug("Using %s for symbols\n", kallsyms_filename);
1817 if (err > 0 && !dso__is_kcore(dso)) { 1842 if (err > 0 && !dso__is_kcore(dso)) {
@@ -1938,7 +1963,7 @@ static bool symbol__read_kptr_restrict(void)
1938 char line[8]; 1963 char line[8];
1939 1964
1940 if (fgets(line, sizeof(line), fp) != NULL) 1965 if (fgets(line, sizeof(line), fp) != NULL)
1941 value = (geteuid() != 0) ? 1966 value = ((geteuid() != 0) || (getuid() != 0)) ?
1942 (atoi(line) != 0) : 1967 (atoi(line) != 0) :
1943 (atoi(line) == 2); 1968 (atoi(line) == 2);
1944 1969
@@ -1948,6 +1973,23 @@ static bool symbol__read_kptr_restrict(void)
1948 return value; 1973 return value;
1949} 1974}
1950 1975
1976int symbol__annotation_init(void)
1977{
1978 if (symbol_conf.initialized) {
1979 pr_err("Annotation needs to be init before symbol__init()\n");
1980 return -1;
1981 }
1982
1983 if (symbol_conf.init_annotation) {
1984 pr_warning("Annotation being initialized multiple times\n");
1985 return 0;
1986 }
1987
1988 symbol_conf.priv_size += sizeof(struct annotation);
1989 symbol_conf.init_annotation = true;
1990 return 0;
1991}
1992
1951int symbol__init(struct perf_env *env) 1993int symbol__init(struct perf_env *env)
1952{ 1994{
1953 const char *symfs; 1995 const char *symfs;
@@ -1991,6 +2033,10 @@ int symbol__init(struct perf_env *env)
1991 symbol_conf.sym_list_str, "symbol") < 0) 2033 symbol_conf.sym_list_str, "symbol") < 0)
1992 goto out_free_tid_list; 2034 goto out_free_tid_list;
1993 2035
2036 if (setup_list(&symbol_conf.bt_stop_list,
2037 symbol_conf.bt_stop_list_str, "symbol") < 0)
2038 goto out_free_sym_list;
2039
1994 /* 2040 /*
1995 * A path to symbols of "/" is identical to "" 2041 * A path to symbols of "/" is identical to ""
1996 * reset here for simplicity. 2042 * reset here for simplicity.
@@ -2008,6 +2054,8 @@ int symbol__init(struct perf_env *env)
2008 symbol_conf.initialized = true; 2054 symbol_conf.initialized = true;
2009 return 0; 2055 return 0;
2010 2056
2057out_free_sym_list:
2058 strlist__delete(symbol_conf.sym_list);
2011out_free_tid_list: 2059out_free_tid_list:
2012 intlist__delete(symbol_conf.tid_list); 2060 intlist__delete(symbol_conf.tid_list);
2013out_free_pid_list: 2061out_free_pid_list:
@@ -2023,6 +2071,7 @@ void symbol__exit(void)
2023{ 2071{
2024 if (!symbol_conf.initialized) 2072 if (!symbol_conf.initialized)
2025 return; 2073 return;
2074 strlist__delete(symbol_conf.bt_stop_list);
2026 strlist__delete(symbol_conf.sym_list); 2075 strlist__delete(symbol_conf.sym_list);
2027 strlist__delete(symbol_conf.dso_list); 2076 strlist__delete(symbol_conf.dso_list);
2028 strlist__delete(symbol_conf.comm_list); 2077 strlist__delete(symbol_conf.comm_list);
@@ -2030,6 +2079,7 @@ void symbol__exit(void)
2030 intlist__delete(symbol_conf.pid_list); 2079 intlist__delete(symbol_conf.pid_list);
2031 vmlinux_path__exit(); 2080 vmlinux_path__exit();
2032 symbol_conf.sym_list = symbol_conf.dso_list = symbol_conf.comm_list = NULL; 2081 symbol_conf.sym_list = symbol_conf.dso_list = symbol_conf.comm_list = NULL;
2082 symbol_conf.bt_stop_list = NULL;
2033 symbol_conf.initialized = false; 2083 symbol_conf.initialized = false;
2034} 2084}
2035 2085
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 699f7cbcfe72..6c358b7ed336 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -57,7 +57,8 @@ struct symbol {
57 u64 end; 57 u64 end;
58 u16 namelen; 58 u16 namelen;
59 u8 binding; 59 u8 binding;
60 bool ignore; 60 u8 idle:1;
61 u8 ignore:1;
61 u8 arch_sym; 62 u8 arch_sym;
62 char name[0]; 63 char name[0];
63}; 64};
@@ -88,6 +89,7 @@ struct symbol_conf {
88 unsigned short priv_size; 89 unsigned short priv_size;
89 unsigned short nr_events; 90 unsigned short nr_events;
90 bool try_vmlinux_path, 91 bool try_vmlinux_path,
92 init_annotation,
91 force, 93 force,
92 ignore_vmlinux, 94 ignore_vmlinux,
93 ignore_vmlinux_buildid, 95 ignore_vmlinux_buildid,
@@ -99,6 +101,7 @@ struct symbol_conf {
99 show_total_period, 101 show_total_period,
100 use_callchain, 102 use_callchain,
101 cumulate_callchain, 103 cumulate_callchain,
104 show_branchflag_count,
102 exclude_other, 105 exclude_other,
103 show_cpu_utilization, 106 show_cpu_utilization,
104 initialized, 107 initialized,
@@ -129,14 +132,16 @@ struct symbol_conf {
129 *pid_list_str, 132 *pid_list_str,
130 *tid_list_str, 133 *tid_list_str,
131 *sym_list_str, 134 *sym_list_str,
132 *col_width_list_str; 135 *col_width_list_str,
136 *bt_stop_list_str;
133 struct strlist *dso_list, 137 struct strlist *dso_list,
134 *comm_list, 138 *comm_list,
135 *sym_list, 139 *sym_list,
136 *dso_from_list, 140 *dso_from_list,
137 *dso_to_list, 141 *dso_to_list,
138 *sym_from_list, 142 *sym_from_list,
139 *sym_to_list; 143 *sym_to_list,
144 *bt_stop_list;
140 struct intlist *pid_list, 145 struct intlist *pid_list,
141 *tid_list; 146 *tid_list;
142 const char *symfs; 147 const char *symfs;
@@ -240,16 +245,13 @@ int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name,
240bool symsrc__has_symtab(struct symsrc *ss); 245bool symsrc__has_symtab(struct symsrc *ss);
241bool symsrc__possibly_runtime(struct symsrc *ss); 246bool symsrc__possibly_runtime(struct symsrc *ss);
242 247
243int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter); 248int dso__load(struct dso *dso, struct map *map);
244int dso__load_vmlinux(struct dso *dso, struct map *map, 249int dso__load_vmlinux(struct dso *dso, struct map *map,
245 const char *vmlinux, bool vmlinux_allocated, 250 const char *vmlinux, bool vmlinux_allocated);
246 symbol_filter_t filter); 251int dso__load_vmlinux_path(struct dso *dso, struct map *map);
247int dso__load_vmlinux_path(struct dso *dso, struct map *map,
248 symbol_filter_t filter);
249int __dso__load_kallsyms(struct dso *dso, const char *filename, struct map *map, 252int __dso__load_kallsyms(struct dso *dso, const char *filename, struct map *map,
250 bool no_kcore, symbol_filter_t filter); 253 bool no_kcore);
251int dso__load_kallsyms(struct dso *dso, const char *filename, struct map *map, 254int dso__load_kallsyms(struct dso *dso, const char *filename, struct map *map);
252 symbol_filter_t filter);
253 255
254void dso__insert_symbol(struct dso *dso, enum map_type type, 256void dso__insert_symbol(struct dso *dso, enum map_type type,
255 struct symbol *sym); 257 struct symbol *sym);
@@ -261,6 +263,7 @@ struct symbol *dso__find_symbol_by_name(struct dso *dso, enum map_type type,
261struct symbol *symbol__next_by_name(struct symbol *sym); 263struct symbol *symbol__next_by_name(struct symbol *sym);
262 264
263struct symbol *dso__first_symbol(struct dso *dso, enum map_type type); 265struct symbol *dso__first_symbol(struct dso *dso, enum map_type type);
266struct symbol *dso__last_symbol(struct dso *dso, enum map_type type);
264struct symbol *dso__next_symbol(struct symbol *sym); 267struct symbol *dso__next_symbol(struct symbol *sym);
265 268
266enum dso_type dso__type_fd(int fd); 269enum dso_type dso__type_fd(int fd);
@@ -277,10 +280,13 @@ struct perf_env;
277int symbol__init(struct perf_env *env); 280int symbol__init(struct perf_env *env);
278void symbol__exit(void); 281void symbol__exit(void);
279void symbol__elf_init(void); 282void symbol__elf_init(void);
283int symbol__annotation_init(void);
284
280struct symbol *symbol__new(u64 start, u64 len, u8 binding, const char *name); 285struct symbol *symbol__new(u64 start, u64 len, u8 binding, const char *name);
281size_t __symbol__fprintf_symname_offs(const struct symbol *sym, 286size_t __symbol__fprintf_symname_offs(const struct symbol *sym,
282 const struct addr_location *al, 287 const struct addr_location *al,
283 bool unknown_as_addr, FILE *fp); 288 bool unknown_as_addr,
289 bool print_offsets, FILE *fp);
284size_t symbol__fprintf_symname_offs(const struct symbol *sym, 290size_t symbol__fprintf_symname_offs(const struct symbol *sym,
285 const struct addr_location *al, FILE *fp); 291 const struct addr_location *al, FILE *fp);
286size_t __symbol__fprintf_symname(const struct symbol *sym, 292size_t __symbol__fprintf_symname(const struct symbol *sym,
@@ -291,16 +297,15 @@ size_t symbol__fprintf(struct symbol *sym, FILE *fp);
291bool symbol_type__is_a(char symbol_type, enum map_type map_type); 297bool symbol_type__is_a(char symbol_type, enum map_type map_type);
292bool symbol__restricted_filename(const char *filename, 298bool symbol__restricted_filename(const char *filename,
293 const char *restricted_filename); 299 const char *restricted_filename);
294bool symbol__is_idle(struct symbol *sym);
295int symbol__config_symfs(const struct option *opt __maybe_unused, 300int symbol__config_symfs(const struct option *opt __maybe_unused,
296 const char *dir, int unset __maybe_unused); 301 const char *dir, int unset __maybe_unused);
297 302
298int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss, 303int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss,
299 struct symsrc *runtime_ss, symbol_filter_t filter, 304 struct symsrc *runtime_ss, int kmodule);
300 int kmodule);
301int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss, 305int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss,
302 struct map *map, symbol_filter_t filter); 306 struct map *map);
303 307
308void __symbols__insert(struct rb_root *symbols, struct symbol *sym, bool kernel);
304void symbols__insert(struct rb_root *symbols, struct symbol *sym); 309void symbols__insert(struct rb_root *symbols, struct symbol *sym);
305void symbols__fixup_duplicate(struct rb_root *symbols); 310void symbols__fixup_duplicate(struct rb_root *symbols);
306void symbols__fixup_end(struct rb_root *symbols); 311void symbols__fixup_end(struct rb_root *symbols);
diff --git a/tools/perf/util/symbol_fprintf.c b/tools/perf/util/symbol_fprintf.c
index a680bdaa65dc..7c6b33e8e2d2 100644
--- a/tools/perf/util/symbol_fprintf.c
+++ b/tools/perf/util/symbol_fprintf.c
@@ -15,14 +15,15 @@ size_t symbol__fprintf(struct symbol *sym, FILE *fp)
15 15
16size_t __symbol__fprintf_symname_offs(const struct symbol *sym, 16size_t __symbol__fprintf_symname_offs(const struct symbol *sym,
17 const struct addr_location *al, 17 const struct addr_location *al,
18 bool unknown_as_addr, FILE *fp) 18 bool unknown_as_addr,
19 bool print_offsets, FILE *fp)
19{ 20{
20 unsigned long offset; 21 unsigned long offset;
21 size_t length; 22 size_t length;
22 23
23 if (sym && sym->name) { 24 if (sym && sym->name) {
24 length = fprintf(fp, "%s", sym->name); 25 length = fprintf(fp, "%s", sym->name);
25 if (al) { 26 if (al && print_offsets) {
26 if (al->addr < sym->end) 27 if (al->addr < sym->end)
27 offset = al->addr - sym->start; 28 offset = al->addr - sym->start;
28 else 29 else
@@ -40,19 +41,19 @@ size_t symbol__fprintf_symname_offs(const struct symbol *sym,
40 const struct addr_location *al, 41 const struct addr_location *al,
41 FILE *fp) 42 FILE *fp)
42{ 43{
43 return __symbol__fprintf_symname_offs(sym, al, false, fp); 44 return __symbol__fprintf_symname_offs(sym, al, false, true, fp);
44} 45}
45 46
46size_t __symbol__fprintf_symname(const struct symbol *sym, 47size_t __symbol__fprintf_symname(const struct symbol *sym,
47 const struct addr_location *al, 48 const struct addr_location *al,
48 bool unknown_as_addr, FILE *fp) 49 bool unknown_as_addr, FILE *fp)
49{ 50{
50 return __symbol__fprintf_symname_offs(sym, al, unknown_as_addr, fp); 51 return __symbol__fprintf_symname_offs(sym, al, unknown_as_addr, false, fp);
51} 52}
52 53
53size_t symbol__fprintf_symname(const struct symbol *sym, FILE *fp) 54size_t symbol__fprintf_symname(const struct symbol *sym, FILE *fp)
54{ 55{
55 return __symbol__fprintf_symname_offs(sym, NULL, false, fp); 56 return __symbol__fprintf_symname_offs(sym, NULL, false, false, fp);
56} 57}
57 58
58size_t dso__fprintf_symbols_by_name(struct dso *dso, 59size_t dso__fprintf_symbols_by_name(struct dso *dso,
diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c
index 8b10a55410a2..f5af87f66663 100644
--- a/tools/perf/util/thread.c
+++ b/tools/perf/util/thread.c
@@ -14,13 +14,12 @@
14 14
15int thread__init_map_groups(struct thread *thread, struct machine *machine) 15int thread__init_map_groups(struct thread *thread, struct machine *machine)
16{ 16{
17 struct thread *leader;
18 pid_t pid = thread->pid_; 17 pid_t pid = thread->pid_;
19 18
20 if (pid == thread->tid || pid == -1) { 19 if (pid == thread->tid || pid == -1) {
21 thread->mg = map_groups__new(machine); 20 thread->mg = map_groups__new(machine);
22 } else { 21 } else {
23 leader = __machine__findnew_thread(machine, pid, pid); 22 struct thread *leader = __machine__findnew_thread(machine, pid, pid);
24 if (leader) { 23 if (leader) {
25 thread->mg = map_groups__get(leader->mg); 24 thread->mg = map_groups__get(leader->mg);
26 thread__put(leader); 25 thread__put(leader);
@@ -130,11 +129,10 @@ int __thread__set_comm(struct thread *thread, const char *str, u64 timestamp,
130 bool exec) 129 bool exec)
131{ 130{
132 struct comm *new, *curr = thread__comm(thread); 131 struct comm *new, *curr = thread__comm(thread);
133 int err;
134 132
135 /* Override the default :tid entry */ 133 /* Override the default :tid entry */
136 if (!thread->comm_set) { 134 if (!thread->comm_set) {
137 err = comm__override(curr, str, timestamp, exec); 135 int err = comm__override(curr, str, timestamp, exec);
138 if (err) 136 if (err)
139 return err; 137 return err;
140 } else { 138 } else {
@@ -270,10 +268,9 @@ static int thread__clone_map_groups(struct thread *thread,
270 268
271int thread__fork(struct thread *thread, struct thread *parent, u64 timestamp) 269int thread__fork(struct thread *thread, struct thread *parent, u64 timestamp)
272{ 270{
273 int err;
274
275 if (parent->comm_set) { 271 if (parent->comm_set) {
276 const char *comm = thread__comm_str(parent); 272 const char *comm = thread__comm_str(parent);
273 int err;
277 if (!comm) 274 if (!comm)
278 return -ENOMEM; 275 return -ENOMEM;
279 err = thread__set_comm(thread, comm, timestamp); 276 err = thread__set_comm(thread, comm, timestamp);
diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c
index 40585f5b7027..f9eab200fd75 100644
--- a/tools/perf/util/thread_map.c
+++ b/tools/perf/util/thread_map.c
@@ -448,3 +448,25 @@ bool thread_map__has(struct thread_map *threads, pid_t pid)
448 448
449 return false; 449 return false;
450} 450}
451
452int thread_map__remove(struct thread_map *threads, int idx)
453{
454 int i;
455
456 if (threads->nr < 1)
457 return -EINVAL;
458
459 if (idx >= threads->nr)
460 return -EINVAL;
461
462 /*
463 * Free the 'idx' item and shift the rest up.
464 */
465 free(threads->map[idx].comm);
466
467 for (i = idx; i < threads->nr - 1; i++)
468 threads->map[i] = threads->map[i + 1];
469
470 threads->nr--;
471 return 0;
472}
diff --git a/tools/perf/util/thread_map.h b/tools/perf/util/thread_map.h
index bd3b971588da..ea0ef08c6303 100644
--- a/tools/perf/util/thread_map.h
+++ b/tools/perf/util/thread_map.h
@@ -58,4 +58,5 @@ static inline char *thread_map__comm(struct thread_map *map, int thread)
58 58
59void thread_map__read_comms(struct thread_map *threads); 59void thread_map__read_comms(struct thread_map *threads);
60bool thread_map__has(struct thread_map *threads, pid_t pid); 60bool thread_map__has(struct thread_map *threads, pid_t pid);
61int thread_map__remove(struct thread_map *threads, int idx);
61#endif /* __PERF_THREAD_MAP_H */ 62#endif /* __PERF_THREAD_MAP_H */
diff --git a/tools/perf/util/time-utils.c b/tools/perf/util/time-utils.c
new file mode 100644
index 000000000000..d1b21c72206d
--- /dev/null
+++ b/tools/perf/util/time-utils.c
@@ -0,0 +1,119 @@
1#include <stdlib.h>
2#include <string.h>
3#include <sys/time.h>
4#include <linux/time64.h>
5#include <time.h>
6#include <errno.h>
7#include <inttypes.h>
8
9#include "perf.h"
10#include "debug.h"
11#include "time-utils.h"
12
13int parse_nsec_time(const char *str, u64 *ptime)
14{
15 u64 time_sec, time_nsec;
16 char *end;
17
18 time_sec = strtoul(str, &end, 10);
19 if (*end != '.' && *end != '\0')
20 return -1;
21
22 if (*end == '.') {
23 int i;
24 char nsec_buf[10];
25
26 if (strlen(++end) > 9)
27 return -1;
28
29 strncpy(nsec_buf, end, 9);
30 nsec_buf[9] = '\0';
31
32 /* make it nsec precision */
33 for (i = strlen(nsec_buf); i < 9; i++)
34 nsec_buf[i] = '0';
35
36 time_nsec = strtoul(nsec_buf, &end, 10);
37 if (*end != '\0')
38 return -1;
39 } else
40 time_nsec = 0;
41
42 *ptime = time_sec * NSEC_PER_SEC + time_nsec;
43 return 0;
44}
45
46static int parse_timestr_sec_nsec(struct perf_time_interval *ptime,
47 char *start_str, char *end_str)
48{
49 if (start_str && (*start_str != '\0') &&
50 (parse_nsec_time(start_str, &ptime->start) != 0)) {
51 return -1;
52 }
53
54 if (end_str && (*end_str != '\0') &&
55 (parse_nsec_time(end_str, &ptime->end) != 0)) {
56 return -1;
57 }
58
59 return 0;
60}
61
62int perf_time__parse_str(struct perf_time_interval *ptime, const char *ostr)
63{
64 char *start_str, *end_str;
65 char *d, *str;
66 int rc = 0;
67
68 if (ostr == NULL || *ostr == '\0')
69 return 0;
70
71 /* copy original string because we need to modify it */
72 str = strdup(ostr);
73 if (str == NULL)
74 return -ENOMEM;
75
76 ptime->start = 0;
77 ptime->end = 0;
78
79 /* str has the format: <start>,<stop>
80 * variations: <start>,
81 * ,<stop>
82 * ,
83 */
84 start_str = str;
85 d = strchr(start_str, ',');
86 if (d) {
87 *d = '\0';
88 ++d;
89 }
90 end_str = d;
91
92 rc = parse_timestr_sec_nsec(ptime, start_str, end_str);
93
94 free(str);
95
96 /* make sure end time is after start time if it was given */
97 if (rc == 0 && ptime->end && ptime->end < ptime->start)
98 return -EINVAL;
99
100 pr_debug("start time %" PRIu64 ", ", ptime->start);
101 pr_debug("end time %" PRIu64 "\n", ptime->end);
102
103 return rc;
104}
105
106bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp)
107{
108 /* if time is not set don't drop sample */
109 if (timestamp == 0)
110 return false;
111
112 /* otherwise compare sample time to time window */
113 if ((ptime->start && timestamp < ptime->start) ||
114 (ptime->end && timestamp > ptime->end)) {
115 return true;
116 }
117
118 return false;
119}
diff --git a/tools/perf/util/time-utils.h b/tools/perf/util/time-utils.h
new file mode 100644
index 000000000000..c1f197c4af6c
--- /dev/null
+++ b/tools/perf/util/time-utils.h
@@ -0,0 +1,14 @@
1#ifndef _TIME_UTILS_H_
2#define _TIME_UTILS_H_
3
4struct perf_time_interval {
5 u64 start, end;
6};
7
8int parse_nsec_time(const char *str, u64 *ptime);
9
10int perf_time__parse_str(struct perf_time_interval *ptime, const char *ostr);
11
12bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp);
13
14#endif
diff --git a/tools/perf/util/trace-event-scripting.c b/tools/perf/util/trace-event-scripting.c
index 9df61059a85d..0ac9077f62a2 100644
--- a/tools/perf/util/trace-event-scripting.c
+++ b/tools/perf/util/trace-event-scripting.c
@@ -25,6 +25,7 @@
25#include <errno.h> 25#include <errno.h>
26 26
27#include "../perf.h" 27#include "../perf.h"
28#include "debug.h"
28#include "util.h" 29#include "util.h"
29#include "trace-event.h" 30#include "trace-event.h"
30 31
@@ -86,16 +87,15 @@ struct scripting_ops python_scripting_unsupported_ops = {
86 87
87static void register_python_scripting(struct scripting_ops *scripting_ops) 88static void register_python_scripting(struct scripting_ops *scripting_ops)
88{ 89{
89 int err; 90 if (scripting_context == NULL)
90 err = script_spec_register("Python", scripting_ops); 91 scripting_context = malloc(sizeof(*scripting_context));
91 if (err) 92
92 die("error registering Python script extension"); 93 if (scripting_context == NULL ||
93 94 script_spec_register("Python", scripting_ops) ||
94 err = script_spec_register("py", scripting_ops); 95 script_spec_register("py", scripting_ops)) {
95 if (err) 96 pr_err("Error registering Python script extension: disabling it\n");
96 die("error registering py script extension"); 97 zfree(&scripting_context);
97 98 }
98 scripting_context = malloc(sizeof(struct scripting_context));
99} 99}
100 100
101#ifdef NO_LIBPYTHON 101#ifdef NO_LIBPYTHON
@@ -150,16 +150,15 @@ struct scripting_ops perl_scripting_unsupported_ops = {
150 150
151static void register_perl_scripting(struct scripting_ops *scripting_ops) 151static void register_perl_scripting(struct scripting_ops *scripting_ops)
152{ 152{
153 int err; 153 if (scripting_context == NULL)
154 err = script_spec_register("Perl", scripting_ops); 154 scripting_context = malloc(sizeof(*scripting_context));
155 if (err) 155
156 die("error registering Perl script extension"); 156 if (scripting_context == NULL ||
157 157 script_spec_register("Perl", scripting_ops) ||
158 err = script_spec_register("pl", scripting_ops); 158 script_spec_register("pl", scripting_ops)) {
159 if (err) 159 pr_err("Error registering Perl script extension: disabling it\n");
160 die("error registering pl script extension"); 160 zfree(&scripting_context);
161 161 }
162 scripting_context = malloc(sizeof(struct scripting_context));
163} 162}
164 163
165#ifdef NO_LIBPERL 164#ifdef NO_LIBPERL
diff --git a/tools/perf/util/unwind-libunwind-local.c b/tools/perf/util/unwind-libunwind-local.c
index 20c2e5743903..6fec84dff3f7 100644
--- a/tools/perf/util/unwind-libunwind-local.c
+++ b/tools/perf/util/unwind-libunwind-local.c
@@ -357,8 +357,8 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
357 di.format = UNW_INFO_FORMAT_REMOTE_TABLE; 357 di.format = UNW_INFO_FORMAT_REMOTE_TABLE;
358 di.start_ip = map->start; 358 di.start_ip = map->start;
359 di.end_ip = map->end; 359 di.end_ip = map->end;
360 di.u.rti.segbase = map->start + segbase; 360 di.u.rti.segbase = map->start + segbase - map->pgoff;
361 di.u.rti.table_data = map->start + table_data; 361 di.u.rti.table_data = map->start + table_data - map->pgoff;
362 di.u.rti.table_len = fde_count * sizeof(struct table_entry) 362 di.u.rti.table_len = fde_count * sizeof(struct table_entry)
363 / sizeof(unw_word_t); 363 / sizeof(unw_word_t);
364 ret = dwarf_search_unwind_table(as, ip, &di, pi, 364 ret = dwarf_search_unwind_table(as, ip, &di, pi,
diff --git a/tools/perf/util/util-cxx.h b/tools/perf/util/util-cxx.h
new file mode 100644
index 000000000000..0e0e019c9f34
--- /dev/null
+++ b/tools/perf/util/util-cxx.h
@@ -0,0 +1,26 @@
1/*
2 * Support C++ source use utilities defined in util.h
3 */
4
5#ifndef PERF_UTIL_UTIL_CXX_H
6#define PERF_UTIL_UTIL_CXX_H
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12/*
13 * Now 'new' is the only C++ keyword found in util.h:
14 * in tools/include/linux/rbtree.h
15 *
16 * Other keywords, like class and delete, should be
17 * redefined if necessary.
18 */
19#define new _new
20#include "util.h"
21#undef new
22
23#ifdef __cplusplus
24}
25#endif
26#endif
diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
index cee559d8c9e8..9ddd98827d12 100644
--- a/tools/perf/util/util.c
+++ b/tools/perf/util/util.c
@@ -15,6 +15,7 @@
15#include <byteswap.h> 15#include <byteswap.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/log2.h> 17#include <linux/log2.h>
18#include <linux/time64.h>
18#include <unistd.h> 19#include <unistd.h>
19#include "callchain.h" 20#include "callchain.h"
20#include "strlist.h" 21#include "strlist.h"
@@ -399,37 +400,12 @@ void sighandler_dump_stack(int sig)
399 raise(sig); 400 raise(sig);
400} 401}
401 402
402int parse_nsec_time(const char *str, u64 *ptime) 403int timestamp__scnprintf_usec(u64 timestamp, char *buf, size_t sz)
403{ 404{
404 u64 time_sec, time_nsec; 405 u64 sec = timestamp / NSEC_PER_SEC;
405 char *end; 406 u64 usec = (timestamp % NSEC_PER_SEC) / NSEC_PER_USEC;
406 407
407 time_sec = strtoul(str, &end, 10); 408 return scnprintf(buf, sz, "%"PRIu64".%06"PRIu64, sec, usec);
408 if (*end != '.' && *end != '\0')
409 return -1;
410
411 if (*end == '.') {
412 int i;
413 char nsec_buf[10];
414
415 if (strlen(++end) > 9)
416 return -1;
417
418 strncpy(nsec_buf, end, 9);
419 nsec_buf[9] = '\0';
420
421 /* make it nsec precision */
422 for (i = strlen(nsec_buf); i < 9; i++)
423 nsec_buf[i] = '0';
424
425 time_nsec = strtoul(nsec_buf, &end, 10);
426 if (*end != '\0')
427 return -1;
428 } else
429 time_nsec = 0;
430
431 *ptime = time_sec * NSEC_PER_SEC + time_nsec;
432 return 0;
433} 409}
434 410
435unsigned long parse_tag_value(const char *str, struct parse_tag *tags) 411unsigned long parse_tag_value(const char *str, struct parse_tag *tags)
@@ -628,12 +604,63 @@ bool find_process(const char *name)
628 return ret ? false : true; 604 return ret ? false : true;
629} 605}
630 606
607static int
608fetch_ubuntu_kernel_version(unsigned int *puint)
609{
610 ssize_t len;
611 size_t line_len = 0;
612 char *ptr, *line = NULL;
613 int version, patchlevel, sublevel, err;
614 FILE *vsig = fopen("/proc/version_signature", "r");
615
616 if (!vsig) {
617 pr_debug("Open /proc/version_signature failed: %s\n",
618 strerror(errno));
619 return -1;
620 }
621
622 len = getline(&line, &line_len, vsig);
623 fclose(vsig);
624 err = -1;
625 if (len <= 0) {
626 pr_debug("Reading from /proc/version_signature failed: %s\n",
627 strerror(errno));
628 goto errout;
629 }
630
631 ptr = strrchr(line, ' ');
632 if (!ptr) {
633 pr_debug("Parsing /proc/version_signature failed: %s\n", line);
634 goto errout;
635 }
636
637 err = sscanf(ptr + 1, "%d.%d.%d",
638 &version, &patchlevel, &sublevel);
639 if (err != 3) {
640 pr_debug("Unable to get kernel version from /proc/version_signature '%s'\n",
641 line);
642 goto errout;
643 }
644
645 if (puint)
646 *puint = (version << 16) + (patchlevel << 8) + sublevel;
647 err = 0;
648errout:
649 free(line);
650 return err;
651}
652
631int 653int
632fetch_kernel_version(unsigned int *puint, char *str, 654fetch_kernel_version(unsigned int *puint, char *str,
633 size_t str_size) 655 size_t str_size)
634{ 656{
635 struct utsname utsname; 657 struct utsname utsname;
636 int version, patchlevel, sublevel, err; 658 int version, patchlevel, sublevel, err;
659 bool int_ver_ready = false;
660
661 if (access("/proc/version_signature", R_OK) == 0)
662 if (!fetch_ubuntu_kernel_version(puint))
663 int_ver_ready = true;
637 664
638 if (uname(&utsname)) 665 if (uname(&utsname))
639 return -1; 666 return -1;
@@ -647,12 +674,12 @@ fetch_kernel_version(unsigned int *puint, char *str,
647 &version, &patchlevel, &sublevel); 674 &version, &patchlevel, &sublevel);
648 675
649 if (err != 3) { 676 if (err != 3) {
650 pr_debug("Unablt to get kernel version from uname '%s'\n", 677 pr_debug("Unable to get kernel version from uname '%s'\n",
651 utsname.release); 678 utsname.release);
652 return -1; 679 return -1;
653 } 680 }
654 681
655 if (puint) 682 if (puint && !int_ver_ready)
656 *puint = (version << 16) + (patchlevel << 8) + sublevel; 683 *puint = (version << 16) + (patchlevel << 8) + sublevel;
657 return 0; 684 return 0;
658} 685}
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index e5f55477491d..1d639e38aa82 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -179,12 +179,6 @@ static inline void *zalloc(size_t size)
179#undef tolower 179#undef tolower
180#undef toupper 180#undef toupper
181 181
182#ifndef NSEC_PER_MSEC
183#define NSEC_PER_MSEC 1000000L
184#endif
185
186int parse_nsec_time(const char *str, u64 *ptime);
187
188extern unsigned char sane_ctype[256]; 182extern unsigned char sane_ctype[256];
189#define GIT_SPACE 0x01 183#define GIT_SPACE 0x01
190#define GIT_DIGIT 0x02 184#define GIT_DIGIT 0x02
@@ -226,6 +220,7 @@ s64 perf_atoll(const char *str);
226char **argv_split(const char *str, int *argcp); 220char **argv_split(const char *str, int *argcp);
227void argv_free(char **argv); 221void argv_free(char **argv);
228bool strglobmatch(const char *str, const char *pat); 222bool strglobmatch(const char *str, const char *pat);
223bool strglobmatch_nocase(const char *str, const char *pat);
229bool strlazymatch(const char *str, const char *pat); 224bool strlazymatch(const char *str, const char *pat);
230static inline bool strisglob(const char *str) 225static inline bool strisglob(const char *str)
231{ 226{
@@ -365,4 +360,7 @@ extern int sched_getcpu(void);
365#endif 360#endif
366 361
367int is_printable_array(char *p, unsigned int len); 362int is_printable_array(char *p, unsigned int len);
363
364int timestamp__scnprintf_usec(u64 timestamp, char *buf, size_t sz);
365
368#endif /* GIT_COMPAT_UTIL_H */ 366#endif /* GIT_COMPAT_UTIL_H */
diff --git a/tools/perf/util/values.c b/tools/perf/util/values.c
index 0fb3c1fcd3e6..5074be4ed467 100644
--- a/tools/perf/util/values.c
+++ b/tools/perf/util/values.c
@@ -2,15 +2,18 @@
2 2
3#include "util.h" 3#include "util.h"
4#include "values.h" 4#include "values.h"
5#include "debug.h"
5 6
6void perf_read_values_init(struct perf_read_values *values) 7int perf_read_values_init(struct perf_read_values *values)
7{ 8{
8 values->threads_max = 16; 9 values->threads_max = 16;
9 values->pid = malloc(values->threads_max * sizeof(*values->pid)); 10 values->pid = malloc(values->threads_max * sizeof(*values->pid));
10 values->tid = malloc(values->threads_max * sizeof(*values->tid)); 11 values->tid = malloc(values->threads_max * sizeof(*values->tid));
11 values->value = malloc(values->threads_max * sizeof(*values->value)); 12 values->value = malloc(values->threads_max * sizeof(*values->value));
12 if (!values->pid || !values->tid || !values->value) 13 if (!values->pid || !values->tid || !values->value) {
13 die("failed to allocate read_values threads arrays"); 14 pr_debug("failed to allocate read_values threads arrays");
15 goto out_free_pid;
16 }
14 values->threads = 0; 17 values->threads = 0;
15 18
16 values->counters_max = 16; 19 values->counters_max = 16;
@@ -18,9 +21,22 @@ void perf_read_values_init(struct perf_read_values *values)
18 * sizeof(*values->counterrawid)); 21 * sizeof(*values->counterrawid));
19 values->countername = malloc(values->counters_max 22 values->countername = malloc(values->counters_max
20 * sizeof(*values->countername)); 23 * sizeof(*values->countername));
21 if (!values->counterrawid || !values->countername) 24 if (!values->counterrawid || !values->countername) {
22 die("failed to allocate read_values counters arrays"); 25 pr_debug("failed to allocate read_values counters arrays");
26 goto out_free_counter;
27 }
23 values->counters = 0; 28 values->counters = 0;
29
30 return 0;
31
32out_free_counter:
33 zfree(&values->counterrawid);
34 zfree(&values->countername);
35out_free_pid:
36 zfree(&values->pid);
37 zfree(&values->tid);
38 zfree(&values->value);
39 return -ENOMEM;
24} 40}
25 41
26void perf_read_values_destroy(struct perf_read_values *values) 42void perf_read_values_destroy(struct perf_read_values *values)
@@ -41,17 +57,27 @@ void perf_read_values_destroy(struct perf_read_values *values)
41 zfree(&values->countername); 57 zfree(&values->countername);
42} 58}
43 59
44static void perf_read_values__enlarge_threads(struct perf_read_values *values) 60static int perf_read_values__enlarge_threads(struct perf_read_values *values)
45{ 61{
46 values->threads_max *= 2; 62 int nthreads_max = values->threads_max * 2;
47 values->pid = realloc(values->pid, 63 void *npid = realloc(values->pid, nthreads_max * sizeof(*values->pid)),
48 values->threads_max * sizeof(*values->pid)); 64 *ntid = realloc(values->tid, nthreads_max * sizeof(*values->tid)),
49 values->tid = realloc(values->tid, 65 *nvalue = realloc(values->value, nthreads_max * sizeof(*values->value));
50 values->threads_max * sizeof(*values->tid)); 66
51 values->value = realloc(values->value, 67 if (!npid || !ntid || !nvalue)
52 values->threads_max * sizeof(*values->value)); 68 goto out_err;
53 if (!values->pid || !values->tid || !values->value) 69
54 die("failed to enlarge read_values threads arrays"); 70 values->threads_max = nthreads_max;
71 values->pid = npid;
72 values->tid = ntid;
73 values->value = nvalue;
74 return 0;
75out_err:
76 free(npid);
77 free(ntid);
78 free(nvalue);
79 pr_debug("failed to enlarge read_values threads arrays");
80 return -ENOMEM;
55} 81}
56 82
57static int perf_read_values__findnew_thread(struct perf_read_values *values, 83static int perf_read_values__findnew_thread(struct perf_read_values *values,
@@ -63,15 +89,21 @@ static int perf_read_values__findnew_thread(struct perf_read_values *values,
63 if (values->pid[i] == pid && values->tid[i] == tid) 89 if (values->pid[i] == pid && values->tid[i] == tid)
64 return i; 90 return i;
65 91
66 if (values->threads == values->threads_max) 92 if (values->threads == values->threads_max) {
67 perf_read_values__enlarge_threads(values); 93 i = perf_read_values__enlarge_threads(values);
94 if (i < 0)
95 return i;
96 }
68 97
69 i = values->threads++; 98 i = values->threads + 1;
99 values->value[i] = malloc(values->counters_max * sizeof(**values->value));
100 if (!values->value[i]) {
101 pr_debug("failed to allocate read_values counters array");
102 return -ENOMEM;
103 }
70 values->pid[i] = pid; 104 values->pid[i] = pid;
71 values->tid[i] = tid; 105 values->tid[i] = tid;
72 values->value[i] = malloc(values->counters_max * sizeof(**values->value)); 106 values->threads = i;
73 if (!values->value[i])
74 die("failed to allocate read_values counters array");
75 107
76 return i; 108 return i;
77} 109}
@@ -115,16 +147,21 @@ static int perf_read_values__findnew_counter(struct perf_read_values *values,
115 return i; 147 return i;
116} 148}
117 149
118void perf_read_values_add_value(struct perf_read_values *values, 150int perf_read_values_add_value(struct perf_read_values *values,
119 u32 pid, u32 tid, 151 u32 pid, u32 tid,
120 u64 rawid, const char *name, u64 value) 152 u64 rawid, const char *name, u64 value)
121{ 153{
122 int tindex, cindex; 154 int tindex, cindex;
123 155
124 tindex = perf_read_values__findnew_thread(values, pid, tid); 156 tindex = perf_read_values__findnew_thread(values, pid, tid);
157 if (tindex < 0)
158 return tindex;
125 cindex = perf_read_values__findnew_counter(values, rawid, name); 159 cindex = perf_read_values__findnew_counter(values, rawid, name);
160 if (cindex < 0)
161 return cindex;
126 162
127 values->value[tindex][cindex] = value; 163 values->value[tindex][cindex] = value;
164 return 0;
128} 165}
129 166
130static void perf_read_values__display_pretty(FILE *fp, 167static void perf_read_values__display_pretty(FILE *fp,
diff --git a/tools/perf/util/values.h b/tools/perf/util/values.h
index b21a80c6cf8d..808ff9c73bf5 100644
--- a/tools/perf/util/values.h
+++ b/tools/perf/util/values.h
@@ -14,10 +14,10 @@ struct perf_read_values {
14 u64 **value; 14 u64 **value;
15}; 15};
16 16
17void perf_read_values_init(struct perf_read_values *values); 17int perf_read_values_init(struct perf_read_values *values);
18void perf_read_values_destroy(struct perf_read_values *values); 18void perf_read_values_destroy(struct perf_read_values *values);
19 19
20void perf_read_values_add_value(struct perf_read_values *values, 20int perf_read_values_add_value(struct perf_read_values *values,
21 u32 pid, u32 tid, 21 u32 pid, u32 tid,
22 u64 rawid, const char *name, u64 value); 22 u64 rawid, const char *name, u64 value);
23 23