- Update Cavium ThunderX2 with now public events (jsc#SLE-10000)

New patch: update-cavium-thunderx2-with-now-public-events.patch

OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/libpfm?expand=0&rev=47
This commit is contained in:
Tony Jones 2019-10-19 20:58:57 +00:00 committed by Git OBS Bridge
parent bf09cdaff7
commit 4bcd09a4c9
3 changed files with 327 additions and 0 deletions

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Fri Oct 18 18:11:38 UTC 2019 - Tony Jones <tonyj@suse.com>
- Update Cavium ThunderX2 with now public events (jsc#SLE-10000)
New patch: update-cavium-thunderx2-with-now-public-events.patch
-------------------------------------------------------------------
Thu Aug 15 08:25:29 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>

View File

@ -32,6 +32,7 @@ Source1: baselibs.conf
Patch0: 0001-s390-cpumf-add-IBM-z14-ZR1-support.patch
Patch1: 0001-s390-cpumf-add-support-for-counter-second-version-nu.patch
Patch2: 0001-s390-cpumf-add-support-for-machine-type-8561.patch
Patch3: update-cavium-thunderx2-with-now-public-events.patch
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: python-rpm-macros

View File

@ -0,0 +1,320 @@
From: Steve Walk <steve.walk@cavium.com>
Date: Tue Mar 20 09:37:56 2018 -0700
Subject: update Cavium ThunderX2 with now public events
Git-commit: 6c9e44b95a55b8bf62cbd64009c4c9b30964a66c
References: jsc#SLE-10000
Signed-off-by: Tony Jones <tonyj@suse.de>
update Cavium ThunderX2 with now public events
This patch adds new model specific events to the
Cavium Thunder X2 core PMU. The updated list is based
on publicly available documentation from Cavium which
is available at:
https://cavium.com/resources.html
Signed-off-by: Steve Walk <steve.walk@cavium.com>
diff --git a/lib/events/arm_cavium_tx2_events.h b/lib/events/arm_cavium_tx2_events.h
index 67de9f8..198d33d 100644
--- a/lib/events/arm_cavium_tx2_events.h
+++ b/lib/events/arm_cavium_tx2_events.h
@@ -23,6 +23,9 @@
*
* ARM Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile,
* ARM DDI 0487B.a (ID033117)
+ *
+ * Cavium ThunderX2 C99XX PMU Events (Abridged), July 31, 2018
+ * https://cavium.com/resources.html
*/
static const arm_entry_t arm_thunderx2_pe[]={
@@ -161,6 +164,11 @@ static const arm_entry_t arm_thunderx2_pe[]={
.code = 0x1C,
.desc = "Instruction architecturally executed (condition check pass) Write to translation table base"
},
+ {.name = "CHAIN",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x1E,
+ .desc = "For odd-numbered counters, increments the count by one for each overflow of the proceeding even counter"
+ },
{.name = "L1D_CACHE_ALLOCATE",
.modmsk = ARMV8_ATTRS,
.code = 0x1F,
@@ -556,6 +564,274 @@ static const arm_entry_t arm_thunderx2_pe[]={
.code = 0x91,
.desc = "Release consistency instruction speculatively executed (store-release)"
},
-
- /* END Cavium ThunderX2 specific events */
+ {.name = "L1D_LHS_VANOTP",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC1,
+ .desc = "A Load hit store retry"
+ },
+ {.name = "L1D_LHS_OVRLAP",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC2,
+ .desc = "A Load hit store retry, VA match, PA mismatch"
+ },
+ {.name = "L1D_LHS_VANOSD",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC3,
+ .desc = "A Load hit store retry, VA match, store data not issued"
+ },
+ {.name = "L1D_LHS_FWD",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC4,
+ .desc = "A Load hit store forwarding. Load completes"
+ },
+ {.name = "L1D_BNKCFL",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC6,
+ .desc = "Bank conflict load retry"
+ },
+ {.name = "L1D_LSMQ_FULL",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC7,
+ .desc = "LSMQ retry"
+ },
+ {.name = "L1D_LSMQ_HIT",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC8,
+ .desc = "LSMQ hit retry"
+ },
+ {.name = "L1D_EXPB_MISS",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xC9,
+ .desc = "An external probe missed the L1"
+ },
+ {.name = "L1D_L2EV_MISS",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xCA,
+ .desc = "An L2 evict operation missed the L1"
+ },
+ {.name = "L1D_EXPB_HITM",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xCB,
+ .desc = "An external probe hit a modified line in the L1"
+ },
+ {.name = "L1D_L2EV_HITM",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xCC,
+ .desc = "An L2 evict operation hit a modified line in the L1"
+ },
+ {.name = "L1D_EXPB_HIT",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xCD,
+ .desc = "An external probe hit in the L1"
+ },
+ {.name = "L1D_L2EV_HIT",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xCE,
+ .desc = "An L2 evict operation hit in the L1"
+ },
+ {.name = "L1D_EXPB_RETRY",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xCF,
+ .desc = "An external probe hit was retried"
+ },
+ {.name = "L1D_L2EV_RETRY",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xD0,
+ .desc = "An L2 evict operation was retried"
+ },
+ {.name = "L1D_ST_RMW",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xD1,
+ .desc = "A read modify write store was drained and updated the L1"
+ },
+ {.name = "L1D_LSMQ00_LDREQ",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xD2,
+ .desc = "A load has allocated LSMQ entry 0"
+ },
+ {.name = "L1D_LSMQ00_LDVLD",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xD3,
+ .desc = "LSMQ entry 0 was initiated by a load"
+ },
+ {.name = "L1D_LSMQ15_STREQ",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xD4,
+ .desc = "A store was allocated LSMQ entry 15"
+ },
+ {.name = "L1D_LSMQ15_STVLD",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xD5,
+ .desc = "LSMQ entry 15 was initiated by a store"
+ },
+ {.name = "L1D_PB_FLUSH",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xD6,
+ .desc = "LRQ ordering flush"
+ },
+ {.name = "BR_COND_MIS_PRED_RETIRED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xE0,
+ .desc = "Conditional branch instruction executed, but mis-predicted"
+ },
+ {.name = "BR_IND_MIS_PRED_RETIRED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xE1,
+ .desc = "Indirect branch instruction executed, but mis-predicted"
+ },
+ {.name = "BR_RETURN_MIS_PRED_RETIRED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xE2,
+ .desc = "Return branch instruction executed, but mis-predicted"
+ },
+ {.name = "OP_RETIRED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xE8,
+ .desc = "Uops executed"
+ },
+ {.name = "LD_OP_RETIRED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xE9,
+ .desc = "Load uops executed"
+ },
+ {.name = "ST_OP_RETIRED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xEA,
+ .desc = "Store uops executed"
+ },
+ {.name = "FUSED_OP_RETIRED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xEB,
+ .desc = "Fused uops executed"
+ },
+ {.name = "IRQ_MASK",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xF8,
+ .desc = "Cumulative duration of a PSTATE.I interrupt mask set to 1"
+ },
+ {.name = "FIQ_MASK",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xF9,
+ .desc = "Cumulative duration of a PSTATE.F interrupt mask set to 1"
+ },
+ {.name = "SERROR_MASK",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0xFA,
+ .desc = "Cumulative duration of PSTATE.A interrupt mask set to 1"
+ },
+ {.name = "WFIWFE_SLEEP",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x108,
+ .desc = "Number of cycles in which CPU is in low power mode due to WFI/WFE instruction"
+ },
+ {.name = "L2TLB_4K_PAGE_MISS",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x127,
+ .desc = "L2 TLB lookup miss using 4K page size"
+ },
+ {.name = "L2TLB_64K_PAGE_MISS",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x128,
+ .desc = "L2 TLB lookup miss using 64K page size"
+ },
+ {.name = "L2TLB_2M_PAGE_MISS",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x129,
+ .desc = "L2 TLB lookup miss using 2M page size"
+ },
+ {.name = "L2TLB_512M_PAGE_MISS",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x12A,
+ .desc = "L2 TLB lookup miss using 512M page size"
+ },
+ {.name = "ISB_EMPTY",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x150,
+ .desc = "Number of cycles during which micro-op skid-buffer is empty"
+ },
+ {.name = "ISB_FULL",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x151,
+ .desc = "Number of cycles during which micro-op skid-buffer is back-pressuring decode"
+ },
+ {.name = "STALL_NOTSELECTED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x152,
+ .desc = "Number of cycles during which thread was available for dispatch but not selected"
+ },
+ {.name = "ROB_RECYCLE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x153,
+ .desc = "Number of cycles in which one or more valid micro-ops did not dispatch due to ROB full"
+ },
+ {.name = "ISSQ_RECYCLE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x154,
+ .desc = "Number of cycles in which one or more valid micro-ops did not dispatch due to ISSQ full"
+ },
+ {.name = "GPR_RECYCLE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x155,
+ .desc = "Number of cycles in which one or more valid micro-ops did not dispatch due to GPR full"
+ },
+ {.name = "FPR_RECYCLE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x156,
+ .desc = "Number of cycles in which one or more valid micro-ops did not dispatch due to FPR full"
+ },
+ {.name = "LRQ_RECYCLE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x158,
+ .desc = "Number of cycles in which one or more valid micro-ops did not dispatch due to LRQ full"
+ },
+ {.name = "SRQ_RECYCLE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x159,
+ .desc = "Number of cycles in which one or more valid micro-ops did not dispatch due to SRQ full"
+ },
+ {.name = "BSR_RECYCLE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x15B,
+ .desc = "Number of cycles in which one or more valid micro-ops did not dispatch due to BSR full"
+ },
+ {.name = "UOPSFUSED",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x164,
+ .desc = "Number of fused micro-ops dispatched"
+ },
+ {.name = "L2D_TLBI_INT",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x20B,
+ .desc = "Internal mmu tlbi cacheops"
+ },
+ {.name = "L2D_TLBI_EXT",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x20C,
+ .desc = "External mmu tlbi cacheops"
+ },
+ {.name = "L2D_HWPF_DMD_HIT",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x218,
+ .desc = "Scu ld/st requests that hit cache or msg for lines brought in by the hardware prefetcher"
+ },
+ {.name = "L2D_HWPF_REQ_VAL",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x219,
+ .desc = "Scu hwpf requests into the pipeline"
+ },
+ {.name = "L2D_HWPF_REQ_LD",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x21A,
+ .desc = "Scu hwpf ld requests into the pipeline"
+ },
+ {.name = "L2D_HWPF_REQ_MISS",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x21B,
+ .desc = "Scu hwpf ld requests that miss"
+ },
+ {.name = "L2D_HWPF_NEXT_LINE",
+ .modmsk = ARMV8_ATTRS,
+ .code = 0x21C,
+ .desc = "Scu hwpf next line requests generated"
+ },
};