mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-02 16:44:59 +00:00

Add core events taken from Section 1.4 "Core Performance Monitor Counters" of the Performance Monitor Counters for AMD Family 1Ah Model 00h-0Fh Processors document available at the link below. This constitutes events which capture information on op dispatch, execution and retirement, branch prediction, L1 and L2 cache activity, TLB activity, etc. Reviewed-by: Ian Rogers <irogers@google.com> Signed-off-by: Sandipan Das <sandipan.das@amd.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ananth Narayan <ananth.narayan@amd.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Stephane Eranian <eranian@google.com> Link: https://bugzilla.kernel.org/attachment.cgi?id=305974 Link: https://lore.kernel.org/r/668d194241bf0d42dc37f1c5af8131069a0bd82c.1714717230.git.sandipan.das@amd.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
175 lines
5.4 KiB
JSON
175 lines
5.4 KiB
JSON
[
|
|
{
|
|
"EventName": "ex_ret_instr",
|
|
"EventCode": "0xc0",
|
|
"BriefDescription": "Retired instructions."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_ops",
|
|
"EventCode": "0xc1",
|
|
"BriefDescription": "Retired macro-ops."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_brn",
|
|
"EventCode": "0xc2",
|
|
"BriefDescription": "Retired branch instructions (all types of architectural control flow changes, including exceptions and interrupts)."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_brn_misp",
|
|
"EventCode": "0xc3",
|
|
"BriefDescription": "Retired branch instructions mispredicted."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_brn_tkn",
|
|
"EventCode": "0xc4",
|
|
"BriefDescription": "Retired taken branch instructions (all types of architectural control flow changes, including exceptions and interrupts)."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_brn_tkn_misp",
|
|
"EventCode": "0xc5",
|
|
"BriefDescription": "Retired taken branch instructions mispredicted."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_brn_far",
|
|
"EventCode": "0xc6",
|
|
"BriefDescription": "Retired far control transfers (far call/jump/return, IRET, SYSCALL and SYSRET, plus exceptions and interrupts). Far control transfers are not subject to branch prediction."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_near_ret",
|
|
"EventCode": "0xc8",
|
|
"BriefDescription": "Retired near returns (RET or RET Iw)."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_near_ret_mispred",
|
|
"EventCode": "0xc9",
|
|
"BriefDescription": "Retired near returns mispredicted. Each misprediction incurs the same penalty as a mispredicted conditional branch instruction."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_brn_ind_misp",
|
|
"EventCode": "0xca",
|
|
"BriefDescription": "Retired indirect branch instructions mispredicted (only EX mispredicts). Each misprediction incurs the same penalty as a mispredicted conditional branch instruction."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_mmx_fp_instr.x87",
|
|
"EventCode": "0xcb",
|
|
"BriefDescription": "Retired x87 instructions.",
|
|
"UMask": "0x01"
|
|
},
|
|
{
|
|
"EventName": "ex_ret_mmx_fp_instr.mmx",
|
|
"EventCode": "0xcb",
|
|
"BriefDescription": "Retired MMX instructions.",
|
|
"UMask": "0x02"
|
|
},
|
|
{
|
|
"EventName": "ex_ret_mmx_fp_instr.sse",
|
|
"EventCode": "0xcb",
|
|
"BriefDescription": "Retired SSE instructions (includes SSE, SSE2, SSE3, SSSE3, SSE4A, SSE41, SSE42 and AVX).",
|
|
"UMask": "0x04"
|
|
},
|
|
{
|
|
"EventName": "ex_ret_ind_brch_instr",
|
|
"EventCode": "0xcc",
|
|
"BriefDescription": "Retired indirect branch instructions."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_cond",
|
|
"EventCode": "0xd1",
|
|
"BriefDescription": "Retired conditional branch instructions."
|
|
},
|
|
{
|
|
"EventName": "ex_div_busy",
|
|
"EventCode": "0xd3",
|
|
"BriefDescription": "Number of cycles the divider is busy."
|
|
},
|
|
{
|
|
"EventName": "ex_div_count",
|
|
"EventCode": "0xd4",
|
|
"BriefDescription": "Divide ops executed."
|
|
},
|
|
{
|
|
"EventName": "ex_no_retire.empty",
|
|
"EventCode": "0xd6",
|
|
"BriefDescription": "Cycles with no retire due to the lack of valid ops in the retire queue (may be caused by front-end bottlenecks or pipeline redirects).",
|
|
"UMask": "0x01"
|
|
},
|
|
{
|
|
"EventName": "ex_no_retire.not_complete",
|
|
"EventCode": "0xd6",
|
|
"BriefDescription": "Cycles with no retire while the oldest op is waiting to be executed.",
|
|
"UMask": "0x02"
|
|
},
|
|
{
|
|
"EventName": "ex_no_retire.other",
|
|
"EventCode": "0xd6",
|
|
"BriefDescription": "Cycles with no retire caused by other reasons (retire breaks, traps, faults, etc.).",
|
|
"UMask": "0x08"
|
|
},
|
|
{
|
|
"EventName": "ex_no_retire.thread_not_selected",
|
|
"EventCode": "0xd6",
|
|
"BriefDescription": "Cycles with no retire because thread arbitration did not select the thread.",
|
|
"UMask": "0x10"
|
|
},
|
|
{
|
|
"EventName": "ex_no_retire.load_not_complete",
|
|
"EventCode": "0xd6",
|
|
"BriefDescription": "Cycles with no retire while the oldest op is waiting for load data.",
|
|
"UMask": "0xa2"
|
|
},
|
|
{
|
|
"EventName": "ex_no_retire.all",
|
|
"EventCode": "0xd6",
|
|
"BriefDescription": "Cycles with no retire for any reason.",
|
|
"UMask": "0x1b"
|
|
},
|
|
{
|
|
"EventName": "ex_ret_ucode_instr",
|
|
"EventCode": "0x1c1",
|
|
"BriefDescription": "Retired microcoded instructions."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_ucode_ops",
|
|
"EventCode": "0x1c2",
|
|
"BriefDescription": "Retired microcode ops."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_msprd_brnch_instr_dir_msmtch",
|
|
"EventCode": "0x1c7",
|
|
"BriefDescription": "Retired branch instructions mispredicted due to direction mismatch."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_uncond_brnch_instr_mispred",
|
|
"EventCode": "0x1c8",
|
|
"BriefDescription": "Retired unconditional indirect branch instructions mispredicted."
|
|
},
|
|
{
|
|
"EventName": "ex_ret_uncond_brnch_instr",
|
|
"EventCode": "0x1c9",
|
|
"BriefDescription": "Retired unconditional branch instructions."
|
|
},
|
|
{
|
|
"EventName": "ex_tagged_ibs_ops.ibs_tagged_ops",
|
|
"EventCode": "0x1cf",
|
|
"BriefDescription": "Ops tagged by IBS.",
|
|
"UMask": "0x01"
|
|
},
|
|
{
|
|
"EventName": "ex_tagged_ibs_ops.ibs_tagged_ops_ret",
|
|
"EventCode": "0x1cf",
|
|
"BriefDescription": "Ops tagged by IBS that retired.",
|
|
"UMask": "0x02"
|
|
},
|
|
{
|
|
"EventName": "ex_tagged_ibs_ops.ibs_count_rollover",
|
|
"EventCode": "0x1cf",
|
|
"BriefDescription": "Ops not tagged by IBS due to a previous tagged op that has not yet signaled interrupt.",
|
|
"UMask": "0x04"
|
|
},
|
|
{
|
|
"EventName": "ex_ret_fused_instr",
|
|
"EventCode": "0x1d0",
|
|
"BriefDescription": "Retired fused instructions."
|
|
}
|
|
]
|