New patch: thunderx2-uncore-support.patch New patch: moved-tx2-uncore-event-to-separate-file.patch New patch: add-thunderx2-dmc-events-and-ccpi-events.patch New patch: removed-extra-fields-from-tx2_unc_data_t.patch OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/libpfm?expand=0&rev=49
215 lines
7.2 KiB
Diff
215 lines
7.2 KiB
Diff
From: Shay Gal-On <sgalon@cavium.com>
|
|
Date: Thu Nov 21 10:41:26 2019 -0800
|
|
Subject: Moved TX2 uncore event to separate file
|
|
Git-commit: 6641952170c23c5ab69c1af19197a9d8284c1e53
|
|
References: jsc#SLE-10000
|
|
Signed-off-by: Tony Jones <tonyj@suse.de>
|
|
|
|
Moved TX2 uncore event to separate file
|
|
|
|
To make event files cleaner.
|
|
Also added link to marvell doc publishing the uncore event lists.
|
|
|
|
Signed-off-by: Shay Gal-On <sgalon@marvell.com>
|
|
|
|
diff --git a/lib/Makefile b/lib/Makefile
|
|
index f45515d..686264b 100644
|
|
--- a/lib/Makefile
|
|
+++ b/lib/Makefile
|
|
@@ -360,11 +360,13 @@ INC_ARM=pfmlib_arm_priv.h \
|
|
events/arm_cortex_a15_events.h \
|
|
events/arm_cortex_a57_events.h \
|
|
events/arm_cortex_a53_events.h \
|
|
- events/arm_cavium_tx2_events.h
|
|
+ events/arm_cavium_tx2_events.h \
|
|
+ events/arm_marvell_tx2_unc_events.h
|
|
|
|
INC_ARM64=events/arm_cortex_a57_events.h \
|
|
- events/arm_cortex_a53_events.h \
|
|
- events/arm_cavium_tx2_events.h
|
|
+ events/arm_cortex_a53_events.h \
|
|
+ events/arm_cavium_tx2_events.h \
|
|
+ events/arm_marvell_tx2_unc_events.h
|
|
|
|
INCDEP=$(INC_COMMON) $(INCARCH)
|
|
|
|
diff --git a/lib/events/arm_cavium_tx2_events.h b/lib/events/arm_cavium_tx2_events.h
|
|
index 18d8931..198d33d 100644
|
|
--- a/lib/events/arm_cavium_tx2_events.h
|
|
+++ b/lib/events/arm_cavium_tx2_events.h
|
|
@@ -835,64 +835,3 @@ static const arm_entry_t arm_thunderx2_pe[]={
|
|
.desc = "Scu hwpf next line requests generated"
|
|
},
|
|
};
|
|
-
|
|
-#define ARM_TX2_CORE_EVENT_COUNT (sizeof(arm_thunderx2_pe)/sizeof(arm_entry_t))
|
|
-
|
|
-/* L3C event IDs */
|
|
-#define L3_EVENT_READ_REQ 0xD
|
|
-#define L3_EVENT_WRITEBACK_REQ 0xE
|
|
-#define L3_EVENT_EVICT_REQ 0x13
|
|
-#define L3_EVENT_READ_HIT 0x17
|
|
-#define L3_EVENT_MAX 0x18
|
|
-
|
|
-/* DMC event IDs */
|
|
-#define DMC_EVENT_COUNT_CYCLES 0x1
|
|
-#define DMC_EVENT_WRITE_TXNS 0xB
|
|
-#define DMC_EVENT_DATA_TRANSFERS 0xD
|
|
-#define DMC_EVENT_READ_TXNS 0xF
|
|
-#define DMC_EVENT_MAX 0x10
|
|
-
|
|
-static const arm_entry_t arm_thunderx2_unc_dmc_pe[]={
|
|
- {.name = "UNC_DMC_READS",
|
|
- .modmsk = ARMV8_ATTRS,
|
|
- .code = DMC_EVENT_READ_TXNS,
|
|
- .desc = "Memory read transactions"
|
|
- },
|
|
- {.name = "UNC_DMC_WRITES",
|
|
- .modmsk = ARMV8_ATTRS,
|
|
- .code = DMC_EVENT_WRITE_TXNS,
|
|
- .desc = "Memory write transactions"
|
|
- },
|
|
-};
|
|
-
|
|
-#define ARM_TX2_CORE_DMC_COUNT (sizeof(arm_thunderx2_unc_dmc_pe)/sizeof(arm_entry_t))
|
|
-
|
|
-static const arm_entry_t arm_thunderx2_unc_llc_pe[]={
|
|
- {.name = "UNC_LLC_READ",
|
|
- .modmsk = ARMV8_ATTRS,
|
|
- .code = L3_EVENT_READ_REQ,
|
|
- .desc = "Read requests to LLC"
|
|
- },
|
|
- {.name = "UNC_LLC_EVICT",
|
|
- .modmsk = ARMV8_ATTRS,
|
|
- .code = L3_EVENT_EVICT_REQ,
|
|
- .desc = "Evict requests to LLC"
|
|
- },
|
|
- {.name = "UNC_LLC_READ_HIT",
|
|
- .modmsk = ARMV8_ATTRS,
|
|
- .code = L3_EVENT_READ_HIT,
|
|
- .desc = "Read requests to LLC which hit"
|
|
- },
|
|
- {.name = "UNC_LLC_WB",
|
|
- .modmsk = ARMV8_ATTRS,
|
|
- .code = L3_EVENT_WRITEBACK_REQ,
|
|
- .desc = "Writeback requests to LLC"
|
|
- }
|
|
-};
|
|
-
|
|
-#define ARM_TX2_CORE_LLC_COUNT (sizeof(arm_thunderx2_unc_llc_pe)/sizeof(arm_entry_t))
|
|
-//Uncore accessor functions
|
|
-int
|
|
-pfm_tx2_unc_get_event_encoding(void *this, pfmlib_event_desc_t *e);
|
|
-int
|
|
-pfm_tx2_unc_get_perf_encoding(void *this, pfmlib_event_desc_t *e);
|
|
diff --git a/lib/events/arm_marvell_tx2_unc_events.h b/lib/events/arm_marvell_tx2_unc_events.h
|
|
new file mode 100755
|
|
index 0000000..9b0a1b4
|
|
--- /dev/null
|
|
+++ b/lib/events/arm_marvell_tx2_unc_events.h
|
|
@@ -0,0 +1,90 @@
|
|
+/*
|
|
+ * Copyright (c) 2019 Marvell Technology Group Ltd
|
|
+ * Contributed by Shay Gal-On <sgalon@marvell.com>
|
|
+ *
|
|
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
+ * of this software and associated documentation files (the "Software"), to deal
|
|
+ * in the Software without restriction, including without limitation the rights
|
|
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
+ * of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
+ * subject to the following conditions:
|
|
+ *
|
|
+ * The above copyright notice and this permission notice shall be included in all
|
|
+ * copies or substantial portions of the Software.
|
|
+ *
|
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
+ * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
+ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
+ *
|
|
+ * Marvell ThunderX2
|
|
+ *
|
|
+ * ARM Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile,
|
|
+ * ARM DDI 0487B.a (ID033117)
|
|
+ *
|
|
+ * Marvell ThunderX2 C99XX Core and Uncore PMU Events (Abridged) can be found at
|
|
+ * https://www.marvell.com/documents/hrur6mybdvk5uki1w0z7/
|
|
+ *
|
|
+ */
|
|
+
|
|
+
|
|
+/* L3C event IDs */
|
|
+#define L3_EVENT_READ_REQ 0xD
|
|
+#define L3_EVENT_WRITEBACK_REQ 0xE
|
|
+#define L3_EVENT_EVICT_REQ 0x13
|
|
+#define L3_EVENT_READ_HIT 0x17
|
|
+#define L3_EVENT_MAX 0x18
|
|
+
|
|
+/* DMC event IDs */
|
|
+#define DMC_EVENT_COUNT_CYCLES 0x1
|
|
+#define DMC_EVENT_WRITE_TXNS 0xB
|
|
+#define DMC_EVENT_DATA_TRANSFERS 0xD
|
|
+#define DMC_EVENT_READ_TXNS 0xF
|
|
+#define DMC_EVENT_MAX 0x10
|
|
+
|
|
+static const arm_entry_t arm_thunderx2_unc_dmc_pe[]={
|
|
+ {.name = "UNC_DMC_READS",
|
|
+ .modmsk = ARMV8_ATTRS,
|
|
+ .code = DMC_EVENT_READ_TXNS,
|
|
+ .desc = "Memory read transactions"
|
|
+ },
|
|
+ {.name = "UNC_DMC_WRITES",
|
|
+ .modmsk = ARMV8_ATTRS,
|
|
+ .code = DMC_EVENT_WRITE_TXNS,
|
|
+ .desc = "Memory write transactions"
|
|
+ },
|
|
+};
|
|
+
|
|
+#define ARM_TX2_CORE_DMC_COUNT (sizeof(arm_thunderx2_unc_dmc_pe)/sizeof(arm_entry_t))
|
|
+
|
|
+static const arm_entry_t arm_thunderx2_unc_llc_pe[]={
|
|
+ {.name = "UNC_LLC_READ",
|
|
+ .modmsk = ARMV8_ATTRS,
|
|
+ .code = L3_EVENT_READ_REQ,
|
|
+ .desc = "Read requests to LLC"
|
|
+ },
|
|
+ {.name = "UNC_LLC_EVICT",
|
|
+ .modmsk = ARMV8_ATTRS,
|
|
+ .code = L3_EVENT_EVICT_REQ,
|
|
+ .desc = "Evict requests to LLC"
|
|
+ },
|
|
+ {.name = "UNC_LLC_READ_HIT",
|
|
+ .modmsk = ARMV8_ATTRS,
|
|
+ .code = L3_EVENT_READ_HIT,
|
|
+ .desc = "Read requests to LLC which hit"
|
|
+ },
|
|
+ {.name = "UNC_LLC_WB",
|
|
+ .modmsk = ARMV8_ATTRS,
|
|
+ .code = L3_EVENT_WRITEBACK_REQ,
|
|
+ .desc = "Writeback requests to LLC"
|
|
+ }
|
|
+};
|
|
+
|
|
+#define ARM_TX2_CORE_LLC_COUNT (sizeof(arm_thunderx2_unc_llc_pe)/sizeof(arm_entry_t))
|
|
+//Uncore accessor functions
|
|
+int
|
|
+pfm_tx2_unc_get_event_encoding(void *this, pfmlib_event_desc_t *e);
|
|
+int
|
|
+pfm_tx2_unc_get_perf_encoding(void *this, pfmlib_event_desc_t *e);
|
|
diff --git a/lib/pfmlib_arm_armv8.c b/lib/pfmlib_arm_armv8.c
|
|
index 35ff70f..291ac60 100644
|
|
--- a/lib/pfmlib_arm_armv8.c
|
|
+++ b/lib/pfmlib_arm_armv8.c
|
|
@@ -33,7 +33,8 @@
|
|
#include "events/arm_cortex_a57_events.h" /* A57 event tables */
|
|
#include "events/arm_cortex_a53_events.h" /* A53 event tables */
|
|
#include "events/arm_xgene_events.h" /* Applied Micro X-Gene tables */
|
|
-#include "events/arm_cavium_tx2_events.h" /* Cavium ThunderX2 tables */
|
|
+#include "events/arm_cavium_tx2_events.h" /* Marvell ThunderX2 tables */
|
|
+#include "events/arm_marvell_tx2_unc_events.h" /* Marvell ThunderX2 PMU tables */
|
|
|
|
static int
|
|
pfm_arm_detect_cortex_a57(void *this)
|