aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/Build6
-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-annotate.txt4
-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-diff.txt19
-rw-r--r--tools/perf/Documentation/perf-ftrace.txt36
-rw-r--r--tools/perf/Documentation/perf-kallsyms.txt24
-rw-r--r--tools/perf/Documentation/perf-kmem.txt7
-rw-r--r--tools/perf/Documentation/perf-record.txt29
-rw-r--r--tools/perf/Documentation/perf-report.txt14
-rw-r--r--tools/perf/Documentation/perf-sched.txt84
-rw-r--r--tools/perf/Documentation/perf-script.txt20
-rw-r--r--tools/perf/Documentation/perf-stat.txt2
-rw-r--r--tools/perf/Documentation/perf-top.txt1
-rw-r--r--tools/perf/Documentation/perf-trace.txt13
-rw-r--r--tools/perf/Documentation/tips.txt2
-rw-r--r--tools/perf/MANIFEST2
-rw-r--r--tools/perf/Makefile.config111
-rw-r--r--tools/perf/Makefile.perf251
-rw-r--r--tools/perf/arch/arm/annotate/instructions.c59
-rw-r--r--tools/perf/arch/arm/util/cs-etm.c2
-rw-r--r--tools/perf/arch/arm64/Makefile1
-rw-r--r--tools/perf/arch/arm64/annotate/instructions.c62
-rw-r--r--tools/perf/arch/arm64/include/dwarf-regs-table.h12
-rw-r--r--tools/perf/arch/arm64/util/dwarf-regs.c15
-rw-r--r--tools/perf/arch/powerpc/annotate/instructions.c58
-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/tests/arch-tests.c10
-rw-r--r--tools/perf/bench/futex-hash.c6
-rw-r--r--tools/perf/bench/futex-lock-pi.c6
-rw-r--r--tools/perf/bench/mem-functions.c77
-rw-r--r--tools/perf/bench/numa.c7
-rw-r--r--tools/perf/builtin-annotate.c4
-rw-r--r--tools/perf/builtin-c2c.c2780
-rw-r--r--tools/perf/builtin-config.c137
-rw-r--r--tools/perf/builtin-diff.c94
-rw-r--r--tools/perf/builtin-ftrace.c265
-rw-r--r--tools/perf/builtin-help.c8
-rw-r--r--tools/perf/builtin-kallsyms.c67
-rw-r--r--tools/perf/builtin-kmem.c49
-rw-r--r--tools/perf/builtin-list.c3
-rw-r--r--tools/perf/builtin-mem.c8
-rw-r--r--tools/perf/builtin-probe.c2
-rw-r--r--tools/perf/builtin-record.c203
-rw-r--r--tools/perf/builtin-report.c56
-rw-r--r--tools/perf/builtin-sched.c1434
-rw-r--r--tools/perf/builtin-script.c54
-rw-r--r--tools/perf/builtin-stat.c19
-rw-r--r--tools/perf/builtin-top.c12
-rw-r--r--tools/perf/builtin-trace.c194
-rw-r--r--tools/perf/builtin.h3
-rwxr-xr-xtools/perf/check-headers.sh59
-rw-r--r--tools/perf/command-list.txt2
-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.c21
-rw-r--r--tools/perf/perf.h1
-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/uncore-cache.json317
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json83
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json84
-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/uncore-cache.json317
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json28
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json83
-rw-r--r--tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json84
-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/uncore-cache.json317
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json28
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json83
-rw-r--r--tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json84
-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/uncore-cache.json322
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json46
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json75
-rw-r--r--tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json249
-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/uncore-cache.json209
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json46
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json79
-rw-r--r--tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json248
-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/uncore-memory.json42
-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.c84
-rw-r--r--tools/perf/pmu-events/jevents.h4
-rw-r--r--tools/perf/pmu-events/json.c2
-rw-r--r--tools/perf/pmu-events/pmu-events.h3
-rw-r--r--tools/perf/tests/Build3
-rw-r--r--tools/perf/tests/attr.c2
-rw-r--r--tools/perf/tests/backward-ring-buffer.c2
-rw-r--r--tools/perf/tests/bpf.c50
-rw-r--r--tools/perf/tests/builtin-test.c115
-rw-r--r--tools/perf/tests/clang.c46
-rw-r--r--tools/perf/tests/code-reading.c2
-rw-r--r--tools/perf/tests/fdarray.c2
-rw-r--r--tools/perf/tests/llvm.c12
-rw-r--r--tools/perf/tests/llvm.h7
-rw-r--r--tools/perf/tests/make8
-rw-r--r--tools/perf/tests/parse-events.c10
-rw-r--r--tools/perf/tests/parse-no-sample-id-all.c19
-rw-r--r--tools/perf/tests/perf-hooks.c48
-rw-r--r--tools/perf/tests/perf-record.c6
-rw-r--r--tools/perf/tests/python-use.c2
-rw-r--r--tools/perf/tests/tests.h6
-rw-r--r--tools/perf/tests/thread-map.c44
-rw-r--r--tools/perf/tests/topology.c4
-rw-r--r--tools/perf/tests/unit_number__scnprintf.c37
-rw-r--r--tools/perf/tests/vmlinux-kallsyms.c2
-rw-r--r--tools/perf/trace/beauty/mmap.c2
-rw-r--r--tools/perf/ui/browsers/annotate.c31
-rw-r--r--tools/perf/ui/browsers/hists.c87
-rw-r--r--tools/perf/ui/browsers/hists.h1
-rw-r--r--tools/perf/ui/browsers/map.c6
-rw-r--r--tools/perf/ui/gtk/annotate.c2
-rw-r--r--tools/perf/ui/helpline.c10
-rw-r--r--tools/perf/ui/helpline.h1
-rw-r--r--tools/perf/ui/hist.c12
-rw-r--r--tools/perf/ui/setup.c1
-rw-r--r--tools/perf/ui/stdio/hist.c35
-rw-r--r--tools/perf/util/Build8
-rw-r--r--tools/perf/util/annotate.c421
-rw-r--r--tools/perf/util/annotate.h28
-rw-r--r--tools/perf/util/bpf-loader.c37
-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.c259
-rw-r--r--tools/perf/util/callchain.h35
-rw-r--r--tools/perf/util/cgroup.c26
-rw-r--r--tools/perf/util/config.c43
-rw-r--r--tools/perf/util/config.h4
-rw-r--r--tools/perf/util/cpumap.c22
-rw-r--r--tools/perf/util/cpumap.h1
-rw-r--r--tools/perf/util/data-convert-bt.c7
-rw-r--r--tools/perf/util/debug.c17
-rw-r--r--tools/perf/util/debug.h1
-rw-r--r--tools/perf/util/dso.c52
-rw-r--r--tools/perf/util/env.c2
-rw-r--r--tools/perf/util/event.c2
-rw-r--r--tools/perf/util/event.h3
-rw-r--r--tools/perf/util/evlist.c12
-rw-r--r--tools/perf/util/evlist.h2
-rw-r--r--tools/perf/util/evsel.c140
-rw-r--r--tools/perf/util/evsel.h5
-rw-r--r--tools/perf/util/evsel_fprintf.c24
-rw-r--r--tools/perf/util/genelf.c113
-rw-r--r--tools/perf/util/genelf.h5
-rw-r--r--tools/perf/util/header.c59
-rw-r--r--tools/perf/util/hist.c18
-rw-r--r--tools/perf/util/hist.h8
-rw-r--r--tools/perf/util/intel-bts.c9
-rw-r--r--tools/perf/util/intel-pt-decoder/Build6
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-decoder.c7
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-decoder.h1
-rw-r--r--tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c15
-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-decoder/intel-pt-pkt-decoder.c2
-rw-r--r--tools/perf/util/intel-pt.c23
-rw-r--r--tools/perf/util/jitdump.c82
-rw-r--r--tools/perf/util/jitdump.h12
-rw-r--r--tools/perf/util/llvm-utils.c82
-rw-r--r--tools/perf/util/llvm-utils.h6
-rw-r--r--tools/perf/util/machine.c107
-rw-r--r--tools/perf/util/machine.h1
-rw-r--r--tools/perf/util/map.c21
-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.c170
-rw-r--r--tools/perf/util/parse-events.h2
-rw-r--r--tools/perf/util/parse-events.y49
-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.c146
-rw-r--r--tools/perf/util/pmu.h1
-rw-r--r--tools/perf/util/probe-event.c181
-rw-r--r--tools/perf/util/probe-event.h2
-rw-r--r--tools/perf/util/probe-finder.c19
-rw-r--r--tools/perf/util/probe-finder.h3
-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/Build2
-rw-r--r--tools/perf/util/scripting-engines/trace-event-perl.c11
-rw-r--r--tools/perf/util/scripting-engines/trace-event-python.c5
-rw-r--r--tools/perf/util/session.c16
-rw-r--r--tools/perf/util/setup.py9
-rw-r--r--tools/perf/util/sort.c10
-rw-r--r--tools/perf/util/sort.h3
-rw-r--r--tools/perf/util/stat.c2
-rw-r--r--tools/perf/util/strfilter.c1
-rw-r--r--tools/perf/util/string.c23
-rw-r--r--tools/perf/util/symbol-elf.c8
-rw-r--r--tools/perf/util/symbol.c19
-rw-r--r--tools/perf/util/symbol.h11
-rw-r--r--tools/perf/util/symbol_fprintf.c13
-rw-r--r--tools/perf/util/thread_map.c24
-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-info.c71
-rw-r--r--tools/perf/util/trace-event-parse.c17
-rw-r--r--tools/perf/util/trace-event-read.c77
-rw-r--r--tools/perf/util/trace-event-scripting.c39
-rw-r--r--tools/perf/util/trace-event.h1
-rw-r--r--tools/perf/util/unwind-libunwind-local.c58
-rw-r--r--tools/perf/util/util-cxx.h26
-rw-r--r--tools/perf/util/util.c103
-rw-r--r--tools/perf/util/util.h9
-rw-r--r--tools/perf/util/values.c81
-rw-r--r--tools/perf/util/values.h4
353 files changed, 102816 insertions, 1534 deletions
diff --git a/tools/perf/Build b/tools/perf/Build
index a43fae7f439a..9b79f8d7db50 100644
--- a/tools/perf/Build
+++ b/tools/perf/Build
@@ -3,10 +3,12 @@ perf-y += builtin-annotate.o
3perf-y += builtin-config.o 3perf-y += builtin-config.o
4perf-y += builtin-diff.o 4perf-y += builtin-diff.o
5perf-y += builtin-evlist.o 5perf-y += builtin-evlist.o
6perf-y += builtin-ftrace.o
6perf-y += builtin-help.o 7perf-y += builtin-help.o
7perf-y += builtin-sched.o 8perf-y += builtin-sched.o
8perf-y += builtin-buildid-list.o 9perf-y += builtin-buildid-list.o
9perf-y += builtin-buildid-cache.o 10perf-y += builtin-buildid-cache.o
11perf-y += builtin-kallsyms.o
10perf-y += builtin-list.o 12perf-y += builtin-list.o
11perf-y += builtin-record.o 13perf-y += builtin-record.o
12perf-y += builtin-report.o 14perf-y += builtin-report.o
@@ -21,6 +23,7 @@ perf-y += builtin-inject.o
21perf-y += builtin-mem.o 23perf-y += builtin-mem.o
22perf-y += builtin-data.o 24perf-y += builtin-data.o
23perf-y += builtin-version.o 25perf-y += builtin-version.o
26perf-y += builtin-c2c.o
24 27
25perf-$(CONFIG_AUDIT) += builtin-trace.o 28perf-$(CONFIG_AUDIT) += builtin-trace.o
26perf-$(CONFIG_LIBELF) += builtin-probe.o 29perf-$(CONFIG_LIBELF) += builtin-probe.o
@@ -38,8 +41,7 @@ CFLAGS_builtin-help.o += $(paths)
38CFLAGS_builtin-timechart.o += $(paths) 41CFLAGS_builtin-timechart.o += $(paths)
39CFLAGS_perf.o += -DPERF_HTML_PATH="BUILD_STR($(htmldir_SQ))" \ 42CFLAGS_perf.o += -DPERF_HTML_PATH="BUILD_STR($(htmldir_SQ))" \
40 -DPERF_EXEC_PATH="BUILD_STR($(perfexecdir_SQ))" \ 43 -DPERF_EXEC_PATH="BUILD_STR($(perfexecdir_SQ))" \
41 -DPREFIX="BUILD_STR($(prefix_SQ))" \ 44 -DPREFIX="BUILD_STR($(prefix_SQ))"
42 -include $(OUTPUT)PERF-VERSION-FILE
43CFLAGS_builtin-trace.o += -DSTRACE_GROUPS_DIR="BUILD_STR($(STRACE_GROUPS_DIR_SQ))" 45CFLAGS_builtin-trace.o += -DSTRACE_GROUPS_DIR="BUILD_STR($(STRACE_GROUPS_DIR_SQ))"
44CFLAGS_builtin-report.o += -DTIPDIR="BUILD_STR($(tipdir_SQ))" 46CFLAGS_builtin-report.o += -DTIPDIR="BUILD_STR($(tipdir_SQ))"
45CFLAGS_builtin-report.o += -DDOCDIR="BUILD_STR($(srcdir_SQ)/Documentation)" 47CFLAGS_builtin-report.o += -DDOCDIR="BUILD_STR($(srcdir_SQ)/Documentation)"
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-annotate.txt b/tools/perf/Documentation/perf-annotate.txt
index 8ffbd272952d..a89273d8e744 100644
--- a/tools/perf/Documentation/perf-annotate.txt
+++ b/tools/perf/Documentation/perf-annotate.txt
@@ -39,6 +39,10 @@ OPTIONS
39--verbose:: 39--verbose::
40 Be more verbose. (Show symbol address, etc) 40 Be more verbose. (Show symbol address, etc)
41 41
42-q::
43--quiet::
44 Do not show any message. (Suppress -v)
45
42-D:: 46-D::
43--dump-raw-trace:: 47--dump-raw-trace::
44 Dump raw trace in ASCII. 48 Dump raw trace in ASCII.
diff --git a/tools/perf/Documentation/perf-c2c.txt b/tools/perf/Documentation/perf-c2c.txt
new file mode 100644
index 000000000000..2da07e51e119
--- /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,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 cb081ac59fd1..5b4fff3adc4b 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
@@ -118,6 +120,39 @@ Given a $HOME/.perfconfig like this:
118 children = true 120 children = true
119 group = true 121 group = true
120 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
121Variables 156Variables
122~~~~~~~~~ 157~~~~~~~~~
123 158
@@ -463,6 +498,18 @@ record.*::
463 But if this option is 'no-cache', it will not update the build-id cache. 498 But if this option is 'no-cache', it will not update the build-id cache.
464 'skip' skips post-processing and does not update the cache. 499 'skip' skips post-processing and does not update the cache.
465 500
501diff.*::
502 diff.order::
503 This option sets the number of columns to sort the result.
504 The default is 0, which means sorting by baseline.
505 Setting it to 1 will sort the result by delta (or other
506 compute method selected).
507
508 diff.compute::
509 This options sets the method for computing the diff result.
510 Possible values are 'delta', 'delta-abs', 'ratio' and
511 'wdiff'. Default is 'delta'.
512
466SEE ALSO 513SEE ALSO
467-------- 514--------
468linkperf:perf[1] 515linkperf:perf[1]
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 3e9490b9c533..a79c84ae61aa 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -73,6 +73,10 @@ OPTIONS
73 Be verbose, for instance, show the raw counts in addition to the 73 Be verbose, for instance, show the raw counts in addition to the
74 diff. 74 diff.
75 75
76-q::
77--quiet::
78 Do not show any message. (Suppress -v)
79
76-f:: 80-f::
77--force:: 81--force::
78 Don't do ownership validation. 82 Don't do ownership validation.
@@ -86,8 +90,9 @@ OPTIONS
86 90
87-c:: 91-c::
88--compute:: 92--compute::
89 Differential computation selection - delta,ratio,wdiff (default is delta). 93 Differential computation selection - delta, ratio, wdiff, delta-abs
90 See COMPARISON METHODS section for more info. 94 (default is delta-abs). Default can be changed using diff.compute
95 config option. See COMPARISON METHODS section for more info.
91 96
92-p:: 97-p::
93--period:: 98--period::
@@ -99,7 +104,11 @@ OPTIONS
99 104
100-o:: 105-o::
101--order:: 106--order::
102 Specify compute sorting column number. 107 Specify compute sorting column number. 0 means sorting by baseline
108 overhead and 1 (default) means sorting by computed value of column 1
109 (data from the first file other base baseline). Values more than 1
110 can be used only if enough data files are provided.
111 The default value can be set using the diff.order config option.
103 112
104--percentage:: 113--percentage::
105 Determine how to display the overhead percentage of filtered entries. 114 Determine how to display the overhead percentage of filtered entries.
@@ -181,6 +190,10 @@ with:
181 relative to how entries are filtered. Use --percentage=absolute to 190 relative to how entries are filtered. Use --percentage=absolute to
182 prevent such fluctuation. 191 prevent such fluctuation.
183 192
193delta-abs
194~~~~~~~~~
195Same as 'delta` method, but sort the result with the absolute values.
196
184ratio 197ratio
185~~~~~ 198~~~~~
186If specified the 'Ratio' column is displayed with value 'r' computed as: 199If specified the 'Ratio' column is displayed with value 'r' computed as:
diff --git a/tools/perf/Documentation/perf-ftrace.txt b/tools/perf/Documentation/perf-ftrace.txt
new file mode 100644
index 000000000000..2d96de6132a9
--- /dev/null
+++ b/tools/perf/Documentation/perf-ftrace.txt
@@ -0,0 +1,36 @@
1perf-ftrace(1)
2=============
3
4NAME
5----
6perf-ftrace - simple wrapper for kernel's ftrace functionality
7
8
9SYNOPSIS
10--------
11[verse]
12'perf ftrace' <command>
13
14DESCRIPTION
15-----------
16The 'perf ftrace' command is a simple wrapper of kernel's ftrace
17functionality. It only supports single thread tracing currently and
18just reads trace_pipe in text and then write it to stdout.
19
20The following options apply to perf ftrace.
21
22OPTIONS
23-------
24
25-t::
26--tracer=::
27 Tracer to use: function_graph or function.
28
29-v::
30--verbose=::
31 Verbosity level.
32
33
34SEE ALSO
35--------
36linkperf:perf-record[1], linkperf:perf-trace[1]
diff --git a/tools/perf/Documentation/perf-kallsyms.txt b/tools/perf/Documentation/perf-kallsyms.txt
new file mode 100644
index 000000000000..954ea9e21236
--- /dev/null
+++ b/tools/perf/Documentation/perf-kallsyms.txt
@@ -0,0 +1,24 @@
1perf-kallsyms(1)
2==============
3
4NAME
5----
6perf-kallsyms - Searches running kernel for symbols
7
8SYNOPSIS
9--------
10[verse]
11'perf kallsyms <options> symbol_name[,symbol_name...]'
12
13DESCRIPTION
14-----------
15This command searches the running kernel kallsyms file for the given symbol(s)
16and prints information about it, including the DSO, the kallsyms begin/end
17addresses and the addresses in the ELF kallsyms symbol table (for symbols in
18modules).
19
20OPTIONS
21-------
22-v::
23--verbose=::
24 Increase verbosity level, showing details about symbol table loading, etc.
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-record.txt b/tools/perf/Documentation/perf-record.txt
index 92335193dc33..b16003ec14a7 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -45,9 +45,9 @@ OPTIONS
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_source/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,11 @@ 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.
62 65
63 Also not defined in .../<pmu>/format/* are PMU driver specific 66 Also not defined in .../<pmu>/format/* are PMU driver specific
64 configuration parameters. Any configuration parameter preceded by 67 configuration parameters. Any configuration parameter preceded by
@@ -154,7 +157,7 @@ OPTIONS
154 157
155-a:: 158-a::
156--all-cpus:: 159--all-cpus::
157 System-wide collection from all CPUs. 160 System-wide collection from all CPUs (default if no target is specified).
158 161
159-p:: 162-p::
160--pid=:: 163--pid=::
@@ -418,15 +421,29 @@ Configure all used events to run in user space.
418--timestamp-filename 421--timestamp-filename
419Append timestamp to output file name. 422Append timestamp to output file name.
420 423
421--switch-output:: 424--switch-output[=mode]::
422Generate multiple perf.data files, timestamp prefixed, switching to a new one 425Generate multiple perf.data files, timestamp prefixed, switching to a new one
423when receiving a SIGUSR2. 426based on 'mode' value:
427 "signal" - when receiving a SIGUSR2 (default value) or
428 <size> - when reaching the size threshold, size is expected to
429 be a number with appended unit character - B/K/M/G
430 <time> - when reaching the time threshold, size is expected to
431 be a number with appended unit character - s/m/h/d
432
433 Note: the precision of the size threshold hugely depends
434 on your configuration - the number and size of your ring
435 buffers (-m). It is generally more precise for higher sizes
436 (like >5M), for lower values expect different sizes.
424 437
425A possible use case is to, given an external event, slice the perf.data file 438A possible use case is to, given an external event, slice the perf.data file
426that gets then processed, possibly via a perf script, to decide if that 439that gets then processed, possibly via a perf script, to decide if that
427particular perf.data snapshot should be kept or not. 440particular perf.data snapshot should be kept or not.
428 441
429Implies --timestamp-filename, --no-buildid and --no-buildid-cache. 442Implies --timestamp-filename, --no-buildid and --no-buildid-cache.
443The reason for the latter two is to reduce the data file switching
444overhead. You can still switch them on with:
445
446 --switch-output --no-no-buildid --no-no-buildid-cache
430 447
431--dry-run:: 448--dry-run::
432Parse options then exit. --dry-run can be used to detect errors in cmdline 449Parse 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..c04cc0647c16 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -25,6 +25,10 @@ OPTIONS
25--verbose:: 25--verbose::
26 Be more verbose. (show symbol address, etc) 26 Be more verbose. (show symbol address, etc)
27 27
28-q::
29--quiet::
30 Do not show any message. (Suppress -v)
31
28-n:: 32-n::
29--show-nr-samples:: 33--show-nr-samples::
30 Show the number of samples for each symbol 34 Show the number of samples for each symbol
@@ -239,7 +243,8 @@ OPTIONS
239 Accumulate callchain of children to parent entry so that then can 243 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 244 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. 245 and will be sorted on the data. It requires callchains are recorded.
242 See the `overhead calculation' section for more details. 246 See the `overhead calculation' section for more details. Enabled by
247 default, disable with --no-children.
243 248
244--max-stack:: 249--max-stack::
245 Set the stack depth limit when parsing the callchain, anything 250 Set the stack depth limit when parsing the callchain, anything
@@ -382,6 +387,13 @@ OPTIONS
382--header-only:: 387--header-only::
383 Show only perf.data header (forces --stdio). 388 Show only perf.data header (forces --stdio).
384 389
390--time::
391 Only analyze samples within given time window: <start>,<stop>. Times
392 have the format seconds.microseconds. If start is not given (i.e., time
393 string is ',x.y') then analysis starts at the beginning of the file. If
394 stop time is not given (i.e, time string is 'x.y,') then analysis goes
395 to end of file.
396
385--itrace:: 397--itrace::
386 Options for decoding instruction tracing data. The options are: 398 Options for decoding instruction tracing data. The options are:
387 399
diff --git a/tools/perf/Documentation/perf-sched.txt b/tools/perf/Documentation/perf-sched.txt
index 1cc08cc47ac5..d33deddb0146 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,62 @@ 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--state::
147 Show task state when it switched out.
148
69SEE ALSO 149SEE ALSO
70-------- 150--------
71linkperf:perf-record[1] 151linkperf:perf-record[1]
diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt
index 053bbbd84ece..4ed5f239ba7d 100644
--- a/tools/perf/Documentation/perf-script.txt
+++ b/tools/perf/Documentation/perf-script.txt
@@ -36,7 +36,7 @@ There are several variants of perf script:
36 36
37 'perf script report <script> [args]' to run and display the results 37 'perf script report <script> [args]' to run and display the results
38 of <script>. <script> is the name displayed in the output of 'perf 38 of <script>. <script> is the name displayed in the output of 'perf
39 trace --list' i.e. the actual script name minus any language 39 script --list' i.e. the actual script name minus any language
40 extension. The perf.data output from a previous run of 'perf script 40 extension. The perf.data output from a previous run of 'perf script
41 record <script>' is used and should be present for this command to 41 record <script>' is used and should be present for this command to
42 succeed. [args] refers to the (mainly optional) args expected by 42 succeed. [args] refers to the (mainly optional) args expected by
@@ -76,7 +76,7 @@ OPTIONS
76 Any command you can specify in a shell. 76 Any command you can specify in a shell.
77 77
78-D:: 78-D::
79--dump-raw-script=:: 79--dump-raw-trace=::
80 Display verbose dump of the trace data. 80 Display verbose dump of the trace data.
81 81
82-L:: 82-L::
@@ -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-stat.txt b/tools/perf/Documentation/perf-stat.txt
index d96ccd4844df..aecf2a87e7d6 100644
--- a/tools/perf/Documentation/perf-stat.txt
+++ b/tools/perf/Documentation/perf-stat.txt
@@ -63,7 +63,7 @@ report::
63 63
64-a:: 64-a::
65--all-cpus:: 65--all-cpus::
66 system-wide collection from all CPUs 66 system-wide collection from all CPUs (default if no target is specified)
67 67
68-c:: 68-c::
69--scale:: 69--scale::
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..afd728672b6f 100644
--- a/tools/perf/Documentation/perf-trace.txt
+++ b/tools/perf/Documentation/perf-trace.txt
@@ -35,10 +35,18 @@ OPTIONS
35 35
36-e:: 36-e::
37--expr:: 37--expr::
38 List of syscalls to show, currently only syscall names. 38--event::
39 List of syscalls and other perf events (tracepoints, HW cache events,
40 etc) to show.
41 See 'perf list' for a complete list of events.
39 Prefixing with ! shows all syscalls but the ones specified. You may 42 Prefixing with ! shows all syscalls but the ones specified. You may
40 need to escape it. 43 need to escape it.
41 44
45-D msecs::
46--delay msecs::
47After starting the program, wait msecs before measuring. This is useful to
48filter out the startup phase of the program, which is often very different.
49
42-o:: 50-o::
43--output=:: 51--output=::
44 Output file name. 52 Output file name.
@@ -130,9 +138,6 @@ the thread executes on the designated CPUs. Default is to monitor all CPUs.
130--kernel-syscall-graph:: 138--kernel-syscall-graph::
131 Show the kernel callchains on the syscall exit path. 139 Show the kernel callchains on the syscall exit path.
132 140
133--event::
134 Trace other events, see 'perf list' for a complete list.
135
136--max-stack:: 141--max-stack::
137 Set the stack depth limit when parsing the callchain, anything 142 Set the stack depth limit when parsing the callchain, anything
138 beyond the specified depth will be ignored. Note that at this point 143 beyond the specified depth will be ignored. Note that at this point
diff --git a/tools/perf/Documentation/tips.txt b/tools/perf/Documentation/tips.txt
index 8a6479c0eac9..170b0289a7bc 100644
--- a/tools/perf/Documentation/tips.txt
+++ b/tools/perf/Documentation/tips.txt
@@ -22,7 +22,7 @@ If you have debuginfo enabled, try: perf report -s sym,srcline
22For memory address profiling, try: perf mem record / perf mem report 22For memory address profiling, try: perf mem record / perf mem report
23For tracepoint events, try: perf report -s trace_fields 23For tracepoint events, try: perf report -s trace_fields
24To record callchains for each sample: perf record -g 24To record callchains for each sample: perf record -g
25To record every process run by an user: perf record -u <user> 25To record every process run by a user: perf record -u <user>
26Skip collecing build-id when recording: perf record -B 26Skip collecing build-id when recording: perf record -B
27To change sampling frequency to 100 Hz: perf record -F 100 27To 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>
diff --git a/tools/perf/MANIFEST b/tools/perf/MANIFEST
index 0bda2cca2b3a..8672f835ae4e 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,6 +61,7 @@ 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/compiler-gcc.h
63tools/include/linux/coresight-pmu.h 65tools/include/linux/coresight-pmu.h
64tools/include/linux/filter.h 66tools/include/linux/filter.h
65tools/include/linux/hash.h 67tools/include/linux/hash.h
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 72edf83d76b7..27c9fbca7bd9 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
@@ -143,8 +144,12 @@ ifndef DEBUG
143endif 144endif
144 145
145ifeq ($(DEBUG),0) 146ifeq ($(DEBUG),0)
147ifeq ($(CC), clang)
148 CFLAGS += -O3
149else
146 CFLAGS += -O6 150 CFLAGS += -O6
147endif 151endif
152endif
148 153
149ifdef PARSER_DEBUG 154ifdef PARSER_DEBUG
150 PARSER_DEBUG_BISON := -t 155 PARSER_DEBUG_BISON := -t
@@ -170,6 +175,10 @@ PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG))
170PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) 175PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
171PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) 176PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
172 177
178ifeq ($(CC), clang)
179 PYTHON_EMBED_CCOPTS := $(filter-out -specs=%,$(PYTHON_EMBED_CCOPTS))
180endif
181
173FEATURE_CHECK_CFLAGS-libpython := $(PYTHON_EMBED_CCOPTS) 182FEATURE_CHECK_CFLAGS-libpython := $(PYTHON_EMBED_CCOPTS)
174FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS) 183FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
175FEATURE_CHECK_CFLAGS-libpython-version := $(PYTHON_EMBED_CCOPTS) 184FEATURE_CHECK_CFLAGS-libpython-version := $(PYTHON_EMBED_CCOPTS)
@@ -182,6 +191,13 @@ CFLAGS += -Wall
182CFLAGS += -Wextra 191CFLAGS += -Wextra
183CFLAGS += -std=gnu99 192CFLAGS += -std=gnu99
184 193
194CXXFLAGS += -std=gnu++11 -fno-exceptions -fno-rtti
195CXXFLAGS += -Wall
196CXXFLAGS += -fno-omit-frame-pointer
197CXXFLAGS += -ggdb3
198CXXFLAGS += -funwind-tables
199CXXFLAGS += -Wno-strict-aliasing
200
185# Enforce a non-executable stack, as we may regress (again) in the future by 201# Enforce a non-executable stack, as we may regress (again) in the future by
186# adding assembler files missing the .GNU-stack linker note. 202# adding assembler files missing the .GNU-stack linker note.
187LDFLAGS += -Wl,-z,noexecstack 203LDFLAGS += -Wl,-z,noexecstack
@@ -204,24 +220,27 @@ ifeq ($(DEBUG),0)
204 endif 220 endif
205endif 221endif
206 222
207CFLAGS += -I$(src-perf)/util/include 223INC_FLAGS += -I$(src-perf)/util/include
208CFLAGS += -I$(src-perf)/arch/$(ARCH)/include 224INC_FLAGS += -I$(src-perf)/arch/$(ARCH)/include
209CFLAGS += -I$(srctree)/tools/include/uapi 225INC_FLAGS += -I$(srctree)/tools/include/uapi
210CFLAGS += -I$(srctree)/tools/include/ 226INC_FLAGS += -I$(srctree)/tools/include/
211CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/uapi 227INC_FLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/uapi
212CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/ 228INC_FLAGS += -I$(srctree)/tools/arch/$(ARCH)/include/
213CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/ 229INC_FLAGS += -I$(srctree)/tools/arch/$(ARCH)/
214 230
215# $(obj-perf) for generated common-cmds.h 231# $(obj-perf) for generated common-cmds.h
216# $(obj-perf)/util for generated bison/flex headers 232# $(obj-perf)/util for generated bison/flex headers
217ifneq ($(OUTPUT),) 233ifneq ($(OUTPUT),)
218CFLAGS += -I$(obj-perf)/util 234INC_FLAGS += -I$(obj-perf)/util
219CFLAGS += -I$(obj-perf) 235INC_FLAGS += -I$(obj-perf)
220endif 236endif
221 237
222CFLAGS += -I$(src-perf)/util 238INC_FLAGS += -I$(src-perf)/util
223CFLAGS += -I$(src-perf) 239INC_FLAGS += -I$(src-perf)
224CFLAGS += -I$(srctree)/tools/lib/ 240INC_FLAGS += -I$(srctree)/tools/lib/
241
242CFLAGS += $(INC_FLAGS)
243CXXFLAGS += $(INC_FLAGS)
225 244
226CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE 245CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
227 246
@@ -280,8 +299,10 @@ else
280 endif 299 endif
281 endif 300 endif
282 ifneq ($(feature-dwarf), 1) 301 ifneq ($(feature-dwarf), 1)
283 msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev); 302 ifndef NO_DWARF
284 NO_DWARF := 1 303 msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev);
304 NO_DWARF := 1
305 endif
285 else 306 else
286 ifneq ($(feature-dwarf_getlocations), 1) 307 ifneq ($(feature-dwarf_getlocations), 1)
287 msg := $(warning Old libdw.h, finding variables at given 'perf probe' point will not work, install elfutils-devel/libdw-dev >= 0.157); 308 msg := $(warning Old libdw.h, finding variables at given 'perf probe' point will not work, install elfutils-devel/libdw-dev >= 0.157);
@@ -366,7 +387,7 @@ ifndef NO_SDT
366endif 387endif
367 388
368ifdef PERF_HAVE_JITDUMP 389ifdef PERF_HAVE_JITDUMP
369 ifndef NO_DWARF 390 ifndef NO_LIBELF
370 $(call detected,CONFIG_JITDUMP) 391 $(call detected,CONFIG_JITDUMP)
371 CFLAGS += -DHAVE_JITDUMP 392 CFLAGS += -DHAVE_JITDUMP
372 endif 393 endif
@@ -584,6 +605,9 @@ else
584 PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) 605 PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS))
585 PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil 606 PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil
586 PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) 607 PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
608 ifeq ($(CC), clang)
609 PYTHON_EMBED_CCOPTS := $(filter-out -specs=%,$(PYTHON_EMBED_CCOPTS))
610 endif
587 FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) 611 FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS)
588 612
589 ifneq ($(feature-libpython), 1) 613 ifneq ($(feature-libpython), 1)
@@ -758,6 +782,62 @@ ifndef NO_AUXTRACE
758 endif 782 endif
759endif 783endif
760 784
785ifndef NO_JVMTI
786 ifneq (,$(wildcard /usr/sbin/update-java-alternatives))
787 JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}')
788 else
789 ifneq (,$(wildcard /usr/sbin/alternatives))
790 JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g')
791 endif
792 endif
793 ifndef JDIR
794 $(warning No alternatives command found, you need to set JDIR= to point to the root of your Java directory)
795 NO_JVMTI := 1
796 endif
797endif
798
799ifndef NO_JVMTI
800 FEATURE_CHECK_CFLAGS-jvmti := -I$(JDIR)/include -I$(JDIR)/include/linux
801 $(call feature_check,jvmti)
802 ifeq ($(feature-jvmti), 1)
803 $(call detected_var,JDIR)
804 else
805 $(warning No openjdk development package found, please install JDK package)
806 NO_JVMTI := 1
807 endif
808endif
809
810USE_CXX = 0
811USE_CLANGLLVM = 0
812ifdef LIBCLANGLLVM
813 $(call feature_check,cxx)
814 ifneq ($(feature-cxx), 1)
815 msg := $(warning No g++ found, disable clang and llvm support. Please install g++)
816 else
817 $(call feature_check,llvm)
818 $(call feature_check,llvm-version)
819 ifneq ($(feature-llvm), 1)
820 msg := $(warning No suitable libLLVM found, disabling builtin clang and LLVM support. Please install llvm-dev(el) (>= 3.9.0))
821 else
822 $(call feature_check,clang)
823 ifneq ($(feature-clang), 1)
824 msg := $(warning No suitable libclang found, disabling builtin clang and LLVM support. Please install libclang-dev(el) (>= 3.9.0))
825 else
826 CFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT
827 CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir)
828 $(call detected,CONFIG_CXX)
829 $(call detected,CONFIG_CLANGLLVM)
830 USE_CXX = 1
831 USE_LLVM = 1
832 USE_CLANG = 1
833 ifneq ($(feature-llvm-version),1)
834 msg := $(warning This version of LLVM is not tested. May cause build errors)
835 endif
836 endif
837 endif
838 endif
839endif
840
761# Among the variables below, these: 841# Among the variables below, these:
762# perfexecdir 842# perfexecdir
763# template_dir 843# template_dir
@@ -850,6 +930,7 @@ ifeq ($(VF),1)
850 $(call print_var,sysconfdir) 930 $(call print_var,sysconfdir)
851 $(call print_var,LIBUNWIND_DIR) 931 $(call print_var,LIBUNWIND_DIR)
852 $(call print_var,LIBDW_DIR) 932 $(call print_var,LIBDW_DIR)
933 $(call print_var,JDIR)
853 934
854 ifeq ($(dwarf-post-unwind),1) 935 ifeq ($(dwarf-post-unwind),1)
855 $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) 936 $(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 982d6439bb07..79fe31f20a17 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,6 +143,7 @@ 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
@@ -149,6 +152,7 @@ HOSTLD ?= ld
149HOSTAR ?= ar 152HOSTAR ?= ar
150 153
151PKG_CONFIG = $(CROSS_COMPILE)pkg-config 154PKG_CONFIG = $(CROSS_COMPILE)pkg-config
155LLVM_CONFIG ?= llvm-config
152 156
153RM = rm -f 157RM = rm -f
154LN = ln -f 158LN = ln -f
@@ -160,16 +164,11 @@ BISON = bison
160STRIP = strip 164STRIP = strip
161AWK = awk 165AWK = awk
162 166
163LIB_DIR = $(srctree)/tools/lib/api/
164TRACE_EVENT_DIR = $(srctree)/tools/lib/traceevent/
165BPF_DIR = $(srctree)/tools/lib/bpf/
166SUBCMD_DIR = $(srctree)/tools/lib/subcmd/
167
168# include Makefile.config by default and rule out 167# include Makefile.config by default and rule out
169# non-config cases 168# non-config cases
170config := 1 169config := 1
171 170
172NON_CONFIG_TARGETS := clean TAGS tags cscope help install-doc 171NON_CONFIG_TARGETS := clean TAGS tags cscope help install-doc install-man install-html install-info install-pdf doc man html info pdf
173 172
174ifdef MAKECMDGOALS 173ifdef MAKECMDGOALS
175ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),) 174ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
@@ -177,6 +176,41 @@ ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
177endif 176endif
178endif 177endif
179 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
180# 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.
181# 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
182# 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
@@ -260,17 +294,6 @@ python-clean := $(call QUIET_CLEAN, python) $(RM) -r $(PYTHON_EXTBUILD) $(OUTPUT
260PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources) 294PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources)
261PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBAPI) 295PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBAPI)
262 296
263$(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) $(LIBTRACEEVENT_DYNAMIC_LIST)
264 $(QUIET_GEN)LDSHARED="$(CC) -pthread -shared" \
265 CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS)' \
266 $(PYTHON_WORD) util/setup.py \
267 --quiet build_ext; \
268 mkdir -p $(OUTPUT)python && \
269 cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/
270#
271# No Perl scripts right now:
272#
273
274SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) 297SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH))
275 298
276PROGRAMS += $(OUTPUT)perf 299PROGRAMS += $(OUTPUT)perf
@@ -283,6 +306,12 @@ ifndef NO_PERF_READ_VDSOX32
283PROGRAMS += $(OUTPUT)perf-read-vdsox32 306PROGRAMS += $(OUTPUT)perf-read-vdsox32
284endif 307endif
285 308
309LIBJVMTI = libperf-jvmti.so
310
311ifndef NO_JVMTI
312PROGRAMS += $(OUTPUT)$(LIBJVMTI)
313endif
314
286# what 'all' will build and 'install' will install, in perfexecdir 315# what 'all' will build and 'install' will install, in perfexecdir
287ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) 316ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
288 317
@@ -317,11 +346,6 @@ endif
317ifndef NO_GTK2 346ifndef NO_GTK2
318 ALL_PROGRAMS += $(OUTPUT)libperf-gtk.so 347 ALL_PROGRAMS += $(OUTPUT)libperf-gtk.so
319 GTK_IN := $(OUTPUT)gtk-in.o 348 GTK_IN := $(OUTPUT)gtk-in.o
320
321install-gtk: $(OUTPUT)libperf-gtk.so
322 $(call QUIET_INSTALL, 'GTK UI') \
323 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(libdir_SQ)'; \
324 $(INSTALL) $(OUTPUT)libperf-gtk.so '$(DESTDIR_SQ)$(libdir_SQ)'
325endif 349endif
326 350
327ifdef ASCIIDOC8 351ifdef ASCIIDOC8
@@ -330,6 +354,21 @@ endif
330 354
331LIBS = -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
332 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
333export INSTALL SHELL_PATH 372export INSTALL SHELL_PATH
334 373
335### Build rules 374### Build rules
@@ -338,6 +377,14 @@ SHELL = $(SHELL_PATH)
338 377
339all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS) 378all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS)
340 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
341please_set_SHELL_PATH_to_a_more_modern_shell: 388please_set_SHELL_PATH_to_a_more_modern_shell:
342 $(Q)$$(:) 389 $(Q)$$(:)
343 390
@@ -348,10 +395,6 @@ strip: $(PROGRAMS) $(OUTPUT)perf
348 395
349PERF_IN := $(OUTPUT)perf-in.o 396PERF_IN := $(OUTPUT)perf-in.o
350 397
351export srctree OUTPUT RM CC LD AR CFLAGS V BISON FLEX AWK
352export HOSTCC HOSTLD HOSTAR
353include $(srctree)/tools/build/Makefile.include
354
355JEVENTS := $(OUTPUT)pmu-events/jevents 398JEVENTS := $(OUTPUT)pmu-events/jevents
356JEVENTS_IN := $(OUTPUT)pmu-events/jevents-in.o 399JEVENTS_IN := $(OUTPUT)pmu-events/jevents-in.o
357 400
@@ -362,99 +405,6 @@ export JEVENTS
362build := -f $(srctree)/tools/build/Makefile.build dir=. obj 405build := -f $(srctree)/tools/build/Makefile.build dir=. obj
363 406
364$(PERF_IN): prepare FORCE 407$(PERF_IN): prepare FORCE
365 @(test -f ../../include/uapi/linux/perf_event.h && ( \
366 (diff -B ../include/uapi/linux/perf_event.h ../../include/uapi/linux/perf_event.h >/dev/null) \
367 || echo "Warning: tools/include/uapi/linux/perf_event.h differs from kernel" >&2 )) || true
368 @(test -f ../../include/linux/hash.h && ( \
369 (diff -B ../include/linux/hash.h ../../include/linux/hash.h >/dev/null) \
370 || echo "Warning: tools/include/linux/hash.h differs from kernel" >&2 )) || true
371 @(test -f ../../include/uapi/linux/hw_breakpoint.h && ( \
372 (diff -B ../include/uapi/linux/hw_breakpoint.h ../../include/uapi/linux/hw_breakpoint.h >/dev/null) \
373 || echo "Warning: tools/include/uapi/linux/hw_breakpoint.h differs from kernel" >&2 )) || true
374 @(test -f ../../arch/x86/include/asm/disabled-features.h && ( \
375 (diff -B ../arch/x86/include/asm/disabled-features.h ../../arch/x86/include/asm/disabled-features.h >/dev/null) \
376 || echo "Warning: tools/arch/x86/include/asm/disabled-features.h differs from kernel" >&2 )) || true
377 @(test -f ../../arch/x86/include/asm/required-features.h && ( \
378 (diff -B ../arch/x86/include/asm/required-features.h ../../arch/x86/include/asm/required-features.h >/dev/null) \
379 || echo "Warning: tools/arch/x86/include/asm/required-features.h differs from kernel" >&2 )) || true
380 @(test -f ../../arch/x86/include/asm/cpufeatures.h && ( \
381 (diff -B ../arch/x86/include/asm/cpufeatures.h ../../arch/x86/include/asm/cpufeatures.h >/dev/null) \
382 || echo "Warning: tools/arch/x86/include/asm/cpufeatures.h differs from kernel" >&2 )) || true
383 @(test -f ../../arch/x86/lib/memcpy_64.S && ( \
384 (diff -B ../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memcpy_64.S >/dev/null) \
385 || echo "Warning: tools/arch/x86/lib/memcpy_64.S differs from kernel" >&2 )) || true
386 @(test -f ../../arch/x86/lib/memset_64.S && ( \
387 (diff -B ../arch/x86/lib/memset_64.S ../../arch/x86/lib/memset_64.S >/dev/null) \
388 || echo "Warning: tools/arch/x86/lib/memset_64.S differs from kernel" >&2 )) || true
389 @(test -f ../../arch/arm/include/uapi/asm/perf_regs.h && ( \
390 (diff -B ../arch/arm/include/uapi/asm/perf_regs.h ../../arch/arm/include/uapi/asm/perf_regs.h >/dev/null) \
391 || echo "Warning: tools/arch/arm/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
392 @(test -f ../../arch/arm64/include/uapi/asm/perf_regs.h && ( \
393 (diff -B ../arch/arm64/include/uapi/asm/perf_regs.h ../../arch/arm64/include/uapi/asm/perf_regs.h >/dev/null) \
394 || echo "Warning: tools/arch/arm64/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
395 @(test -f ../../arch/powerpc/include/uapi/asm/perf_regs.h && ( \
396 (diff -B ../arch/powerpc/include/uapi/asm/perf_regs.h ../../arch/powerpc/include/uapi/asm/perf_regs.h >/dev/null) \
397 || echo "Warning: tools/arch/powerpc/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
398 @(test -f ../../arch/x86/include/uapi/asm/perf_regs.h && ( \
399 (diff -B ../arch/x86/include/uapi/asm/perf_regs.h ../../arch/x86/include/uapi/asm/perf_regs.h >/dev/null) \
400 || echo "Warning: tools/arch/x86/include/uapi/asm/perf_regs.h differs from kernel" >&2 )) || true
401 @(test -f ../../arch/x86/include/uapi/asm/kvm.h && ( \
402 (diff -B ../arch/x86/include/uapi/asm/kvm.h ../../arch/x86/include/uapi/asm/kvm.h >/dev/null) \
403 || echo "Warning: tools/arch/x86/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
404 @(test -f ../../arch/x86/include/uapi/asm/kvm_perf.h && ( \
405 (diff -B ../arch/x86/include/uapi/asm/kvm_perf.h ../../arch/x86/include/uapi/asm/kvm_perf.h >/dev/null) \
406 || echo "Warning: tools/arch/x86/include/uapi/asm/kvm_perf.h differs from kernel" >&2 )) || true
407 @(test -f ../../arch/x86/include/uapi/asm/svm.h && ( \
408 (diff -B ../arch/x86/include/uapi/asm/svm.h ../../arch/x86/include/uapi/asm/svm.h >/dev/null) \
409 || echo "Warning: tools/arch/x86/include/uapi/asm/svm.h differs from kernel" >&2 )) || true
410 @(test -f ../../arch/x86/include/uapi/asm/vmx.h && ( \
411 (diff -B ../arch/x86/include/uapi/asm/vmx.h ../../arch/x86/include/uapi/asm/vmx.h >/dev/null) \
412 || echo "Warning: tools/arch/x86/include/uapi/asm/vmx.h differs from kernel" >&2 )) || true
413 @(test -f ../../arch/powerpc/include/uapi/asm/kvm.h && ( \
414 (diff -B ../arch/powerpc/include/uapi/asm/kvm.h ../../arch/powerpc/include/uapi/asm/kvm.h >/dev/null) \
415 || echo "Warning: tools/arch/powerpc/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
416 @(test -f ../../arch/s390/include/uapi/asm/kvm.h && ( \
417 (diff -B ../arch/s390/include/uapi/asm/kvm.h ../../arch/s390/include/uapi/asm/kvm.h >/dev/null) \
418 || echo "Warning: tools/arch/s390/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
419 @(test -f ../../arch/s390/include/uapi/asm/kvm_perf.h && ( \
420 (diff -B ../arch/s390/include/uapi/asm/kvm_perf.h ../../arch/s390/include/uapi/asm/kvm_perf.h >/dev/null) \
421 || echo "Warning: tools/arch/s390/include/uapi/asm/kvm_perf.h differs from kernel" >&2 )) || true
422 @(test -f ../../arch/s390/include/uapi/asm/sie.h && ( \
423 (diff -B ../arch/s390/include/uapi/asm/sie.h ../../arch/s390/include/uapi/asm/sie.h >/dev/null) \
424 || echo "Warning: tools/arch/s390/include/uapi/asm/sie.h differs from kernel" >&2 )) || true
425 @(test -f ../../arch/arm/include/uapi/asm/kvm.h && ( \
426 (diff -B ../arch/arm/include/uapi/asm/kvm.h ../../arch/arm/include/uapi/asm/kvm.h >/dev/null) \
427 || echo "Warning: tools/arch/arm/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
428 @(test -f ../../arch/arm64/include/uapi/asm/kvm.h && ( \
429 (diff -B ../arch/arm64/include/uapi/asm/kvm.h ../../arch/arm64/include/uapi/asm/kvm.h >/dev/null) \
430 || echo "Warning: tools/arch/arm64/include/uapi/asm/kvm.h differs from kernel" >&2 )) || true
431 @(test -f ../../include/asm-generic/bitops/arch_hweight.h && ( \
432 (diff -B ../include/asm-generic/bitops/arch_hweight.h ../../include/asm-generic/bitops/arch_hweight.h >/dev/null) \
433 || echo "Warning: tools/include/asm-generic/bitops/arch_hweight.h differs from kernel" >&2 )) || true
434 @(test -f ../../include/asm-generic/bitops/const_hweight.h && ( \
435 (diff -B ../include/asm-generic/bitops/const_hweight.h ../../include/asm-generic/bitops/const_hweight.h >/dev/null) \
436 || echo "Warning: tools/include/asm-generic/bitops/const_hweight.h differs from kernel" >&2 )) || true
437 @(test -f ../../include/asm-generic/bitops/__fls.h && ( \
438 (diff -B ../include/asm-generic/bitops/__fls.h ../../include/asm-generic/bitops/__fls.h >/dev/null) \
439 || echo "Warning: tools/include/asm-generic/bitops/__fls.h differs from kernel" >&2 )) || true
440 @(test -f ../../include/asm-generic/bitops/fls.h && ( \
441 (diff -B ../include/asm-generic/bitops/fls.h ../../include/asm-generic/bitops/fls.h >/dev/null) \
442 || echo "Warning: tools/include/asm-generic/bitops/fls.h differs from kernel" >&2 )) || true
443 @(test -f ../../include/asm-generic/bitops/fls64.h && ( \
444 (diff -B ../include/asm-generic/bitops/fls64.h ../../include/asm-generic/bitops/fls64.h >/dev/null) \
445 || echo "Warning: tools/include/asm-generic/bitops/fls64.h differs from kernel" >&2 )) || true
446 @(test -f ../../include/linux/coresight-pmu.h && ( \
447 (diff -B ../include/linux/coresight-pmu.h ../../include/linux/coresight-pmu.h >/dev/null) \
448 || echo "Warning: tools/include/linux/coresight-pmu.h differs from kernel" >&2 )) || true
449 @(test -f ../../include/uapi/asm-generic/mman-common.h && ( \
450 (diff -B ../include/uapi/asm-generic/mman-common.h ../../include/uapi/asm-generic/mman-common.h >/dev/null) \
451 || echo "Warning: tools/include/uapi/asm-generic/mman-common.h differs from kernel" >&2 )) || true
452 @(test -f ../../include/uapi/asm-generic/mman.h && ( \
453 (diff -B -I "^#include <\(uapi/\)*asm-generic/mman-common.h>$$" ../include/uapi/asm-generic/mman.h ../../include/uapi/asm-generic/mman.h >/dev/null) \
454 || echo "Warning: tools/include/uapi/asm-generic/mman.h differs from kernel" >&2 )) || true
455 @(test -f ../../include/uapi/linux/mman.h && ( \
456 (diff -B -I "^#include <\(uapi/\)*asm/mman.h>$$" ../include/uapi/linux/mman.h ../../include/uapi/linux/mman.h >/dev/null) \
457 || echo "Warning: tools/include/uapi/linux/mman.h differs from kernel" >&2 )) || true
458 $(Q)$(MAKE) $(build)=perf 408 $(Q)$(MAKE) $(build)=perf
459 409
460$(JEVENTS_IN): FORCE 410$(JEVENTS_IN): FORCE
@@ -470,7 +420,7 @@ $(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(PMU_EVENTS_IN) $(LIBTRACEEVENT_DYNAMIC_L
470 $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS) \ 420 $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS) \
471 $(PERF_IN) $(PMU_EVENTS_IN) $(LIBS) -o $@ 421 $(PERF_IN) $(PMU_EVENTS_IN) $(LIBS) -o $@
472 422
473$(GTK_IN): fixdep FORCE 423$(GTK_IN): FORCE
474 $(Q)$(MAKE) $(build)=gtk 424 $(Q)$(MAKE) $(build)=gtk
475 425
476$(OUTPUT)libperf-gtk.so: $(GTK_IN) $(PERFLIBS) 426$(OUTPUT)libperf-gtk.so: $(GTK_IN) $(PERFLIBS)
@@ -484,6 +434,10 @@ $(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt)
484$(SCRIPTS) : % : %.sh 434$(SCRIPTS) : % : %.sh
485 $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@' 435 $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@'
486 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
487# These can record PERF_VERSION 441# These can record PERF_VERSION
488perf.spec $(SCRIPTS) \ 442perf.spec $(SCRIPTS) \
489 : $(OUTPUT)PERF-VERSION-FILE 443 : $(OUTPUT)PERF-VERSION-FILE
@@ -515,7 +469,7 @@ endif
515__build-dir = $(subst $(OUTPUT),,$(dir $@)) 469__build-dir = $(subst $(OUTPUT),,$(dir $@))
516build-dir = $(if $(__build-dir),$(__build-dir),.) 470build-dir = $(if $(__build-dir),$(__build-dir),.)
517 471
518prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h fixdep archheaders 472prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h archheaders
519 473
520$(OUTPUT)%.o: %.c prepare FORCE 474$(OUTPUT)%.o: %.c prepare FORCE
521 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@ 475 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@
@@ -551,11 +505,21 @@ $(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-vdso-map.c
551 $(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
552endif 506endif
553 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
554$(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h) 518$(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h)
555 519
556LIBPERF_IN := $(OUTPUT)libperf-in.o 520LIBPERF_IN := $(OUTPUT)libperf-in.o
557 521
558$(LIBPERF_IN): prepare fixdep FORCE 522$(LIBPERF_IN): prepare FORCE
559 $(Q)$(MAKE) $(build)=libperf 523 $(Q)$(MAKE) $(build)=libperf
560 524
561$(LIB_FILE): $(LIBPERF_IN) 525$(LIB_FILE): $(LIBPERF_IN)
@@ -563,10 +527,10 @@ $(LIB_FILE): $(LIBPERF_IN)
563 527
564LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ) 528LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ)
565 529
566$(LIBTRACEEVENT): fixdep FORCE 530$(LIBTRACEEVENT): FORCE
567 $(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
568 532
569libtraceevent_plugins: fixdep FORCE 533libtraceevent_plugins: FORCE
570 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins 534 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins
571 535
572$(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins 536$(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins
@@ -579,21 +543,21 @@ $(LIBTRACEEVENT)-clean:
579install-traceevent-plugins: libtraceevent_plugins 543install-traceevent-plugins: libtraceevent_plugins
580 $(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
581 545
582$(LIBAPI): fixdep FORCE 546$(LIBAPI): FORCE
583 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) $(OUTPUT)libapi.a 547 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) $(OUTPUT)libapi.a
584 548
585$(LIBAPI)-clean: 549$(LIBAPI)-clean:
586 $(call QUIET_CLEAN, libapi) 550 $(call QUIET_CLEAN, libapi)
587 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) clean >/dev/null 551 $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) clean >/dev/null
588 552
589$(LIBBPF): fixdep FORCE 553$(LIBBPF): FORCE
590 $(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)
591 555
592$(LIBBPF)-clean: 556$(LIBBPF)-clean:
593 $(call QUIET_CLEAN, libbpf) 557 $(call QUIET_CLEAN, libbpf)
594 $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) clean >/dev/null 558 $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) clean >/dev/null
595 559
596$(LIBSUBCMD): fixdep FORCE 560$(LIBSUBCMD): FORCE
597 $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) $(OUTPUT)libsubcmd.a 561 $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) $(OUTPUT)libsubcmd.a
598 562
599$(LIBSUBCMD)-clean: 563$(LIBSUBCMD)-clean:
@@ -673,7 +637,14 @@ check: $(OUTPUT)common-cmds.h
673 637
674### Installation rules 638### Installation rules
675 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
676install-gtk: 646install-gtk:
647endif
677 648
678install-tools: all install-gtk 649install-tools: all install-gtk
679 $(call QUIET_INSTALL, binaries) \ 650 $(call QUIET_INSTALL, binaries) \
@@ -688,6 +659,11 @@ ifndef NO_PERF_READ_VDSOX32
688 $(call QUIET_INSTALL, perf-read-vdsox32) \ 659 $(call QUIET_INSTALL, perf-read-vdsox32) \
689 $(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(bindir_SQ)'; 660 $(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(bindir_SQ)';
690endif 661endif
662ifndef NO_JVMTI
663 $(call QUIET_INSTALL, $(LIBJVMTI)) \
664 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(libdir_SQ)'; \
665 $(INSTALL) $(OUTPUT)$(LIBJVMTI) '$(DESTDIR_SQ)$(libdir_SQ)';
666endif
691 $(call QUIET_INSTALL, libexec) \ 667 $(call QUIET_INSTALL, libexec) \
692 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' 668 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
693 $(call QUIET_INSTALL, perf-archive) \ 669 $(call QUIET_INSTALL, perf-archive) \
@@ -729,9 +705,9 @@ install-tests: all install-gtk
729 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \ 705 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \
730 $(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr' 706 $(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'
731 707
732install-bin: install-tools install-tests 708install-bin: install-tools install-tests install-traceevent-plugins
733 709
734install: install-bin try-install-man install-traceevent-plugins 710install: install-bin try-install-man
735 711
736install-python_ext: 712install-python_ext:
737 $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)' 713 $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
@@ -750,13 +726,13 @@ config-clean:
750 $(call QUIET_CLEAN, config) 726 $(call QUIET_CLEAN, config)
751 $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null 727 $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null
752 728
753clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean 729clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean fixdep-clean
754 $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) 730 $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
755 $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete 731 $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
756 $(Q)$(RM) $(OUTPUT).config-detected 732 $(Q)$(RM) $(OUTPUT).config-detected
757 $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents 733 $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents $(OUTPUT)$(LIBJVMTI).so
758 $(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* \ 734 $(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* \
759 $(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \ 735 $(OUTPUT)util/intel-pt-decoder/inat-tables.c \
760 $(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \ 736 $(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \
761 $(OUTPUT)pmu-events/pmu-events.c 737 $(OUTPUT)pmu-events/pmu-events.c
762 $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean 738 $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
@@ -790,3 +766,4 @@ FORCE:
790.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare 766.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare
791.PHONY: libtraceevent_plugins archheaders 767.PHONY: libtraceevent_plugins archheaders
792 768
769endif # 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/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
index 47d584da5819..dfea6b635525 100644
--- a/tools/perf/arch/arm/util/cs-etm.c
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -575,8 +575,6 @@ static FILE *cs_device__open_file(const char *name)
575 snprintf(path, PATH_MAX, 575 snprintf(path, PATH_MAX,
576 "%s" CS_BUS_DEVICE_PATH "%s", sysfs, name); 576 "%s" CS_BUS_DEVICE_PATH "%s", sysfs, name);
577 577
578 printf("path: %s\n", path);
579
580 if (stat(path, &st) < 0) 578 if (stat(path, &st) < 0)
581 return NULL; 579 return NULL;
582 580
diff --git a/tools/perf/arch/arm64/Makefile b/tools/perf/arch/arm64/Makefile
index 18b13518d8d8..eebe1ec9d2ee 100644
--- a/tools/perf/arch/arm64/Makefile
+++ b/tools/perf/arch/arm64/Makefile
@@ -2,3 +2,4 @@ ifndef NO_DWARF
2PERF_HAVE_DWARF_REGS := 1 2PERF_HAVE_DWARF_REGS := 1
3endif 3endif
4PERF_HAVE_JITDUMP := 1 4PERF_HAVE_JITDUMP := 1
5PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1
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
index 26759363f921..36e375f5a211 100644
--- a/tools/perf/arch/arm64/include/dwarf-regs-table.h
+++ b/tools/perf/arch/arm64/include/dwarf-regs-table.h
@@ -2,12 +2,12 @@
2/* This is included in perf/util/dwarf-regs.c */ 2/* This is included in perf/util/dwarf-regs.c */
3 3
4static const char * const aarch64_regstr_tbl[] = { 4static const char * const aarch64_regstr_tbl[] = {
5 "%r0", "%r1", "%r2", "%r3", "%r4", 5 "%x0", "%x1", "%x2", "%x3", "%x4",
6 "%r5", "%r6", "%r7", "%r8", "%r9", 6 "%x5", "%x6", "%x7", "%x8", "%x9",
7 "%r10", "%r11", "%r12", "%r13", "%r14", 7 "%x10", "%x11", "%x12", "%x13", "%x14",
8 "%r15", "%r16", "%r17", "%r18", "%r19", 8 "%x15", "%x16", "%x17", "%x18", "%x19",
9 "%r20", "%r21", "%r22", "%r23", "%r24", 9 "%x20", "%x21", "%x22", "%x23", "%x24",
10 "%r25", "%r26", "%r27", "%r28", "%r29", 10 "%x25", "%x26", "%x27", "%x28", "%x29",
11 "%lr", "%sp", 11 "%lr", "%sp",
12}; 12};
13#endif 13#endif
diff --git a/tools/perf/arch/arm64/util/dwarf-regs.c b/tools/perf/arch/arm64/util/dwarf-regs.c
index d49efeb8172e..068b6189157b 100644
--- a/tools/perf/arch/arm64/util/dwarf-regs.c
+++ b/tools/perf/arch/arm64/util/dwarf-regs.c
@@ -10,17 +10,20 @@
10 10
11#include <stddef.h> 11#include <stddef.h>
12#include <dwarf-regs.h> 12#include <dwarf-regs.h>
13#include <linux/ptrace.h> /* for struct user_pt_regs */
14#include "util.h"
13 15
14struct pt_regs_dwarfnum { 16struct pt_regs_dwarfnum {
15 const char *name; 17 const char *name;
16 unsigned int dwarfnum; 18 unsigned int dwarfnum;
17}; 19};
18 20
19#define STR(s) #s
20#define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num} 21#define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num}
21#define GPR_DWARFNUM_NAME(num) \ 22#define GPR_DWARFNUM_NAME(num) \
22 {.name = STR(%x##num), .dwarfnum = num} 23 {.name = STR(%x##num), .dwarfnum = num}
23#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0} 24#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0}
25#define DWARFNUM2OFFSET(index) \
26 (index * sizeof((struct user_pt_regs *)0)->regs[0])
24 27
25/* 28/*
26 * Reference: 29 * Reference:
@@ -78,3 +81,13 @@ const char *get_arch_regstr(unsigned int n)
78 return roff->name; 81 return roff->name;
79 return NULL; 82 return NULL;
80} 83}
84
85int regs_query_register_offset(const char *name)
86{
87 const struct pt_regs_dwarfnum *roff;
88
89 for (roff = regdwarfnum_table; roff->name != NULL; roff++)
90 if (!strcmp(roff->name, name))
91 return DWARFNUM2OFFSET(roff->dwarfnum);
92 return -EINVAL;
93}
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/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/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/bench/futex-hash.c b/tools/perf/bench/futex-hash.c
index 8024cd5febd2..da04b8c5568a 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
diff --git a/tools/perf/bench/futex-lock-pi.c b/tools/perf/bench/futex-lock-pi.c
index 936d89d30483..91877777ec6e 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
diff --git a/tools/perf/bench/mem-functions.c b/tools/perf/bench/mem-functions.c
index c684910e5a48..52504a83b5a1 100644
--- a/tools/perf/bench/mem-functions.c
+++ b/tools/perf/bench/mem-functions.c
@@ -106,9 +106,10 @@ static double timeval2double(struct timeval *ts)
106 106
107struct bench_mem_info { 107struct bench_mem_info {
108 const struct function *functions; 108 const struct function *functions;
109 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);
110 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);
111 const char *const *usage; 111 const char *const *usage;
112 bool alloc_src;
112}; 113};
113 114
114static 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)
@@ -116,16 +117,26 @@ static void __bench_mem_function(struct bench_mem_info *info, int r_idx, size_t
116 const struct function *r = &info->functions[r_idx]; 117 const struct function *r = &info->functions[r_idx];
117 double result_bps = 0.0; 118 double result_bps = 0.0;
118 u64 result_cycles = 0; 119 u64 result_cycles = 0;
120 void *src = NULL, *dst = zalloc(size);
119 121
120 printf("# function '%s' (%s)\n", r->name, r->desc); 122 printf("# function '%s' (%s)\n", r->name, r->desc);
121 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
122 if (bench_format == BENCH_FORMAT_DEFAULT) 133 if (bench_format == BENCH_FORMAT_DEFAULT)
123 printf("# Copying %s bytes ...\n\n", size_str); 134 printf("# Copying %s bytes ...\n\n", size_str);
124 135
125 if (use_cycles) { 136 if (use_cycles) {
126 result_cycles = info->do_cycles(r, size); 137 result_cycles = info->do_cycles(r, size, src, dst);
127 } else { 138 } else {
128 result_bps = info->do_gettimeofday(r, size); 139 result_bps = info->do_gettimeofday(r, size, src, dst);
129 } 140 }
130 141
131 switch (bench_format) { 142 switch (bench_format) {
@@ -149,6 +160,14 @@ static void __bench_mem_function(struct bench_mem_info *info, int r_idx, size_t
149 BUG_ON(1); 160 BUG_ON(1);
150 break; 161 break;
151 } 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;
152} 171}
153 172
154static 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)
@@ -201,28 +220,14 @@ static int bench_mem_common(int argc, const char **argv, struct bench_mem_info *
201 return 0; 220 return 0;
202} 221}
203 222
204static 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)
205{
206 *dst = zalloc(size);
207 if (!*dst)
208 die("memory allocation failed - maybe size is too large?\n");
209
210 *src = zalloc(size);
211 if (!*src)
212 die("memory allocation failed - maybe size is too large?\n");
213
214 /* Make sure to always prefault zero pages even if MMAP_THRESH is crossed: */
215 memset(*src, 0, size);
216}
217
218static u64 do_memcpy_cycles(const struct function *r, size_t size)
219{ 224{
220 u64 cycle_start = 0ULL, cycle_end = 0ULL; 225 u64 cycle_start = 0ULL, cycle_end = 0ULL;
221 void *src = NULL, *dst = NULL;
222 memcpy_t fn = r->fn.memcpy; 226 memcpy_t fn = r->fn.memcpy;
223 int i; 227 int i;
224 228
225 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);
226 231
227 /* 232 /*
228 * We prefault the freshly allocated memory range here, 233 * We prefault the freshly allocated memory range here,
@@ -235,20 +240,15 @@ static u64 do_memcpy_cycles(const struct function *r, size_t size)
235 fn(dst, src, size); 240 fn(dst, src, size);
236 cycle_end = get_cycles(); 241 cycle_end = get_cycles();
237 242
238 free(src);
239 free(dst);
240 return cycle_end - cycle_start; 243 return cycle_end - cycle_start;
241} 244}
242 245
243static 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)
244{ 247{
245 struct timeval tv_start, tv_end, tv_diff; 248 struct timeval tv_start, tv_end, tv_diff;
246 memcpy_t fn = r->fn.memcpy; 249 memcpy_t fn = r->fn.memcpy;
247 void *src = NULL, *dst = NULL;
248 int i; 250 int i;
249 251
250 memcpy_alloc_mem(&dst, &src, size);
251
252 /* 252 /*
253 * We prefault the freshly allocated memory range here, 253 * We prefault the freshly allocated memory range here,
254 * to not measure page fault overhead: 254 * to not measure page fault overhead:
@@ -262,9 +262,6 @@ static double do_memcpy_gettimeofday(const struct function *r, size_t size)
262 262
263 timersub(&tv_end, &tv_start, &tv_diff); 263 timersub(&tv_end, &tv_start, &tv_diff);
264 264
265 free(src);
266 free(dst);
267
268 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff)); 265 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff));
269} 266}
270 267
@@ -294,27 +291,18 @@ int bench_mem_memcpy(int argc, const char **argv, const char *prefix __maybe_unu
294 .do_cycles = do_memcpy_cycles, 291 .do_cycles = do_memcpy_cycles,
295 .do_gettimeofday = do_memcpy_gettimeofday, 292 .do_gettimeofday = do_memcpy_gettimeofday,
296 .usage = bench_mem_memcpy_usage, 293 .usage = bench_mem_memcpy_usage,
294 .alloc_src = true,
297 }; 295 };
298 296
299 return bench_mem_common(argc, argv, &info); 297 return bench_mem_common(argc, argv, &info);
300} 298}
301 299
302static 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)
303{
304 *dst = zalloc(size);
305 if (!*dst)
306 die("memory allocation failed - maybe size is too large?\n");
307}
308
309static u64 do_memset_cycles(const struct function *r, size_t size)
310{ 301{
311 u64 cycle_start = 0ULL, cycle_end = 0ULL; 302 u64 cycle_start = 0ULL, cycle_end = 0ULL;
312 memset_t fn = r->fn.memset; 303 memset_t fn = r->fn.memset;
313 void *dst = NULL;
314 int i; 304 int i;
315 305
316 memset_alloc_mem(&dst, size);
317
318 /* 306 /*
319 * We prefault the freshly allocated memory range here, 307 * We prefault the freshly allocated memory range here,
320 * to not measure page fault overhead: 308 * to not measure page fault overhead:
@@ -326,19 +314,15 @@ static u64 do_memset_cycles(const struct function *r, size_t size)
326 fn(dst, i, size); 314 fn(dst, i, size);
327 cycle_end = get_cycles(); 315 cycle_end = get_cycles();
328 316
329 free(dst);
330 return cycle_end - cycle_start; 317 return cycle_end - cycle_start;
331} 318}
332 319
333static 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)
334{ 321{
335 struct timeval tv_start, tv_end, tv_diff; 322 struct timeval tv_start, tv_end, tv_diff;
336 memset_t fn = r->fn.memset; 323 memset_t fn = r->fn.memset;
337 void *dst = NULL;
338 int i; 324 int i;
339 325
340 memset_alloc_mem(&dst, size);
341
342 /* 326 /*
343 * We prefault the freshly allocated memory range here, 327 * We prefault the freshly allocated memory range here,
344 * to not measure page fault overhead: 328 * to not measure page fault overhead:
@@ -352,7 +336,6 @@ static double do_memset_gettimeofday(const struct function *r, size_t size)
352 336
353 timersub(&tv_end, &tv_start, &tv_diff); 337 timersub(&tv_end, &tv_start, &tv_diff);
354 338
355 free(dst);
356 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff)); 339 return (double)(((double)size * nr_loops) / timeval2double(&tv_diff));
357} 340}
358 341
diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
index 8efe904e486b..3083fc36282b 100644
--- a/tools/perf/bench/numa.c
+++ b/tools/perf/bench/numa.c
@@ -43,6 +43,7 @@
43/* 43/*
44 * Debug printf: 44 * Debug printf:
45 */ 45 */
46#undef dprintf
46#define dprintf(x...) do { if (g && g->p.show_details >= 1) printf(x); } while (0) 47#define dprintf(x...) do { if (g && g->p.show_details >= 1) printf(x); } while (0)
47 48
48struct thread_data { 49struct thread_data {
@@ -1573,13 +1574,13 @@ static int __bench_numa(const char *name)
1573 "GB/sec,", "total-speed", "GB/sec total speed"); 1574 "GB/sec,", "total-speed", "GB/sec total speed");
1574 1575
1575 if (g->p.show_details >= 2) { 1576 if (g->p.show_details >= 2) {
1576 char tname[32]; 1577 char tname[14 + 2 * 10 + 1];
1577 struct thread_data *td; 1578 struct thread_data *td;
1578 for (p = 0; p < g->p.nr_proc; p++) { 1579 for (p = 0; p < g->p.nr_proc; p++) {
1579 for (t = 0; t < g->p.nr_threads; t++) { 1580 for (t = 0; t < g->p.nr_threads; t++) {
1580 memset(tname, 0, 32); 1581 memset(tname, 0, sizeof(tname));
1581 td = g->threads + p*g->p.nr_threads + t; 1582 td = g->threads + p*g->p.nr_threads + t;
1582 snprintf(tname, 32, "process%d:thread%d", p, t); 1583 snprintf(tname, sizeof(tname), "process%d:thread%d", p, t);
1583 print_res(tname, td->speed_gbs, 1584 print_res(tname, td->speed_gbs,
1584 "GB/sec", "thread-speed", "GB/sec/thread speed"); 1585 "GB/sec", "thread-speed", "GB/sec/thread speed");
1585 print_res(tname, td->system_time_ns / NSEC_PER_SEC, 1586 print_res(tname, td->system_time_ns / NSEC_PER_SEC,
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index ebb628332a6e..4f52d85f5ebc 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -410,6 +410,7 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
410 OPT_BOOLEAN('f', "force", &file.force, "don't complain, do it"), 410 OPT_BOOLEAN('f', "force", &file.force, "don't complain, do it"),
411 OPT_INCR('v', "verbose", &verbose, 411 OPT_INCR('v', "verbose", &verbose,
412 "be more verbose (show symbol address, etc)"), 412 "be more verbose (show symbol address, etc)"),
413 OPT_BOOLEAN('q', "quiet", &quiet, "do now show any message"),
413 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, 414 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
414 "dump raw trace in ASCII"), 415 "dump raw trace in ASCII"),
415 OPT_BOOLEAN(0, "gtk", &annotate.use_gtk, "Use the GTK interface"), 416 OPT_BOOLEAN(0, "gtk", &annotate.use_gtk, "Use the GTK interface"),
@@ -463,6 +464,9 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
463 annotate.sym_hist_filter = argv[0]; 464 annotate.sym_hist_filter = argv[0];
464 } 465 }
465 466
467 if (quiet)
468 perf_quiet_option();
469
466 file.path = input_name; 470 file.path = input_name;
467 471
468 annotate.session = perf_session__new(&file, false, &annotate.tool); 472 annotate.session = perf_session__new(&file, false, &annotate.tool);
diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
new file mode 100644
index 000000000000..e2b21723bbf8
--- /dev/null
+++ b/tools/perf/builtin-c2c.c
@@ -0,0 +1,2780 @@
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,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 "tot_recs,"
2480 "cpucnt,",
2481 add_sym ? "symbol," : "",
2482 add_dso ? "dso," : "",
2483 add_src ? "cl_srcline," : "",
2484 "node") < 0)
2485 return -ENOMEM;
2486
2487 c2c.show_src = add_src;
2488
2489 free(buf);
2490 return 0;
2491}
2492
2493static int setup_coalesce(const char *coalesce, bool no_source)
2494{
2495 const char *c = coalesce ?: coalesce_default;
2496
2497 if (asprintf(&c2c.cl_sort, "offset,%s", c) < 0)
2498 return -ENOMEM;
2499
2500 if (build_cl_output(c2c.cl_sort, no_source))
2501 return -1;
2502
2503 if (asprintf(&c2c.cl_resort, "offset,%s",
2504 c2c.display == DISPLAY_TOT ?
2505 "tot_hitm" :
2506 c2c.display == DISPLAY_RMT ?
2507 "rmt_hitm,lcl_hitm" :
2508 "lcl_hitm,rmt_hitm") < 0)
2509 return -ENOMEM;
2510
2511 pr_debug("coalesce sort fields: %s\n", c2c.cl_sort);
2512 pr_debug("coalesce resort fields: %s\n", c2c.cl_resort);
2513 pr_debug("coalesce output fields: %s\n", c2c.cl_output);
2514 return 0;
2515}
2516
2517static int perf_c2c__report(int argc, const char **argv)
2518{
2519 struct perf_session *session;
2520 struct ui_progress prog;
2521 struct perf_data_file file = {
2522 .mode = PERF_DATA_MODE_READ,
2523 };
2524 char callchain_default_opt[] = CALLCHAIN_DEFAULT_OPT;
2525 const char *display = NULL;
2526 const char *coalesce = NULL;
2527 bool no_source = false;
2528 const struct option options[] = {
2529 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
2530 "file", "vmlinux pathname"),
2531 OPT_STRING('i', "input", &input_name, "file",
2532 "the input file to process"),
2533 OPT_INCR('N', "node-info", &c2c.node_info,
2534 "show extra node info in report (repeat for more info)"),
2535#ifdef HAVE_SLANG_SUPPORT
2536 OPT_BOOLEAN(0, "stdio", &c2c.use_stdio, "Use the stdio interface"),
2537#endif
2538 OPT_BOOLEAN(0, "stats", &c2c.stats_only,
2539 "Use the stdio interface"),
2540 OPT_BOOLEAN(0, "full-symbols", &c2c.symbol_full,
2541 "Display full length of symbols"),
2542 OPT_BOOLEAN(0, "no-source", &no_source,
2543 "Do not display Source Line column"),
2544 OPT_BOOLEAN(0, "show-all", &c2c.show_all,
2545 "Show all captured HITM lines."),
2546 OPT_CALLBACK_DEFAULT('g', "call-graph", &callchain_param,
2547 "print_type,threshold[,print_limit],order,sort_key[,branch],value",
2548 callchain_help, &parse_callchain_opt,
2549 callchain_default_opt),
2550 OPT_STRING('d', "display", &display, "Switch HITM output type", "lcl,rmt"),
2551 OPT_STRING('c', "coalesce", &coalesce, "coalesce fields",
2552 "coalesce fields: pid,tid,iaddr,dso"),
2553 OPT_BOOLEAN('f', "force", &symbol_conf.force, "don't complain, do it"),
2554 OPT_PARENT(c2c_options),
2555 OPT_END()
2556 };
2557 int err = 0;
2558
2559 argc = parse_options(argc, argv, options, report_c2c_usage,
2560 PARSE_OPT_STOP_AT_NON_OPTION);
2561 if (argc)
2562 usage_with_options(report_c2c_usage, options);
2563
2564 if (c2c.stats_only)
2565 c2c.use_stdio = true;
2566
2567 if (!input_name || !strlen(input_name))
2568 input_name = "perf.data";
2569
2570 file.path = input_name;
2571 file.force = symbol_conf.force;
2572
2573 err = setup_display(display);
2574 if (err)
2575 goto out;
2576
2577 err = setup_coalesce(coalesce, no_source);
2578 if (err) {
2579 pr_debug("Failed to initialize hists\n");
2580 goto out;
2581 }
2582
2583 err = c2c_hists__init(&c2c.hists, "dcacheline", 2);
2584 if (err) {
2585 pr_debug("Failed to initialize hists\n");
2586 goto out;
2587 }
2588
2589 session = perf_session__new(&file, 0, &c2c.tool);
2590 if (session == NULL) {
2591 pr_debug("No memory for session\n");
2592 goto out;
2593 }
2594
2595 err = setup_nodes(session);
2596 if (err) {
2597 pr_err("Failed setup nodes\n");
2598 goto out;
2599 }
2600
2601 err = setup_callchain(session->evlist);
2602 if (err)
2603 goto out_session;
2604
2605 if (symbol__init(&session->header.env) < 0)
2606 goto out_session;
2607
2608 /* No pipe support at the moment. */
2609 if (perf_data_file__is_pipe(session->file)) {
2610 pr_debug("No pipe support at the moment.\n");
2611 goto out_session;
2612 }
2613
2614 if (c2c.use_stdio)
2615 use_browser = 0;
2616 else
2617 use_browser = 1;
2618
2619 setup_browser(false);
2620
2621 err = perf_session__process_events(session);
2622 if (err) {
2623 pr_err("failed to process sample\n");
2624 goto out_session;
2625 }
2626
2627 c2c_hists__reinit(&c2c.hists,
2628 "cl_idx,"
2629 "dcacheline,"
2630 "tot_recs,"
2631 "percent_hitm,"
2632 "tot_hitm,lcl_hitm,rmt_hitm,"
2633 "stores,stores_l1hit,stores_l1miss,"
2634 "dram_lcl,dram_rmt,"
2635 "ld_llcmiss,"
2636 "tot_loads,"
2637 "ld_fbhit,ld_l1hit,ld_l2hit,"
2638 "ld_lclhit,ld_rmthit",
2639 c2c.display == DISPLAY_TOT ? "tot_hitm" :
2640 c2c.display == DISPLAY_LCL ? "lcl_hitm" : "rmt_hitm"
2641 );
2642
2643 ui_progress__init(&prog, c2c.hists.hists.nr_entries, "Sorting...");
2644
2645 hists__collapse_resort(&c2c.hists.hists, NULL);
2646 hists__output_resort_cb(&c2c.hists.hists, &prog, resort_hitm_cb);
2647 hists__iterate_cb(&c2c.hists.hists, resort_cl_cb);
2648
2649 ui_progress__finish();
2650
2651 ui_quirks();
2652
2653 perf_c2c_display(session);
2654
2655out_session:
2656 perf_session__delete(session);
2657out:
2658 return err;
2659}
2660
2661static int parse_record_events(const struct option *opt,
2662 const char *str, int unset __maybe_unused)
2663{
2664 bool *event_set = (bool *) opt->value;
2665
2666 *event_set = true;
2667 return perf_mem_events__parse(str);
2668}
2669
2670
2671static const char * const __usage_record[] = {
2672 "perf c2c record [<options>] [<command>]",
2673 "perf c2c record [<options>] -- <command> [<options>]",
2674 NULL
2675};
2676
2677static const char * const *record_mem_usage = __usage_record;
2678
2679static int perf_c2c__record(int argc, const char **argv)
2680{
2681 int rec_argc, i = 0, j;
2682 const char **rec_argv;
2683 int ret;
2684 bool all_user = false, all_kernel = false;
2685 bool event_set = false;
2686 struct option options[] = {
2687 OPT_CALLBACK('e', "event", &event_set, "event",
2688 "event selector. Use 'perf mem record -e list' to list available events",
2689 parse_record_events),
2690 OPT_BOOLEAN('u', "all-user", &all_user, "collect only user level data"),
2691 OPT_BOOLEAN('k', "all-kernel", &all_kernel, "collect only kernel level data"),
2692 OPT_UINTEGER('l', "ldlat", &perf_mem_events__loads_ldlat, "setup mem-loads latency"),
2693 OPT_PARENT(c2c_options),
2694 OPT_END()
2695 };
2696
2697 if (perf_mem_events__init()) {
2698 pr_err("failed: memory events not supported\n");
2699 return -1;
2700 }
2701
2702 argc = parse_options(argc, argv, options, record_mem_usage,
2703 PARSE_OPT_KEEP_UNKNOWN);
2704
2705 rec_argc = argc + 10; /* max number of arguments */
2706 rec_argv = calloc(rec_argc + 1, sizeof(char *));
2707 if (!rec_argv)
2708 return -1;
2709
2710 rec_argv[i++] = "record";
2711
2712 if (!event_set) {
2713 perf_mem_events[PERF_MEM_EVENTS__LOAD].record = true;
2714 perf_mem_events[PERF_MEM_EVENTS__STORE].record = true;
2715 }
2716
2717 if (perf_mem_events[PERF_MEM_EVENTS__LOAD].record)
2718 rec_argv[i++] = "-W";
2719
2720 rec_argv[i++] = "-d";
2721 rec_argv[i++] = "--sample-cpu";
2722
2723 for (j = 0; j < PERF_MEM_EVENTS__MAX; j++) {
2724 if (!perf_mem_events[j].record)
2725 continue;
2726
2727 if (!perf_mem_events[j].supported) {
2728 pr_err("failed: event '%s' not supported\n",
2729 perf_mem_events[j].name);
2730 return -1;
2731 }
2732
2733 rec_argv[i++] = "-e";
2734 rec_argv[i++] = perf_mem_events__name(j);
2735 };
2736
2737 if (all_user)
2738 rec_argv[i++] = "--all-user";
2739
2740 if (all_kernel)
2741 rec_argv[i++] = "--all-kernel";
2742
2743 for (j = 0; j < argc; j++, i++)
2744 rec_argv[i] = argv[j];
2745
2746 if (verbose > 0) {
2747 pr_debug("calling: ");
2748
2749 j = 0;
2750
2751 while (rec_argv[j]) {
2752 pr_debug("%s ", rec_argv[j]);
2753 j++;
2754 }
2755 pr_debug("\n");
2756 }
2757
2758 ret = cmd_record(i, rec_argv, NULL);
2759 free(rec_argv);
2760 return ret;
2761}
2762
2763int cmd_c2c(int argc, const char **argv, const char *prefix __maybe_unused)
2764{
2765 argc = parse_options(argc, argv, c2c_options, c2c_usage,
2766 PARSE_OPT_STOP_AT_NON_OPTION);
2767
2768 if (!argc)
2769 usage_with_options(c2c_usage, c2c_options);
2770
2771 if (!strncmp(argv[0], "rec", 3)) {
2772 return perf_c2c__record(argc, argv);
2773 } else if (!strncmp(argv[0], "rep", 3)) {
2774 return perf_c2c__report(argc, argv);
2775 } else {
2776 usage_with_options(c2c_usage, c2c_options);
2777 }
2778
2779 return 0;
2780}
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 9ff0db4e2d0c..1b96a3122228 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -17,6 +17,7 @@
17#include "util/symbol.h" 17#include "util/symbol.h"
18#include "util/util.h" 18#include "util/util.h"
19#include "util/data.h" 19#include "util/data.h"
20#include "util/config.h"
20 21
21#include <stdlib.h> 22#include <stdlib.h>
22#include <math.h> 23#include <math.h>
@@ -30,6 +31,7 @@ enum {
30 PERF_HPP_DIFF__RATIO, 31 PERF_HPP_DIFF__RATIO,
31 PERF_HPP_DIFF__WEIGHTED_DIFF, 32 PERF_HPP_DIFF__WEIGHTED_DIFF,
32 PERF_HPP_DIFF__FORMULA, 33 PERF_HPP_DIFF__FORMULA,
34 PERF_HPP_DIFF__DELTA_ABS,
33 35
34 PERF_HPP_DIFF__MAX_INDEX 36 PERF_HPP_DIFF__MAX_INDEX
35}; 37};
@@ -64,7 +66,7 @@ static bool force;
64static bool show_period; 66static bool show_period;
65static bool show_formula; 67static bool show_formula;
66static bool show_baseline_only; 68static bool show_baseline_only;
67static unsigned int sort_compute; 69static unsigned int sort_compute = 1;
68 70
69static s64 compute_wdiff_w1; 71static s64 compute_wdiff_w1;
70static s64 compute_wdiff_w2; 72static s64 compute_wdiff_w2;
@@ -73,19 +75,22 @@ enum {
73 COMPUTE_DELTA, 75 COMPUTE_DELTA,
74 COMPUTE_RATIO, 76 COMPUTE_RATIO,
75 COMPUTE_WEIGHTED_DIFF, 77 COMPUTE_WEIGHTED_DIFF,
78 COMPUTE_DELTA_ABS,
76 COMPUTE_MAX, 79 COMPUTE_MAX,
77}; 80};
78 81
79const char *compute_names[COMPUTE_MAX] = { 82const char *compute_names[COMPUTE_MAX] = {
80 [COMPUTE_DELTA] = "delta", 83 [COMPUTE_DELTA] = "delta",
84 [COMPUTE_DELTA_ABS] = "delta-abs",
81 [COMPUTE_RATIO] = "ratio", 85 [COMPUTE_RATIO] = "ratio",
82 [COMPUTE_WEIGHTED_DIFF] = "wdiff", 86 [COMPUTE_WEIGHTED_DIFF] = "wdiff",
83}; 87};
84 88
85static int compute; 89static int compute = COMPUTE_DELTA_ABS;
86 90
87static int compute_2_hpp[COMPUTE_MAX] = { 91static int compute_2_hpp[COMPUTE_MAX] = {
88 [COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA, 92 [COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
93 [COMPUTE_DELTA_ABS] = PERF_HPP_DIFF__DELTA_ABS,
89 [COMPUTE_RATIO] = PERF_HPP_DIFF__RATIO, 94 [COMPUTE_RATIO] = PERF_HPP_DIFF__RATIO,
90 [COMPUTE_WEIGHTED_DIFF] = PERF_HPP_DIFF__WEIGHTED_DIFF, 95 [COMPUTE_WEIGHTED_DIFF] = PERF_HPP_DIFF__WEIGHTED_DIFF,
91}; 96};
@@ -111,6 +116,10 @@ static struct header_column {
111 .name = "Delta", 116 .name = "Delta",
112 .width = 7, 117 .width = 7,
113 }, 118 },
119 [PERF_HPP_DIFF__DELTA_ABS] = {
120 .name = "Delta Abs",
121 .width = 7,
122 },
114 [PERF_HPP_DIFF__RATIO] = { 123 [PERF_HPP_DIFF__RATIO] = {
115 .name = "Ratio", 124 .name = "Ratio",
116 .width = 14, 125 .width = 14,
@@ -298,6 +307,7 @@ static int formula_fprintf(struct hist_entry *he, struct hist_entry *pair,
298{ 307{
299 switch (compute) { 308 switch (compute) {
300 case COMPUTE_DELTA: 309 case COMPUTE_DELTA:
310 case COMPUTE_DELTA_ABS:
301 return formula_delta(he, pair, buf, size); 311 return formula_delta(he, pair, buf, size);
302 case COMPUTE_RATIO: 312 case COMPUTE_RATIO:
303 return formula_ratio(he, pair, buf, size); 313 return formula_ratio(he, pair, buf, size);
@@ -461,6 +471,7 @@ static void hists__precompute(struct hists *hists)
461 471
462 switch (compute) { 472 switch (compute) {
463 case COMPUTE_DELTA: 473 case COMPUTE_DELTA:
474 case COMPUTE_DELTA_ABS:
464 compute_delta(he, pair); 475 compute_delta(he, pair);
465 break; 476 break;
466 case COMPUTE_RATIO: 477 case COMPUTE_RATIO:
@@ -498,6 +509,13 @@ __hist_entry__cmp_compute(struct hist_entry *left, struct hist_entry *right,
498 509
499 return cmp_doubles(l, r); 510 return cmp_doubles(l, r);
500 } 511 }
512 case COMPUTE_DELTA_ABS:
513 {
514 double l = fabs(left->diff.period_ratio_delta);
515 double r = fabs(right->diff.period_ratio_delta);
516
517 return cmp_doubles(l, r);
518 }
501 case COMPUTE_RATIO: 519 case COMPUTE_RATIO:
502 { 520 {
503 double l = left->diff.period_ratio; 521 double l = left->diff.period_ratio;
@@ -564,7 +582,7 @@ hist_entry__cmp_compute_idx(struct hist_entry *left, struct hist_entry *right,
564 if (!p_left || !p_right) 582 if (!p_left || !p_right)
565 return p_left ? -1 : 1; 583 return p_left ? -1 : 1;
566 584
567 if (c != COMPUTE_DELTA) { 585 if (c != COMPUTE_DELTA && c != COMPUTE_DELTA_ABS) {
568 /* 586 /*
569 * The delta can be computed without the baseline, but 587 * The delta can be computed without the baseline, but
570 * others are not. Put those entries which have no 588 * others are not. Put those entries which have no
@@ -607,6 +625,15 @@ hist_entry__cmp_delta(struct perf_hpp_fmt *fmt,
607} 625}
608 626
609static int64_t 627static int64_t
628hist_entry__cmp_delta_abs(struct perf_hpp_fmt *fmt,
629 struct hist_entry *left, struct hist_entry *right)
630{
631 struct data__file *d = fmt_to_data_file(fmt);
632
633 return hist_entry__cmp_compute(right, left, COMPUTE_DELTA_ABS, d->idx);
634}
635
636static int64_t
610hist_entry__cmp_ratio(struct perf_hpp_fmt *fmt, 637hist_entry__cmp_ratio(struct perf_hpp_fmt *fmt,
611 struct hist_entry *left, struct hist_entry *right) 638 struct hist_entry *left, struct hist_entry *right)
612{ 639{
@@ -633,6 +660,14 @@ hist_entry__cmp_delta_idx(struct perf_hpp_fmt *fmt __maybe_unused,
633} 660}
634 661
635static int64_t 662static int64_t
663hist_entry__cmp_delta_abs_idx(struct perf_hpp_fmt *fmt __maybe_unused,
664 struct hist_entry *left, struct hist_entry *right)
665{
666 return hist_entry__cmp_compute_idx(right, left, COMPUTE_DELTA_ABS,
667 sort_compute);
668}
669
670static int64_t
636hist_entry__cmp_ratio_idx(struct perf_hpp_fmt *fmt __maybe_unused, 671hist_entry__cmp_ratio_idx(struct perf_hpp_fmt *fmt __maybe_unused,
637 struct hist_entry *left, struct hist_entry *right) 672 struct hist_entry *left, struct hist_entry *right)
638{ 673{
@@ -656,7 +691,7 @@ static void hists__process(struct hists *hists)
656 hists__precompute(hists); 691 hists__precompute(hists);
657 hists__output_resort(hists, NULL); 692 hists__output_resort(hists, NULL);
658 693
659 hists__fprintf(hists, true, 0, 0, 0, stdout, 694 hists__fprintf(hists, !quiet, 0, 0, 0, stdout,
660 symbol_conf.use_callchain); 695 symbol_conf.use_callchain);
661} 696}
662 697
@@ -704,12 +739,14 @@ static void data_process(void)
704 hists__link(hists_base, hists); 739 hists__link(hists_base, hists);
705 } 740 }
706 741
707 fprintf(stdout, "%s# Event '%s'\n#\n", first ? "" : "\n", 742 if (!quiet) {
708 perf_evsel__name(evsel_base)); 743 fprintf(stdout, "%s# Event '%s'\n#\n", first ? "" : "\n",
744 perf_evsel__name(evsel_base));
745 }
709 746
710 first = false; 747 first = false;
711 748
712 if (verbose || data__files_cnt > 2) 749 if (verbose > 0 || ((data__files_cnt > 2) && !quiet))
713 data__fprintf(); 750 data__fprintf();
714 751
715 /* Don't sort callchain for perf diff */ 752 /* Don't sort callchain for perf diff */
@@ -772,10 +809,11 @@ static const char * const diff_usage[] = {
772static const struct option options[] = { 809static const struct option options[] = {
773 OPT_INCR('v', "verbose", &verbose, 810 OPT_INCR('v', "verbose", &verbose,
774 "be more verbose (show symbol address, etc)"), 811 "be more verbose (show symbol address, etc)"),
812 OPT_BOOLEAN('q', "quiet", &quiet, "Do not show any message"),
775 OPT_BOOLEAN('b', "baseline-only", &show_baseline_only, 813 OPT_BOOLEAN('b', "baseline-only", &show_baseline_only,
776 "Show only items with match in baseline"), 814 "Show only items with match in baseline"),
777 OPT_CALLBACK('c', "compute", &compute, 815 OPT_CALLBACK('c', "compute", &compute,
778 "delta,ratio,wdiff:w1,w2 (default delta)", 816 "delta,delta-abs,ratio,wdiff:w1,w2 (default delta-abs)",
779 "Entries differential computation selection", 817 "Entries differential computation selection",
780 setup_compute), 818 setup_compute),
781 OPT_BOOLEAN('p', "period", &show_period, 819 OPT_BOOLEAN('p', "period", &show_period,
@@ -945,6 +983,7 @@ hpp__entry_pair(struct hist_entry *he, struct hist_entry *pair,
945 983
946 switch (idx) { 984 switch (idx) {
947 case PERF_HPP_DIFF__DELTA: 985 case PERF_HPP_DIFF__DELTA:
986 case PERF_HPP_DIFF__DELTA_ABS:
948 if (pair->diff.computed) 987 if (pair->diff.computed)
949 diff = pair->diff.period_ratio_delta; 988 diff = pair->diff.period_ratio_delta;
950 else 989 else
@@ -1118,6 +1157,10 @@ static void data__hpp_register(struct data__file *d, int idx)
1118 fmt->color = hpp__color_wdiff; 1157 fmt->color = hpp__color_wdiff;
1119 fmt->sort = hist_entry__cmp_wdiff; 1158 fmt->sort = hist_entry__cmp_wdiff;
1120 break; 1159 break;
1160 case PERF_HPP_DIFF__DELTA_ABS:
1161 fmt->color = hpp__color_delta;
1162 fmt->sort = hist_entry__cmp_delta_abs;
1163 break;
1121 default: 1164 default:
1122 fmt->sort = hist_entry__cmp_nop; 1165 fmt->sort = hist_entry__cmp_nop;
1123 break; 1166 break;
@@ -1195,11 +1238,14 @@ static int ui_init(void)
1195 case COMPUTE_WEIGHTED_DIFF: 1238 case COMPUTE_WEIGHTED_DIFF:
1196 fmt->sort = hist_entry__cmp_wdiff_idx; 1239 fmt->sort = hist_entry__cmp_wdiff_idx;
1197 break; 1240 break;
1241 case COMPUTE_DELTA_ABS:
1242 fmt->sort = hist_entry__cmp_delta_abs_idx;
1243 break;
1198 default: 1244 default:
1199 BUG_ON(1); 1245 BUG_ON(1);
1200 } 1246 }
1201 1247
1202 perf_hpp__register_sort_field(fmt); 1248 perf_hpp__prepend_sort_field(fmt);
1203 return 0; 1249 return 0;
1204} 1250}
1205 1251
@@ -1249,6 +1295,31 @@ static int data_init(int argc, const char **argv)
1249 return 0; 1295 return 0;
1250} 1296}
1251 1297
1298static int diff__config(const char *var, const char *value,
1299 void *cb __maybe_unused)
1300{
1301 if (!strcmp(var, "diff.order")) {
1302 sort_compute = perf_config_int(var, value);
1303 return 0;
1304 }
1305 if (!strcmp(var, "diff.compute")) {
1306 if (!strcmp(value, "delta")) {
1307 compute = COMPUTE_DELTA;
1308 } else if (!strcmp(value, "delta-abs")) {
1309 compute = COMPUTE_DELTA_ABS;
1310 } else if (!strcmp(value, "ratio")) {
1311 compute = COMPUTE_RATIO;
1312 } else if (!strcmp(value, "wdiff")) {
1313 compute = COMPUTE_WEIGHTED_DIFF;
1314 } else {
1315 pr_err("Invalid compute method: %s\n", value);
1316 return -1;
1317 }
1318 }
1319
1320 return 0;
1321}
1322
1252int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused) 1323int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
1253{ 1324{
1254 int ret = hists__init(); 1325 int ret = hists__init();
@@ -1256,8 +1327,13 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
1256 if (ret < 0) 1327 if (ret < 0)
1257 return ret; 1328 return ret;
1258 1329
1330 perf_config(diff__config, NULL);
1331
1259 argc = parse_options(argc, argv, options, diff_usage, 0); 1332 argc = parse_options(argc, argv, options, diff_usage, 0);
1260 1333
1334 if (quiet)
1335 perf_quiet_option();
1336
1261 if (symbol__init(NULL) < 0) 1337 if (symbol__init(NULL) < 0)
1262 return -1; 1338 return -1;
1263 1339
diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
new file mode 100644
index 000000000000..c3e643666c72
--- /dev/null
+++ b/tools/perf/builtin-ftrace.c
@@ -0,0 +1,265 @@
1/*
2 * builtin-ftrace.c
3 *
4 * Copyright (c) 2013 LG Electronics, Namhyung Kim <namhyung@kernel.org>
5 *
6 * Released under the GPL v2.
7 */
8
9#include "builtin.h"
10#include "perf.h"
11
12#include <unistd.h>
13#include <signal.h>
14
15#include "debug.h"
16#include <subcmd/parse-options.h>
17#include "evlist.h"
18#include "target.h"
19#include "thread_map.h"
20#include "util/config.h"
21
22
23#define DEFAULT_TRACER "function_graph"
24
25struct perf_ftrace {
26 struct perf_evlist *evlist;
27 struct target target;
28 const char *tracer;
29};
30
31static bool done;
32
33static void sig_handler(int sig __maybe_unused)
34{
35 done = true;
36}
37
38/*
39 * perf_evlist__prepare_workload will send a SIGUSR1 if the fork fails, since
40 * we asked by setting its exec_error to the function below,
41 * ftrace__workload_exec_failed_signal.
42 *
43 * XXX We need to handle this more appropriately, emitting an error, etc.
44 */
45static void ftrace__workload_exec_failed_signal(int signo __maybe_unused,
46 siginfo_t *info __maybe_unused,
47 void *ucontext __maybe_unused)
48{
49 /* workload_exec_errno = info->si_value.sival_int; */
50 done = true;
51}
52
53static int write_tracing_file(const char *name, const char *val)
54{
55 char *file;
56 int fd, ret = -1;
57 ssize_t size = strlen(val);
58
59 file = get_tracing_file(name);
60 if (!file) {
61 pr_debug("cannot get tracing file: %s\n", name);
62 return -1;
63 }
64
65 fd = open(file, O_WRONLY);
66 if (fd < 0) {
67 pr_debug("cannot open tracing file: %s\n", name);
68 goto out;
69 }
70
71 if (write(fd, val, size) == size)
72 ret = 0;
73 else
74 pr_debug("write '%s' to tracing/%s failed\n", val, name);
75
76 close(fd);
77out:
78 put_tracing_file(file);
79 return ret;
80}
81
82static int reset_tracing_files(struct perf_ftrace *ftrace __maybe_unused)
83{
84 if (write_tracing_file("tracing_on", "0") < 0)
85 return -1;
86
87 if (write_tracing_file("current_tracer", "nop") < 0)
88 return -1;
89
90 if (write_tracing_file("set_ftrace_pid", " ") < 0)
91 return -1;
92
93 return 0;
94}
95
96static int __cmd_ftrace(struct perf_ftrace *ftrace, int argc, const char **argv)
97{
98 char *trace_file;
99 int trace_fd;
100 char *trace_pid;
101 char buf[4096];
102 struct pollfd pollfd = {
103 .events = POLLIN,
104 };
105
106 if (geteuid() != 0) {
107 pr_err("ftrace only works for root!\n");
108 return -1;
109 }
110
111 if (argc < 1)
112 return -1;
113
114 signal(SIGINT, sig_handler);
115 signal(SIGUSR1, sig_handler);
116 signal(SIGCHLD, sig_handler);
117
118 reset_tracing_files(ftrace);
119
120 /* reset ftrace buffer */
121 if (write_tracing_file("trace", "0") < 0)
122 goto out;
123
124 if (perf_evlist__prepare_workload(ftrace->evlist, &ftrace->target,
125 argv, false, ftrace__workload_exec_failed_signal) < 0)
126 goto out;
127
128 if (write_tracing_file("current_tracer", ftrace->tracer) < 0) {
129 pr_err("failed to set current_tracer to %s\n", ftrace->tracer);
130 goto out;
131 }
132
133 if (asprintf(&trace_pid, "%d", thread_map__pid(ftrace->evlist->threads, 0)) < 0) {
134 pr_err("failed to allocate pid string\n");
135 goto out;
136 }
137
138 if (write_tracing_file("set_ftrace_pid", trace_pid) < 0) {
139 pr_err("failed to set pid: %s\n", trace_pid);
140 goto out_free_pid;
141 }
142
143 trace_file = get_tracing_file("trace_pipe");
144 if (!trace_file) {
145 pr_err("failed to open trace_pipe\n");
146 goto out_free_pid;
147 }
148
149 trace_fd = open(trace_file, O_RDONLY);
150
151 put_tracing_file(trace_file);
152
153 if (trace_fd < 0) {
154 pr_err("failed to open trace_pipe\n");
155 goto out_free_pid;
156 }
157
158 fcntl(trace_fd, F_SETFL, O_NONBLOCK);
159 pollfd.fd = trace_fd;
160
161 if (write_tracing_file("tracing_on", "1") < 0) {
162 pr_err("can't enable tracing\n");
163 goto out_close_fd;
164 }
165
166 perf_evlist__start_workload(ftrace->evlist);
167
168 while (!done) {
169 if (poll(&pollfd, 1, -1) < 0)
170 break;
171
172 if (pollfd.revents & POLLIN) {
173 int n = read(trace_fd, buf, sizeof(buf));
174 if (n < 0)
175 break;
176 if (fwrite(buf, n, 1, stdout) != 1)
177 break;
178 }
179 }
180
181 write_tracing_file("tracing_on", "0");
182
183 /* read remaining buffer contents */
184 while (true) {
185 int n = read(trace_fd, buf, sizeof(buf));
186 if (n <= 0)
187 break;
188 if (fwrite(buf, n, 1, stdout) != 1)
189 break;
190 }
191
192out_close_fd:
193 close(trace_fd);
194out_free_pid:
195 free(trace_pid);
196out:
197 reset_tracing_files(ftrace);
198
199 return done ? 0 : -1;
200}
201
202static int perf_ftrace_config(const char *var, const char *value, void *cb)
203{
204 struct perf_ftrace *ftrace = cb;
205
206 if (prefixcmp(var, "ftrace."))
207 return 0;
208
209 if (strcmp(var, "ftrace.tracer"))
210 return -1;
211
212 if (!strcmp(value, "function_graph") ||
213 !strcmp(value, "function")) {
214 ftrace->tracer = value;
215 return 0;
216 }
217
218 pr_err("Please select \"function_graph\" (default) or \"function\"\n");
219 return -1;
220}
221
222int cmd_ftrace(int argc, const char **argv, const char *prefix __maybe_unused)
223{
224 int ret;
225 struct perf_ftrace ftrace = {
226 .tracer = DEFAULT_TRACER,
227 .target = { .uid = UINT_MAX, },
228 };
229 const char * const ftrace_usage[] = {
230 "perf ftrace [<options>] <command>",
231 "perf ftrace [<options>] -- <command> [<options>]",
232 NULL
233 };
234 const struct option ftrace_options[] = {
235 OPT_STRING('t', "tracer", &ftrace.tracer, "tracer",
236 "tracer to use: function_graph(default) or function"),
237 OPT_INCR('v', "verbose", &verbose,
238 "be more verbose"),
239 OPT_END()
240 };
241
242 ret = perf_config(perf_ftrace_config, &ftrace);
243 if (ret < 0)
244 return -1;
245
246 argc = parse_options(argc, argv, ftrace_options, ftrace_usage,
247 PARSE_OPT_STOP_AT_NON_OPTION);
248 if (!argc)
249 usage_with_options(ftrace_usage, ftrace_options);
250
251 ftrace.evlist = perf_evlist__new();
252 if (ftrace.evlist == NULL)
253 return -ENOMEM;
254
255 ret = perf_evlist__create_maps(ftrace.evlist, &ftrace.target);
256 if (ret < 0)
257 goto out_delete_evlist;
258
259 ret = __cmd_ftrace(&ftrace, argc, argv);
260
261out_delete_evlist:
262 perf_evlist__delete(ftrace.evlist);
263
264 return ret;
265}
diff --git a/tools/perf/builtin-help.c b/tools/perf/builtin-help.c
index 3bdb2c78a21b..aed0d844e8c2 100644
--- a/tools/perf/builtin-help.c
+++ b/tools/perf/builtin-help.c
@@ -434,7 +434,7 @@ int cmd_help(int argc, const char **argv, const char *prefix __maybe_unused)
434 const char * const builtin_help_subcommands[] = { 434 const char * const builtin_help_subcommands[] = {
435 "buildid-cache", "buildid-list", "diff", "evlist", "help", "list", 435 "buildid-cache", "buildid-list", "diff", "evlist", "help", "list",
436 "record", "report", "bench", "stat", "timechart", "top", "annotate", 436 "record", "report", "bench", "stat", "timechart", "top", "annotate",
437 "script", "sched", "kmem", "lock", "kvm", "test", "inject", "mem", "data", 437 "script", "sched", "kallsyms", "kmem", "lock", "kvm", "test", "inject", "mem", "data",
438#ifdef HAVE_LIBELF_SUPPORT 438#ifdef HAVE_LIBELF_SUPPORT
439 "probe", 439 "probe",
440#endif 440#endif
@@ -447,11 +447,13 @@ int cmd_help(int argc, const char **argv, const char *prefix __maybe_unused)
447 NULL 447 NULL
448 }; 448 };
449 const char *alias; 449 const char *alias;
450 int rc = 0; 450 int rc;
451 451
452 load_command_list("perf-", &main_cmds, &other_cmds); 452 load_command_list("perf-", &main_cmds, &other_cmds);
453 453
454 perf_config(perf_help_config, &help_format); 454 rc = perf_config(perf_help_config, &help_format);
455 if (rc)
456 return rc;
455 457
456 argc = parse_options_subcommand(argc, argv, builtin_help_options, 458 argc = parse_options_subcommand(argc, argv, builtin_help_options,
457 builtin_help_subcommands, builtin_help_usage, 0); 459 builtin_help_subcommands, builtin_help_usage, 0);
diff --git a/tools/perf/builtin-kallsyms.c b/tools/perf/builtin-kallsyms.c
new file mode 100644
index 000000000000..224bfc454b4a
--- /dev/null
+++ b/tools/perf/builtin-kallsyms.c
@@ -0,0 +1,67 @@
1/*
2 * builtin-kallsyms.c
3 *
4 * Builtin command: Look for a symbol in the running kernel and its modules
5 *
6 * Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
7 *
8 * Released under the GPL v2. (and only v2, not any later version)
9 */
10#include "builtin.h"
11#include <linux/compiler.h>
12#include <subcmd/parse-options.h>
13#include "debug.h"
14#include "machine.h"
15#include "symbol.h"
16
17static int __cmd_kallsyms(int argc, const char **argv)
18{
19 int i;
20 struct machine *machine = machine__new_kallsyms();
21
22 if (machine == NULL) {
23 pr_err("Couldn't read /proc/kallsyms\n");
24 return -1;
25 }
26
27 for (i = 0; i < argc; ++i) {
28 struct map *map;
29 struct symbol *symbol = machine__find_kernel_function_by_name(machine, argv[i], &map);
30
31 if (symbol == NULL) {
32 printf("%s: not found\n", argv[i]);
33 continue;
34 }
35
36 printf("%s: %s %s %#" PRIx64 "-%#" PRIx64 " (%#" PRIx64 "-%#" PRIx64")\n",
37 symbol->name, map->dso->short_name, map->dso->long_name,
38 map->unmap_ip(map, symbol->start), map->unmap_ip(map, symbol->end),
39 symbol->start, symbol->end);
40 }
41
42 machine__delete(machine);
43 return 0;
44}
45
46int cmd_kallsyms(int argc, const char **argv, const char *prefix __maybe_unused)
47{
48 const struct option options[] = {
49 OPT_INCR('v', "verbose", &verbose, "be more verbose (show counter open errors, etc)"),
50 OPT_END()
51 };
52 const char * const kallsyms_usage[] = {
53 "perf kallsyms [<options>] symbol_name",
54 NULL
55 };
56
57 argc = parse_options(argc, argv, options, kallsyms_usage, 0);
58 if (argc < 1)
59 usage_with_options(kallsyms_usage, options);
60
61 symbol_conf.sort_by_name = true;
62 symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);
63 if (symbol__init(NULL) < 0)
64 return -1;
65
66 return __cmd_kallsyms(argc, argv);
67}
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c
index d426dcb18ce9..6da8d083e4e5 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
@@ -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) {
@@ -1044,7 +1065,7 @@ static void __print_page_alloc_result(struct perf_session *session, int n_lines)
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, &map); 1067 sym = machine__find_kernel_function(machine, data->callsite, &map);
1047 if (sym && sym->name) 1068 if (sym)
1048 caller = sym->name; 1069 caller = sym->name;
1049 else 1070 else
1050 scnprintf(buf, sizeof(buf), "%"PRIx64, data->callsite); 1071 scnprintf(buf, sizeof(buf), "%"PRIx64, data->callsite);
@@ -1086,7 +1107,7 @@ static void __print_page_caller_result(struct perf_session *session, int n_lines
1086 1107
1087 data = rb_entry(next, struct page_stat, node); 1108 data = rb_entry(next, struct page_stat, node);
1088 sym = machine__find_kernel_function(machine, data->callsite, &map); 1109 sym = machine__find_kernel_function(machine, data->callsite, &map);
1089 if (sym && sym->name) 1110 if (sym)
1090 caller = sym->name; 1111 caller = sym->name;
1091 else 1112 else
1092 scnprintf(buf, sizeof(buf), "%"PRIx64, data->callsite); 1113 scnprintf(buf, sizeof(buf), "%"PRIx64, data->callsite);
@@ -1128,6 +1149,11 @@ static void print_slab_summary(void)
1128 printf("\n========================\n"); 1149 printf("\n========================\n");
1129 printf("Total bytes requested: %'lu\n", total_requested); 1150 printf("Total bytes requested: %'lu\n", total_requested);
1130 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 }
1131 printf("Total bytes wasted on internal fragmentation: %'lu\n", 1157 printf("Total bytes wasted on internal fragmentation: %'lu\n",
1132 total_allocated - total_requested); 1158 total_allocated - total_requested);
1133 printf("Internal fragmentation: %f%%\n", 1159 printf("Internal fragmentation: %f%%\n",
@@ -1884,6 +1910,8 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
1884 OPT_CALLBACK_NOOPT(0, "page", NULL, NULL, "Analyze page allocator", 1910 OPT_CALLBACK_NOOPT(0, "page", NULL, NULL, "Analyze page allocator",
1885 parse_page_opt), 1911 parse_page_opt),
1886 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)"),
1887 OPT_END() 1915 OPT_END()
1888 }; 1916 };
1889 const char *const kmem_subcommands[] = { "record", "stat", NULL }; 1917 const char *const kmem_subcommands[] = { "record", "stat", NULL };
@@ -1892,10 +1920,12 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
1892 NULL 1920 NULL
1893 }; 1921 };
1894 struct perf_session *session; 1922 struct perf_session *session;
1895 int ret = -1;
1896 const char errmsg[] = "No %s allocation events found. Have you run 'perf kmem record --%s'?\n"; 1923 const char errmsg[] = "No %s allocation events found. Have you run 'perf kmem record --%s'?\n";
1924 int ret = perf_config(kmem_config, NULL);
1925
1926 if (ret)
1927 return ret;
1897 1928
1898 perf_config(kmem_config, NULL);
1899 argc = parse_options_subcommand(argc, argv, kmem_options, 1929 argc = parse_options_subcommand(argc, argv, kmem_options,
1900 kmem_subcommands, kmem_usage, 0); 1930 kmem_subcommands, kmem_usage, 0);
1901 1931
@@ -1920,6 +1950,8 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
1920 if (session == NULL) 1950 if (session == NULL)
1921 return -1; 1951 return -1;
1922 1952
1953 ret = -1;
1954
1923 if (kmem_slab) { 1955 if (kmem_slab) {
1924 if (!perf_evlist__find_tracepoint_by_name(session->evlist, 1956 if (!perf_evlist__find_tracepoint_by_name(session->evlist,
1925 "kmem:kmalloc")) { 1957 "kmem:kmalloc")) {
@@ -1944,6 +1976,11 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
1944 1976
1945 symbol__init(&session->header.env); 1977 symbol__init(&session->header.env);
1946 1978
1979 if (perf_time__parse_str(&ptime, time_str) != 0) {
1980 pr_err("Invalid time string\n");
1981 return -EINVAL;
1982 }
1983
1947 if (!strcmp(argv[0], "stat")) { 1984 if (!strcmp(argv[0], "stat")) {
1948 setlocale(LC_ALL, ""); 1985 setlocale(LC_ALL, "");
1949 1986
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index ba9322ff858b..3b9d98b5feef 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -14,6 +14,7 @@
14#include "util/parse-events.h" 14#include "util/parse-events.h"
15#include "util/cache.h" 15#include "util/cache.h"
16#include "util/pmu.h" 16#include "util/pmu.h"
17#include "util/debug.h"
17#include <subcmd/parse-options.h> 18#include <subcmd/parse-options.h>
18 19
19static bool desc_flag = true; 20static bool desc_flag = true;
@@ -29,6 +30,8 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
29 "Print extra event descriptions. --no-desc to not print."), 30 "Print extra event descriptions. --no-desc to not print."),
30 OPT_BOOLEAN('v', "long-desc", &long_desc_flag, 31 OPT_BOOLEAN('v', "long-desc", &long_desc_flag,
31 "Print longer event descriptions."), 32 "Print longer event descriptions."),
33 OPT_INCR(0, "debug", &verbose,
34 "Enable debugging output"),
32 OPT_END() 35 OPT_END()
33 }; 36 };
34 const char * const list_usage[] = { 37 const char * const list_usage[] = {
diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
index d1ce29be560e..6114e07ca613 100644
--- a/tools/perf/builtin-mem.c
+++ b/tools/perf/builtin-mem.c
@@ -42,8 +42,8 @@ static int parse_record_events(const struct option *opt,
42 42
43 fprintf(stderr, "%-13s%-*s%s\n", 43 fprintf(stderr, "%-13s%-*s%s\n",
44 e->tag, 44 e->tag,
45 verbose ? 25 : 0, 45 verbose > 0 ? 25 : 0,
46 verbose ? perf_mem_events__name(j) : "", 46 verbose > 0 ? perf_mem_events__name(j) : "",
47 e->supported ? ": available" : ""); 47 e->supported ? ": available" : "");
48 } 48 }
49 exit(0); 49 exit(0);
@@ -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 f87996b0cb29..1fcebc31a508 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -552,6 +552,8 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
552 OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, 552 OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel,
553 "Enable kernel symbol demangling"), 553 "Enable kernel symbol demangling"),
554 OPT_BOOLEAN(0, "cache", &probe_conf.cache, "Manipulate probe cache"), 554 OPT_BOOLEAN(0, "cache", &probe_conf.cache, "Manipulate probe cache"),
555 OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
556 "Look for files with symbols relative to this directory"),
555 OPT_END() 557 OPT_END()
556 }; 558 };
557 int ret; 559 int ret;
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 67d2a9003294..bc84a375295d 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -37,6 +37,7 @@
37#include "util/llvm-utils.h" 37#include "util/llvm-utils.h"
38#include "util/bpf-loader.h" 38#include "util/bpf-loader.h"
39#include "util/trigger.h" 39#include "util/trigger.h"
40#include "util/perf-hooks.h"
40#include "asm/bug.h" 41#include "asm/bug.h"
41 42
42#include <unistd.h> 43#include <unistd.h>
@@ -45,6 +46,15 @@
45#include <asm/bug.h> 46#include <asm/bug.h>
46#include <linux/time64.h> 47#include <linux/time64.h>
47 48
49struct switch_output {
50 bool enabled;
51 bool signal;
52 unsigned long size;
53 unsigned long time;
54 const char *str;
55 bool set;
56};
57
48struct record { 58struct record {
49 struct perf_tool tool; 59 struct perf_tool tool;
50 struct record_opts opts; 60 struct record_opts opts;
@@ -61,10 +71,33 @@ struct record {
61 bool no_buildid_cache_set; 71 bool no_buildid_cache_set;
62 bool buildid_all; 72 bool buildid_all;
63 bool timestamp_filename; 73 bool timestamp_filename;
64 bool switch_output; 74 struct switch_output switch_output;
65 unsigned long long samples; 75 unsigned long long samples;
66}; 76};
67 77
78static volatile int auxtrace_record__snapshot_started;
79static DEFINE_TRIGGER(auxtrace_snapshot_trigger);
80static DEFINE_TRIGGER(switch_output_trigger);
81
82static bool switch_output_signal(struct record *rec)
83{
84 return rec->switch_output.signal &&
85 trigger_is_ready(&switch_output_trigger);
86}
87
88static bool switch_output_size(struct record *rec)
89{
90 return rec->switch_output.size &&
91 trigger_is_ready(&switch_output_trigger) &&
92 (rec->bytes_written >= rec->switch_output.size);
93}
94
95static bool switch_output_time(struct record *rec)
96{
97 return rec->switch_output.time &&
98 trigger_is_ready(&switch_output_trigger);
99}
100
68static int record__write(struct record *rec, void *bf, size_t size) 101static int record__write(struct record *rec, void *bf, size_t size)
69{ 102{
70 if (perf_data_file__write(rec->session->file, bf, size) < 0) { 103 if (perf_data_file__write(rec->session->file, bf, size) < 0) {
@@ -73,6 +106,10 @@ static int record__write(struct record *rec, void *bf, size_t size)
73 } 106 }
74 107
75 rec->bytes_written += size; 108 rec->bytes_written += size;
109
110 if (switch_output_size(rec))
111 trigger_hit(&switch_output_trigger);
112
76 return 0; 113 return 0;
77} 114}
78 115
@@ -192,10 +229,6 @@ static volatile int done;
192static volatile int signr = -1; 229static volatile int signr = -1;
193static volatile int child_finished; 230static volatile int child_finished;
194 231
195static volatile int auxtrace_record__snapshot_started;
196static DEFINE_TRIGGER(auxtrace_snapshot_trigger);
197static DEFINE_TRIGGER(switch_output_trigger);
198
199static void sig_handler(int sig) 232static void sig_handler(int sig)
200{ 233{
201 if (sig == SIGCHLD) 234 if (sig == SIGCHLD)
@@ -206,6 +239,12 @@ static void sig_handler(int sig)
206 done = 1; 239 done = 1;
207} 240}
208 241
242static void sigsegv_handler(int sig)
243{
244 perf_hooks__recover();
245 sighandler_dump_stack(sig);
246}
247
209static void record__sig_exit(void) 248static void record__sig_exit(void)
210{ 249{
211 if (signr == -1) 250 if (signr == -1)
@@ -379,7 +418,7 @@ static int record__mmap(struct record *rec)
379 418
380static int record__open(struct record *rec) 419static int record__open(struct record *rec)
381{ 420{
382 char msg[512]; 421 char msg[BUFSIZ];
383 struct perf_evsel *pos; 422 struct perf_evsel *pos;
384 struct perf_evlist *evlist = rec->evlist; 423 struct perf_evlist *evlist = rec->evlist;
385 struct perf_session *session = rec->session; 424 struct perf_session *session = rec->session;
@@ -393,7 +432,7 @@ static int record__open(struct record *rec)
393try_again: 432try_again:
394 if (perf_evsel__open(pos, pos->cpus, pos->threads) < 0) { 433 if (perf_evsel__open(pos, pos->cpus, pos->threads) < 0) {
395 if (perf_evsel__fallback(pos, errno, msg, sizeof(msg))) { 434 if (perf_evsel__fallback(pos, errno, msg, sizeof(msg))) {
396 if (verbose) 435 if (verbose > 0)
397 ui__warning("%s\n", msg); 436 ui__warning("%s\n", msg);
398 goto try_again; 437 goto try_again;
399 } 438 }
@@ -616,22 +655,23 @@ record__finish_output(struct record *rec)
616 655
617static int record__synthesize_workload(struct record *rec, bool tail) 656static int record__synthesize_workload(struct record *rec, bool tail)
618{ 657{
619 struct { 658 int err;
620 struct thread_map map; 659 struct thread_map *thread_map;
621 struct thread_map_data map_data;
622 } thread_map;
623 660
624 if (rec->opts.tail_synthesize != tail) 661 if (rec->opts.tail_synthesize != tail)
625 return 0; 662 return 0;
626 663
627 thread_map.map.nr = 1; 664 thread_map = thread_map__new_by_tid(rec->evlist->workload.pid);
628 thread_map.map.map[0].pid = rec->evlist->workload.pid; 665 if (thread_map == NULL)
629 thread_map.map.map[0].comm = NULL; 666 return -1;
630 return perf_event__synthesize_thread_map(&rec->tool, &thread_map.map, 667
668 err = perf_event__synthesize_thread_map(&rec->tool, thread_map,
631 process_synthesized_event, 669 process_synthesized_event,
632 &rec->session->machines.host, 670 &rec->session->machines.host,
633 rec->opts.sample_address, 671 rec->opts.sample_address,
634 rec->opts.proc_map_timeout); 672 rec->opts.proc_map_timeout);
673 thread_map__put(thread_map);
674 return err;
635} 675}
636 676
637static int record__synthesize(struct record *rec, bool tail); 677static int record__synthesize(struct record *rec, bool tail);
@@ -705,6 +745,7 @@ static void workload_exec_failed_signal(int signo __maybe_unused,
705} 745}
706 746
707static void snapshot_sig_handler(int sig); 747static void snapshot_sig_handler(int sig);
748static void alarm_sig_handler(int sig);
708 749
709int __weak 750int __weak
710perf_event__synth_time_conv(const struct perf_event_mmap_page *pc __maybe_unused, 751perf_event__synth_time_conv(const struct perf_event_mmap_page *pc __maybe_unused,
@@ -833,12 +874,13 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
833 signal(SIGCHLD, sig_handler); 874 signal(SIGCHLD, sig_handler);
834 signal(SIGINT, sig_handler); 875 signal(SIGINT, sig_handler);
835 signal(SIGTERM, sig_handler); 876 signal(SIGTERM, sig_handler);
877 signal(SIGSEGV, sigsegv_handler);
836 878
837 if (rec->opts.auxtrace_snapshot_mode || rec->switch_output) { 879 if (rec->opts.auxtrace_snapshot_mode || rec->switch_output.enabled) {
838 signal(SIGUSR2, snapshot_sig_handler); 880 signal(SIGUSR2, snapshot_sig_handler);
839 if (rec->opts.auxtrace_snapshot_mode) 881 if (rec->opts.auxtrace_snapshot_mode)
840 trigger_on(&auxtrace_snapshot_trigger); 882 trigger_on(&auxtrace_snapshot_trigger);
841 if (rec->switch_output) 883 if (rec->switch_output.enabled)
842 trigger_on(&switch_output_trigger); 884 trigger_on(&switch_output_trigger);
843 } else { 885 } else {
844 signal(SIGUSR2, SIG_IGN); 886 signal(SIGUSR2, SIG_IGN);
@@ -970,6 +1012,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
970 1012
971 trigger_ready(&auxtrace_snapshot_trigger); 1013 trigger_ready(&auxtrace_snapshot_trigger);
972 trigger_ready(&switch_output_trigger); 1014 trigger_ready(&switch_output_trigger);
1015 perf_hooks__invoke_record_start();
973 for (;;) { 1016 for (;;) {
974 unsigned long long hits = rec->samples; 1017 unsigned long long hits = rec->samples;
975 1018
@@ -1034,6 +1077,10 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
1034 err = fd; 1077 err = fd;
1035 goto out_child; 1078 goto out_child;
1036 } 1079 }
1080
1081 /* re-arm the alarm */
1082 if (rec->switch_output.time)
1083 alarm(rec->switch_output.time);
1037 } 1084 }
1038 1085
1039 if (hits == rec->samples) { 1086 if (hits == rec->samples) {
@@ -1114,6 +1161,8 @@ out_child:
1114 } 1161 }
1115 } 1162 }
1116 1163
1164 perf_hooks__invoke_record_end();
1165
1117 if (!err && !quiet) { 1166 if (!err && !quiet) {
1118 char samples[128]; 1167 char samples[128];
1119 const char *postfix = rec->timestamp_filename ? 1168 const char *postfix = rec->timestamp_filename ?
@@ -1341,6 +1390,78 @@ out_free:
1341 return ret; 1390 return ret;
1342} 1391}
1343 1392
1393static void switch_output_size_warn(struct record *rec)
1394{
1395 u64 wakeup_size = perf_evlist__mmap_size(rec->opts.mmap_pages);
1396 struct switch_output *s = &rec->switch_output;
1397
1398 wakeup_size /= 2;
1399
1400 if (s->size < wakeup_size) {
1401 char buf[100];
1402
1403 unit_number__scnprintf(buf, sizeof(buf), wakeup_size);
1404 pr_warning("WARNING: switch-output data size lower than "
1405 "wakeup kernel buffer size (%s) "
1406 "expect bigger perf.data sizes\n", buf);
1407 }
1408}
1409
1410static int switch_output_setup(struct record *rec)
1411{
1412 struct switch_output *s = &rec->switch_output;
1413 static struct parse_tag tags_size[] = {
1414 { .tag = 'B', .mult = 1 },
1415 { .tag = 'K', .mult = 1 << 10 },
1416 { .tag = 'M', .mult = 1 << 20 },
1417 { .tag = 'G', .mult = 1 << 30 },
1418 { .tag = 0 },
1419 };
1420 static struct parse_tag tags_time[] = {
1421 { .tag = 's', .mult = 1 },
1422 { .tag = 'm', .mult = 60 },
1423 { .tag = 'h', .mult = 60*60 },
1424 { .tag = 'd', .mult = 60*60*24 },
1425 { .tag = 0 },
1426 };
1427 unsigned long val;
1428
1429 if (!s->set)
1430 return 0;
1431
1432 if (!strcmp(s->str, "signal")) {
1433 s->signal = true;
1434 pr_debug("switch-output with SIGUSR2 signal\n");
1435 goto enabled;
1436 }
1437
1438 val = parse_tag_value(s->str, tags_size);
1439 if (val != (unsigned long) -1) {
1440 s->size = val;
1441 pr_debug("switch-output with %s size threshold\n", s->str);
1442 goto enabled;
1443 }
1444
1445 val = parse_tag_value(s->str, tags_time);
1446 if (val != (unsigned long) -1) {
1447 s->time = val;
1448 pr_debug("switch-output with %s time threshold (%lu seconds)\n",
1449 s->str, s->time);
1450 goto enabled;
1451 }
1452
1453 return -1;
1454
1455enabled:
1456 rec->timestamp_filename = true;
1457 s->enabled = true;
1458
1459 if (s->size && !rec->opts.no_buffering)
1460 switch_output_size_warn(rec);
1461
1462 return 0;
1463}
1464
1344static const char * const __record_usage[] = { 1465static const char * const __record_usage[] = {
1345 "perf record [<options>] [<command>]", 1466 "perf record [<options>] [<command>]",
1346 "perf record [<options>] -- <command> [<options>]", 1467 "perf record [<options>] -- <command> [<options>]",
@@ -1394,7 +1515,7 @@ static bool dry_run;
1394 * perf_evlist__prepare_workload, etc instead of fork+exec'in 'perf record', 1515 * perf_evlist__prepare_workload, etc instead of fork+exec'in 'perf record',
1395 * using pipes, etc. 1516 * using pipes, etc.
1396 */ 1517 */
1397struct option __record_options[] = { 1518static struct option __record_options[] = {
1398 OPT_CALLBACK('e', "event", &record.evlist, "event", 1519 OPT_CALLBACK('e', "event", &record.evlist, "event",
1399 "event selector. use 'perf list' to list available events", 1520 "event selector. use 'perf list' to list available events",
1400 parse_events_option), 1521 parse_events_option),
@@ -1508,8 +1629,10 @@ struct option __record_options[] = {
1508 "Record build-id of all DSOs regardless of hits"), 1629 "Record build-id of all DSOs regardless of hits"),
1509 OPT_BOOLEAN(0, "timestamp-filename", &record.timestamp_filename, 1630 OPT_BOOLEAN(0, "timestamp-filename", &record.timestamp_filename,
1510 "append timestamp to output filename"), 1631 "append timestamp to output filename"),
1511 OPT_BOOLEAN(0, "switch-output", &record.switch_output, 1632 OPT_STRING_OPTARG_SET(0, "switch-output", &record.switch_output.str,
1512 "Switch output when receive SIGUSR2"), 1633 &record.switch_output.set, "signal,size,time",
1634 "Switch output when receive SIGUSR2 or cross size,time threshold",
1635 "signal"),
1513 OPT_BOOLEAN(0, "dry-run", &dry_run, 1636 OPT_BOOLEAN(0, "dry-run", &dry_run,
1514 "Parse options then exit"), 1637 "Parse options then exit"),
1515 OPT_END() 1638 OPT_END()
@@ -1548,12 +1671,18 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1548 if (rec->evlist == NULL) 1671 if (rec->evlist == NULL)
1549 return -ENOMEM; 1672 return -ENOMEM;
1550 1673
1551 perf_config(perf_record_config, rec); 1674 err = perf_config(perf_record_config, rec);
1675 if (err)
1676 return err;
1552 1677
1553 argc = parse_options(argc, argv, record_options, record_usage, 1678 argc = parse_options(argc, argv, record_options, record_usage,
1554 PARSE_OPT_STOP_AT_NON_OPTION); 1679 PARSE_OPT_STOP_AT_NON_OPTION);
1680 if (quiet)
1681 perf_quiet_option();
1682
1683 /* Make system wide (-a) the default target. */
1555 if (!argc && target__none(&rec->opts.target)) 1684 if (!argc && target__none(&rec->opts.target))
1556 usage_with_options(record_usage, record_options); 1685 rec->opts.target.system_wide = true;
1557 1686
1558 if (nr_cgroups && !rec->opts.target.system_wide) { 1687 if (nr_cgroups && !rec->opts.target.system_wide) {
1559 usage_with_options_msg(record_usage, record_options, 1688 usage_with_options_msg(record_usage, record_options,
@@ -1567,8 +1696,15 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1567 return -EINVAL; 1696 return -EINVAL;
1568 } 1697 }
1569 1698
1570 if (rec->switch_output) 1699 if (switch_output_setup(rec)) {
1571 rec->timestamp_filename = true; 1700 parse_options_usage(record_usage, record_options, "switch-output", 0);
1701 return -EINVAL;
1702 }
1703
1704 if (rec->switch_output.time) {
1705 signal(SIGALRM, alarm_sig_handler);
1706 alarm(rec->switch_output.time);
1707 }
1572 1708
1573 if (!rec->itr) { 1709 if (!rec->itr) {
1574 rec->itr = auxtrace_record__init(rec->evlist, &err); 1710 rec->itr = auxtrace_record__init(rec->evlist, &err);
@@ -1618,14 +1754,14 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1618 1754
1619 if (rec->no_buildid_cache || rec->no_buildid) { 1755 if (rec->no_buildid_cache || rec->no_buildid) {
1620 disable_buildid_cache(); 1756 disable_buildid_cache();
1621 } else if (rec->switch_output) { 1757 } else if (rec->switch_output.enabled) {
1622 /* 1758 /*
1623 * In 'perf record --switch-output', disable buildid 1759 * In 'perf record --switch-output', disable buildid
1624 * generation by default to reduce data file switching 1760 * generation by default to reduce data file switching
1625 * overhead. Still generate buildid if they are required 1761 * overhead. Still generate buildid if they are required
1626 * explicitly using 1762 * explicitly using
1627 * 1763 *
1628 * perf record --signal-trigger --no-no-buildid \ 1764 * perf record --switch-output --no-no-buildid \
1629 * --no-no-buildid-cache 1765 * --no-no-buildid-cache
1630 * 1766 *
1631 * Following code equals to: 1767 * Following code equals to:
@@ -1676,6 +1812,9 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
1676 goto out; 1812 goto out;
1677 } 1813 }
1678 1814
1815 /* Enable ignoring missing threads when -u option is defined. */
1816 rec->opts.ignore_missing_thread = rec->opts.target.uid != UINT_MAX;
1817
1679 err = -ENOMEM; 1818 err = -ENOMEM;
1680 if (perf_evlist__create_maps(rec->evlist, &rec->opts.target) < 0) 1819 if (perf_evlist__create_maps(rec->evlist, &rec->opts.target) < 0)
1681 usage_with_options(record_usage, record_options); 1820 usage_with_options(record_usage, record_options);
@@ -1707,6 +1846,8 @@ out:
1707 1846
1708static void snapshot_sig_handler(int sig __maybe_unused) 1847static void snapshot_sig_handler(int sig __maybe_unused)
1709{ 1848{
1849 struct record *rec = &record;
1850
1710 if (trigger_is_ready(&auxtrace_snapshot_trigger)) { 1851 if (trigger_is_ready(&auxtrace_snapshot_trigger)) {
1711 trigger_hit(&auxtrace_snapshot_trigger); 1852 trigger_hit(&auxtrace_snapshot_trigger);
1712 auxtrace_record__snapshot_started = 1; 1853 auxtrace_record__snapshot_started = 1;
@@ -1714,6 +1855,14 @@ static void snapshot_sig_handler(int sig __maybe_unused)
1714 trigger_error(&auxtrace_snapshot_trigger); 1855 trigger_error(&auxtrace_snapshot_trigger);
1715 } 1856 }
1716 1857
1717 if (trigger_is_ready(&switch_output_trigger)) 1858 if (switch_output_signal(rec))
1859 trigger_hit(&switch_output_trigger);
1860}
1861
1862static void alarm_sig_handler(int sig __maybe_unused)
1863{
1864 struct record *rec = &record;
1865
1866 if (switch_output_time(rec))
1718 trigger_hit(&switch_output_trigger); 1867 trigger_hit(&switch_output_trigger);
1719} 1868}
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 6e88460cd13d..0a88670e56f3 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;
@@ -158,6 +160,9 @@ static int process_sample_event(struct perf_tool *tool,
158 }; 160 };
159 int ret = 0; 161 int ret = 0;
160 162
163 if (perf_time__skip_sample(&rep->ptime, sample->time))
164 return 0;
165
161 if (machine__resolve(machine, &al, sample) < 0) { 166 if (machine__resolve(machine, &al, sample) < 0) {
162 pr_debug("problem processing %d event, skipping it.\n", 167 pr_debug("problem processing %d event, skipping it.\n",
163 event->header.type); 168 event->header.type);
@@ -207,11 +212,14 @@ static int process_read_event(struct perf_tool *tool,
207 212
208 if (rep->show_threads) { 213 if (rep->show_threads) {
209 const char *name = evsel ? perf_evsel__name(evsel) : "unknown"; 214 const char *name = evsel ? perf_evsel__name(evsel) : "unknown";
210 perf_read_values_add_value(&rep->show_threads_values, 215 int err = perf_read_values_add_value(&rep->show_threads_values,
211 event->read.pid, event->read.tid, 216 event->read.pid, event->read.tid,
212 event->read.id, 217 event->read.id,
213 name, 218 name,
214 event->read.value); 219 event->read.value);
220
221 if (err)
222 return err;
215 } 223 }
216 224
217 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,
@@ -312,6 +320,9 @@ static size_t hists__fprintf_nr_sample_events(struct hists *hists, struct report
312 size_t size = sizeof(buf); 320 size_t size = sizeof(buf);
313 int socked_id = hists->socket_filter; 321 int socked_id = hists->socket_filter;
314 322
323 if (quiet)
324 return 0;
325
315 if (symbol_conf.filter_relative) { 326 if (symbol_conf.filter_relative) {
316 nr_samples = hists->stats.nr_non_filtered_samples; 327 nr_samples = hists->stats.nr_non_filtered_samples;
317 nr_events = hists->stats.total_non_filtered_period; 328 nr_events = hists->stats.total_non_filtered_period;
@@ -364,7 +375,11 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,
364{ 375{
365 struct perf_evsel *pos; 376 struct perf_evsel *pos;
366 377
367 fprintf(stdout, "#\n# Total Lost Samples: %" PRIu64 "\n#\n", evlist->stats.total_lost_samples); 378 if (!quiet) {
379 fprintf(stdout, "#\n# Total Lost Samples: %" PRIu64 "\n#\n",
380 evlist->stats.total_lost_samples);
381 }
382
368 evlist__for_each_entry(evlist, pos) { 383 evlist__for_each_entry(evlist, pos) {
369 struct hists *hists = evsel__hists(pos); 384 struct hists *hists = evsel__hists(pos);
370 const char *evname = perf_evsel__name(pos); 385 const char *evname = perf_evsel__name(pos);
@@ -374,7 +389,7 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,
374 continue; 389 continue;
375 390
376 hists__fprintf_nr_sample_events(hists, rep, evname, stdout); 391 hists__fprintf_nr_sample_events(hists, rep, evname, stdout);
377 hists__fprintf(hists, true, 0, 0, rep->min_percent, stdout, 392 hists__fprintf(hists, !quiet, 0, 0, rep->min_percent, stdout,
378 symbol_conf.use_callchain); 393 symbol_conf.use_callchain);
379 fprintf(stdout, "\n\n"); 394 fprintf(stdout, "\n\n");
380 } 395 }
@@ -539,8 +554,11 @@ static int __cmd_report(struct report *rep)
539 } 554 }
540 } 555 }
541 556
542 if (rep->show_threads) 557 if (rep->show_threads) {
543 perf_read_values_init(&rep->show_threads_values); 558 ret = perf_read_values_init(&rep->show_threads_values);
559 if (ret)
560 return ret;
561 }
544 562
545 ret = report__setup_sample_type(rep); 563 ret = report__setup_sample_type(rep);
546 if (ret) { 564 if (ret) {
@@ -637,7 +655,7 @@ report_parse_ignore_callees_opt(const struct option *opt __maybe_unused,
637} 655}
638 656
639static int 657static int
640parse_branch_mode(const struct option *opt __maybe_unused, 658parse_branch_mode(const struct option *opt,
641 const char *str __maybe_unused, int unset) 659 const char *str __maybe_unused, int unset)
642{ 660{
643 int *branch_mode = opt->value; 661 int *branch_mode = opt->value;
@@ -705,6 +723,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
705 "input file name"), 723 "input file name"),
706 OPT_INCR('v', "verbose", &verbose, 724 OPT_INCR('v', "verbose", &verbose,
707 "be more verbose (show symbol address, etc)"), 725 "be more verbose (show symbol address, etc)"),
726 OPT_BOOLEAN('q', "quiet", &quiet, "Do not show any message"),
708 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, 727 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
709 "dump raw trace in ASCII"), 728 "dump raw trace in ASCII"),
710 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name, 729 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
@@ -824,6 +843,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
824 OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode", 843 OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode",
825 "'always' (default), 'never' or 'auto' only applicable to --stdio mode", 844 "'always' (default), 'never' or 'auto' only applicable to --stdio mode",
826 stdio__config_color, "always"), 845 stdio__config_color, "always"),
846 OPT_STRING(0, "time", &report.time_str, "str",
847 "Time span of interest (start,stop)"),
827 OPT_END() 848 OPT_END()
828 }; 849 };
829 struct perf_data_file file = { 850 struct perf_data_file file = {
@@ -834,7 +855,9 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
834 if (ret < 0) 855 if (ret < 0)
835 return ret; 856 return ret;
836 857
837 perf_config(report__config, &report); 858 ret = perf_config(report__config, &report);
859 if (ret)
860 return ret;
838 861
839 argc = parse_options(argc, argv, options, report_usage, 0); 862 argc = parse_options(argc, argv, options, report_usage, 0);
840 if (argc) { 863 if (argc) {
@@ -848,6 +871,9 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
848 report.symbol_filter_str = argv[0]; 871 report.symbol_filter_str = argv[0];
849 } 872 }
850 873
874 if (quiet)
875 perf_quiet_option();
876
851 if (symbol_conf.vmlinux_name && 877 if (symbol_conf.vmlinux_name &&
852 access(symbol_conf.vmlinux_name, R_OK)) { 878 access(symbol_conf.vmlinux_name, R_OK)) {
853 pr_err("Invalid file: %s\n", symbol_conf.vmlinux_name); 879 pr_err("Invalid file: %s\n", symbol_conf.vmlinux_name);
@@ -905,6 +931,9 @@ repeat:
905 if (itrace_synth_opts.last_branch) 931 if (itrace_synth_opts.last_branch)
906 has_br_stack = true; 932 has_br_stack = true;
907 933
934 if (has_br_stack && branch_call_mode)
935 symbol_conf.show_branchflag_count = true;
936
908 /* 937 /*
909 * Branch mode is a tristate: 938 * Branch mode is a tristate:
910 * -1 means default, so decide based on the file having branch data. 939 * -1 means default, so decide based on the file having branch data.
@@ -965,14 +994,14 @@ repeat:
965 goto error; 994 goto error;
966 } 995 }
967 996
968 if (report.header || report.header_only) { 997 if ((report.header || report.header_only) && !quiet) {
969 perf_session__fprintf_info(session, stdout, 998 perf_session__fprintf_info(session, stdout,
970 report.show_full_info); 999 report.show_full_info);
971 if (report.header_only) { 1000 if (report.header_only) {
972 ret = 0; 1001 ret = 0;
973 goto error; 1002 goto error;
974 } 1003 }
975 } else if (use_browser == 0) { 1004 } else if (use_browser == 0 && !quiet) {
976 fputs("# To display the perf.data header info, please use --header/--header-only options.\n#\n", 1005 fputs("# To display the perf.data header info, please use --header/--header-only options.\n#\n",
977 stdout); 1006 stdout);
978 } 1007 }
@@ -991,7 +1020,7 @@ repeat:
991 * providing it only in verbose mode not to bloat too 1020 * providing it only in verbose mode not to bloat too
992 * much struct symbol. 1021 * much struct symbol.
993 */ 1022 */
994 if (verbose) { 1023 if (verbose > 0) {
995 /* 1024 /*
996 * XXX: Need to provide a less kludgy way to ask for 1025 * XXX: Need to provide a less kludgy way to ask for
997 * more space per symbol, the u32 is for the index on 1026 * more space per symbol, the u32 is for the index on
@@ -1006,6 +1035,11 @@ repeat:
1006 if (symbol__init(&session->header.env) < 0) 1035 if (symbol__init(&session->header.env) < 0)
1007 goto error; 1036 goto error;
1008 1037
1038 if (perf_time__parse_str(&report.ptime, report.time_str) != 0) {
1039 pr_err("Invalid time string\n");
1040 return -EINVAL;
1041 }
1042
1009 sort__setup_elide(stdout); 1043 sort__setup_elide(stdout);
1010 1044
1011 ret = __cmd_report(&report); 1045 ret = __cmd_report(&report);
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index f5503ca22e1c..b94cf0de715a 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
@@ -73,6 +77,22 @@ struct sched_atom {
73 77
74#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP" 78#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP"
75 79
80/* task state bitmask, copied from include/linux/sched.h */
81#define TASK_RUNNING 0
82#define TASK_INTERRUPTIBLE 1
83#define TASK_UNINTERRUPTIBLE 2
84#define __TASK_STOPPED 4
85#define __TASK_TRACED 8
86/* in tsk->exit_state */
87#define EXIT_DEAD 16
88#define EXIT_ZOMBIE 32
89#define EXIT_TRACE (EXIT_ZOMBIE | EXIT_DEAD)
90/* in tsk->state again */
91#define TASK_DEAD 64
92#define TASK_WAKEKILL 128
93#define TASK_WAKING 256
94#define TASK_PARKED 512
95
76enum thread_state { 96enum thread_state {
77 THREAD_SLEEPING = 0, 97 THREAD_SLEEPING = 0,
78 THREAD_WAIT_CPU, 98 THREAD_WAIT_CPU,
@@ -192,8 +212,64 @@ struct perf_sched {
192 bool force; 212 bool force;
193 bool skip_merge; 213 bool skip_merge;
194 struct perf_sched_map map; 214 struct perf_sched_map map;
215
216 /* options for timehist command */
217 bool summary;
218 bool summary_only;
219 bool idle_hist;
220 bool show_callchain;
221 unsigned int max_stack;
222 bool show_cpu_visual;
223 bool show_wakeups;
224 bool show_migrations;
225 bool show_state;
226 u64 skipped_samples;
227 const char *time_str;
228 struct perf_time_interval ptime;
229 struct perf_time_interval hist_time;
195}; 230};
196 231
232/* per thread run time data */
233struct thread_runtime {
234 u64 last_time; /* time of previous sched in/out event */
235 u64 dt_run; /* run time */
236 u64 dt_sleep; /* time between CPU access by sleep (off cpu) */
237 u64 dt_iowait; /* time between CPU access by iowait (off cpu) */
238 u64 dt_preempt; /* time between CPU access by preempt (off cpu) */
239 u64 dt_delay; /* time between wakeup and sched-in */
240 u64 ready_to_run; /* time of wakeup */
241
242 struct stats run_stats;
243 u64 total_run_time;
244 u64 total_sleep_time;
245 u64 total_iowait_time;
246 u64 total_preempt_time;
247 u64 total_delay_time;
248
249 int last_state;
250 u64 migrations;
251};
252
253/* per event run time data */
254struct evsel_runtime {
255 u64 *last_time; /* time this event was last seen per cpu */
256 u32 ncpu; /* highest cpu slot allocated */
257};
258
259/* per cpu idle time data */
260struct idle_thread_runtime {
261 struct thread_runtime tr;
262 struct thread *last_thread;
263 struct rb_root sorted_root;
264 struct callchain_root callchain;
265 struct callchain_cursor cursor;
266};
267
268/* track idle times per cpu */
269static struct thread **idle_threads;
270static int idle_max_cpu;
271static char idle_comm[] = "<idle>";
272
197static u64 get_nsecs(void) 273static u64 get_nsecs(void)
198{ 274{
199 struct timespec ts; 275 struct timespec ts;
@@ -384,7 +460,7 @@ static struct task_desc *register_pid(struct perf_sched *sched,
384 BUG_ON(!sched->tasks); 460 BUG_ON(!sched->tasks);
385 sched->tasks[task->nr] = task; 461 sched->tasks[task->nr] = task;
386 462
387 if (verbose) 463 if (verbose > 0)
388 printf("registered task #%ld, PID %ld (%s)\n", sched->nr_tasks, pid, comm); 464 printf("registered task #%ld, PID %ld (%s)\n", sched->nr_tasks, pid, comm);
389 465
390 return task; 466 return task;
@@ -718,7 +794,7 @@ replay_wakeup_event(struct perf_sched *sched,
718 const u32 pid = perf_evsel__intval(evsel, sample, "pid"); 794 const u32 pid = perf_evsel__intval(evsel, sample, "pid");
719 struct task_desc *waker, *wakee; 795 struct task_desc *waker, *wakee;
720 796
721 if (verbose) { 797 if (verbose > 0) {
722 printf("sched_wakeup event %p\n", evsel); 798 printf("sched_wakeup event %p\n", evsel);
723 799
724 printf(" ... pid %d woke up %s/%d\n", sample->tid, comm, pid); 800 printf(" ... pid %d woke up %s/%d\n", sample->tid, comm, pid);
@@ -746,7 +822,7 @@ static int replay_switch_event(struct perf_sched *sched,
746 int cpu = sample->cpu; 822 int cpu = sample->cpu;
747 s64 delta; 823 s64 delta;
748 824
749 if (verbose) 825 if (verbose > 0)
750 printf("sched_switch event %p\n", evsel); 826 printf("sched_switch event %p\n", evsel);
751 827
752 if (cpu >= MAX_CPUS || cpu < 0) 828 if (cpu >= MAX_CPUS || cpu < 0)
@@ -794,7 +870,7 @@ static int replay_fork_event(struct perf_sched *sched,
794 goto out_put; 870 goto out_put;
795 } 871 }
796 872
797 if (verbose) { 873 if (verbose > 0) {
798 printf("fork event\n"); 874 printf("fork event\n");
799 printf("... parent: %s/%d\n", thread__comm_str(parent), parent->tid); 875 printf("... parent: %s/%d\n", thread__comm_str(parent), parent->tid);
800 printf("... child: %s/%d\n", thread__comm_str(child), child->tid); 876 printf("... child: %s/%d\n", thread__comm_str(child), child->tid);
@@ -1191,6 +1267,7 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
1191 int i; 1267 int i;
1192 int ret; 1268 int ret;
1193 u64 avg; 1269 u64 avg;
1270 char max_lat_at[32];
1194 1271
1195 if (!work_list->nb_atoms) 1272 if (!work_list->nb_atoms)
1196 return; 1273 return;
@@ -1212,12 +1289,13 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
1212 printf(" "); 1289 printf(" ");
1213 1290
1214 avg = work_list->total_lat / work_list->nb_atoms; 1291 avg = work_list->total_lat / work_list->nb_atoms;
1292 timestamp__scnprintf_usec(work_list->max_lat_at, max_lat_at, sizeof(max_lat_at));
1215 1293
1216 printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13.6f s\n", 1294 printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13s s\n",
1217 (double)work_list->total_runtime / NSEC_PER_MSEC, 1295 (double)work_list->total_runtime / NSEC_PER_MSEC,
1218 work_list->nb_atoms, (double)avg / NSEC_PER_MSEC, 1296 work_list->nb_atoms, (double)avg / NSEC_PER_MSEC,
1219 (double)work_list->max_lat / NSEC_PER_MSEC, 1297 (double)work_list->max_lat / NSEC_PER_MSEC,
1220 (double)work_list->max_lat_at / NSEC_PER_SEC); 1298 max_lat_at);
1221} 1299}
1222 1300
1223static int pid_cmp(struct work_atoms *l, struct work_atoms *r) 1301static int pid_cmp(struct work_atoms *l, struct work_atoms *r)
@@ -1402,6 +1480,7 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
1402 int cpus_nr; 1480 int cpus_nr;
1403 bool new_cpu = false; 1481 bool new_cpu = false;
1404 const char *color = PERF_COLOR_NORMAL; 1482 const char *color = PERF_COLOR_NORMAL;
1483 char stimestamp[32];
1405 1484
1406 BUG_ON(this_cpu >= MAX_CPUS || this_cpu < 0); 1485 BUG_ON(this_cpu >= MAX_CPUS || this_cpu < 0);
1407 1486
@@ -1479,7 +1558,7 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
1479 cpu_color = COLOR_CPUS; 1558 cpu_color = COLOR_CPUS;
1480 1559
1481 if (cpu != this_cpu) 1560 if (cpu != this_cpu)
1482 color_fprintf(stdout, cpu_color, " "); 1561 color_fprintf(stdout, color, " ");
1483 else 1562 else
1484 color_fprintf(stdout, cpu_color, "*"); 1563 color_fprintf(stdout, cpu_color, "*");
1485 1564
@@ -1492,8 +1571,9 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
1492 if (sched->map.cpus && !cpu_map__has(sched->map.cpus, this_cpu)) 1571 if (sched->map.cpus && !cpu_map__has(sched->map.cpus, this_cpu))
1493 goto out; 1572 goto out;
1494 1573
1495 color_fprintf(stdout, color, " %12.6f secs ", (double)timestamp / NSEC_PER_SEC); 1574 timestamp__scnprintf_usec(timestamp, stimestamp, sizeof(stimestamp));
1496 if (new_shortname) { 1575 color_fprintf(stdout, color, " %12s secs ", stimestamp);
1576 if (new_shortname || (verbose > 0 && sched_in->tid)) {
1497 const char *pid_color = color; 1577 const char *pid_color = color;
1498 1578
1499 if (thread__has_color(sched_in)) 1579 if (thread__has_color(sched_in))
@@ -1650,6 +1730,1259 @@ out_delete:
1650 return rc; 1730 return rc;
1651} 1731}
1652 1732
1733/*
1734 * scheduling times are printed as msec.usec
1735 */
1736static inline void print_sched_time(unsigned long long nsecs, int width)
1737{
1738 unsigned long msecs;
1739 unsigned long usecs;
1740
1741 msecs = nsecs / NSEC_PER_MSEC;
1742 nsecs -= msecs * NSEC_PER_MSEC;
1743 usecs = nsecs / NSEC_PER_USEC;
1744 printf("%*lu.%03lu ", width, msecs, usecs);
1745}
1746
1747/*
1748 * returns runtime data for event, allocating memory for it the
1749 * first time it is used.
1750 */
1751static struct evsel_runtime *perf_evsel__get_runtime(struct perf_evsel *evsel)
1752{
1753 struct evsel_runtime *r = evsel->priv;
1754
1755 if (r == NULL) {
1756 r = zalloc(sizeof(struct evsel_runtime));
1757 evsel->priv = r;
1758 }
1759
1760 return r;
1761}
1762
1763/*
1764 * save last time event was seen per cpu
1765 */
1766static void perf_evsel__save_time(struct perf_evsel *evsel,
1767 u64 timestamp, u32 cpu)
1768{
1769 struct evsel_runtime *r = perf_evsel__get_runtime(evsel);
1770
1771 if (r == NULL)
1772 return;
1773
1774 if ((cpu >= r->ncpu) || (r->last_time == NULL)) {
1775 int i, n = __roundup_pow_of_two(cpu+1);
1776 void *p = r->last_time;
1777
1778 p = realloc(r->last_time, n * sizeof(u64));
1779 if (!p)
1780 return;
1781
1782 r->last_time = p;
1783 for (i = r->ncpu; i < n; ++i)
1784 r->last_time[i] = (u64) 0;
1785
1786 r->ncpu = n;
1787 }
1788
1789 r->last_time[cpu] = timestamp;
1790}
1791
1792/* returns last time this event was seen on the given cpu */
1793static u64 perf_evsel__get_time(struct perf_evsel *evsel, u32 cpu)
1794{
1795 struct evsel_runtime *r = perf_evsel__get_runtime(evsel);
1796
1797 if ((r == NULL) || (r->last_time == NULL) || (cpu >= r->ncpu))
1798 return 0;
1799
1800 return r->last_time[cpu];
1801}
1802
1803static int comm_width = 30;
1804
1805static char *timehist_get_commstr(struct thread *thread)
1806{
1807 static char str[32];
1808 const char *comm = thread__comm_str(thread);
1809 pid_t tid = thread->tid;
1810 pid_t pid = thread->pid_;
1811 int n;
1812
1813 if (pid == 0)
1814 n = scnprintf(str, sizeof(str), "%s", comm);
1815
1816 else if (tid != pid)
1817 n = scnprintf(str, sizeof(str), "%s[%d/%d]", comm, tid, pid);
1818
1819 else
1820 n = scnprintf(str, sizeof(str), "%s[%d]", comm, tid);
1821
1822 if (n > comm_width)
1823 comm_width = n;
1824
1825 return str;
1826}
1827
1828static void timehist_header(struct perf_sched *sched)
1829{
1830 u32 ncpus = sched->max_cpu + 1;
1831 u32 i, j;
1832
1833 printf("%15s %6s ", "time", "cpu");
1834
1835 if (sched->show_cpu_visual) {
1836 printf(" ");
1837 for (i = 0, j = 0; i < ncpus; ++i) {
1838 printf("%x", j++);
1839 if (j > 15)
1840 j = 0;
1841 }
1842 printf(" ");
1843 }
1844
1845 printf(" %-*s %9s %9s %9s", comm_width,
1846 "task name", "wait time", "sch delay", "run time");
1847
1848 if (sched->show_state)
1849 printf(" %s", "state");
1850
1851 printf("\n");
1852
1853 /*
1854 * units row
1855 */
1856 printf("%15s %-6s ", "", "");
1857
1858 if (sched->show_cpu_visual)
1859 printf(" %*s ", ncpus, "");
1860
1861 printf(" %-*s %9s %9s %9s", comm_width,
1862 "[tid/pid]", "(msec)", "(msec)", "(msec)");
1863
1864 if (sched->show_state)
1865 printf(" %5s", "");
1866
1867 printf("\n");
1868
1869 /*
1870 * separator
1871 */
1872 printf("%.15s %.6s ", graph_dotted_line, graph_dotted_line);
1873
1874 if (sched->show_cpu_visual)
1875 printf(" %.*s ", ncpus, graph_dotted_line);
1876
1877 printf(" %.*s %.9s %.9s %.9s", comm_width,
1878 graph_dotted_line, graph_dotted_line, graph_dotted_line,
1879 graph_dotted_line);
1880
1881 if (sched->show_state)
1882 printf(" %.5s", graph_dotted_line);
1883
1884 printf("\n");
1885}
1886
1887static char task_state_char(struct thread *thread, int state)
1888{
1889 static const char state_to_char[] = TASK_STATE_TO_CHAR_STR;
1890 unsigned bit = state ? ffs(state) : 0;
1891
1892 /* 'I' for idle */
1893 if (thread->tid == 0)
1894 return 'I';
1895
1896 return bit < sizeof(state_to_char) - 1 ? state_to_char[bit] : '?';
1897}
1898
1899static void timehist_print_sample(struct perf_sched *sched,
1900 struct perf_sample *sample,
1901 struct addr_location *al,
1902 struct thread *thread,
1903 u64 t, int state)
1904{
1905 struct thread_runtime *tr = thread__priv(thread);
1906 u32 max_cpus = sched->max_cpu + 1;
1907 char tstr[64];
1908 u64 wait_time;
1909
1910 timestamp__scnprintf_usec(t, tstr, sizeof(tstr));
1911 printf("%15s [%04d] ", tstr, sample->cpu);
1912
1913 if (sched->show_cpu_visual) {
1914 u32 i;
1915 char c;
1916
1917 printf(" ");
1918 for (i = 0; i < max_cpus; ++i) {
1919 /* flag idle times with 'i'; others are sched events */
1920 if (i == sample->cpu)
1921 c = (thread->tid == 0) ? 'i' : 's';
1922 else
1923 c = ' ';
1924 printf("%c", c);
1925 }
1926 printf(" ");
1927 }
1928
1929 printf(" %-*s ", comm_width, timehist_get_commstr(thread));
1930
1931 wait_time = tr->dt_sleep + tr->dt_iowait + tr->dt_preempt;
1932 print_sched_time(wait_time, 6);
1933
1934 print_sched_time(tr->dt_delay, 6);
1935 print_sched_time(tr->dt_run, 6);
1936
1937 if (sched->show_state)
1938 printf(" %5c ", task_state_char(thread, state));
1939
1940 if (sched->show_wakeups)
1941 printf(" %-*s", comm_width, "");
1942
1943 if (thread->tid == 0)
1944 goto out;
1945
1946 if (sched->show_callchain)
1947 printf(" ");
1948
1949 sample__fprintf_sym(sample, al, 0,
1950 EVSEL__PRINT_SYM | EVSEL__PRINT_ONELINE |
1951 EVSEL__PRINT_CALLCHAIN_ARROW |
1952 EVSEL__PRINT_SKIP_IGNORED,
1953 &callchain_cursor, stdout);
1954
1955out:
1956 printf("\n");
1957}
1958
1959/*
1960 * Explanation of delta-time stats:
1961 *
1962 * t = time of current schedule out event
1963 * tprev = time of previous sched out event
1964 * also time of schedule-in event for current task
1965 * last_time = time of last sched change event for current task
1966 * (i.e, time process was last scheduled out)
1967 * ready_to_run = time of wakeup for current task
1968 *
1969 * -----|------------|------------|------------|------
1970 * last ready tprev t
1971 * time to run
1972 *
1973 * |-------- dt_wait --------|
1974 * |- dt_delay -|-- dt_run --|
1975 *
1976 * dt_run = run time of current task
1977 * dt_wait = time between last schedule out event for task and tprev
1978 * represents time spent off the cpu
1979 * dt_delay = time between wakeup and schedule-in of task
1980 */
1981
1982static void timehist_update_runtime_stats(struct thread_runtime *r,
1983 u64 t, u64 tprev)
1984{
1985 r->dt_delay = 0;
1986 r->dt_sleep = 0;
1987 r->dt_iowait = 0;
1988 r->dt_preempt = 0;
1989 r->dt_run = 0;
1990
1991 if (tprev) {
1992 r->dt_run = t - tprev;
1993 if (r->ready_to_run) {
1994 if (r->ready_to_run > tprev)
1995 pr_debug("time travel: wakeup time for task > previous sched_switch event\n");
1996 else
1997 r->dt_delay = tprev - r->ready_to_run;
1998 }
1999
2000 if (r->last_time > tprev)
2001 pr_debug("time travel: last sched out time for task > previous sched_switch event\n");
2002 else if (r->last_time) {
2003 u64 dt_wait = tprev - r->last_time;
2004
2005 if (r->last_state == TASK_RUNNING)
2006 r->dt_preempt = dt_wait;
2007 else if (r->last_state == TASK_UNINTERRUPTIBLE)
2008 r->dt_iowait = dt_wait;
2009 else
2010 r->dt_sleep = dt_wait;
2011 }
2012 }
2013
2014 update_stats(&r->run_stats, r->dt_run);
2015
2016 r->total_run_time += r->dt_run;
2017 r->total_delay_time += r->dt_delay;
2018 r->total_sleep_time += r->dt_sleep;
2019 r->total_iowait_time += r->dt_iowait;
2020 r->total_preempt_time += r->dt_preempt;
2021}
2022
2023static bool is_idle_sample(struct perf_sample *sample,
2024 struct perf_evsel *evsel)
2025{
2026 /* pid 0 == swapper == idle task */
2027 if (strcmp(perf_evsel__name(evsel), "sched:sched_switch") == 0)
2028 return perf_evsel__intval(evsel, sample, "prev_pid") == 0;
2029
2030 return sample->pid == 0;
2031}
2032
2033static void save_task_callchain(struct perf_sched *sched,
2034 struct perf_sample *sample,
2035 struct perf_evsel *evsel,
2036 struct machine *machine)
2037{
2038 struct callchain_cursor *cursor = &callchain_cursor;
2039 struct thread *thread;
2040
2041 /* want main thread for process - has maps */
2042 thread = machine__findnew_thread(machine, sample->pid, sample->pid);
2043 if (thread == NULL) {
2044 pr_debug("Failed to get thread for pid %d.\n", sample->pid);
2045 return;
2046 }
2047
2048 if (!symbol_conf.use_callchain || sample->callchain == NULL)
2049 return;
2050
2051 if (thread__resolve_callchain(thread, cursor, evsel, sample,
2052 NULL, NULL, sched->max_stack + 2) != 0) {
2053 if (verbose > 0)
2054 error("Failed to resolve callchain. Skipping\n");
2055
2056 return;
2057 }
2058
2059 callchain_cursor_commit(cursor);
2060
2061 while (true) {
2062 struct callchain_cursor_node *node;
2063 struct symbol *sym;
2064
2065 node = callchain_cursor_current(cursor);
2066 if (node == NULL)
2067 break;
2068
2069 sym = node->sym;
2070 if (sym) {
2071 if (!strcmp(sym->name, "schedule") ||
2072 !strcmp(sym->name, "__schedule") ||
2073 !strcmp(sym->name, "preempt_schedule"))
2074 sym->ignore = 1;
2075 }
2076
2077 callchain_cursor_advance(cursor);
2078 }
2079}
2080
2081static int init_idle_thread(struct thread *thread)
2082{
2083 struct idle_thread_runtime *itr;
2084
2085 thread__set_comm(thread, idle_comm, 0);
2086
2087 itr = zalloc(sizeof(*itr));
2088 if (itr == NULL)
2089 return -ENOMEM;
2090
2091 init_stats(&itr->tr.run_stats);
2092 callchain_init(&itr->callchain);
2093 callchain_cursor_reset(&itr->cursor);
2094 thread__set_priv(thread, itr);
2095
2096 return 0;
2097}
2098
2099/*
2100 * Track idle stats per cpu by maintaining a local thread
2101 * struct for the idle task on each cpu.
2102 */
2103static int init_idle_threads(int ncpu)
2104{
2105 int i, ret;
2106
2107 idle_threads = zalloc(ncpu * sizeof(struct thread *));
2108 if (!idle_threads)
2109 return -ENOMEM;
2110
2111 idle_max_cpu = ncpu;
2112
2113 /* allocate the actual thread struct if needed */
2114 for (i = 0; i < ncpu; ++i) {
2115 idle_threads[i] = thread__new(0, 0);
2116 if (idle_threads[i] == NULL)
2117 return -ENOMEM;
2118
2119 ret = init_idle_thread(idle_threads[i]);
2120 if (ret < 0)
2121 return ret;
2122 }
2123
2124 return 0;
2125}
2126
2127static void free_idle_threads(void)
2128{
2129 int i;
2130
2131 if (idle_threads == NULL)
2132 return;
2133
2134 for (i = 0; i < idle_max_cpu; ++i) {
2135 if ((idle_threads[i]))
2136 thread__delete(idle_threads[i]);
2137 }
2138
2139 free(idle_threads);
2140}
2141
2142static struct thread *get_idle_thread(int cpu)
2143{
2144 /*
2145 * expand/allocate array of pointers to local thread
2146 * structs if needed
2147 */
2148 if ((cpu >= idle_max_cpu) || (idle_threads == NULL)) {
2149 int i, j = __roundup_pow_of_two(cpu+1);
2150 void *p;
2151
2152 p = realloc(idle_threads, j * sizeof(struct thread *));
2153 if (!p)
2154 return NULL;
2155
2156 idle_threads = (struct thread **) p;
2157 for (i = idle_max_cpu; i < j; ++i)
2158 idle_threads[i] = NULL;
2159
2160 idle_max_cpu = j;
2161 }
2162
2163 /* allocate a new thread struct if needed */
2164 if (idle_threads[cpu] == NULL) {
2165 idle_threads[cpu] = thread__new(0, 0);
2166
2167 if (idle_threads[cpu]) {
2168 if (init_idle_thread(idle_threads[cpu]) < 0)
2169 return NULL;
2170 }
2171 }
2172
2173 return idle_threads[cpu];
2174}
2175
2176static void save_idle_callchain(struct idle_thread_runtime *itr,
2177 struct perf_sample *sample)
2178{
2179 if (!symbol_conf.use_callchain || sample->callchain == NULL)
2180 return;
2181
2182 callchain_cursor__copy(&itr->cursor, &callchain_cursor);
2183}
2184
2185/*
2186 * handle runtime stats saved per thread
2187 */
2188static struct thread_runtime *thread__init_runtime(struct thread *thread)
2189{
2190 struct thread_runtime *r;
2191
2192 r = zalloc(sizeof(struct thread_runtime));
2193 if (!r)
2194 return NULL;
2195
2196 init_stats(&r->run_stats);
2197 thread__set_priv(thread, r);
2198
2199 return r;
2200}
2201
2202static struct thread_runtime *thread__get_runtime(struct thread *thread)
2203{
2204 struct thread_runtime *tr;
2205
2206 tr = thread__priv(thread);
2207 if (tr == NULL) {
2208 tr = thread__init_runtime(thread);
2209 if (tr == NULL)
2210 pr_debug("Failed to malloc memory for runtime data.\n");
2211 }
2212
2213 return tr;
2214}
2215
2216static struct thread *timehist_get_thread(struct perf_sched *sched,
2217 struct perf_sample *sample,
2218 struct machine *machine,
2219 struct perf_evsel *evsel)
2220{
2221 struct thread *thread;
2222
2223 if (is_idle_sample(sample, evsel)) {
2224 thread = get_idle_thread(sample->cpu);
2225 if (thread == NULL)
2226 pr_err("Failed to get idle thread for cpu %d.\n", sample->cpu);
2227
2228 } else {
2229 /* there were samples with tid 0 but non-zero pid */
2230 thread = machine__findnew_thread(machine, sample->pid,
2231 sample->tid ?: sample->pid);
2232 if (thread == NULL) {
2233 pr_debug("Failed to get thread for tid %d. skipping sample.\n",
2234 sample->tid);
2235 }
2236
2237 save_task_callchain(sched, sample, evsel, machine);
2238 if (sched->idle_hist) {
2239 struct thread *idle;
2240 struct idle_thread_runtime *itr;
2241
2242 idle = get_idle_thread(sample->cpu);
2243 if (idle == NULL) {
2244 pr_err("Failed to get idle thread for cpu %d.\n", sample->cpu);
2245 return NULL;
2246 }
2247
2248 itr = thread__priv(idle);
2249 if (itr == NULL)
2250 return NULL;
2251
2252 itr->last_thread = thread;
2253
2254 /* copy task callchain when entering to idle */
2255 if (perf_evsel__intval(evsel, sample, "next_pid") == 0)
2256 save_idle_callchain(itr, sample);
2257 }
2258 }
2259
2260 return thread;
2261}
2262
2263static bool timehist_skip_sample(struct perf_sched *sched,
2264 struct thread *thread,
2265 struct perf_evsel *evsel,
2266 struct perf_sample *sample)
2267{
2268 bool rc = false;
2269
2270 if (thread__is_filtered(thread)) {
2271 rc = true;
2272 sched->skipped_samples++;
2273 }
2274
2275 if (sched->idle_hist) {
2276 if (strcmp(perf_evsel__name(evsel), "sched:sched_switch"))
2277 rc = true;
2278 else if (perf_evsel__intval(evsel, sample, "prev_pid") != 0 &&
2279 perf_evsel__intval(evsel, sample, "next_pid") != 0)
2280 rc = true;
2281 }
2282
2283 return rc;
2284}
2285
2286static void timehist_print_wakeup_event(struct perf_sched *sched,
2287 struct perf_evsel *evsel,
2288 struct perf_sample *sample,
2289 struct machine *machine,
2290 struct thread *awakened)
2291{
2292 struct thread *thread;
2293 char tstr[64];
2294
2295 thread = machine__findnew_thread(machine, sample->pid, sample->tid);
2296 if (thread == NULL)
2297 return;
2298
2299 /* show wakeup unless both awakee and awaker are filtered */
2300 if (timehist_skip_sample(sched, thread, evsel, sample) &&
2301 timehist_skip_sample(sched, awakened, evsel, sample)) {
2302 return;
2303 }
2304
2305 timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr));
2306 printf("%15s [%04d] ", tstr, sample->cpu);
2307 if (sched->show_cpu_visual)
2308 printf(" %*s ", sched->max_cpu + 1, "");
2309
2310 printf(" %-*s ", comm_width, timehist_get_commstr(thread));
2311
2312 /* dt spacer */
2313 printf(" %9s %9s %9s ", "", "", "");
2314
2315 printf("awakened: %s", timehist_get_commstr(awakened));
2316
2317 printf("\n");
2318}
2319
2320static int timehist_sched_wakeup_event(struct perf_tool *tool,
2321 union perf_event *event __maybe_unused,
2322 struct perf_evsel *evsel,
2323 struct perf_sample *sample,
2324 struct machine *machine)
2325{
2326 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2327 struct thread *thread;
2328 struct thread_runtime *tr = NULL;
2329 /* want pid of awakened task not pid in sample */
2330 const u32 pid = perf_evsel__intval(evsel, sample, "pid");
2331
2332 thread = machine__findnew_thread(machine, 0, pid);
2333 if (thread == NULL)
2334 return -1;
2335
2336 tr = thread__get_runtime(thread);
2337 if (tr == NULL)
2338 return -1;
2339
2340 if (tr->ready_to_run == 0)
2341 tr->ready_to_run = sample->time;
2342
2343 /* show wakeups if requested */
2344 if (sched->show_wakeups &&
2345 !perf_time__skip_sample(&sched->ptime, sample->time))
2346 timehist_print_wakeup_event(sched, evsel, sample, machine, thread);
2347
2348 return 0;
2349}
2350
2351static void timehist_print_migration_event(struct perf_sched *sched,
2352 struct perf_evsel *evsel,
2353 struct perf_sample *sample,
2354 struct machine *machine,
2355 struct thread *migrated)
2356{
2357 struct thread *thread;
2358 char tstr[64];
2359 u32 max_cpus = sched->max_cpu + 1;
2360 u32 ocpu, dcpu;
2361
2362 if (sched->summary_only)
2363 return;
2364
2365 max_cpus = sched->max_cpu + 1;
2366 ocpu = perf_evsel__intval(evsel, sample, "orig_cpu");
2367 dcpu = perf_evsel__intval(evsel, sample, "dest_cpu");
2368
2369 thread = machine__findnew_thread(machine, sample->pid, sample->tid);
2370 if (thread == NULL)
2371 return;
2372
2373 if (timehist_skip_sample(sched, thread, evsel, sample) &&
2374 timehist_skip_sample(sched, migrated, evsel, sample)) {
2375 return;
2376 }
2377
2378 timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr));
2379 printf("%15s [%04d] ", tstr, sample->cpu);
2380
2381 if (sched->show_cpu_visual) {
2382 u32 i;
2383 char c;
2384
2385 printf(" ");
2386 for (i = 0; i < max_cpus; ++i) {
2387 c = (i == sample->cpu) ? 'm' : ' ';
2388 printf("%c", c);
2389 }
2390 printf(" ");
2391 }
2392
2393 printf(" %-*s ", comm_width, timehist_get_commstr(thread));
2394
2395 /* dt spacer */
2396 printf(" %9s %9s %9s ", "", "", "");
2397
2398 printf("migrated: %s", timehist_get_commstr(migrated));
2399 printf(" cpu %d => %d", ocpu, dcpu);
2400
2401 printf("\n");
2402}
2403
2404static int timehist_migrate_task_event(struct perf_tool *tool,
2405 union perf_event *event __maybe_unused,
2406 struct perf_evsel *evsel,
2407 struct perf_sample *sample,
2408 struct machine *machine)
2409{
2410 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2411 struct thread *thread;
2412 struct thread_runtime *tr = NULL;
2413 /* want pid of migrated task not pid in sample */
2414 const u32 pid = perf_evsel__intval(evsel, sample, "pid");
2415
2416 thread = machine__findnew_thread(machine, 0, pid);
2417 if (thread == NULL)
2418 return -1;
2419
2420 tr = thread__get_runtime(thread);
2421 if (tr == NULL)
2422 return -1;
2423
2424 tr->migrations++;
2425
2426 /* show migrations if requested */
2427 timehist_print_migration_event(sched, evsel, sample, machine, thread);
2428
2429 return 0;
2430}
2431
2432static int timehist_sched_change_event(struct perf_tool *tool,
2433 union perf_event *event,
2434 struct perf_evsel *evsel,
2435 struct perf_sample *sample,
2436 struct machine *machine)
2437{
2438 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2439 struct perf_time_interval *ptime = &sched->ptime;
2440 struct addr_location al;
2441 struct thread *thread;
2442 struct thread_runtime *tr = NULL;
2443 u64 tprev, t = sample->time;
2444 int rc = 0;
2445 int state = perf_evsel__intval(evsel, sample, "prev_state");
2446
2447
2448 if (machine__resolve(machine, &al, sample) < 0) {
2449 pr_err("problem processing %d event. skipping it\n",
2450 event->header.type);
2451 rc = -1;
2452 goto out;
2453 }
2454
2455 thread = timehist_get_thread(sched, sample, machine, evsel);
2456 if (thread == NULL) {
2457 rc = -1;
2458 goto out;
2459 }
2460
2461 if (timehist_skip_sample(sched, thread, evsel, sample))
2462 goto out;
2463
2464 tr = thread__get_runtime(thread);
2465 if (tr == NULL) {
2466 rc = -1;
2467 goto out;
2468 }
2469
2470 tprev = perf_evsel__get_time(evsel, sample->cpu);
2471
2472 /*
2473 * If start time given:
2474 * - sample time is under window user cares about - skip sample
2475 * - tprev is under window user cares about - reset to start of window
2476 */
2477 if (ptime->start && ptime->start > t)
2478 goto out;
2479
2480 if (tprev && ptime->start > tprev)
2481 tprev = ptime->start;
2482
2483 /*
2484 * If end time given:
2485 * - previous sched event is out of window - we are done
2486 * - sample time is beyond window user cares about - reset it
2487 * to close out stats for time window interest
2488 */
2489 if (ptime->end) {
2490 if (tprev > ptime->end)
2491 goto out;
2492
2493 if (t > ptime->end)
2494 t = ptime->end;
2495 }
2496
2497 if (!sched->idle_hist || thread->tid == 0) {
2498 timehist_update_runtime_stats(tr, t, tprev);
2499
2500 if (sched->idle_hist) {
2501 struct idle_thread_runtime *itr = (void *)tr;
2502 struct thread_runtime *last_tr;
2503
2504 BUG_ON(thread->tid != 0);
2505
2506 if (itr->last_thread == NULL)
2507 goto out;
2508
2509 /* add current idle time as last thread's runtime */
2510 last_tr = thread__get_runtime(itr->last_thread);
2511 if (last_tr == NULL)
2512 goto out;
2513
2514 timehist_update_runtime_stats(last_tr, t, tprev);
2515 /*
2516 * remove delta time of last thread as it's not updated
2517 * and otherwise it will show an invalid value next
2518 * time. we only care total run time and run stat.
2519 */
2520 last_tr->dt_run = 0;
2521 last_tr->dt_delay = 0;
2522 last_tr->dt_sleep = 0;
2523 last_tr->dt_iowait = 0;
2524 last_tr->dt_preempt = 0;
2525
2526 if (itr->cursor.nr)
2527 callchain_append(&itr->callchain, &itr->cursor, t - tprev);
2528
2529 itr->last_thread = NULL;
2530 }
2531 }
2532
2533 if (!sched->summary_only)
2534 timehist_print_sample(sched, sample, &al, thread, t, state);
2535
2536out:
2537 if (sched->hist_time.start == 0 && t >= ptime->start)
2538 sched->hist_time.start = t;
2539 if (ptime->end == 0 || t <= ptime->end)
2540 sched->hist_time.end = t;
2541
2542 if (tr) {
2543 /* time of this sched_switch event becomes last time task seen */
2544 tr->last_time = sample->time;
2545
2546 /* last state is used to determine where to account wait time */
2547 tr->last_state = state;
2548
2549 /* sched out event for task so reset ready to run time */
2550 tr->ready_to_run = 0;
2551 }
2552
2553 perf_evsel__save_time(evsel, sample->time, sample->cpu);
2554
2555 return rc;
2556}
2557
2558static int timehist_sched_switch_event(struct perf_tool *tool,
2559 union perf_event *event,
2560 struct perf_evsel *evsel,
2561 struct perf_sample *sample,
2562 struct machine *machine __maybe_unused)
2563{
2564 return timehist_sched_change_event(tool, event, evsel, sample, machine);
2565}
2566
2567static int process_lost(struct perf_tool *tool __maybe_unused,
2568 union perf_event *event,
2569 struct perf_sample *sample,
2570 struct machine *machine __maybe_unused)
2571{
2572 char tstr[64];
2573
2574 timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr));
2575 printf("%15s ", tstr);
2576 printf("lost %" PRIu64 " events on cpu %d\n", event->lost.lost, sample->cpu);
2577
2578 return 0;
2579}
2580
2581
2582static void print_thread_runtime(struct thread *t,
2583 struct thread_runtime *r)
2584{
2585 double mean = avg_stats(&r->run_stats);
2586 float stddev;
2587
2588 printf("%*s %5d %9" PRIu64 " ",
2589 comm_width, timehist_get_commstr(t), t->ppid,
2590 (u64) r->run_stats.n);
2591
2592 print_sched_time(r->total_run_time, 8);
2593 stddev = rel_stddev_stats(stddev_stats(&r->run_stats), mean);
2594 print_sched_time(r->run_stats.min, 6);
2595 printf(" ");
2596 print_sched_time((u64) mean, 6);
2597 printf(" ");
2598 print_sched_time(r->run_stats.max, 6);
2599 printf(" ");
2600 printf("%5.2f", stddev);
2601 printf(" %5" PRIu64, r->migrations);
2602 printf("\n");
2603}
2604
2605static void print_thread_waittime(struct thread *t,
2606 struct thread_runtime *r)
2607{
2608 printf("%*s %5d %9" PRIu64 " ",
2609 comm_width, timehist_get_commstr(t), t->ppid,
2610 (u64) r->run_stats.n);
2611
2612 print_sched_time(r->total_run_time, 8);
2613 print_sched_time(r->total_sleep_time, 6);
2614 printf(" ");
2615 print_sched_time(r->total_iowait_time, 6);
2616 printf(" ");
2617 print_sched_time(r->total_preempt_time, 6);
2618 printf(" ");
2619 print_sched_time(r->total_delay_time, 6);
2620 printf("\n");
2621}
2622
2623struct total_run_stats {
2624 struct perf_sched *sched;
2625 u64 sched_count;
2626 u64 task_count;
2627 u64 total_run_time;
2628};
2629
2630static int __show_thread_runtime(struct thread *t, void *priv)
2631{
2632 struct total_run_stats *stats = priv;
2633 struct thread_runtime *r;
2634
2635 if (thread__is_filtered(t))
2636 return 0;
2637
2638 r = thread__priv(t);
2639 if (r && r->run_stats.n) {
2640 stats->task_count++;
2641 stats->sched_count += r->run_stats.n;
2642 stats->total_run_time += r->total_run_time;
2643
2644 if (stats->sched->show_state)
2645 print_thread_waittime(t, r);
2646 else
2647 print_thread_runtime(t, r);
2648 }
2649
2650 return 0;
2651}
2652
2653static int show_thread_runtime(struct thread *t, void *priv)
2654{
2655 if (t->dead)
2656 return 0;
2657
2658 return __show_thread_runtime(t, priv);
2659}
2660
2661static int show_deadthread_runtime(struct thread *t, void *priv)
2662{
2663 if (!t->dead)
2664 return 0;
2665
2666 return __show_thread_runtime(t, priv);
2667}
2668
2669static size_t callchain__fprintf_folded(FILE *fp, struct callchain_node *node)
2670{
2671 const char *sep = " <- ";
2672 struct callchain_list *chain;
2673 size_t ret = 0;
2674 char bf[1024];
2675 bool first;
2676
2677 if (node == NULL)
2678 return 0;
2679
2680 ret = callchain__fprintf_folded(fp, node->parent);
2681 first = (ret == 0);
2682
2683 list_for_each_entry(chain, &node->val, list) {
2684 if (chain->ip >= PERF_CONTEXT_MAX)
2685 continue;
2686 if (chain->ms.sym && chain->ms.sym->ignore)
2687 continue;
2688 ret += fprintf(fp, "%s%s", first ? "" : sep,
2689 callchain_list__sym_name(chain, bf, sizeof(bf),
2690 false));
2691 first = false;
2692 }
2693
2694 return ret;
2695}
2696
2697static size_t timehist_print_idlehist_callchain(struct rb_root *root)
2698{
2699 size_t ret = 0;
2700 FILE *fp = stdout;
2701 struct callchain_node *chain;
2702 struct rb_node *rb_node = rb_first(root);
2703
2704 printf(" %16s %8s %s\n", "Idle time (msec)", "Count", "Callchains");
2705 printf(" %.16s %.8s %.50s\n", graph_dotted_line, graph_dotted_line,
2706 graph_dotted_line);
2707
2708 while (rb_node) {
2709 chain = rb_entry(rb_node, struct callchain_node, rb_node);
2710 rb_node = rb_next(rb_node);
2711
2712 ret += fprintf(fp, " ");
2713 print_sched_time(chain->hit, 12);
2714 ret += 16; /* print_sched_time returns 2nd arg + 4 */
2715 ret += fprintf(fp, " %8d ", chain->count);
2716 ret += callchain__fprintf_folded(fp, chain);
2717 ret += fprintf(fp, "\n");
2718 }
2719
2720 return ret;
2721}
2722
2723static void timehist_print_summary(struct perf_sched *sched,
2724 struct perf_session *session)
2725{
2726 struct machine *m = &session->machines.host;
2727 struct total_run_stats totals;
2728 u64 task_count;
2729 struct thread *t;
2730 struct thread_runtime *r;
2731 int i;
2732 u64 hist_time = sched->hist_time.end - sched->hist_time.start;
2733
2734 memset(&totals, 0, sizeof(totals));
2735 totals.sched = sched;
2736
2737 if (sched->idle_hist) {
2738 printf("\nIdle-time summary\n");
2739 printf("%*s parent sched-out ", comm_width, "comm");
2740 printf(" idle-time min-idle avg-idle max-idle stddev migrations\n");
2741 } else if (sched->show_state) {
2742 printf("\nWait-time summary\n");
2743 printf("%*s parent sched-in ", comm_width, "comm");
2744 printf(" run-time sleep iowait preempt delay\n");
2745 } else {
2746 printf("\nRuntime summary\n");
2747 printf("%*s parent sched-in ", comm_width, "comm");
2748 printf(" run-time min-run avg-run max-run stddev migrations\n");
2749 }
2750 printf("%*s (count) ", comm_width, "");
2751 printf(" (msec) (msec) (msec) (msec) %s\n",
2752 sched->show_state ? "(msec)" : "%");
2753 printf("%.117s\n", graph_dotted_line);
2754
2755 machine__for_each_thread(m, show_thread_runtime, &totals);
2756 task_count = totals.task_count;
2757 if (!task_count)
2758 printf("<no still running tasks>\n");
2759
2760 printf("\nTerminated tasks:\n");
2761 machine__for_each_thread(m, show_deadthread_runtime, &totals);
2762 if (task_count == totals.task_count)
2763 printf("<no terminated tasks>\n");
2764
2765 /* CPU idle stats not tracked when samples were skipped */
2766 if (sched->skipped_samples && !sched->idle_hist)
2767 return;
2768
2769 printf("\nIdle stats:\n");
2770 for (i = 0; i < idle_max_cpu; ++i) {
2771 t = idle_threads[i];
2772 if (!t)
2773 continue;
2774
2775 r = thread__priv(t);
2776 if (r && r->run_stats.n) {
2777 totals.sched_count += r->run_stats.n;
2778 printf(" CPU %2d idle for ", i);
2779 print_sched_time(r->total_run_time, 6);
2780 printf(" msec (%6.2f%%)\n", 100.0 * r->total_run_time / hist_time);
2781 } else
2782 printf(" CPU %2d idle entire time window\n", i);
2783 }
2784
2785 if (sched->idle_hist && symbol_conf.use_callchain) {
2786 callchain_param.mode = CHAIN_FOLDED;
2787 callchain_param.value = CCVAL_PERIOD;
2788
2789 callchain_register_param(&callchain_param);
2790
2791 printf("\nIdle stats by callchain:\n");
2792 for (i = 0; i < idle_max_cpu; ++i) {
2793 struct idle_thread_runtime *itr;
2794
2795 t = idle_threads[i];
2796 if (!t)
2797 continue;
2798
2799 itr = thread__priv(t);
2800 if (itr == NULL)
2801 continue;
2802
2803 callchain_param.sort(&itr->sorted_root, &itr->callchain,
2804 0, &callchain_param);
2805
2806 printf(" CPU %2d:", i);
2807 print_sched_time(itr->tr.total_run_time, 6);
2808 printf(" msec\n");
2809 timehist_print_idlehist_callchain(&itr->sorted_root);
2810 printf("\n");
2811 }
2812 }
2813
2814 printf("\n"
2815 " Total number of unique tasks: %" PRIu64 "\n"
2816 "Total number of context switches: %" PRIu64 "\n",
2817 totals.task_count, totals.sched_count);
2818
2819 printf(" Total run time (msec): ");
2820 print_sched_time(totals.total_run_time, 2);
2821 printf("\n");
2822
2823 printf(" Total scheduling time (msec): ");
2824 print_sched_time(hist_time, 2);
2825 printf(" (x %d)\n", sched->max_cpu);
2826}
2827
2828typedef int (*sched_handler)(struct perf_tool *tool,
2829 union perf_event *event,
2830 struct perf_evsel *evsel,
2831 struct perf_sample *sample,
2832 struct machine *machine);
2833
2834static int perf_timehist__process_sample(struct perf_tool *tool,
2835 union perf_event *event,
2836 struct perf_sample *sample,
2837 struct perf_evsel *evsel,
2838 struct machine *machine)
2839{
2840 struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
2841 int err = 0;
2842 int this_cpu = sample->cpu;
2843
2844 if (this_cpu > sched->max_cpu)
2845 sched->max_cpu = this_cpu;
2846
2847 if (evsel->handler != NULL) {
2848 sched_handler f = evsel->handler;
2849
2850 err = f(tool, event, evsel, sample, machine);
2851 }
2852
2853 return err;
2854}
2855
2856static int timehist_check_attr(struct perf_sched *sched,
2857 struct perf_evlist *evlist)
2858{
2859 struct perf_evsel *evsel;
2860 struct evsel_runtime *er;
2861
2862 list_for_each_entry(evsel, &evlist->entries, node) {
2863 er = perf_evsel__get_runtime(evsel);
2864 if (er == NULL) {
2865 pr_err("Failed to allocate memory for evsel runtime data\n");
2866 return -1;
2867 }
2868
2869 if (sched->show_callchain &&
2870 !(evsel->attr.sample_type & PERF_SAMPLE_CALLCHAIN)) {
2871 pr_info("Samples do not have callchains.\n");
2872 sched->show_callchain = 0;
2873 symbol_conf.use_callchain = 0;
2874 }
2875 }
2876
2877 return 0;
2878}
2879
2880static int perf_sched__timehist(struct perf_sched *sched)
2881{
2882 const struct perf_evsel_str_handler handlers[] = {
2883 { "sched:sched_switch", timehist_sched_switch_event, },
2884 { "sched:sched_wakeup", timehist_sched_wakeup_event, },
2885 { "sched:sched_wakeup_new", timehist_sched_wakeup_event, },
2886 };
2887 const struct perf_evsel_str_handler migrate_handlers[] = {
2888 { "sched:sched_migrate_task", timehist_migrate_task_event, },
2889 };
2890 struct perf_data_file file = {
2891 .path = input_name,
2892 .mode = PERF_DATA_MODE_READ,
2893 .force = sched->force,
2894 };
2895
2896 struct perf_session *session;
2897 struct perf_evlist *evlist;
2898 int err = -1;
2899
2900 /*
2901 * event handlers for timehist option
2902 */
2903 sched->tool.sample = perf_timehist__process_sample;
2904 sched->tool.mmap = perf_event__process_mmap;
2905 sched->tool.comm = perf_event__process_comm;
2906 sched->tool.exit = perf_event__process_exit;
2907 sched->tool.fork = perf_event__process_fork;
2908 sched->tool.lost = process_lost;
2909 sched->tool.attr = perf_event__process_attr;
2910 sched->tool.tracing_data = perf_event__process_tracing_data;
2911 sched->tool.build_id = perf_event__process_build_id;
2912
2913 sched->tool.ordered_events = true;
2914 sched->tool.ordering_requires_timestamps = true;
2915
2916 symbol_conf.use_callchain = sched->show_callchain;
2917
2918 session = perf_session__new(&file, false, &sched->tool);
2919 if (session == NULL)
2920 return -ENOMEM;
2921
2922 evlist = session->evlist;
2923
2924 symbol__init(&session->header.env);
2925
2926 if (perf_time__parse_str(&sched->ptime, sched->time_str) != 0) {
2927 pr_err("Invalid time string\n");
2928 return -EINVAL;
2929 }
2930
2931 if (timehist_check_attr(sched, evlist) != 0)
2932 goto out;
2933
2934 setup_pager();
2935
2936 /* setup per-evsel handlers */
2937 if (perf_session__set_tracepoints_handlers(session, handlers))
2938 goto out;
2939
2940 /* sched_switch event at a minimum needs to exist */
2941 if (!perf_evlist__find_tracepoint_by_name(session->evlist,
2942 "sched:sched_switch")) {
2943 pr_err("No sched_switch events found. Have you run 'perf sched record'?\n");
2944 goto out;
2945 }
2946
2947 if (sched->show_migrations &&
2948 perf_session__set_tracepoints_handlers(session, migrate_handlers))
2949 goto out;
2950
2951 /* pre-allocate struct for per-CPU idle stats */
2952 sched->max_cpu = session->header.env.nr_cpus_online;
2953 if (sched->max_cpu == 0)
2954 sched->max_cpu = 4;
2955 if (init_idle_threads(sched->max_cpu))
2956 goto out;
2957
2958 /* summary_only implies summary option, but don't overwrite summary if set */
2959 if (sched->summary_only)
2960 sched->summary = sched->summary_only;
2961
2962 if (!sched->summary_only)
2963 timehist_header(sched);
2964
2965 err = perf_session__process_events(session);
2966 if (err) {
2967 pr_err("Failed to process events, error %d", err);
2968 goto out;
2969 }
2970
2971 sched->nr_events = evlist->stats.nr_events[0];
2972 sched->nr_lost_events = evlist->stats.total_lost;
2973 sched->nr_lost_chunks = evlist->stats.nr_events[PERF_RECORD_LOST];
2974
2975 if (sched->summary)
2976 timehist_print_summary(sched, session);
2977
2978out:
2979 free_idle_threads();
2980 perf_session__delete(session);
2981
2982 return err;
2983}
2984
2985
1653static void print_bad_events(struct perf_sched *sched) 2986static void print_bad_events(struct perf_sched *sched)
1654{ 2987{
1655 if (sched->nr_unordered_timestamps && sched->nr_timestamps) { 2988 if (sched->nr_unordered_timestamps && sched->nr_timestamps) {
@@ -1953,38 +3286,32 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
1953 .next_shortname1 = 'A', 3286 .next_shortname1 = 'A',
1954 .next_shortname2 = '0', 3287 .next_shortname2 = '0',
1955 .skip_merge = 0, 3288 .skip_merge = 0,
3289 .show_callchain = 1,
3290 .max_stack = 5,
3291 };
3292 const struct option sched_options[] = {
3293 OPT_STRING('i', "input", &input_name, "file",
3294 "input file name"),
3295 OPT_INCR('v', "verbose", &verbose,
3296 "be more verbose (show symbol address, etc)"),
3297 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
3298 "dump raw trace in ASCII"),
3299 OPT_BOOLEAN('f', "force", &sched.force, "don't complain, do it"),
3300 OPT_END()
1956 }; 3301 };
1957 const struct option latency_options[] = { 3302 const struct option latency_options[] = {
1958 OPT_STRING('s', "sort", &sched.sort_order, "key[,key2...]", 3303 OPT_STRING('s', "sort", &sched.sort_order, "key[,key2...]",
1959 "sort by key(s): runtime, switch, avg, max"), 3304 "sort by key(s): runtime, switch, avg, max"),
1960 OPT_INCR('v', "verbose", &verbose,
1961 "be more verbose (show symbol address, etc)"),
1962 OPT_INTEGER('C', "CPU", &sched.profile_cpu, 3305 OPT_INTEGER('C', "CPU", &sched.profile_cpu,
1963 "CPU to profile on"), 3306 "CPU to profile on"),
1964 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1965 "dump raw trace in ASCII"),
1966 OPT_BOOLEAN('p', "pids", &sched.skip_merge, 3307 OPT_BOOLEAN('p', "pids", &sched.skip_merge,
1967 "latency stats per pid instead of per comm"), 3308 "latency stats per pid instead of per comm"),
1968 OPT_END() 3309 OPT_PARENT(sched_options)
1969 }; 3310 };
1970 const struct option replay_options[] = { 3311 const struct option replay_options[] = {
1971 OPT_UINTEGER('r', "repeat", &sched.replay_repeat, 3312 OPT_UINTEGER('r', "repeat", &sched.replay_repeat,
1972 "repeat the workload replay N times (-1: infinite)"), 3313 "repeat the workload replay N times (-1: infinite)"),
1973 OPT_INCR('v', "verbose", &verbose, 3314 OPT_PARENT(sched_options)
1974 "be more verbose (show symbol address, etc)"),
1975 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1976 "dump raw trace in ASCII"),
1977 OPT_BOOLEAN('f', "force", &sched.force, "don't complain, do it"),
1978 OPT_END()
1979 };
1980 const struct option sched_options[] = {
1981 OPT_STRING('i', "input", &input_name, "file",
1982 "input file name"),
1983 OPT_INCR('v', "verbose", &verbose,
1984 "be more verbose (show symbol address, etc)"),
1985 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
1986 "dump raw trace in ASCII"),
1987 OPT_END()
1988 }; 3315 };
1989 const struct option map_options[] = { 3316 const struct option map_options[] = {
1990 OPT_BOOLEAN(0, "compact", &sched.map.comp, 3317 OPT_BOOLEAN(0, "compact", &sched.map.comp,
@@ -1995,8 +3322,33 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
1995 "highlight given CPUs in map"), 3322 "highlight given CPUs in map"),
1996 OPT_STRING(0, "cpus", &sched.map.cpus_str, "cpus", 3323 OPT_STRING(0, "cpus", &sched.map.cpus_str, "cpus",
1997 "display given CPUs in map"), 3324 "display given CPUs in map"),
1998 OPT_END() 3325 OPT_PARENT(sched_options)
1999 }; 3326 };
3327 const struct option timehist_options[] = {
3328 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
3329 "file", "vmlinux pathname"),
3330 OPT_STRING(0, "kallsyms", &symbol_conf.kallsyms_name,
3331 "file", "kallsyms pathname"),
3332 OPT_BOOLEAN('g', "call-graph", &sched.show_callchain,
3333 "Display call chains if present (default on)"),
3334 OPT_UINTEGER(0, "max-stack", &sched.max_stack,
3335 "Maximum number of functions to display backtrace."),
3336 OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
3337 "Look for files with symbols relative to this directory"),
3338 OPT_BOOLEAN('s', "summary", &sched.summary_only,
3339 "Show only syscall summary with statistics"),
3340 OPT_BOOLEAN('S', "with-summary", &sched.summary,
3341 "Show all syscalls and summary with statistics"),
3342 OPT_BOOLEAN('w', "wakeups", &sched.show_wakeups, "Show wakeup events"),
3343 OPT_BOOLEAN('M', "migrations", &sched.show_migrations, "Show migration events"),
3344 OPT_BOOLEAN('V', "cpu-visual", &sched.show_cpu_visual, "Add CPU visual"),
3345 OPT_BOOLEAN('I', "idle-hist", &sched.idle_hist, "Show idle events only"),
3346 OPT_STRING(0, "time", &sched.time_str, "str",
3347 "Time span for analysis (start,stop)"),
3348 OPT_BOOLEAN(0, "state", &sched.show_state, "Show task state when sched-out"),
3349 OPT_PARENT(sched_options)
3350 };
3351
2000 const char * const latency_usage[] = { 3352 const char * const latency_usage[] = {
2001 "perf sched latency [<options>]", 3353 "perf sched latency [<options>]",
2002 NULL 3354 NULL
@@ -2009,8 +3361,13 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
2009 "perf sched map [<options>]", 3361 "perf sched map [<options>]",
2010 NULL 3362 NULL
2011 }; 3363 };
3364 const char * const timehist_usage[] = {
3365 "perf sched timehist [<options>]",
3366 NULL
3367 };
2012 const char *const sched_subcommands[] = { "record", "latency", "map", 3368 const char *const sched_subcommands[] = { "record", "latency", "map",
2013 "replay", "script", NULL }; 3369 "replay", "script",
3370 "timehist", NULL };
2014 const char *sched_usage[] = { 3371 const char *sched_usage[] = {
2015 NULL, 3372 NULL,
2016 NULL 3373 NULL
@@ -2073,6 +3430,21 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
2073 usage_with_options(replay_usage, replay_options); 3430 usage_with_options(replay_usage, replay_options);
2074 } 3431 }
2075 return perf_sched__replay(&sched); 3432 return perf_sched__replay(&sched);
3433 } else if (!strcmp(argv[0], "timehist")) {
3434 if (argc) {
3435 argc = parse_options(argc, argv, timehist_options,
3436 timehist_usage, 0);
3437 if (argc)
3438 usage_with_options(timehist_usage, timehist_options);
3439 }
3440 if (sched.show_wakeups && sched.summary_only) {
3441 pr_err(" Error: -s and -w are mutually exclusive.\n");
3442 parse_options_usage(timehist_usage, timehist_options, "s", true);
3443 parse_options_usage(NULL, timehist_options, "w", true);
3444 return -EINVAL;
3445 }
3446
3447 return perf_sched__timehist(&sched);
2076 } else { 3448 } else {
2077 usage_with_options(sched_usage, sched_options); 3449 usage_with_options(sched_usage, sched_options);
2078 } 3450 }
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 7228d141a789..c0783b4f7b6c 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -22,6 +22,7 @@
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>
27#include <linux/time64.h> 28#include <linux/time64.h>
@@ -66,6 +67,8 @@ enum perf_output_field {
66 PERF_OUTPUT_WEIGHT = 1U << 18, 67 PERF_OUTPUT_WEIGHT = 1U << 18,
67 PERF_OUTPUT_BPF_OUTPUT = 1U << 19, 68 PERF_OUTPUT_BPF_OUTPUT = 1U << 19,
68 PERF_OUTPUT_CALLINDENT = 1U << 20, 69 PERF_OUTPUT_CALLINDENT = 1U << 20,
70 PERF_OUTPUT_INSN = 1U << 21,
71 PERF_OUTPUT_INSNLEN = 1U << 22,
69}; 72};
70 73
71struct output_option { 74struct output_option {
@@ -93,6 +96,8 @@ struct output_option {
93 {.str = "weight", .field = PERF_OUTPUT_WEIGHT}, 96 {.str = "weight", .field = PERF_OUTPUT_WEIGHT},
94 {.str = "bpf-output", .field = PERF_OUTPUT_BPF_OUTPUT}, 97 {.str = "bpf-output", .field = PERF_OUTPUT_BPF_OUTPUT},
95 {.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},
96}; 101};
97 102
98/* default set to maintain compatibility with current format */ 103/* default set to maintain compatibility with current format */
@@ -437,7 +442,6 @@ static void print_sample_start(struct perf_sample *sample,
437{ 442{
438 struct perf_event_attr *attr = &evsel->attr; 443 struct perf_event_attr *attr = &evsel->attr;
439 unsigned long secs; 444 unsigned long secs;
440 unsigned long usecs;
441 unsigned long long nsecs; 445 unsigned long long nsecs;
442 446
443 if (PRINT_FIELD(COMM)) { 447 if (PRINT_FIELD(COMM)) {
@@ -467,11 +471,14 @@ static void print_sample_start(struct perf_sample *sample,
467 nsecs = sample->time; 471 nsecs = sample->time;
468 secs = nsecs / NSEC_PER_SEC; 472 secs = nsecs / NSEC_PER_SEC;
469 nsecs -= secs * NSEC_PER_SEC; 473 nsecs -= secs * NSEC_PER_SEC;
470 usecs = nsecs / NSEC_PER_USEC; 474
471 if (nanosecs) 475 if (nanosecs)
472 printf("%5lu.%09llu: ", secs, nsecs); 476 printf("%5lu.%09llu: ", secs, nsecs);
473 else 477 else {
474 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 }
475 } 482 }
476} 483}
477 484
@@ -624,6 +631,20 @@ static void print_sample_callindent(struct perf_sample *sample,
624 printf("%*s", spacing - len, ""); 631 printf("%*s", spacing - len, "");
625} 632}
626 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
627static void print_sample_bts(struct perf_sample *sample, 648static void print_sample_bts(struct perf_sample *sample,
628 struct perf_evsel *evsel, 649 struct perf_evsel *evsel,
629 struct thread *thread, 650 struct thread *thread,
@@ -668,6 +689,8 @@ static void print_sample_bts(struct perf_sample *sample,
668 if (print_srcline_last) 689 if (print_srcline_last)
669 map__fprintf_srcline(al->map, al->addr, "\n ", stdout); 690 map__fprintf_srcline(al->map, al->addr, "\n ", stdout);
670 691
692 print_insn(sample, attr);
693
671 printf("\n"); 694 printf("\n");
672} 695}
673 696
@@ -811,6 +834,8 @@ struct perf_script {
811 struct cpu_map *cpus; 834 struct cpu_map *cpus;
812 struct thread_map *threads; 835 struct thread_map *threads;
813 int name_width; 836 int name_width;
837 const char *time_str;
838 struct perf_time_interval ptime;
814}; 839};
815 840
816static int perf_evlist__max_name_len(struct perf_evlist *evlist) 841static int perf_evlist__max_name_len(struct perf_evlist *evlist)
@@ -911,7 +936,7 @@ static void process_event(struct perf_script *script,
911 936
912 if (perf_evsel__is_bpf_output(evsel) && PRINT_FIELD(BPF_OUTPUT)) 937 if (perf_evsel__is_bpf_output(evsel) && PRINT_FIELD(BPF_OUTPUT))
913 print_sample_bpf_output(sample); 938 print_sample_bpf_output(sample);
914 939 print_insn(sample, attr);
915 printf("\n"); 940 printf("\n");
916} 941}
917 942
@@ -992,6 +1017,9 @@ static int process_sample_event(struct perf_tool *tool,
992 struct perf_script *scr = container_of(tool, struct perf_script, tool); 1017 struct perf_script *scr = container_of(tool, struct perf_script, tool);
993 struct addr_location al; 1018 struct addr_location al;
994 1019
1020 if (perf_time__skip_sample(&scr->ptime, sample->time))
1021 return 0;
1022
995 if (debug_mode) { 1023 if (debug_mode) {
996 if (sample->time < last_timestamp) { 1024 if (sample->time < last_timestamp) {
997 pr_err("Samples misordered, previous: %" PRIu64 1025 pr_err("Samples misordered, previous: %" PRIu64
@@ -2124,11 +2152,13 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2124 "Valid types: hw,sw,trace,raw. " 2152 "Valid types: hw,sw,trace,raw. "
2125 "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso," 2153 "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,"
2126 "addr,symoff,period,iregs,brstack,brstacksym,flags," 2154 "addr,symoff,period,iregs,brstack,brstacksym,flags,"
2127 "bpf-output,callindent", parse_output_fields), 2155 "bpf-output,callindent,insn,insnlen", parse_output_fields),
2128 OPT_BOOLEAN('a', "all-cpus", &system_wide, 2156 OPT_BOOLEAN('a', "all-cpus", &system_wide,
2129 "system-wide collection from all CPUs"), 2157 "system-wide collection from all CPUs"),
2130 OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]", 2158 OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]",
2131 "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"),
2132 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"),
2133 OPT_STRING('c', "comms", &symbol_conf.comm_list_str, "comm[,comm...]", 2163 OPT_STRING('c', "comms", &symbol_conf.comm_list_str, "comm[,comm...]",
2134 "only display events for these comms"), 2164 "only display events for these comms"),
@@ -2150,7 +2180,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2150 "Show the mmap events"), 2180 "Show the mmap events"),
2151 OPT_BOOLEAN('\0', "show-switch-events", &script.show_switch_events, 2181 OPT_BOOLEAN('\0', "show-switch-events", &script.show_switch_events,
2152 "Show context switch events (if recorded)"), 2182 "Show context switch events (if recorded)"),
2153 OPT_BOOLEAN('f', "force", &file.force, "don't complain, do it"), 2183 OPT_BOOLEAN('f', "force", &symbol_conf.force, "don't complain, do it"),
2154 OPT_BOOLEAN(0, "ns", &nanosecs, 2184 OPT_BOOLEAN(0, "ns", &nanosecs,
2155 "Use 9 decimal places when displaying time"), 2185 "Use 9 decimal places when displaying time"),
2156 OPT_CALLBACK_OPTARG(0, "itrace", &itrace_synth_opts, NULL, "opts", 2186 OPT_CALLBACK_OPTARG(0, "itrace", &itrace_synth_opts, NULL, "opts",
@@ -2162,7 +2192,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2162 "Enable symbol demangling"), 2192 "Enable symbol demangling"),
2163 OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, 2193 OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel,
2164 "Enable kernel symbol demangling"), 2194 "Enable kernel symbol demangling"),
2165 2195 OPT_STRING(0, "time", &script.time_str, "str",
2196 "Time span of interest (start,stop)"),
2166 OPT_END() 2197 OPT_END()
2167 }; 2198 };
2168 const char * const script_subcommands[] = { "record", "report", NULL }; 2199 const char * const script_subcommands[] = { "record", "report", NULL };
@@ -2181,6 +2212,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2181 PARSE_OPT_STOP_AT_NON_OPTION); 2212 PARSE_OPT_STOP_AT_NON_OPTION);
2182 2213
2183 file.path = input_name; 2214 file.path = input_name;
2215 file.force = symbol_conf.force;
2184 2216
2185 if (argc > 1 && !strncmp(argv[0], "rec", strlen("rec"))) { 2217 if (argc > 1 && !strncmp(argv[0], "rec", strlen("rec"))) {
2186 rec_script_path = get_script_path(argv[1], RECORD_SUFFIX); 2218 rec_script_path = get_script_path(argv[1], RECORD_SUFFIX);
@@ -2441,6 +2473,12 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
2441 if (err < 0) 2473 if (err < 0)
2442 goto out_delete; 2474 goto out_delete;
2443 2475
2476 /* needs to be parsed after looking up reference time */
2477 if (perf_time__parse_str(&script.ptime, script.time_str) != 0) {
2478 pr_err("Invalid time string\n");
2479 return -EINVAL;
2480 }
2481
2444 err = __cmd_script(&script); 2482 err = __cmd_script(&script);
2445 2483
2446 flush_scripting(); 2484 flush_scripting();
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 688dea7cb08f..13b54999ad79 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -533,7 +533,7 @@ static int store_counter_ids(struct perf_evsel *counter)
533static int __run_perf_stat(int argc, const char **argv) 533static int __run_perf_stat(int argc, const char **argv)
534{ 534{
535 int interval = stat_config.interval; 535 int interval = stat_config.interval;
536 char msg[512]; 536 char msg[BUFSIZ];
537 unsigned long long t0, t1; 537 unsigned long long t0, t1;
538 struct perf_evsel *counter; 538 struct perf_evsel *counter;
539 struct timespec ts; 539 struct timespec ts;
@@ -573,7 +573,7 @@ try_again:
573 if (errno == EINVAL || errno == ENOSYS || 573 if (errno == EINVAL || errno == ENOSYS ||
574 errno == ENOENT || errno == EOPNOTSUPP || 574 errno == ENOENT || errno == EOPNOTSUPP ||
575 errno == ENXIO) { 575 errno == ENXIO) {
576 if (verbose) 576 if (verbose > 0)
577 ui__warning("%s event is not supported by the kernel.\n", 577 ui__warning("%s event is not supported by the kernel.\n",
578 perf_evsel__name(counter)); 578 perf_evsel__name(counter));
579 counter->supported = false; 579 counter->supported = false;
@@ -582,7 +582,7 @@ try_again:
582 !(counter->leader->nr_members > 1)) 582 !(counter->leader->nr_members > 1))
583 continue; 583 continue;
584 } else if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) { 584 } else if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) {
585 if (verbose) 585 if (verbose > 0)
586 ui__warning("%s\n", msg); 586 ui__warning("%s\n", msg);
587 goto try_again; 587 goto try_again;
588 } 588 }
@@ -1765,7 +1765,7 @@ static inline int perf_env__get_cpu(struct perf_env *env, struct cpu_map *map, i
1765 1765
1766 cpu = map->map[idx]; 1766 cpu = map->map[idx];
1767 1767
1768 if (cpu >= env->nr_cpus_online) 1768 if (cpu >= env->nr_cpus_avail)
1769 return -1; 1769 return -1;
1770 1770
1771 return cpu; 1771 return cpu;
@@ -2195,7 +2195,7 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
2195} 2195}
2196 2196
2197static 2197static
2198int process_stat_config_event(struct perf_tool *tool __maybe_unused, 2198int process_stat_config_event(struct perf_tool *tool,
2199 union perf_event *event, 2199 union perf_event *event,
2200 struct perf_session *session __maybe_unused) 2200 struct perf_session *session __maybe_unused)
2201{ 2201{
@@ -2238,7 +2238,7 @@ static int set_maps(struct perf_stat *st)
2238} 2238}
2239 2239
2240static 2240static
2241int process_thread_map_event(struct perf_tool *tool __maybe_unused, 2241int process_thread_map_event(struct perf_tool *tool,
2242 union perf_event *event, 2242 union perf_event *event,
2243 struct perf_session *session __maybe_unused) 2243 struct perf_session *session __maybe_unused)
2244{ 2244{
@@ -2257,7 +2257,7 @@ int process_thread_map_event(struct perf_tool *tool __maybe_unused,
2257} 2257}
2258 2258
2259static 2259static
2260int process_cpu_map_event(struct perf_tool *tool __maybe_unused, 2260int process_cpu_map_event(struct perf_tool *tool,
2261 union perf_event *event, 2261 union perf_event *event,
2262 struct perf_session *session __maybe_unused) 2262 struct perf_session *session __maybe_unused)
2263{ 2263{
@@ -2445,8 +2445,9 @@ int cmd_stat(int argc, const char **argv, const char *prefix __maybe_unused)
2445 } else if (big_num_opt == 0) /* User passed --no-big-num */ 2445 } else if (big_num_opt == 0) /* User passed --no-big-num */
2446 big_num = false; 2446 big_num = false;
2447 2447
2448 /* Make system wide (-a) the default target. */
2448 if (!argc && target__none(&target)) 2449 if (!argc && target__none(&target))
2449 usage_with_options(stat_usage, stat_options); 2450 target.system_wide = true;
2450 2451
2451 if (run_count < 0) { 2452 if (run_count < 0) {
2452 pr_err("Run count must be a positive number\n"); 2453 pr_err("Run count must be a positive number\n");
@@ -2538,7 +2539,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix __maybe_unused)
2538 2539
2539 status = 0; 2540 status = 0;
2540 for (run_idx = 0; forever || run_idx < run_count; run_idx++) { 2541 for (run_idx = 0; forever || run_idx < run_count; run_idx++) {
2541 if (run_count != 1 && verbose) 2542 if (run_count != 1 && verbose > 0)
2542 fprintf(output, "[ perf stat: executing run #%d ... ]\n", 2543 fprintf(output, "[ perf stat: executing run #%d ... ]\n",
2543 run_idx + 1); 2544 run_idx + 1);
2544 2545
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index fe3af9535e85..ab9077915763 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -130,7 +130,7 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
130 return err; 130 return err;
131 } 131 }
132 132
133 err = symbol__disassemble(sym, map, 0); 133 err = symbol__disassemble(sym, map, NULL, 0);
134 if (err == 0) { 134 if (err == 0) {
135out_assign: 135out_assign:
136 top->sym_filter_entry = he; 136 top->sym_filter_entry = he;
@@ -643,7 +643,7 @@ repeat:
643 case -1: 643 case -1:
644 if (errno == EINTR) 644 if (errno == EINTR)
645 continue; 645 continue;
646 /* Fall trhu */ 646 __fallthrough;
647 default: 647 default:
648 c = getc(stdin); 648 c = getc(stdin);
649 tcsetattr(0, TCSAFLUSH, &save); 649 tcsetattr(0, TCSAFLUSH, &save);
@@ -859,7 +859,7 @@ static void perf_top__mmap_read(struct perf_top *top)
859 859
860static int perf_top__start_counters(struct perf_top *top) 860static int perf_top__start_counters(struct perf_top *top)
861{ 861{
862 char msg[512]; 862 char msg[BUFSIZ];
863 struct perf_evsel *counter; 863 struct perf_evsel *counter;
864 struct perf_evlist *evlist = top->evlist; 864 struct perf_evlist *evlist = top->evlist;
865 struct record_opts *opts = &top->record_opts; 865 struct record_opts *opts = &top->record_opts;
@@ -871,7 +871,7 @@ try_again:
871 if (perf_evsel__open(counter, top->evlist->cpus, 871 if (perf_evsel__open(counter, top->evlist->cpus,
872 top->evlist->threads) < 0) { 872 top->evlist->threads) < 0) {
873 if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) { 873 if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) {
874 if (verbose) 874 if (verbose > 0)
875 ui__warning("%s\n", msg); 875 ui__warning("%s\n", msg);
876 goto try_again; 876 goto try_again;
877 } 877 }
@@ -1216,7 +1216,9 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
1216 if (top.evlist == NULL) 1216 if (top.evlist == NULL)
1217 return -ENOMEM; 1217 return -ENOMEM;
1218 1218
1219 perf_config(perf_top_config, &top); 1219 status = perf_config(perf_top_config, &top);
1220 if (status)
1221 return status;
1220 1222
1221 argc = parse_options(argc, argv, options, top_usage, 0); 1223 argc = parse_options(argc, argv, options, top_usage, 0);
1222 if (argc) 1224 if (argc)
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index c298bd3e1d90..256f1fac6f7e 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -40,6 +40,7 @@
40 40
41#include <libaudit.h> /* FIXME: Still needed for audit_errno_to_name */ 41#include <libaudit.h> /* FIXME: Still needed for audit_errno_to_name */
42#include <stdlib.h> 42#include <stdlib.h>
43#include <string.h>
43#include <linux/err.h> 44#include <linux/err.h>
44#include <linux/filter.h> 45#include <linux/filter.h>
45#include <linux/audit.h> 46#include <linux/audit.h>
@@ -74,8 +75,6 @@ struct trace {
74 size_t nr; 75 size_t nr;
75 int *entries; 76 int *entries;
76 } ev_qualifier_ids; 77 } ev_qualifier_ids;
77 struct intlist *tid_list;
78 struct intlist *pid_list;
79 struct { 78 struct {
80 size_t nr; 79 size_t nr;
81 pid_t *entries; 80 pid_t *entries;
@@ -843,7 +842,6 @@ static size_t fprintf_duration(unsigned long t, FILE *fp)
843 */ 842 */
844struct thread_trace { 843struct thread_trace {
845 u64 entry_time; 844 u64 entry_time;
846 u64 exit_time;
847 bool entry_pending; 845 bool entry_pending;
848 unsigned long nr_events; 846 unsigned long nr_events;
849 unsigned long pfmaj, pfmin; 847 unsigned long pfmaj, pfmin;
@@ -1401,7 +1399,7 @@ static struct syscall *trace__syscall_info(struct trace *trace,
1401 return &trace->syscalls.table[id]; 1399 return &trace->syscalls.table[id];
1402 1400
1403out_cant_read: 1401out_cant_read:
1404 if (verbose) { 1402 if (verbose > 0) {
1405 fprintf(trace->output, "Problems reading syscall %d", id); 1403 fprintf(trace->output, "Problems reading syscall %d", id);
1406 if (id <= trace->syscalls.max && trace->syscalls.table[id].name != NULL) 1404 if (id <= trace->syscalls.max && trace->syscalls.table[id].name != NULL)
1407 fprintf(trace->output, "(%s)", trace->syscalls.table[id].name); 1405 fprintf(trace->output, "(%s)", trace->syscalls.table[id].name);
@@ -1452,7 +1450,7 @@ static int trace__printf_interrupted_entry(struct trace *trace, struct perf_samp
1452 1450
1453 duration = sample->time - ttrace->entry_time; 1451 duration = sample->time - ttrace->entry_time;
1454 1452
1455 printed = trace__fprintf_entry_head(trace, trace->current, duration, sample->time, trace->output); 1453 printed = trace__fprintf_entry_head(trace, trace->current, duration, ttrace->entry_time, trace->output);
1456 printed += fprintf(trace->output, "%-70s) ...\n", ttrace->entry_str); 1454 printed += fprintf(trace->output, "%-70s) ...\n", ttrace->entry_str);
1457 ttrace->entry_pending = false; 1455 ttrace->entry_pending = false;
1458 1456
@@ -1499,7 +1497,7 @@ static int trace__sys_enter(struct trace *trace, struct perf_evsel *evsel,
1499 1497
1500 if (sc->is_exit) { 1498 if (sc->is_exit) {
1501 if (!(trace->duration_filter || trace->summary_only || trace->min_stack)) { 1499 if (!(trace->duration_filter || trace->summary_only || trace->min_stack)) {
1502 trace__fprintf_entry_head(trace, thread, 1, sample->time, trace->output); 1500 trace__fprintf_entry_head(trace, thread, 1, ttrace->entry_time, trace->output);
1503 fprintf(trace->output, "%-70s)\n", ttrace->entry_str); 1501 fprintf(trace->output, "%-70s)\n", ttrace->entry_str);
1504 } 1502 }
1505 } else { 1503 } else {
@@ -1571,8 +1569,6 @@ static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel,
1571 ++trace->stats.vfs_getname; 1569 ++trace->stats.vfs_getname;
1572 } 1570 }
1573 1571
1574 ttrace->exit_time = sample->time;
1575
1576 if (ttrace->entry_time) { 1572 if (ttrace->entry_time) {
1577 duration = sample->time - ttrace->entry_time; 1573 duration = sample->time - ttrace->entry_time;
1578 if (trace__filter_duration(trace, duration)) 1574 if (trace__filter_duration(trace, duration))
@@ -1592,7 +1588,7 @@ static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel,
1592 if (trace->summary_only) 1588 if (trace->summary_only)
1593 goto out; 1589 goto out;
1594 1590
1595 trace__fprintf_entry_head(trace, thread, duration, sample->time, trace->output); 1591 trace__fprintf_entry_head(trace, thread, duration, ttrace->entry_time, trace->output);
1596 1592
1597 if (ttrace->entry_pending) { 1593 if (ttrace->entry_pending) {
1598 fprintf(trace->output, "%-70s", ttrace->entry_str); 1594 fprintf(trace->output, "%-70s", ttrace->entry_str);
@@ -1805,10 +1801,10 @@ static void print_location(FILE *f, struct perf_sample *sample,
1805 bool print_dso, bool print_sym) 1801 bool print_dso, bool print_sym)
1806{ 1802{
1807 1803
1808 if ((verbose || print_dso) && al->map) 1804 if ((verbose > 0 || print_dso) && al->map)
1809 fprintf(f, "%s@", al->map->dso->long_name); 1805 fprintf(f, "%s@", al->map->dso->long_name);
1810 1806
1811 if ((verbose || print_sym) && al->sym) 1807 if ((verbose > 0 || print_sym) && al->sym)
1812 fprintf(f, "%s+0x%" PRIx64, al->sym->name, 1808 fprintf(f, "%s+0x%" PRIx64, al->sym->name,
1813 al->addr - al->sym->start); 1809 al->addr - al->sym->start);
1814 else if (al->map) 1810 else if (al->map)
@@ -1893,18 +1889,6 @@ out_put:
1893 return err; 1889 return err;
1894} 1890}
1895 1891
1896static bool skip_sample(struct trace *trace, struct perf_sample *sample)
1897{
1898 if ((trace->pid_list && intlist__find(trace->pid_list, sample->pid)) ||
1899 (trace->tid_list && intlist__find(trace->tid_list, sample->tid)))
1900 return false;
1901
1902 if (trace->pid_list || trace->tid_list)
1903 return true;
1904
1905 return false;
1906}
1907
1908static void trace__set_base_time(struct trace *trace, 1892static void trace__set_base_time(struct trace *trace,
1909 struct perf_evsel *evsel, 1893 struct perf_evsel *evsel,
1910 struct perf_sample *sample) 1894 struct perf_sample *sample)
@@ -1929,11 +1913,13 @@ static int trace__process_sample(struct perf_tool *tool,
1929 struct machine *machine __maybe_unused) 1913 struct machine *machine __maybe_unused)
1930{ 1914{
1931 struct trace *trace = container_of(tool, struct trace, tool); 1915 struct trace *trace = container_of(tool, struct trace, tool);
1916 struct thread *thread;
1932 int err = 0; 1917 int err = 0;
1933 1918
1934 tracepoint_handler handler = evsel->handler; 1919 tracepoint_handler handler = evsel->handler;
1935 1920
1936 if (skip_sample(trace, sample)) 1921 thread = machine__findnew_thread(trace->host, sample->pid, sample->tid);
1922 if (thread && thread__is_filtered(thread))
1937 return 0; 1923 return 0;
1938 1924
1939 trace__set_base_time(trace, evsel, sample); 1925 trace__set_base_time(trace, evsel, sample);
@@ -1946,27 +1932,6 @@ static int trace__process_sample(struct perf_tool *tool,
1946 return err; 1932 return err;
1947} 1933}
1948 1934
1949static int parse_target_str(struct trace *trace)
1950{
1951 if (trace->opts.target.pid) {
1952 trace->pid_list = intlist__new(trace->opts.target.pid);
1953 if (trace->pid_list == NULL) {
1954 pr_err("Error parsing process id string\n");
1955 return -EINVAL;
1956 }
1957 }
1958
1959 if (trace->opts.target.tid) {
1960 trace->tid_list = intlist__new(trace->opts.target.tid);
1961 if (trace->tid_list == NULL) {
1962 pr_err("Error parsing thread id string\n");
1963 return -EINVAL;
1964 }
1965 }
1966
1967 return 0;
1968}
1969
1970static int trace__record(struct trace *trace, int argc, const char **argv) 1935static int trace__record(struct trace *trace, int argc, const char **argv)
1971{ 1936{
1972 unsigned int rec_argc, i, j; 1937 unsigned int rec_argc, i, j;
@@ -2310,12 +2275,17 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
2310 if (err < 0) 2275 if (err < 0)
2311 goto out_error_mmap; 2276 goto out_error_mmap;
2312 2277
2313 if (!target__none(&trace->opts.target)) 2278 if (!target__none(&trace->opts.target) && !trace->opts.initial_delay)
2314 perf_evlist__enable(evlist); 2279 perf_evlist__enable(evlist);
2315 2280
2316 if (forks) 2281 if (forks)
2317 perf_evlist__start_workload(evlist); 2282 perf_evlist__start_workload(evlist);
2318 2283
2284 if (trace->opts.initial_delay) {
2285 usleep(trace->opts.initial_delay * 1000);
2286 perf_evlist__enable(evlist);
2287 }
2288
2319 trace->multiple_threads = thread_map__pid(evlist->threads, 0) == -1 || 2289 trace->multiple_threads = thread_map__pid(evlist->threads, 0) == -1 ||
2320 evlist->threads->nr > 1 || 2290 evlist->threads->nr > 1 ||
2321 perf_evlist__first(evlist)->attr.inherit; 2291 perf_evlist__first(evlist)->attr.inherit;
@@ -2458,6 +2428,12 @@ static int trace__replay(struct trace *trace)
2458 if (session == NULL) 2428 if (session == NULL)
2459 return -1; 2429 return -1;
2460 2430
2431 if (trace->opts.target.pid)
2432 symbol_conf.pid_list_str = strdup(trace->opts.target.pid);
2433
2434 if (trace->opts.target.tid)
2435 symbol_conf.tid_list_str = strdup(trace->opts.target.tid);
2436
2461 if (symbol__init(&session->header.env) < 0) 2437 if (symbol__init(&session->header.env) < 0)
2462 goto out; 2438 goto out;
2463 2439
@@ -2501,10 +2477,6 @@ static int trace__replay(struct trace *trace)
2501 evsel->handler = trace__pgfault; 2477 evsel->handler = trace__pgfault;
2502 } 2478 }
2503 2479
2504 err = parse_target_str(trace);
2505 if (err != 0)
2506 goto out;
2507
2508 setup_pager(); 2480 setup_pager();
2509 2481
2510 err = perf_session__process_events(session); 2482 err = perf_session__process_events(session);
@@ -2728,6 +2700,91 @@ static void evlist__set_evsel_handler(struct perf_evlist *evlist, void *handler)
2728 evsel->handler = handler; 2700 evsel->handler = handler;
2729} 2701}
2730 2702
2703/*
2704 * XXX: Hackish, just splitting the combined -e+--event (syscalls
2705 * (raw_syscalls:{sys_{enter,exit}} + events (tracepoints, HW, SW, etc) to use
2706 * existing facilities unchanged (trace->ev_qualifier + parse_options()).
2707 *
2708 * It'd be better to introduce a parse_options() variant that would return a
2709 * list with the terms it didn't match to an event...
2710 */
2711static int trace__parse_events_option(const struct option *opt, const char *str,
2712 int unset __maybe_unused)
2713{
2714 struct trace *trace = (struct trace *)opt->value;
2715 const char *s = str;
2716 char *sep = NULL, *lists[2] = { NULL, NULL, };
2717 int len = strlen(str), err = -1, list;
2718 char *strace_groups_dir = system_path(STRACE_GROUPS_DIR);
2719 char group_name[PATH_MAX];
2720
2721 if (strace_groups_dir == NULL)
2722 return -1;
2723
2724 if (*s == '!') {
2725 ++s;
2726 trace->not_ev_qualifier = true;
2727 }
2728
2729 while (1) {
2730 if ((sep = strchr(s, ',')) != NULL)
2731 *sep = '\0';
2732
2733 list = 0;
2734 if (syscalltbl__id(trace->sctbl, s) >= 0) {
2735 list = 1;
2736 } else {
2737 path__join(group_name, sizeof(group_name), strace_groups_dir, s);
2738 if (access(group_name, R_OK) == 0)
2739 list = 1;
2740 }
2741
2742 if (lists[list]) {
2743 sprintf(lists[list] + strlen(lists[list]), ",%s", s);
2744 } else {
2745 lists[list] = malloc(len);
2746 if (lists[list] == NULL)
2747 goto out;
2748 strcpy(lists[list], s);
2749 }
2750
2751 if (!sep)
2752 break;
2753
2754 *sep = ',';
2755 s = sep + 1;
2756 }
2757
2758 if (lists[1] != NULL) {
2759 struct strlist_config slist_config = {
2760 .dirname = strace_groups_dir,
2761 };
2762
2763 trace->ev_qualifier = strlist__new(lists[1], &slist_config);
2764 if (trace->ev_qualifier == NULL) {
2765 fputs("Not enough memory to parse event qualifier", trace->output);
2766 goto out;
2767 }
2768
2769 if (trace__validate_ev_qualifier(trace))
2770 goto out;
2771 }
2772
2773 err = 0;
2774
2775 if (lists[0]) {
2776 struct option o = OPT_CALLBACK('e', "event", &trace->evlist, "event",
2777 "event selector. use 'perf list' to list available events",
2778 parse_events_option);
2779 err = parse_events_option(&o, lists[0], 0);
2780 }
2781out:
2782 if (sep)
2783 *sep = ',';
2784
2785 return err;
2786}
2787
2731int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused) 2788int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
2732{ 2789{
2733 const char *trace_usage[] = { 2790 const char *trace_usage[] = {
@@ -2759,15 +2816,15 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
2759 .max_stack = UINT_MAX, 2816 .max_stack = UINT_MAX,
2760 }; 2817 };
2761 const char *output_name = NULL; 2818 const char *output_name = NULL;
2762 const char *ev_qualifier_str = NULL;
2763 const struct option trace_options[] = { 2819 const struct option trace_options[] = {
2764 OPT_CALLBACK(0, "event", &trace.evlist, "event", 2820 OPT_CALLBACK('e', "event", &trace, "event",
2765 "event selector. use 'perf list' to list available events", 2821 "event/syscall selector. use 'perf list' to list available events",
2766 parse_events_option), 2822 trace__parse_events_option),
2767 OPT_BOOLEAN(0, "comm", &trace.show_comm, 2823 OPT_BOOLEAN(0, "comm", &trace.show_comm,
2768 "show the thread COMM next to its id"), 2824 "show the thread COMM next to its id"),
2769 OPT_BOOLEAN(0, "tool_stats", &trace.show_tool_stats, "show tool stats"), 2825 OPT_BOOLEAN(0, "tool_stats", &trace.show_tool_stats, "show tool stats"),
2770 OPT_STRING('e', "expr", &ev_qualifier_str, "expr", "list of syscalls to trace"), 2826 OPT_CALLBACK(0, "expr", &trace, "expr", "list of syscalls/events to trace",
2827 trace__parse_events_option),
2771 OPT_STRING('o', "output", &output_name, "file", "output file name"), 2828 OPT_STRING('o', "output", &output_name, "file", "output file name"),
2772 OPT_STRING('i', "input", &input_name, "file", "Analyze events in file"), 2829 OPT_STRING('i', "input", &input_name, "file", "Analyze events in file"),
2773 OPT_STRING('p', "pid", &trace.opts.target.pid, "pid", 2830 OPT_STRING('p', "pid", &trace.opts.target.pid, "pid",
@@ -2816,6 +2873,9 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
2816 "Default: kernel.perf_event_max_stack or " __stringify(PERF_MAX_STACK_DEPTH)), 2873 "Default: kernel.perf_event_max_stack or " __stringify(PERF_MAX_STACK_DEPTH)),
2817 OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout, 2874 OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout,
2818 "per thread proc mmap processing timeout in ms"), 2875 "per thread proc mmap processing timeout in ms"),
2876 OPT_UINTEGER('D', "delay", &trace.opts.initial_delay,
2877 "ms to wait before starting measurement after program "
2878 "start"),
2819 OPT_END() 2879 OPT_END()
2820 }; 2880 };
2821 bool __maybe_unused max_stack_user_set = true; 2881 bool __maybe_unused max_stack_user_set = true;
@@ -2889,7 +2949,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
2889 return -1; 2949 return -1;
2890 } 2950 }
2891 2951
2892 if (!trace.trace_syscalls && ev_qualifier_str) { 2952 if (!trace.trace_syscalls && trace.ev_qualifier) {
2893 pr_err("The -e option can't be used with --no-syscalls.\n"); 2953 pr_err("The -e option can't be used with --no-syscalls.\n");
2894 goto out; 2954 goto out;
2895 } 2955 }
@@ -2904,28 +2964,6 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused)
2904 2964
2905 trace.open_id = syscalltbl__id(trace.sctbl, "open"); 2965 trace.open_id = syscalltbl__id(trace.sctbl, "open");
2906 2966
2907 if (ev_qualifier_str != NULL) {
2908 const char *s = ev_qualifier_str;
2909 struct strlist_config slist_config = {
2910 .dirname = system_path(STRACE_GROUPS_DIR),
2911 };
2912
2913 trace.not_ev_qualifier = *s == '!';
2914 if (trace.not_ev_qualifier)
2915 ++s;
2916 trace.ev_qualifier = strlist__new(s, &slist_config);
2917 if (trace.ev_qualifier == NULL) {
2918 fputs("Not enough memory to parse event qualifier",
2919 trace.output);
2920 err = -ENOMEM;
2921 goto out_close;
2922 }
2923
2924 err = trace__validate_ev_qualifier(&trace);
2925 if (err)
2926 goto out_close;
2927 }
2928
2929 err = target__validate(&trace.opts.target); 2967 err = target__validate(&trace.opts.target);
2930 if (err) { 2968 if (err) {
2931 target__strerror(&trace.opts.target, err, bf, sizeof(bf)); 2969 target__strerror(&trace.opts.target, err, bf, sizeof(bf));
diff --git a/tools/perf/builtin.h b/tools/perf/builtin.h
index 41c24010ab43..036e1e35b1a8 100644
--- a/tools/perf/builtin.h
+++ b/tools/perf/builtin.h
@@ -18,10 +18,12 @@ 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);
24int cmd_sched(int argc, const char **argv, const char *prefix); 25int cmd_sched(int argc, const char **argv, const char *prefix);
26int cmd_kallsyms(int argc, const char **argv, const char *prefix);
25int cmd_list(int argc, const char **argv, const char *prefix); 27int cmd_list(int argc, const char **argv, const char *prefix);
26int cmd_record(int argc, const char **argv, const char *prefix); 28int cmd_record(int argc, const char **argv, const char *prefix);
27int cmd_report(int argc, const char **argv, const char *prefix); 29int cmd_report(int argc, const char **argv, const char *prefix);
@@ -39,6 +41,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix);
39int cmd_inject(int argc, const char **argv, const char *prefix); 41int cmd_inject(int argc, const char **argv, const char *prefix);
40int cmd_mem(int argc, const char **argv, const char *prefix); 42int cmd_mem(int argc, const char **argv, const char *prefix);
41int cmd_data(int argc, const char **argv, const char *prefix); 43int cmd_data(int argc, const char **argv, const char *prefix);
44int cmd_ftrace(int argc, const char **argv, const char *prefix);
42 45
43int find_scripts(char **scripts_array, char **scripts_path_array); 46int find_scripts(char **scripts_array, char **scripts_path_array);
44#endif 47#endif
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/command-list.txt b/tools/perf/command-list.txt
index ab5cbaa170d0..ac3efd396a72 100644
--- a/tools/perf/command-list.txt
+++ b/tools/perf/command-list.txt
@@ -11,7 +11,9 @@ perf-data mainporcelain common
11perf-diff mainporcelain common 11perf-diff mainporcelain common
12perf-config mainporcelain common 12perf-config mainporcelain common
13perf-evlist mainporcelain common 13perf-evlist mainporcelain common
14perf-ftrace mainporcelain common
14perf-inject mainporcelain common 15perf-inject mainporcelain common
16perf-kallsyms mainporcelain common
15perf-kmem mainporcelain common 17perf-kmem mainporcelain common
16perf-kvm mainporcelain common 18perf-kvm mainporcelain common
17perf-list mainporcelain common 19perf-list mainporcelain common
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 df14e6b67b63..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 | awk '{print $$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.c b/tools/perf/perf.c
index 64c06961bfe4..6d5479e03e0d 100644
--- a/tools/perf/perf.c
+++ b/tools/perf/perf.c
@@ -29,7 +29,6 @@ const char perf_usage_string[] =
29const char perf_more_info_string[] = 29const char perf_more_info_string[] =
30 "See 'perf help COMMAND' for more information on a specific command."; 30 "See 'perf help COMMAND' for more information on a specific command.";
31 31
32int use_browser = -1;
33static int use_pager = -1; 32static int use_pager = -1;
34const char *input_name; 33const char *input_name;
35 34
@@ -43,9 +42,11 @@ static struct cmd_struct commands[] = {
43 { "buildid-cache", cmd_buildid_cache, 0 }, 42 { "buildid-cache", cmd_buildid_cache, 0 },
44 { "buildid-list", cmd_buildid_list, 0 }, 43 { "buildid-list", cmd_buildid_list, 0 },
45 { "config", cmd_config, 0 }, 44 { "config", cmd_config, 0 },
45 { "c2c", cmd_c2c, 0 },
46 { "diff", cmd_diff, 0 }, 46 { "diff", cmd_diff, 0 },
47 { "evlist", cmd_evlist, 0 }, 47 { "evlist", cmd_evlist, 0 },
48 { "help", cmd_help, 0 }, 48 { "help", cmd_help, 0 },
49 { "kallsyms", cmd_kallsyms, 0 },
49 { "list", cmd_list, 0 }, 50 { "list", cmd_list, 0 },
50 { "record", cmd_record, 0 }, 51 { "record", cmd_record, 0 },
51 { "report", cmd_report, 0 }, 52 { "report", cmd_report, 0 },
@@ -70,6 +71,7 @@ static struct cmd_struct commands[] = {
70 { "inject", cmd_inject, 0 }, 71 { "inject", cmd_inject, 0 },
71 { "mem", cmd_mem, 0 }, 72 { "mem", cmd_mem, 0 },
72 { "data", cmd_data, 0 }, 73 { "data", cmd_data, 0 },
74 { "ftrace", cmd_ftrace, 0 },
73}; 75};
74 76
75struct pager_config { 77struct pager_config {
@@ -88,11 +90,12 @@ static int pager_command_config(const char *var, const char *value, void *data)
88/* returns 0 for "no pager", 1 for "use pager", and -1 for "not specified" */ 90/* returns 0 for "no pager", 1 for "use pager", and -1 for "not specified" */
89int check_pager_config(const char *cmd) 91int check_pager_config(const char *cmd)
90{ 92{
93 int err;
91 struct pager_config c; 94 struct pager_config c;
92 c.cmd = cmd; 95 c.cmd = cmd;
93 c.val = -1; 96 c.val = -1;
94 perf_config(pager_command_config, &c); 97 err = perf_config(pager_command_config, &c);
95 return c.val; 98 return err ?: c.val;
96} 99}
97 100
98static int browser_command_config(const char *var, const char *value, void *data) 101static int browser_command_config(const char *var, const char *value, void *data)
@@ -111,11 +114,12 @@ static int browser_command_config(const char *var, const char *value, void *data
111 */ 114 */
112static int check_browser_config(const char *cmd) 115static int check_browser_config(const char *cmd)
113{ 116{
117 int err;
114 struct pager_config c; 118 struct pager_config c;
115 c.cmd = cmd; 119 c.cmd = cmd;
116 c.val = -1; 120 c.val = -1;
117 perf_config(browser_command_config, &c); 121 err = perf_config(browser_command_config, &c);
118 return c.val; 122 return err ?: c.val;
119} 123}
120 124
121static void commit_pager_choice(void) 125static void commit_pager_choice(void)
@@ -328,8 +332,6 @@ static int handle_alias(int *argcp, const char ***argv)
328 return ret; 332 return ret;
329} 333}
330 334
331const char perf_version_string[] = PERF_VERSION;
332
333#define RUN_SETUP (1<<0) 335#define RUN_SETUP (1<<0)
334#define USE_PAGER (1<<1) 336#define USE_PAGER (1<<1)
335 337
@@ -509,6 +511,7 @@ static void cache_line_size(int *cacheline_sizep)
509 511
510int main(int argc, const char **argv) 512int main(int argc, const char **argv)
511{ 513{
514 int err;
512 const char *cmd; 515 const char *cmd;
513 char sbuf[STRERR_BUFSIZE]; 516 char sbuf[STRERR_BUFSIZE];
514 int value; 517 int value;
@@ -534,7 +537,9 @@ int main(int argc, const char **argv)
534 srandom(time(NULL)); 537 srandom(time(NULL));
535 538
536 perf_config__init(); 539 perf_config__init();
537 perf_config(perf_default_config, NULL); 540 err = perf_config(perf_default_config, NULL);
541 if (err)
542 return err;
538 set_buildid_dir(NULL); 543 set_buildid_dir(NULL);
539 544
540 /* get debugfs/tracefs mount point from /proc/mounts */ 545 /* get debugfs/tracefs mount point from /proc/mounts */
diff --git a/tools/perf/perf.h b/tools/perf/perf.h
index 9a0236a4cf95..1c27d947c2fe 100644
--- a/tools/perf/perf.h
+++ b/tools/perf/perf.h
@@ -55,6 +55,7 @@ struct record_opts {
55 bool all_user; 55 bool all_user;
56 bool tail_synthesize; 56 bool tail_synthesize;
57 bool overwrite; 57 bool overwrite;
58 bool ignore_missing_thread;
58 unsigned int freq; 59 unsigned int freq;
59 unsigned int mmap_pages; 60 unsigned int mmap_pages;
60 unsigned int auxtrace_mmap_pages; 61 unsigned int auxtrace_mmap_pages;
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/uncore-cache.json b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json
new file mode 100644
index 000000000000..076459c51d4e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-cache.json
@@ -0,0 +1,317 @@
1[
2 {
3 "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_C_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "CBO"
8 },
9 {
10 "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
11 "Counter": "0,1,2,3",
12 "EventCode": "0x34",
13 "EventName": "UNC_C_LLC_LOOKUP.ANY",
14 "Filter": "filter_state=0x1",
15 "PerPkg": "1",
16 "ScaleUnit": "64Bytes",
17 "UMask": "0x11",
18 "Unit": "CBO"
19 },
20 {
21 "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
22 "Counter": "0,1,2,3",
23 "EventCode": "0x37",
24 "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
25 "PerPkg": "1",
26 "ScaleUnit": "64Bytes",
27 "UMask": "0x1",
28 "Unit": "CBO"
29 },
30 {
31 "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode",
32 "Counter": "0,1,2,3",
33 "EventCode": "0x35",
34 "EventName": "LLC_MISSES.DATA_READ",
35 "Filter": "filter_opc=0x182",
36 "PerPkg": "1",
37 "ScaleUnit": "64Bytes",
38 "UMask": "0x3",
39 "Unit": "CBO"
40 },
41 {
42 "BriefDescription": "LLC misses - Uncacheable reads (from cpu) . Derived from unc_c_tor_inserts.miss_opcode",
43 "Counter": "0,1,2,3",
44 "EventCode": "0x35",
45 "EventName": "LLC_MISSES.UNCACHEABLE",
46 "Filter": "filter_opc=0x187",
47 "PerPkg": "1",
48 "ScaleUnit": "64Bytes",
49 "UMask": "0x3",
50 "Unit": "CBO"
51 },
52 {
53 "BriefDescription": "MMIO reads. Derived from unc_c_tor_inserts.miss_opcode",
54 "Counter": "0,1,2,3",
55 "EventCode": "0x35",
56 "EventName": "LLC_MISSES.MMIO_READ",
57 "Filter": "filter_opc=0x187,filter_nc=1",
58 "PerPkg": "1",
59 "ScaleUnit": "64Bytes",
60 "UMask": "0x3",
61 "Unit": "CBO"
62 },
63 {
64 "BriefDescription": "MMIO writes. Derived from unc_c_tor_inserts.miss_opcode",
65 "Counter": "0,1,2,3",
66 "EventCode": "0x35",
67 "EventName": "LLC_MISSES.MMIO_WRITE",
68 "Filter": "filter_opc=0x18f,filter_nc=1",
69 "PerPkg": "1",
70 "ScaleUnit": "64Bytes",
71 "UMask": "0x3",
72 "Unit": "CBO"
73 },
74 {
75 "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode",
76 "Counter": "0,1,2,3",
77 "EventCode": "0x35",
78 "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
79 "Filter": "filter_opc=0x190",
80 "PerPkg": "1",
81 "ScaleUnit": "64Bytes",
82 "UMask": "0x3",
83 "Unit": "CBO"
84 },
85 {
86 "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode",
87 "Counter": "0,1,2,3",
88 "EventCode": "0x35",
89 "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
90 "Filter": "filter_opc=0x191",
91 "PerPkg": "1",
92 "ScaleUnit": "64Bytes",
93 "UMask": "0x3",
94 "Unit": "CBO"
95 },
96 {
97 "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode",
98 "Counter": "0,1,2,3",
99 "EventCode": "0x35",
100 "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
101 "Filter": "filter_opc=0x192",
102 "PerPkg": "1",
103 "ScaleUnit": "64Bytes",
104 "UMask": "0x3",
105 "Unit": "CBO"
106 },
107 {
108 "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode",
109 "Counter": "0,1,2,3",
110 "EventCode": "0x35",
111 "EventName": "LLC_MISSES.PCIE_READ",
112 "Filter": "filter_opc=0x19e",
113 "PerPkg": "1",
114 "ScaleUnit": "64Bytes",
115 "UMask": "0x3",
116 "Unit": "CBO"
117 },
118 {
119 "BriefDescription": "ItoM write misses (as part of fast string memcpy stores) + PCIe full line writes. Derived from unc_c_tor_inserts.miss_opcode",
120 "Counter": "0,1,2,3",
121 "EventCode": "0x35",
122 "EventName": "LLC_MISSES.PCIE_WRITE",
123 "Filter": "filter_opc=0x1c8",
124 "PerPkg": "1",
125 "ScaleUnit": "64Bytes",
126 "UMask": "0x3",
127 "Unit": "CBO"
128 },
129 {
130 "BriefDescription": "PCIe write misses (full cache line). Derived from unc_c_tor_inserts.miss_opcode",
131 "Counter": "0,1,2,3",
132 "EventCode": "0x35",
133 "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
134 "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
135 "PerPkg": "1",
136 "ScaleUnit": "64Bytes",
137 "UMask": "0x3",
138 "Unit": "CBO"
139 },
140 {
141 "BriefDescription": "PCIe writes (partial cache line). Derived from unc_c_tor_inserts.opcode",
142 "Counter": "0,1,2,3",
143 "EventCode": "0x35",
144 "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
145 "Filter": "filter_opc=0x180,filter_tid=0x3e",
146 "PerPkg": "1",
147 "UMask": "0x1",
148 "Unit": "CBO"
149 },
150 {
151 "BriefDescription": "L2 demand and L2 prefetch code references to LLC. Derived from unc_c_tor_inserts.opcode",
152 "Counter": "0,1,2,3",
153 "EventCode": "0x35",
154 "EventName": "LLC_REFERENCES.CODE_LLC_PREFETCH",
155 "Filter": "filter_opc=0x181",
156 "PerPkg": "1",
157 "ScaleUnit": "64Bytes",
158 "UMask": "0x1",
159 "Unit": "CBO"
160 },
161 {
162 "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode",
163 "Counter": "0,1,2,3",
164 "EventCode": "0x35",
165 "EventName": "LLC_REFERENCES.STREAMING_FULL",
166 "Filter": "filter_opc=0x18c",
167 "PerPkg": "1",
168 "ScaleUnit": "64Bytes",
169 "UMask": "0x1",
170 "Unit": "CBO"
171 },
172 {
173 "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode",
174 "Counter": "0,1,2,3",
175 "EventCode": "0x35",
176 "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
177 "Filter": "filter_opc=0x18d",
178 "PerPkg": "1",
179 "ScaleUnit": "64Bytes",
180 "UMask": "0x1",
181 "Unit": "CBO"
182 },
183 {
184 "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode",
185 "Counter": "0,1,2,3",
186 "EventCode": "0x35",
187 "EventName": "LLC_REFERENCES.PCIE_READ",
188 "Filter": "filter_opc=0x19e",
189 "PerPkg": "1",
190 "ScaleUnit": "64Bytes",
191 "UMask": "0x1",
192 "Unit": "CBO"
193 },
194 {
195 "BriefDescription": "PCIe write references (full cache line). Derived from unc_c_tor_inserts.opcode",
196 "Counter": "0,1,2,3",
197 "EventCode": "0x35",
198 "EventName": "LLC_REFERENCES.PCIE_WRITE",
199 "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
200 "PerPkg": "1",
201 "ScaleUnit": "64Bytes",
202 "UMask": "0x1",
203 "Unit": "CBO"
204 },
205 {
206 "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode",
207 "EventCode": "0x36",
208 "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
209 "Filter": "filter_opc=0x182",
210 "PerPkg": "1",
211 "UMask": "0x3",
212 "Unit": "CBO"
213 },
214 {
215 "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
216 "Counter": "0,1,2,3",
217 "EventCode": "0x1",
218 "EventName": "UNC_H_REQUESTS.READS",
219 "PerPkg": "1",
220 "UMask": "0x3",
221 "Unit": "HA"
222 },
223 {
224 "BriefDescription": "read requests to local home agent. Derived from unc_h_requests.reads_local",
225 "Counter": "0,1,2,3",
226 "EventCode": "0x1",
227 "EventName": "UNC_H_REQUESTS.READS_LOCAL",
228 "PerPkg": "1",
229 "UMask": "0x1",
230 "Unit": "HA"
231 },
232 {
233 "BriefDescription": "read requests to remote home agent. Derived from unc_h_requests.reads_remote",
234 "Counter": "0,1,2,3",
235 "EventCode": "0x1",
236 "EventName": "UNC_H_REQUESTS.READS_REMOTE",
237 "PerPkg": "1",
238 "UMask": "0x2",
239 "Unit": "HA"
240 },
241 {
242 "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
243 "Counter": "0,1,2,3",
244 "EventCode": "0x1",
245 "EventName": "UNC_H_REQUESTS.WRITES",
246 "PerPkg": "1",
247 "UMask": "0xC",
248 "Unit": "HA"
249 },
250 {
251 "BriefDescription": "write requests to local home agent. Derived from unc_h_requests.writes_local",
252 "Counter": "0,1,2,3",
253 "EventCode": "0x1",
254 "EventName": "UNC_H_REQUESTS.WRITES_LOCAL",
255 "PerPkg": "1",
256 "UMask": "0x4",
257 "Unit": "HA"
258 },
259 {
260 "BriefDescription": "write requests to remote home agent. Derived from unc_h_requests.writes_remote",
261 "Counter": "0,1,2,3",
262 "EventCode": "0x1",
263 "EventName": "UNC_H_REQUESTS.WRITES_REMOTE",
264 "PerPkg": "1",
265 "UMask": "0x8",
266 "Unit": "HA"
267 },
268 {
269 "BriefDescription": "Conflict requests (requests for same address from multiple agents simultaneously). Derived from unc_h_snoop_resp.rspcnflct",
270 "Counter": "0,1,2,3",
271 "EventCode": "0x21",
272 "EventName": "UNC_H_SNOOP_RESP.RSPCNFLCT",
273 "PerPkg": "1",
274 "UMask": "0x40",
275 "Unit": "HA"
276 },
277 {
278 "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
279 "Counter": "0,1,2,3",
280 "EventCode": "0x21",
281 "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
282 "PerPkg": "1",
283 "ScaleUnit": "64Bytes",
284 "UMask": "0x20",
285 "Unit": "HA"
286 },
287 {
288 "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
289 "Counter": "0,1,2,3",
290 "EventCode": "0x21",
291 "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
292 "PerPkg": "1",
293 "ScaleUnit": "64Bytes",
294 "UMask": "0x4",
295 "Unit": "HA"
296 },
297 {
298 "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
299 "Counter": "0,1,2,3",
300 "EventCode": "0x21",
301 "EventName": "UNC_H_SNOOP_RESP.RSPS",
302 "PerPkg": "1",
303 "ScaleUnit": "64Bytes",
304 "UMask": "0x2",
305 "Unit": "HA"
306 },
307 {
308 "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
309 "Counter": "0,1,2,3",
310 "EventCode": "0x21",
311 "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
312 "PerPkg": "1",
313 "ScaleUnit": "64Bytes",
314 "UMask": "0x8",
315 "Unit": "HA"
316 }
317]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json
new file mode 100644
index 000000000000..d17dc235f734
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-memory.json
@@ -0,0 +1,83 @@
1[
2 {
3 "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x4",
6 "EventName": "UNC_M_CAS_COUNT.RD",
7 "PerPkg": "1",
8 "ScaleUnit": "64Bytes",
9 "UMask": "0x3",
10 "Unit": "iMC"
11 },
12 {
13 "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
14 "Counter": "0,1,2,3",
15 "EventCode": "0x4",
16 "EventName": "UNC_M_CAS_COUNT.WR",
17 "PerPkg": "1",
18 "ScaleUnit": "64Bytes",
19 "UMask": "0xC",
20 "Unit": "iMC"
21 },
22 {
23 "BriefDescription": "Memory controller clock ticks. Derived from unc_m_clockticks",
24 "Counter": "0,1,2,3",
25 "EventName": "UNC_M_CLOCKTICKS",
26 "PerPkg": "1",
27 "Unit": "iMC"
28 },
29 {
30 "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
31 "Counter": "0,1,2,3",
32 "EventCode": "0x85",
33 "EventName": "UNC_M_POWER_CHANNEL_PPD",
34 "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
35 "PerPkg": "1",
36 "Unit": "iMC"
37 },
38 {
39 "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
40 "Counter": "0,1,2,3",
41 "EventCode": "0x86",
42 "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
43 "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
44 "PerPkg": "1",
45 "Unit": "iMC"
46 },
47 {
48 "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
49 "Counter": "0,1,2,3",
50 "EventCode": "0x43",
51 "EventName": "UNC_M_POWER_SELF_REFRESH",
52 "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
53 "PerPkg": "1",
54 "Unit": "iMC"
55 },
56 {
57 "BriefDescription": "Pre-charges due to page misses. Derived from unc_m_pre_count.page_miss",
58 "Counter": "0,1,2,3",
59 "EventCode": "0x2",
60 "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
61 "PerPkg": "1",
62 "UMask": "0x1",
63 "Unit": "iMC"
64 },
65 {
66 "BriefDescription": "Pre-charge for reads. Derived from unc_m_pre_count.rd",
67 "Counter": "0,1,2,3",
68 "EventCode": "0x2",
69 "EventName": "UNC_M_PRE_COUNT.RD",
70 "PerPkg": "1",
71 "UMask": "0x4",
72 "Unit": "iMC"
73 },
74 {
75 "BriefDescription": "Pre-charge for writes. Derived from unc_m_pre_count.wr",
76 "Counter": "0,1,2,3",
77 "EventCode": "0x2",
78 "EventName": "UNC_M_PRE_COUNT.WR",
79 "PerPkg": "1",
80 "UMask": "0x8",
81 "Unit": "iMC"
82 }
83]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json
new file mode 100644
index 000000000000..b44d43088bbb
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellde/uncore-power.json
@@ -0,0 +1,84 @@
1[
2 {
3 "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_P_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "PCU"
8 },
9 {
10 "BriefDescription": "C0 and C1. Derived from unc_p_power_state_occupancy.cores_c0",
11 "Counter": "0,1,2,3",
12 "EventCode": "0x80",
13 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
14 "Filter": "occ_sel=1",
15 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
16 "PerPkg": "1",
17 "Unit": "PCU"
18 },
19 {
20 "BriefDescription": "C3. Derived from unc_p_power_state_occupancy.cores_c3",
21 "Counter": "0,1,2,3",
22 "EventCode": "0x80",
23 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
24 "Filter": "occ_sel=2",
25 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
26 "PerPkg": "1",
27 "Unit": "PCU"
28 },
29 {
30 "BriefDescription": "C6 and C7. Derived from unc_p_power_state_occupancy.cores_c6",
31 "Counter": "0,1,2,3",
32 "EventCode": "0x80",
33 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
34 "Filter": "occ_sel=3",
35 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
36 "PerPkg": "1",
37 "Unit": "PCU"
38 },
39 {
40 "BriefDescription": "External Prochot. Derived from unc_p_prochot_external_cycles",
41 "Counter": "0,1,2,3",
42 "EventCode": "0xA",
43 "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
44 "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
45 "PerPkg": "1",
46 "Unit": "PCU"
47 },
48 {
49 "BriefDescription": "Thermal Strongest Upper Limit Cycles. Derived from unc_p_freq_max_limit_thermal_cycles",
50 "Counter": "0,1,2,3",
51 "EventCode": "0x4",
52 "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
53 "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
54 "PerPkg": "1",
55 "Unit": "PCU"
56 },
57 {
58 "BriefDescription": "OS Strongest Upper Limit Cycles. Derived from unc_p_freq_max_os_cycles",
59 "Counter": "0,1,2,3",
60 "EventCode": "0x6",
61 "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
62 "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
63 "PerPkg": "1",
64 "Unit": "PCU"
65 },
66 {
67 "BriefDescription": "Power Strongest Upper Limit Cycles. Derived from unc_p_freq_max_power_cycles",
68 "Counter": "0,1,2,3",
69 "EventCode": "0x5",
70 "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
71 "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
72 "PerPkg": "1",
73 "Unit": "PCU"
74 },
75 {
76 "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
77 "Counter": "0,1,2,3",
78 "EventCode": "0x74",
79 "EventName": "UNC_P_FREQ_TRANS_CYCLES",
80 "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
81 "PerPkg": "1",
82 "Unit": "PCU"
83 }
84]
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/uncore-cache.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json
new file mode 100644
index 000000000000..076459c51d4e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-cache.json
@@ -0,0 +1,317 @@
1[
2 {
3 "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_C_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "CBO"
8 },
9 {
10 "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
11 "Counter": "0,1,2,3",
12 "EventCode": "0x34",
13 "EventName": "UNC_C_LLC_LOOKUP.ANY",
14 "Filter": "filter_state=0x1",
15 "PerPkg": "1",
16 "ScaleUnit": "64Bytes",
17 "UMask": "0x11",
18 "Unit": "CBO"
19 },
20 {
21 "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
22 "Counter": "0,1,2,3",
23 "EventCode": "0x37",
24 "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
25 "PerPkg": "1",
26 "ScaleUnit": "64Bytes",
27 "UMask": "0x1",
28 "Unit": "CBO"
29 },
30 {
31 "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode",
32 "Counter": "0,1,2,3",
33 "EventCode": "0x35",
34 "EventName": "LLC_MISSES.DATA_READ",
35 "Filter": "filter_opc=0x182",
36 "PerPkg": "1",
37 "ScaleUnit": "64Bytes",
38 "UMask": "0x3",
39 "Unit": "CBO"
40 },
41 {
42 "BriefDescription": "LLC misses - Uncacheable reads (from cpu) . Derived from unc_c_tor_inserts.miss_opcode",
43 "Counter": "0,1,2,3",
44 "EventCode": "0x35",
45 "EventName": "LLC_MISSES.UNCACHEABLE",
46 "Filter": "filter_opc=0x187",
47 "PerPkg": "1",
48 "ScaleUnit": "64Bytes",
49 "UMask": "0x3",
50 "Unit": "CBO"
51 },
52 {
53 "BriefDescription": "MMIO reads. Derived from unc_c_tor_inserts.miss_opcode",
54 "Counter": "0,1,2,3",
55 "EventCode": "0x35",
56 "EventName": "LLC_MISSES.MMIO_READ",
57 "Filter": "filter_opc=0x187,filter_nc=1",
58 "PerPkg": "1",
59 "ScaleUnit": "64Bytes",
60 "UMask": "0x3",
61 "Unit": "CBO"
62 },
63 {
64 "BriefDescription": "MMIO writes. Derived from unc_c_tor_inserts.miss_opcode",
65 "Counter": "0,1,2,3",
66 "EventCode": "0x35",
67 "EventName": "LLC_MISSES.MMIO_WRITE",
68 "Filter": "filter_opc=0x18f,filter_nc=1",
69 "PerPkg": "1",
70 "ScaleUnit": "64Bytes",
71 "UMask": "0x3",
72 "Unit": "CBO"
73 },
74 {
75 "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode",
76 "Counter": "0,1,2,3",
77 "EventCode": "0x35",
78 "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
79 "Filter": "filter_opc=0x190",
80 "PerPkg": "1",
81 "ScaleUnit": "64Bytes",
82 "UMask": "0x3",
83 "Unit": "CBO"
84 },
85 {
86 "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode",
87 "Counter": "0,1,2,3",
88 "EventCode": "0x35",
89 "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
90 "Filter": "filter_opc=0x191",
91 "PerPkg": "1",
92 "ScaleUnit": "64Bytes",
93 "UMask": "0x3",
94 "Unit": "CBO"
95 },
96 {
97 "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode",
98 "Counter": "0,1,2,3",
99 "EventCode": "0x35",
100 "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
101 "Filter": "filter_opc=0x192",
102 "PerPkg": "1",
103 "ScaleUnit": "64Bytes",
104 "UMask": "0x3",
105 "Unit": "CBO"
106 },
107 {
108 "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode",
109 "Counter": "0,1,2,3",
110 "EventCode": "0x35",
111 "EventName": "LLC_MISSES.PCIE_READ",
112 "Filter": "filter_opc=0x19e",
113 "PerPkg": "1",
114 "ScaleUnit": "64Bytes",
115 "UMask": "0x3",
116 "Unit": "CBO"
117 },
118 {
119 "BriefDescription": "ItoM write misses (as part of fast string memcpy stores) + PCIe full line writes. Derived from unc_c_tor_inserts.miss_opcode",
120 "Counter": "0,1,2,3",
121 "EventCode": "0x35",
122 "EventName": "LLC_MISSES.PCIE_WRITE",
123 "Filter": "filter_opc=0x1c8",
124 "PerPkg": "1",
125 "ScaleUnit": "64Bytes",
126 "UMask": "0x3",
127 "Unit": "CBO"
128 },
129 {
130 "BriefDescription": "PCIe write misses (full cache line). Derived from unc_c_tor_inserts.miss_opcode",
131 "Counter": "0,1,2,3",
132 "EventCode": "0x35",
133 "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
134 "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
135 "PerPkg": "1",
136 "ScaleUnit": "64Bytes",
137 "UMask": "0x3",
138 "Unit": "CBO"
139 },
140 {
141 "BriefDescription": "PCIe writes (partial cache line). Derived from unc_c_tor_inserts.opcode",
142 "Counter": "0,1,2,3",
143 "EventCode": "0x35",
144 "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
145 "Filter": "filter_opc=0x180,filter_tid=0x3e",
146 "PerPkg": "1",
147 "UMask": "0x1",
148 "Unit": "CBO"
149 },
150 {
151 "BriefDescription": "L2 demand and L2 prefetch code references to LLC. Derived from unc_c_tor_inserts.opcode",
152 "Counter": "0,1,2,3",
153 "EventCode": "0x35",
154 "EventName": "LLC_REFERENCES.CODE_LLC_PREFETCH",
155 "Filter": "filter_opc=0x181",
156 "PerPkg": "1",
157 "ScaleUnit": "64Bytes",
158 "UMask": "0x1",
159 "Unit": "CBO"
160 },
161 {
162 "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode",
163 "Counter": "0,1,2,3",
164 "EventCode": "0x35",
165 "EventName": "LLC_REFERENCES.STREAMING_FULL",
166 "Filter": "filter_opc=0x18c",
167 "PerPkg": "1",
168 "ScaleUnit": "64Bytes",
169 "UMask": "0x1",
170 "Unit": "CBO"
171 },
172 {
173 "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode",
174 "Counter": "0,1,2,3",
175 "EventCode": "0x35",
176 "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
177 "Filter": "filter_opc=0x18d",
178 "PerPkg": "1",
179 "ScaleUnit": "64Bytes",
180 "UMask": "0x1",
181 "Unit": "CBO"
182 },
183 {
184 "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode",
185 "Counter": "0,1,2,3",
186 "EventCode": "0x35",
187 "EventName": "LLC_REFERENCES.PCIE_READ",
188 "Filter": "filter_opc=0x19e",
189 "PerPkg": "1",
190 "ScaleUnit": "64Bytes",
191 "UMask": "0x1",
192 "Unit": "CBO"
193 },
194 {
195 "BriefDescription": "PCIe write references (full cache line). Derived from unc_c_tor_inserts.opcode",
196 "Counter": "0,1,2,3",
197 "EventCode": "0x35",
198 "EventName": "LLC_REFERENCES.PCIE_WRITE",
199 "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
200 "PerPkg": "1",
201 "ScaleUnit": "64Bytes",
202 "UMask": "0x1",
203 "Unit": "CBO"
204 },
205 {
206 "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode",
207 "EventCode": "0x36",
208 "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
209 "Filter": "filter_opc=0x182",
210 "PerPkg": "1",
211 "UMask": "0x3",
212 "Unit": "CBO"
213 },
214 {
215 "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
216 "Counter": "0,1,2,3",
217 "EventCode": "0x1",
218 "EventName": "UNC_H_REQUESTS.READS",
219 "PerPkg": "1",
220 "UMask": "0x3",
221 "Unit": "HA"
222 },
223 {
224 "BriefDescription": "read requests to local home agent. Derived from unc_h_requests.reads_local",
225 "Counter": "0,1,2,3",
226 "EventCode": "0x1",
227 "EventName": "UNC_H_REQUESTS.READS_LOCAL",
228 "PerPkg": "1",
229 "UMask": "0x1",
230 "Unit": "HA"
231 },
232 {
233 "BriefDescription": "read requests to remote home agent. Derived from unc_h_requests.reads_remote",
234 "Counter": "0,1,2,3",
235 "EventCode": "0x1",
236 "EventName": "UNC_H_REQUESTS.READS_REMOTE",
237 "PerPkg": "1",
238 "UMask": "0x2",
239 "Unit": "HA"
240 },
241 {
242 "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
243 "Counter": "0,1,2,3",
244 "EventCode": "0x1",
245 "EventName": "UNC_H_REQUESTS.WRITES",
246 "PerPkg": "1",
247 "UMask": "0xC",
248 "Unit": "HA"
249 },
250 {
251 "BriefDescription": "write requests to local home agent. Derived from unc_h_requests.writes_local",
252 "Counter": "0,1,2,3",
253 "EventCode": "0x1",
254 "EventName": "UNC_H_REQUESTS.WRITES_LOCAL",
255 "PerPkg": "1",
256 "UMask": "0x4",
257 "Unit": "HA"
258 },
259 {
260 "BriefDescription": "write requests to remote home agent. Derived from unc_h_requests.writes_remote",
261 "Counter": "0,1,2,3",
262 "EventCode": "0x1",
263 "EventName": "UNC_H_REQUESTS.WRITES_REMOTE",
264 "PerPkg": "1",
265 "UMask": "0x8",
266 "Unit": "HA"
267 },
268 {
269 "BriefDescription": "Conflict requests (requests for same address from multiple agents simultaneously). Derived from unc_h_snoop_resp.rspcnflct",
270 "Counter": "0,1,2,3",
271 "EventCode": "0x21",
272 "EventName": "UNC_H_SNOOP_RESP.RSPCNFLCT",
273 "PerPkg": "1",
274 "UMask": "0x40",
275 "Unit": "HA"
276 },
277 {
278 "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
279 "Counter": "0,1,2,3",
280 "EventCode": "0x21",
281 "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
282 "PerPkg": "1",
283 "ScaleUnit": "64Bytes",
284 "UMask": "0x20",
285 "Unit": "HA"
286 },
287 {
288 "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
289 "Counter": "0,1,2,3",
290 "EventCode": "0x21",
291 "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
292 "PerPkg": "1",
293 "ScaleUnit": "64Bytes",
294 "UMask": "0x4",
295 "Unit": "HA"
296 },
297 {
298 "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
299 "Counter": "0,1,2,3",
300 "EventCode": "0x21",
301 "EventName": "UNC_H_SNOOP_RESP.RSPS",
302 "PerPkg": "1",
303 "ScaleUnit": "64Bytes",
304 "UMask": "0x2",
305 "Unit": "HA"
306 },
307 {
308 "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
309 "Counter": "0,1,2,3",
310 "EventCode": "0x21",
311 "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
312 "PerPkg": "1",
313 "ScaleUnit": "64Bytes",
314 "UMask": "0x8",
315 "Unit": "HA"
316 }
317]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json
new file mode 100644
index 000000000000..39387f7909b2
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-interconnect.json
@@ -0,0 +1,28 @@
1[
2 {
3 "BriefDescription": "QPI clock ticks. Derived from unc_q_clockticks",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x14",
6 "EventName": "UNC_Q_CLOCKTICKS",
7 "PerPkg": "1",
8 "Unit": "QPI LL"
9 },
10 {
11 "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
12 "Counter": "0,1,2,3",
13 "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
14 "PerPkg": "1",
15 "ScaleUnit": "8Bytes",
16 "UMask": "0x2",
17 "Unit": "QPI LL"
18 },
19 {
20 "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
21 "Counter": "0,1,2,3",
22 "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
23 "PerPkg": "1",
24 "ScaleUnit": "8Bytes",
25 "UMask": "0x4",
26 "Unit": "QPI LL"
27 }
28]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json
new file mode 100644
index 000000000000..d17dc235f734
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-memory.json
@@ -0,0 +1,83 @@
1[
2 {
3 "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x4",
6 "EventName": "UNC_M_CAS_COUNT.RD",
7 "PerPkg": "1",
8 "ScaleUnit": "64Bytes",
9 "UMask": "0x3",
10 "Unit": "iMC"
11 },
12 {
13 "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
14 "Counter": "0,1,2,3",
15 "EventCode": "0x4",
16 "EventName": "UNC_M_CAS_COUNT.WR",
17 "PerPkg": "1",
18 "ScaleUnit": "64Bytes",
19 "UMask": "0xC",
20 "Unit": "iMC"
21 },
22 {
23 "BriefDescription": "Memory controller clock ticks. Derived from unc_m_clockticks",
24 "Counter": "0,1,2,3",
25 "EventName": "UNC_M_CLOCKTICKS",
26 "PerPkg": "1",
27 "Unit": "iMC"
28 },
29 {
30 "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
31 "Counter": "0,1,2,3",
32 "EventCode": "0x85",
33 "EventName": "UNC_M_POWER_CHANNEL_PPD",
34 "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
35 "PerPkg": "1",
36 "Unit": "iMC"
37 },
38 {
39 "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
40 "Counter": "0,1,2,3",
41 "EventCode": "0x86",
42 "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
43 "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
44 "PerPkg": "1",
45 "Unit": "iMC"
46 },
47 {
48 "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
49 "Counter": "0,1,2,3",
50 "EventCode": "0x43",
51 "EventName": "UNC_M_POWER_SELF_REFRESH",
52 "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
53 "PerPkg": "1",
54 "Unit": "iMC"
55 },
56 {
57 "BriefDescription": "Pre-charges due to page misses. Derived from unc_m_pre_count.page_miss",
58 "Counter": "0,1,2,3",
59 "EventCode": "0x2",
60 "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
61 "PerPkg": "1",
62 "UMask": "0x1",
63 "Unit": "iMC"
64 },
65 {
66 "BriefDescription": "Pre-charge for reads. Derived from unc_m_pre_count.rd",
67 "Counter": "0,1,2,3",
68 "EventCode": "0x2",
69 "EventName": "UNC_M_PRE_COUNT.RD",
70 "PerPkg": "1",
71 "UMask": "0x4",
72 "Unit": "iMC"
73 },
74 {
75 "BriefDescription": "Pre-charge for writes. Derived from unc_m_pre_count.wr",
76 "Counter": "0,1,2,3",
77 "EventCode": "0x2",
78 "EventName": "UNC_M_PRE_COUNT.WR",
79 "PerPkg": "1",
80 "UMask": "0x8",
81 "Unit": "iMC"
82 }
83]
diff --git a/tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json
new file mode 100644
index 000000000000..b44d43088bbb
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/broadwellx/uncore-power.json
@@ -0,0 +1,84 @@
1[
2 {
3 "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_P_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "PCU"
8 },
9 {
10 "BriefDescription": "C0 and C1. Derived from unc_p_power_state_occupancy.cores_c0",
11 "Counter": "0,1,2,3",
12 "EventCode": "0x80",
13 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
14 "Filter": "occ_sel=1",
15 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
16 "PerPkg": "1",
17 "Unit": "PCU"
18 },
19 {
20 "BriefDescription": "C3. Derived from unc_p_power_state_occupancy.cores_c3",
21 "Counter": "0,1,2,3",
22 "EventCode": "0x80",
23 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
24 "Filter": "occ_sel=2",
25 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
26 "PerPkg": "1",
27 "Unit": "PCU"
28 },
29 {
30 "BriefDescription": "C6 and C7. Derived from unc_p_power_state_occupancy.cores_c6",
31 "Counter": "0,1,2,3",
32 "EventCode": "0x80",
33 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
34 "Filter": "occ_sel=3",
35 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
36 "PerPkg": "1",
37 "Unit": "PCU"
38 },
39 {
40 "BriefDescription": "External Prochot. Derived from unc_p_prochot_external_cycles",
41 "Counter": "0,1,2,3",
42 "EventCode": "0xA",
43 "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
44 "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
45 "PerPkg": "1",
46 "Unit": "PCU"
47 },
48 {
49 "BriefDescription": "Thermal Strongest Upper Limit Cycles. Derived from unc_p_freq_max_limit_thermal_cycles",
50 "Counter": "0,1,2,3",
51 "EventCode": "0x4",
52 "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
53 "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
54 "PerPkg": "1",
55 "Unit": "PCU"
56 },
57 {
58 "BriefDescription": "OS Strongest Upper Limit Cycles. Derived from unc_p_freq_max_os_cycles",
59 "Counter": "0,1,2,3",
60 "EventCode": "0x6",
61 "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
62 "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
63 "PerPkg": "1",
64 "Unit": "PCU"
65 },
66 {
67 "BriefDescription": "Power Strongest Upper Limit Cycles. Derived from unc_p_freq_max_power_cycles",
68 "Counter": "0,1,2,3",
69 "EventCode": "0x5",
70 "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
71 "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
72 "PerPkg": "1",
73 "Unit": "PCU"
74 },
75 {
76 "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
77 "Counter": "0,1,2,3",
78 "EventCode": "0x74",
79 "EventName": "UNC_P_FREQ_TRANS_CYCLES",
80 "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
81 "PerPkg": "1",
82 "Unit": "PCU"
83 }
84]
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/uncore-cache.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json
new file mode 100644
index 000000000000..076459c51d4e
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-cache.json
@@ -0,0 +1,317 @@
1[
2 {
3 "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_C_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "CBO"
8 },
9 {
10 "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
11 "Counter": "0,1,2,3",
12 "EventCode": "0x34",
13 "EventName": "UNC_C_LLC_LOOKUP.ANY",
14 "Filter": "filter_state=0x1",
15 "PerPkg": "1",
16 "ScaleUnit": "64Bytes",
17 "UMask": "0x11",
18 "Unit": "CBO"
19 },
20 {
21 "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
22 "Counter": "0,1,2,3",
23 "EventCode": "0x37",
24 "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
25 "PerPkg": "1",
26 "ScaleUnit": "64Bytes",
27 "UMask": "0x1",
28 "Unit": "CBO"
29 },
30 {
31 "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode",
32 "Counter": "0,1,2,3",
33 "EventCode": "0x35",
34 "EventName": "LLC_MISSES.DATA_READ",
35 "Filter": "filter_opc=0x182",
36 "PerPkg": "1",
37 "ScaleUnit": "64Bytes",
38 "UMask": "0x3",
39 "Unit": "CBO"
40 },
41 {
42 "BriefDescription": "LLC misses - Uncacheable reads (from cpu) . Derived from unc_c_tor_inserts.miss_opcode",
43 "Counter": "0,1,2,3",
44 "EventCode": "0x35",
45 "EventName": "LLC_MISSES.UNCACHEABLE",
46 "Filter": "filter_opc=0x187",
47 "PerPkg": "1",
48 "ScaleUnit": "64Bytes",
49 "UMask": "0x3",
50 "Unit": "CBO"
51 },
52 {
53 "BriefDescription": "MMIO reads. Derived from unc_c_tor_inserts.miss_opcode",
54 "Counter": "0,1,2,3",
55 "EventCode": "0x35",
56 "EventName": "LLC_MISSES.MMIO_READ",
57 "Filter": "filter_opc=0x187,filter_nc=1",
58 "PerPkg": "1",
59 "ScaleUnit": "64Bytes",
60 "UMask": "0x3",
61 "Unit": "CBO"
62 },
63 {
64 "BriefDescription": "MMIO writes. Derived from unc_c_tor_inserts.miss_opcode",
65 "Counter": "0,1,2,3",
66 "EventCode": "0x35",
67 "EventName": "LLC_MISSES.MMIO_WRITE",
68 "Filter": "filter_opc=0x18f,filter_nc=1",
69 "PerPkg": "1",
70 "ScaleUnit": "64Bytes",
71 "UMask": "0x3",
72 "Unit": "CBO"
73 },
74 {
75 "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode",
76 "Counter": "0,1,2,3",
77 "EventCode": "0x35",
78 "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
79 "Filter": "filter_opc=0x190",
80 "PerPkg": "1",
81 "ScaleUnit": "64Bytes",
82 "UMask": "0x3",
83 "Unit": "CBO"
84 },
85 {
86 "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode",
87 "Counter": "0,1,2,3",
88 "EventCode": "0x35",
89 "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
90 "Filter": "filter_opc=0x191",
91 "PerPkg": "1",
92 "ScaleUnit": "64Bytes",
93 "UMask": "0x3",
94 "Unit": "CBO"
95 },
96 {
97 "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode",
98 "Counter": "0,1,2,3",
99 "EventCode": "0x35",
100 "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
101 "Filter": "filter_opc=0x192",
102 "PerPkg": "1",
103 "ScaleUnit": "64Bytes",
104 "UMask": "0x3",
105 "Unit": "CBO"
106 },
107 {
108 "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode",
109 "Counter": "0,1,2,3",
110 "EventCode": "0x35",
111 "EventName": "LLC_MISSES.PCIE_READ",
112 "Filter": "filter_opc=0x19e",
113 "PerPkg": "1",
114 "ScaleUnit": "64Bytes",
115 "UMask": "0x3",
116 "Unit": "CBO"
117 },
118 {
119 "BriefDescription": "ItoM write misses (as part of fast string memcpy stores) + PCIe full line writes. Derived from unc_c_tor_inserts.miss_opcode",
120 "Counter": "0,1,2,3",
121 "EventCode": "0x35",
122 "EventName": "LLC_MISSES.PCIE_WRITE",
123 "Filter": "filter_opc=0x1c8",
124 "PerPkg": "1",
125 "ScaleUnit": "64Bytes",
126 "UMask": "0x3",
127 "Unit": "CBO"
128 },
129 {
130 "BriefDescription": "PCIe write misses (full cache line). Derived from unc_c_tor_inserts.miss_opcode",
131 "Counter": "0,1,2,3",
132 "EventCode": "0x35",
133 "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
134 "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
135 "PerPkg": "1",
136 "ScaleUnit": "64Bytes",
137 "UMask": "0x3",
138 "Unit": "CBO"
139 },
140 {
141 "BriefDescription": "PCIe writes (partial cache line). Derived from unc_c_tor_inserts.opcode",
142 "Counter": "0,1,2,3",
143 "EventCode": "0x35",
144 "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
145 "Filter": "filter_opc=0x180,filter_tid=0x3e",
146 "PerPkg": "1",
147 "UMask": "0x1",
148 "Unit": "CBO"
149 },
150 {
151 "BriefDescription": "L2 demand and L2 prefetch code references to LLC. Derived from unc_c_tor_inserts.opcode",
152 "Counter": "0,1,2,3",
153 "EventCode": "0x35",
154 "EventName": "LLC_REFERENCES.CODE_LLC_PREFETCH",
155 "Filter": "filter_opc=0x181",
156 "PerPkg": "1",
157 "ScaleUnit": "64Bytes",
158 "UMask": "0x1",
159 "Unit": "CBO"
160 },
161 {
162 "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode",
163 "Counter": "0,1,2,3",
164 "EventCode": "0x35",
165 "EventName": "LLC_REFERENCES.STREAMING_FULL",
166 "Filter": "filter_opc=0x18c",
167 "PerPkg": "1",
168 "ScaleUnit": "64Bytes",
169 "UMask": "0x1",
170 "Unit": "CBO"
171 },
172 {
173 "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode",
174 "Counter": "0,1,2,3",
175 "EventCode": "0x35",
176 "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
177 "Filter": "filter_opc=0x18d",
178 "PerPkg": "1",
179 "ScaleUnit": "64Bytes",
180 "UMask": "0x1",
181 "Unit": "CBO"
182 },
183 {
184 "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode",
185 "Counter": "0,1,2,3",
186 "EventCode": "0x35",
187 "EventName": "LLC_REFERENCES.PCIE_READ",
188 "Filter": "filter_opc=0x19e",
189 "PerPkg": "1",
190 "ScaleUnit": "64Bytes",
191 "UMask": "0x1",
192 "Unit": "CBO"
193 },
194 {
195 "BriefDescription": "PCIe write references (full cache line). Derived from unc_c_tor_inserts.opcode",
196 "Counter": "0,1,2,3",
197 "EventCode": "0x35",
198 "EventName": "LLC_REFERENCES.PCIE_WRITE",
199 "Filter": "filter_opc=0x1c8,filter_tid=0x3e",
200 "PerPkg": "1",
201 "ScaleUnit": "64Bytes",
202 "UMask": "0x1",
203 "Unit": "CBO"
204 },
205 {
206 "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode",
207 "EventCode": "0x36",
208 "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
209 "Filter": "filter_opc=0x182",
210 "PerPkg": "1",
211 "UMask": "0x3",
212 "Unit": "CBO"
213 },
214 {
215 "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
216 "Counter": "0,1,2,3",
217 "EventCode": "0x1",
218 "EventName": "UNC_H_REQUESTS.READS",
219 "PerPkg": "1",
220 "UMask": "0x3",
221 "Unit": "HA"
222 },
223 {
224 "BriefDescription": "read requests to local home agent. Derived from unc_h_requests.reads_local",
225 "Counter": "0,1,2,3",
226 "EventCode": "0x1",
227 "EventName": "UNC_H_REQUESTS.READS_LOCAL",
228 "PerPkg": "1",
229 "UMask": "0x1",
230 "Unit": "HA"
231 },
232 {
233 "BriefDescription": "read requests to remote home agent. Derived from unc_h_requests.reads_remote",
234 "Counter": "0,1,2,3",
235 "EventCode": "0x1",
236 "EventName": "UNC_H_REQUESTS.READS_REMOTE",
237 "PerPkg": "1",
238 "UMask": "0x2",
239 "Unit": "HA"
240 },
241 {
242 "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
243 "Counter": "0,1,2,3",
244 "EventCode": "0x1",
245 "EventName": "UNC_H_REQUESTS.WRITES",
246 "PerPkg": "1",
247 "UMask": "0xC",
248 "Unit": "HA"
249 },
250 {
251 "BriefDescription": "write requests to local home agent. Derived from unc_h_requests.writes_local",
252 "Counter": "0,1,2,3",
253 "EventCode": "0x1",
254 "EventName": "UNC_H_REQUESTS.WRITES_LOCAL",
255 "PerPkg": "1",
256 "UMask": "0x4",
257 "Unit": "HA"
258 },
259 {
260 "BriefDescription": "write requests to remote home agent. Derived from unc_h_requests.writes_remote",
261 "Counter": "0,1,2,3",
262 "EventCode": "0x1",
263 "EventName": "UNC_H_REQUESTS.WRITES_REMOTE",
264 "PerPkg": "1",
265 "UMask": "0x8",
266 "Unit": "HA"
267 },
268 {
269 "BriefDescription": "Conflict requests (requests for same address from multiple agents simultaneously). Derived from unc_h_snoop_resp.rspcnflct",
270 "Counter": "0,1,2,3",
271 "EventCode": "0x21",
272 "EventName": "UNC_H_SNOOP_RESP.RSPCNFLCT",
273 "PerPkg": "1",
274 "UMask": "0x40",
275 "Unit": "HA"
276 },
277 {
278 "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
279 "Counter": "0,1,2,3",
280 "EventCode": "0x21",
281 "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
282 "PerPkg": "1",
283 "ScaleUnit": "64Bytes",
284 "UMask": "0x20",
285 "Unit": "HA"
286 },
287 {
288 "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
289 "Counter": "0,1,2,3",
290 "EventCode": "0x21",
291 "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
292 "PerPkg": "1",
293 "ScaleUnit": "64Bytes",
294 "UMask": "0x4",
295 "Unit": "HA"
296 },
297 {
298 "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
299 "Counter": "0,1,2,3",
300 "EventCode": "0x21",
301 "EventName": "UNC_H_SNOOP_RESP.RSPS",
302 "PerPkg": "1",
303 "ScaleUnit": "64Bytes",
304 "UMask": "0x2",
305 "Unit": "HA"
306 },
307 {
308 "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
309 "Counter": "0,1,2,3",
310 "EventCode": "0x21",
311 "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
312 "PerPkg": "1",
313 "ScaleUnit": "64Bytes",
314 "UMask": "0x8",
315 "Unit": "HA"
316 }
317]
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json
new file mode 100644
index 000000000000..39387f7909b2
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-interconnect.json
@@ -0,0 +1,28 @@
1[
2 {
3 "BriefDescription": "QPI clock ticks. Derived from unc_q_clockticks",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x14",
6 "EventName": "UNC_Q_CLOCKTICKS",
7 "PerPkg": "1",
8 "Unit": "QPI LL"
9 },
10 {
11 "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
12 "Counter": "0,1,2,3",
13 "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
14 "PerPkg": "1",
15 "ScaleUnit": "8Bytes",
16 "UMask": "0x2",
17 "Unit": "QPI LL"
18 },
19 {
20 "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
21 "Counter": "0,1,2,3",
22 "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
23 "PerPkg": "1",
24 "ScaleUnit": "8Bytes",
25 "UMask": "0x4",
26 "Unit": "QPI LL"
27 }
28]
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json
new file mode 100644
index 000000000000..d17dc235f734
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-memory.json
@@ -0,0 +1,83 @@
1[
2 {
3 "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x4",
6 "EventName": "UNC_M_CAS_COUNT.RD",
7 "PerPkg": "1",
8 "ScaleUnit": "64Bytes",
9 "UMask": "0x3",
10 "Unit": "iMC"
11 },
12 {
13 "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
14 "Counter": "0,1,2,3",
15 "EventCode": "0x4",
16 "EventName": "UNC_M_CAS_COUNT.WR",
17 "PerPkg": "1",
18 "ScaleUnit": "64Bytes",
19 "UMask": "0xC",
20 "Unit": "iMC"
21 },
22 {
23 "BriefDescription": "Memory controller clock ticks. Derived from unc_m_clockticks",
24 "Counter": "0,1,2,3",
25 "EventName": "UNC_M_CLOCKTICKS",
26 "PerPkg": "1",
27 "Unit": "iMC"
28 },
29 {
30 "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
31 "Counter": "0,1,2,3",
32 "EventCode": "0x85",
33 "EventName": "UNC_M_POWER_CHANNEL_PPD",
34 "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
35 "PerPkg": "1",
36 "Unit": "iMC"
37 },
38 {
39 "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
40 "Counter": "0,1,2,3",
41 "EventCode": "0x86",
42 "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
43 "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
44 "PerPkg": "1",
45 "Unit": "iMC"
46 },
47 {
48 "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
49 "Counter": "0,1,2,3",
50 "EventCode": "0x43",
51 "EventName": "UNC_M_POWER_SELF_REFRESH",
52 "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
53 "PerPkg": "1",
54 "Unit": "iMC"
55 },
56 {
57 "BriefDescription": "Pre-charges due to page misses. Derived from unc_m_pre_count.page_miss",
58 "Counter": "0,1,2,3",
59 "EventCode": "0x2",
60 "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
61 "PerPkg": "1",
62 "UMask": "0x1",
63 "Unit": "iMC"
64 },
65 {
66 "BriefDescription": "Pre-charge for reads. Derived from unc_m_pre_count.rd",
67 "Counter": "0,1,2,3",
68 "EventCode": "0x2",
69 "EventName": "UNC_M_PRE_COUNT.RD",
70 "PerPkg": "1",
71 "UMask": "0x4",
72 "Unit": "iMC"
73 },
74 {
75 "BriefDescription": "Pre-charge for writes. Derived from unc_m_pre_count.wr",
76 "Counter": "0,1,2,3",
77 "EventCode": "0x2",
78 "EventName": "UNC_M_PRE_COUNT.WR",
79 "PerPkg": "1",
80 "UMask": "0x8",
81 "Unit": "iMC"
82 }
83]
diff --git a/tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json b/tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json
new file mode 100644
index 000000000000..b44d43088bbb
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/haswellx/uncore-power.json
@@ -0,0 +1,84 @@
1[
2 {
3 "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_P_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "PCU"
8 },
9 {
10 "BriefDescription": "C0 and C1. Derived from unc_p_power_state_occupancy.cores_c0",
11 "Counter": "0,1,2,3",
12 "EventCode": "0x80",
13 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
14 "Filter": "occ_sel=1",
15 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
16 "PerPkg": "1",
17 "Unit": "PCU"
18 },
19 {
20 "BriefDescription": "C3. Derived from unc_p_power_state_occupancy.cores_c3",
21 "Counter": "0,1,2,3",
22 "EventCode": "0x80",
23 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
24 "Filter": "occ_sel=2",
25 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
26 "PerPkg": "1",
27 "Unit": "PCU"
28 },
29 {
30 "BriefDescription": "C6 and C7. Derived from unc_p_power_state_occupancy.cores_c6",
31 "Counter": "0,1,2,3",
32 "EventCode": "0x80",
33 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
34 "Filter": "occ_sel=3",
35 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
36 "PerPkg": "1",
37 "Unit": "PCU"
38 },
39 {
40 "BriefDescription": "External Prochot. Derived from unc_p_prochot_external_cycles",
41 "Counter": "0,1,2,3",
42 "EventCode": "0xA",
43 "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
44 "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
45 "PerPkg": "1",
46 "Unit": "PCU"
47 },
48 {
49 "BriefDescription": "Thermal Strongest Upper Limit Cycles. Derived from unc_p_freq_max_limit_thermal_cycles",
50 "Counter": "0,1,2,3",
51 "EventCode": "0x4",
52 "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
53 "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
54 "PerPkg": "1",
55 "Unit": "PCU"
56 },
57 {
58 "BriefDescription": "OS Strongest Upper Limit Cycles. Derived from unc_p_freq_max_os_cycles",
59 "Counter": "0,1,2,3",
60 "EventCode": "0x6",
61 "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
62 "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
63 "PerPkg": "1",
64 "Unit": "PCU"
65 },
66 {
67 "BriefDescription": "Power Strongest Upper Limit Cycles. Derived from unc_p_freq_max_power_cycles",
68 "Counter": "0,1,2,3",
69 "EventCode": "0x5",
70 "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
71 "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
72 "PerPkg": "1",
73 "Unit": "PCU"
74 },
75 {
76 "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
77 "Counter": "0,1,2,3",
78 "EventCode": "0x74",
79 "EventName": "UNC_P_FREQ_TRANS_CYCLES",
80 "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
81 "PerPkg": "1",
82 "Unit": "PCU"
83 }
84]
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/uncore-cache.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json
new file mode 100644
index 000000000000..2efdc6772e0b
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-cache.json
@@ -0,0 +1,322 @@
1[
2 {
3 "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_C_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "CBO"
8 },
9 {
10 "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
11 "Counter": "0,1",
12 "EventCode": "0x34",
13 "EventName": "UNC_C_LLC_LOOKUP.ANY",
14 "Filter": "filter_state=0x1",
15 "PerPkg": "1",
16 "ScaleUnit": "64Bytes",
17 "UMask": "0x11",
18 "Unit": "CBO"
19 },
20 {
21 "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
22 "Counter": "0,1",
23 "EventCode": "0x37",
24 "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
25 "PerPkg": "1",
26 "ScaleUnit": "64Bytes",
27 "UMask": "0x1",
28 "Unit": "CBO"
29 },
30 {
31 "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode.demand",
32 "Counter": "0,1",
33 "EventCode": "0x35",
34 "EventName": "LLC_MISSES.DATA_READ",
35 "Filter": "filter_opc=0x182",
36 "PerPkg": "1",
37 "ScaleUnit": "64Bytes",
38 "UMask": "0x3",
39 "Unit": "CBO"
40 },
41 {
42 "BriefDescription": "LLC misses - Uncacheable reads. Derived from unc_c_tor_inserts.miss_opcode.uncacheable",
43 "Counter": "0,1",
44 "EventCode": "0x35",
45 "EventName": "LLC_MISSES.UNCACHEABLE",
46 "Filter": "filter_opc=0x187",
47 "PerPkg": "1",
48 "ScaleUnit": "64Bytes",
49 "UMask": "0x3",
50 "Unit": "CBO"
51 },
52 {
53 "BriefDescription": "LLC prefetch misses for RFO. Derived from unc_c_tor_inserts.miss_opcode.rfo_prefetch",
54 "Counter": "0,1",
55 "EventCode": "0x35",
56 "EventName": "LLC_MISSES.RFO_LLC_PREFETCH",
57 "Filter": "filter_opc=0x190",
58 "PerPkg": "1",
59 "ScaleUnit": "64Bytes",
60 "UMask": "0x3",
61 "Unit": "CBO"
62 },
63 {
64 "BriefDescription": "LLC prefetch misses for code reads. Derived from unc_c_tor_inserts.miss_opcode.code",
65 "Counter": "0,1",
66 "EventCode": "0x35",
67 "EventName": "LLC_MISSES.CODE_LLC_PREFETCH",
68 "Filter": "filter_opc=0x191",
69 "PerPkg": "1",
70 "ScaleUnit": "64Bytes",
71 "UMask": "0x3",
72 "Unit": "CBO"
73 },
74 {
75 "BriefDescription": "LLC prefetch misses for data reads. Derived from unc_c_tor_inserts.miss_opcode.data_read",
76 "Counter": "0,1",
77 "EventCode": "0x35",
78 "EventName": "LLC_MISSES.DATA_LLC_PREFETCH",
79 "Filter": "filter_opc=0x192",
80 "PerPkg": "1",
81 "ScaleUnit": "64Bytes",
82 "UMask": "0x3",
83 "Unit": "CBO"
84 },
85 {
86 "BriefDescription": "PCIe allocating writes that miss LLC - DDIO misses. Derived from unc_c_tor_inserts.miss_opcode.ddio_miss",
87 "Counter": "0,1",
88 "EventCode": "0x35",
89 "EventName": "LLC_MISSES.PCIE_WRITE",
90 "Filter": "filter_opc=0x19c",
91 "PerPkg": "1",
92 "ScaleUnit": "64Bytes",
93 "UMask": "0x3",
94 "Unit": "CBO"
95 },
96 {
97 "BriefDescription": "LLC misses for PCIe read current. Derived from unc_c_tor_inserts.miss_opcode.pcie_read",
98 "Counter": "0,1",
99 "EventCode": "0x35",
100 "EventName": "LLC_MISSES.PCIE_READ",
101 "Filter": "filter_opc=0x19e",
102 "PerPkg": "1",
103 "ScaleUnit": "64Bytes",
104 "UMask": "0x3",
105 "Unit": "CBO"
106 },
107 {
108 "BriefDescription": "LLC misses for ItoM writes (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.miss_opcode.itom_write",
109 "Counter": "0,1",
110 "EventCode": "0x35",
111 "EventName": "LLC_MISSES.ITOM_WRITE",
112 "Filter": "filter_opc=0x1c8",
113 "PerPkg": "1",
114 "ScaleUnit": "64Bytes",
115 "UMask": "0x3",
116 "Unit": "CBO"
117 },
118 {
119 "BriefDescription": "LLC misses for PCIe non-snoop reads. Derived from unc_c_tor_inserts.miss_opcode.pcie_read",
120 "Counter": "0,1",
121 "EventCode": "0x35",
122 "EventName": "LLC_MISSES.PCIE_NON_SNOOP_READ",
123 "Filter": "filter_opc=0x1e4",
124 "PerPkg": "1",
125 "ScaleUnit": "64Bytes",
126 "UMask": "0x3",
127 "Unit": "CBO"
128 },
129 {
130 "BriefDescription": "LLC misses for PCIe non-snoop writes (full line). Derived from unc_c_tor_inserts.miss_opcode.pcie_write",
131 "Counter": "0,1",
132 "EventCode": "0x35",
133 "EventName": "LLC_MISSES.PCIE_NON_SNOOP_WRITE",
134 "Filter": "filter_opc=0x1e6",
135 "PerPkg": "1",
136 "ScaleUnit": "64Bytes",
137 "UMask": "0x3",
138 "Unit": "CBO"
139 },
140 {
141 "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode.streaming_full",
142 "Counter": "0,1",
143 "EventCode": "0x35",
144 "EventName": "LLC_REFERENCES.STREAMING_FULL",
145 "Filter": "filter_opc=0x18c",
146 "PerPkg": "1",
147 "ScaleUnit": "64Bytes",
148 "UMask": "0x1",
149 "Unit": "CBO"
150 },
151 {
152 "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode.streaming_partial",
153 "Counter": "0,1",
154 "EventCode": "0x35",
155 "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
156 "Filter": "filter_opc=0x18d",
157 "PerPkg": "1",
158 "ScaleUnit": "64Bytes",
159 "UMask": "0x1",
160 "Unit": "CBO"
161 },
162 {
163 "BriefDescription": "Partial PCIe reads. Derived from unc_c_tor_inserts.opcode.pcie_partial",
164 "Counter": "0,1",
165 "EventCode": "0x35",
166 "EventName": "LLC_REFERENCES.PCIE_PARTIAL_READ",
167 "Filter": "filter_opc=0x195",
168 "PerPkg": "1",
169 "ScaleUnit": "64Bytes",
170 "UMask": "0x1",
171 "Unit": "CBO"
172 },
173 {
174 "BriefDescription": "PCIe allocating writes that hit in LLC (DDIO hits). Derived from unc_c_tor_inserts.opcode.ddio_hit",
175 "Counter": "0,1",
176 "EventCode": "0x35",
177 "EventName": "LLC_REFERENCES.PCIE_WRITE",
178 "Filter": "filter_opc=0x19c",
179 "PerPkg": "1",
180 "ScaleUnit": "64Bytes",
181 "UMask": "0x1",
182 "Unit": "CBO"
183 },
184 {
185 "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode.pcie_read_current",
186 "Counter": "0,1",
187 "EventCode": "0x35",
188 "EventName": "LLC_REFERENCES.PCIE_READ",
189 "Filter": "filter_opc=0x19e",
190 "PerPkg": "1",
191 "ScaleUnit": "64Bytes",
192 "UMask": "0x1",
193 "Unit": "CBO"
194 },
195 {
196 "BriefDescription": "ItoM write hits (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.opcode.itom_write_hit",
197 "Counter": "0,1",
198 "EventCode": "0x35",
199 "EventName": "LLC_REFERENCES.ITOM_WRITE",
200 "Filter": "filter_opc=0x1c8",
201 "PerPkg": "1",
202 "ScaleUnit": "64Bytes",
203 "UMask": "0x1",
204 "Unit": "CBO"
205 },
206 {
207 "BriefDescription": "PCIe non-snoop reads. Derived from unc_c_tor_inserts.opcode.pcie_read",
208 "Counter": "0,1",
209 "EventCode": "0x35",
210 "EventName": "LLC_REFERENCES.PCIE_NS_READ",
211 "Filter": "filter_opc=0x1e4",
212 "PerPkg": "1",
213 "ScaleUnit": "64Bytes",
214 "UMask": "0x1",
215 "Unit": "CBO"
216 },
217 {
218 "BriefDescription": "PCIe non-snoop writes (partial). Derived from unc_c_tor_inserts.opcode.pcie_partial_write",
219 "Counter": "0,1",
220 "EventCode": "0x35",
221 "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
222 "Filter": "filter_opc=0x1e5",
223 "PerPkg": "1",
224 "ScaleUnit": "64Bytes",
225 "UMask": "0x1",
226 "Unit": "CBO"
227 },
228 {
229 "BriefDescription": "PCIe non-snoop writes (full line). Derived from unc_c_tor_inserts.opcode.pcie_full_write",
230 "Counter": "0,1",
231 "EventCode": "0x35",
232 "EventName": "LLC_REFERENCES.PCIE_NS_WRITE",
233 "Filter": "filter_opc=0x1e6",
234 "PerPkg": "1",
235 "ScaleUnit": "64Bytes",
236 "UMask": "0x1",
237 "Unit": "CBO"
238 },
239 {
240 "BriefDescription": "Occupancy for all LLC misses that are addressed to local memory. Derived from unc_c_tor_occupancy.miss_local",
241 "EventCode": "0x36",
242 "EventName": "UNC_C_TOR_OCCUPANCY.MISS_LOCAL",
243 "PerPkg": "1",
244 "UMask": "0x2A",
245 "Unit": "CBO"
246 },
247 {
248 "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode.llc_data_read",
249 "EventCode": "0x36",
250 "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
251 "Filter": "filter_opc=0x182",
252 "PerPkg": "1",
253 "UMask": "0x3",
254 "Unit": "CBO"
255 },
256 {
257 "BriefDescription": "Occupancy for all LLC misses that are addressed to remote memory. Derived from unc_c_tor_occupancy.miss_remote",
258 "EventCode": "0x36",
259 "EventName": "UNC_C_TOR_OCCUPANCY.MISS_REMOTE",
260 "PerPkg": "1",
261 "UMask": "0x8A",
262 "Unit": "CBO"
263 },
264 {
265 "BriefDescription": "Read requests to home agent. Derived from unc_h_requests.reads",
266 "Counter": "0,1,2,3",
267 "EventCode": "0x1",
268 "EventName": "UNC_H_REQUESTS.READS",
269 "PerPkg": "1",
270 "UMask": "0x3",
271 "Unit": "HA"
272 },
273 {
274 "BriefDescription": "Write requests to home agent. Derived from unc_h_requests.writes",
275 "Counter": "0,1,2,3",
276 "EventCode": "0x1",
277 "EventName": "UNC_H_REQUESTS.WRITES",
278 "PerPkg": "1",
279 "UMask": "0xC",
280 "Unit": "HA"
281 },
282 {
283 "BriefDescription": "M line forwarded from remote cache along with writeback to memory. Derived from unc_h_snoop_resp.rsp_fwd_wb",
284 "Counter": "0,1,2,3",
285 "EventCode": "0x21",
286 "EventName": "UNC_H_SNOOP_RESP.RSP_FWD_WB",
287 "PerPkg": "1",
288 "ScaleUnit": "64Bytes",
289 "UMask": "0x20",
290 "Unit": "HA"
291 },
292 {
293 "BriefDescription": "M line forwarded from remote cache with no writeback to memory. Derived from unc_h_snoop_resp.rspifwd",
294 "Counter": "0,1,2,3",
295 "EventCode": "0x21",
296 "EventName": "UNC_H_SNOOP_RESP.RSPIFWD",
297 "PerPkg": "1",
298 "ScaleUnit": "64Bytes",
299 "UMask": "0x4",
300 "Unit": "HA"
301 },
302 {
303 "BriefDescription": "Shared line response from remote cache. Derived from unc_h_snoop_resp.rsps",
304 "Counter": "0,1,2,3",
305 "EventCode": "0x21",
306 "EventName": "UNC_H_SNOOP_RESP.RSPS",
307 "PerPkg": "1",
308 "ScaleUnit": "64Bytes",
309 "UMask": "0x2",
310 "Unit": "HA"
311 },
312 {
313 "BriefDescription": "Shared line forwarded from remote cache. Derived from unc_h_snoop_resp.rspsfwd",
314 "Counter": "0,1,2,3",
315 "EventCode": "0x21",
316 "EventName": "UNC_H_SNOOP_RESP.RSPSFWD",
317 "PerPkg": "1",
318 "ScaleUnit": "64Bytes",
319 "UMask": "0x8",
320 "Unit": "HA"
321 }
322]
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json
new file mode 100644
index 000000000000..d7e2fda1d695
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-interconnect.json
@@ -0,0 +1,46 @@
1[
2 {
3 "BriefDescription": "QPI clock ticks. Use to get percentages for QPI cycles events. Derived from unc_q_clockticks",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x14",
6 "EventName": "UNC_Q_CLOCKTICKS",
7 "PerPkg": "1",
8 "Unit": "QPI LL"
9 },
10 {
11 "BriefDescription": "Cycles where receiving QPI link is in half-width mode. Derived from unc_q_rxl0p_power_cycles",
12 "Counter": "0,1,2,3",
13 "EventCode": "0x10",
14 "EventName": "UNC_Q_RxL0P_POWER_CYCLES",
15 "MetricExpr": "(UNC_Q_RxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
16 "PerPkg": "1",
17 "Unit": "QPI LL"
18 },
19 {
20 "BriefDescription": "Cycles where transmitting QPI link is in half-width mode. Derived from unc_q_txl0p_power_cycles",
21 "Counter": "0,1,2,3",
22 "EventCode": "0xd",
23 "EventName": "UNC_Q_TxL0P_POWER_CYCLES",
24 "MetricExpr": "(UNC_Q_TxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
25 "PerPkg": "1",
26 "Unit": "QPI LL"
27 },
28 {
29 "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
30 "Counter": "0,1,2,3",
31 "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
32 "PerPkg": "1",
33 "ScaleUnit": "8Bytes",
34 "UMask": "0x2",
35 "Unit": "QPI LL"
36 },
37 {
38 "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
39 "Counter": "0,1,2,3",
40 "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
41 "PerPkg": "1",
42 "ScaleUnit": "8Bytes",
43 "UMask": "0x4",
44 "Unit": "QPI LL"
45 }
46]
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json
new file mode 100644
index 000000000000..ac4ad4d6357b
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-memory.json
@@ -0,0 +1,75 @@
1[
2 {
3 "BriefDescription": "Memory page activates for reads and writes. Derived from unc_m_act_count.rd",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x1",
6 "EventName": "UNC_M_ACT_COUNT.RD",
7 "PerPkg": "1",
8 "UMask": "0x1",
9 "Umask": "0x3",
10 "Unit": "iMC"
11 },
12 {
13 "BriefDescription": "Read requests to memory controller. Derived from unc_m_cas_count.rd",
14 "Counter": "0,1,2,3",
15 "EventCode": "0x4",
16 "EventName": "UNC_M_CAS_COUNT.RD",
17 "PerPkg": "1",
18 "ScaleUnit": "64Bytes",
19 "UMask": "0x3",
20 "Unit": "iMC"
21 },
22 {
23 "BriefDescription": "Write requests to memory controller. Derived from unc_m_cas_count.wr",
24 "Counter": "0,1,2,3",
25 "EventCode": "0x4",
26 "EventName": "UNC_M_CAS_COUNT.WR",
27 "PerPkg": "1",
28 "ScaleUnit": "64Bytes",
29 "UMask": "0xC",
30 "Unit": "iMC"
31 },
32 {
33 "BriefDescription": "Memory controller clock ticks. Use to generate percentages for memory controller CYCLES events. Derived from unc_m_clockticks",
34 "Counter": "0,1,2,3",
35 "EventName": "UNC_M_CLOCKTICKS",
36 "PerPkg": "1",
37 "Unit": "iMC"
38 },
39 {
40 "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
41 "Counter": "0,1,2,3",
42 "EventCode": "0x85",
43 "EventName": "UNC_M_POWER_CHANNEL_PPD",
44 "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
45 "PerPkg": "1",
46 "Unit": "iMC"
47 },
48 {
49 "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
50 "Counter": "0,1,2,3",
51 "EventCode": "0x86",
52 "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
53 "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
54 "PerPkg": "1",
55 "Unit": "iMC"
56 },
57 {
58 "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
59 "Counter": "0,1,2,3",
60 "EventCode": "0x43",
61 "EventName": "UNC_M_POWER_SELF_REFRESH",
62 "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
63 "PerPkg": "1",
64 "Unit": "iMC"
65 },
66 {
67 "BriefDescription": "Memory page conflicts. Derived from unc_m_pre_count.page_miss",
68 "Counter": "0,1,2,3",
69 "EventCode": "0x2",
70 "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
71 "PerPkg": "1",
72 "UMask": "0x1",
73 "Unit": "iMC"
74 }
75]
diff --git a/tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json b/tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
new file mode 100644
index 000000000000..dc2586db0dfc
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/ivytown/uncore-power.json
@@ -0,0 +1,249 @@
1[
2 {
3 "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_P_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "PCU"
8 },
9 {
10 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
11 "Counter": "0,1,2,3",
12 "EventCode": "0xb",
13 "EventName": "UNC_P_FREQ_BAND0_CYCLES",
14 "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
15 "PerPkg": "1",
16 "Unit": "PCU"
17 },
18 {
19 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
20 "Counter": "0,1,2,3",
21 "EventCode": "0xc",
22 "EventName": "UNC_P_FREQ_BAND1_CYCLES",
23 "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
24 "PerPkg": "1",
25 "Unit": "PCU"
26 },
27 {
28 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
29 "Counter": "0,1,2,3",
30 "EventCode": "0xd",
31 "EventName": "UNC_P_FREQ_BAND2_CYCLES",
32 "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
33 "PerPkg": "1",
34 "Unit": "PCU"
35 },
36 {
37 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
38 "Counter": "0,1,2,3",
39 "EventCode": "0xe",
40 "EventName": "UNC_P_FREQ_BAND3_CYCLES",
41 "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
42 "PerPkg": "1",
43 "Unit": "PCU"
44 },
45 {
46 "BriefDescription": "Counts the number of times that the uncore transitioned a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
47 "Counter": "0,1,2,3",
48 "EventCode": "0xb",
49 "EventName": "UNC_P_FREQ_BAND0_TRANSITIONS",
50 "Filter": "edge=1",
51 "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
52 "PerPkg": "1",
53 "Unit": "PCU"
54 },
55 {
56 "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
57 "Counter": "0,1,2,3",
58 "EventCode": "0xc",
59 "EventName": "UNC_P_FREQ_BAND1_TRANSITIONS",
60 "Filter": "edge=1",
61 "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
62 "PerPkg": "1",
63 "Unit": "PCU"
64 },
65 {
66 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
67 "Counter": "0,1,2,3",
68 "EventCode": "0xd",
69 "EventName": "UNC_P_FREQ_BAND2_TRANSITIONS",
70 "Filter": "edge=1",
71 "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
72 "PerPkg": "1",
73 "Unit": "PCU"
74 },
75 {
76 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
77 "Counter": "0,1,2,3",
78 "EventCode": "0xe",
79 "EventName": "UNC_P_FREQ_BAND3_TRANSITIONS",
80 "Filter": "edge=1",
81 "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
82 "PerPkg": "1",
83 "Unit": "PCU"
84 },
85 {
86 "BriefDescription": "This is an occupancy event that tracks the number of cores that are in the chosen C-State. It can be used by itself to get the average number of cores in that C-state with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c0",
87 "Counter": "0,1,2,3",
88 "EventCode": "0x80",
89 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
90 "Filter": "occ_sel=1",
91 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
92 "PerPkg": "1",
93 "Unit": "PCU"
94 },
95 {
96 "BriefDescription": "This is an occupancy event that tracks the number of cores that are in the chosen C-State. It can be used by itself to get the average number of cores in that C-state with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c3",
97 "Counter": "0,1,2,3",
98 "EventCode": "0x80",
99 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
100 "Filter": "occ_sel=2",
101 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
102 "PerPkg": "1",
103 "Unit": "PCU"
104 },
105 {
106 "BriefDescription": "This is an occupancy event that tracks the number of cores that are in the chosen C-State. It can be used by itself to get the average number of cores in that C-state with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c6",
107 "Counter": "0,1,2,3",
108 "EventCode": "0x80",
109 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
110 "Filter": "occ_sel=3",
111 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
112 "PerPkg": "1",
113 "Unit": "PCU"
114 },
115 {
116 "BriefDescription": "Counts the number of cycles that we are in external PROCHOT mode. This mode is triggered when a sensor off the die determines that something off-die (like DRAM) is too hot and must throttle to avoid damaging the chip. Derived from unc_p_prochot_external_cycles",
117 "Counter": "0,1,2,3",
118 "EventCode": "0xa",
119 "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
120 "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
121 "PerPkg": "1",
122 "Unit": "PCU"
123 },
124 {
125 "BriefDescription": "Counts the number of cycles when thermal conditions are the upper limit on frequency. This is related to the THERMAL_THROTTLE CYCLES_ABOVE_TEMP event, which always counts cycles when we are above the thermal temperature. This event (STRONGEST_UPPER_LIMIT) is sampled at the output of the algorithm that determines the actual frequency, while THERMAL_THROTTLE looks at the input. Derived from unc_p_freq_max_limit_thermal_cycles",
126 "Counter": "0,1,2,3",
127 "EventCode": "0x4",
128 "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
129 "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
130 "PerPkg": "1",
131 "Unit": "PCU"
132 },
133 {
134 "BriefDescription": "Counts the number of cycles when the OS is the upper limit on frequency. Derived from unc_p_freq_max_os_cycles",
135 "Counter": "0,1,2,3",
136 "EventCode": "0x6",
137 "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
138 "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
139 "PerPkg": "1",
140 "Unit": "PCU"
141 },
142 {
143 "BriefDescription": "Counts the number of cycles when power is the upper limit on frequency. Derived from unc_p_freq_max_power_cycles",
144 "Counter": "0,1,2,3",
145 "EventCode": "0x5",
146 "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
147 "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
148 "PerPkg": "1",
149 "Unit": "PCU"
150 },
151 {
152 "BriefDescription": "Counts the number of cycles when current is the upper limit on frequency. Derived from unc_p_freq_max_current_cycles",
153 "Counter": "0,1,2,3",
154 "EventCode": "0x7",
155 "EventName": "UNC_P_FREQ_MAX_CURRENT_CYCLES",
156 "MetricExpr": "(UNC_P_FREQ_MAX_CURRENT_CYCLES / UNC_P_CLOCKTICKS) * 100.",
157 "PerPkg": "1",
158 "Unit": "PCU"
159 },
160 {
161 "BriefDescription": "Counts the number of cycles when the system is changing frequency. This can not be filtered by thread ID. One can also use it with the occupancy counter that monitors number of threads in C0 to estimate the performance impact that frequency transitions had on the system. Derived from unc_p_freq_trans_cycles",
162 "Counter": "0,1,2,3",
163 "EventCode": "0x60",
164 "EventName": "UNC_P_FREQ_TRANS_CYCLES",
165 "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
166 "PerPkg": "1",
167 "Unit": "PCU"
168 },
169 {
170 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
171 "Counter": "0,1,2,3",
172 "EventCode": "0xb",
173 "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES",
174 "Filter": "filter_band0=1200",
175 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
176 "PerPkg": "1",
177 "Unit": "PCU"
178 },
179 {
180 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
181 "Counter": "0,1,2,3",
182 "EventCode": "0xc",
183 "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES",
184 "Filter": "filter_band1=2000",
185 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
186 "PerPkg": "1",
187 "Unit": "PCU"
188 },
189 {
190 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
191 "Counter": "0,1,2,3",
192 "EventCode": "0xd",
193 "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES",
194 "Filter": "filter_band2=3000",
195 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
196 "PerPkg": "1",
197 "Unit": "PCU"
198 },
199 {
200 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
201 "Counter": "0,1,2,3",
202 "EventCode": "0xe",
203 "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES",
204 "Filter": "filter_band3=4000",
205 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
206 "PerPkg": "1",
207 "Unit": "PCU"
208 },
209 {
210 "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
211 "Counter": "0,1,2,3",
212 "EventCode": "0xb",
213 "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS",
214 "Filter": "edge=1,filter_band0=1200",
215 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
216 "PerPkg": "1",
217 "Unit": "PCU"
218 },
219 {
220 "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
221 "Counter": "0,1,2,3",
222 "EventCode": "0xc",
223 "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS",
224 "Filter": "edge=1,filter_band1=2000",
225 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
226 "PerPkg": "1",
227 "Unit": "PCU"
228 },
229 {
230 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
231 "Counter": "0,1,2,3",
232 "EventCode": "0xd",
233 "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS",
234 "Filter": "edge=1,filter_band2=4000",
235 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
236 "PerPkg": "1",
237 "Unit": "PCU"
238 },
239 {
240 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
241 "Counter": "0,1,2,3",
242 "EventCode": "0xe",
243 "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS",
244 "Filter": "edge=1,filter_band3=4000",
245 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
246 "PerPkg": "1",
247 "Unit": "PCU"
248 }
249]
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/uncore-cache.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json
new file mode 100644
index 000000000000..2f23cf0129e7
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-cache.json
@@ -0,0 +1,209 @@
1[
2 {
3 "BriefDescription": "Uncore cache clock ticks. Derived from unc_c_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_C_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "CBO"
8 },
9 {
10 "BriefDescription": "All LLC Misses (code+ data rd + data wr - including demand and prefetch). Derived from unc_c_llc_lookup.any",
11 "Counter": "0,1",
12 "EventCode": "0x34",
13 "EventName": "UNC_C_LLC_LOOKUP.ANY",
14 "Filter": "filter_state=0x1",
15 "PerPkg": "1",
16 "ScaleUnit": "64Bytes",
17 "UMask": "0x11",
18 "Unit": "CBO"
19 },
20 {
21 "BriefDescription": "M line evictions from LLC (writebacks to memory). Derived from unc_c_llc_victims.m_state",
22 "Counter": "0,1",
23 "EventCode": "0x37",
24 "EventName": "UNC_C_LLC_VICTIMS.M_STATE",
25 "PerPkg": "1",
26 "ScaleUnit": "64Bytes",
27 "UMask": "0x1",
28 "Unit": "CBO"
29 },
30 {
31 "BriefDescription": "LLC misses - demand and prefetch data reads - excludes LLC prefetches. Derived from unc_c_tor_inserts.miss_opcode.demand",
32 "Counter": "0,1",
33 "EventCode": "0x35",
34 "EventName": "LLC_MISSES.DATA_READ",
35 "Filter": "filter_opc=0x182",
36 "PerPkg": "1",
37 "ScaleUnit": "64Bytes",
38 "UMask": "0x3",
39 "Unit": "CBO"
40 },
41 {
42 "BriefDescription": "LLC misses - Uncacheable reads. Derived from unc_c_tor_inserts.miss_opcode.uncacheable",
43 "Counter": "0,1",
44 "EventCode": "0x35",
45 "EventName": "LLC_MISSES.UNCACHEABLE",
46 "Filter": "filter_opc=0x187",
47 "PerPkg": "1",
48 "ScaleUnit": "64Bytes",
49 "UMask": "0x3",
50 "Unit": "CBO"
51 },
52 {
53 "BriefDescription": "PCIe allocating writes that miss LLC - DDIO misses. Derived from unc_c_tor_inserts.miss_opcode.ddio_miss",
54 "Counter": "0,1",
55 "EventCode": "0x35",
56 "EventName": "LLC_MISSES.PCIE_WRITE",
57 "Filter": "filter_opc=0x19c",
58 "PerPkg": "1",
59 "ScaleUnit": "64Bytes",
60 "UMask": "0x3",
61 "Unit": "CBO"
62 },
63 {
64 "BriefDescription": "LLC misses for ItoM writes (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.miss_opcode.itom_write",
65 "Counter": "0,1",
66 "EventCode": "0x35",
67 "EventName": "LLC_MISSES.ITOM_WRITE",
68 "Filter": "filter_opc=0x1c8",
69 "PerPkg": "1",
70 "ScaleUnit": "64Bytes",
71 "UMask": "0x3",
72 "Unit": "CBO"
73 },
74 {
75 "BriefDescription": "Streaming stores (full cache line). Derived from unc_c_tor_inserts.opcode.streaming_full",
76 "Counter": "0,1",
77 "EventCode": "0x35",
78 "EventName": "LLC_REFERENCES.STREAMING_FULL",
79 "Filter": "filter_opc=0x18c",
80 "PerPkg": "1",
81 "ScaleUnit": "64Bytes",
82 "UMask": "0x1",
83 "Unit": "CBO"
84 },
85 {
86 "BriefDescription": "Streaming stores (partial cache line). Derived from unc_c_tor_inserts.opcode.streaming_partial",
87 "Counter": "0,1",
88 "EventCode": "0x35",
89 "EventName": "LLC_REFERENCES.STREAMING_PARTIAL",
90 "Filter": "filter_opc=0x18d",
91 "PerPkg": "1",
92 "ScaleUnit": "64Bytes",
93 "UMask": "0x1",
94 "Unit": "CBO"
95 },
96 {
97 "BriefDescription": "Partial PCIe reads. Derived from unc_c_tor_inserts.opcode.pcie_partial",
98 "Counter": "0,1",
99 "EventCode": "0x35",
100 "EventName": "LLC_REFERENCES.PCIE_PARTIAL_READ",
101 "Filter": "filter_opc=0x195",
102 "PerPkg": "1",
103 "ScaleUnit": "64Bytes",
104 "UMask": "0x1",
105 "Unit": "CBO"
106 },
107 {
108 "BriefDescription": "PCIe allocating writes that hit in LLC (DDIO hits). Derived from unc_c_tor_inserts.opcode.ddio_hit",
109 "Counter": "0,1",
110 "EventCode": "0x35",
111 "EventName": "LLC_REFERENCES.PCIE_WRITE",
112 "Filter": "filter_opc=0x19c",
113 "PerPkg": "1",
114 "ScaleUnit": "64Bytes",
115 "UMask": "0x1",
116 "Unit": "CBO"
117 },
118 {
119 "BriefDescription": "PCIe read current. Derived from unc_c_tor_inserts.opcode.pcie_read_current",
120 "Counter": "0,1",
121 "EventCode": "0x35",
122 "EventName": "LLC_REFERENCES.PCIE_READ",
123 "Filter": "filter_opc=0x19e",
124 "PerPkg": "1",
125 "ScaleUnit": "64Bytes",
126 "UMask": "0x1",
127 "Unit": "CBO"
128 },
129 {
130 "BriefDescription": "ItoM write hits (as part of fast string memcpy stores). Derived from unc_c_tor_inserts.opcode.itom_write_hit",
131 "Counter": "0,1",
132 "EventCode": "0x35",
133 "EventName": "LLC_REFERENCES.ITOM_WRITE",
134 "Filter": "filter_opc=0x1c8",
135 "PerPkg": "1",
136 "ScaleUnit": "64Bytes",
137 "UMask": "0x1",
138 "Unit": "CBO"
139 },
140 {
141 "BriefDescription": "PCIe non-snoop reads. Derived from unc_c_tor_inserts.opcode.pcie_read",
142 "Counter": "0,1",
143 "EventCode": "0x35",
144 "EventName": "LLC_REFERENCES.PCIE_NS_READ",
145 "Filter": "filter_opc=0x1e4",
146 "PerPkg": "1",
147 "ScaleUnit": "64Bytes",
148 "UMask": "0x1",
149 "Unit": "CBO"
150 },
151 {
152 "BriefDescription": "PCIe non-snoop writes (partial). Derived from unc_c_tor_inserts.opcode.pcie_partial_write",
153 "Counter": "0,1",
154 "EventCode": "0x35",
155 "EventName": "LLC_REFERENCES.PCIE_NS_PARTIAL_WRITE",
156 "Filter": "filter_opc=0x1e5",
157 "PerPkg": "1",
158 "ScaleUnit": "64Bytes",
159 "UMask": "0x1",
160 "Unit": "CBO"
161 },
162 {
163 "BriefDescription": "PCIe non-snoop writes (full line). Derived from unc_c_tor_inserts.opcode.pcie_full_write",
164 "Counter": "0,1",
165 "EventCode": "0x35",
166 "EventName": "LLC_REFERENCES.PCIE_NS_WRITE",
167 "Filter": "filter_opc=0x1e6",
168 "PerPkg": "1",
169 "ScaleUnit": "64Bytes",
170 "UMask": "0x1",
171 "Unit": "CBO"
172 },
173 {
174 "BriefDescription": "Occupancy counter for all LLC misses; we divide this by UNC_C_CLOCKTICKS to get average Q depth. Derived from unc_c_tor_occupancy.miss_all",
175 "EventCode": "0x36",
176 "EventName": "UNC_C_TOR_OCCUPANCY.MISS_ALL",
177 "Filter": "filter_opc=0x182",
178 "MetricExpr": "(UNC_C_TOR_OCCUPANCY.MISS_ALL / UNC_C_CLOCKTICKS) * 100.",
179 "PerPkg": "1",
180 "UMask": "0xa",
181 "Unit": "CBO"
182 },
183 {
184 "BriefDescription": "Occupancy counter for LLC data reads (demand and L2 prefetch). Derived from unc_c_tor_occupancy.miss_opcode.llc_data_read",
185 "EventCode": "0x36",
186 "EventName": "UNC_C_TOR_OCCUPANCY.LLC_DATA_READ",
187 "PerPkg": "1",
188 "UMask": "0x3",
189 "Unit": "CBO"
190 },
191 {
192 "BriefDescription": "read requests to home agent. Derived from unc_h_requests.reads",
193 "Counter": "0,1,2,3",
194 "EventCode": "0x1",
195 "EventName": "UNC_H_REQUESTS.READS",
196 "PerPkg": "1",
197 "UMask": "0x3",
198 "Unit": "HA"
199 },
200 {
201 "BriefDescription": "write requests to home agent. Derived from unc_h_requests.writes",
202 "Counter": "0,1,2,3",
203 "EventCode": "0x1",
204 "EventName": "UNC_H_REQUESTS.WRITES",
205 "PerPkg": "1",
206 "UMask": "0xc",
207 "Unit": "HA"
208 }
209]
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json
new file mode 100644
index 000000000000..63351876eb57
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-interconnect.json
@@ -0,0 +1,46 @@
1[
2 {
3 "BriefDescription": "QPI clock ticks. Used to get percentages of QPI cycles events. Derived from unc_q_clockticks",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x14",
6 "EventName": "UNC_Q_CLOCKTICKS",
7 "PerPkg": "1",
8 "Unit": "QPI LL"
9 },
10 {
11 "BriefDescription": "Cycles where receiving QPI link is in half-width mode. Derived from unc_q_rxl0p_power_cycles",
12 "Counter": "0,1,2,3",
13 "EventCode": "0x10",
14 "EventName": "UNC_Q_RxL0P_POWER_CYCLES",
15 "MetricExpr": "(UNC_Q_RxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
16 "PerPkg": "1",
17 "Unit": "QPI LL"
18 },
19 {
20 "BriefDescription": "Cycles where transmitting QPI link is in half-width mode. Derived from unc_q_txl0p_power_cycles",
21 "Counter": "0,1,2,3",
22 "EventCode": "0xd",
23 "EventName": "UNC_Q_TxL0P_POWER_CYCLES",
24 "MetricExpr": "(UNC_Q_TxL0P_POWER_CYCLES / UNC_Q_CLOCKTICKS) * 100.",
25 "PerPkg": "1",
26 "Unit": "QPI LL"
27 },
28 {
29 "BriefDescription": "Number of data flits transmitted . Derived from unc_q_txl_flits_g0.data",
30 "Counter": "0,1,2,3",
31 "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
32 "PerPkg": "1",
33 "ScaleUnit": "8Bytes",
34 "UMask": "0x2",
35 "Unit": "QPI LL"
36 },
37 {
38 "BriefDescription": "Number of non data (control) flits transmitted . Derived from unc_q_txl_flits_g0.non_data",
39 "Counter": "0,1,2,3",
40 "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
41 "PerPkg": "1",
42 "ScaleUnit": "8Bytes",
43 "UMask": "0x4",
44 "Unit": "QPI LL"
45 }
46]
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json
new file mode 100644
index 000000000000..e2cf6daa7b37
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-memory.json
@@ -0,0 +1,79 @@
1[
2 {
3 "BriefDescription": "Memory page activates. Derived from unc_m_act_count",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x1",
6 "EventName": "UNC_M_ACT_COUNT",
7 "PerPkg": "1",
8 "Unit": "iMC"
9 },
10 {
11 "BriefDescription": "read requests to memory controller. Derived from unc_m_cas_count.rd",
12 "Counter": "0,1,2,3",
13 "EventCode": "0x4",
14 "EventName": "UNC_M_CAS_COUNT.RD",
15 "PerPkg": "1",
16 "UMask": "0x3",
17 "Unit": "iMC"
18 },
19 {
20 "BriefDescription": "write requests to memory controller. Derived from unc_m_cas_count.wr",
21 "Counter": "0,1,2,3",
22 "EventCode": "0x4",
23 "EventName": "UNC_M_CAS_COUNT.WR",
24 "PerPkg": "1",
25 "UMask": "0xc",
26 "Unit": "iMC"
27 },
28 {
29 "BriefDescription": "Memory controller clock ticks. Used to get percentages of memory controller cycles events. Derived from unc_m_clockticks",
30 "Counter": "0,1,2,3",
31 "EventName": "UNC_M_CLOCKTICKS",
32 "PerPkg": "1",
33 "Unit": "iMC"
34 },
35 {
36 "BriefDescription": "Cycles where DRAM ranks are in power down (CKE) mode. Derived from unc_m_power_channel_ppd",
37 "Counter": "0,1,2,3",
38 "EventCode": "0x85",
39 "EventName": "UNC_M_POWER_CHANNEL_PPD",
40 "MetricExpr": "(UNC_M_POWER_CHANNEL_PPD / UNC_M_CLOCKTICKS) * 100.",
41 "PerPkg": "1",
42 "Unit": "iMC"
43 },
44 {
45 "BriefDescription": "Cycles all ranks are in critical thermal throttle. Derived from unc_m_power_critical_throttle_cycles",
46 "Counter": "0,1,2,3",
47 "EventCode": "0x86",
48 "EventName": "UNC_M_POWER_CRITICAL_THROTTLE_CYCLES",
49 "MetricExpr": "(UNC_M_POWER_CRITICAL_THROTTLE_CYCLES / UNC_M_CLOCKTICKS) * 100.",
50 "PerPkg": "1",
51 "Unit": "iMC"
52 },
53 {
54 "BriefDescription": "Cycles Memory is in self refresh power mode. Derived from unc_m_power_self_refresh",
55 "Counter": "0,1,2,3",
56 "EventCode": "0x43",
57 "EventName": "UNC_M_POWER_SELF_REFRESH",
58 "MetricExpr": "(UNC_M_POWER_SELF_REFRESH / UNC_M_CLOCKTICKS) * 100.",
59 "PerPkg": "1",
60 "Unit": "iMC"
61 },
62 {
63 "BriefDescription": "Memory page conflicts. Derived from unc_m_pre_count.page_miss",
64 "Counter": "0,1,2,3",
65 "EventCode": "0x2",
66 "EventName": "UNC_M_PRE_COUNT.PAGE_MISS",
67 "PerPkg": "1",
68 "UMask": "0x1",
69 "Unit": "iMC"
70 },
71 {
72 "BriefDescription": "Occupancy counter for memory read queue. Derived from unc_m_rpq_occupancy",
73 "Counter": "0,1,2,3",
74 "EventCode": "0x80",
75 "EventName": "UNC_M_RPQ_OCCUPANCY",
76 "PerPkg": "1",
77 "Unit": "iMC"
78 }
79]
diff --git a/tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json b/tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
new file mode 100644
index 000000000000..bbe36d547386
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/jaketown/uncore-power.json
@@ -0,0 +1,248 @@
1[
2 {
3 "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events. Derived from unc_p_clockticks",
4 "Counter": "0,1,2,3",
5 "EventName": "UNC_P_CLOCKTICKS",
6 "PerPkg": "1",
7 "Unit": "PCU"
8 },
9 {
10 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
11 "Counter": "0,1,2,3",
12 "EventCode": "0xb",
13 "EventName": "UNC_P_FREQ_BAND0_CYCLES",
14 "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
15 "PerPkg": "1",
16 "Unit": "PCU"
17 },
18 {
19 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
20 "Counter": "0,1,2,3",
21 "EventCode": "0xc",
22 "EventName": "UNC_P_FREQ_BAND1_CYCLES",
23 "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
24 "PerPkg": "1",
25 "Unit": "PCU"
26 },
27 {
28 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
29 "Counter": "0,1,2,3",
30 "EventCode": "0xd",
31 "EventName": "UNC_P_FREQ_BAND2_CYCLES",
32 "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
33 "PerPkg": "1",
34 "Unit": "PCU"
35 },
36 {
37 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
38 "Counter": "0,1,2,3",
39 "EventCode": "0xe",
40 "EventName": "UNC_P_FREQ_BAND3_CYCLES",
41 "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
42 "PerPkg": "1",
43 "Unit": "PCU"
44 },
45 {
46 "BriefDescription": "Counts the number of times that the uncore transitioned a frequency greater than or equal to the frequency that is configured in the filter. (filter_band0=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
47 "Counter": "0,1,2,3",
48 "EventCode": "0xb",
49 "EventName": "UNC_P_FREQ_BAND0_TRANSITIONS",
50 "Filter": "edge=1",
51 "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
52 "PerPkg": "1",
53 "Unit": "PCU"
54 },
55 {
56 "BriefDescription": "Counts the number of times that the uncore transistioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band1=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
57 "Counter": "0,1,2,3",
58 "EventCode": "0xc",
59 "EventName": "UNC_P_FREQ_BAND1_TRANSITIONS",
60 "Filter": "edge=1",
61 "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
62 "PerPkg": "1",
63 "Unit": "PCU"
64 },
65 {
66 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band2=XXX with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
67 "Counter": "0,1,2,3",
68 "EventCode": "0xd",
69 "EventName": "UNC_P_FREQ_BAND2_TRANSITIONS",
70 "Filter": "edge=1",
71 "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
72 "PerPkg": "1",
73 "Unit": "PCU"
74 },
75 {
76 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter. (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
77 "Counter": "0,1,2,3",
78 "EventCode": "0xe",
79 "EventName": "UNC_P_FREQ_BAND3_TRANSITIONS",
80 "Filter": "edge=1",
81 "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
82 "PerPkg": "1",
83 "Unit": "PCU"
84 },
85 {
86 "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C0. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c0",
87 "Counter": "0,1,2,3",
88 "EventCode": "0x80",
89 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
90 "Filter": "occ_sel=1",
91 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
92 "PerPkg": "1",
93 "Unit": "PCU"
94 },
95 {
96 "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C3. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details. Derived from unc_p_power_state_occupancy.cores_c3",
97 "Counter": "0,1,2,3",
98 "EventCode": "0x80",
99 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
100 "Filter": "occ_sel=2",
101 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
102 "PerPkg": "1",
103 "Unit": "PCU"
104 },
105 {
106 "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C6. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events . Derived from unc_p_power_state_occupancy.cores_c6",
107 "Counter": "0,1,2,3",
108 "EventCode": "0x80",
109 "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
110 "Filter": "occ_sel=3",
111 "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
112 "PerPkg": "1",
113 "Unit": "PCU"
114 },
115 {
116 "BriefDescription": "Counts the number of cycles that we are in external PROCHOT mode. This mode is triggered when a sensor off the die determines that something off-die (like DRAM) is too hot and must throttle to avoid damaging the chip. Derived from unc_p_prochot_external_cycles",
117 "Counter": "0,1,2,3",
118 "EventCode": "0xa",
119 "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
120 "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
121 "PerPkg": "1",
122 "Unit": "PCU"
123 },
124 {
125 "BriefDescription": "Counts the number of cycles when temperature is the upper limit on frequency. Derived from unc_p_freq_max_limit_thermal_cycles",
126 "Counter": "0,1,2,3",
127 "EventCode": "0x4",
128 "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
129 "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
130 "PerPkg": "1",
131 "Unit": "PCU"
132 },
133 {
134 "BriefDescription": "Counts the number of cycles when the OS is the upper limit on frequency. Derived from unc_p_freq_max_os_cycles",
135 "Counter": "0,1,2,3",
136 "EventCode": "0x6",
137 "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
138 "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
139 "PerPkg": "1",
140 "Unit": "PCU"
141 },
142 {
143 "BriefDescription": "Counts the number of cycles when power is the upper limit on frequency. Derived from unc_p_freq_max_power_cycles",
144 "Counter": "0,1,2,3",
145 "EventCode": "0x5",
146 "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
147 "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
148 "PerPkg": "1",
149 "Unit": "PCU"
150 },
151 {
152 "BriefDescription": "Counts the number of cycles when current is the upper limit on frequency. Derived from unc_p_freq_max_current_cycles",
153 "Counter": "0,1,2,3",
154 "EventCode": "0x7",
155 "EventName": "UNC_P_FREQ_MAX_CURRENT_CYCLES",
156 "MetricExpr": "(UNC_P_FREQ_MAX_CURRENT_CYCLES / UNC_P_CLOCKTICKS) * 100.",
157 "PerPkg": "1",
158 "Unit": "PCU"
159 },
160 {
161 "BriefDescription": "Cycles spent changing Frequency. Derived from unc_p_freq_trans_cycles",
162 "Counter": "0,1,2,3",
163 "EventName": "UNC_P_FREQ_TRANS_CYCLES",
164 "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
165 "PerPkg": "1",
166 "Unit": "PCU"
167 },
168 {
169 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
170 "Counter": "0,1,2,3",
171 "EventCode": "0xb",
172 "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES",
173 "Filter": "filter_band0=1200",
174 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
175 "PerPkg": "1",
176 "Unit": "PCU"
177 },
178 {
179 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
180 "Counter": "0,1,2,3",
181 "EventCode": "0xc",
182 "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES",
183 "Filter": "filter_band1=2000",
184 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
185 "PerPkg": "1",
186 "Unit": "PCU"
187 },
188 {
189 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
190 "Counter": "0,1,2,3",
191 "EventCode": "0xd",
192 "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES",
193 "Filter": "filter_band2=3000",
194 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
195 "PerPkg": "1",
196 "Unit": "PCU"
197 },
198 {
199 "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
200 "Counter": "0,1,2,3",
201 "EventCode": "0xe",
202 "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES",
203 "Filter": "filter_band3=4000",
204 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
205 "PerPkg": "1",
206 "Unit": "PCU"
207 },
208 {
209 "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
210 "Counter": "0,1,2,3",
211 "EventCode": "0xb",
212 "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS",
213 "Filter": "edge=1,filter_band0=1200",
214 "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
215 "PerPkg": "1",
216 "Unit": "PCU"
217 },
218 {
219 "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
220 "Counter": "0,1,2,3",
221 "EventCode": "0xc",
222 "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS",
223 "Filter": "edge=1,filter_band1=2000",
224 "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
225 "PerPkg": "1",
226 "Unit": "PCU"
227 },
228 {
229 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
230 "Counter": "0,1,2,3",
231 "EventCode": "0xd",
232 "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS",
233 "Filter": "edge=1,filter_band2=4000",
234 "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
235 "PerPkg": "1",
236 "Unit": "PCU"
237 },
238 {
239 "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
240 "Counter": "0,1,2,3",
241 "EventCode": "0xe",
242 "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS",
243 "Filter": "edge=1,filter_band3=4000",
244 "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
245 "PerPkg": "1",
246 "Unit": "PCU"
247 }
248]
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/uncore-memory.json b/tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json
new file mode 100644
index 000000000000..e3bcd86c4f56
--- /dev/null
+++ b/tools/perf/pmu-events/arch/x86/knightslanding/uncore-memory.json
@@ -0,0 +1,42 @@
1[
2 {
3 "BriefDescription": "ddr bandwidth read (CPU traffic only) (MB/sec). ",
4 "Counter": "0,1,2,3",
5 "EventCode": "0x03",
6 "EventName": "UNC_M_CAS_COUNT.RD",
7 "PerPkg": "1",
8 "ScaleUnit": "6.4e-05MiB",
9 "UMask": "0x01",
10 "Unit": "imc"
11 },
12 {
13 "BriefDescription": "ddr bandwidth write (CPU traffic only) (MB/sec). ",
14 "Counter": "0,1,2,3",
15 "EventCode": "0x03",
16 "EventName": "UNC_M_CAS_COUNT.WR",
17 "PerPkg": "1",
18 "ScaleUnit": "6.4e-05MiB",
19 "UMask": "0x02",
20 "Unit": "imc"
21 },
22 {
23 "BriefDescription": "mcdram bandwidth read (CPU traffic only) (MB/sec). ",
24 "Counter": "0,1,2,3",
25 "EventCode": "0x01",
26 "EventName": "UNC_E_RPQ_INSERTS",
27 "PerPkg": "1",
28 "ScaleUnit": "6.4e-05MiB",
29 "UMask": "0x01",
30 "Unit": "edc_eclk"
31 },
32 {
33 "BriefDescription": "mcdram bandwidth write (CPU traffic only) (MB/sec). ",
34 "Counter": "0,1,2,3",
35 "EventCode": "0x02",
36 "EventName": "UNC_E_WPQ_INSERTS",
37 "PerPkg": "1",
38 "ScaleUnit": "6.4e-05MiB",
39 "UMask": "0x01",
40 "Unit": "edc_eclk"
41 }
42]
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
index 41611d7f9873..eed09346a72a 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -135,7 +135,6 @@ static struct field {
135 const char *field; 135 const char *field;
136 const char *kernel; 136 const char *kernel;
137} fields[] = { 137} fields[] = {
138 { "EventCode", "event=" },
139 { "UMask", "umask=" }, 138 { "UMask", "umask=" },
140 { "CounterMask", "cmask=" }, 139 { "CounterMask", "cmask=" },
141 { "Invert", "inv=" }, 140 { "Invert", "inv=" },
@@ -189,6 +188,27 @@ static struct msrmap *lookup_msr(char *map, jsmntok_t *val)
189 return NULL; 188 return NULL;
190} 189}
191 190
191static struct map {
192 const char *json;
193 const char *perf;
194} unit_to_pmu[] = {
195 { "CBO", "uncore_cbox" },
196 { "QPI LL", "uncore_qpi" },
197 { "SBO", "uncore_sbox" },
198 {}
199};
200
201static const char *field_to_perf(struct map *table, char *map, jsmntok_t *val)
202{
203 int i;
204
205 for (i = 0; table[i].json; i++) {
206 if (json_streq(map, val, table[i].json))
207 return table[i].perf;
208 }
209 return NULL;
210}
211
192#define EXPECT(e, t, m) do { if (!(e)) { \ 212#define EXPECT(e, t, m) do { if (!(e)) { \
193 jsmntok_t *loc = (t); \ 213 jsmntok_t *loc = (t); \
194 if (!(t)->start && (t) > tokens) \ 214 if (!(t)->start && (t) > tokens) \
@@ -270,7 +290,8 @@ static void print_events_table_prefix(FILE *fp, const char *tblname)
270} 290}
271 291
272static int print_events_table_entry(void *data, char *name, char *event, 292static int print_events_table_entry(void *data, char *name, char *event,
273 char *desc, char *long_desc) 293 char *desc, char *long_desc,
294 char *pmu, char *unit, char *perpkg)
274{ 295{
275 struct perf_entry_data *pd = data; 296 struct perf_entry_data *pd = data;
276 FILE *outfp = pd->outfp; 297 FILE *outfp = pd->outfp;
@@ -288,7 +309,12 @@ static int print_events_table_entry(void *data, char *name, char *event,
288 fprintf(outfp, "\t.topic = \"%s\",\n", topic); 309 fprintf(outfp, "\t.topic = \"%s\",\n", topic);
289 if (long_desc && long_desc[0]) 310 if (long_desc && long_desc[0])
290 fprintf(outfp, "\t.long_desc = \"%s\",\n", long_desc); 311 fprintf(outfp, "\t.long_desc = \"%s\",\n", long_desc);
291 312 if (pmu)
313 fprintf(outfp, "\t.pmu = \"%s\",\n", pmu);
314 if (unit)
315 fprintf(outfp, "\t.unit = \"%s\",\n", unit);
316 if (perpkg)
317 fprintf(outfp, "\t.perpkg = \"%s\",\n", perpkg);
292 fprintf(outfp, "},\n"); 318 fprintf(outfp, "},\n");
293 319
294 return 0; 320 return 0;
@@ -335,7 +361,8 @@ static char *real_event(const char *name, char *event)
335/* Call func with each event in the json file */ 361/* Call func with each event in the json file */
336int json_events(const char *fn, 362int json_events(const char *fn,
337 int (*func)(void *data, char *name, char *event, char *desc, 363 int (*func)(void *data, char *name, char *event, char *desc,
338 char *long_desc), 364 char *long_desc,
365 char *pmu, char *unit, char *perpkg),
339 void *data) 366 void *data)
340{ 367{
341 int err = -EIO; 368 int err = -EIO;
@@ -343,6 +370,7 @@ int json_events(const char *fn,
343 jsmntok_t *tokens, *tok; 370 jsmntok_t *tokens, *tok;
344 int i, j, len; 371 int i, j, len;
345 char *map; 372 char *map;
373 char buf[128];
346 374
347 if (!fn) 375 if (!fn)
348 return -ENOENT; 376 return -ENOENT;
@@ -356,6 +384,11 @@ int json_events(const char *fn,
356 char *event = NULL, *desc = NULL, *name = NULL; 384 char *event = NULL, *desc = NULL, *name = NULL;
357 char *long_desc = NULL; 385 char *long_desc = NULL;
358 char *extra_desc = NULL; 386 char *extra_desc = NULL;
387 char *pmu = NULL;
388 char *filter = NULL;
389 char *perpkg = NULL;
390 char *unit = NULL;
391 unsigned long long eventcode = 0;
359 struct msrmap *msr = NULL; 392 struct msrmap *msr = NULL;
360 jsmntok_t *msrval = NULL; 393 jsmntok_t *msrval = NULL;
361 jsmntok_t *precise = NULL; 394 jsmntok_t *precise = NULL;
@@ -376,6 +409,16 @@ int json_events(const char *fn,
376 nz = !json_streq(map, val, "0"); 409 nz = !json_streq(map, val, "0");
377 if (match_field(map, field, nz, &event, val)) { 410 if (match_field(map, field, nz, &event, val)) {
378 /* ok */ 411 /* ok */
412 } else if (json_streq(map, field, "EventCode")) {
413 char *code = NULL;
414 addfield(map, &code, "", "", val);
415 eventcode |= strtoul(code, NULL, 0);
416 free(code);
417 } else if (json_streq(map, field, "ExtSel")) {
418 char *code = NULL;
419 addfield(map, &code, "", "", val);
420 eventcode |= strtoul(code, NULL, 0) << 21;
421 free(code);
379 } else if (json_streq(map, field, "EventName")) { 422 } else if (json_streq(map, field, "EventName")) {
380 addfield(map, &name, "", "", val); 423 addfield(map, &name, "", "", val);
381 } else if (json_streq(map, field, "BriefDescription")) { 424 } else if (json_streq(map, field, "BriefDescription")) {
@@ -399,6 +442,28 @@ int json_events(const char *fn,
399 addfield(map, &extra_desc, ". ", 442 addfield(map, &extra_desc, ". ",
400 " Supports address when precise", 443 " Supports address when precise",
401 NULL); 444 NULL);
445 } else if (json_streq(map, field, "Unit")) {
446 const char *ppmu;
447 char *s;
448
449 ppmu = field_to_perf(unit_to_pmu, map, val);
450 if (ppmu) {
451 pmu = strdup(ppmu);
452 } else {
453 if (!pmu)
454 pmu = strdup("uncore_");
455 addfield(map, &pmu, "", "", val);
456 for (s = pmu; *s; s++)
457 *s = tolower(*s);
458 }
459 addfield(map, &desc, ". ", "Unit: ", NULL);
460 addfield(map, &desc, "", pmu, NULL);
461 } else if (json_streq(map, field, "Filter")) {
462 addfield(map, &filter, "", "", val);
463 } else if (json_streq(map, field, "ScaleUnit")) {
464 addfield(map, &unit, "", "", val);
465 } else if (json_streq(map, field, "PerPkg")) {
466 addfield(map, &perpkg, "", "", val);
402 } 467 }
403 /* ignore unknown fields */ 468 /* ignore unknown fields */
404 } 469 }
@@ -410,20 +475,29 @@ int json_events(const char *fn,
410 addfield(map, &extra_desc, " ", 475 addfield(map, &extra_desc, " ",
411 "(Precise event)", NULL); 476 "(Precise event)", NULL);
412 } 477 }
478 snprintf(buf, sizeof buf, "event=%#llx", eventcode);
479 addfield(map, &event, ",", buf, NULL);
413 if (desc && extra_desc) 480 if (desc && extra_desc)
414 addfield(map, &desc, " ", extra_desc, NULL); 481 addfield(map, &desc, " ", extra_desc, NULL);
415 if (long_desc && extra_desc) 482 if (long_desc && extra_desc)
416 addfield(map, &long_desc, " ", extra_desc, NULL); 483 addfield(map, &long_desc, " ", extra_desc, NULL);
484 if (filter)
485 addfield(map, &event, ",", filter, NULL);
417 if (msr != NULL) 486 if (msr != NULL)
418 addfield(map, &event, ",", msr->pname, msrval); 487 addfield(map, &event, ",", msr->pname, msrval);
419 fixname(name); 488 fixname(name);
420 489
421 err = func(data, name, real_event(name, event), desc, long_desc); 490 err = func(data, name, real_event(name, event), desc, long_desc,
491 pmu, unit, perpkg);
422 free(event); 492 free(event);
423 free(desc); 493 free(desc);
424 free(name); 494 free(name);
425 free(long_desc); 495 free(long_desc);
426 free(extra_desc); 496 free(extra_desc);
497 free(pmu);
498 free(filter);
499 free(perpkg);
500 free(unit);
427 if (err) 501 if (err)
428 break; 502 break;
429 tok += j; 503 tok += j;
diff --git a/tools/perf/pmu-events/jevents.h b/tools/perf/pmu-events/jevents.h
index b0eb2744b498..71e13de31092 100644
--- a/tools/perf/pmu-events/jevents.h
+++ b/tools/perf/pmu-events/jevents.h
@@ -3,7 +3,9 @@
3 3
4int json_events(const char *fn, 4int json_events(const char *fn,
5 int (*func)(void *data, char *name, char *event, char *desc, 5 int (*func)(void *data, char *name, char *event, char *desc,
6 char *long_desc), 6 char *long_desc,
7 char *pmu,
8 char *unit, char *perpkg),
7 void *data); 9 void *data);
8char *get_cpu_str(void); 10char *get_cpu_str(void);
9 11
diff --git a/tools/perf/pmu-events/json.c b/tools/perf/pmu-events/json.c
index f67bbb0aa36e..0544398d6e2d 100644
--- a/tools/perf/pmu-events/json.c
+++ b/tools/perf/pmu-events/json.c
@@ -49,7 +49,7 @@ static char *mapfile(const char *fn, size_t *size)
49 int err; 49 int err;
50 int fd = open(fn, O_RDONLY); 50 int fd = open(fn, O_RDONLY);
51 51
52 if (fd < 0 && verbose && fn) { 52 if (fd < 0 && verbose > 0 && fn) {
53 pr_err("Error opening events file '%s': %s\n", fn, 53 pr_err("Error opening events file '%s': %s\n", fn,
54 strerror(errno)); 54 strerror(errno));
55 } 55 }
diff --git a/tools/perf/pmu-events/pmu-events.h b/tools/perf/pmu-events/pmu-events.h
index 2eaef595d8a0..c669a3cdb9f0 100644
--- a/tools/perf/pmu-events/pmu-events.h
+++ b/tools/perf/pmu-events/pmu-events.h
@@ -10,6 +10,9 @@ struct pmu_event {
10 const char *desc; 10 const char *desc;
11 const char *topic; 11 const char *topic;
12 const char *long_desc; 12 const char *long_desc;
13 const char *pmu;
14 const char *unit;
15 const char *perpkg;
13}; 16};
14 17
15/* 18/*
diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build
index 8a4ce492f7b2..1cb3d9b540e9 100644
--- a/tools/perf/tests/Build
+++ b/tools/perf/tests/Build
@@ -42,6 +42,9 @@ 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
47perf-y += unit_number__scnprintf.o
45 48
46$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build 49$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build
47 $(call rule_mkdir) 50 $(call rule_mkdir)
diff --git a/tools/perf/tests/attr.c b/tools/perf/tests/attr.c
index 28d1605b0338..88dc51f4c27b 100644
--- a/tools/perf/tests/attr.c
+++ b/tools/perf/tests/attr.c
@@ -144,7 +144,7 @@ static int run_dir(const char *d, const char *perf)
144 int vcnt = min(verbose, (int) sizeof(v) - 1); 144 int vcnt = min(verbose, (int) sizeof(v) - 1);
145 char cmd[3*PATH_MAX]; 145 char cmd[3*PATH_MAX];
146 146
147 if (verbose) 147 if (verbose > 0)
148 vcnt++; 148 vcnt++;
149 149
150 snprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s", 150 snprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s",
diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c
index e6d1816e431a..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 enough 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 2673e86ed50f..1a04fe77487d 100644
--- a/tools/perf/tests/bpf.c
+++ b/tools/perf/tests/bpf.c
@@ -5,11 +5,13 @@
5#include <util/evlist.h> 5#include <util/evlist.h>
6#include <linux/bpf.h> 6#include <linux/bpf.h>
7#include <linux/filter.h> 7#include <linux/filter.h>
8#include <api/fs/fs.h>
8#include <bpf/bpf.h> 9#include <bpf/bpf.h>
9#include "tests.h" 10#include "tests.h"
10#include "llvm.h" 11#include "llvm.h"
11#include "debug.h" 12#include "debug.h"
12#define NR_ITERS 111 13#define NR_ITERS 111
14#define PERF_TEST_BPF_PATH "/sys/fs/bpf/perf_test"
13 15
14#ifdef HAVE_LIBBPF_SUPPORT 16#ifdef HAVE_LIBBPF_SUPPORT
15 17
@@ -54,35 +56,49 @@ static struct {
54 const char *msg_load_fail; 56 const char *msg_load_fail;
55 int (*target_func)(void); 57 int (*target_func)(void);
56 int expect_result; 58 int expect_result;
59 bool pin;
57} bpf_testcase_table[] = { 60} bpf_testcase_table[] = {
58 { 61 {
59 LLVM_TESTCASE_BASE, 62 LLVM_TESTCASE_BASE,
60 "Test basic BPF filtering", 63 "Basic BPF filtering",
61 "[basic_bpf_test]", 64 "[basic_bpf_test]",
62 "fix 'perf test LLVM' first", 65 "fix 'perf test LLVM' first",
63 "load bpf object failed", 66 "load bpf object failed",
64 &epoll_wait_loop, 67 &epoll_wait_loop,
65 (NR_ITERS + 1) / 2, 68 (NR_ITERS + 1) / 2,
69 false,
70 },
71 {
72 LLVM_TESTCASE_BASE,
73 "BPF pinning",
74 "[bpf_pinning]",
75 "fix kbuild first",
76 "check your vmlinux setting?",
77 &epoll_wait_loop,
78 (NR_ITERS + 1) / 2,
79 true,
66 }, 80 },
67#ifdef HAVE_BPF_PROLOGUE 81#ifdef HAVE_BPF_PROLOGUE
68 { 82 {
69 LLVM_TESTCASE_BPF_PROLOGUE, 83 LLVM_TESTCASE_BPF_PROLOGUE,
70 "Test BPF prologue generation", 84 "BPF prologue generation",
71 "[bpf_prologue_test]", 85 "[bpf_prologue_test]",
72 "fix kbuild first", 86 "fix kbuild first",
73 "check your vmlinux setting?", 87 "check your vmlinux setting?",
74 &llseek_loop, 88 &llseek_loop,
75 (NR_ITERS + 1) / 4, 89 (NR_ITERS + 1) / 4,
90 false,
76 }, 91 },
77#endif 92#endif
78 { 93 {
79 LLVM_TESTCASE_BPF_RELOCATION, 94 LLVM_TESTCASE_BPF_RELOCATION,
80 "Test BPF relocation checker", 95 "BPF relocation checker",
81 "[bpf_relocation_test]", 96 "[bpf_relocation_test]",
82 "fix 'perf test LLVM' first", 97 "fix 'perf test LLVM' first",
83 "libbpf error when dealing with relocation", 98 "libbpf error when dealing with relocation",
84 NULL, 99 NULL,
85 0, 100 0,
101 false,
86 }, 102 },
87}; 103};
88 104
@@ -125,7 +141,7 @@ static int do_test(struct bpf_object *obj, int (*func)(void),
125 /* Instead of perf_evlist__new_default, don't add default events */ 141 /* Instead of perf_evlist__new_default, don't add default events */
126 evlist = perf_evlist__new(); 142 evlist = perf_evlist__new();
127 if (!evlist) { 143 if (!evlist) {
128 pr_debug("No enough memory to create evlist\n"); 144 pr_debug("Not enough memory to create evlist\n");
129 return TEST_FAIL; 145 return TEST_FAIL;
130 } 146 }
131 147
@@ -226,10 +242,34 @@ static int __test__bpf(int idx)
226 goto out; 242 goto out;
227 } 243 }
228 244
229 if (obj) 245 if (obj) {
230 ret = do_test(obj, 246 ret = do_test(obj,
231 bpf_testcase_table[idx].target_func, 247 bpf_testcase_table[idx].target_func,
232 bpf_testcase_table[idx].expect_result); 248 bpf_testcase_table[idx].expect_result);
249 if (ret != TEST_OK)
250 goto out;
251 if (bpf_testcase_table[idx].pin) {
252 int err;
253
254 if (!bpf_fs__mount()) {
255 pr_debug("BPF filesystem not mounted\n");
256 ret = TEST_FAIL;
257 goto out;
258 }
259 err = mkdir(PERF_TEST_BPF_PATH, 0777);
260 if (err && errno != EEXIST) {
261 pr_debug("Failed to make perf_test dir: %s\n",
262 strerror(errno));
263 ret = TEST_FAIL;
264 goto out;
265 }
266 if (bpf_object__pin(obj, PERF_TEST_BPF_PATH))
267 ret = TEST_FAIL;
268 if (rm_rf(PERF_TEST_BPF_PATH))
269 ret = TEST_FAIL;
270 }
271 }
272
233out: 273out:
234 bpf__clear(); 274 bpf__clear();
235 return ret; 275 return ret;
diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index 778668a2a966..83c4669cbc5b 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,75 @@ 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 {
250 .desc = "unit_number__scnprintf",
251 .func = test__unit_number__scnprint,
252 },
253 {
233 .func = NULL, 254 .func = NULL,
234 }, 255 },
235}; 256};
@@ -278,7 +299,7 @@ static int run_test(struct test *test, int subtest)
278 if (!dont_fork) { 299 if (!dont_fork) {
279 pr_debug("test child forked, pid %d\n", getpid()); 300 pr_debug("test child forked, pid %d\n", getpid());
280 301
281 if (!verbose) { 302 if (verbose <= 0) {
282 int nullfd = open("/dev/null", O_WRONLY); 303 int nullfd = open("/dev/null", O_WRONLY);
283 304
284 if (nullfd >= 0) { 305 if (nullfd >= 0) {
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 ff5bc6363a79..d1f693041324 100644
--- a/tools/perf/tests/code-reading.c
+++ b/tools/perf/tests/code-reading.c
@@ -599,7 +599,7 @@ static int do_test_code_reading(bool try_kcore)
599 continue; 599 continue;
600 } 600 }
601 601
602 if (verbose) { 602 if (verbose > 0) {
603 char errbuf[512]; 603 char errbuf[512];
604 perf_evlist__strerror_open(evlist, errno, errbuf, sizeof(errbuf)); 604 perf_evlist__strerror_open(evlist, errno, errbuf, sizeof(errbuf));
605 pr_debug("perf_evlist__open() failed!\n%s\n", errbuf); 605 pr_debug("perf_evlist__open() failed!\n%s\n", errbuf);
diff --git a/tools/perf/tests/fdarray.c b/tools/perf/tests/fdarray.c
index a2b5ff9bf83d..bc5982f42dc3 100644
--- a/tools/perf/tests/fdarray.c
+++ b/tools/perf/tests/fdarray.c
@@ -19,7 +19,7 @@ static int fdarray__fprintf_prefix(struct fdarray *fda, const char *prefix, FILE
19{ 19{
20 int printed = 0; 20 int printed = 0;
21 21
22 if (!verbose) 22 if (verbose <= 0)
23 return 0; 23 return 0;
24 24
25 printed += fprintf(fp, "\n%s: ", prefix); 25 printed += fprintf(fp, "\n%s: ", prefix);
diff --git a/tools/perf/tests/llvm.c b/tools/perf/tests/llvm.c
index b798a4bfd238..482b5365e68d 100644
--- a/tools/perf/tests/llvm.c
+++ b/tools/perf/tests/llvm.c
@@ -13,7 +13,7 @@ static int test__bpf_parsing(void *obj_buf, size_t obj_buf_sz)
13 struct bpf_object *obj; 13 struct bpf_object *obj;
14 14
15 obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, NULL); 15 obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, NULL);
16 if (IS_ERR(obj)) 16 if (libbpf_get_error(obj))
17 return TEST_FAIL; 17 return TEST_FAIL;
18 bpf_object__close(obj); 18 bpf_object__close(obj);
19 return TEST_OK; 19 return TEST_OK;
@@ -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};
@@ -76,7 +76,7 @@ test_llvm__fetch_bpf_obj(void **p_obj_buf,
76 * Skip this test if user's .perfconfig doesn't set [llvm] section 76 * Skip this test if user's .perfconfig doesn't set [llvm] section
77 * and clang is not found in $PATH, and this is not perf test -v 77 * and clang is not found in $PATH, and this is not perf test -v
78 */ 78 */
79 if (!force && (verbose == 0 && 79 if (!force && (verbose <= 0 &&
80 !llvm_param.user_set_param && 80 !llvm_param.user_set_param &&
81 llvm__search_clang())) { 81 llvm__search_clang())) {
82 pr_debug("No clang and no verbosive, skip this test\n"); 82 pr_debug("No clang and no verbosive, skip this test\n");
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/parse-events.c b/tools/perf/tests/parse-events.c
index 20c2e641c422..1dc838014422 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -1779,15 +1779,14 @@ static int test_pmu_events(void)
1779 } 1779 }
1780 1780
1781 while (!ret && (ent = readdir(dir))) { 1781 while (!ret && (ent = readdir(dir))) {
1782#define MAX_NAME 100
1783 struct evlist_test e; 1782 struct evlist_test e;
1784 char name[MAX_NAME]; 1783 char name[2 * NAME_MAX + 1 + 12 + 3];
1785 1784
1786 /* Names containing . are special and cannot be used directly */ 1785 /* Names containing . are special and cannot be used directly */
1787 if (strchr(ent->d_name, '.')) 1786 if (strchr(ent->d_name, '.'))
1788 continue; 1787 continue;
1789 1788
1790 snprintf(name, MAX_NAME, "cpu/event=%s/u", ent->d_name); 1789 snprintf(name, sizeof(name), "cpu/event=%s/u", ent->d_name);
1791 1790
1792 e.name = name; 1791 e.name = name;
1793 e.check = test__checkevent_pmu_events; 1792 e.check = test__checkevent_pmu_events;
@@ -1795,11 +1794,10 @@ static int test_pmu_events(void)
1795 ret = test_event(&e); 1794 ret = test_event(&e);
1796 if (ret) 1795 if (ret)
1797 break; 1796 break;
1798 snprintf(name, MAX_NAME, "%s:u,cpu/event=%s/u", ent->d_name, ent->d_name); 1797 snprintf(name, sizeof(name), "%s:u,cpu/event=%s/u", ent->d_name, ent->d_name);
1799 e.name = name; 1798 e.name = name;
1800 e.check = test__checkevent_pmu_events_mix; 1799 e.check = test__checkevent_pmu_events_mix;
1801 ret = test_event(&e); 1800 ret = test_event(&e);
1802#undef MAX_NAME
1803 } 1801 }
1804 1802
1805 closedir(dir); 1803 closedir(dir);
@@ -1810,7 +1808,7 @@ static void debug_warn(const char *warn, va_list params)
1810{ 1808{
1811 char msg[1024]; 1809 char msg[1024];
1812 1810
1813 if (!verbose) 1811 if (verbose <= 0)
1814 return; 1812 return;
1815 1813
1816 vsnprintf(msg, sizeof(msg), warn, params); 1814 vsnprintf(msg, sizeof(msg), warn, params);
diff --git a/tools/perf/tests/parse-no-sample-id-all.c b/tools/perf/tests/parse-no-sample-id-all.c
index 81c6eeaca0f5..65dcf48a92fb 100644
--- a/tools/perf/tests/parse-no-sample-id-all.c
+++ b/tools/perf/tests/parse-no-sample-id-all.c
@@ -50,7 +50,8 @@ static int process_events(union perf_event **events, size_t count)
50} 50}
51 51
52struct test_attr_event { 52struct test_attr_event {
53 struct attr_event attr; 53 struct perf_event_header header;
54 struct perf_event_attr attr;
54 u64 id; 55 u64 id;
55}; 56};
56 57
@@ -71,20 +72,16 @@ int test__parse_no_sample_id_all(int subtest __maybe_unused)
71 int err; 72 int err;
72 73
73 struct test_attr_event event1 = { 74 struct test_attr_event event1 = {
74 .attr = { 75 .header = {
75 .header = { 76 .type = PERF_RECORD_HEADER_ATTR,
76 .type = PERF_RECORD_HEADER_ATTR, 77 .size = sizeof(struct test_attr_event),
77 .size = sizeof(struct test_attr_event),
78 },
79 }, 78 },
80 .id = 1, 79 .id = 1,
81 }; 80 };
82 struct test_attr_event event2 = { 81 struct test_attr_event event2 = {
83 .attr = { 82 .header = {
84 .header = { 83 .type = PERF_RECORD_HEADER_ATTR,
85 .type = PERF_RECORD_HEADER_ATTR, 84 .size = sizeof(struct test_attr_event),
86 .size = sizeof(struct test_attr_event),
87 },
88 }, 85 },
89 .id = 2, 86 .id = 2,
90 }; 87 };
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/perf-record.c b/tools/perf/tests/perf-record.c
index 8f2e1de6d0ea..87893f3ba5f1 100644
--- a/tools/perf/tests/perf-record.c
+++ b/tools/perf/tests/perf-record.c
@@ -66,7 +66,7 @@ int test__PERF_RECORD(int subtest __maybe_unused)
66 if (evlist == NULL) /* Fallback for kernels lacking PERF_COUNT_SW_DUMMY */ 66 if (evlist == NULL) /* Fallback for kernels lacking PERF_COUNT_SW_DUMMY */
67 evlist = perf_evlist__new_default(); 67 evlist = perf_evlist__new_default();
68 68
69 if (evlist == NULL || argv == NULL) { 69 if (evlist == NULL) {
70 pr_debug("Not enough memory to create evlist\n"); 70 pr_debug("Not enough memory to create evlist\n");
71 goto out; 71 goto out;
72 } 72 }
@@ -172,13 +172,13 @@ int test__PERF_RECORD(int subtest __maybe_unused)
172 172
173 err = perf_evlist__parse_sample(evlist, event, &sample); 173 err = perf_evlist__parse_sample(evlist, event, &sample);
174 if (err < 0) { 174 if (err < 0) {
175 if (verbose) 175 if (verbose > 0)
176 perf_event__fprintf(event, stderr); 176 perf_event__fprintf(event, stderr);
177 pr_debug("Couldn't parse sample\n"); 177 pr_debug("Couldn't parse sample\n");
178 goto out_delete_evlist; 178 goto out_delete_evlist;
179 } 179 }
180 180
181 if (verbose) { 181 if (verbose > 0) {
182 pr_info("%" PRIu64" %d ", sample.time, sample.cpu); 182 pr_info("%" PRIu64" %d ", sample.time, sample.cpu);
183 perf_event__fprintf(event, stderr); 183 perf_event__fprintf(event, stderr);
184 } 184 }
diff --git a/tools/perf/tests/python-use.c b/tools/perf/tests/python-use.c
index 7a52834ee0d0..fa79509da535 100644
--- a/tools/perf/tests/python-use.c
+++ b/tools/perf/tests/python-use.c
@@ -15,7 +15,7 @@ int test__python_use(int subtest __maybe_unused)
15 int ret; 15 int ret;
16 16
17 if (asprintf(&cmd, "echo \"import sys ; sys.path.append('%s'); import perf\" | %s %s", 17 if (asprintf(&cmd, "echo \"import sys ; sys.path.append('%s'); import perf\" | %s %s",
18 PYTHONPATH, PYTHON, verbose ? "" : "2> /dev/null") < 0) 18 PYTHONPATH, PYTHON, verbose > 0 ? "" : "2> /dev/null") < 0)
19 return -1; 19 return -1;
20 20
21 ret = system(cmd) ? -1 : 0; 21 ret = system(cmd) ? -1 : 0;
diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h
index 7c196c585472..1fa9b9d83aa5 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,11 @@ 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);
99int test__unit_number__scnprint(int subtest);
94 100
95#if defined(__arm__) || defined(__aarch64__) 101#if defined(__arm__) || defined(__aarch64__)
96#ifdef HAVE_DWARF_UNWIND_SUPPORT 102#ifdef HAVE_DWARF_UNWIND_SUPPORT
diff --git a/tools/perf/tests/thread-map.c b/tools/perf/tests/thread-map.c
index cee2a2cdc933..f2d2e542d0ee 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 > 0)
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 > 0)
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 > 0)
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/topology.c b/tools/perf/tests/topology.c
index 98fe69ac553c..803f893550d6 100644
--- a/tools/perf/tests/topology.c
+++ b/tools/perf/tests/topology.c
@@ -65,7 +65,9 @@ static int check_cpu_topology(char *path, struct cpu_map *map)
65 session = perf_session__new(&file, false, NULL); 65 session = perf_session__new(&file, false, NULL);
66 TEST_ASSERT_VAL("can't get session", session); 66 TEST_ASSERT_VAL("can't get session", session);
67 67
68 for (i = 0; i < session->header.env.nr_cpus_online; i++) { 68 for (i = 0; i < session->header.env.nr_cpus_avail; i++) {
69 if (!cpu_map__has(map, i))
70 continue;
69 pr_debug("CPU %d, core %d, socket %d\n", i, 71 pr_debug("CPU %d, core %d, socket %d\n", i,
70 session->header.env.cpu[i].core_id, 72 session->header.env.cpu[i].core_id,
71 session->header.env.cpu[i].socket_id); 73 session->header.env.cpu[i].socket_id);
diff --git a/tools/perf/tests/unit_number__scnprintf.c b/tools/perf/tests/unit_number__scnprintf.c
new file mode 100644
index 000000000000..623c2aa53c4a
--- /dev/null
+++ b/tools/perf/tests/unit_number__scnprintf.c
@@ -0,0 +1,37 @@
1#include <linux/compiler.h>
2#include <linux/types.h>
3#include "tests.h"
4#include "util.h"
5#include "debug.h"
6
7int test__unit_number__scnprint(int subtest __maybe_unused)
8{
9 struct {
10 u64 n;
11 const char *str;
12 } test[] = {
13 { 1, "1B" },
14 { 10*1024, "10K" },
15 { 20*1024*1024, "20M" },
16 { 30*1024*1024*1024ULL, "30G" },
17 { 0, "0B" },
18 { 0, NULL },
19 };
20 unsigned i = 0;
21
22 while (test[i].str) {
23 char buf[100];
24
25 unit_number__scnprintf(buf, sizeof(buf), test[i].n);
26
27 pr_debug("n %" PRIu64 ", str '%s', buf '%s'\n",
28 test[i].n, test[i].str, buf);
29
30 if (strcmp(test[i].str, buf))
31 return TEST_FAIL;
32
33 i++;
34 }
35
36 return TEST_OK;
37}
diff --git a/tools/perf/tests/vmlinux-kallsyms.c b/tools/perf/tests/vmlinux-kallsyms.c
index a5082331f246..862b043e5924 100644
--- a/tools/perf/tests/vmlinux-kallsyms.c
+++ b/tools/perf/tests/vmlinux-kallsyms.c
@@ -168,7 +168,7 @@ next_pair:
168 err = -1; 168 err = -1;
169 } 169 }
170 170
171 if (!verbose) 171 if (verbose <= 0)
172 goto out; 172 goto out;
173 173
174 header_printed = false; 174 header_printed = false;
diff --git a/tools/perf/trace/beauty/mmap.c b/tools/perf/trace/beauty/mmap.c
index fd710ab33684..af1cfde6b97b 100644
--- a/tools/perf/trace/beauty/mmap.c
+++ b/tools/perf/trace/beauty/mmap.c
@@ -42,7 +42,9 @@ static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,
42 42
43 P_MMAP_FLAG(SHARED); 43 P_MMAP_FLAG(SHARED);
44 P_MMAP_FLAG(PRIVATE); 44 P_MMAP_FLAG(PRIVATE);
45#ifdef MAP_32BIT
45 P_MMAP_FLAG(32BIT); 46 P_MMAP_FLAG(32BIT);
47#endif
46 P_MMAP_FLAG(ANONYMOUS); 48 P_MMAP_FLAG(ANONYMOUS);
47 P_MMAP_FLAG(DENYWRITE); 49 P_MMAP_FLAG(DENYWRITE);
48 P_MMAP_FLAG(EXECUTABLE); 50 P_MMAP_FLAG(EXECUTABLE);
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index 4c18271c71c9..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,7 +493,7 @@ 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) || 499 if (map_groups__find_ams(&target) ||
@@ -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 a53fef0c673b..fc4fb669ceee 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)
@@ -501,8 +501,8 @@ static int hierarchy_set_folding(struct hist_browser *hb, struct hist_entry *he,
501 return n; 501 return n;
502} 502}
503 503
504static void hist_entry__set_folding(struct hist_entry *he, 504static void __hist_entry__set_folding(struct hist_entry *he,
505 struct hist_browser *hb, bool unfold) 505 struct hist_browser *hb, bool unfold)
506{ 506{
507 hist_entry__init_have_children(he); 507 hist_entry__init_have_children(he);
508 he->unfolded = unfold ? he->has_children : false; 508 he->unfolded = unfold ? he->has_children : false;
@@ -520,12 +520,34 @@ static void hist_entry__set_folding(struct hist_entry *he,
520 he->nr_rows = 0; 520 he->nr_rows = 0;
521} 521}
522 522
523static void hist_entry__set_folding(struct hist_entry *he,
524 struct hist_browser *browser, bool unfold)
525{
526 double percent;
527
528 percent = hist_entry__get_percent_limit(he);
529 if (he->filtered || percent < browser->min_pcnt)
530 return;
531
532 __hist_entry__set_folding(he, browser, unfold);
533
534 if (!he->depth || unfold)
535 browser->nr_hierarchy_entries++;
536 if (he->leaf)
537 browser->nr_callchain_rows += he->nr_rows;
538 else if (unfold && !hist_entry__has_hierarchy_children(he, browser->min_pcnt)) {
539 browser->nr_hierarchy_entries++;
540 he->has_no_entry = true;
541 he->nr_rows = 1;
542 } else
543 he->has_no_entry = false;
544}
545
523static void 546static void
524__hist_browser__set_folding(struct hist_browser *browser, bool unfold) 547__hist_browser__set_folding(struct hist_browser *browser, bool unfold)
525{ 548{
526 struct rb_node *nd; 549 struct rb_node *nd;
527 struct hist_entry *he; 550 struct hist_entry *he;
528 double percent;
529 551
530 nd = rb_first(&browser->hists->entries); 552 nd = rb_first(&browser->hists->entries);
531 while (nd) { 553 while (nd) {
@@ -535,21 +557,6 @@ __hist_browser__set_folding(struct hist_browser *browser, bool unfold)
535 nd = __rb_hierarchy_next(nd, HMD_FORCE_CHILD); 557 nd = __rb_hierarchy_next(nd, HMD_FORCE_CHILD);
536 558
537 hist_entry__set_folding(he, browser, unfold); 559 hist_entry__set_folding(he, browser, unfold);
538
539 percent = hist_entry__get_percent_limit(he);
540 if (he->filtered || percent < browser->min_pcnt)
541 continue;
542
543 if (!he->depth || unfold)
544 browser->nr_hierarchy_entries++;
545 if (he->leaf)
546 browser->nr_callchain_rows += he->nr_rows;
547 else if (unfold && !hist_entry__has_hierarchy_children(he, browser->min_pcnt)) {
548 browser->nr_hierarchy_entries++;
549 he->has_no_entry = true;
550 he->nr_rows = 1;
551 } else
552 he->has_no_entry = false;
553 } 560 }
554} 561}
555 562
@@ -564,6 +571,15 @@ static void hist_browser__set_folding(struct hist_browser *browser, bool unfold)
564 ui_browser__reset_index(&browser->b); 571 ui_browser__reset_index(&browser->b);
565} 572}
566 573
574static void hist_browser__set_folding_selected(struct hist_browser *browser, bool unfold)
575{
576 if (!browser->he_selection)
577 return;
578
579 hist_entry__set_folding(browser->he_selection, browser, unfold);
580 browser->b.nr_entries = hist_browser__nr_entries(browser);
581}
582
567static void ui_browser__warn_lost_events(struct ui_browser *browser) 583static void ui_browser__warn_lost_events(struct ui_browser *browser)
568{ 584{
569 ui_browser__warning(browser, 4, 585 ui_browser__warning(browser, 4,
@@ -637,10 +653,18 @@ int hist_browser__run(struct hist_browser *browser, const char *help)
637 /* Collapse the whole world. */ 653 /* Collapse the whole world. */
638 hist_browser__set_folding(browser, false); 654 hist_browser__set_folding(browser, false);
639 break; 655 break;
656 case 'c':
657 /* Collapse the selected entry. */
658 hist_browser__set_folding_selected(browser, false);
659 break;
640 case 'E': 660 case 'E':
641 /* Expand the whole world. */ 661 /* Expand the whole world. */
642 hist_browser__set_folding(browser, true); 662 hist_browser__set_folding(browser, true);
643 break; 663 break;
664 case 'e':
665 /* Expand the selected entry. */
666 hist_browser__set_folding_selected(browser, true);
667 break;
644 case 'H': 668 case 'H':
645 browser->show_headers = !browser->show_headers; 669 browser->show_headers = !browser->show_headers;
646 hist_browser__update_rows(browser); 670 hist_browser__update_rows(browser);
@@ -738,6 +762,7 @@ static int hist_browser__show_callchain_list(struct hist_browser *browser,
738 struct callchain_print_arg *arg) 762 struct callchain_print_arg *arg)
739{ 763{
740 char bf[1024], *alloc_str; 764 char bf[1024], *alloc_str;
765 char buf[64], *alloc_str2;
741 const char *str; 766 const char *str;
742 767
743 if (arg->row_offset != 0) { 768 if (arg->row_offset != 0) {
@@ -746,12 +771,26 @@ static int hist_browser__show_callchain_list(struct hist_browser *browser,
746 } 771 }
747 772
748 alloc_str = NULL; 773 alloc_str = NULL;
774 alloc_str2 = NULL;
775
749 str = callchain_list__sym_name(chain, bf, sizeof(bf), 776 str = callchain_list__sym_name(chain, bf, sizeof(bf),
750 browser->show_dso); 777 browser->show_dso);
751 778
752 if (need_percent) { 779 if (symbol_conf.show_branchflag_count) {
753 char buf[64]; 780 if (need_percent)
781 callchain_list_counts__printf_value(node, chain, NULL,
782 buf, sizeof(buf));
783 else
784 callchain_list_counts__printf_value(NULL, chain, NULL,
785 buf, sizeof(buf));
754 786
787 if (asprintf(&alloc_str2, "%s%s", str, buf) < 0)
788 str = "Not enough memory!";
789 else
790 str = alloc_str2;
791 }
792
793 if (need_percent) {
755 callchain_node__scnprintf_value(node, buf, sizeof(buf), 794 callchain_node__scnprintf_value(node, buf, sizeof(buf),
756 total); 795 total);
757 796
@@ -764,6 +803,7 @@ static int hist_browser__show_callchain_list(struct hist_browser *browser,
764 print(browser, chain, str, offset, row, arg); 803 print(browser, chain, str, offset, row, arg);
765 804
766 free(alloc_str); 805 free(alloc_str);
806 free(alloc_str2);
767 return 1; 807 return 1;
768} 808}
769 809
@@ -2833,7 +2873,10 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
2833 do_zoom_dso(browser, actions); 2873 do_zoom_dso(browser, actions);
2834 continue; 2874 continue;
2835 case 'V': 2875 case 'V':
2836 browser->show_dso = !browser->show_dso; 2876 verbose = (verbose + 1) % 4;
2877 browser->show_dso = verbose > 0;
2878 ui_helpline__fpush("Verbosity level set to %d\n",
2879 verbose);
2837 continue; 2880 continue;
2838 case 't': 2881 case 't':
2839 actions->thread = thread; 2882 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 98a34664bb7e..9ce142de536d 100644
--- a/tools/perf/ui/browsers/map.c
+++ b/tools/perf/ui/browsers/map.c
@@ -73,7 +73,7 @@ static int map_browser__run(struct map_browser *browser)
73 73
74 if (ui_browser__show(&browser->b, browser->map->dso->long_name, 74 if (ui_browser__show(&browser->b, browser->map->dso->long_name,
75 "Press ESC to exit, %s / to search", 75 "Press ESC to exit, %s / to search",
76 verbose ? "" : "restart with -v to use") < 0) 76 verbose > 0 ? "" : "restart with -v to use") < 0)
77 return -1; 77 return -1;
78 78
79 while (1) { 79 while (1) {
@@ -81,7 +81,7 @@ static int map_browser__run(struct map_browser *browser)
81 81
82 switch (key) { 82 switch (key) {
83 case '/': 83 case '/':
84 if (verbose) 84 if (verbose > 0)
85 map_browser__search(browser); 85 map_browser__search(browser);
86 default: 86 default:
87 break; 87 break;
@@ -117,7 +117,7 @@ int map__browse(struct map *map)
117 117
118 if (maxaddr < pos->end) 118 if (maxaddr < pos->end)
119 maxaddr = pos->end; 119 maxaddr = pos->end;
120 if (verbose) { 120 if (verbose > 0) {
121 u32 *idx = symbol__browser_index(pos); 121 u32 *idx = symbol__browser_index(pos);
122 *idx = mb.b.nr_entries; 122 *idx = mb.b.nr_entries;
123 } 123 }
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/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 37388397b5bc..5d632dca672a 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -521,6 +521,12 @@ void perf_hpp_list__register_sort_field(struct perf_hpp_list *list,
521 list_add_tail(&format->sort_list, &list->sorts); 521 list_add_tail(&format->sort_list, &list->sorts);
522} 522}
523 523
524void perf_hpp_list__prepend_sort_field(struct perf_hpp_list *list,
525 struct perf_hpp_fmt *format)
526{
527 list_add(&format->sort_list, &list->sorts);
528}
529
524void perf_hpp__column_unregister(struct perf_hpp_fmt *format) 530void perf_hpp__column_unregister(struct perf_hpp_fmt *format)
525{ 531{
526 list_del(&format->list); 532 list_del(&format->list);
@@ -560,6 +566,10 @@ void perf_hpp__setup_output_field(struct perf_hpp_list *list)
560 perf_hpp_list__for_each_sort_list(list, fmt) { 566 perf_hpp_list__for_each_sort_list(list, fmt) {
561 struct perf_hpp_fmt *pos; 567 struct perf_hpp_fmt *pos;
562 568
569 /* skip sort-only fields ("sort_compute" in perf diff) */
570 if (!fmt->entry && !fmt->color)
571 continue;
572
563 perf_hpp_list__for_each_format(list, pos) { 573 perf_hpp_list__for_each_format(list, pos) {
564 if (fmt_equal(fmt, pos)) 574 if (fmt_equal(fmt, pos))
565 goto next; 575 goto next;
@@ -638,7 +648,7 @@ unsigned int hists__sort_list_width(struct hists *hists)
638 ret += fmt->width(fmt, &dummy_hpp, hists); 648 ret += fmt->width(fmt, &dummy_hpp, hists);
639 } 649 }
640 650
641 if (verbose && hists__has(hists, sym)) /* Addr + origin */ 651 if (verbose > 0 && hists__has(hists, sym)) /* Addr + origin */
642 ret += 3 + BITS_PER_LONG / 4; 652 ret += 3 + BITS_PER_LONG / 4;
643 653
644 return ret; 654 return ret;
diff --git a/tools/perf/ui/setup.c b/tools/perf/ui/setup.c
index 1f6b0994f4f4..50d13e58210f 100644
--- a/tools/perf/ui/setup.c
+++ b/tools/perf/ui/setup.c
@@ -7,6 +7,7 @@
7 7
8pthread_mutex_t ui__lock = PTHREAD_MUTEX_INITIALIZER; 8pthread_mutex_t ui__lock = PTHREAD_MUTEX_INITIALIZER;
9void *perf_gtk_handle; 9void *perf_gtk_handle;
10int use_browser = -1;
10 11
11#ifdef HAVE_GTK2_SUPPORT 12#ifdef HAVE_GTK2_SUPPORT
12static int setup_gtk_browser(void) 13static int setup_gtk_browser(void)
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index 89d8441f9890..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;
diff --git a/tools/perf/util/Build b/tools/perf/util/Build
index eb60e613d795..5da376bc1afc 100644
--- a/tools/perf/util/Build
+++ b/tools/perf/util/Build
@@ -87,6 +87,7 @@ libperf-y += help-unknown-cmd.o
87libperf-y += mem-events.o 87libperf-y += mem-events.o
88libperf-y += vsprintf.o 88libperf-y += vsprintf.o
89libperf-y += drv_configs.o 89libperf-y += drv_configs.o
90libperf-y += time-utils.o
90 91
91libperf-$(CONFIG_LIBBPF) += bpf-loader.o 92libperf-$(CONFIG_LIBBPF) += bpf-loader.o
92libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o 93libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o
@@ -120,9 +121,13 @@ libperf-y += demangle-rust.o
120ifdef CONFIG_JITDUMP 121ifdef CONFIG_JITDUMP
121libperf-$(CONFIG_LIBELF) += jitdump.o 122libperf-$(CONFIG_LIBELF) += jitdump.o
122libperf-$(CONFIG_LIBELF) += genelf.o 123libperf-$(CONFIG_LIBELF) += genelf.o
123libperf-$(CONFIG_LIBELF) += genelf_debug.o 124libperf-$(CONFIG_DWARF) += genelf_debug.o
124endif 125endif
125 126
127libperf-y += perf-hooks.o
128
129libperf-$(CONFIG_CXX) += c++/
130
126CFLAGS_config.o += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 131CFLAGS_config.o += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
127# avoid compiler warnings in 32-bit mode 132# avoid compiler warnings in 32-bit mode
128CFLAGS_genelf_debug.o += -Wno-packed 133CFLAGS_genelf_debug.o += -Wno-packed
@@ -157,6 +162,7 @@ CFLAGS_rbtree.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ET
157CFLAGS_libstring.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 162CFLAGS_libstring.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
158CFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 163CFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
159CFLAGS_parse-events.o += -Wno-redundant-decls 164CFLAGS_parse-events.o += -Wno-redundant-decls
165CFLAGS_header.o += -include $(OUTPUT)PERF-VERSION-FILE
160 166
161$(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE 167$(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE
162 $(call rule_mkdir) 168 $(call rule_mkdir)
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index aeb5a441bd74..7aa57225cbf7 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -18,16 +18,125 @@
18#include "annotate.h" 18#include "annotate.h"
19#include "evsel.h" 19#include "evsel.h"
20#include "block-range.h" 20#include "block-range.h"
21#include "arch/common.h"
21#include <regex.h> 22#include <regex.h>
22#include <pthread.h> 23#include <pthread.h>
23#include <linux/bitops.h> 24#include <linux/bitops.h>
25#include <sys/utsname.h>
24 26
25const char *disassembler_style; 27const char *disassembler_style;
26const char *objdump_path; 28const char *objdump_path;
27static regex_t file_lineno; 29static regex_t file_lineno;
28 30
29static struct ins *ins__find(const char *name); 31static struct ins_ops *ins__find(struct arch *arch, const char *name);
30static 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 {
134 .name = "s390",
135 .objdump = {
136 .comment_char = '#',
137 },
138 },
139};
31 140
32static void ins__delete(struct ins_operands *ops) 141static void ins__delete(struct ins_operands *ops)
33{ 142{
@@ -54,7 +163,7 @@ int ins__scnprintf(struct ins *ins, char *bf, size_t size,
54 return ins__raw_scnprintf(ins, bf, size, ops); 163 return ins__raw_scnprintf(ins, bf, size, ops);
55} 164}
56 165
57static int call__parse(struct ins_operands *ops, struct map *map) 166static int call__parse(struct arch *arch, struct ins_operands *ops, struct map *map)
58{ 167{
59 char *endptr, *tok, *name; 168 char *endptr, *tok, *name;
60 169
@@ -66,10 +175,9 @@ static int call__parse(struct ins_operands *ops, struct map *map)
66 175
67 name++; 176 name++;
68 177
69#ifdef __arm__ 178 if (arch->objdump.skip_functions_char &&
70 if (strchr(name, '+')) 179 strchr(name, arch->objdump.skip_functions_char))
71 return -1; 180 return -1;
72#endif
73 181
74 tok = strchr(name, '>'); 182 tok = strchr(name, '>');
75 if (tok == NULL) 183 if (tok == NULL)
@@ -118,16 +226,22 @@ bool ins__is_call(const struct ins *ins)
118 return ins->ops == &call_ops; 226 return ins->ops == &call_ops;
119} 227}
120 228
121static int jump__parse(struct ins_operands *ops, struct map *map __maybe_unused) 229static int jump__parse(struct arch *arch __maybe_unused, struct ins_operands *ops, struct map *map __maybe_unused)
122{ 230{
123 const char *s = strchr(ops->raw, '+'); 231 const char *s = strchr(ops->raw, '+');
232 const char *c = strchr(ops->raw, ',');
124 233
125 ops->target.addr = strtoull(ops->raw, NULL, 16); 234 if (c++ != NULL)
235 ops->target.addr = strtoull(c, NULL, 16);
236 else
237 ops->target.addr = strtoull(ops->raw, NULL, 16);
126 238
127 if (s++ != NULL) 239 if (s++ != NULL) {
128 ops->target.offset = strtoull(s, NULL, 16); 240 ops->target.offset = strtoull(s, NULL, 16);
129 else 241 ops->target.offset_avail = true;
130 ops->target.offset = UINT64_MAX; 242 } else {
243 ops->target.offset_avail = false;
244 }
131 245
132 return 0; 246 return 0;
133} 247}
@@ -135,6 +249,9 @@ static int jump__parse(struct ins_operands *ops, struct map *map __maybe_unused)
135static int jump__scnprintf(struct ins *ins, char *bf, size_t size, 249static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
136 struct ins_operands *ops) 250 struct ins_operands *ops)
137{ 251{
252 if (!ops->target.addr || ops->target.offset < 0)
253 return ins__raw_scnprintf(ins, bf, size, ops);
254
138 return scnprintf(bf, size, "%-6.6s %" PRIx64, ins->name, ops->target.offset); 255 return scnprintf(bf, size, "%-6.6s %" PRIx64, ins->name, ops->target.offset);
139} 256}
140 257
@@ -173,28 +290,22 @@ static int comment__symbol(char *raw, char *comment, u64 *addrp, char **namep)
173 return 0; 290 return 0;
174} 291}
175 292
176static int lock__parse(struct ins_operands *ops, struct map *map) 293static int lock__parse(struct arch *arch, struct ins_operands *ops, struct map *map)
177{ 294{
178 char *name;
179
180 ops->locked.ops = zalloc(sizeof(*ops->locked.ops)); 295 ops->locked.ops = zalloc(sizeof(*ops->locked.ops));
181 if (ops->locked.ops == NULL) 296 if (ops->locked.ops == NULL)
182 return 0; 297 return 0;
183 298
184 if (disasm_line__parse(ops->raw, &name, &ops->locked.ops->raw) < 0) 299 if (disasm_line__parse(ops->raw, &ops->locked.ins.name, &ops->locked.ops->raw) < 0)
185 goto out_free_ops; 300 goto out_free_ops;
186 301
187 ops->locked.ins = ins__find(name); 302 ops->locked.ins.ops = ins__find(arch, ops->locked.ins.name);
188 free(name);
189 303
190 if (ops->locked.ins == NULL) 304 if (ops->locked.ins.ops == NULL)
191 goto out_free_ops; 305 goto out_free_ops;
192 306
193 if (!ops->locked.ins->ops) 307 if (ops->locked.ins.ops->parse &&
194 return 0; 308 ops->locked.ins.ops->parse(arch, ops->locked.ops, map) < 0)
195
196 if (ops->locked.ins->ops->parse &&
197 ops->locked.ins->ops->parse(ops->locked.ops, map) < 0)
198 goto out_free_ops; 309 goto out_free_ops;
199 310
200 return 0; 311 return 0;
@@ -209,19 +320,19 @@ static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
209{ 320{
210 int printed; 321 int printed;
211 322
212 if (ops->locked.ins == NULL) 323 if (ops->locked.ins.ops == NULL)
213 return ins__raw_scnprintf(ins, bf, size, ops); 324 return ins__raw_scnprintf(ins, bf, size, ops);
214 325
215 printed = scnprintf(bf, size, "%-6.6s ", ins->name); 326 printed = scnprintf(bf, size, "%-6.6s ", ins->name);
216 return printed + ins__scnprintf(ops->locked.ins, bf + printed, 327 return printed + ins__scnprintf(&ops->locked.ins, bf + printed,
217 size - printed, ops->locked.ops); 328 size - printed, ops->locked.ops);
218} 329}
219 330
220static void lock__delete(struct ins_operands *ops) 331static void lock__delete(struct ins_operands *ops)
221{ 332{
222 struct ins *ins = ops->locked.ins; 333 struct ins *ins = &ops->locked.ins;
223 334
224 if (ins && ins->ops->free) 335 if (ins->ops && ins->ops->free)
225 ins->ops->free(ops->locked.ops); 336 ins->ops->free(ops->locked.ops);
226 else 337 else
227 ins__delete(ops->locked.ops); 338 ins__delete(ops->locked.ops);
@@ -237,7 +348,7 @@ static struct ins_ops lock_ops = {
237 .scnprintf = lock__scnprintf, 348 .scnprintf = lock__scnprintf,
238}; 349};
239 350
240static int mov__parse(struct ins_operands *ops, struct map *map __maybe_unused) 351static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map *map __maybe_unused)
241{ 352{
242 char *s = strchr(ops->raw, ','), *target, *comment, prev; 353 char *s = strchr(ops->raw, ','), *target, *comment, prev;
243 354
@@ -252,11 +363,7 @@ static int mov__parse(struct ins_operands *ops, struct map *map __maybe_unused)
252 return -1; 363 return -1;
253 364
254 target = ++s; 365 target = ++s;
255#ifdef __arm__ 366 comment = strchr(s, arch->objdump.comment_char);
256 comment = strchr(s, ';');
257#else
258 comment = strchr(s, '#');
259#endif
260 367
261 if (comment != NULL) 368 if (comment != NULL)
262 s = comment - 1; 369 s = comment - 1;
@@ -304,7 +411,7 @@ static struct ins_ops mov_ops = {
304 .scnprintf = mov__scnprintf, 411 .scnprintf = mov__scnprintf,
305}; 412};
306 413
307static int dec__parse(struct ins_operands *ops, struct map *map __maybe_unused) 414static int dec__parse(struct arch *arch __maybe_unused, struct ins_operands *ops, struct map *map __maybe_unused)
308{ 415{
309 char *target, *comment, *s, prev; 416 char *target, *comment, *s, prev;
310 417
@@ -321,7 +428,7 @@ static int dec__parse(struct ins_operands *ops, struct map *map __maybe_unused)
321 if (ops->target.raw == NULL) 428 if (ops->target.raw == NULL)
322 return -1; 429 return -1;
323 430
324 comment = strchr(s, '#'); 431 comment = strchr(s, arch->objdump.comment_char);
325 if (comment == NULL) 432 if (comment == NULL)
326 return 0; 433 return 0;
327 434
@@ -364,99 +471,6 @@ bool ins__is_ret(const struct ins *ins)
364 return ins->ops == &ret_ops; 471 return ins->ops == &ret_ops;
365} 472}
366 473
367static struct ins instructions[] = {
368 { .name = "add", .ops = &mov_ops, },
369 { .name = "addl", .ops = &mov_ops, },
370 { .name = "addq", .ops = &mov_ops, },
371 { .name = "addw", .ops = &mov_ops, },
372 { .name = "and", .ops = &mov_ops, },
373#ifdef __arm__
374 { .name = "b", .ops = &jump_ops, }, // might also be a call
375 { .name = "bcc", .ops = &jump_ops, },
376 { .name = "bcs", .ops = &jump_ops, },
377 { .name = "beq", .ops = &jump_ops, },
378 { .name = "bge", .ops = &jump_ops, },
379 { .name = "bgt", .ops = &jump_ops, },
380 { .name = "bhi", .ops = &jump_ops, },
381 { .name = "bl", .ops = &call_ops, },
382 { .name = "bls", .ops = &jump_ops, },
383 { .name = "blt", .ops = &jump_ops, },
384 { .name = "blx", .ops = &call_ops, },
385 { .name = "bne", .ops = &jump_ops, },
386#endif
387 { .name = "bts", .ops = &mov_ops, },
388 { .name = "call", .ops = &call_ops, },
389 { .name = "callq", .ops = &call_ops, },
390 { .name = "cmp", .ops = &mov_ops, },
391 { .name = "cmpb", .ops = &mov_ops, },
392 { .name = "cmpl", .ops = &mov_ops, },
393 { .name = "cmpq", .ops = &mov_ops, },
394 { .name = "cmpw", .ops = &mov_ops, },
395 { .name = "cmpxch", .ops = &mov_ops, },
396 { .name = "dec", .ops = &dec_ops, },
397 { .name = "decl", .ops = &dec_ops, },
398 { .name = "imul", .ops = &mov_ops, },
399 { .name = "inc", .ops = &dec_ops, },
400 { .name = "incl", .ops = &dec_ops, },
401 { .name = "ja", .ops = &jump_ops, },
402 { .name = "jae", .ops = &jump_ops, },
403 { .name = "jb", .ops = &jump_ops, },
404 { .name = "jbe", .ops = &jump_ops, },
405 { .name = "jc", .ops = &jump_ops, },
406 { .name = "jcxz", .ops = &jump_ops, },
407 { .name = "je", .ops = &jump_ops, },
408 { .name = "jecxz", .ops = &jump_ops, },
409 { .name = "jg", .ops = &jump_ops, },
410 { .name = "jge", .ops = &jump_ops, },
411 { .name = "jl", .ops = &jump_ops, },
412 { .name = "jle", .ops = &jump_ops, },
413 { .name = "jmp", .ops = &jump_ops, },
414 { .name = "jmpq", .ops = &jump_ops, },
415 { .name = "jna", .ops = &jump_ops, },
416 { .name = "jnae", .ops = &jump_ops, },
417 { .name = "jnb", .ops = &jump_ops, },
418 { .name = "jnbe", .ops = &jump_ops, },
419 { .name = "jnc", .ops = &jump_ops, },
420 { .name = "jne", .ops = &jump_ops, },
421 { .name = "jng", .ops = &jump_ops, },
422 { .name = "jnge", .ops = &jump_ops, },
423 { .name = "jnl", .ops = &jump_ops, },
424 { .name = "jnle", .ops = &jump_ops, },
425 { .name = "jno", .ops = &jump_ops, },
426 { .name = "jnp", .ops = &jump_ops, },
427 { .name = "jns", .ops = &jump_ops, },
428 { .name = "jnz", .ops = &jump_ops, },
429 { .name = "jo", .ops = &jump_ops, },
430 { .name = "jp", .ops = &jump_ops, },
431 { .name = "jpe", .ops = &jump_ops, },
432 { .name = "jpo", .ops = &jump_ops, },
433 { .name = "jrcxz", .ops = &jump_ops, },
434 { .name = "js", .ops = &jump_ops, },
435 { .name = "jz", .ops = &jump_ops, },
436 { .name = "lea", .ops = &mov_ops, },
437 { .name = "lock", .ops = &lock_ops, },
438 { .name = "mov", .ops = &mov_ops, },
439 { .name = "movb", .ops = &mov_ops, },
440 { .name = "movdqa",.ops = &mov_ops, },
441 { .name = "movl", .ops = &mov_ops, },
442 { .name = "movq", .ops = &mov_ops, },
443 { .name = "movslq", .ops = &mov_ops, },
444 { .name = "movzbl", .ops = &mov_ops, },
445 { .name = "movzwl", .ops = &mov_ops, },
446 { .name = "nop", .ops = &nop_ops, },
447 { .name = "nopl", .ops = &nop_ops, },
448 { .name = "nopw", .ops = &nop_ops, },
449 { .name = "or", .ops = &mov_ops, },
450 { .name = "orl", .ops = &mov_ops, },
451 { .name = "test", .ops = &mov_ops, },
452 { .name = "testb", .ops = &mov_ops, },
453 { .name = "testl", .ops = &mov_ops, },
454 { .name = "xadd", .ops = &mov_ops, },
455 { .name = "xbeginl", .ops = &jump_ops, },
456 { .name = "xbeginq", .ops = &jump_ops, },
457 { .name = "retq", .ops = &ret_ops, },
458};
459
460static int ins__key_cmp(const void *name, const void *insp) 474static int ins__key_cmp(const void *name, const void *insp)
461{ 475{
462 const struct ins *ins = insp; 476 const struct ins *ins = insp;
@@ -472,24 +486,70 @@ static int ins__cmp(const void *a, const void *b)
472 return strcmp(ia->name, ib->name); 486 return strcmp(ia->name, ib->name);
473} 487}
474 488
475static void ins__sort(void) 489static void ins__sort(struct arch *arch)
476{ 490{
477 const int nmemb = ARRAY_SIZE(instructions); 491 const int nmemb = arch->nr_instructions;
478 492
479 qsort(instructions, nmemb, sizeof(struct ins), ins__cmp); 493 qsort(arch->instructions, nmemb, sizeof(struct ins), ins__cmp);
480} 494}
481 495
482static struct ins *ins__find(const char *name) 496static struct ins_ops *__ins__find(struct arch *arch, const char *name)
483{ 497{
484 const int nmemb = ARRAY_SIZE(instructions); 498 struct ins *ins;
499 const int nmemb = arch->nr_instructions;
500
501 if (!arch->sorted_instructions) {
502 ins__sort(arch);
503 arch->sorted_instructions = true;
504 }
505
506 ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
507 return ins ? ins->ops : NULL;
508}
509
510static struct ins_ops *ins__find(struct arch *arch, const char *name)
511{
512 struct ins_ops *ops = __ins__find(arch, name);
513
514 if (!ops && arch->associate_instruction_ops)
515 ops = arch->associate_instruction_ops(arch, name);
516
517 return ops;
518}
519
520static int arch__key_cmp(const void *name, const void *archp)
521{
522 const struct arch *arch = archp;
523
524 return strcmp(name, arch->name);
525}
526
527static int arch__cmp(const void *a, const void *b)
528{
529 const struct arch *aa = a;
530 const struct arch *ab = b;
531
532 return strcmp(aa->name, ab->name);
533}
534
535static void arch__sort(void)
536{
537 const int nmemb = ARRAY_SIZE(architectures);
538
539 qsort(architectures, nmemb, sizeof(struct arch), arch__cmp);
540}
541
542static struct arch *arch__find(const char *name)
543{
544 const int nmemb = ARRAY_SIZE(architectures);
485 static bool sorted; 545 static bool sorted;
486 546
487 if (!sorted) { 547 if (!sorted) {
488 ins__sort(); 548 arch__sort();
489 sorted = true; 549 sorted = true;
490 } 550 }
491 551
492 return bsearch(name, instructions, nmemb, sizeof(struct ins), ins__key_cmp); 552 return bsearch(name, architectures, nmemb, sizeof(struct arch), arch__key_cmp);
493} 553}
494 554
495int symbol__alloc_hist(struct symbol *sym) 555int symbol__alloc_hist(struct symbol *sym)
@@ -593,7 +653,8 @@ static int __symbol__inc_addr_samples(struct symbol *sym, struct map *map,
593 653
594 pr_debug3("%s: addr=%#" PRIx64 "\n", __func__, map->unmap_ip(map, addr)); 654 pr_debug3("%s: addr=%#" PRIx64 "\n", __func__, map->unmap_ip(map, addr));
595 655
596 if (addr < sym->start || addr >= sym->end) { 656 if ((addr < sym->start || addr >= sym->end) &&
657 (addr != sym->end || sym->start != sym->end)) {
597 pr_debug("%s(%d): ERANGE! sym->name=%s, start=%#" PRIx64 ", addr=%#" PRIx64 ", end=%#" PRIx64 "\n", 658 pr_debug("%s(%d): ERANGE! sym->name=%s, start=%#" PRIx64 ", addr=%#" PRIx64 ", end=%#" PRIx64 "\n",
598 __func__, __LINE__, sym->name, sym->start, addr, sym->end); 659 __func__, __LINE__, sym->name, sym->start, addr, sym->end);
599 return -ERANGE; 660 return -ERANGE;
@@ -709,21 +770,18 @@ int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 ip)
709 return symbol__inc_addr_samples(he->ms.sym, he->ms.map, evidx, ip); 770 return symbol__inc_addr_samples(he->ms.sym, he->ms.map, evidx, ip);
710} 771}
711 772
712static void disasm_line__init_ins(struct disasm_line *dl, struct map *map) 773static void disasm_line__init_ins(struct disasm_line *dl, struct arch *arch, struct map *map)
713{ 774{
714 dl->ins = ins__find(dl->name); 775 dl->ins.ops = ins__find(arch, dl->ins.name);
715
716 if (dl->ins == NULL)
717 return;
718 776
719 if (!dl->ins->ops) 777 if (!dl->ins.ops)
720 return; 778 return;
721 779
722 if (dl->ins->ops->parse && dl->ins->ops->parse(&dl->ops, map) < 0) 780 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, map) < 0)
723 dl->ins = NULL; 781 dl->ins.ops = NULL;
724} 782}
725 783
726static int disasm_line__parse(char *line, char **namep, char **rawp) 784static int disasm_line__parse(char *line, const char **namep, char **rawp)
727{ 785{
728 char *name = line, tmp; 786 char *name = line, tmp;
729 787
@@ -756,12 +814,14 @@ static int disasm_line__parse(char *line, char **namep, char **rawp)
756 return 0; 814 return 0;
757 815
758out_free_name: 816out_free_name:
759 zfree(namep); 817 free((void *)namep);
818 *namep = NULL;
760 return -1; 819 return -1;
761} 820}
762 821
763static struct disasm_line *disasm_line__new(s64 offset, char *line, 822static struct disasm_line *disasm_line__new(s64 offset, char *line,
764 size_t privsize, int line_nr, 823 size_t privsize, int line_nr,
824 struct arch *arch,
765 struct map *map) 825 struct map *map)
766{ 826{
767 struct disasm_line *dl = zalloc(sizeof(*dl) + privsize); 827 struct disasm_line *dl = zalloc(sizeof(*dl) + privsize);
@@ -774,10 +834,10 @@ static struct disasm_line *disasm_line__new(s64 offset, char *line,
774 goto out_delete; 834 goto out_delete;
775 835
776 if (offset != -1) { 836 if (offset != -1) {
777 if (disasm_line__parse(dl->line, &dl->name, &dl->ops.raw) < 0) 837 if (disasm_line__parse(dl->line, &dl->ins.name, &dl->ops.raw) < 0)
778 goto out_free_line; 838 goto out_free_line;
779 839
780 disasm_line__init_ins(dl, map); 840 disasm_line__init_ins(dl, arch, map);
781 } 841 }
782 } 842 }
783 843
@@ -793,20 +853,21 @@ out_delete:
793void disasm_line__free(struct disasm_line *dl) 853void disasm_line__free(struct disasm_line *dl)
794{ 854{
795 zfree(&dl->line); 855 zfree(&dl->line);
796 zfree(&dl->name); 856 if (dl->ins.ops && dl->ins.ops->free)
797 if (dl->ins && dl->ins->ops->free) 857 dl->ins.ops->free(&dl->ops);
798 dl->ins->ops->free(&dl->ops);
799 else 858 else
800 ins__delete(&dl->ops); 859 ins__delete(&dl->ops);
860 free((void *)dl->ins.name);
861 dl->ins.name = NULL;
801 free(dl); 862 free(dl);
802} 863}
803 864
804int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw) 865int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw)
805{ 866{
806 if (raw || !dl->ins) 867 if (raw || !dl->ins.ops)
807 return scnprintf(bf, size, "%-6.6s %s", dl->name, dl->ops.raw); 868 return scnprintf(bf, size, "%-6.6s %s", dl->ins.name, dl->ops.raw);
808 869
809 return ins__scnprintf(dl->ins, bf, size, &dl->ops); 870 return ins__scnprintf(&dl->ins, bf, size, &dl->ops);
810} 871}
811 872
812static void disasm__add(struct list_head *head, struct disasm_line *line) 873static void disasm__add(struct list_head *head, struct disasm_line *line)
@@ -1087,6 +1148,7 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
1087 * The ops.raw part will be parsed further according to type of the instruction. 1148 * The ops.raw part will be parsed further according to type of the instruction.
1088 */ 1149 */
1089static int symbol__parse_objdump_line(struct symbol *sym, struct map *map, 1150static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
1151 struct arch *arch,
1090 FILE *file, size_t privsize, 1152 FILE *file, size_t privsize,
1091 int *line_nr) 1153 int *line_nr)
1092{ 1154{
@@ -1149,19 +1211,21 @@ static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
1149 parsed_line = tmp2 + 1; 1211 parsed_line = tmp2 + 1;
1150 } 1212 }
1151 1213
1152 dl = disasm_line__new(offset, parsed_line, privsize, *line_nr, map); 1214 dl = disasm_line__new(offset, parsed_line, privsize, *line_nr, arch, map);
1153 free(line); 1215 free(line);
1154 (*line_nr)++; 1216 (*line_nr)++;
1155 1217
1156 if (dl == NULL) 1218 if (dl == NULL)
1157 return -1; 1219 return -1;
1158 1220
1159 if (dl->ops.target.offset == UINT64_MAX) 1221 if (!disasm_line__has_offset(dl)) {
1160 dl->ops.target.offset = dl->ops.target.addr - 1222 dl->ops.target.offset = dl->ops.target.addr -
1161 map__rip_2objdump(map, sym->start); 1223 map__rip_2objdump(map, sym->start);
1224 dl->ops.target.offset_avail = true;
1225 }
1162 1226
1163 /* kcore has no symbols, so add the call target name */ 1227 /* kcore has no symbols, so add the call target name */
1164 if (dl->ins && ins__is_call(dl->ins) && !dl->ops.target.name) { 1228 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.name) {
1165 struct addr_map_symbol target = { 1229 struct addr_map_symbol target = {
1166 .map = map, 1230 .map = map,
1167 .addr = dl->ops.target.addr, 1231 .addr = dl->ops.target.addr,
@@ -1191,8 +1255,8 @@ static void delete_last_nop(struct symbol *sym)
1191 while (!list_empty(list)) { 1255 while (!list_empty(list)) {
1192 dl = list_entry(list->prev, struct disasm_line, node); 1256 dl = list_entry(list->prev, struct disasm_line, node);
1193 1257
1194 if (dl->ins && dl->ins->ops) { 1258 if (dl->ins.ops) {
1195 if (dl->ins->ops != &nop_ops) 1259 if (dl->ins.ops != &nop_ops)
1196 return; 1260 return;
1197 } else { 1261 } else {
1198 if (!strstr(dl->line, " nop ") && 1262 if (!strstr(dl->line, " nop ") &&
@@ -1280,10 +1344,23 @@ fallback:
1280 return 0; 1344 return 0;
1281} 1345}
1282 1346
1283int symbol__disassemble(struct symbol *sym, struct map *map, size_t privsize) 1347static const char *annotate__norm_arch(const char *arch_name)
1348{
1349 struct utsname uts;
1350
1351 if (!arch_name) { /* Assume we are annotating locally. */
1352 if (uname(&uts) < 0)
1353 return NULL;
1354 arch_name = uts.machine;
1355 }
1356 return normalize_arch((char *)arch_name);
1357}
1358
1359int symbol__disassemble(struct symbol *sym, struct map *map, const char *arch_name, size_t privsize)
1284{ 1360{
1285 struct dso *dso = map->dso; 1361 struct dso *dso = map->dso;
1286 char command[PATH_MAX * 2]; 1362 char command[PATH_MAX * 2];
1363 struct arch *arch = NULL;
1287 FILE *file; 1364 FILE *file;
1288 char symfs_filename[PATH_MAX]; 1365 char symfs_filename[PATH_MAX];
1289 struct kcore_extract kce; 1366 struct kcore_extract kce;
@@ -1297,6 +1374,22 @@ int symbol__disassemble(struct symbol *sym, struct map *map, size_t privsize)
1297 if (err) 1374 if (err)
1298 return err; 1375 return err;
1299 1376
1377 arch_name = annotate__norm_arch(arch_name);
1378 if (!arch_name)
1379 return -1;
1380
1381 arch = arch__find(arch_name);
1382 if (arch == NULL)
1383 return -ENOTSUP;
1384
1385 if (arch->init) {
1386 err = arch->init(arch);
1387 if (err) {
1388 pr_err("%s: failed to initialize %s arch priv area\n", __func__, arch->name);
1389 return err;
1390 }
1391 }
1392
1300 pr_debug("%s: filename=%s, sym=%s, start=%#" PRIx64 ", end=%#" PRIx64 "\n", __func__, 1393 pr_debug("%s: filename=%s, sym=%s, start=%#" PRIx64 ", end=%#" PRIx64 "\n", __func__,
1301 symfs_filename, sym->name, map->unmap_ip(map, sym->start), 1394 symfs_filename, sym->name, map->unmap_ip(map, sym->start),
1302 map->unmap_ip(map, sym->end)); 1395 map->unmap_ip(map, sym->end));
@@ -1395,7 +1488,7 @@ int symbol__disassemble(struct symbol *sym, struct map *map, size_t privsize)
1395 1488
1396 nline = 0; 1489 nline = 0;
1397 while (!feof(file)) { 1490 while (!feof(file)) {
1398 if (symbol__parse_objdump_line(sym, map, file, privsize, 1491 if (symbol__parse_objdump_line(sym, map, arch, file, privsize,
1399 &lineno) < 0) 1492 &lineno) < 0)
1400 break; 1493 break;
1401 nline++; 1494 nline++;
@@ -1681,7 +1774,7 @@ int symbol__annotate_printf(struct symbol *sym, struct map *map,
1681 printf("%-*.*s----\n", 1774 printf("%-*.*s----\n",
1682 graph_dotted_len, graph_dotted_len, graph_dotted_line); 1775 graph_dotted_len, graph_dotted_len, graph_dotted_line);
1683 1776
1684 if (verbose) 1777 if (verbose > 0)
1685 symbol__annotate_hits(sym, evsel); 1778 symbol__annotate_hits(sym, evsel);
1686 1779
1687 list_for_each_entry(pos, &notes->src->source, node) { 1780 list_for_each_entry(pos, &notes->src->source, node) {
@@ -1764,7 +1857,7 @@ static size_t disasm_line__fprintf(struct disasm_line *dl, FILE *fp)
1764 if (dl->offset == -1) 1857 if (dl->offset == -1)
1765 return fprintf(fp, "%s\n", dl->line); 1858 return fprintf(fp, "%s\n", dl->line);
1766 1859
1767 printed = fprintf(fp, "%#" PRIx64 " %s", dl->offset, dl->name); 1860 printed = fprintf(fp, "%#" PRIx64 " %s", dl->offset, dl->ins.name);
1768 1861
1769 if (dl->ops.raw[0] != '\0') { 1862 if (dl->ops.raw[0] != '\0') {
1770 printed += fprintf(fp, "%.*s %s\n", 6 - (int)printed, " ", 1863 printed += fprintf(fp, "%.*s %s\n", 6 - (int)printed, " ",
@@ -1793,7 +1886,7 @@ int symbol__tty_annotate(struct symbol *sym, struct map *map,
1793 struct rb_root source_line = RB_ROOT; 1886 struct rb_root source_line = RB_ROOT;
1794 u64 len; 1887 u64 len;
1795 1888
1796 if (symbol__disassemble(sym, map, 0) < 0) 1889 if (symbol__disassemble(sym, map, perf_evsel__env_arch(evsel), 0) < 0)
1797 return -1; 1890 return -1;
1798 1891
1799 len = symbol__size(sym); 1892 len = symbol__size(sym);
diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
index 5bbcec173b82..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, struct map *map); 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);
@@ -156,7 +158,7 @@ int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 addr);
156int symbol__alloc_hist(struct symbol *sym); 158int symbol__alloc_hist(struct symbol *sym);
157void symbol__annotate_zero_histograms(struct symbol *sym); 159void symbol__annotate_zero_histograms(struct symbol *sym);
158 160
159int 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);
160 162
161enum symbol_disassemble_errno { 163enum symbol_disassemble_errno {
162 SYMBOL_ANNOTATE_ERRNO__SUCCESS = 0, 164 SYMBOL_ANNOTATE_ERRNO__SUCCESS = 0,
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 2b2c9b82f5ab..bc6bc7062eb4 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 enough 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,
@@ -659,13 +670,13 @@ int bpf__probe(struct bpf_object *obj)
659 670
660 err = convert_perf_probe_events(pev, 1); 671 err = convert_perf_probe_events(pev, 1);
661 if (err < 0) { 672 if (err < 0) {
662 pr_debug("bpf_probe: failed to convert perf probe events"); 673 pr_debug("bpf_probe: failed to convert perf probe events\n");
663 goto out; 674 goto out;
664 } 675 }
665 676
666 err = apply_perf_probe_events(pev, 1); 677 err = apply_perf_probe_events(pev, 1);
667 if (err < 0) { 678 if (err < 0) {
668 pr_debug("bpf_probe: failed to apply perf probe events"); 679 pr_debug("bpf_probe: failed to apply perf probe events\n");
669 goto out; 680 goto out;
670 } 681 }
671 682
@@ -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/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..aba953421a03 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -48,6 +48,8 @@ static int parse_callchain_mode(const char *value)
48 callchain_param.mode = CHAIN_FOLDED; 48 callchain_param.mode = CHAIN_FOLDED;
49 return 0; 49 return 0;
50 } 50 }
51
52 pr_err("Invalid callchain mode: %s\n", value);
51 return -1; 53 return -1;
52} 54}
53 55
@@ -63,6 +65,8 @@ static int parse_callchain_order(const char *value)
63 callchain_param.order_set = true; 65 callchain_param.order_set = true;
64 return 0; 66 return 0;
65 } 67 }
68
69 pr_err("Invalid callchain order: %s\n", value);
66 return -1; 70 return -1;
67} 71}
68 72
@@ -80,6 +84,8 @@ static int parse_callchain_sort_key(const char *value)
80 callchain_param.branch_callstack = 1; 84 callchain_param.branch_callstack = 1;
81 return 0; 85 return 0;
82 } 86 }
87
88 pr_err("Invalid callchain sort key: %s\n", value);
83 return -1; 89 return -1;
84} 90}
85 91
@@ -97,6 +103,8 @@ static int parse_callchain_value(const char *value)
97 callchain_param.value = CCVAL_COUNT; 103 callchain_param.value = CCVAL_COUNT;
98 return 0; 104 return 0;
99 } 105 }
106
107 pr_err("Invalid callchain config key: %s\n", value);
100 return -1; 108 return -1;
101} 109}
102 110
@@ -193,7 +201,6 @@ int perf_callchain_config(const char *var, const char *value)
193 201
194 if (!strcmp(var, "record-mode")) 202 if (!strcmp(var, "record-mode"))
195 return parse_callchain_record_opt(value, &callchain_param); 203 return parse_callchain_record_opt(value, &callchain_param);
196#ifdef HAVE_DWARF_UNWIND_SUPPORT
197 if (!strcmp(var, "dump-size")) { 204 if (!strcmp(var, "dump-size")) {
198 unsigned long size = 0; 205 unsigned long size = 0;
199 int ret; 206 int ret;
@@ -203,7 +210,6 @@ int perf_callchain_config(const char *var, const char *value)
203 210
204 return ret; 211 return ret;
205 } 212 }
206#endif
207 if (!strcmp(var, "print-type")) 213 if (!strcmp(var, "print-type"))
208 return parse_callchain_mode(value); 214 return parse_callchain_mode(value);
209 if (!strcmp(var, "order")) 215 if (!strcmp(var, "order"))
@@ -212,13 +218,17 @@ int perf_callchain_config(const char *var, const char *value)
212 return parse_callchain_sort_key(value); 218 return parse_callchain_sort_key(value);
213 if (!strcmp(var, "threshold")) { 219 if (!strcmp(var, "threshold")) {
214 callchain_param.min_percent = strtod(value, &endptr); 220 callchain_param.min_percent = strtod(value, &endptr);
215 if (value == endptr) 221 if (value == endptr) {
222 pr_err("Invalid callchain threshold: %s\n", value);
216 return -1; 223 return -1;
224 }
217 } 225 }
218 if (!strcmp(var, "print-limit")) { 226 if (!strcmp(var, "print-limit")) {
219 callchain_param.print_limit = strtod(value, &endptr); 227 callchain_param.print_limit = strtod(value, &endptr);
220 if (value == endptr) 228 if (value == endptr) {
229 pr_err("Invalid callchain print limit: %s\n", value);
221 return -1; 230 return -1;
231 }
222 } 232 }
223 233
224 return 0; 234 return 0;
@@ -439,7 +449,22 @@ fill_node(struct callchain_node *node, struct callchain_cursor *cursor)
439 } 449 }
440 call->ip = cursor_node->ip; 450 call->ip = cursor_node->ip;
441 call->ms.sym = cursor_node->sym; 451 call->ms.sym = cursor_node->sym;
442 call->ms.map = cursor_node->map; 452 call->ms.map = map__get(cursor_node->map);
453
454 if (cursor_node->branch) {
455 call->branch_count = 1;
456
457 if (cursor_node->branch_flags.predicted)
458 call->predicted_count = 1;
459
460 if (cursor_node->branch_flags.abort)
461 call->abort_count = 1;
462
463 call->cycles_count = cursor_node->branch_flags.cycles;
464 call->iter_count = cursor_node->nr_loop_iter;
465 call->samples_count = cursor_node->samples;
466 }
467
443 list_add_tail(&call->list, &node->val); 468 list_add_tail(&call->list, &node->val);
444 469
445 callchain_cursor_advance(cursor); 470 callchain_cursor_advance(cursor);
@@ -464,6 +489,7 @@ add_child(struct callchain_node *parent,
464 489
465 list_for_each_entry_safe(call, tmp, &new->val, list) { 490 list_for_each_entry_safe(call, tmp, &new->val, list) {
466 list_del(&call->list); 491 list_del(&call->list);
492 map__zput(call->ms.map);
467 free(call); 493 free(call);
468 } 494 }
469 free(new); 495 free(new);
@@ -499,8 +525,23 @@ static enum match_result match_chain(struct callchain_cursor_node *node,
499 right = node->ip; 525 right = node->ip;
500 } 526 }
501 527
502 if (left == right) 528 if (left == right) {
529 if (node->branch) {
530 cnode->branch_count++;
531
532 if (node->branch_flags.predicted)
533 cnode->predicted_count++;
534
535 if (node->branch_flags.abort)
536 cnode->abort_count++;
537
538 cnode->cycles_count += node->branch_flags.cycles;
539 cnode->iter_count += node->nr_loop_iter;
540 cnode->samples_count += node->samples;
541 }
542
503 return MATCH_EQ; 543 return MATCH_EQ;
544 }
504 545
505 return left > right ? MATCH_GT : MATCH_LT; 546 return left > right ? MATCH_GT : MATCH_LT;
506} 547}
@@ -730,8 +771,10 @@ merge_chain_branch(struct callchain_cursor *cursor,
730 771
731 list_for_each_entry_safe(list, next_list, &src->val, list) { 772 list_for_each_entry_safe(list, next_list, &src->val, list) {
732 callchain_cursor_append(cursor, list->ip, 773 callchain_cursor_append(cursor, list->ip,
733 list->ms.map, list->ms.sym); 774 list->ms.map, list->ms.sym,
775 false, NULL, 0, 0);
734 list_del(&list->list); 776 list_del(&list->list);
777 map__zput(list->ms.map);
735 free(list); 778 free(list);
736 } 779 }
737 780
@@ -767,7 +810,9 @@ int callchain_merge(struct callchain_cursor *cursor,
767} 810}
768 811
769int callchain_cursor_append(struct callchain_cursor *cursor, 812int callchain_cursor_append(struct callchain_cursor *cursor,
770 u64 ip, struct map *map, struct symbol *sym) 813 u64 ip, struct map *map, struct symbol *sym,
814 bool branch, struct branch_flags *flags,
815 int nr_loop_iter, int samples)
771{ 816{
772 struct callchain_cursor_node *node = *cursor->last; 817 struct callchain_cursor_node *node = *cursor->last;
773 818
@@ -780,8 +825,16 @@ int callchain_cursor_append(struct callchain_cursor *cursor,
780 } 825 }
781 826
782 node->ip = ip; 827 node->ip = ip;
783 node->map = map; 828 map__zput(node->map);
829 node->map = map__get(map);
784 node->sym = sym; 830 node->sym = sym;
831 node->branch = branch;
832 node->nr_loop_iter = nr_loop_iter;
833 node->samples = samples;
834
835 if (flags)
836 memcpy(&node->branch_flags, flags,
837 sizeof(struct branch_flags));
785 838
786 cursor->nr++; 839 cursor->nr++;
787 840
@@ -939,6 +992,163 @@ int callchain_node__fprintf_value(struct callchain_node *node,
939 return 0; 992 return 0;
940} 993}
941 994
995static void callchain_counts_value(struct callchain_node *node,
996 u64 *branch_count, u64 *predicted_count,
997 u64 *abort_count, u64 *cycles_count)
998{
999 struct callchain_list *clist;
1000
1001 list_for_each_entry(clist, &node->val, list) {
1002 if (branch_count)
1003 *branch_count += clist->branch_count;
1004
1005 if (predicted_count)
1006 *predicted_count += clist->predicted_count;
1007
1008 if (abort_count)
1009 *abort_count += clist->abort_count;
1010
1011 if (cycles_count)
1012 *cycles_count += clist->cycles_count;
1013 }
1014}
1015
1016static int callchain_node_branch_counts_cumul(struct callchain_node *node,
1017 u64 *branch_count,
1018 u64 *predicted_count,
1019 u64 *abort_count,
1020 u64 *cycles_count)
1021{
1022 struct callchain_node *child;
1023 struct rb_node *n;
1024
1025 n = rb_first(&node->rb_root_in);
1026 while (n) {
1027 child = rb_entry(n, struct callchain_node, rb_node_in);
1028 n = rb_next(n);
1029
1030 callchain_node_branch_counts_cumul(child, branch_count,
1031 predicted_count,
1032 abort_count,
1033 cycles_count);
1034
1035 callchain_counts_value(child, branch_count,
1036 predicted_count, abort_count,
1037 cycles_count);
1038 }
1039
1040 return 0;
1041}
1042
1043int callchain_branch_counts(struct callchain_root *root,
1044 u64 *branch_count, u64 *predicted_count,
1045 u64 *abort_count, u64 *cycles_count)
1046{
1047 if (branch_count)
1048 *branch_count = 0;
1049
1050 if (predicted_count)
1051 *predicted_count = 0;
1052
1053 if (abort_count)
1054 *abort_count = 0;
1055
1056 if (cycles_count)
1057 *cycles_count = 0;
1058
1059 return callchain_node_branch_counts_cumul(&root->node,
1060 branch_count,
1061 predicted_count,
1062 abort_count,
1063 cycles_count);
1064}
1065
1066static int callchain_counts_printf(FILE *fp, char *bf, int bfsize,
1067 u64 branch_count, u64 predicted_count,
1068 u64 abort_count, u64 cycles_count,
1069 u64 iter_count, u64 samples_count)
1070{
1071 double predicted_percent = 0.0;
1072 const char *null_str = "";
1073 char iter_str[32];
1074 char *str;
1075 u64 cycles = 0;
1076
1077 if (branch_count == 0) {
1078 if (fp)
1079 return fprintf(fp, " (calltrace)");
1080
1081 return scnprintf(bf, bfsize, " (calltrace)");
1082 }
1083
1084 if (iter_count && samples_count) {
1085 scnprintf(iter_str, sizeof(iter_str),
1086 ", iterations:%" PRId64 "",
1087 iter_count / samples_count);
1088 str = iter_str;
1089 } else
1090 str = (char *)null_str;
1091
1092 predicted_percent = predicted_count * 100.0 / branch_count;
1093 cycles = cycles_count / branch_count;
1094
1095 if ((predicted_percent >= 100.0) && (abort_count == 0)) {
1096 if (fp)
1097 return fprintf(fp, " (cycles:%" PRId64 "%s)",
1098 cycles, str);
1099
1100 return scnprintf(bf, bfsize, " (cycles:%" PRId64 "%s)",
1101 cycles, str);
1102 }
1103
1104 if ((predicted_percent < 100.0) && (abort_count == 0)) {
1105 if (fp)
1106 return fprintf(fp,
1107 " (predicted:%.1f%%, cycles:%" PRId64 "%s)",
1108 predicted_percent, cycles, str);
1109
1110 return scnprintf(bf, bfsize,
1111 " (predicted:%.1f%%, cycles:%" PRId64 "%s)",
1112 predicted_percent, cycles, str);
1113 }
1114
1115 if (fp)
1116 return fprintf(fp,
1117 " (predicted:%.1f%%, abort:%" PRId64 ", cycles:%" PRId64 "%s)",
1118 predicted_percent, abort_count, cycles, str);
1119
1120 return scnprintf(bf, bfsize,
1121 " (predicted:%.1f%%, abort:%" PRId64 ", cycles:%" PRId64 "%s)",
1122 predicted_percent, abort_count, cycles, str);
1123}
1124
1125int callchain_list_counts__printf_value(struct callchain_node *node,
1126 struct callchain_list *clist,
1127 FILE *fp, char *bf, int bfsize)
1128{
1129 u64 branch_count, predicted_count;
1130 u64 abort_count, cycles_count;
1131 u64 iter_count = 0, samples_count = 0;
1132
1133 branch_count = clist->branch_count;
1134 predicted_count = clist->predicted_count;
1135 abort_count = clist->abort_count;
1136 cycles_count = clist->cycles_count;
1137
1138 if (node) {
1139 struct callchain_list *call;
1140
1141 list_for_each_entry(call, &node->val, list) {
1142 iter_count += call->iter_count;
1143 samples_count += call->samples_count;
1144 }
1145 }
1146
1147 return callchain_counts_printf(fp, bf, bfsize, branch_count,
1148 predicted_count, abort_count,
1149 cycles_count, iter_count, samples_count);
1150}
1151
942static void free_callchain_node(struct callchain_node *node) 1152static void free_callchain_node(struct callchain_node *node)
943{ 1153{
944 struct callchain_list *list, *tmp; 1154 struct callchain_list *list, *tmp;
@@ -947,11 +1157,13 @@ static void free_callchain_node(struct callchain_node *node)
947 1157
948 list_for_each_entry_safe(list, tmp, &node->parent_val, list) { 1158 list_for_each_entry_safe(list, tmp, &node->parent_val, list) {
949 list_del(&list->list); 1159 list_del(&list->list);
1160 map__zput(list->ms.map);
950 free(list); 1161 free(list);
951 } 1162 }
952 1163
953 list_for_each_entry_safe(list, tmp, &node->val, list) { 1164 list_for_each_entry_safe(list, tmp, &node->val, list) {
954 list_del(&list->list); 1165 list_del(&list->list);
1166 map__zput(list->ms.map);
955 free(list); 1167 free(list);
956 } 1168 }
957 1169
@@ -1015,6 +1227,7 @@ int callchain_node__make_parent_list(struct callchain_node *node)
1015 goto out; 1227 goto out;
1016 *new = *chain; 1228 *new = *chain;
1017 new->has_children = false; 1229 new->has_children = false;
1230 map__get(new->ms.map);
1018 list_add_tail(&new->list, &head); 1231 list_add_tail(&new->list, &head);
1019 } 1232 }
1020 parent = parent->parent; 1233 parent = parent->parent;
@@ -1035,7 +1248,35 @@ int callchain_node__make_parent_list(struct callchain_node *node)
1035out: 1248out:
1036 list_for_each_entry_safe(chain, new, &head, list) { 1249 list_for_each_entry_safe(chain, new, &head, list) {
1037 list_del(&chain->list); 1250 list_del(&chain->list);
1251 map__zput(chain->ms.map);
1038 free(chain); 1252 free(chain);
1039 } 1253 }
1040 return -ENOMEM; 1254 return -ENOMEM;
1041} 1255}
1256
1257int callchain_cursor__copy(struct callchain_cursor *dst,
1258 struct callchain_cursor *src)
1259{
1260 int rc = 0;
1261
1262 callchain_cursor_reset(dst);
1263 callchain_cursor_commit(src);
1264
1265 while (true) {
1266 struct callchain_cursor_node *node;
1267
1268 node = callchain_cursor_current(src);
1269 if (node == NULL)
1270 break;
1271
1272 rc = callchain_cursor_append(dst, node->ip, node->map, node->sym,
1273 node->branch, &node->branch_flags,
1274 node->nr_loop_iter, node->samples);
1275 if (rc)
1276 break;
1277
1278 callchain_cursor_advance(src);
1279 }
1280
1281 return rc;
1282}
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index 13e75549c440..4f4b60f1558a 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -5,17 +5,14 @@
5#include <linux/list.h> 5#include <linux/list.h>
6#include <linux/rbtree.h> 6#include <linux/rbtree.h>
7#include "event.h" 7#include "event.h"
8#include "map.h"
8#include "symbol.h" 9#include "symbol.h"
9 10
10#define HELP_PAD "\t\t\t\t" 11#define HELP_PAD "\t\t\t\t"
11 12
12#define CALLCHAIN_HELP "setup and enables call-graph (stack chain/backtrace):\n\n" 13#define CALLCHAIN_HELP "setup and enables call-graph (stack chain/backtrace):\n\n"
13 14
14#ifdef HAVE_DWARF_UNWIND_SUPPORT
15# define RECORD_MODE_HELP HELP_PAD "record_mode:\tcall graph recording mode (fp|dwarf|lbr)\n" 15# 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 16
20#define RECORD_SIZE_HELP \ 17#define RECORD_SIZE_HELP \
21 HELP_PAD "record_size:\tif record_mode is 'dwarf', max size of stack recording (<bytes>)\n" \ 18 HELP_PAD "record_size:\tif record_mode is 'dwarf', max size of stack recording (<bytes>)\n" \
@@ -115,6 +112,12 @@ struct callchain_list {
115 bool unfolded; 112 bool unfolded;
116 bool has_children; 113 bool has_children;
117 }; 114 };
115 u64 branch_count;
116 u64 predicted_count;
117 u64 abort_count;
118 u64 cycles_count;
119 u64 iter_count;
120 u64 samples_count;
118 char *srcline; 121 char *srcline;
119 struct list_head list; 122 struct list_head list;
120}; 123};
@@ -129,6 +132,10 @@ struct callchain_cursor_node {
129 u64 ip; 132 u64 ip;
130 struct map *map; 133 struct map *map;
131 struct symbol *sym; 134 struct symbol *sym;
135 bool branch;
136 struct branch_flags branch_flags;
137 int nr_loop_iter;
138 int samples;
132 struct callchain_cursor_node *next; 139 struct callchain_cursor_node *next;
133}; 140};
134 141
@@ -178,12 +185,19 @@ int callchain_merge(struct callchain_cursor *cursor,
178 */ 185 */
179static inline void callchain_cursor_reset(struct callchain_cursor *cursor) 186static inline void callchain_cursor_reset(struct callchain_cursor *cursor)
180{ 187{
188 struct callchain_cursor_node *node;
189
181 cursor->nr = 0; 190 cursor->nr = 0;
182 cursor->last = &cursor->first; 191 cursor->last = &cursor->first;
192
193 for (node = cursor->first; node != NULL; node = node->next)
194 map__zput(node->map);
183} 195}
184 196
185int callchain_cursor_append(struct callchain_cursor *cursor, u64 ip, 197int callchain_cursor_append(struct callchain_cursor *cursor, u64 ip,
186 struct map *map, struct symbol *sym); 198 struct map *map, struct symbol *sym,
199 bool branch, struct branch_flags *flags,
200 int nr_loop_iter, int samples);
187 201
188/* Close a cursor writing session. Initialize for the reader */ 202/* Close a cursor writing session. Initialize for the reader */
189static inline void callchain_cursor_commit(struct callchain_cursor *cursor) 203static inline void callchain_cursor_commit(struct callchain_cursor *cursor)
@@ -208,6 +222,9 @@ static inline void callchain_cursor_advance(struct callchain_cursor *cursor)
208 cursor->pos++; 222 cursor->pos++;
209} 223}
210 224
225int callchain_cursor__copy(struct callchain_cursor *dst,
226 struct callchain_cursor *src);
227
211struct option; 228struct option;
212struct hist_entry; 229struct hist_entry;
213 230
@@ -261,8 +278,16 @@ char *callchain_node__scnprintf_value(struct callchain_node *node,
261int callchain_node__fprintf_value(struct callchain_node *node, 278int callchain_node__fprintf_value(struct callchain_node *node,
262 FILE *fp, u64 total); 279 FILE *fp, u64 total);
263 280
281int callchain_list_counts__printf_value(struct callchain_node *node,
282 struct callchain_list *clist,
283 FILE *fp, char *bf, int bfsize);
284
264void free_callchain(struct callchain_root *root); 285void free_callchain(struct callchain_root *root);
265void decay_callchain(struct callchain_root *root); 286void decay_callchain(struct callchain_root *root);
266int callchain_node__make_parent_list(struct callchain_node *node); 287int callchain_node__make_parent_list(struct callchain_node *node);
267 288
289int callchain_branch_counts(struct callchain_root *root,
290 u64 *branch_count, u64 *predicted_count,
291 u64 *abort_count, u64 *cycles_count);
292
268#endif /* __PERF_CALLCHAIN_H */ 293#endif /* __PERF_CALLCHAIN_H */
diff --git a/tools/perf/util/cgroup.c b/tools/perf/util/cgroup.c
index 8fdee24725a7..eafbf11442b2 100644
--- a/tools/perf/util/cgroup.c
+++ b/tools/perf/util/cgroup.c
@@ -12,8 +12,8 @@ cgroupfs_find_mountpoint(char *buf, size_t maxlen)
12{ 12{
13 FILE *fp; 13 FILE *fp;
14 char mountpoint[PATH_MAX + 1], tokens[PATH_MAX + 1], type[PATH_MAX + 1]; 14 char mountpoint[PATH_MAX + 1], tokens[PATH_MAX + 1], type[PATH_MAX + 1];
15 char path_v1[PATH_MAX + 1], path_v2[PATH_MAX + 2], *path;
15 char *token, *saved_ptr = NULL; 16 char *token, *saved_ptr = NULL;
16 int found = 0;
17 17
18 fp = fopen("/proc/mounts", "r"); 18 fp = fopen("/proc/mounts", "r");
19 if (!fp) 19 if (!fp)
@@ -24,31 +24,43 @@ cgroupfs_find_mountpoint(char *buf, size_t maxlen)
24 * and inspect every cgroupfs mount point to find one that has 24 * and inspect every cgroupfs mount point to find one that has
25 * perf_event subsystem 25 * perf_event subsystem
26 */ 26 */
27 path_v1[0] = '\0';
28 path_v2[0] = '\0';
29
27 while (fscanf(fp, "%*s %"STR(PATH_MAX)"s %"STR(PATH_MAX)"s %" 30 while (fscanf(fp, "%*s %"STR(PATH_MAX)"s %"STR(PATH_MAX)"s %"
28 STR(PATH_MAX)"s %*d %*d\n", 31 STR(PATH_MAX)"s %*d %*d\n",
29 mountpoint, type, tokens) == 3) { 32 mountpoint, type, tokens) == 3) {
30 33
31 if (!strcmp(type, "cgroup")) { 34 if (!path_v1[0] && !strcmp(type, "cgroup")) {
32 35
33 token = strtok_r(tokens, ",", &saved_ptr); 36 token = strtok_r(tokens, ",", &saved_ptr);
34 37
35 while (token != NULL) { 38 while (token != NULL) {
36 if (!strcmp(token, "perf_event")) { 39 if (!strcmp(token, "perf_event")) {
37 found = 1; 40 strcpy(path_v1, mountpoint);
38 break; 41 break;
39 } 42 }
40 token = strtok_r(NULL, ",", &saved_ptr); 43 token = strtok_r(NULL, ",", &saved_ptr);
41 } 44 }
42 } 45 }
43 if (found) 46
47 if (!path_v2[0] && !strcmp(type, "cgroup2"))
48 strcpy(path_v2, mountpoint);
49
50 if (path_v1[0] && path_v2[0])
44 break; 51 break;
45 } 52 }
46 fclose(fp); 53 fclose(fp);
47 if (!found) 54
55 if (path_v1[0])
56 path = path_v1;
57 else if (path_v2[0])
58 path = path_v2;
59 else
48 return -1; 60 return -1;
49 61
50 if (strlen(mountpoint) < maxlen) { 62 if (strlen(path) < maxlen) {
51 strcpy(buf, mountpoint); 63 strcpy(buf, path);
52 return 0; 64 return 0;
53 } 65 }
54 return -1; 66 return -1;
diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
index 18dae745034f..0c7d5a4975cd 100644
--- a/tools/perf/util/config.c
+++ b/tools/perf/util/config.c
@@ -386,8 +386,10 @@ static int perf_buildid_config(const char *var, const char *value)
386 if (!strcmp(var, "buildid.dir")) { 386 if (!strcmp(var, "buildid.dir")) {
387 const char *dir = perf_config_dirname(var, value); 387 const char *dir = perf_config_dirname(var, value);
388 388
389 if (!dir) 389 if (!dir) {
390 pr_err("Invalid buildid directory!\n");
390 return -1; 391 return -1;
392 }
391 strncpy(buildid_dir, dir, MAXPATHLEN-1); 393 strncpy(buildid_dir, dir, MAXPATHLEN-1);
392 buildid_dir[MAXPATHLEN-1] = '\0'; 394 buildid_dir[MAXPATHLEN-1] = '\0';
393 } 395 }
@@ -405,10 +407,9 @@ static int perf_default_core_config(const char *var __maybe_unused,
405static int perf_ui_config(const char *var, const char *value) 407static int perf_ui_config(const char *var, const char *value)
406{ 408{
407 /* Add other config variables here. */ 409 /* Add other config variables here. */
408 if (!strcmp(var, "ui.show-headers")) { 410 if (!strcmp(var, "ui.show-headers"))
409 symbol_conf.show_hist_headers = perf_config_bool(var, value); 411 symbol_conf.show_hist_headers = perf_config_bool(var, value);
410 return 0; 412
411 }
412 return 0; 413 return 0;
413} 414}
414 415
@@ -594,6 +595,19 @@ static int collect_config(const char *var, const char *value,
594 goto out_free; 595 goto out_free;
595 } 596 }
596 597
598 /* perf_config_set can contain both user and system config items.
599 * So we should know where each value is from.
600 * The classification would be needed when a particular config file
601 * is overwrited by setting feature i.e. set_config().
602 */
603 if (strcmp(config_file_name, perf_etc_perfconfig()) == 0) {
604 section->from_system_config = true;
605 item->from_system_config = true;
606 } else {
607 section->from_system_config = false;
608 item->from_system_config = false;
609 }
610
597 ret = set_value(item, value); 611 ret = set_value(item, value);
598 return ret; 612 return ret;
599 613
@@ -602,6 +616,13 @@ out_free:
602 return -1; 616 return -1;
603} 617}
604 618
619int perf_config_set__collect(struct perf_config_set *set, const char *file_name,
620 const char *var, const char *value)
621{
622 config_file_name = file_name;
623 return collect_config(var, value, set);
624}
625
605static int perf_config_set__init(struct perf_config_set *set) 626static int perf_config_set__init(struct perf_config_set *set)
606{ 627{
607 int ret = -1; 628 int ret = -1;
@@ -626,8 +647,13 @@ static int perf_config_set__init(struct perf_config_set *set)
626 goto out; 647 goto out;
627 } 648 }
628 649
629 if (stat(user_config, &st) < 0) 650 if (stat(user_config, &st) < 0) {
651 if (errno == ENOENT)
652 ret = 0;
630 goto out_free; 653 goto out_free;
654 }
655
656 ret = 0;
631 657
632 if (st.st_uid && (st.st_uid != geteuid())) { 658 if (st.st_uid && (st.st_uid != geteuid())) {
633 warning("File %s not owned by current user or root, " 659 warning("File %s not owned by current user or root, "
@@ -635,11 +661,8 @@ static int perf_config_set__init(struct perf_config_set *set)
635 goto out_free; 661 goto out_free;
636 } 662 }
637 663
638 if (!st.st_size) 664 if (st.st_size)
639 goto out_free; 665 ret = perf_config_from_file(collect_config, user_config, set);
640
641 ret = perf_config_from_file(collect_config, user_config, set);
642
643out_free: 666out_free:
644 free(user_config); 667 free(user_config);
645 } 668 }
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/cpumap.c b/tools/perf/util/cpumap.c
index 2c0b52264a46..8c7504939113 100644
--- a/tools/perf/util/cpumap.c
+++ b/tools/perf/util/cpumap.c
@@ -9,6 +9,7 @@
9#include "asm/bug.h" 9#include "asm/bug.h"
10 10
11static int max_cpu_num; 11static int max_cpu_num;
12static int max_present_cpu_num;
12static int max_node_num; 13static int max_node_num;
13static int *cpunode_map; 14static int *cpunode_map;
14 15
@@ -442,6 +443,7 @@ static void set_max_cpu_num(void)
442 443
443 /* set up default */ 444 /* set up default */
444 max_cpu_num = 4096; 445 max_cpu_num = 4096;
446 max_present_cpu_num = 4096;
445 447
446 mnt = sysfs__mountpoint(); 448 mnt = sysfs__mountpoint();
447 if (!mnt) 449 if (!mnt)
@@ -455,6 +457,17 @@ static void set_max_cpu_num(void)
455 } 457 }
456 458
457 ret = get_max_num(path, &max_cpu_num); 459 ret = get_max_num(path, &max_cpu_num);
460 if (ret)
461 goto out;
462
463 /* get the highest present cpu number for a sparse allocation */
464 ret = snprintf(path, PATH_MAX, "%s/devices/system/cpu/present", mnt);
465 if (ret == PATH_MAX) {
466 pr_err("sysfs path crossed PATH_MAX(%d) size\n", PATH_MAX);
467 goto out;
468 }
469
470 ret = get_max_num(path, &max_present_cpu_num);
458 471
459out: 472out:
460 if (ret) 473 if (ret)
@@ -505,6 +518,15 @@ int cpu__max_cpu(void)
505 return max_cpu_num; 518 return max_cpu_num;
506} 519}
507 520
521int cpu__max_present_cpu(void)
522{
523 if (unlikely(!max_present_cpu_num))
524 set_max_cpu_num();
525
526 return max_present_cpu_num;
527}
528
529
508int cpu__get_node(int cpu) 530int cpu__get_node(int cpu)
509{ 531{
510 if (unlikely(cpunode_map == NULL)) { 532 if (unlikely(cpunode_map == NULL)) {
diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h
index 06bd689f5989..1a0549af8f5c 100644
--- a/tools/perf/util/cpumap.h
+++ b/tools/perf/util/cpumap.h
@@ -62,6 +62,7 @@ int cpu__setup_cpunode_map(void);
62 62
63int cpu__max_node(void); 63int cpu__max_node(void);
64int cpu__max_cpu(void); 64int cpu__max_cpu(void);
65int cpu__max_present_cpu(void);
65int cpu__get_node(int cpu); 66int cpu__get_node(int cpu);
66 67
67int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res, 68int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res,
diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
index 7123f4de32cc..4e6cbc99f08e 100644
--- a/tools/perf/util/data-convert-bt.c
+++ b/tools/perf/util/data-convert-bt.c
@@ -1473,7 +1473,7 @@ int bt_convert__perf2ctf(const char *input, const char *path,
1473 }, 1473 },
1474 }; 1474 };
1475 struct ctf_writer *cw = &c.writer; 1475 struct ctf_writer *cw = &c.writer;
1476 int err = -1; 1476 int err;
1477 1477
1478 if (opts->all) { 1478 if (opts->all) {
1479 c.tool.comm = process_comm_event; 1479 c.tool.comm = process_comm_event;
@@ -1481,12 +1481,15 @@ int bt_convert__perf2ctf(const char *input, const char *path,
1481 c.tool.fork = process_fork_event; 1481 c.tool.fork = process_fork_event;
1482 } 1482 }
1483 1483
1484 perf_config(convert__config, &c); 1484 err = perf_config(convert__config, &c);
1485 if (err)
1486 return err;
1485 1487
1486 /* CTF writer */ 1488 /* CTF writer */
1487 if (ctf_writer__init(cw, path)) 1489 if (ctf_writer__init(cw, path))
1488 return -1; 1490 return -1;
1489 1491
1492 err = -1;
1490 /* perf.data session */ 1493 /* perf.data session */
1491 session = perf_session__new(&file, 0, &c.tool); 1494 session = perf_session__new(&file, 0, &c.tool);
1492 if (!session) 1495 if (!session)
diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c
index c1838b643108..03eb81f30d0d 100644
--- a/tools/perf/util/debug.c
+++ b/tools/perf/util/debug.c
@@ -203,11 +203,28 @@ int perf_debug_option(const char *str)
203 v = (v < 0) || (v > 10) ? 0 : v; 203 v = (v < 0) || (v > 10) ? 0 : v;
204 } 204 }
205 205
206 if (quiet)
207 v = -1;
208
206 *var->ptr = v; 209 *var->ptr = v;
207 free(s); 210 free(s);
208 return 0; 211 return 0;
209} 212}
210 213
214int perf_quiet_option(void)
215{
216 struct debug_variable *var = &debug_variables[0];
217
218 /* disable all debug messages */
219 while (var->name) {
220 *var->ptr = -1;
221 var++;
222 }
223
224 quiet = true;
225 return 0;
226}
227
211#define DEBUG_WRAPPER(__n, __l) \ 228#define DEBUG_WRAPPER(__n, __l) \
212static int pr_ ## __n ## _wrapper(const char *fmt, ...) \ 229static int pr_ ## __n ## _wrapper(const char *fmt, ...) \
213{ \ 230{ \
diff --git a/tools/perf/util/debug.h b/tools/perf/util/debug.h
index d242adc3d5a2..98832f5531d3 100644
--- a/tools/perf/util/debug.h
+++ b/tools/perf/util/debug.h
@@ -54,5 +54,6 @@ int veprintf(int level, int var, const char *fmt, va_list args);
54 54
55int perf_debug_option(const char *str); 55int perf_debug_option(const char *str);
56void perf_debug_setup(void); 56void perf_debug_setup(void);
57int perf_quiet_option(void);
57 58
58#endif /* __PERF_DEBUG_H */ 59#endif /* __PERF_DEBUG_H */
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
index d2c6cdd9d42b..d38b62a700ca 100644
--- a/tools/perf/util/dso.c
+++ b/tools/perf/util/dso.c
@@ -9,6 +9,13 @@
9#include "debug.h" 9#include "debug.h"
10#include "vdso.h" 10#include "vdso.h"
11 11
12static const char * const debuglink_paths[] = {
13 "%.0s%s",
14 "%s/%s",
15 "%s/.debug/%s",
16 "/usr/lib/debug%s/%s"
17};
18
12char dso__symtab_origin(const struct dso *dso) 19char dso__symtab_origin(const struct dso *dso)
13{ 20{
14 static const char origin[] = { 21 static const char origin[] = {
@@ -44,24 +51,43 @@ int dso__read_binary_type_filename(const struct dso *dso,
44 size_t len; 51 size_t len;
45 52
46 switch (type) { 53 switch (type) {
47 case DSO_BINARY_TYPE__DEBUGLINK: { 54 case DSO_BINARY_TYPE__DEBUGLINK:
48 char *debuglink; 55 {
56 const char *last_slash;
57 char dso_dir[PATH_MAX];
58 char symfile[PATH_MAX];
59 unsigned int i;
49 60
50 len = __symbol__join_symfs(filename, size, dso->long_name); 61 len = __symbol__join_symfs(filename, size, dso->long_name);
51 debuglink = filename + len; 62 last_slash = filename + len;
52 while (debuglink != filename && *debuglink != '/') 63 while (last_slash != filename && *last_slash != '/')
53 debuglink--; 64 last_slash--;
54 if (*debuglink == '/')
55 debuglink++;
56 65
57 ret = -1; 66 strncpy(dso_dir, filename, last_slash - filename);
58 if (!is_regular_file(filename)) 67 dso_dir[last_slash-filename] = '\0';
68
69 if (!is_regular_file(filename)) {
70 ret = -1;
71 break;
72 }
73
74 ret = filename__read_debuglink(filename, symfile, PATH_MAX);
75 if (ret)
59 break; 76 break;
60 77
61 ret = filename__read_debuglink(filename, debuglink, 78 /* Check predefined locations where debug file might reside */
62 size - (debuglink - filename)); 79 ret = -1;
80 for (i = 0; i < ARRAY_SIZE(debuglink_paths); i++) {
81 snprintf(filename, size,
82 debuglink_paths[i], dso_dir, symfile);
83 if (is_regular_file(filename)) {
84 ret = 0;
85 break;
86 }
63 } 87 }
88
64 break; 89 break;
90 }
65 case DSO_BINARY_TYPE__BUILD_ID_CACHE: 91 case DSO_BINARY_TYPE__BUILD_ID_CACHE:
66 if (dso__build_id_filename(dso, filename, size) == NULL) 92 if (dso__build_id_filename(dso, filename, size) == NULL)
67 ret = -1; 93 ret = -1;
@@ -925,7 +951,7 @@ static struct dso *__dso__findlink_by_longname(struct rb_root *root,
925 if (rc == 0) { 951 if (rc == 0) {
926 /* 952 /*
927 * In case the new DSO is a duplicate of an existing 953 * In case the new DSO is a duplicate of an existing
928 * one, print an one-time warning & put the new entry 954 * one, print a one-time warning & put the new entry
929 * at the end of the list of duplicates. 955 * at the end of the list of duplicates.
930 */ 956 */
931 if (!dso || (dso == this)) 957 if (!dso || (dso == this))
@@ -1032,7 +1058,7 @@ int dso__name_len(const struct dso *dso)
1032{ 1058{
1033 if (!dso) 1059 if (!dso)
1034 return strlen("[unknown]"); 1060 return strlen("[unknown]");
1035 if (verbose) 1061 if (verbose > 0)
1036 return dso->long_name_len; 1062 return dso->long_name_len;
1037 1063
1038 return dso->short_name_len; 1064 return dso->short_name_len;
diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c
index bb964e86b09d..075fc77286bf 100644
--- a/tools/perf/util/env.c
+++ b/tools/perf/util/env.c
@@ -66,7 +66,7 @@ int perf_env__read_cpu_topology_map(struct perf_env *env)
66 return 0; 66 return 0;
67 67
68 if (env->nr_cpus_avail == 0) 68 if (env->nr_cpus_avail == 0)
69 env->nr_cpus_avail = sysconf(_SC_NPROCESSORS_CONF); 69 env->nr_cpus_avail = cpu__max_present_cpu();
70 70
71 nr_cpus = env->nr_cpus_avail; 71 nr_cpus = env->nr_cpus_avail;
72 if (nr_cpus == -1) 72 if (nr_cpus == -1)
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 8ab0d7da956b..4ea7ce72ed9c 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -1,5 +1,5 @@
1#include <linux/types.h> 1#include <linux/types.h>
2#include <uapi/linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */ 2#include <linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */
3#include <api/fs/fs.h> 3#include <api/fs/fs.h>
4#include "event.h" 4#include "event.h"
5#include "debug.h" 5#include "debug.h"
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 d92e02006fb8..b601f2814a30 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1184,7 +1184,7 @@ unsigned long perf_event_mlock_kb_in_pages(void)
1184 return pages; 1184 return pages;
1185} 1185}
1186 1186
1187static size_t perf_evlist__mmap_size(unsigned long pages) 1187size_t perf_evlist__mmap_size(unsigned long pages)
1188{ 1188{
1189 if (pages == UINT_MAX) 1189 if (pages == UINT_MAX)
1190 pages = perf_event_mlock_kb_in_pages(); 1190 pages = perf_event_mlock_kb_in_pages();
@@ -1224,12 +1224,16 @@ static long parse_pages_arg(const char *str, unsigned long min,
1224 if (pages == 0 && min == 0) { 1224 if (pages == 0 && min == 0) {
1225 /* leave number of pages at 0 */ 1225 /* leave number of pages at 0 */
1226 } else if (!is_power_of_2(pages)) { 1226 } else if (!is_power_of_2(pages)) {
1227 char buf[100];
1228
1227 /* round pages up to next power of 2 */ 1229 /* round pages up to next power of 2 */
1228 pages = roundup_pow_of_two(pages); 1230 pages = roundup_pow_of_two(pages);
1229 if (!pages) 1231 if (!pages)
1230 return -EINVAL; 1232 return -EINVAL;
1231 pr_info("rounding mmap pages size to %lu bytes (%lu pages)\n", 1233
1232 pages * page_size, pages); 1234 unit_number__scnprintf(buf, sizeof(buf), pages * page_size);
1235 pr_info("rounding mmap pages size to %s (%lu pages)\n",
1236 buf, pages);
1233 } 1237 }
1234 1238
1235 if (pages > max) 1239 if (pages > max)
@@ -1797,7 +1801,7 @@ int perf_evlist__start_workload(struct perf_evlist *evlist)
1797 */ 1801 */
1798 ret = write(evlist->workload.cork_fd, &bf, 1); 1802 ret = write(evlist->workload.cork_fd, &bf, 1);
1799 if (ret < 0) 1803 if (ret < 0)
1800 perror("enable to write to pipe"); 1804 perror("unable to write to pipe");
1801 1805
1802 close(evlist->workload.cork_fd); 1806 close(evlist->workload.cork_fd);
1803 return ret; 1807 return ret;
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 4fd034f22d2f..389b9ccdf8c7 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -218,6 +218,8 @@ int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages,
218 bool overwrite); 218 bool overwrite);
219void perf_evlist__munmap(struct perf_evlist *evlist); 219void perf_evlist__munmap(struct perf_evlist *evlist);
220 220
221size_t perf_evlist__mmap_size(unsigned long pages);
222
221void perf_evlist__disable(struct perf_evlist *evlist); 223void perf_evlist__disable(struct perf_evlist *evlist);
222void perf_evlist__enable(struct perf_evlist *evlist); 224void perf_evlist__enable(struct perf_evlist *evlist);
223void perf_evlist__toggle_enable(struct perf_evlist *evlist); 225void perf_evlist__toggle_enable(struct perf_evlist *evlist);
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 8bc271141d9d..ac59710b79e0 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,6 +990,8 @@ 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)
@@ -1410,8 +1421,35 @@ static int __open_attr__fprintf(FILE *fp, const char *name, const char *val,
1410 return fprintf(fp, " %-32s %s\n", name, val); 1421 return fprintf(fp, " %-32s %s\n", name, val);
1411} 1422}
1412 1423
1413static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, 1424static bool ignore_missing_thread(struct perf_evsel *evsel,
1414 struct thread_map *threads) 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
1451int perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus,
1452 struct thread_map *threads)
1415{ 1453{
1416 int cpu, thread, nthreads; 1454 int cpu, thread, nthreads;
1417 unsigned long flags = PERF_FLAG_FD_CLOEXEC; 1455 unsigned long flags = PERF_FLAG_FD_CLOEXEC;
@@ -1421,6 +1459,30 @@ static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus,
1421 if (perf_missing_features.write_backward && evsel->attr.write_backward) 1459 if (perf_missing_features.write_backward && evsel->attr.write_backward)
1422 return -EINVAL; 1460 return -EINVAL;
1423 1461
1462 if (cpus == NULL) {
1463 static struct cpu_map *empty_cpu_map;
1464
1465 if (empty_cpu_map == NULL) {
1466 empty_cpu_map = cpu_map__dummy_new();
1467 if (empty_cpu_map == NULL)
1468 return -ENOMEM;
1469 }
1470
1471 cpus = empty_cpu_map;
1472 }
1473
1474 if (threads == NULL) {
1475 static struct thread_map *empty_thread_map;
1476
1477 if (empty_thread_map == NULL) {
1478 empty_thread_map = thread_map__new_by_tid(-1);
1479 if (empty_thread_map == NULL)
1480 return -ENOMEM;
1481 }
1482
1483 threads = empty_thread_map;
1484 }
1485
1424 if (evsel->system_wide) 1486 if (evsel->system_wide)
1425 nthreads = 1; 1487 nthreads = 1;
1426 else 1488 else
@@ -1465,29 +1527,47 @@ retry_sample_id:
1465 for (cpu = 0; cpu < cpus->nr; cpu++) { 1527 for (cpu = 0; cpu < cpus->nr; cpu++) {
1466 1528
1467 for (thread = 0; thread < nthreads; thread++) { 1529 for (thread = 0; thread < nthreads; thread++) {
1468 int group_fd; 1530 int fd, group_fd;
1469 1531
1470 if (!evsel->cgrp && !evsel->system_wide) 1532 if (!evsel->cgrp && !evsel->system_wide)
1471 pid = thread_map__pid(threads, thread); 1533 pid = thread_map__pid(threads, thread);
1472 1534
1473 group_fd = get_group_fd(evsel, cpu, thread); 1535 group_fd = get_group_fd(evsel, cpu, thread);
1474retry_open: 1536retry_open:
1475 pr_debug2("sys_perf_event_open: pid %d cpu %d group_fd %d flags %#lx\n", 1537 pr_debug2("sys_perf_event_open: pid %d cpu %d group_fd %d flags %#lx",
1476 pid, cpus->map[cpu], group_fd, flags); 1538 pid, cpus->map[cpu], group_fd, flags);
1477 1539
1478 FD(evsel, cpu, thread) = sys_perf_event_open(&evsel->attr, 1540 fd = sys_perf_event_open(&evsel->attr, pid, cpus->map[cpu],
1479 pid, 1541 group_fd, flags);
1480 cpus->map[cpu], 1542
1481 group_fd, flags); 1543 FD(evsel, cpu, thread) = fd;
1482 if (FD(evsel, cpu, thread) < 0) { 1544
1545 if (fd < 0) {
1483 err = -errno; 1546 err = -errno;
1484 pr_debug2("sys_perf_event_open failed, error %d\n", 1547
1548 if (ignore_missing_thread(evsel, threads, thread, err)) {
1549 /*
1550 * We just removed 1 thread, so take a step
1551 * back on thread index and lower the upper
1552 * nthreads limit.
1553 */
1554 nthreads--;
1555 thread--;
1556
1557 /* ... and pretend like nothing have happened. */
1558 err = 0;
1559 continue;
1560 }
1561
1562 pr_debug2("\nsys_perf_event_open failed, error %d\n",
1485 err); 1563 err);
1486 goto try_fallback; 1564 goto try_fallback;
1487 } 1565 }
1488 1566
1567 pr_debug2(" = %d\n", fd);
1568
1489 if (evsel->bpf_fd >= 0) { 1569 if (evsel->bpf_fd >= 0) {
1490 int evt_fd = FD(evsel, cpu, thread); 1570 int evt_fd = fd;
1491 int bpf_fd = evsel->bpf_fd; 1571 int bpf_fd = evsel->bpf_fd;
1492 1572
1493 err = ioctl(evt_fd, 1573 err = ioctl(evt_fd,
@@ -1599,46 +1679,16 @@ void perf_evsel__close(struct perf_evsel *evsel, int ncpus, int nthreads)
1599 perf_evsel__free_fd(evsel); 1679 perf_evsel__free_fd(evsel);
1600} 1680}
1601 1681
1602static struct {
1603 struct cpu_map map;
1604 int cpus[1];
1605} empty_cpu_map = {
1606 .map.nr = 1,
1607 .cpus = { -1, },
1608};
1609
1610static struct {
1611 struct thread_map map;
1612 int threads[1];
1613} empty_thread_map = {
1614 .map.nr = 1,
1615 .threads = { -1, },
1616};
1617
1618int perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus,
1619 struct thread_map *threads)
1620{
1621 if (cpus == NULL) {
1622 /* Work around old compiler warnings about strict aliasing */
1623 cpus = &empty_cpu_map.map;
1624 }
1625
1626 if (threads == NULL)
1627 threads = &empty_thread_map.map;
1628
1629 return __perf_evsel__open(evsel, cpus, threads);
1630}
1631
1632int perf_evsel__open_per_cpu(struct perf_evsel *evsel, 1682int perf_evsel__open_per_cpu(struct perf_evsel *evsel,
1633 struct cpu_map *cpus) 1683 struct cpu_map *cpus)
1634{ 1684{
1635 return __perf_evsel__open(evsel, cpus, &empty_thread_map.map); 1685 return perf_evsel__open(evsel, cpus, NULL);
1636} 1686}
1637 1687
1638int perf_evsel__open_per_thread(struct perf_evsel *evsel, 1688int perf_evsel__open_per_thread(struct perf_evsel *evsel,
1639 struct thread_map *threads) 1689 struct thread_map *threads)
1640{ 1690{
1641 return __perf_evsel__open(evsel, &empty_cpu_map.map, threads); 1691 return perf_evsel__open(evsel, NULL, threads);
1642} 1692}
1643 1693
1644static int perf_evsel__parse_id_sample(const struct perf_evsel *evsel, 1694static int perf_evsel__parse_id_sample(const struct perf_evsel *evsel,
@@ -2413,7 +2463,9 @@ int perf_evsel__open_strerror(struct perf_evsel *evsel, struct target *target,
2413 " -1: Allow use of (almost) all events by all users\n" 2463 " -1: Allow use of (almost) all events by all users\n"
2414 ">= 0: Disallow raw tracepoint access by users without CAP_IOC_LOCK\n" 2464 ">= 0: Disallow raw tracepoint access by users without CAP_IOC_LOCK\n"
2415 ">= 1: Disallow CPU event access by users without CAP_SYS_ADMIN\n" 2465 ">= 1: Disallow CPU event access by users without CAP_SYS_ADMIN\n"
2416 ">= 2: Disallow kernel profiling by users without CAP_SYS_ADMIN", 2466 ">= 2: Disallow kernel profiling by users without CAP_SYS_ADMIN\n\n"
2467 "To make this setting permanent, edit /etc/sysctl.conf too, e.g.:\n\n"
2468 " kernel.perf_event_paranoid = -1\n" ,
2417 target->system_wide ? "system-wide " : "", 2469 target->system_wide ? "system-wide " : "",
2418 perf_event_paranoid()); 2470 perf_event_paranoid());
2419 case ENOENT: 2471 case ENOENT:
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index b1503b0ecdff..06ef6f29efa1 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -47,6 +47,7 @@ enum {
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, 49 PERF_EVSEL__CONFIG_TERM_DRV_CFG,
50 PERF_EVSEL__CONFIG_TERM_BRANCH,
50 PERF_EVSEL__CONFIG_TERM_MAX, 51 PERF_EVSEL__CONFIG_TERM_MAX,
51}; 52};
52 53
@@ -63,6 +64,7 @@ struct perf_evsel_config_term {
63 int max_stack; 64 int max_stack;
64 bool inherit; 65 bool inherit;
65 bool overwrite; 66 bool overwrite;
67 char *branch;
66 } val; 68 } val;
67}; 69};
68 70
@@ -118,6 +120,7 @@ struct perf_evsel {
118 bool tracking; 120 bool tracking;
119 bool per_pkg; 121 bool per_pkg;
120 bool precise_max; 122 bool precise_max;
123 bool ignore_missing_thread;
121 /* parse modifier helper */ 124 /* parse modifier helper */
122 int exclude_GH; 125 int exclude_GH;
123 int nr_members; 126 int nr_members;
@@ -389,6 +392,8 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,
389#define EVSEL__PRINT_ONELINE (1<<4) 392#define EVSEL__PRINT_ONELINE (1<<4)
390#define EVSEL__PRINT_SRCLINE (1<<5) 393#define EVSEL__PRINT_SRCLINE (1<<5)
391#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)
392 397
393struct callchain_cursor; 398struct callchain_cursor;
394 399
diff --git a/tools/perf/util/evsel_fprintf.c b/tools/perf/util/evsel_fprintf.c
index 662a0a6182e7..4ef5184819a0 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,8 +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
128 if (node->sym && node->sym->ignore && print_skip_ignored)
129 goto next;
130
125 printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " "); 131 printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " ");
126 132
133 if (print_arrow && !first)
134 printed += fprintf(fp, " <-");
135
127 if (print_ip) 136 if (print_ip)
128 printed += fprintf(fp, "%c%16" PRIx64, s, node->ip); 137 printed += fprintf(fp, "%c%16" PRIx64, s, node->ip);
129 138
@@ -137,7 +146,8 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
137 146
138 if (print_symoffset) { 147 if (print_symoffset) {
139 printed += __symbol__fprintf_symname_offs(node->sym, &node_al, 148 printed += __symbol__fprintf_symname_offs(node->sym, &node_al,
140 print_unknown_as_addr, fp); 149 print_unknown_as_addr,
150 true, fp);
141 } else { 151 } else {
142 printed += __symbol__fprintf_symname(node->sym, &node_al, 152 printed += __symbol__fprintf_symname(node->sym, &node_al,
143 print_unknown_as_addr, fp); 153 print_unknown_as_addr, fp);
@@ -156,6 +166,15 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
156 if (!print_oneline) 166 if (!print_oneline)
157 printed += fprintf(fp, "\n"); 167 printed += fprintf(fp, "\n");
158 168
169 if (symbol_conf.bt_stop_list &&
170 node->sym &&
171 strlist__has_entry(symbol_conf.bt_stop_list,
172 node->sym->name)) {
173 break;
174 }
175
176 first = false;
177next:
159 callchain_cursor_advance(cursor); 178 callchain_cursor_advance(cursor);
160 } 179 }
161 } 180 }
@@ -188,7 +207,8 @@ int sample__fprintf_sym(struct perf_sample *sample, struct addr_location *al,
188 printed += fprintf(fp, " "); 207 printed += fprintf(fp, " ");
189 if (print_symoffset) { 208 if (print_symoffset) {
190 printed += __symbol__fprintf_symname_offs(al->sym, al, 209 printed += __symbol__fprintf_symname_offs(al->sym, al,
191 print_unknown_as_addr, fp); 210 print_unknown_as_addr,
211 true, fp);
192 } else { 212 } else {
193 printed += __symbol__fprintf_symname(al->sym, al, 213 printed += __symbol__fprintf_symname(al->sym, al,
194 print_unknown_as_addr, fp); 214 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 2f3eded54b0c..05714d548584 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -41,6 +41,8 @@ static const u64 __perf_magic2_sw = 0x50455246494c4532ULL;
41 41
42#define PERF_MAGIC __perf_magic2 42#define PERF_MAGIC __perf_magic2
43 43
44const char perf_version_string[] = PERF_VERSION;
45
44struct perf_file_attr { 46struct perf_file_attr {
45 struct perf_event_attr attr; 47 struct perf_event_attr attr;
46 struct perf_file_section ids; 48 struct perf_file_section ids;
@@ -293,11 +295,7 @@ static int write_nrcpus(int fd, struct perf_header *h __maybe_unused,
293 u32 nrc, nra; 295 u32 nrc, nra;
294 int ret; 296 int ret;
295 297
296 nr = sysconf(_SC_NPROCESSORS_CONF); 298 nrc = cpu__max_present_cpu();
297 if (nr < 0)
298 return -1;
299
300 nrc = (u32)(nr & UINT_MAX);
301 299
302 nr = sysconf(_SC_NPROCESSORS_ONLN); 300 nr = sysconf(_SC_NPROCESSORS_ONLN);
303 if (nr < 0) 301 if (nr < 0)
@@ -503,24 +501,29 @@ static void free_cpu_topo(struct cpu_topo *tp)
503 501
504static struct cpu_topo *build_cpu_topology(void) 502static struct cpu_topo *build_cpu_topology(void)
505{ 503{
506 struct cpu_topo *tp; 504 struct cpu_topo *tp = NULL;
507 void *addr; 505 void *addr;
508 u32 nr, i; 506 u32 nr, i;
509 size_t sz; 507 size_t sz;
510 long ncpus; 508 long ncpus;
511 int ret = -1; 509 int ret = -1;
510 struct cpu_map *map;
512 511
513 ncpus = sysconf(_SC_NPROCESSORS_CONF); 512 ncpus = cpu__max_present_cpu();
514 if (ncpus < 0) 513
514 /* build online CPU map */
515 map = cpu_map__new(NULL);
516 if (map == NULL) {
517 pr_debug("failed to get system cpumap\n");
515 return NULL; 518 return NULL;
519 }
516 520
517 nr = (u32)(ncpus & UINT_MAX); 521 nr = (u32)(ncpus & UINT_MAX);
518 522
519 sz = nr * sizeof(char *); 523 sz = nr * sizeof(char *);
520
521 addr = calloc(1, sizeof(*tp) + 2 * sz); 524 addr = calloc(1, sizeof(*tp) + 2 * sz);
522 if (!addr) 525 if (!addr)
523 return NULL; 526 goto out_free;
524 527
525 tp = addr; 528 tp = addr;
526 tp->cpu_nr = nr; 529 tp->cpu_nr = nr;
@@ -530,10 +533,16 @@ static struct cpu_topo *build_cpu_topology(void)
530 tp->thread_siblings = addr; 533 tp->thread_siblings = addr;
531 534
532 for (i = 0; i < nr; i++) { 535 for (i = 0; i < nr; i++) {
536 if (!cpu_map__has(map, i))
537 continue;
538
533 ret = build_cpu_topo(tp, i); 539 ret = build_cpu_topo(tp, i);
534 if (ret < 0) 540 if (ret < 0)
535 break; 541 break;
536 } 542 }
543
544out_free:
545 cpu_map__put(map);
537 if (ret) { 546 if (ret) {
538 free_cpu_topo(tp); 547 free_cpu_topo(tp);
539 tp = NULL; 548 tp = NULL;
@@ -1124,7 +1133,7 @@ static void print_cpu_topology(struct perf_header *ph, int fd __maybe_unused,
1124{ 1133{
1125 int nr, i; 1134 int nr, i;
1126 char *str; 1135 char *str;
1127 int cpu_nr = ph->env.nr_cpus_online; 1136 int cpu_nr = ph->env.nr_cpus_avail;
1128 1137
1129 nr = ph->env.nr_sibling_cores; 1138 nr = ph->env.nr_sibling_cores;
1130 str = ph->env.sibling_cores; 1139 str = ph->env.sibling_cores;
@@ -1779,7 +1788,7 @@ static int process_cpu_topology(struct perf_file_section *section,
1779 u32 nr, i; 1788 u32 nr, i;
1780 char *str; 1789 char *str;
1781 struct strbuf sb; 1790 struct strbuf sb;
1782 int cpu_nr = ph->env.nr_cpus_online; 1791 int cpu_nr = ph->env.nr_cpus_avail;
1783 u64 size = 0; 1792 u64 size = 0;
1784 1793
1785 ph->env.cpu = calloc(cpu_nr, sizeof(*ph->env.cpu)); 1794 ph->env.cpu = calloc(cpu_nr, sizeof(*ph->env.cpu));
@@ -1860,7 +1869,7 @@ static int process_cpu_topology(struct perf_file_section *section,
1860 if (ph->needs_swap) 1869 if (ph->needs_swap)
1861 nr = bswap_32(nr); 1870 nr = bswap_32(nr);
1862 1871
1863 if (nr > (u32)cpu_nr) { 1872 if (nr != (u32)-1 && nr > (u32)cpu_nr) {
1864 pr_debug("socket_id number is too big." 1873 pr_debug("socket_id number is too big."
1865 "You may need to upgrade the perf tool.\n"); 1874 "You may need to upgrade the perf tool.\n");
1866 goto free_cpu; 1875 goto free_cpu;
@@ -2250,11 +2259,28 @@ int perf_header__fprintf_info(struct perf_session *session, FILE *fp, bool full)
2250 struct header_print_data hd; 2259 struct header_print_data hd;
2251 struct perf_header *header = &session->header; 2260 struct perf_header *header = &session->header;
2252 int fd = perf_data_file__fd(session->file); 2261 int fd = perf_data_file__fd(session->file);
2262 struct stat st;
2263 int ret, bit;
2264
2253 hd.fp = fp; 2265 hd.fp = fp;
2254 hd.full = full; 2266 hd.full = full;
2255 2267
2268 ret = fstat(fd, &st);
2269 if (ret == -1)
2270 return -1;
2271
2272 fprintf(fp, "# captured on: %s", ctime(&st.st_ctime));
2273
2256 perf_header__process_sections(header, fd, &hd, 2274 perf_header__process_sections(header, fd, &hd,
2257 perf_file_section__fprintf_info); 2275 perf_file_section__fprintf_info);
2276
2277 fprintf(fp, "# missing features: ");
2278 for_each_clear_bit(bit, header->adds_features, HEADER_LAST_FEATURE) {
2279 if (bit)
2280 fprintf(fp, "%s ", feat_ops[bit].name);
2281 }
2282
2283 fprintf(fp, "\n");
2258 return 0; 2284 return 0;
2259} 2285}
2260 2286
@@ -2273,7 +2299,7 @@ static int do_write_feat(int fd, struct perf_header *h, int type,
2273 2299
2274 err = feat_ops[type].write(fd, h, evlist); 2300 err = feat_ops[type].write(fd, h, evlist);
2275 if (err < 0) { 2301 if (err < 0) {
2276 pr_debug("failed to write feature %d\n", type); 2302 pr_debug("failed to write feature %s\n", feat_ops[type].name);
2277 2303
2278 /* undo anything written */ 2304 /* undo anything written */
2279 lseek(fd, (*p)->offset, SEEK_SET); 2305 lseek(fd, (*p)->offset, SEEK_SET);
@@ -2784,8 +2810,10 @@ static int perf_evsel__prepare_tracepoint_event(struct perf_evsel *evsel,
2784 } 2810 }
2785 2811
2786 event = pevent_find_event(pevent, evsel->attr.config); 2812 event = pevent_find_event(pevent, evsel->attr.config);
2787 if (event == NULL) 2813 if (event == NULL) {
2814 pr_debug("cannot find event format for %d\n", (int)evsel->attr.config);
2788 return -1; 2815 return -1;
2816 }
2789 2817
2790 if (!evsel->name) { 2818 if (!evsel->name) {
2791 snprintf(bf, sizeof(bf), "%s:%s", event->system, event->name); 2819 snprintf(bf, sizeof(bf), "%s:%s", event->system, event->name);
@@ -3184,6 +3212,7 @@ int perf_event__process_event_update(struct perf_tool *tool __maybe_unused,
3184 case PERF_EVENT_UPDATE__SCALE: 3212 case PERF_EVENT_UPDATE__SCALE:
3185 ev_scale = (struct event_update_event_scale *) ev->data; 3213 ev_scale = (struct event_update_event_scale *) ev->data;
3186 evsel->scale = ev_scale->scale; 3214 evsel->scale = ev_scale->scale;
3215 break;
3187 case PERF_EVENT_UPDATE__CPUS: 3216 case PERF_EVENT_UPDATE__CPUS:
3188 ev_cpus = (struct event_update_event_cpus *) ev->data; 3217 ev_cpus = (struct event_update_event_cpus *) ev->data;
3189 3218
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index a69f027368ef..eaf72a938fb4 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -1,6 +1,7 @@
1#include "util.h" 1#include "util.h"
2#include "build-id.h" 2#include "build-id.h"
3#include "hist.h" 3#include "hist.h"
4#include "map.h"
4#include "session.h" 5#include "session.h"
5#include "sort.h" 6#include "sort.h"
6#include "evlist.h" 7#include "evlist.h"
@@ -68,7 +69,7 @@ void hists__calc_col_len(struct hists *hists, struct hist_entry *h)
68 */ 69 */
69 if (h->ms.sym) { 70 if (h->ms.sym) {
70 symlen = h->ms.sym->namelen + 4; 71 symlen = h->ms.sym->namelen + 4;
71 if (verbose) 72 if (verbose > 0)
72 symlen += BITS_PER_LONG / 4 + 2 + 3; 73 symlen += BITS_PER_LONG / 4 + 2 + 3;
73 hists__new_col_len(hists, HISTC_SYMBOL, symlen); 74 hists__new_col_len(hists, HISTC_SYMBOL, symlen);
74 } else { 75 } else {
@@ -92,7 +93,7 @@ void hists__calc_col_len(struct hists *hists, struct hist_entry *h)
92 if (h->branch_info) { 93 if (h->branch_info) {
93 if (h->branch_info->from.sym) { 94 if (h->branch_info->from.sym) {
94 symlen = (int)h->branch_info->from.sym->namelen + 4; 95 symlen = (int)h->branch_info->from.sym->namelen + 4;
95 if (verbose) 96 if (verbose > 0)
96 symlen += BITS_PER_LONG / 4 + 2 + 3; 97 symlen += BITS_PER_LONG / 4 + 2 + 3;
97 hists__new_col_len(hists, HISTC_SYMBOL_FROM, symlen); 98 hists__new_col_len(hists, HISTC_SYMBOL_FROM, symlen);
98 99
@@ -106,7 +107,7 @@ void hists__calc_col_len(struct hists *hists, struct hist_entry *h)
106 107
107 if (h->branch_info->to.sym) { 108 if (h->branch_info->to.sym) {
108 symlen = (int)h->branch_info->to.sym->namelen + 4; 109 symlen = (int)h->branch_info->to.sym->namelen + 4;
109 if (verbose) 110 if (verbose > 0)
110 symlen += BITS_PER_LONG / 4 + 2 + 3; 111 symlen += BITS_PER_LONG / 4 + 2 + 3;
111 hists__new_col_len(hists, HISTC_SYMBOL_TO, symlen); 112 hists__new_col_len(hists, HISTC_SYMBOL_TO, symlen);
112 113
@@ -1019,6 +1020,10 @@ int hist_entry_iter__add(struct hist_entry_iter *iter, struct addr_location *al,
1019 int max_stack_depth, void *arg) 1020 int max_stack_depth, void *arg)
1020{ 1021{
1021 int err, err2; 1022 int err, err2;
1023 struct map *alm = NULL;
1024
1025 if (al && al->map)
1026 alm = map__get(al->map);
1022 1027
1023 err = sample__resolve_callchain(iter->sample, &callchain_cursor, &iter->parent, 1028 err = sample__resolve_callchain(iter->sample, &callchain_cursor, &iter->parent,
1024 iter->evsel, al, max_stack_depth); 1029 iter->evsel, al, max_stack_depth);
@@ -1058,6 +1063,8 @@ out:
1058 if (!err) 1063 if (!err)
1059 err = err2; 1064 err = err2;
1060 1065
1066 map__put(alm);
1067
1061 return err; 1068 return err;
1062} 1069}
1063 1070
@@ -1195,6 +1202,7 @@ static void hist_entry__check_and_remove_filter(struct hist_entry *he,
1195 case HIST_FILTER__GUEST: 1202 case HIST_FILTER__GUEST:
1196 case HIST_FILTER__HOST: 1203 case HIST_FILTER__HOST:
1197 case HIST_FILTER__SOCKET: 1204 case HIST_FILTER__SOCKET:
1205 case HIST_FILTER__C2C:
1198 default: 1206 default:
1199 return; 1207 return;
1200 } 1208 }
@@ -2438,8 +2446,10 @@ int parse_filter_percentage(const struct option *opt __maybe_unused,
2438 symbol_conf.filter_relative = true; 2446 symbol_conf.filter_relative = true;
2439 else if (!strcmp(arg, "absolute")) 2447 else if (!strcmp(arg, "absolute"))
2440 symbol_conf.filter_relative = false; 2448 symbol_conf.filter_relative = false;
2441 else 2449 else {
2450 pr_debug("Invalud percentage: %s\n", arg);
2442 return -1; 2451 return -1;
2452 }
2443 2453
2444 return 0; 2454 return 0;
2445} 2455}
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 9928fed8bc59..28c216e3d5b7 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 {
@@ -282,6 +283,8 @@ void perf_hpp_list__column_register(struct perf_hpp_list *list,
282 struct perf_hpp_fmt *format); 283 struct perf_hpp_fmt *format);
283void perf_hpp_list__register_sort_field(struct perf_hpp_list *list, 284void perf_hpp_list__register_sort_field(struct perf_hpp_list *list,
284 struct perf_hpp_fmt *format); 285 struct perf_hpp_fmt *format);
286void perf_hpp_list__prepend_sort_field(struct perf_hpp_list *list,
287 struct perf_hpp_fmt *format);
285 288
286static inline void perf_hpp__column_register(struct perf_hpp_fmt *format) 289static inline void perf_hpp__column_register(struct perf_hpp_fmt *format)
287{ 290{
@@ -293,6 +296,11 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
293 perf_hpp_list__register_sort_field(&perf_hpp_list, format); 296 perf_hpp_list__register_sort_field(&perf_hpp_list, format);
294} 297}
295 298
299static inline void perf_hpp__prepend_sort_field(struct perf_hpp_fmt *format)
300{
301 perf_hpp_list__prepend_sort_field(&perf_hpp_list, format);
302}
303
296#define perf_hpp_list__for_each_format(_list, format) \ 304#define perf_hpp_list__for_each_format(_list, format) \
297 list_for_each_entry(format, &(_list)->fields, list) 305 list_for_each_entry(format, &(_list)->fields, list)
298 306
diff --git a/tools/perf/util/intel-bts.c b/tools/perf/util/intel-bts.c
index f545ec1e758a..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,7 +339,8 @@ 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
diff --git a/tools/perf/util/intel-pt-decoder/Build b/tools/perf/util/intel-pt-decoder/Build
index 9b742ea8bfe8..7aca5d6d7e1f 100644
--- a/tools/perf/util/intel-pt-decoder/Build
+++ b/tools/perf/util/intel-pt-decoder/Build
@@ -23,4 +23,8 @@ $(OUTPUT)util/intel-pt-decoder/intel-pt-insn-decoder.o: util/intel-pt-decoder/in
23 $(call rule_mkdir) 23 $(call rule_mkdir)
24 $(call if_changed_dep,cc_o_c) 24 $(call if_changed_dep,cc_o_c)
25 25
26CFLAGS_intel-pt-insn-decoder.o += -I$(OUTPUT)util/intel-pt-decoder -Wno-override-init 26CFLAGS_intel-pt-insn-decoder.o += -I$(OUTPUT)util/intel-pt-decoder
27
28ifneq ($(CC), clang)
29 CFLAGS_intel-pt-insn-decoder.o += -Wno-override-init
30endif
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 16c06d3ae577..7cf7f7aca4d2 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
@@ -22,6 +22,7 @@
22#include <errno.h> 22#include <errno.h>
23#include <stdint.h> 23#include <stdint.h>
24#include <inttypes.h> 24#include <inttypes.h>
25#include <linux/compiler.h>
25 26
26#include "../cache.h" 27#include "../cache.h"
27#include "../util.h" 28#include "../util.h"
@@ -980,6 +981,8 @@ out:
980out_no_progress: 981out_no_progress:
981 decoder->state.insn_op = intel_pt_insn->op; 982 decoder->state.insn_op = intel_pt_insn->op;
982 decoder->state.insn_len = intel_pt_insn->length; 983 decoder->state.insn_len = intel_pt_insn->length;
984 memcpy(decoder->state.insn, intel_pt_insn->buf,
985 INTEL_PT_INSN_BUF_SZ);
983 986
984 if (decoder->tx_flags & INTEL_PT_IN_TX) 987 if (decoder->tx_flags & INTEL_PT_IN_TX)
985 decoder->state.flags |= INTEL_PT_IN_TX; 988 decoder->state.flags |= INTEL_PT_IN_TX;
@@ -1744,6 +1747,7 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
1744 switch (decoder->packet.type) { 1747 switch (decoder->packet.type) {
1745 case INTEL_PT_TIP_PGD: 1748 case INTEL_PT_TIP_PGD:
1746 decoder->continuous_period = false; 1749 decoder->continuous_period = false;
1750 __fallthrough;
1747 case INTEL_PT_TIP_PGE: 1751 case INTEL_PT_TIP_PGE:
1748 case INTEL_PT_TIP: 1752 case INTEL_PT_TIP:
1749 intel_pt_log("ERROR: Unexpected packet\n"); 1753 intel_pt_log("ERROR: Unexpected packet\n");
@@ -1797,6 +1801,8 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
1797 decoder->pge = false; 1801 decoder->pge = false;
1798 decoder->continuous_period = false; 1802 decoder->continuous_period = false;
1799 intel_pt_clear_tx_flags(decoder); 1803 intel_pt_clear_tx_flags(decoder);
1804 __fallthrough;
1805
1800 case INTEL_PT_TNT: 1806 case INTEL_PT_TNT:
1801 decoder->have_tma = false; 1807 decoder->have_tma = false;
1802 intel_pt_log("ERROR: Unexpected packet\n"); 1808 intel_pt_log("ERROR: Unexpected packet\n");
@@ -1837,6 +1843,7 @@ static int intel_pt_walk_to_ip(struct intel_pt_decoder *decoder)
1837 switch (decoder->packet.type) { 1843 switch (decoder->packet.type) {
1838 case INTEL_PT_TIP_PGD: 1844 case INTEL_PT_TIP_PGD:
1839 decoder->continuous_period = false; 1845 decoder->continuous_period = false;
1846 __fallthrough;
1840 case INTEL_PT_TIP_PGE: 1847 case INTEL_PT_TIP_PGE:
1841 case INTEL_PT_TIP: 1848 case INTEL_PT_TIP:
1842 decoder->pge = decoder->packet.type != INTEL_PT_TIP_PGD; 1849 decoder->pge = decoder->packet.type != INTEL_PT_TIP_PGD;
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 89399985fa4d..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;
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..4f3c758d875d 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,7 +27,11 @@
27 27
28#include "intel-pt-insn-decoder.h" 28#include "intel-pt-insn-decoder.h"
29 29
30/* Based on branch_type() from perf_event_intel_lbr.c */ 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
34/* Based on branch_type() from arch/x86/events/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)
33{ 37{
@@ -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-decoder/intel-pt-pkt-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c
index 4f7b32020487..7528ae4f7e28 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c
@@ -17,6 +17,7 @@
17#include <string.h> 17#include <string.h>
18#include <endian.h> 18#include <endian.h>
19#include <byteswap.h> 19#include <byteswap.h>
20#include <linux/compiler.h>
20 21
21#include "intel-pt-pkt-decoder.h" 22#include "intel-pt-pkt-decoder.h"
22 23
@@ -498,6 +499,7 @@ int intel_pt_pkt_desc(const struct intel_pt_pkt *packet, char *buf,
498 case INTEL_PT_FUP: 499 case INTEL_PT_FUP:
499 if (!(packet->count)) 500 if (!(packet->count))
500 return snprintf(buf, buf_len, "%s no ip", name); 501 return snprintf(buf, buf_len, "%s no ip", name);
502 __fallthrough;
501 case INTEL_PT_CYC: 503 case INTEL_PT_CYC:
502 case INTEL_PT_VMCS: 504 case INTEL_PT_VMCS:
503 case INTEL_PT_MTC: 505 case INTEL_PT_MTC:
diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c
index dc041d4368c8..da20cd5612e9 100644
--- a/tools/perf/util/intel-pt.c
+++ b/tools/perf/util/intel-pt.c
@@ -143,6 +143,7 @@ struct intel_pt_queue {
143 u32 flags; 143 u32 flags;
144 u16 insn_len; 144 u16 insn_len;
145 u64 last_insn_cnt; 145 u64 last_insn_cnt;
146 char insn[INTEL_PT_INSN_BUF_SZ];
146}; 147};
147 148
148static void intel_pt_dump(struct intel_pt *pt __maybe_unused, 149static void intel_pt_dump(struct intel_pt *pt __maybe_unused,
@@ -315,6 +316,7 @@ struct intel_pt_cache_entry {
315 enum intel_pt_insn_branch branch; 316 enum intel_pt_insn_branch branch;
316 int length; 317 int length;
317 int32_t rel; 318 int32_t rel;
319 char insn[INTEL_PT_INSN_BUF_SZ];
318}; 320};
319 321
320static 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)
@@ -400,6 +402,7 @@ static int intel_pt_cache_add(struct dso *dso, struct machine *machine,
400 e->branch = intel_pt_insn->branch; 402 e->branch = intel_pt_insn->branch;
401 e->length = intel_pt_insn->length; 403 e->length = intel_pt_insn->length;
402 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);
403 406
404 err = auxtrace_cache__add(c, offset, &e->entry); 407 err = auxtrace_cache__add(c, offset, &e->entry);
405 if (err) 408 if (err)
@@ -428,8 +431,7 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
428 struct machine *machine = ptq->pt->machine; 431 struct machine *machine = ptq->pt->machine;
429 struct thread *thread; 432 struct thread *thread;
430 struct addr_location al; 433 struct addr_location al;
431 unsigned char buf[1024]; 434 unsigned char buf[INTEL_PT_INSN_BUF_SZ];
432 size_t bufsz;
433 ssize_t len; 435 ssize_t len;
434 int x86_64; 436 int x86_64;
435 u8 cpumode; 437 u8 cpumode;
@@ -437,11 +439,11 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
437 u64 insn_cnt = 0; 439 u64 insn_cnt = 0;
438 bool one_map = true; 440 bool one_map = true;
439 441
442 intel_pt_insn->length = 0;
443
440 if (to_ip && *ip == to_ip) 444 if (to_ip && *ip == to_ip)
441 goto out_no_cache; 445 goto out_no_cache;
442 446
443 bufsz = intel_pt_insn_max_size();
444
445 if (*ip >= ptq->pt->kernel_start) 447 if (*ip >= ptq->pt->kernel_start)
446 cpumode = PERF_RECORD_MISC_KERNEL; 448 cpumode = PERF_RECORD_MISC_KERNEL;
447 else 449 else
@@ -478,6 +480,8 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
478 intel_pt_insn->branch = e->branch; 480 intel_pt_insn->branch = e->branch;
479 intel_pt_insn->length = e->length; 481 intel_pt_insn->length = e->length;
480 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);
481 intel_pt_log_insn_no_data(intel_pt_insn, *ip); 485 intel_pt_log_insn_no_data(intel_pt_insn, *ip);
482 return 0; 486 return 0;
483 } 487 }
@@ -493,7 +497,8 @@ static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn,
493 497
494 while (1) { 498 while (1) {
495 len = dso__data_read_offset(al.map->dso, machine, 499 len = dso__data_read_offset(al.map->dso, machine,
496 offset, buf, bufsz); 500 offset, buf,
501 INTEL_PT_INSN_BUF_SZ);
497 if (len <= 0) 502 if (len <= 0)
498 return -EINVAL; 503 return -EINVAL;
499 504
@@ -900,6 +905,7 @@ static void intel_pt_sample_flags(struct intel_pt_queue *ptq)
900 if (ptq->state->flags & INTEL_PT_IN_TX) 905 if (ptq->state->flags & INTEL_PT_IN_TX)
901 ptq->flags |= PERF_IP_FLAG_IN_TX; 906 ptq->flags |= PERF_IP_FLAG_IN_TX;
902 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);
903 } 909 }
904} 910}
905 911
@@ -1080,6 +1086,7 @@ static int intel_pt_synth_branch_sample(struct intel_pt_queue *ptq)
1080 sample.cpu = ptq->cpu; 1086 sample.cpu = ptq->cpu;
1081 sample.flags = ptq->flags; 1087 sample.flags = ptq->flags;
1082 sample.insn_len = ptq->insn_len; 1088 sample.insn_len = ptq->insn_len;
1089 memcpy(sample.insn, ptq->insn, INTEL_PT_INSN_BUF_SZ);
1083 1090
1084 /* 1091 /*
1085 * perf report cannot handle events without a branch stack when using 1092 * perf report cannot handle events without a branch stack when using
@@ -1141,6 +1148,7 @@ static int intel_pt_synth_instruction_sample(struct intel_pt_queue *ptq)
1141 sample.cpu = ptq->cpu; 1148 sample.cpu = ptq->cpu;
1142 sample.flags = ptq->flags; 1149 sample.flags = ptq->flags;
1143 sample.insn_len = ptq->insn_len; 1150 sample.insn_len = ptq->insn_len;
1151 memcpy(sample.insn, ptq->insn, INTEL_PT_INSN_BUF_SZ);
1144 1152
1145 ptq->last_insn_cnt = ptq->state->tot_insn_cnt; 1153 ptq->last_insn_cnt = ptq->state->tot_insn_cnt;
1146 1154
@@ -1203,6 +1211,7 @@ static int intel_pt_synth_transaction_sample(struct intel_pt_queue *ptq)
1203 sample.cpu = ptq->cpu; 1211 sample.cpu = ptq->cpu;
1204 sample.flags = ptq->flags; 1212 sample.flags = ptq->flags;
1205 sample.insn_len = ptq->insn_len; 1213 sample.insn_len = ptq->insn_len;
1214 memcpy(sample.insn, ptq->insn, INTEL_PT_INSN_BUF_SZ);
1206 1215
1207 if (pt->synth_opts.callchain) { 1216 if (pt->synth_opts.callchain) {
1208 thread_stack__sample(ptq->thread, ptq->chain, 1217 thread_stack__sample(ptq->thread, ptq->chain,
@@ -2150,7 +2159,9 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
2150 2159
2151 addr_filters__init(&pt->filts); 2160 addr_filters__init(&pt->filts);
2152 2161
2153 perf_config(intel_pt_perf_config, pt); 2162 err = perf_config(intel_pt_perf_config, pt);
2163 if (err)
2164 goto err_free;
2154 2165
2155 err = auxtrace_queues__init(&pt->queues); 2166 err = auxtrace_queues__init(&pt->queues);
2156 if (err) 2167 if (err)
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..824356488ce6 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"
@@ -47,8 +48,10 @@ int perf_llvm_config(const char *var, const char *value)
47 llvm_param.kbuild_opts = strdup(value); 48 llvm_param.kbuild_opts = strdup(value);
48 else if (!strcmp(var, "dump-obj")) 49 else if (!strcmp(var, "dump-obj"))
49 llvm_param.dump_obj = !!perf_config_bool(var, value); 50 llvm_param.dump_obj = !!perf_config_bool(var, value);
50 else 51 else {
52 pr_debug("Invalid LLVM config option: %s\n", value);
51 return -1; 53 return -1;
54 }
52 llvm_param.user_set_param = true; 55 llvm_param.user_set_param = true;
53 return 0; 56 return 0;
54} 57}
@@ -282,9 +285,10 @@ static const char *kinc_fetch_script =
282"rm -rf $TMPDIR\n" 285"rm -rf $TMPDIR\n"
283"exit $RET\n"; 286"exit $RET\n";
284 287
285static inline void 288void llvm__get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
286get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
287{ 289{
290 static char *saved_kbuild_dir;
291 static char *saved_kbuild_include_opts;
288 int err; 292 int err;
289 293
290 if (!kbuild_dir || !kbuild_include_opts) 294 if (!kbuild_dir || !kbuild_include_opts)
@@ -293,10 +297,28 @@ get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
293 *kbuild_dir = NULL; 297 *kbuild_dir = NULL;
294 *kbuild_include_opts = NULL; 298 *kbuild_include_opts = NULL;
295 299
300 if (saved_kbuild_dir && saved_kbuild_include_opts &&
301 !IS_ERR(saved_kbuild_dir) && !IS_ERR(saved_kbuild_include_opts)) {
302 *kbuild_dir = strdup(saved_kbuild_dir);
303 *kbuild_include_opts = strdup(saved_kbuild_include_opts);
304
305 if (*kbuild_dir && *kbuild_include_opts)
306 return;
307
308 zfree(kbuild_dir);
309 zfree(kbuild_include_opts);
310 /*
311 * Don't fall through: it may breaks saved_kbuild_dir and
312 * saved_kbuild_include_opts if detect them again when
313 * memory is low.
314 */
315 return;
316 }
317
296 if (llvm_param.kbuild_dir && !llvm_param.kbuild_dir[0]) { 318 if (llvm_param.kbuild_dir && !llvm_param.kbuild_dir[0]) {
297 pr_debug("[llvm.kbuild-dir] is set to \"\" deliberately.\n"); 319 pr_debug("[llvm.kbuild-dir] is set to \"\" deliberately.\n");
298 pr_debug("Skip kbuild options detection.\n"); 320 pr_debug("Skip kbuild options detection.\n");
299 return; 321 goto errout;
300 } 322 }
301 323
302 err = detect_kbuild_dir(kbuild_dir); 324 err = detect_kbuild_dir(kbuild_dir);
@@ -306,7 +328,7 @@ get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
306"Hint:\tSet correct kbuild directory using 'kbuild-dir' option in [llvm]\n" 328"Hint:\tSet correct kbuild directory using 'kbuild-dir' option in [llvm]\n"
307" \tsection of ~/.perfconfig or set it to \"\" to suppress kbuild\n" 329" \tsection of ~/.perfconfig or set it to \"\" to suppress kbuild\n"
308" \tdetection.\n\n"); 330" \tdetection.\n\n");
309 return; 331 goto errout;
310 } 332 }
311 333
312 pr_debug("Kernel build dir is set to %s\n", *kbuild_dir); 334 pr_debug("Kernel build dir is set to %s\n", *kbuild_dir);
@@ -325,21 +347,50 @@ get_kbuild_opts(char **kbuild_dir, char **kbuild_include_opts)
325 347
326 free(*kbuild_dir); 348 free(*kbuild_dir);
327 *kbuild_dir = NULL; 349 *kbuild_dir = NULL;
328 return; 350 goto errout;
329 } 351 }
330 352
331 pr_debug("include option is set to %s\n", *kbuild_include_opts); 353 pr_debug("include option is set to %s\n", *kbuild_include_opts);
354
355 saved_kbuild_dir = strdup(*kbuild_dir);
356 saved_kbuild_include_opts = strdup(*kbuild_include_opts);
357
358 if (!saved_kbuild_dir || !saved_kbuild_include_opts) {
359 zfree(&saved_kbuild_dir);
360 zfree(&saved_kbuild_include_opts);
361 }
362 return;
363errout:
364 saved_kbuild_dir = ERR_PTR(-EINVAL);
365 saved_kbuild_include_opts = ERR_PTR(-EINVAL);
332} 366}
333 367
334static void 368int llvm__get_nr_cpus(void)
335dump_obj(const char *path, void *obj_buf, size_t size) 369{
370 static int nr_cpus_avail = 0;
371 char serr[STRERR_BUFSIZE];
372
373 if (nr_cpus_avail > 0)
374 return nr_cpus_avail;
375
376 nr_cpus_avail = sysconf(_SC_NPROCESSORS_CONF);
377 if (nr_cpus_avail <= 0) {
378 pr_err(
379"WARNING:\tunable to get available CPUs in this system: %s\n"
380" \tUse 128 instead.\n", str_error_r(errno, serr, sizeof(serr)));
381 nr_cpus_avail = 128;
382 }
383 return nr_cpus_avail;
384}
385
386void llvm__dump_obj(const char *path, void *obj_buf, size_t size)
336{ 387{
337 char *obj_path = strdup(path); 388 char *obj_path = strdup(path);
338 FILE *fp; 389 FILE *fp;
339 char *p; 390 char *p;
340 391
341 if (!obj_path) { 392 if (!obj_path) {
342 pr_warning("WARNING: No enough memory, skip object dumping\n"); 393 pr_warning("WARNING: Not enough memory, skip object dumping\n");
343 return; 394 return;
344 } 395 }
345 396
@@ -406,15 +457,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 457 * This is an optional work. Even it fail we can continue our
407 * work. Needn't to check error return. 458 * work. Needn't to check error return.
408 */ 459 */
409 get_kbuild_opts(&kbuild_dir, &kbuild_include_opts); 460 llvm__get_kbuild_opts(&kbuild_dir, &kbuild_include_opts);
410 461
411 nr_cpus_avail = sysconf(_SC_NPROCESSORS_CONF); 462 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", 463 snprintf(nr_cpus_avail_str, sizeof(nr_cpus_avail_str), "%d",
419 nr_cpus_avail); 464 nr_cpus_avail);
420 465
@@ -453,9 +498,6 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
453 free(kbuild_dir); 498 free(kbuild_dir);
454 free(kbuild_include_opts); 499 free(kbuild_include_opts);
455 500
456 if (llvm_param.dump_obj)
457 dump_obj(path, obj_buf, obj_buf_sz);
458
459 if (!p_obj_buf) 501 if (!p_obj_buf)
460 free(obj_buf); 502 free(obj_buf);
461 else 503 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/machine.c b/tools/perf/util/machine.c
index df85b9efd80f..71c9720d4973 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -87,6 +87,25 @@ out_delete:
87 return NULL; 87 return NULL;
88} 88}
89 89
90struct machine *machine__new_kallsyms(void)
91{
92 struct machine *machine = machine__new_host();
93 /*
94 * FIXME:
95 * 1) MAP__FUNCTION will go away when we stop loading separate maps for
96 * functions and data objects.
97 * 2) We should switch to machine__load_kallsyms(), i.e. not explicitely
98 * ask for not using the kcore parsing code, once this one is fixed
99 * to create a map per module.
100 */
101 if (machine && __machine__load_kallsyms(machine, "/proc/kallsyms", MAP__FUNCTION, true) <= 0) {
102 machine__delete(machine);
103 machine = NULL;
104 }
105
106 return machine;
107}
108
90static void dsos__purge(struct dsos *dsos) 109static void dsos__purge(struct dsos *dsos)
91{ 110{
92 struct dso *pos, *n; 111 struct dso *pos, *n;
@@ -763,7 +782,7 @@ static u64 machine__get_running_kernel_start(struct machine *machine,
763 782
764int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel) 783int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)
765{ 784{
766 enum map_type type; 785 int type;
767 u64 start = machine__get_running_kernel_start(machine, NULL); 786 u64 start = machine__get_running_kernel_start(machine, NULL);
768 787
769 /* In case of renewal the kernel map, destroy previous one */ 788 /* In case of renewal the kernel map, destroy previous one */
@@ -794,7 +813,7 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)
794 813
795void machine__destroy_kernel_maps(struct machine *machine) 814void machine__destroy_kernel_maps(struct machine *machine)
796{ 815{
797 enum map_type type; 816 int type;
798 817
799 for (type = 0; type < MAP__NR_TYPES; ++type) { 818 for (type = 0; type < MAP__NR_TYPES; ++type) {
800 struct kmap *kmap; 819 struct kmap *kmap;
@@ -1546,7 +1565,7 @@ int machine__process_event(struct machine *machine, union perf_event *event,
1546 1565
1547static bool symbol__match_regex(struct symbol *sym, regex_t *regex) 1566static bool symbol__match_regex(struct symbol *sym, regex_t *regex)
1548{ 1567{
1549 if (sym->name && !regexec(regex, sym->name, 0, NULL, 0)) 1568 if (!regexec(regex, sym->name, 0, NULL, 0))
1550 return 1; 1569 return 1;
1551 return 0; 1570 return 0;
1552} 1571}
@@ -1616,7 +1635,11 @@ static int add_callchain_ip(struct thread *thread,
1616 struct symbol **parent, 1635 struct symbol **parent,
1617 struct addr_location *root_al, 1636 struct addr_location *root_al,
1618 u8 *cpumode, 1637 u8 *cpumode,
1619 u64 ip) 1638 u64 ip,
1639 bool branch,
1640 struct branch_flags *flags,
1641 int nr_loop_iter,
1642 int samples)
1620{ 1643{
1621 struct addr_location al; 1644 struct addr_location al;
1622 1645
@@ -1668,7 +1691,8 @@ static int add_callchain_ip(struct thread *thread,
1668 1691
1669 if (symbol_conf.hide_unresolved && al.sym == NULL) 1692 if (symbol_conf.hide_unresolved && al.sym == NULL)
1670 return 0; 1693 return 0;
1671 return callchain_cursor_append(cursor, al.addr, al.map, al.sym); 1694 return callchain_cursor_append(cursor, al.addr, al.map, al.sym,
1695 branch, flags, nr_loop_iter, samples);
1672} 1696}
1673 1697
1674struct branch_info *sample__resolve_bstack(struct perf_sample *sample, 1698struct branch_info *sample__resolve_bstack(struct perf_sample *sample,
@@ -1757,7 +1781,9 @@ static int resolve_lbr_callchain_sample(struct thread *thread,
1757 /* LBR only affects the user callchain */ 1781 /* LBR only affects the user callchain */
1758 if (i != chain_nr) { 1782 if (i != chain_nr) {
1759 struct branch_stack *lbr_stack = sample->branch_stack; 1783 struct branch_stack *lbr_stack = sample->branch_stack;
1760 int lbr_nr = lbr_stack->nr, j; 1784 int lbr_nr = lbr_stack->nr, j, k;
1785 bool branch;
1786 struct branch_flags *flags;
1761 /* 1787 /*
1762 * LBR callstack can only get user call chain. 1788 * LBR callstack can only get user call chain.
1763 * The mix_chain_nr is kernel call chain 1789 * The mix_chain_nr is kernel call chain
@@ -1772,23 +1798,41 @@ static int resolve_lbr_callchain_sample(struct thread *thread,
1772 1798
1773 for (j = 0; j < mix_chain_nr; j++) { 1799 for (j = 0; j < mix_chain_nr; j++) {
1774 int err; 1800 int err;
1801 branch = false;
1802 flags = NULL;
1803
1775 if (callchain_param.order == ORDER_CALLEE) { 1804 if (callchain_param.order == ORDER_CALLEE) {
1776 if (j < i + 1) 1805 if (j < i + 1)
1777 ip = chain->ips[j]; 1806 ip = chain->ips[j];
1778 else if (j > i + 1) 1807 else if (j > i + 1) {
1779 ip = lbr_stack->entries[j - i - 2].from; 1808 k = j - i - 2;
1780 else 1809 ip = lbr_stack->entries[k].from;
1810 branch = true;
1811 flags = &lbr_stack->entries[k].flags;
1812 } else {
1781 ip = lbr_stack->entries[0].to; 1813 ip = lbr_stack->entries[0].to;
1814 branch = true;
1815 flags = &lbr_stack->entries[0].flags;
1816 }
1782 } else { 1817 } else {
1783 if (j < lbr_nr) 1818 if (j < lbr_nr) {
1784 ip = lbr_stack->entries[lbr_nr - j - 1].from; 1819 k = lbr_nr - j - 1;
1820 ip = lbr_stack->entries[k].from;
1821 branch = true;
1822 flags = &lbr_stack->entries[k].flags;
1823 }
1785 else if (j > lbr_nr) 1824 else if (j > lbr_nr)
1786 ip = chain->ips[i + 1 - (j - lbr_nr)]; 1825 ip = chain->ips[i + 1 - (j - lbr_nr)];
1787 else 1826 else {
1788 ip = lbr_stack->entries[0].to; 1827 ip = lbr_stack->entries[0].to;
1828 branch = true;
1829 flags = &lbr_stack->entries[0].flags;
1830 }
1789 } 1831 }
1790 1832
1791 err = add_callchain_ip(thread, cursor, parent, root_al, &cpumode, ip); 1833 err = add_callchain_ip(thread, cursor, parent,
1834 root_al, &cpumode, ip,
1835 branch, flags, 0, 0);
1792 if (err) 1836 if (err)
1793 return (err < 0) ? err : 0; 1837 return (err < 0) ? err : 0;
1794 } 1838 }
@@ -1813,6 +1857,7 @@ static int thread__resolve_callchain_sample(struct thread *thread,
1813 int i, j, err, nr_entries; 1857 int i, j, err, nr_entries;
1814 int skip_idx = -1; 1858 int skip_idx = -1;
1815 int first_call = 0; 1859 int first_call = 0;
1860 int nr_loop_iter;
1816 1861
1817 if (perf_evsel__has_branch_callstack(evsel)) { 1862 if (perf_evsel__has_branch_callstack(evsel)) {
1818 err = resolve_lbr_callchain_sample(thread, cursor, sample, parent, 1863 err = resolve_lbr_callchain_sample(thread, cursor, sample, parent,
@@ -1868,14 +1913,37 @@ static int thread__resolve_callchain_sample(struct thread *thread,
1868 be[i] = branch->entries[branch->nr - i - 1]; 1913 be[i] = branch->entries[branch->nr - i - 1];
1869 } 1914 }
1870 1915
1916 nr_loop_iter = nr;
1871 nr = remove_loops(be, nr); 1917 nr = remove_loops(be, nr);
1872 1918
1919 /*
1920 * Get the number of iterations.
1921 * It's only approximation, but good enough in practice.
1922 */
1923 if (nr_loop_iter > nr)
1924 nr_loop_iter = nr_loop_iter - nr + 1;
1925 else
1926 nr_loop_iter = 0;
1927
1873 for (i = 0; i < nr; i++) { 1928 for (i = 0; i < nr; i++) {
1874 err = add_callchain_ip(thread, cursor, parent, root_al, 1929 if (i == nr - 1)
1875 NULL, be[i].to); 1930 err = add_callchain_ip(thread, cursor, parent,
1931 root_al,
1932 NULL, be[i].to,
1933 true, &be[i].flags,
1934 nr_loop_iter, 1);
1935 else
1936 err = add_callchain_ip(thread, cursor, parent,
1937 root_al,
1938 NULL, be[i].to,
1939 true, &be[i].flags,
1940 0, 0);
1941
1876 if (!err) 1942 if (!err)
1877 err = add_callchain_ip(thread, cursor, parent, root_al, 1943 err = add_callchain_ip(thread, cursor, parent, root_al,
1878 NULL, be[i].from); 1944 NULL, be[i].from,
1945 true, &be[i].flags,
1946 0, 0);
1879 if (err == -EINVAL) 1947 if (err == -EINVAL)
1880 break; 1948 break;
1881 if (err) 1949 if (err)
@@ -1903,7 +1971,9 @@ check_calls:
1903 if (ip < PERF_CONTEXT_MAX) 1971 if (ip < PERF_CONTEXT_MAX)
1904 ++nr_entries; 1972 ++nr_entries;
1905 1973
1906 err = add_callchain_ip(thread, cursor, parent, root_al, &cpumode, ip); 1974 err = add_callchain_ip(thread, cursor, parent,
1975 root_al, &cpumode, ip,
1976 false, NULL, 0, 0);
1907 1977
1908 if (err) 1978 if (err)
1909 return (err < 0) ? err : 0; 1979 return (err < 0) ? err : 0;
@@ -1919,7 +1989,8 @@ static int unwind_entry(struct unwind_entry *entry, void *arg)
1919 if (symbol_conf.hide_unresolved && entry->sym == NULL) 1989 if (symbol_conf.hide_unresolved && entry->sym == NULL)
1920 return 0; 1990 return 0;
1921 return callchain_cursor_append(cursor, entry->ip, 1991 return callchain_cursor_append(cursor, entry->ip,
1922 entry->map, entry->sym); 1992 entry->map, entry->sym,
1993 false, NULL, 0, 0);
1923} 1994}
1924 1995
1925static int thread__resolve_callchain_unwind(struct thread *thread, 1996static int thread__resolve_callchain_unwind(struct thread *thread,
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index 354de6e56109..a28305029711 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -129,6 +129,7 @@ char *machine__mmap_name(struct machine *machine, char *bf, size_t size);
129void machines__set_comm_exec(struct machines *machines, bool comm_exec); 129void machines__set_comm_exec(struct machines *machines, bool comm_exec);
130 130
131struct machine *machine__new_host(void); 131struct machine *machine__new_host(void);
132struct machine *machine__new_kallsyms(void);
132int machine__init(struct machine *machine, const char *root_dir, pid_t pid); 133int machine__init(struct machine *machine, const char *root_dir, pid_t pid);
133void machine__exit(struct machine *machine); 134void machine__exit(struct machine *machine);
134void machine__delete_threads(struct machine *machine); 135void machine__delete_threads(struct machine *machine);
diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c
index c662fef95d14..0a943e7b1ea7 100644
--- a/tools/perf/util/map.c
+++ b/tools/perf/util/map.c
@@ -387,10 +387,10 @@ size_t map__fprintf_dsoname(struct map *map, FILE *fp)
387{ 387{
388 const char *dsoname = "[unknown]"; 388 const char *dsoname = "[unknown]";
389 389
390 if (map && map->dso && (map->dso->name || map->dso->long_name)) { 390 if (map && map->dso) {
391 if (symbol_conf.show_kernel_path && map->dso->long_name) 391 if (symbol_conf.show_kernel_path && map->dso->long_name)
392 dsoname = map->dso->long_name; 392 dsoname = map->dso->long_name;
393 else if (map->dso->name) 393 else
394 dsoname = map->dso->name; 394 dsoname = map->dso->name;
395 } 395 }
396 396
@@ -682,9 +682,16 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
682 continue; 682 continue;
683 683
684 if (verbose >= 2) { 684 if (verbose >= 2) {
685 fputs("overlapping maps:\n", fp); 685
686 map__fprintf(map, fp); 686 if (use_browser) {
687 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 }
688 } 695 }
689 696
690 rb_erase_init(&pos->rb_node, root); 697 rb_erase_init(&pos->rb_node, root);
@@ -702,7 +709,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
702 709
703 before->end = map->start; 710 before->end = map->start;
704 __map_groups__insert(pos->groups, before); 711 __map_groups__insert(pos->groups, before);
705 if (verbose >= 2) 712 if (verbose >= 2 && !use_browser)
706 map__fprintf(before, fp); 713 map__fprintf(before, fp);
707 map__put(before); 714 map__put(before);
708 } 715 }
@@ -717,7 +724,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
717 724
718 after->start = map->end; 725 after->start = map->end;
719 __map_groups__insert(pos->groups, after); 726 __map_groups__insert(pos->groups, after);
720 if (verbose >= 2) 727 if (verbose >= 2 && !use_browser)
721 map__fprintf(after, fp); 728 map__fprintf(after, fp);
722 map__put(after); 729 map__put(after);
723 } 730 }
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 4e778eae1510..67a8aebc67ab 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
@@ -210,6 +211,8 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config)
210 closedir(evt_dir); 211 closedir(evt_dir);
211 closedir(sys_dir); 212 closedir(sys_dir);
212 path = zalloc(sizeof(*path)); 213 path = zalloc(sizeof(*path));
214 if (!path)
215 return NULL;
213 path->system = malloc(MAX_EVENT_LENGTH); 216 path->system = malloc(MAX_EVENT_LENGTH);
214 if (!path->system) { 217 if (!path->system) {
215 free(path); 218 free(path);
@@ -251,8 +254,7 @@ struct tracepoint_path *tracepoint_name_to_path(const char *name)
251 if (path->system == NULL || path->name == NULL) { 254 if (path->system == NULL || path->name == NULL) {
252 zfree(&path->system); 255 zfree(&path->system);
253 zfree(&path->name); 256 zfree(&path->name);
254 free(path); 257 zfree(&path);
255 path = NULL;
256 } 258 }
257 259
258 return path; 260 return path;
@@ -309,10 +311,11 @@ __add_event(struct list_head *list, int *idx,
309 311
310 event_attr_init(attr); 312 event_attr_init(attr);
311 313
312 evsel = perf_evsel__new_idx(attr, (*idx)++); 314 evsel = perf_evsel__new_idx(attr, *idx);
313 if (!evsel) 315 if (!evsel)
314 return NULL; 316 return NULL;
315 317
318 (*idx)++;
316 evsel->cpus = cpu_map__get(cpus); 319 evsel->cpus = cpu_map__get(cpus);
317 evsel->own_cpus = cpu_map__get(cpus); 320 evsel->own_cpus = cpu_map__get(cpus);
318 321
@@ -973,10 +976,13 @@ do { \
973 CHECK_TYPE_VAL(NUM); 976 CHECK_TYPE_VAL(NUM);
974 break; 977 break;
975 case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE: 978 case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE:
976 /* 979 CHECK_TYPE_VAL(STR);
977 * TODO uncomment when the field is available 980 if (strcmp(term->val.str, "no") &&
978 * attr->branch_sample_type = term->val.num; 981 parse_branch_str(term->val.str, &attr->branch_sample_type)) {
979 */ 982 err->str = strdup("invalid branch sample type");
983 err->idx = term->err_val;
984 return -EINVAL;
985 }
980 break; 986 break;
981 case PARSE_EVENTS__TERM_TYPE_TIME: 987 case PARSE_EVENTS__TERM_TYPE_TIME:
982 CHECK_TYPE_VAL(NUM); 988 CHECK_TYPE_VAL(NUM);
@@ -1119,6 +1125,9 @@ do { \
1119 case PARSE_EVENTS__TERM_TYPE_CALLGRAPH: 1125 case PARSE_EVENTS__TERM_TYPE_CALLGRAPH:
1120 ADD_CONFIG_TERM(CALLGRAPH, callgraph, term->val.str); 1126 ADD_CONFIG_TERM(CALLGRAPH, callgraph, term->val.str);
1121 break; 1127 break;
1128 case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE:
1129 ADD_CONFIG_TERM(BRANCH, branch, term->val.str);
1130 break;
1122 case PARSE_EVENTS__TERM_TYPE_STACKSIZE: 1131 case PARSE_EVENTS__TERM_TYPE_STACKSIZE:
1123 ADD_CONFIG_TERM(STACK_USER, stack_user, term->val.num); 1132 ADD_CONFIG_TERM(STACK_USER, stack_user, term->val.num);
1124 break; 1133 break;
@@ -1470,10 +1479,9 @@ static void perf_pmu__parse_cleanup(void)
1470 1479
1471 for (i = 0; i < perf_pmu_events_list_num; i++) { 1480 for (i = 0; i < perf_pmu_events_list_num; i++) {
1472 p = perf_pmu_events_list + i; 1481 p = perf_pmu_events_list + i;
1473 free(p->symbol); 1482 zfree(&p->symbol);
1474 } 1483 }
1475 free(perf_pmu_events_list); 1484 zfree(&perf_pmu_events_list);
1476 perf_pmu_events_list = NULL;
1477 perf_pmu_events_list_num = 0; 1485 perf_pmu_events_list_num = 0;
1478 } 1486 }
1479} 1487}
@@ -1497,35 +1505,41 @@ static void perf_pmu__parse_init(void)
1497 struct perf_pmu_alias *alias; 1505 struct perf_pmu_alias *alias;
1498 int len = 0; 1506 int len = 0;
1499 1507
1500 pmu = perf_pmu__find("cpu"); 1508 pmu = NULL;
1501 if ((pmu == NULL) || list_empty(&pmu->aliases)) { 1509 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
1510 list_for_each_entry(alias, &pmu->aliases, list) {
1511 if (strchr(alias->name, '-'))
1512 len++;
1513 len++;
1514 }
1515 }
1516
1517 if (len == 0) {
1502 perf_pmu_events_list_num = -1; 1518 perf_pmu_events_list_num = -1;
1503 return; 1519 return;
1504 } 1520 }
1505 list_for_each_entry(alias, &pmu->aliases, list) {
1506 if (strchr(alias->name, '-'))
1507 len++;
1508 len++;
1509 }
1510 perf_pmu_events_list = malloc(sizeof(struct perf_pmu_event_symbol) * len); 1521 perf_pmu_events_list = malloc(sizeof(struct perf_pmu_event_symbol) * len);
1511 if (!perf_pmu_events_list) 1522 if (!perf_pmu_events_list)
1512 return; 1523 return;
1513 perf_pmu_events_list_num = len; 1524 perf_pmu_events_list_num = len;
1514 1525
1515 len = 0; 1526 len = 0;
1516 list_for_each_entry(alias, &pmu->aliases, list) { 1527 pmu = NULL;
1517 struct perf_pmu_event_symbol *p = perf_pmu_events_list + len; 1528 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
1518 char *tmp = strchr(alias->name, '-'); 1529 list_for_each_entry(alias, &pmu->aliases, list) {
1519 1530 struct perf_pmu_event_symbol *p = perf_pmu_events_list + len;
1520 if (tmp != NULL) { 1531 char *tmp = strchr(alias->name, '-');
1521 SET_SYMBOL(strndup(alias->name, tmp - alias->name), 1532
1522 PMU_EVENT_SYMBOL_PREFIX); 1533 if (tmp != NULL) {
1523 p++; 1534 SET_SYMBOL(strndup(alias->name, tmp - alias->name),
1524 SET_SYMBOL(strdup(++tmp), PMU_EVENT_SYMBOL_SUFFIX); 1535 PMU_EVENT_SYMBOL_PREFIX);
1525 len += 2; 1536 p++;
1526 } else { 1537 SET_SYMBOL(strdup(++tmp), PMU_EVENT_SYMBOL_SUFFIX);
1527 SET_SYMBOL(strdup(alias->name), PMU_EVENT_SYMBOL); 1538 len += 2;
1528 len++; 1539 } else {
1540 SET_SYMBOL(strdup(alias->name), PMU_EVENT_SYMBOL);
1541 len++;
1542 }
1529 } 1543 }
1530 } 1544 }
1531 qsort(perf_pmu_events_list, len, 1545 qsort(perf_pmu_events_list, len,
@@ -1556,7 +1570,7 @@ perf_pmu__parse_check(const char *name)
1556 r = bsearch(&p, perf_pmu_events_list, 1570 r = bsearch(&p, perf_pmu_events_list,
1557 (size_t) perf_pmu_events_list_num, 1571 (size_t) perf_pmu_events_list_num,
1558 sizeof(struct perf_pmu_event_symbol), comp_pmu); 1572 sizeof(struct perf_pmu_event_symbol), comp_pmu);
1559 free(p.symbol); 1573 zfree(&p.symbol);
1560 return r ? r->type : PMU_EVENT_SYMBOL_ERR; 1574 return r ? r->type : PMU_EVENT_SYMBOL_ERR;
1561} 1575}
1562 1576
@@ -1703,8 +1717,8 @@ static void parse_events_print_error(struct parse_events_error *err,
1703 fprintf(stderr, "%*s\\___ %s\n", idx + 1, "", err->str); 1717 fprintf(stderr, "%*s\\___ %s\n", idx + 1, "", err->str);
1704 if (err->help) 1718 if (err->help)
1705 fprintf(stderr, "\n%s\n", err->help); 1719 fprintf(stderr, "\n%s\n", err->help);
1706 free(err->str); 1720 zfree(&err->str);
1707 free(err->help); 1721 zfree(&err->help);
1708 } 1722 }
1709 1723
1710 fprintf(stderr, "Run 'perf list' for a list of valid events\n"); 1724 fprintf(stderr, "Run 'perf list' for a list of valid events\n");
@@ -2006,17 +2020,14 @@ static bool is_event_supported(u8 type, unsigned config)
2006 .config = config, 2020 .config = config,
2007 .disabled = 1, 2021 .disabled = 1,
2008 }; 2022 };
2009 struct { 2023 struct thread_map *tmap = thread_map__new_by_tid(0);
2010 struct thread_map map; 2024
2011 int threads[1]; 2025 if (tmap == NULL)
2012 } tmap = { 2026 return false;
2013 .map.nr = 1,
2014 .threads = { 0 },
2015 };
2016 2027
2017 evsel = perf_evsel__new(&attr); 2028 evsel = perf_evsel__new(&attr);
2018 if (evsel) { 2029 if (evsel) {
2019 open_return = perf_evsel__open(evsel, NULL, &tmap.map); 2030 open_return = perf_evsel__open(evsel, NULL, tmap);
2020 ret = open_return >= 0; 2031 ret = open_return >= 0;
2021 2032
2022 if (open_return == -EACCES) { 2033 if (open_return == -EACCES) {
@@ -2028,7 +2039,7 @@ static bool is_event_supported(u8 type, unsigned config)
2028 * 2039 *
2029 */ 2040 */
2030 evsel->attr.exclude_kernel = 1; 2041 evsel->attr.exclude_kernel = 1;
2031 ret = perf_evsel__open(evsel, NULL, &tmap.map) >= 0; 2042 ret = perf_evsel__open(evsel, NULL, tmap) >= 0;
2032 } 2043 }
2033 perf_evsel__delete(evsel); 2044 perf_evsel__delete(evsel);
2034 } 2045 }
@@ -2307,24 +2318,20 @@ int parse_events__is_hardcoded_term(struct parse_events_term *term)
2307 return term->type_term != PARSE_EVENTS__TERM_TYPE_USER; 2318 return term->type_term != PARSE_EVENTS__TERM_TYPE_USER;
2308} 2319}
2309 2320
2310static int new_term(struct parse_events_term **_term, int type_val, 2321static int new_term(struct parse_events_term **_term,
2311 int type_term, char *config, 2322 struct parse_events_term *temp,
2312 char *str, u64 num, int err_term, int err_val) 2323 char *str, u64 num)
2313{ 2324{
2314 struct parse_events_term *term; 2325 struct parse_events_term *term;
2315 2326
2316 term = zalloc(sizeof(*term)); 2327 term = malloc(sizeof(*term));
2317 if (!term) 2328 if (!term)
2318 return -ENOMEM; 2329 return -ENOMEM;
2319 2330
2331 *term = *temp;
2320 INIT_LIST_HEAD(&term->list); 2332 INIT_LIST_HEAD(&term->list);
2321 term->type_val = type_val;
2322 term->type_term = type_term;
2323 term->config = config;
2324 term->err_term = err_term;
2325 term->err_val = err_val;
2326 2333
2327 switch (type_val) { 2334 switch (term->type_val) {
2328 case PARSE_EVENTS__TERM_TYPE_NUM: 2335 case PARSE_EVENTS__TERM_TYPE_NUM:
2329 term->val.num = num; 2336 term->val.num = num;
2330 break; 2337 break;
@@ -2342,15 +2349,22 @@ static int new_term(struct parse_events_term **_term, int type_val,
2342 2349
2343int parse_events_term__num(struct parse_events_term **term, 2350int parse_events_term__num(struct parse_events_term **term,
2344 int type_term, char *config, u64 num, 2351 int type_term, char *config, u64 num,
2352 bool no_value,
2345 void *loc_term_, void *loc_val_) 2353 void *loc_term_, void *loc_val_)
2346{ 2354{
2347 YYLTYPE *loc_term = loc_term_; 2355 YYLTYPE *loc_term = loc_term_;
2348 YYLTYPE *loc_val = loc_val_; 2356 YYLTYPE *loc_val = loc_val_;
2349 2357
2350 return new_term(term, PARSE_EVENTS__TERM_TYPE_NUM, type_term, 2358 struct parse_events_term temp = {
2351 config, NULL, num, 2359 .type_val = PARSE_EVENTS__TERM_TYPE_NUM,
2352 loc_term ? loc_term->first_column : 0, 2360 .type_term = type_term,
2353 loc_val ? loc_val->first_column : 0); 2361 .config = config,
2362 .no_value = no_value,
2363 .err_term = loc_term ? loc_term->first_column : 0,
2364 .err_val = loc_val ? loc_val->first_column : 0,
2365 };
2366
2367 return new_term(term, &temp, NULL, num);
2354} 2368}
2355 2369
2356int parse_events_term__str(struct parse_events_term **term, 2370int parse_events_term__str(struct parse_events_term **term,
@@ -2360,37 +2374,45 @@ int parse_events_term__str(struct parse_events_term **term,
2360 YYLTYPE *loc_term = loc_term_; 2374 YYLTYPE *loc_term = loc_term_;
2361 YYLTYPE *loc_val = loc_val_; 2375 YYLTYPE *loc_val = loc_val_;
2362 2376
2363 return new_term(term, PARSE_EVENTS__TERM_TYPE_STR, type_term, 2377 struct parse_events_term temp = {
2364 config, str, 0, 2378 .type_val = PARSE_EVENTS__TERM_TYPE_STR,
2365 loc_term ? loc_term->first_column : 0, 2379 .type_term = type_term,
2366 loc_val ? loc_val->first_column : 0); 2380 .config = config,
2381 .err_term = loc_term ? loc_term->first_column : 0,
2382 .err_val = loc_val ? loc_val->first_column : 0,
2383 };
2384
2385 return new_term(term, &temp, str, 0);
2367} 2386}
2368 2387
2369int parse_events_term__sym_hw(struct parse_events_term **term, 2388int parse_events_term__sym_hw(struct parse_events_term **term,
2370 char *config, unsigned idx) 2389 char *config, unsigned idx)
2371{ 2390{
2372 struct event_symbol *sym; 2391 struct event_symbol *sym;
2392 struct parse_events_term temp = {
2393 .type_val = PARSE_EVENTS__TERM_TYPE_STR,
2394 .type_term = PARSE_EVENTS__TERM_TYPE_USER,
2395 .config = config ?: (char *) "event",
2396 };
2373 2397
2374 BUG_ON(idx >= PERF_COUNT_HW_MAX); 2398 BUG_ON(idx >= PERF_COUNT_HW_MAX);
2375 sym = &event_symbols_hw[idx]; 2399 sym = &event_symbols_hw[idx];
2376 2400
2377 if (config) 2401 return new_term(term, &temp, (char *) sym->symbol, 0);
2378 return new_term(term, PARSE_EVENTS__TERM_TYPE_STR,
2379 PARSE_EVENTS__TERM_TYPE_USER, config,
2380 (char *) sym->symbol, 0, 0, 0);
2381 else
2382 return new_term(term, PARSE_EVENTS__TERM_TYPE_STR,
2383 PARSE_EVENTS__TERM_TYPE_USER,
2384 (char *) "event", (char *) sym->symbol,
2385 0, 0, 0);
2386} 2402}
2387 2403
2388int parse_events_term__clone(struct parse_events_term **new, 2404int parse_events_term__clone(struct parse_events_term **new,
2389 struct parse_events_term *term) 2405 struct parse_events_term *term)
2390{ 2406{
2391 return new_term(new, term->type_val, term->type_term, term->config, 2407 struct parse_events_term temp = {
2392 term->val.str, term->val.num, 2408 .type_val = term->type_val,
2393 term->err_term, term->err_val); 2409 .type_term = term->type_term,
2410 .config = term->config,
2411 .err_term = term->err_term,
2412 .err_val = term->err_val,
2413 };
2414
2415 return new_term(new, &temp, term->val.str, term->val.num);
2394} 2416}
2395 2417
2396void parse_events_terms__purge(struct list_head *terms) 2418void parse_events_terms__purge(struct list_head *terms)
@@ -2399,7 +2421,7 @@ void parse_events_terms__purge(struct list_head *terms)
2399 2421
2400 list_for_each_entry_safe(term, h, terms, list) { 2422 list_for_each_entry_safe(term, h, terms, list) {
2401 if (term->array.nr_ranges) 2423 if (term->array.nr_ranges)
2402 free(term->array.ranges); 2424 zfree(&term->array.ranges);
2403 list_del_init(&term->list); 2425 list_del_init(&term->list);
2404 free(term); 2426 free(term);
2405 } 2427 }
@@ -2415,7 +2437,7 @@ void parse_events_terms__delete(struct list_head *terms)
2415 2437
2416void parse_events__clear_array(struct parse_events_array *a) 2438void parse_events__clear_array(struct parse_events_array *a)
2417{ 2439{
2418 free(a->ranges); 2440 zfree(&a->ranges);
2419} 2441}
2420 2442
2421void parse_events_evlist_error(struct parse_events_evlist *data, 2443void parse_events_evlist_error(struct parse_events_evlist *data,
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index da246a3ddb69..1af6a267c21b 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -94,6 +94,7 @@ struct parse_events_term {
94 int type_term; 94 int type_term;
95 struct list_head list; 95 struct list_head list;
96 bool used; 96 bool used;
97 bool no_value;
97 98
98 /* error string indexes for within parsed string */ 99 /* error string indexes for within parsed string */
99 int err_term; 100 int err_term;
@@ -122,6 +123,7 @@ void parse_events__shrink_config_terms(void);
122int parse_events__is_hardcoded_term(struct parse_events_term *term); 123int parse_events__is_hardcoded_term(struct parse_events_term *term);
123int parse_events_term__num(struct parse_events_term **term, 124int parse_events_term__num(struct parse_events_term **term,
124 int type_term, char *config, u64 num, 125 int type_term, char *config, u64 num,
126 bool novalue,
125 void *loc_term, void *loc_val); 127 void *loc_term, void *loc_val);
126int parse_events_term__str(struct parse_events_term **term, 128int parse_events_term__str(struct parse_events_term **term,
127 int type_term, char *config, char *str, 129 int type_term, char *config, char *str,
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 879115f93edc..30f018ea1370 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -12,9 +12,13 @@
12#include <linux/list.h> 12#include <linux/list.h>
13#include <linux/types.h> 13#include <linux/types.h>
14#include "util.h" 14#include "util.h"
15#include "pmu.h"
16#include "debug.h"
15#include "parse-events.h" 17#include "parse-events.h"
16#include "parse-events-bison.h" 18#include "parse-events-bison.h"
17 19
20void parse_events_error(YYLTYPE *loc, void *data, void *scanner, char const *msg);
21
18#define ABORT_ON(val) \ 22#define ABORT_ON(val) \
19do { \ 23do { \
20 if (val) \ 24 if (val) \
@@ -236,15 +240,34 @@ PE_KERNEL_PMU_EVENT sep_dc
236 struct list_head *head; 240 struct list_head *head;
237 struct parse_events_term *term; 241 struct parse_events_term *term;
238 struct list_head *list; 242 struct list_head *list;
243 struct perf_pmu *pmu = NULL;
244 int ok = 0;
239 245
240 ALLOC_LIST(head); 246 /* Add it for all PMUs that support the alias */
241 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
242 $1, 1, &@1, NULL));
243 list_add_tail(&term->list, head);
244
245 ALLOC_LIST(list); 247 ALLOC_LIST(list);
246 ABORT_ON(parse_events_add_pmu(data, list, "cpu", head)); 248 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
247 parse_events_terms__delete(head); 249 struct perf_pmu_alias *alias;
250
251 list_for_each_entry(alias, &pmu->aliases, list) {
252 if (!strcasecmp(alias->name, $1)) {
253 ALLOC_LIST(head);
254 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
255 $1, 1, false, &@1, NULL));
256 list_add_tail(&term->list, head);
257
258 if (!parse_events_add_pmu(data, list,
259 pmu->name, head)) {
260 pr_debug("%s -> %s/%s/\n", $1,
261 pmu->name, alias->str);
262 ok++;
263 }
264
265 parse_events_terms__delete(head);
266 }
267 }
268 }
269 if (!ok)
270 YYABORT;
248 $$ = list; 271 $$ = list;
249} 272}
250| 273|
@@ -259,7 +282,7 @@ PE_PMU_EVENT_PRE '-' PE_PMU_EVENT_SUF sep_dc
259 282
260 ALLOC_LIST(head); 283 ALLOC_LIST(head);
261 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 284 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
262 &pmu_name, 1, &@1, NULL)); 285 &pmu_name, 1, false, &@1, NULL));
263 list_add_tail(&term->list, head); 286 list_add_tail(&term->list, head);
264 287
265 ALLOC_LIST(list); 288 ALLOC_LIST(list);
@@ -525,7 +548,7 @@ PE_NAME '=' PE_VALUE
525 struct parse_events_term *term; 548 struct parse_events_term *term;
526 549
527 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 550 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
528 $1, $3, &@1, &@3)); 551 $1, $3, false, &@1, &@3));
529 $$ = term; 552 $$ = term;
530} 553}
531| 554|
@@ -543,7 +566,7 @@ PE_NAME
543 struct parse_events_term *term; 566 struct parse_events_term *term;
544 567
545 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 568 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
546 $1, 1, &@1, NULL)); 569 $1, 1, true, &@1, NULL));
547 $$ = term; 570 $$ = term;
548} 571}
549| 572|
@@ -568,7 +591,7 @@ PE_TERM '=' PE_VALUE
568{ 591{
569 struct parse_events_term *term; 592 struct parse_events_term *term;
570 593
571 ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, $3, &@1, &@3)); 594 ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, $3, false, &@1, &@3));
572 $$ = term; 595 $$ = term;
573} 596}
574| 597|
@@ -576,7 +599,7 @@ PE_TERM
576{ 599{
577 struct parse_events_term *term; 600 struct parse_events_term *term;
578 601
579 ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, 1, &@1, NULL)); 602 ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, 1, true, &@1, NULL));
580 $$ = term; 603 $$ = term;
581} 604}
582| 605|
@@ -597,7 +620,7 @@ PE_NAME array '=' PE_VALUE
597 struct parse_events_term *term; 620 struct parse_events_term *term;
598 621
599 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 622 ABORT_ON(parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER,
600 $1, $4, &@1, &@4)); 623 $1, $4, false, &@1, &@4));
601 term->array = $2; 624 term->array = $2;
602 $$ = term; 625 $$ = term;
603} 626}
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 b1474dcadfa2..12f84dd2ac5d 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -94,32 +94,10 @@ static int pmu_format(const char *name, struct list_head *format)
94 return 0; 94 return 0;
95} 95}
96 96
97static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *name) 97static int convert_scale(const char *scale, char **end, double *sval)
98{ 98{
99 struct stat st;
100 ssize_t sret;
101 char scale[128];
102 int fd, ret = -1;
103 char path[PATH_MAX];
104 char *lc; 99 char *lc;
105 100 int ret = 0;
106 snprintf(path, PATH_MAX, "%s/%s.scale", dir, name);
107
108 fd = open(path, O_RDONLY);
109 if (fd == -1)
110 return -1;
111
112 if (fstat(fd, &st) < 0)
113 goto error;
114
115 sret = read(fd, scale, sizeof(scale)-1);
116 if (sret < 0)
117 goto error;
118
119 if (scale[sret - 1] == '\n')
120 scale[sret - 1] = '\0';
121 else
122 scale[sret] = '\0';
123 101
124 /* 102 /*
125 * save current locale 103 * save current locale
@@ -134,7 +112,7 @@ static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *
134 lc = strdup(lc); 112 lc = strdup(lc);
135 if (!lc) { 113 if (!lc) {
136 ret = -ENOMEM; 114 ret = -ENOMEM;
137 goto error; 115 goto out;
138 } 116 }
139 117
140 /* 118 /*
@@ -144,14 +122,42 @@ static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *
144 */ 122 */
145 setlocale(LC_NUMERIC, "C"); 123 setlocale(LC_NUMERIC, "C");
146 124
147 alias->scale = strtod(scale, NULL); 125 *sval = strtod(scale, end);
148 126
127out:
149 /* restore locale */ 128 /* restore locale */
150 setlocale(LC_NUMERIC, lc); 129 setlocale(LC_NUMERIC, lc);
151
152 free(lc); 130 free(lc);
131 return ret;
132}
153 133
154 ret = 0; 134static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *name)
135{
136 struct stat st;
137 ssize_t sret;
138 char scale[128];
139 int fd, ret = -1;
140 char path[PATH_MAX];
141
142 snprintf(path, PATH_MAX, "%s/%s.scale", dir, name);
143
144 fd = open(path, O_RDONLY);
145 if (fd == -1)
146 return -1;
147
148 if (fstat(fd, &st) < 0)
149 goto error;
150
151 sret = read(fd, scale, sizeof(scale)-1);
152 if (sret < 0)
153 goto error;
154
155 if (scale[sret - 1] == '\n')
156 scale[sret - 1] = '\0';
157 else
158 scale[sret] = '\0';
159
160 ret = convert_scale(scale, NULL, &alias->scale);
155error: 161error:
156 close(fd); 162 close(fd);
157 return ret; 163 return ret;
@@ -223,11 +229,13 @@ static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias,
223} 229}
224 230
225static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name, 231static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
226 char *desc, char *val, char *long_desc, 232 char *desc, char *val,
227 char *topic) 233 char *long_desc, char *topic,
234 char *unit, char *perpkg)
228{ 235{
229 struct perf_pmu_alias *alias; 236 struct perf_pmu_alias *alias;
230 int ret; 237 int ret;
238 int num;
231 239
232 alias = malloc(sizeof(*alias)); 240 alias = malloc(sizeof(*alias));
233 if (!alias) 241 if (!alias)
@@ -261,6 +269,13 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
261 alias->long_desc = long_desc ? strdup(long_desc) : 269 alias->long_desc = long_desc ? strdup(long_desc) :
262 desc ? strdup(desc) : NULL; 270 desc ? strdup(desc) : NULL;
263 alias->topic = topic ? strdup(topic) : NULL; 271 alias->topic = topic ? strdup(topic) : NULL;
272 if (unit) {
273 if (convert_scale(unit, &unit, &alias->scale) < 0)
274 return -1;
275 snprintf(alias->unit, sizeof(alias->unit), "%s", unit);
276 }
277 alias->per_pkg = perpkg && sscanf(perpkg, "%d", &num) == 1 && num == 1;
278 alias->str = strdup(val);
264 279
265 list_add_tail(&alias->list, list); 280 list_add_tail(&alias->list, list);
266 281
@@ -278,7 +293,8 @@ static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FI
278 293
279 buf[ret] = 0; 294 buf[ret] = 0;
280 295
281 return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL); 296 return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL, NULL,
297 NULL);
282} 298}
283 299
284static inline bool pmu_alias_info_file(char *name) 300static inline bool pmu_alias_info_file(char *name)
@@ -498,12 +514,13 @@ char * __weak get_cpuid_str(void)
498 * to the current running CPU. Then, add all PMU events from that table 514 * to the current running CPU. Then, add all PMU events from that table
499 * as aliases. 515 * as aliases.
500 */ 516 */
501static void pmu_add_cpu_aliases(struct list_head *head) 517static void pmu_add_cpu_aliases(struct list_head *head, const char *name)
502{ 518{
503 int i; 519 int i;
504 struct pmu_events_map *map; 520 struct pmu_events_map *map;
505 struct pmu_event *pe; 521 struct pmu_event *pe;
506 char *cpuid; 522 char *cpuid;
523 static bool printed;
507 524
508 cpuid = getenv("PERF_CPUID"); 525 cpuid = getenv("PERF_CPUID");
509 if (cpuid) 526 if (cpuid)
@@ -513,7 +530,10 @@ static void pmu_add_cpu_aliases(struct list_head *head)
513 if (!cpuid) 530 if (!cpuid)
514 return; 531 return;
515 532
516 pr_debug("Using CPUID %s\n", cpuid); 533 if (!printed) {
534 pr_debug("Using CPUID %s\n", cpuid);
535 printed = true;
536 }
517 537
518 i = 0; 538 i = 0;
519 while (1) { 539 while (1) {
@@ -530,14 +550,21 @@ static void pmu_add_cpu_aliases(struct list_head *head)
530 */ 550 */
531 i = 0; 551 i = 0;
532 while (1) { 552 while (1) {
553 const char *pname;
554
533 pe = &map->table[i++]; 555 pe = &map->table[i++];
534 if (!pe->name) 556 if (!pe->name)
535 break; 557 break;
536 558
559 pname = pe->pmu ? pe->pmu : "cpu";
560 if (strncmp(pname, name, strlen(pname)))
561 continue;
562
537 /* need type casts to override 'const' */ 563 /* need type casts to override 'const' */
538 __perf_pmu__new_alias(head, NULL, (char *)pe->name, 564 __perf_pmu__new_alias(head, NULL, (char *)pe->name,
539 (char *)pe->desc, (char *)pe->event, 565 (char *)pe->desc, (char *)pe->event,
540 (char *)pe->long_desc, (char *)pe->topic); 566 (char *)pe->long_desc, (char *)pe->topic,
567 (char *)pe->unit, (char *)pe->perpkg);
541 } 568 }
542 569
543out: 570out:
@@ -565,15 +592,16 @@ static struct perf_pmu *pmu_lookup(const char *name)
565 if (pmu_format(name, &format)) 592 if (pmu_format(name, &format))
566 return NULL; 593 return NULL;
567 594
568 if (pmu_aliases(name, &aliases)) 595 /*
596 * Check the type first to avoid unnecessary work.
597 */
598 if (pmu_type(name, &type))
569 return NULL; 599 return NULL;
570 600
571 if (!strcmp(name, "cpu")) 601 if (pmu_aliases(name, &aliases))
572 pmu_add_cpu_aliases(&aliases);
573
574 if (pmu_type(name, &type))
575 return NULL; 602 return NULL;
576 603
604 pmu_add_cpu_aliases(&aliases, name);
577 pmu = zalloc(sizeof(*pmu)); 605 pmu = zalloc(sizeof(*pmu));
578 if (!pmu) 606 if (!pmu)
579 return NULL; 607 return NULL;
@@ -717,7 +745,7 @@ static int pmu_resolve_param_term(struct parse_events_term *term,
717 } 745 }
718 } 746 }
719 747
720 if (verbose) 748 if (verbose > 0)
721 printf("Required parameter '%s' not specified\n", term->config); 749 printf("Required parameter '%s' not specified\n", term->config);
722 750
723 return -1; 751 return -1;
@@ -775,7 +803,7 @@ static int pmu_config_term(struct list_head *formats,
775 803
776 format = pmu_find_format(formats, term->config); 804 format = pmu_find_format(formats, term->config);
777 if (!format) { 805 if (!format) {
778 if (verbose) 806 if (verbose > 0)
779 printf("Invalid event/parameter '%s'\n", term->config); 807 printf("Invalid event/parameter '%s'\n", term->config);
780 if (err) { 808 if (err) {
781 char *pmu_term = pmu_formats_string(formats); 809 char *pmu_term = pmu_formats_string(formats);
@@ -806,11 +834,20 @@ static int pmu_config_term(struct list_head *formats,
806 * Either directly use a numeric term, or try to translate string terms 834 * Either directly use a numeric term, or try to translate string terms
807 * using event parameters. 835 * using event parameters.
808 */ 836 */
809 if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM) 837 if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM) {
838 if (term->no_value &&
839 bitmap_weight(format->bits, PERF_PMU_FORMAT_BITS) > 1) {
840 if (err) {
841 err->idx = term->err_val;
842 err->str = strdup("no value assigned for term");
843 }
844 return -EINVAL;
845 }
846
810 val = term->val.num; 847 val = term->val.num;
811 else if (term->type_val == PARSE_EVENTS__TERM_TYPE_STR) { 848 } else if (term->type_val == PARSE_EVENTS__TERM_TYPE_STR) {
812 if (strcmp(term->val.str, "?")) { 849 if (strcmp(term->val.str, "?")) {
813 if (verbose) { 850 if (verbose > 0) {
814 pr_info("Invalid sysfs entry %s=%s\n", 851 pr_info("Invalid sysfs entry %s=%s\n",
815 term->config, term->val.str); 852 term->config, term->val.str);
816 } 853 }
@@ -917,12 +954,12 @@ static int check_info_data(struct perf_pmu_alias *alias,
917 * define unit, scale and snapshot, fail 954 * define unit, scale and snapshot, fail
918 * if there's more than one. 955 * if there's more than one.
919 */ 956 */
920 if ((info->unit && alias->unit) || 957 if ((info->unit && alias->unit[0]) ||
921 (info->scale && alias->scale) || 958 (info->scale && alias->scale) ||
922 (info->snapshot && alias->snapshot)) 959 (info->snapshot && alias->snapshot))
923 return -EINVAL; 960 return -EINVAL;
924 961
925 if (alias->unit) 962 if (alias->unit[0])
926 info->unit = alias->unit; 963 info->unit = alias->unit;
927 964
928 if (alias->scale) 965 if (alias->scale)
@@ -1061,6 +1098,8 @@ struct sevent {
1061 char *name; 1098 char *name;
1062 char *desc; 1099 char *desc;
1063 char *topic; 1100 char *topic;
1101 char *str;
1102 char *pmu;
1064}; 1103};
1065 1104
1066static int cmp_sevent(const void *a, const void *b) 1105static int cmp_sevent(const void *a, const void *b)
@@ -1135,9 +1174,11 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
1135 bool is_cpu = !strcmp(pmu->name, "cpu"); 1174 bool is_cpu = !strcmp(pmu->name, "cpu");
1136 1175
1137 if (event_glob != NULL && 1176 if (event_glob != NULL &&
1138 !(strglobmatch(name, event_glob) || 1177 !(strglobmatch_nocase(name, event_glob) ||
1139 (!is_cpu && strglobmatch(alias->name, 1178 (!is_cpu && strglobmatch_nocase(alias->name,
1140 event_glob)))) 1179 event_glob)) ||
1180 (alias->topic &&
1181 strglobmatch_nocase(alias->topic, event_glob))))
1141 continue; 1182 continue;
1142 1183
1143 if (is_cpu && !name_only && !alias->desc) 1184 if (is_cpu && !name_only && !alias->desc)
@@ -1155,6 +1196,8 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
1155 aliases[j].desc = long_desc ? alias->long_desc : 1196 aliases[j].desc = long_desc ? alias->long_desc :
1156 alias->desc; 1197 alias->desc;
1157 aliases[j].topic = alias->topic; 1198 aliases[j].topic = alias->topic;
1199 aliases[j].str = alias->str;
1200 aliases[j].pmu = pmu->name;
1158 j++; 1201 j++;
1159 } 1202 }
1160 if (pmu->selectable && 1203 if (pmu->selectable &&
@@ -1169,6 +1212,9 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
1169 len = j; 1212 len = j;
1170 qsort(aliases, len, sizeof(struct sevent), cmp_sevent); 1213 qsort(aliases, len, sizeof(struct sevent), cmp_sevent);
1171 for (j = 0; j < len; j++) { 1214 for (j = 0; j < len; j++) {
1215 /* Skip duplicates */
1216 if (j > 0 && !strcmp(aliases[j].name, aliases[j - 1].name))
1217 continue;
1172 if (name_only) { 1218 if (name_only) {
1173 printf("%s ", aliases[j].name); 1219 printf("%s ", aliases[j].name);
1174 continue; 1220 continue;
@@ -1186,6 +1232,8 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
1186 printf("%*s", 8, "["); 1232 printf("%*s", 8, "[");
1187 wordwrap(aliases[j].desc, 8, columns, 0); 1233 wordwrap(aliases[j].desc, 8, columns, 0);
1188 printf("]\n"); 1234 printf("]\n");
1235 if (verbose > 0)
1236 printf("%*s%s/%s/\n", 8, "", aliases[j].pmu, aliases[j].str);
1189 } else 1237 } else
1190 printf(" %-50s [Kernel PMU event]\n", aliases[j].name); 1238 printf(" %-50s [Kernel PMU event]\n", aliases[j].name);
1191 printed++; 1239 printed++;
diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
index 25712034c815..00852ddc7741 100644
--- a/tools/perf/util/pmu.h
+++ b/tools/perf/util/pmu.h
@@ -43,6 +43,7 @@ struct perf_pmu_alias {
43 char *desc; 43 char *desc;
44 char *long_desc; 44 char *long_desc;
45 char *topic; 45 char *topic;
46 char *str;
46 struct list_head terms; /* HEAD struct parse_events_term -> list */ 47 struct list_head terms; /* HEAD struct parse_events_term -> list */
47 struct list_head list; /* ELEM */ 48 struct list_head list; /* ELEM */
48 char unit[UNIT_MAX_LEN+1]; 49 char unit[UNIT_MAX_LEN+1];
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index d281ae2b54e8..28fb62c32678 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -163,7 +163,7 @@ static struct map *kernel_get_module_map(const char *module)
163 163
164 /* A file path -- this is an offline module */ 164 /* A file path -- this is an offline module */
165 if (module && strchr(module, '/')) 165 if (module && strchr(module, '/'))
166 return machine__findnew_module_map(host_machine, 0, module); 166 return dso__new_map(module);
167 167
168 if (!module) 168 if (!module)
169 module = "kernel"; 169 module = "kernel";
@@ -173,6 +173,7 @@ static struct map *kernel_get_module_map(const char *module)
173 if (strncmp(pos->dso->short_name + 1, module, 173 if (strncmp(pos->dso->short_name + 1, module,
174 pos->dso->short_name_len - 2) == 0 && 174 pos->dso->short_name_len - 2) == 0 &&
175 module[pos->dso->short_name_len - 2] == '\0') { 175 module[pos->dso->short_name_len - 2] == '\0') {
176 map__get(pos);
176 return pos; 177 return pos;
177 } 178 }
178 } 179 }
@@ -188,15 +189,6 @@ struct map *get_target_map(const char *target, bool user)
188 return kernel_get_module_map(target); 189 return kernel_get_module_map(target);
189} 190}
190 191
191static void put_target_map(struct map *map, bool user)
192{
193 if (map && user) {
194 /* Only the user map needs to be released */
195 map__put(map);
196 }
197}
198
199
200static int convert_exec_to_group(const char *exec, char **result) 192static int convert_exec_to_group(const char *exec, char **result)
201{ 193{
202 char *ptr1, *ptr2, *exec_copy; 194 char *ptr1, *ptr2, *exec_copy;
@@ -268,21 +260,6 @@ static bool kprobe_warn_out_range(const char *symbol, unsigned long address)
268} 260}
269 261
270/* 262/*
271 * NOTE:
272 * '.gnu.linkonce.this_module' section of kernel module elf directly
273 * maps to 'struct module' from linux/module.h. This section contains
274 * actual module name which will be used by kernel after loading it.
275 * But, we cannot use 'struct module' here since linux/module.h is not
276 * exposed to user-space. Offset of 'name' has remained same from long
277 * time, so hardcoding it here.
278 */
279#ifdef __LP64__
280#define MOD_NAME_OFFSET 24
281#else
282#define MOD_NAME_OFFSET 12
283#endif
284
285/*
286 * @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,
287 * inspect elf and find out what is actual module name. 264 * inspect elf and find out what is actual module name.
288 * Caller has to free mod_name after using it. 265 * Caller has to free mod_name after using it.
@@ -296,6 +273,7 @@ static char *find_module_name(const char *module)
296 Elf_Data *data; 273 Elf_Data *data;
297 Elf_Scn *sec; 274 Elf_Scn *sec;
298 char *mod_name = NULL; 275 char *mod_name = NULL;
276 int name_offset;
299 277
300 fd = open(module, O_RDONLY); 278 fd = open(module, O_RDONLY);
301 if (fd < 0) 279 if (fd < 0)
@@ -317,7 +295,21 @@ static char *find_module_name(const char *module)
317 if (!data || !data->d_buf) 295 if (!data || !data->d_buf)
318 goto ret_err; 296 goto ret_err;
319 297
320 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);
321 313
322ret_err: 314ret_err:
323 elf_end(elf); 315 elf_end(elf);
@@ -412,7 +404,7 @@ static int find_alternative_probe_point(struct debuginfo *dinfo,
412 } 404 }
413 405
414out: 406out:
415 put_target_map(map, uprobes); 407 map__put(map);
416 return ret; 408 return ret;
417 409
418} 410}
@@ -602,7 +594,7 @@ static int find_perf_probe_point_from_dwarf(struct probe_trace_point *tp,
602 pr_debug("try to find information at %" PRIx64 " in %s\n", addr, 594 pr_debug("try to find information at %" PRIx64 " in %s\n", addr,
603 tp->module ? : "kernel"); 595 tp->module ? : "kernel");
604 596
605 dinfo = debuginfo_cache__open(tp->module, verbose == 0); 597 dinfo = debuginfo_cache__open(tp->module, verbose <= 0);
606 if (dinfo) 598 if (dinfo)
607 ret = debuginfo__find_probe_point(dinfo, 599 ret = debuginfo__find_probe_point(dinfo,
608 (unsigned long)addr, pp); 600 (unsigned long)addr, pp);
@@ -618,6 +610,67 @@ error:
618 return ret ? : -ENOENT; 610 return ret ? : -ENOENT;
619} 611}
620 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
621static 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,
622 int ntevs, const char *exec) 675 int ntevs, const char *exec)
623{ 676{
@@ -645,18 +698,31 @@ static int add_exec_to_probe_trace_events(struct probe_trace_event *tevs,
645 return ret; 698 return ret;
646} 699}
647 700
648static int add_module_to_probe_trace_events(struct probe_trace_event *tevs, 701static int
649 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)
650{ 705{
706 Dwarf_Addr text_offs = 0;
651 int i, ret = 0; 707 int i, ret = 0;
652 char *mod_name = NULL; 708 char *mod_name = NULL;
709 struct map *map;
653 710
654 if (!module) 711 if (!module)
655 return 0; 712 return 0;
656 713
657 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 }
658 719
720 mod_name = find_module_name(module);
659 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;
660 tevs[i].point.module = 726 tevs[i].point.module =
661 strdup(mod_name ? mod_name : module); 727 strdup(mod_name ? mod_name : module);
662 if (!tevs[i].point.module) { 728 if (!tevs[i].point.module) {
@@ -666,6 +732,8 @@ static int add_module_to_probe_trace_events(struct probe_trace_event *tevs,
666 } 732 }
667 733
668 free(mod_name); 734 free(mod_name);
735 map__put(map);
736
669 return ret; 737 return ret;
670} 738}
671 739
@@ -679,7 +747,8 @@ post_process_kernel_probe_trace_events(struct probe_trace_event *tevs,
679 747
680 /* Skip post process if the target is an offline kernel */ 748 /* Skip post process if the target is an offline kernel */
681 if (symbol_conf.ignore_vmlinux_buildid) 749 if (symbol_conf.ignore_vmlinux_buildid)
682 return 0; 750 return post_process_offline_probe_trace_events(tevs, ntevs,
751 symbol_conf.vmlinux_name);
683 752
684 reloc_sym = kernel_get_ref_reloc_sym(); 753 reloc_sym = kernel_get_ref_reloc_sym();
685 if (!reloc_sym) { 754 if (!reloc_sym) {
@@ -722,7 +791,7 @@ arch__post_process_probe_trace_events(struct perf_probe_event *pev __maybe_unuse
722static int post_process_probe_trace_events(struct perf_probe_event *pev, 791static int post_process_probe_trace_events(struct perf_probe_event *pev,
723 struct probe_trace_event *tevs, 792 struct probe_trace_event *tevs,
724 int ntevs, const char *module, 793 int ntevs, const char *module,
725 bool uprobe) 794 bool uprobe, struct debuginfo *dinfo)
726{ 795{
727 int ret; 796 int ret;
728 797
@@ -730,7 +799,8 @@ static int post_process_probe_trace_events(struct perf_probe_event *pev,
730 ret = add_exec_to_probe_trace_events(tevs, ntevs, module); 799 ret = add_exec_to_probe_trace_events(tevs, ntevs, module);
731 else if (module) 800 else if (module)
732 /* Currently ref_reloc_sym based probe is not for drivers */ 801 /* Currently ref_reloc_sym based probe is not for drivers */
733 ret = add_module_to_probe_trace_events(tevs, ntevs, module); 802 ret = post_process_module_probe_trace_events(tevs, ntevs,
803 module, dinfo);
734 else 804 else
735 ret = post_process_kernel_probe_trace_events(tevs, ntevs); 805 ret = post_process_kernel_probe_trace_events(tevs, ntevs);
736 806
@@ -774,30 +844,27 @@ static int try_to_find_probe_trace_events(struct perf_probe_event *pev,
774 } 844 }
775 } 845 }
776 846
777 debuginfo__delete(dinfo);
778
779 if (ntevs > 0) { /* Succeeded to find trace events */ 847 if (ntevs > 0) { /* Succeeded to find trace events */
780 pr_debug("Found %d probe_trace_events.\n", ntevs); 848 pr_debug("Found %d probe_trace_events.\n", ntevs);
781 ret = post_process_probe_trace_events(pev, *tevs, ntevs, 849 ret = post_process_probe_trace_events(pev, *tevs, ntevs,
782 pev->target, pev->uprobes); 850 pev->target, pev->uprobes, dinfo);
783 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);
784 clear_probe_trace_events(*tevs, ntevs); 853 clear_probe_trace_events(*tevs, ntevs);
785 zfree(tevs); 854 zfree(tevs);
855 ntevs = 0;
786 } 856 }
787 if (ret != ntevs)
788 return ret < 0 ? ret : ntevs;
789 ntevs = 0;
790 /* Fall through */
791 } 857 }
792 858
859 debuginfo__delete(dinfo);
860
793 if (ntevs == 0) { /* No error but failed to find probe point. */ 861 if (ntevs == 0) { /* No error but failed to find probe point. */
794 pr_warning("Probe point '%s' not found.\n", 862 pr_warning("Probe point '%s' not found.\n",
795 synthesize_perf_probe_point(&pev->point)); 863 synthesize_perf_probe_point(&pev->point));
796 return -ENOENT; 864 return -ENOENT;
797 } 865 } else if (ntevs < 0) {
798 /* Error path : ntevs < 0 */ 866 /* Error path : ntevs < 0 */
799 pr_debug("An error occurred in debuginfo analysis (%d).\n", ntevs); 867 pr_debug("An error occurred in debuginfo analysis (%d).\n", ntevs);
800 if (ntevs < 0) {
801 if (ntevs == -EBADF) 868 if (ntevs == -EBADF)
802 pr_warning("Warning: No dwarf info found in the vmlinux - " 869 pr_warning("Warning: No dwarf info found in the vmlinux - "
803 "please rebuild kernel with CONFIG_DEBUG_INFO=y.\n"); 870 "please rebuild kernel with CONFIG_DEBUG_INFO=y.\n");
@@ -1994,7 +2061,7 @@ static int find_perf_probe_point_from_map(struct probe_trace_point *tp,
1994 bool is_kprobe) 2061 bool is_kprobe)
1995{ 2062{
1996 struct symbol *sym = NULL; 2063 struct symbol *sym = NULL;
1997 struct map *map; 2064 struct map *map = NULL;
1998 u64 addr = tp->address; 2065 u64 addr = tp->address;
1999 int ret = -ENOENT; 2066 int ret = -ENOENT;
2000 2067
@@ -2869,7 +2936,7 @@ static int find_probe_trace_events_from_map(struct perf_probe_event *pev,
2869 } 2936 }
2870 2937
2871out: 2938out:
2872 put_target_map(map, pev->uprobes); 2939 map__put(map);
2873 free(syms); 2940 free(syms);
2874 return ret; 2941 return ret;
2875 2942
@@ -2956,20 +3023,17 @@ static int try_to_find_absolute_address(struct perf_probe_event *pev,
2956 3023
2957 tev->nargs = pev->nargs; 3024 tev->nargs = pev->nargs;
2958 tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs); 3025 tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs);
2959 if (!tev->args) { 3026 if (!tev->args)
2960 err = -ENOMEM;
2961 goto errout; 3027 goto errout;
2962 } 3028
2963 for (i = 0; i < tev->nargs; i++) 3029 for (i = 0; i < tev->nargs; i++)
2964 copy_to_probe_trace_arg(&tev->args[i], &pev->args[i]); 3030 copy_to_probe_trace_arg(&tev->args[i], &pev->args[i]);
2965 3031
2966 return 1; 3032 return 1;
2967 3033
2968errout: 3034errout:
2969 if (*tevs) { 3035 clear_probe_trace_events(*tevs, 1);
2970 clear_probe_trace_events(*tevs, 1); 3036 *tevs = NULL;
2971 *tevs = NULL;
2972 }
2973 return err; 3037 return err;
2974} 3038}
2975 3039
@@ -3362,10 +3426,7 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
3362 return ret; 3426 return ret;
3363 3427
3364 /* Get a symbol map */ 3428 /* Get a symbol map */
3365 if (user) 3429 map = get_target_map(target, user);
3366 map = dso__new_map(target);
3367 else
3368 map = kernel_get_module_map(target);
3369 if (!map) { 3430 if (!map) {
3370 pr_err("Failed to get a map for %s\n", (target) ? : "kernel"); 3431 pr_err("Failed to get a map for %s\n", (target) ? : "kernel");
3371 return -EINVAL; 3432 return -EINVAL;
@@ -3397,9 +3458,7 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
3397 } 3458 }
3398 3459
3399end: 3460end:
3400 if (user) { 3461 map__put(map);
3401 map__put(map);
3402 }
3403 exit_probe_symbol_maps(); 3462 exit_probe_symbol_maps();
3404 3463
3405 return ret; 3464 return ret;
diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h
index 8091d15113f7..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) */
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index df4debe564da..57cd268d4275 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -464,7 +464,7 @@ static int convert_variable_fields(Dwarf_Die *vr_die, const char *varname,
464 /* Verify it is a data structure */ 464 /* Verify it is a data structure */
465 tag = dwarf_tag(&type); 465 tag = dwarf_tag(&type);
466 if (tag != DW_TAG_structure_type && tag != DW_TAG_union_type) { 466 if (tag != DW_TAG_structure_type && tag != DW_TAG_union_type) {
467 pr_warning("%s is not a data structure nor an union.\n", 467 pr_warning("%s is not a data structure nor a union.\n",
468 varname); 468 varname);
469 return -EINVAL; 469 return -EINVAL;
470 } 470 }
@@ -479,7 +479,7 @@ static int convert_variable_fields(Dwarf_Die *vr_die, const char *varname,
479 } else { 479 } else {
480 /* Verify it is a data structure */ 480 /* Verify it is a data structure */
481 if (tag != DW_TAG_structure_type && tag != DW_TAG_union_type) { 481 if (tag != DW_TAG_structure_type && tag != DW_TAG_union_type) {
482 pr_warning("%s is not a data structure nor an union.\n", 482 pr_warning("%s is not a data structure nor a union.\n",
483 varname); 483 varname);
484 return -EINVAL; 484 return -EINVAL;
485 } 485 }
@@ -1501,7 +1501,8 @@ int debuginfo__find_available_vars_at(struct debuginfo *dbg,
1501} 1501}
1502 1502
1503/* 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 */
1504static 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)
1505{ 1506{
1506 int n, i; 1507 int n, i;
1507 Elf32_Word shndx; 1508 Elf32_Word shndx;
@@ -1530,6 +1531,8 @@ static int debuginfo__get_text_offset(struct debuginfo *dbg, Dwarf_Addr *offs)
1530 if (!shdr) 1531 if (!shdr)
1531 return -ENOENT; 1532 return -ENOENT;
1532 *offs = shdr->sh_addr; 1533 *offs = shdr->sh_addr;
1534 if (adjust_offset)
1535 *offs -= shdr->sh_offset;
1533 } 1536 }
1534 } 1537 }
1535 return 0; 1538 return 0;
@@ -1543,16 +1546,12 @@ int debuginfo__find_probe_point(struct debuginfo *dbg, unsigned long addr,
1543 Dwarf_Addr _addr = 0, baseaddr = 0; 1546 Dwarf_Addr _addr = 0, baseaddr = 0;
1544 const char *fname = NULL, *func = NULL, *basefunc = NULL, *tmp; 1547 const char *fname = NULL, *func = NULL, *basefunc = NULL, *tmp;
1545 int baseline = 0, lineno = 0, ret = 0; 1548 int baseline = 0, lineno = 0, ret = 0;
1546 bool reloc = false;
1547 1549
1548retry: 1550 /* We always need to relocate the address for aranges */
1551 if (debuginfo__get_text_offset(dbg, &baseaddr, false) == 0)
1552 addr += baseaddr;
1549 /* Find cu die */ 1553 /* Find cu die */
1550 if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr, &cudie)) { 1554 if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr, &cudie)) {
1551 if (!reloc && debuginfo__get_text_offset(dbg, &baseaddr) == 0) {
1552 addr += baseaddr;
1553 reloc = true;
1554 goto retry;
1555 }
1556 pr_warning("Failed to find debug information for address %lx\n", 1555 pr_warning("Failed to find debug information for address %lx\n",
1557 addr); 1556 addr);
1558 ret = -EINVAL; 1557 ret = -EINVAL;
diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h
index f1d8558f498e..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
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/Build b/tools/perf/util/scripting-engines/Build
index 6516e220c247..82d28c67e0f3 100644
--- a/tools/perf/util/scripting-engines/Build
+++ b/tools/perf/util/scripting-engines/Build
@@ -1,6 +1,6 @@
1libperf-$(CONFIG_LIBPERL) += trace-event-perl.o 1libperf-$(CONFIG_LIBPERL) += trace-event-perl.o
2libperf-$(CONFIG_LIBPYTHON) += trace-event-python.o 2libperf-$(CONFIG_LIBPYTHON) += trace-event-python.o
3 3
4CFLAGS_trace-event-perl.o += $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow -Wno-undef -Wno-switch-default 4CFLAGS_trace-event-perl.o += $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow -Wno-nested-externs -Wno-undef -Wno-switch-default
5 5
6CFLAGS_trace-event-python.o += $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow 6CFLAGS_trace-event-python.o += $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index e55a132f69b7..dff043a29589 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -217,6 +217,7 @@ static void define_event_symbols(struct event_format *event,
217 cur_field_name); 217 cur_field_name);
218 break; 218 break;
219 case PRINT_HEX: 219 case PRINT_HEX:
220 case PRINT_HEX_STR:
220 define_event_symbols(event, ev_name, args->hex.field); 221 define_event_symbols(event, ev_name, args->hex.field);
221 define_event_symbols(event, ev_name, args->hex.size); 222 define_event_symbols(event, ev_name, args->hex.size);
222 break; 223 break;
@@ -309,10 +310,10 @@ static SV *perl_process_callchain(struct perf_sample *sample,
309 if (node->map) { 310 if (node->map) {
310 struct map *map = node->map; 311 struct map *map = node->map;
311 const char *dsoname = "[unknown]"; 312 const char *dsoname = "[unknown]";
312 if (map && map->dso && (map->dso->name || map->dso->long_name)) { 313 if (map && map->dso) {
313 if (symbol_conf.show_kernel_path && map->dso->long_name) 314 if (symbol_conf.show_kernel_path && map->dso->long_name)
314 dsoname = map->dso->long_name; 315 dsoname = map->dso->long_name;
315 else if (map->dso->name) 316 else
316 dsoname = map->dso->name; 317 dsoname = map->dso->name;
317 } 318 }
318 if (!hv_stores(elem, "dso", newSVpv(dsoname,0))) { 319 if (!hv_stores(elem, "dso", newSVpv(dsoname,0))) {
@@ -350,8 +351,10 @@ static void perl_process_tracepoint(struct perf_sample *sample,
350 if (evsel->attr.type != PERF_TYPE_TRACEPOINT) 351 if (evsel->attr.type != PERF_TYPE_TRACEPOINT)
351 return; 352 return;
352 353
353 if (!event) 354 if (!event) {
354 die("ug! no event found for type %" PRIu64, (u64)evsel->attr.config); 355 pr_debug("ug! no event found for type %" PRIu64, (u64)evsel->attr.config);
356 return;
357 }
355 358
356 pid = raw_field_value(event, "common_pid", data); 359 pid = raw_field_value(event, "common_pid", data);
357 360
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 089438da1f7f..783326cfbaa6 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -236,6 +236,7 @@ static void define_event_symbols(struct event_format *event,
236 cur_field_name); 236 cur_field_name);
237 break; 237 break;
238 case PRINT_HEX: 238 case PRINT_HEX:
239 case PRINT_HEX_STR:
239 define_event_symbols(event, ev_name, args->hex.field); 240 define_event_symbols(event, ev_name, args->hex.field);
240 define_event_symbols(event, ev_name, args->hex.size); 241 define_event_symbols(event, ev_name, args->hex.size);
241 break; 242 break;
@@ -368,10 +369,10 @@ static PyObject *python_process_callchain(struct perf_sample *sample,
368 if (node->map) { 369 if (node->map) {
369 struct map *map = node->map; 370 struct map *map = node->map;
370 const char *dsoname = "[unknown]"; 371 const char *dsoname = "[unknown]";
371 if (map && map->dso && (map->dso->name || map->dso->long_name)) { 372 if (map && map->dso) {
372 if (symbol_conf.show_kernel_path && map->dso->long_name) 373 if (symbol_conf.show_kernel_path && map->dso->long_name)
373 dsoname = map->dso->long_name; 374 dsoname = map->dso->long_name;
374 else if (map->dso->name) 375 else
375 dsoname = map->dso->name; 376 dsoname = map->dso->name;
376 } 377 }
377 pydict_set_item_string_decref(pyelem, "dso", 378 pydict_set_item_string_decref(pyelem, "dso",
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 5d61242a6e64..1dd617d116b5 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -932,7 +932,7 @@ static void branch_stack__printf(struct perf_sample *sample)
932 932
933 printf("..... %2"PRIu64": %016" PRIx64 " -> %016" PRIx64 " %hu cycles %s%s%s%s %x\n", 933 printf("..... %2"PRIu64": %016" PRIx64 " -> %016" PRIx64 " %hu cycles %s%s%s%s %x\n",
934 i, e->from, e->to, 934 i, e->from, e->to,
935 e->flags.cycles, 935 (unsigned short)e->flags.cycles,
936 e->flags.mispred ? "M" : " ", 936 e->flags.mispred ? "M" : " ",
937 e->flags.predicted ? "P" : " ", 937 e->flags.predicted ? "P" : " ",
938 e->flags.abort ? "A" : " ", 938 e->flags.abort ? "A" : " ",
@@ -1191,7 +1191,7 @@ static int
1191 u64 sample_type = evsel->attr.sample_type; 1191 u64 sample_type = evsel->attr.sample_type;
1192 u64 read_format = evsel->attr.read_format; 1192 u64 read_format = evsel->attr.read_format;
1193 1193
1194 /* Standard sample delievery. */ 1194 /* Standard sample delivery. */
1195 if (!(sample_type & PERF_SAMPLE_READ)) 1195 if (!(sample_type & PERF_SAMPLE_READ))
1196 return tool->sample(tool, event, sample, evsel, machine); 1196 return tool->sample(tool, event, sample, evsel, machine);
1197 1197
@@ -1901,7 +1901,7 @@ int maps__set_kallsyms_ref_reloc_sym(struct map **maps,
1901 const char *symbol_name, u64 addr) 1901 const char *symbol_name, u64 addr)
1902{ 1902{
1903 char *bracket; 1903 char *bracket;
1904 enum map_type i; 1904 int i;
1905 struct ref_reloc_sym *ref; 1905 struct ref_reloc_sym *ref;
1906 1906
1907 ref = zalloc(sizeof(struct ref_reloc_sym)); 1907 ref = zalloc(sizeof(struct ref_reloc_sym));
@@ -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/setup.py b/tools/perf/util/setup.py
index c8680984d2d6..af415febbc46 100644
--- a/tools/perf/util/setup.py
+++ b/tools/perf/util/setup.py
@@ -1,8 +1,15 @@
1#!/usr/bin/python2 1#!/usr/bin/python2
2 2
3from distutils.core import setup, Extension
4from os import getenv 3from os import getenv
5 4
5cc = getenv("CC")
6if cc == "clang":
7 from _sysconfigdata import build_time_vars
8 from re import sub
9 build_time_vars["CFLAGS"] = sub("-specs=[^ ]+", "", build_time_vars["CFLAGS"])
10
11from distutils.core import setup, Extension
12
6from distutils.command.build_ext import build_ext as _build_ext 13from distutils.command.build_ext import build_ext as _build_ext
7from distutils.command.install_lib import install_lib as _install_lib 14from distutils.command.install_lib import install_lib as _install_lib
8 15
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 452e15a10dd2..0ff622288d24 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -151,7 +151,7 @@ static int64_t _sort__dso_cmp(struct map *map_l, struct map *map_r)
151 if (!dso_l || !dso_r) 151 if (!dso_l || !dso_r)
152 return cmp_null(dso_r, dso_l); 152 return cmp_null(dso_r, dso_l);
153 153
154 if (verbose) { 154 if (verbose > 0) {
155 dso_name_l = dso_l->long_name; 155 dso_name_l = dso_l->long_name;
156 dso_name_r = dso_r->long_name; 156 dso_name_r = dso_r->long_name;
157 } else { 157 } else {
@@ -172,8 +172,8 @@ static int _hist_entry__dso_snprintf(struct map *map, char *bf,
172 size_t size, unsigned int width) 172 size_t size, unsigned int width)
173{ 173{
174 if (map && map->dso) { 174 if (map && map->dso) {
175 const char *dso_name = !verbose ? map->dso->short_name : 175 const char *dso_name = verbose > 0 ? map->dso->long_name :
176 map->dso->long_name; 176 map->dso->short_name;
177 return repsep_snprintf(bf, size, "%-*.*s", width, width, dso_name); 177 return repsep_snprintf(bf, size, "%-*.*s", width, width, dso_name);
178 } 178 }
179 179
@@ -261,7 +261,7 @@ static int _hist_entry__sym_snprintf(struct map *map, struct symbol *sym,
261{ 261{
262 size_t ret = 0; 262 size_t ret = 0;
263 263
264 if (verbose) { 264 if (verbose > 0) {
265 char o = map ? dso__symtab_origin(map->dso) : '!'; 265 char o = map ? dso__symtab_origin(map->dso) : '!';
266 ret += repsep_snprintf(bf, size, "%-#*llx %c ", 266 ret += repsep_snprintf(bf, size, "%-#*llx %c ",
267 BITS_PER_LONG / 4 + 2, ip, o); 267 BITS_PER_LONG / 4 + 2, ip, o);
@@ -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
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 099c97557d33..796c847e2f00 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -108,7 +108,7 @@ struct hist_entry {
108 /* 108 /*
109 * Since perf diff only supports the stdio output, TUI 109 * Since perf diff only supports the stdio output, TUI
110 * fields are only accessed from perf report (or perf 110 * fields are only accessed from perf report (or perf
111 * top). So make it an union to reduce memory usage. 111 * top). So make it a union to reduce memory usage.
112 */ 112 */
113 struct hist_entry_diff diff; 113 struct hist_entry_diff diff;
114 struct /* for TUI */ { 114 struct /* for TUI */ {
@@ -280,4 +280,5 @@ int64_t
280sort__daddr_cmp(struct hist_entry *left, struct hist_entry *right); 280sort__daddr_cmp(struct hist_entry *left, struct hist_entry *right);
281int64_t 281int64_t
282sort__dcacheline_cmp(struct hist_entry *left, struct hist_entry *right); 282sort__dcacheline_cmp(struct hist_entry *left, struct hist_entry *right);
283char *hist_entry__get_srcline(struct hist_entry *he);
283#endif /* __PERF_SORT_H */ 284#endif /* __PERF_SORT_H */
diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
index 39345c2ddfc2..0d51334a9b46 100644
--- a/tools/perf/util/stat.c
+++ b/tools/perf/util/stat.c
@@ -344,7 +344,7 @@ int perf_stat_process_counter(struct perf_stat_config *config,
344 for (i = 0; i < 3; i++) 344 for (i = 0; i < 3; i++)
345 update_stats(&ps->res_stats[i], count[i]); 345 update_stats(&ps->res_stats[i], count[i]);
346 346
347 if (verbose) { 347 if (verbose > 0) {
348 fprintf(config->output, "%s: %" PRIu64 " %" PRIu64 " %" PRIu64 "\n", 348 fprintf(config->output, "%s: %" PRIu64 " %" PRIu64 " %" PRIu64 "\n",
349 perf_evsel__name(counter), count[0], count[1], count[2]); 349 perf_evsel__name(counter), count[0], count[1], count[2]);
350 } 350 }
diff --git a/tools/perf/util/strfilter.c b/tools/perf/util/strfilter.c
index bcae659b6546..efb53772e0ec 100644
--- a/tools/perf/util/strfilter.c
+++ b/tools/perf/util/strfilter.c
@@ -269,6 +269,7 @@ static int strfilter_node__sprint(struct strfilter_node *node, char *buf)
269 len = strfilter_node__sprint_pt(node->l, buf); 269 len = strfilter_node__sprint_pt(node->l, buf);
270 if (len < 0) 270 if (len < 0)
271 return len; 271 return len;
272 __fallthrough;
272 case '!': 273 case '!':
273 if (buf) { 274 if (buf) {
274 *(buf + len++) = *node->p; 275 *(buf + len++) = *node->p;
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c
index 7f7e072be746..bddca519dd58 100644
--- a/tools/perf/util/string.c
+++ b/tools/perf/util/string.c
@@ -21,6 +21,8 @@ s64 perf_atoll(const char *str)
21 case 'b': case 'B': 21 case 'b': case 'B':
22 if (*p) 22 if (*p)
23 goto out_err; 23 goto out_err;
24
25 __fallthrough;
24 case '\0': 26 case '\0':
25 return length; 27 return length;
26 default: 28 default:
@@ -193,7 +195,8 @@ error:
193} 195}
194 196
195/* Glob/lazy pattern matching */ 197/* Glob/lazy pattern matching */
196static bool __match_glob(const char *str, const char *pat, bool ignore_space) 198static bool __match_glob(const char *str, const char *pat, bool ignore_space,
199 bool case_ins)
197{ 200{
198 while (*str && *pat && *pat != '*') { 201 while (*str && *pat && *pat != '*') {
199 if (ignore_space) { 202 if (ignore_space) {
@@ -219,8 +222,13 @@ static bool __match_glob(const char *str, const char *pat, bool ignore_space)
219 return false; 222 return false;
220 else if (*pat == '\\') /* Escaped char match as normal char */ 223 else if (*pat == '\\') /* Escaped char match as normal char */
221 pat++; 224 pat++;
222 if (*str++ != *pat++) 225 if (case_ins) {
226 if (tolower(*str) != tolower(*pat))
227 return false;
228 } else if (*str != *pat)
223 return false; 229 return false;
230 str++;
231 pat++;
224 } 232 }
225 /* Check wild card */ 233 /* Check wild card */
226 if (*pat == '*') { 234 if (*pat == '*') {
@@ -229,7 +237,7 @@ static bool __match_glob(const char *str, const char *pat, bool ignore_space)
229 if (!*pat) /* Tail wild card matches all */ 237 if (!*pat) /* Tail wild card matches all */
230 return true; 238 return true;
231 while (*str) 239 while (*str)
232 if (__match_glob(str++, pat, ignore_space)) 240 if (__match_glob(str++, pat, ignore_space, case_ins))
233 return true; 241 return true;
234 } 242 }
235 return !*str && !*pat; 243 return !*str && !*pat;
@@ -249,7 +257,12 @@ static bool __match_glob(const char *str, const char *pat, bool ignore_space)
249 */ 257 */
250bool strglobmatch(const char *str, const char *pat) 258bool strglobmatch(const char *str, const char *pat)
251{ 259{
252 return __match_glob(str, pat, false); 260 return __match_glob(str, pat, false, false);
261}
262
263bool strglobmatch_nocase(const char *str, const char *pat)
264{
265 return __match_glob(str, pat, false, true);
253} 266}
254 267
255/** 268/**
@@ -262,7 +275,7 @@ bool strglobmatch(const char *str, const char *pat)
262 */ 275 */
263bool strlazymatch(const char *str, const char *pat) 276bool strlazymatch(const char *str, const char *pat)
264{ 277{
265 return __match_glob(str, pat, true); 278 return __match_glob(str, pat, true, false);
266} 279}
267 280
268/** 281/**
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 99400b0e8f2a..4e59ddeb4eda 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -213,7 +213,7 @@ static bool want_demangle(bool is_kernel_sym)
213 213
214static char *demangle_sym(struct dso *dso, int kmodule, const char *elf_name) 214static char *demangle_sym(struct dso *dso, int kmodule, const char *elf_name)
215{ 215{
216 int demangle_flags = verbose ? (DMGL_PARAMS | DMGL_ANSI) : DMGL_NO_OPTS; 216 int demangle_flags = verbose > 0 ? (DMGL_PARAMS | DMGL_ANSI) : DMGL_NO_OPTS;
217 char *demangled = NULL; 217 char *demangled = NULL;
218 218
219 /* 219 /*
@@ -537,6 +537,12 @@ int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
537 break; 537 break;
538 } else { 538 } else {
539 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 }
540 if (read(fd, bf, n) != n) 546 if (read(fd, bf, n) != n)
541 break; 547 break;
542 } 548 }
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index aecff69a510d..9b4d8ba22fed 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -202,7 +202,7 @@ void symbols__fixup_end(struct rb_root *symbols)
202 202
203 /* Last entry */ 203 /* Last entry */
204 if (curr->end == curr->start) 204 if (curr->end == curr->start)
205 curr->end = roundup(curr->start, 4096); 205 curr->end = roundup(curr->start, 4096) + 4096;
206} 206}
207 207
208void __map_groups__fixup_end(struct map_groups *mg, enum map_type type) 208void __map_groups__fixup_end(struct map_groups *mg, enum map_type type)
@@ -1459,9 +1459,12 @@ int dso__load(struct dso *dso, struct map *map)
1459 * Read the build id if possible. This is required for 1459 * Read the build id if possible. This is required for
1460 * DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work 1460 * DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work
1461 */ 1461 */
1462 if (is_regular_file(dso->long_name) && 1462 if (!dso->has_build_id &&
1463 filename__read_build_id(dso->long_name, build_id, BUILD_ID_SIZE) > 0) 1463 is_regular_file(dso->long_name)) {
1464 __symbol__join_symfs(name, PATH_MAX, dso->long_name);
1465 if (filename__read_build_id(name, build_id, BUILD_ID_SIZE) > 0)
1464 dso__set_build_id(dso, build_id); 1466 dso__set_build_id(dso, build_id);
1467 }
1465 1468
1466 /* 1469 /*
1467 * Iterate over candidate debug images. 1470 * Iterate over candidate debug images.
@@ -1962,7 +1965,7 @@ static bool symbol__read_kptr_restrict(void)
1962 char line[8]; 1965 char line[8];
1963 1966
1964 if (fgets(line, sizeof(line), fp) != NULL) 1967 if (fgets(line, sizeof(line), fp) != NULL)
1965 value = (geteuid() != 0) ? 1968 value = ((geteuid() != 0) || (getuid() != 0)) ?
1966 (atoi(line) != 0) : 1969 (atoi(line) != 0) :
1967 (atoi(line) == 2); 1970 (atoi(line) == 2);
1968 1971
@@ -2032,6 +2035,10 @@ int symbol__init(struct perf_env *env)
2032 symbol_conf.sym_list_str, "symbol") < 0) 2035 symbol_conf.sym_list_str, "symbol") < 0)
2033 goto out_free_tid_list; 2036 goto out_free_tid_list;
2034 2037
2038 if (setup_list(&symbol_conf.bt_stop_list,
2039 symbol_conf.bt_stop_list_str, "symbol") < 0)
2040 goto out_free_sym_list;
2041
2035 /* 2042 /*
2036 * A path to symbols of "/" is identical to "" 2043 * A path to symbols of "/" is identical to ""
2037 * reset here for simplicity. 2044 * reset here for simplicity.
@@ -2049,6 +2056,8 @@ int symbol__init(struct perf_env *env)
2049 symbol_conf.initialized = true; 2056 symbol_conf.initialized = true;
2050 return 0; 2057 return 0;
2051 2058
2059out_free_sym_list:
2060 strlist__delete(symbol_conf.sym_list);
2052out_free_tid_list: 2061out_free_tid_list:
2053 intlist__delete(symbol_conf.tid_list); 2062 intlist__delete(symbol_conf.tid_list);
2054out_free_pid_list: 2063out_free_pid_list:
@@ -2064,6 +2073,7 @@ void symbol__exit(void)
2064{ 2073{
2065 if (!symbol_conf.initialized) 2074 if (!symbol_conf.initialized)
2066 return; 2075 return;
2076 strlist__delete(symbol_conf.bt_stop_list);
2067 strlist__delete(symbol_conf.sym_list); 2077 strlist__delete(symbol_conf.sym_list);
2068 strlist__delete(symbol_conf.dso_list); 2078 strlist__delete(symbol_conf.dso_list);
2069 strlist__delete(symbol_conf.comm_list); 2079 strlist__delete(symbol_conf.comm_list);
@@ -2071,6 +2081,7 @@ void symbol__exit(void)
2071 intlist__delete(symbol_conf.pid_list); 2081 intlist__delete(symbol_conf.pid_list);
2072 vmlinux_path__exit(); 2082 vmlinux_path__exit();
2073 symbol_conf.sym_list = symbol_conf.dso_list = symbol_conf.comm_list = NULL; 2083 symbol_conf.sym_list = symbol_conf.dso_list = symbol_conf.comm_list = NULL;
2084 symbol_conf.bt_stop_list = NULL;
2074 symbol_conf.initialized = false; 2085 symbol_conf.initialized = false;
2075} 2086}
2076 2087
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index d964844eb314..6c358b7ed336 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -58,6 +58,7 @@ struct symbol {
58 u16 namelen; 58 u16 namelen;
59 u8 binding; 59 u8 binding;
60 u8 idle:1; 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};
@@ -100,6 +101,7 @@ struct symbol_conf {
100 show_total_period, 101 show_total_period,
101 use_callchain, 102 use_callchain,
102 cumulate_callchain, 103 cumulate_callchain,
104 show_branchflag_count,
103 exclude_other, 105 exclude_other,
104 show_cpu_utilization, 106 show_cpu_utilization,
105 initialized, 107 initialized,
@@ -130,14 +132,16 @@ struct symbol_conf {
130 *pid_list_str, 132 *pid_list_str,
131 *tid_list_str, 133 *tid_list_str,
132 *sym_list_str, 134 *sym_list_str,
133 *col_width_list_str; 135 *col_width_list_str,
136 *bt_stop_list_str;
134 struct strlist *dso_list, 137 struct strlist *dso_list,
135 *comm_list, 138 *comm_list,
136 *sym_list, 139 *sym_list,
137 *dso_from_list, 140 *dso_from_list,
138 *dso_to_list, 141 *dso_to_list,
139 *sym_from_list, 142 *sym_from_list,
140 *sym_to_list; 143 *sym_to_list,
144 *bt_stop_list;
141 struct intlist *pid_list, 145 struct intlist *pid_list,
142 *tid_list; 146 *tid_list;
143 const char *symfs; 147 const char *symfs;
@@ -281,7 +285,8 @@ int symbol__annotation_init(void);
281struct 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);
282size_t __symbol__fprintf_symname_offs(const struct symbol *sym, 286size_t __symbol__fprintf_symname_offs(const struct symbol *sym,
283 const struct addr_location *al, 287 const struct addr_location *al,
284 bool unknown_as_addr, FILE *fp); 288 bool unknown_as_addr,
289 bool print_offsets, FILE *fp);
285size_t symbol__fprintf_symname_offs(const struct symbol *sym, 290size_t symbol__fprintf_symname_offs(const struct symbol *sym,
286 const struct addr_location *al, FILE *fp); 291 const struct addr_location *al, FILE *fp);
287size_t __symbol__fprintf_symname(const struct symbol *sym, 292size_t __symbol__fprintf_symname(const struct symbol *sym,
diff --git a/tools/perf/util/symbol_fprintf.c b/tools/perf/util/symbol_fprintf.c
index a680bdaa65dc..63694e174e5c 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) {
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_map.c b/tools/perf/util/thread_map.c
index 40585f5b7027..7c3fcc538a70 100644
--- a/tools/perf/util/thread_map.c
+++ b/tools/perf/util/thread_map.c
@@ -93,7 +93,7 @@ struct thread_map *thread_map__new_by_uid(uid_t uid)
93{ 93{
94 DIR *proc; 94 DIR *proc;
95 int max_threads = 32, items, i; 95 int max_threads = 32, items, i;
96 char path[256]; 96 char path[NAME_MAX + 1 + 6];
97 struct dirent *dirent, **namelist = NULL; 97 struct dirent *dirent, **namelist = NULL;
98 struct thread_map *threads = thread_map__alloc(max_threads); 98 struct thread_map *threads = thread_map__alloc(max_threads);
99 99
@@ -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-info.c b/tools/perf/util/trace-event-info.c
index d995743cb673..e7d60d05596d 100644
--- a/tools/perf/util/trace-event-info.c
+++ b/tools/perf/util/trace-event-info.c
@@ -42,7 +42,7 @@
42#include "evsel.h" 42#include "evsel.h"
43#include "debug.h" 43#include "debug.h"
44 44
45#define VERSION "0.5" 45#define VERSION "0.6"
46 46
47static int output_fd; 47static int output_fd;
48 48
@@ -170,6 +170,12 @@ static bool name_in_tp_list(char *sys, struct tracepoint_path *tps)
170 return false; 170 return false;
171} 171}
172 172
173#define for_each_event(dir, dent, tps) \
174 while ((dent = readdir(dir))) \
175 if (dent->d_type == DT_DIR && \
176 (strcmp(dent->d_name, ".")) && \
177 (strcmp(dent->d_name, ".."))) \
178
173static int copy_event_system(const char *sys, struct tracepoint_path *tps) 179static int copy_event_system(const char *sys, struct tracepoint_path *tps)
174{ 180{
175 struct dirent *dent; 181 struct dirent *dent;
@@ -186,12 +192,10 @@ static int copy_event_system(const char *sys, struct tracepoint_path *tps)
186 return -errno; 192 return -errno;
187 } 193 }
188 194
189 while ((dent = readdir(dir))) { 195 for_each_event(dir, dent, tps) {
190 if (dent->d_type != DT_DIR || 196 if (!name_in_tp_list(dent->d_name, tps))
191 strcmp(dent->d_name, ".") == 0 ||
192 strcmp(dent->d_name, "..") == 0 ||
193 !name_in_tp_list(dent->d_name, tps))
194 continue; 197 continue;
198
195 if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) { 199 if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) {
196 err = -ENOMEM; 200 err = -ENOMEM;
197 goto out; 201 goto out;
@@ -210,12 +214,10 @@ static int copy_event_system(const char *sys, struct tracepoint_path *tps)
210 } 214 }
211 215
212 rewinddir(dir); 216 rewinddir(dir);
213 while ((dent = readdir(dir))) { 217 for_each_event(dir, dent, tps) {
214 if (dent->d_type != DT_DIR || 218 if (!name_in_tp_list(dent->d_name, tps))
215 strcmp(dent->d_name, ".") == 0 ||
216 strcmp(dent->d_name, "..") == 0 ||
217 !name_in_tp_list(dent->d_name, tps))
218 continue; 219 continue;
220
219 if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) { 221 if (asprintf(&format, "%s/%s/format", sys, dent->d_name) < 0) {
220 err = -ENOMEM; 222 err = -ENOMEM;
221 goto out; 223 goto out;
@@ -290,13 +292,11 @@ static int record_event_files(struct tracepoint_path *tps)
290 goto out; 292 goto out;
291 } 293 }
292 294
293 while ((dent = readdir(dir))) { 295 for_each_event(dir, dent, tps) {
294 if (dent->d_type != DT_DIR || 296 if (strcmp(dent->d_name, "ftrace") == 0 ||
295 strcmp(dent->d_name, ".") == 0 ||
296 strcmp(dent->d_name, "..") == 0 ||
297 strcmp(dent->d_name, "ftrace") == 0 ||
298 !system_in_tp_list(dent->d_name, tps)) 297 !system_in_tp_list(dent->d_name, tps))
299 continue; 298 continue;
299
300 count++; 300 count++;
301 } 301 }
302 302
@@ -307,13 +307,11 @@ static int record_event_files(struct tracepoint_path *tps)
307 } 307 }
308 308
309 rewinddir(dir); 309 rewinddir(dir);
310 while ((dent = readdir(dir))) { 310 for_each_event(dir, dent, tps) {
311 if (dent->d_type != DT_DIR || 311 if (strcmp(dent->d_name, "ftrace") == 0 ||
312 strcmp(dent->d_name, ".") == 0 ||
313 strcmp(dent->d_name, "..") == 0 ||
314 strcmp(dent->d_name, "ftrace") == 0 ||
315 !system_in_tp_list(dent->d_name, tps)) 312 !system_in_tp_list(dent->d_name, tps))
316 continue; 313 continue;
314
317 if (asprintf(&sys, "%s/%s", path, dent->d_name) < 0) { 315 if (asprintf(&sys, "%s/%s", path, dent->d_name) < 0) {
318 err = -ENOMEM; 316 err = -ENOMEM;
319 goto out; 317 goto out;
@@ -379,6 +377,34 @@ out:
379 return err; 377 return err;
380} 378}
381 379
380static int record_saved_cmdline(void)
381{
382 unsigned int size;
383 char *path;
384 struct stat st;
385 int ret, err = 0;
386
387 path = get_tracing_file("saved_cmdlines");
388 if (!path) {
389 pr_debug("can't get tracing/saved_cmdline");
390 return -ENOMEM;
391 }
392
393 ret = stat(path, &st);
394 if (ret < 0) {
395 /* not found */
396 size = 0;
397 if (write(output_fd, &size, 8) != 8)
398 err = -EIO;
399 goto out;
400 }
401 err = record_file(path, 8);
402
403out:
404 put_tracing_file(path);
405 return err;
406}
407
382static void 408static void
383put_tracepoints_path(struct tracepoint_path *tps) 409put_tracepoints_path(struct tracepoint_path *tps)
384{ 410{
@@ -539,6 +565,9 @@ struct tracing_data *tracing_data_get(struct list_head *pattrs,
539 if (err) 565 if (err)
540 goto out; 566 goto out;
541 err = record_ftrace_printk(); 567 err = record_ftrace_printk();
568 if (err)
569 goto out;
570 err = record_saved_cmdline();
542 571
543out: 572out:
544 /* 573 /*
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
index 33b52eaa39db..de0078e21408 100644
--- a/tools/perf/util/trace-event-parse.c
+++ b/tools/perf/util/trace-event-parse.c
@@ -160,6 +160,23 @@ void parse_ftrace_printk(struct pevent *pevent,
160 } 160 }
161} 161}
162 162
163void parse_saved_cmdline(struct pevent *pevent,
164 char *file, unsigned int size __maybe_unused)
165{
166 char *comm;
167 char *line;
168 char *next = NULL;
169 int pid;
170
171 line = strtok_r(file, "\n", &next);
172 while (line) {
173 sscanf(line, "%d %ms", &pid, &comm);
174 pevent_register_comm(pevent, comm, pid);
175 free(comm);
176 line = strtok_r(NULL, "\n", &next);
177 }
178}
179
163int parse_ftrace_file(struct pevent *pevent, char *buf, unsigned long size) 180int parse_ftrace_file(struct pevent *pevent, char *buf, unsigned long size)
164{ 181{
165 return pevent_parse_event(pevent, buf, size, "ftrace"); 182 return pevent_parse_event(pevent, buf, size, "ftrace");
diff --git a/tools/perf/util/trace-event-read.c b/tools/perf/util/trace-event-read.c
index b67a0ccf5ab9..27420159bf69 100644
--- a/tools/perf/util/trace-event-read.c
+++ b/tools/perf/util/trace-event-read.c
@@ -260,39 +260,53 @@ static int read_header_files(struct pevent *pevent)
260 260
261static int read_ftrace_file(struct pevent *pevent, unsigned long long size) 261static int read_ftrace_file(struct pevent *pevent, unsigned long long size)
262{ 262{
263 int ret;
263 char *buf; 264 char *buf;
264 265
265 buf = malloc(size); 266 buf = malloc(size);
266 if (buf == NULL) 267 if (buf == NULL) {
268 pr_debug("memory allocation failure\n");
267 return -1; 269 return -1;
270 }
268 271
269 if (do_read(buf, size) < 0) { 272 ret = do_read(buf, size);
270 free(buf); 273 if (ret < 0) {
271 return -1; 274 pr_debug("error reading ftrace file.\n");
275 goto out;
272 } 276 }
273 277
274 parse_ftrace_file(pevent, buf, size); 278 ret = parse_ftrace_file(pevent, buf, size);
279 if (ret < 0)
280 pr_debug("error parsing ftrace file.\n");
281out:
275 free(buf); 282 free(buf);
276 return 0; 283 return ret;
277} 284}
278 285
279static int read_event_file(struct pevent *pevent, char *sys, 286static int read_event_file(struct pevent *pevent, char *sys,
280 unsigned long long size) 287 unsigned long long size)
281{ 288{
289 int ret;
282 char *buf; 290 char *buf;
283 291
284 buf = malloc(size); 292 buf = malloc(size);
285 if (buf == NULL) 293 if (buf == NULL) {
294 pr_debug("memory allocation failure\n");
286 return -1; 295 return -1;
296 }
287 297
288 if (do_read(buf, size) < 0) { 298 ret = do_read(buf, size);
299 if (ret < 0) {
289 free(buf); 300 free(buf);
290 return -1; 301 goto out;
291 } 302 }
292 303
293 parse_event_file(pevent, buf, size, sys); 304 ret = parse_event_file(pevent, buf, size, sys);
305 if (ret < 0)
306 pr_debug("error parsing event file.\n");
307out:
294 free(buf); 308 free(buf);
295 return 0; 309 return ret;
296} 310}
297 311
298static int read_ftrace_files(struct pevent *pevent) 312static int read_ftrace_files(struct pevent *pevent)
@@ -341,6 +355,36 @@ static int read_event_files(struct pevent *pevent)
341 return 0; 355 return 0;
342} 356}
343 357
358static int read_saved_cmdline(struct pevent *pevent)
359{
360 unsigned long long size;
361 char *buf;
362 int ret;
363
364 /* it can have 0 size */
365 size = read8(pevent);
366 if (!size)
367 return 0;
368
369 buf = malloc(size + 1);
370 if (buf == NULL) {
371 pr_debug("memory allocation failure\n");
372 return -1;
373 }
374
375 ret = do_read(buf, size);
376 if (ret < 0) {
377 pr_debug("error reading saved cmdlines\n");
378 goto out;
379 }
380
381 parse_saved_cmdline(pevent, buf, size);
382 ret = 0;
383out:
384 free(buf);
385 return ret;
386}
387
344ssize_t trace_report(int fd, struct trace_event *tevent, bool __repipe) 388ssize_t trace_report(int fd, struct trace_event *tevent, bool __repipe)
345{ 389{
346 char buf[BUFSIZ]; 390 char buf[BUFSIZ];
@@ -379,10 +423,11 @@ ssize_t trace_report(int fd, struct trace_event *tevent, bool __repipe)
379 return -1; 423 return -1;
380 if (show_version) 424 if (show_version)
381 printf("version = %s\n", version); 425 printf("version = %s\n", version);
382 free(version);
383 426
384 if (do_read(buf, 1) < 0) 427 if (do_read(buf, 1) < 0) {
428 free(version);
385 return -1; 429 return -1;
430 }
386 file_bigendian = buf[0]; 431 file_bigendian = buf[0];
387 host_bigendian = bigendian(); 432 host_bigendian = bigendian();
388 433
@@ -423,6 +468,11 @@ ssize_t trace_report(int fd, struct trace_event *tevent, bool __repipe)
423 err = read_ftrace_printk(pevent); 468 err = read_ftrace_printk(pevent);
424 if (err) 469 if (err)
425 goto out; 470 goto out;
471 if (atof(version) >= 0.6) {
472 err = read_saved_cmdline(pevent);
473 if (err)
474 goto out;
475 }
426 476
427 size = trace_data_size; 477 size = trace_data_size;
428 repipe = false; 478 repipe = false;
@@ -438,5 +488,6 @@ ssize_t trace_report(int fd, struct trace_event *tevent, bool __repipe)
438out: 488out:
439 if (pevent) 489 if (pevent)
440 trace_event__cleanup(tevent); 490 trace_event__cleanup(tevent);
491 free(version);
441 return size; 492 return size;
442} 493}
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/trace-event.h b/tools/perf/util/trace-event.h
index b0af9c81bb0d..1fbc044f9eb0 100644
--- a/tools/perf/util/trace-event.h
+++ b/tools/perf/util/trace-event.h
@@ -42,6 +42,7 @@ raw_field_value(struct event_format *event, const char *name, void *data);
42 42
43void parse_proc_kallsyms(struct pevent *pevent, char *file, unsigned int size); 43void parse_proc_kallsyms(struct pevent *pevent, char *file, unsigned int size);
44void parse_ftrace_printk(struct pevent *pevent, char *file, unsigned int size); 44void parse_ftrace_printk(struct pevent *pevent, char *file, unsigned int size);
45void parse_saved_cmdline(struct pevent *pevent, char *file, unsigned int size);
45 46
46ssize_t trace_report(int fd, struct trace_event *tevent, bool repipe); 47ssize_t trace_report(int fd, struct trace_event *tevent, bool repipe);
47 48
diff --git a/tools/perf/util/unwind-libunwind-local.c b/tools/perf/util/unwind-libunwind-local.c
index 20c2e5743903..bfb9b7987692 100644
--- a/tools/perf/util/unwind-libunwind-local.c
+++ b/tools/perf/util/unwind-libunwind-local.c
@@ -35,6 +35,7 @@
35#include "util.h" 35#include "util.h"
36#include "debug.h" 36#include "debug.h"
37#include "asm/bug.h" 37#include "asm/bug.h"
38#include "dso.h"
38 39
39extern int 40extern int
40UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as, 41UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
@@ -297,15 +298,58 @@ static int read_unwind_spec_debug_frame(struct dso *dso,
297 int fd; 298 int fd;
298 u64 ofs = dso->data.debug_frame_offset; 299 u64 ofs = dso->data.debug_frame_offset;
299 300
301 /* debug_frame can reside in:
302 * - dso
303 * - debug pointed by symsrc_filename
304 * - gnu_debuglink, which doesn't necessary
305 * has to be pointed by symsrc_filename
306 */
300 if (ofs == 0) { 307 if (ofs == 0) {
301 fd = dso__data_get_fd(dso, machine); 308 fd = dso__data_get_fd(dso, machine);
302 if (fd < 0) 309 if (fd >= 0) {
303 return -EINVAL; 310 ofs = elf_section_offset(fd, ".debug_frame");
311 dso__data_put_fd(dso);
312 }
313
314 if (ofs <= 0) {
315 fd = open(dso->symsrc_filename, O_RDONLY);
316 if (fd >= 0) {
317 ofs = elf_section_offset(fd, ".debug_frame");
318 close(fd);
319 }
320 }
321
322 if (ofs <= 0) {
323 char *debuglink = malloc(PATH_MAX);
324 int ret = 0;
325
326 ret = dso__read_binary_type_filename(
327 dso, DSO_BINARY_TYPE__DEBUGLINK,
328 machine->root_dir, debuglink, PATH_MAX);
329 if (!ret) {
330 fd = open(debuglink, O_RDONLY);
331 if (fd >= 0) {
332 ofs = elf_section_offset(fd,
333 ".debug_frame");
334 close(fd);
335 }
336 }
337 if (ofs > 0) {
338 if (dso->symsrc_filename != NULL) {
339 pr_warning(
340 "%s: overwrite symsrc(%s,%s)\n",
341 __func__,
342 dso->symsrc_filename,
343 debuglink);
344 free(dso->symsrc_filename);
345 }
346 dso->symsrc_filename = debuglink;
347 } else {
348 free(debuglink);
349 }
350 }
304 351
305 /* Check the .debug_frame section for unwinding info */
306 ofs = elf_section_offset(fd, ".debug_frame");
307 dso->data.debug_frame_offset = ofs; 352 dso->data.debug_frame_offset = ofs;
308 dso__data_put_fd(dso);
309 } 353 }
310 354
311 *offset = ofs; 355 *offset = ofs;
@@ -357,8 +401,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; 401 di.format = UNW_INFO_FORMAT_REMOTE_TABLE;
358 di.start_ip = map->start; 402 di.start_ip = map->start;
359 di.end_ip = map->end; 403 di.end_ip = map->end;
360 di.u.rti.segbase = map->start + segbase; 404 di.u.rti.segbase = map->start + segbase - map->pgoff;
361 di.u.rti.table_data = map->start + table_data; 405 di.u.rti.table_data = map->start + table_data - map->pgoff;
362 di.u.rti.table_len = fde_count * sizeof(struct table_entry) 406 di.u.rti.table_len = fde_count * sizeof(struct table_entry)
363 / sizeof(unw_word_t); 407 / sizeof(unw_word_t);
364 ret = dwarf_search_unwind_table(as, ip, &di, pi, 408 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 85c56800f17a..d8b45cea54d0 100644
--- a/tools/perf/util/util.c
+++ b/tools/perf/util/util.c
@@ -85,7 +85,7 @@ int mkdir_p(char *path, mode_t mode)
85 return (stat(path, &st) && mkdir(path, mode)) ? -1 : 0; 85 return (stat(path, &st) && mkdir(path, mode)) ? -1 : 0;
86} 86}
87 87
88int rm_rf(char *path) 88int rm_rf(const char *path)
89{ 89{
90 DIR *dir; 90 DIR *dir;
91 int ret = 0; 91 int ret = 0;
@@ -400,37 +400,12 @@ void sighandler_dump_stack(int sig)
400 raise(sig); 400 raise(sig);
401} 401}
402 402
403int parse_nsec_time(const char *str, u64 *ptime) 403int timestamp__scnprintf_usec(u64 timestamp, char *buf, size_t sz)
404{ 404{
405 u64 time_sec, time_nsec; 405 u64 sec = timestamp / NSEC_PER_SEC;
406 char *end; 406 u64 usec = (timestamp % NSEC_PER_SEC) / NSEC_PER_USEC;
407 407
408 time_sec = strtoul(str, &end, 10); 408 return scnprintf(buf, sz, "%"PRIu64".%06"PRIu64, sec, usec);
409 if (*end != '.' && *end != '\0')
410 return -1;
411
412 if (*end == '.') {
413 int i;
414 char nsec_buf[10];
415
416 if (strlen(++end) > 9)
417 return -1;
418
419 strncpy(nsec_buf, end, 9);
420 nsec_buf[9] = '\0';
421
422 /* make it nsec precision */
423 for (i = strlen(nsec_buf); i < 9; i++)
424 nsec_buf[i] = '0';
425
426 time_nsec = strtoul(nsec_buf, &end, 10);
427 if (*end != '\0')
428 return -1;
429 } else
430 time_nsec = 0;
431
432 *ptime = time_sec * NSEC_PER_SEC + time_nsec;
433 return 0;
434} 409}
435 410
436unsigned long parse_tag_value(const char *str, struct parse_tag *tags) 411unsigned long parse_tag_value(const char *str, struct parse_tag *tags)
@@ -629,12 +604,63 @@ bool find_process(const char *name)
629 return ret ? false : true; 604 return ret ? false : true;
630} 605}
631 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
632int 653int
633fetch_kernel_version(unsigned int *puint, char *str, 654fetch_kernel_version(unsigned int *puint, char *str,
634 size_t str_size) 655 size_t str_size)
635{ 656{
636 struct utsname utsname; 657 struct utsname utsname;
637 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;
638 664
639 if (uname(&utsname)) 665 if (uname(&utsname))
640 return -1; 666 return -1;
@@ -648,12 +674,12 @@ fetch_kernel_version(unsigned int *puint, char *str,
648 &version, &patchlevel, &sublevel); 674 &version, &patchlevel, &sublevel);
649 675
650 if (err != 3) { 676 if (err != 3) {
651 pr_debug("Unablt to get kernel version from uname '%s'\n", 677 pr_debug("Unable to get kernel version from uname '%s'\n",
652 utsname.release); 678 utsname.release);
653 return -1; 679 return -1;
654 } 680 }
655 681
656 if (puint) 682 if (puint && !int_ver_ready)
657 *puint = (version << 16) + (patchlevel << 8) + sublevel; 683 *puint = (version << 16) + (patchlevel << 8) + sublevel;
658 return 0; 684 return 0;
659} 685}
@@ -763,3 +789,16 @@ int is_printable_array(char *p, unsigned int len)
763 } 789 }
764 return 1; 790 return 1;
765} 791}
792
793int unit_number__scnprintf(char *buf, size_t size, u64 n)
794{
795 char unit[4] = "BKMG";
796 int i = 0;
797
798 while (((n / 1024) > 1) && (i < 3)) {
799 n /= 1024;
800 i++;
801 }
802
803 return scnprintf(buf, size, "%" PRIu64 "%c", n, unit[i]);
804}
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index 43899e0d6fa1..c74708da8571 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -179,8 +179,6 @@ static inline void *zalloc(size_t size)
179#undef tolower 179#undef tolower
180#undef toupper 180#undef toupper
181 181
182int parse_nsec_time(const char *str, u64 *ptime);
183
184extern unsigned char sane_ctype[256]; 182extern unsigned char sane_ctype[256];
185#define GIT_SPACE 0x01 183#define GIT_SPACE 0x01
186#define GIT_DIGIT 0x02 184#define GIT_DIGIT 0x02
@@ -211,7 +209,7 @@ static inline int sane_case(int x, int high)
211} 209}
212 210
213int mkdir_p(char *path, mode_t mode); 211int mkdir_p(char *path, mode_t mode);
214int rm_rf(char *path); 212int rm_rf(const char *path);
215struct strlist *lsdir(const char *name, bool (*filter)(const char *, struct dirent *)); 213struct strlist *lsdir(const char *name, bool (*filter)(const char *, struct dirent *));
216bool lsdir_no_dot_filter(const char *name, struct dirent *d); 214bool lsdir_no_dot_filter(const char *name, struct dirent *d);
217int copyfile(const char *from, const char *to); 215int copyfile(const char *from, const char *to);
@@ -222,6 +220,7 @@ s64 perf_atoll(const char *str);
222char **argv_split(const char *str, int *argcp); 220char **argv_split(const char *str, int *argcp);
223void argv_free(char **argv); 221void argv_free(char **argv);
224bool strglobmatch(const char *str, const char *pat); 222bool strglobmatch(const char *str, const char *pat);
223bool strglobmatch_nocase(const char *str, const char *pat);
225bool strlazymatch(const char *str, const char *pat); 224bool strlazymatch(const char *str, const char *pat);
226static inline bool strisglob(const char *str) 225static inline bool strisglob(const char *str)
227{ 226{
@@ -361,4 +360,8 @@ extern int sched_getcpu(void);
361#endif 360#endif
362 361
363int 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
366int unit_number__scnprintf(char *buf, size_t size, u64 n);
364#endif /* GIT_COMPAT_UTIL_H */ 367#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