libpfm/moved-tx2-uncore-event-to-separate-file.patch
Tony Jones 71e4f7a0f0 - Add Cavium ThunderX2 uncore support (jsc#SLE-10000)
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
2020-03-03 03:01:33 +00:00

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)