linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Perf uncore PMU event alias support for Hisi hip08 ARM64 platform
@ 2019-06-14 14:07 John Garry
  2019-06-14 14:07 ` [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64 John Garry
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: John Garry @ 2019-06-14 14:07 UTC (permalink / raw)
  To: peterz, mingo, acme, alexander.shishkin, jolsa, namhyung,
	tmricht, brueckner, kan.liang, ben, mathieu.poirier,
	mark.rutland, will.deacon
  Cc: zhangshaokun, John Garry, linux-kernel, linux-arm-kernel, linuxarm

This patchset adds support for uncore PMU event aliasing for HiSilicon
hip08 ARM64 platform.

We can now get proper event description for uncore events for the
perf tool.

For HHA, DDRC, and L3C JSONs, we don't have all the event info yet, so
I will seek it out to update the JSONs later.

Changes to v2:
- Use strtok_r() in pmu_uncore_alias_match()
- from "sccl" from uncore aliases

John Garry (5):
  perf pmu: Fix uncore PMU alias list for ARM64
  perf pmu: Support more complex PMU event aliasing
  perf jevents: Add support for Hisi hip08 DDRC PMU aliasing
  perf jevents: Add support for Hisi hip08 HHA PMU aliasing
  perf jevents: Add support for Hisi hip08 L3C PMU aliasing

 .../arm64/hisilicon/hip08/uncore-ddrc.json    | 44 ++++++++++++++
 .../arm64/hisilicon/hip08/uncore-hha.json     | 51 +++++++++++++++++
 .../arm64/hisilicon/hip08/uncore-l3c.json     | 37 ++++++++++++
 tools/perf/pmu-events/jevents.c               |  3 +
 tools/perf/util/pmu.c                         | 57 +++++++++++++------
 5 files changed, 176 insertions(+), 16 deletions(-)
 create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json

-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64
  2019-06-14 14:07 [PATCH v2 0/5] Perf uncore PMU event alias support for Hisi hip08 ARM64 platform John Garry
@ 2019-06-14 14:07 ` John Garry
  2019-06-14 14:46   ` Arnaldo Carvalho de Melo
  2019-06-14 14:08 ` [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing John Garry
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 18+ messages in thread
From: John Garry @ 2019-06-14 14:07 UTC (permalink / raw)
  To: peterz, mingo, acme, alexander.shishkin, jolsa, namhyung,
	tmricht, brueckner, kan.liang, ben, mathieu.poirier,
	mark.rutland, will.deacon
  Cc: zhangshaokun, John Garry, linux-kernel, linux-arm-kernel, linuxarm

In commit 292c34c10249 ("perf pmu: Fix core PMU alias list for X86
platform"), we fixed the issue of CPU events being aliased to uncore
events.

Fix this same issue for ARM64, since the said commit left the (broken)
behaviour untouched for ARM64.

Signed-off-by: John Garry <john.garry@huawei.com>
---
 tools/perf/util/pmu.c | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index f2eff272279b..7e7299fee550 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -709,9 +709,7 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
 {
 	int i;
 	struct pmu_events_map *map;
-	struct pmu_event *pe;
 	const char *name = pmu->name;
-	const char *pname;
 
 	map = perf_pmu__find_map(pmu);
 	if (!map)
@@ -722,28 +720,26 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
 	 */
 	i = 0;
 	while (1) {
+		const char *cpu_name = is_arm_pmu_core(name) ? name : "cpu";
+		struct pmu_event *pe = &map->table[i++];
+		const char *pname = pe->pmu ? pe->pmu : cpu_name;
 
-		pe = &map->table[i++];
 		if (!pe->name) {
 			if (pe->metric_group || pe->metric_name)
 				continue;
 			break;
 		}
 
-		if (!is_arm_pmu_core(name)) {
-			pname = pe->pmu ? pe->pmu : "cpu";
-
-			/*
-			 * uncore alias may be from different PMU
-			 * with common prefix
-			 */
-			if (pmu_is_uncore(name) &&
-			    !strncmp(pname, name, strlen(pname)))
-				goto new_alias;
+		/*
+		 * uncore alias may be from different PMU
+		 * with common prefix
+		 */
+		if (pmu_is_uncore(name) &&
+		    !strncmp(pname, name, strlen(pname)))
+			goto new_alias;
 
-			if (strcmp(pname, name))
-				continue;
-		}
+		if (strcmp(pname, name))
+			continue;
 
 new_alias:
 		pr_err("%s new_alias name=%s pe->name=%s\n", __func__, name, pe->name);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-14 14:07 [PATCH v2 0/5] Perf uncore PMU event alias support for Hisi hip08 ARM64 platform John Garry
  2019-06-14 14:07 ` [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64 John Garry
@ 2019-06-14 14:08 ` John Garry
  2019-06-14 14:50   ` Arnaldo Carvalho de Melo
  2019-06-16  9:58   ` Jiri Olsa
  2019-06-14 14:08 ` [PATCH v2 3/5] perf jevents: Add support for Hisi hip08 DDRC PMU aliasing John Garry
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 18+ messages in thread
From: John Garry @ 2019-06-14 14:08 UTC (permalink / raw)
  To: peterz, mingo, acme, alexander.shishkin, jolsa, namhyung,
	tmricht, brueckner, kan.liang, ben, mathieu.poirier,
	mark.rutland, will.deacon
  Cc: zhangshaokun, John Garry, linux-kernel, linux-arm-kernel, linuxarm

The jevent "Unit" field is used for uncore PMU alias definition.

The form uncore_pmu_example_X is supported, where "X" is a wildcard,
to support multiple instances of the same PMU in a system.

Unfortunately this format not suitable for all uncore PMUs; take the Hisi
DDRC uncore PMU for example, where the name is in the form
hisi_scclX_ddrcY.

For the current jevent parsing, we would be required to hardcode an uncore
alias translation for each possible value of X. This is not scalable.

Instead, add support for "Unit" field in the form "hisi_sccl,ddrc", where
we can match by hisi_scclX and ddrcY. Tokens in Unit field are 
delimited by ','.

Signed-off-by: John Garry <john.garry@huawei.com>
---
 tools/perf/util/pmu.c | 39 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 34 insertions(+), 5 deletions(-)

diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 7e7299fee550..bc71c60589b5 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -700,6 +700,39 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu)
 	return map;
 }
 
+static bool pmu_uncore_alias_match(const char *pmu_name, const char *name)
+{
+	char *tmp, *tok, *str;
+	bool res;
+
+	str = strdup(pmu_name);
+	if (!str)
+		return false;
+
+	/*
+	 * uncore alias may be from different PMU with common
+	 * prefix or matching tokens.
+	 */
+	tok = strtok_r(str, ",", &tmp);
+	if (strncmp(pmu_name, tok, strlen(tok))) {
+		res = false;
+		goto out;
+	}
+
+	for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",", &tmp)) {
+		name = strstr(name, tok);
+		if (!name) {
+			res = false;
+			goto out;
+		}
+	}
+
+	res = true;
+out:
+	free(str);
+	return res;
+}
+
 /*
  * From the pmu_events_map, find the table of PMU events that corresponds
  * to the current running CPU. Then, add all PMU events from that table
@@ -730,12 +763,8 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
 			break;
 		}
 
-		/*
-		 * uncore alias may be from different PMU
-		 * with common prefix
-		 */
 		if (pmu_is_uncore(name) &&
-		    !strncmp(pname, name, strlen(pname)))
+		    pmu_uncore_alias_match(pname, name))
 			goto new_alias;
 
 		if (strcmp(pname, name))
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 3/5] perf jevents: Add support for Hisi hip08 DDRC PMU aliasing
  2019-06-14 14:07 [PATCH v2 0/5] Perf uncore PMU event alias support for Hisi hip08 ARM64 platform John Garry
  2019-06-14 14:07 ` [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64 John Garry
  2019-06-14 14:08 ` [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing John Garry
@ 2019-06-14 14:08 ` John Garry
  2019-06-14 14:08 ` [PATCH v2 4/5] perf jevents: Add support for Hisi hip08 HHA " John Garry
  2019-06-14 14:08 ` [PATCH v2 5/5] perf jevents: Add support for Hisi hip08 L3C " John Garry
  4 siblings, 0 replies; 18+ messages in thread
From: John Garry @ 2019-06-14 14:08 UTC (permalink / raw)
  To: peterz, mingo, acme, alexander.shishkin, jolsa, namhyung,
	tmricht, brueckner, kan.liang, ben, mathieu.poirier,
	mark.rutland, will.deacon
  Cc: zhangshaokun, John Garry, linux-kernel, linux-arm-kernel, linuxarm

Add support for Hisi hip08 DDRC PMU event aliasing. We can now do
something like this:

$perf list

[snip]

uncore ddrc:
  uncore_hisi_ddrc.act_cmd
       [DDRC active commands. Unit: hisi_sccl,ddrc]
  uncore_hisi_ddrc.flux_rcmd
       [DDRC read commands. Unit: hisi_sccl,ddrc]
  uncore_hisi_ddrc.flux_wcmd
       [DDRC write commands. Unit: hisi_sccl,ddrc]
  uncore_hisi_ddrc.flux_wr
       [DDRC precharge commands. Unit: hisi_sccl,ddrc]
  uncore_hisi_ddrc.rnk_chg
       [DDRC rank commands. Unit: hisi_sccl,ddrc]
  uncore_hisi_ddrc.rw_chg
       [DDRC read and write changes. Unit: hisi_sccl,ddrc]

$sudo ./perf stat -e uncore_hisi_ddrc.flux_rcmd --no-merge sleep 1

Performance counter stats for 'system wide':

                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl1_ddrc0]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl3_ddrc1]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl5_ddrc2]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl7_ddrc3]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl5_ddrc0]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl7_ddrc1]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl1_ddrc3]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl1_ddrc1]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl3_ddrc2]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl5_ddrc3]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl3_ddrc0]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl5_ddrc1]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl7_ddrc2]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl7_ddrc0]
            20,421      uncore_hisi_ddrc.flux_rcmd [hisi_sccl1_ddrc2]
                 0      uncore_hisi_ddrc.flux_rcmd [hisi_sccl3_ddrc3]

       1.001559011 seconds time elapsed


The kernel driver is in drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c

Signed-off-by: John Garry <john.garry@huawei.com>
---
 .../arm64/hisilicon/hip08/uncore-ddrc.json    | 44 +++++++++++++++++++
 tools/perf/pmu-events/jevents.c               |  1 +
 2 files changed, 45 insertions(+)
 create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json

diff --git a/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json b/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json
new file mode 100644
index 000000000000..0d1556fcdffe
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json
@@ -0,0 +1,44 @@
+[
+   {
+	    "EventCode": "0x02",
+	    "EventName": "uncore_hisi_ddrc.flux_wcmd",
+	    "BriefDescription": "DDRC write commands",
+	    "PublicDescription": "DDRC write commands",
+	    "Unit": "hisi_sccl,ddrc",
+   },
+   {
+	    "EventCode": "0x03",
+	    "EventName": "uncore_hisi_ddrc.flux_rcmd",
+	    "BriefDescription": "DDRC read commands",
+	    "PublicDescription": "DDRC read commands",
+	    "Unit": "hisi_sccl,ddrc",
+   },
+   {
+	    "EventCode": "0x04",
+	    "EventName": "uncore_hisi_ddrc.flux_wr",
+	    "BriefDescription": "DDRC precharge commands",
+	    "PublicDescription": "DDRC precharge commands",
+	    "Unit": "hisi_sccl,ddrc",
+   },
+   {
+	    "EventCode": "0x05",
+	    "EventName": "uncore_hisi_ddrc.act_cmd",
+	    "BriefDescription": "DDRC active commands",
+	    "PublicDescription": "DDRC active commands",
+	    "Unit": "hisi_sccl,ddrc",
+   },
+   {
+	    "EventCode": "0x06",
+	    "EventName": "uncore_hisi_ddrc.rnk_chg",
+	    "BriefDescription": "DDRC rank commands",
+	    "PublicDescription": "DDRC rank commands",
+	    "Unit": "hisi_sccl,ddrc",
+   },
+   {
+	    "EventCode": "0x07",
+	    "EventName": "uncore_hisi_ddrc.rw_chg",
+	    "BriefDescription": "DDRC read and write changes",
+	    "PublicDescription": "DDRC read and write changes",
+	    "Unit": "hisi_sccl,ddrc",
+   },
+]
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index 58f77fd0f59f..cf9a60333554 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -236,6 +236,7 @@ static struct map {
 	{ "CPU-M-CF", "cpum_cf" },
 	{ "CPU-M-SF", "cpum_sf" },
 	{ "UPI LL", "uncore_upi" },
+	{ "hisi_sccl,ddrc", "hisi_sccl,ddrc" },
 	{}
 };
 
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 4/5] perf jevents: Add support for Hisi hip08 HHA PMU aliasing
  2019-06-14 14:07 [PATCH v2 0/5] Perf uncore PMU event alias support for Hisi hip08 ARM64 platform John Garry
                   ` (2 preceding siblings ...)
  2019-06-14 14:08 ` [PATCH v2 3/5] perf jevents: Add support for Hisi hip08 DDRC PMU aliasing John Garry
@ 2019-06-14 14:08 ` John Garry
  2019-06-14 14:08 ` [PATCH v2 5/5] perf jevents: Add support for Hisi hip08 L3C " John Garry
  4 siblings, 0 replies; 18+ messages in thread
From: John Garry @ 2019-06-14 14:08 UTC (permalink / raw)
  To: peterz, mingo, acme, alexander.shishkin, jolsa, namhyung,
	tmricht, brueckner, kan.liang, ben, mathieu.poirier,
	mark.rutland, will.deacon
  Cc: zhangshaokun, John Garry, linux-kernel, linux-arm-kernel, linuxarm

Add support for Hisi hip08 HHA PMU aliasing.

The kernel driver is in drivers/perf/hisilicon/hisi_uncore_hha_pmu.c

Signed-off-by: John Garry <john.garry@huawei.com>
---
 .../arm64/hisilicon/hip08/uncore-hha.json     | 51 +++++++++++++++++++
 tools/perf/pmu-events/jevents.c               |  1 +
 2 files changed, 52 insertions(+)
 create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json

diff --git a/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json b/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json
new file mode 100644
index 000000000000..447d3064de90
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json
@@ -0,0 +1,51 @@
+[
+   {
+	    "EventCode": "0x00",
+	    "EventName": "uncore_hisi_hha.rx_ops_num",
+	    "BriefDescription": "The number of all operations received by the HHA",
+	    "PublicDescription": "The number of all operations received by the HHA",
+	    "Unit": "hisi_sccl,hha",
+   },
+   {
+	    "EventCode": "0x01",
+	    "EventName": "uncore_hisi_hha.rx_outer",
+	    "BriefDescription": "The number of all operations received by the HHA from another socket",
+	    "PublicDescription": "The number of all operations received by the HHA from another socket",
+	    "Unit": "hisi_sccl,hha",
+   },
+   {
+	    "EventCode": "0x02",
+	    "EventName": "uncore_hisi_hha.rx_sccl",
+	    "BriefDescription": "The number of all operations received by the HHA from another SCCL in this socket",
+	    "PublicDescription": "The number of all operations received by the HHA from another SCCL in this socket",
+	    "Unit": "hisi_sccl,hha",
+   },
+   {
+	    "EventCode": "0x1c",
+	    "EventName": "uncore_hisi_hha.rd_ddr_64b",
+	    "BriefDescription": "The number of read operations sent by HHA to DDRC which size is 64 bytes",
+	    "PublicDescription": "The number of read operations sent by HHA to DDRC which size is 64bytes",
+	    "Unit": "hisi_sccl,hha",
+   },
+   {
+	    "EventCode": "0x1d",
+	    "EventName": "uncore_hisi_hha.wr_dr_64b",
+	    "BriefDescription": "The number of write operations sent by HHA to DDRC which size is 64 bytes",
+	    "PublicDescription": "The number of write operations sent by HHA to DDRC which size is 64 bytes",
+	    "Unit": "hisi_sccl,hha",
+   },
+   {
+	    "EventCode": "0x1e",
+	    "EventName": "uncore_hisi_hha.rd_ddr_128b",
+	    "BriefDescription": "The number of read operations sent by HHA to DDRC which size is 128 bytes",
+	    "PublicDescription": "The number of read operations sent by HHA to DDRC which size is 128 bytes",
+	    "Unit": "hisi_sccl,hha",
+   },
+   {
+	    "EventCode": "0x1f",
+	    "EventName": "uncore_hisi_hha.wr_ddr_128b",
+	    "BriefDescription": "The number of write operations sent by HHA to DDRC which size is 128 bytes",
+	    "PublicDescription": "The number of write operations sent by HHA to DDRC which size is 128 bytes",
+	    "Unit": "hisi_sccl,hha",
+   },
+]
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index cf9a60333554..909e53e3b5bd 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -237,6 +237,7 @@ static struct map {
 	{ "CPU-M-SF", "cpum_sf" },
 	{ "UPI LL", "uncore_upi" },
 	{ "hisi_sccl,ddrc", "hisi_sccl,ddrc" },
+	{ "hisi_sccl,hha", "hisi_sccl,hha" },
 	{}
 };
 
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 5/5] perf jevents: Add support for Hisi hip08 L3C PMU aliasing
  2019-06-14 14:07 [PATCH v2 0/5] Perf uncore PMU event alias support for Hisi hip08 ARM64 platform John Garry
                   ` (3 preceding siblings ...)
  2019-06-14 14:08 ` [PATCH v2 4/5] perf jevents: Add support for Hisi hip08 HHA " John Garry
@ 2019-06-14 14:08 ` John Garry
  4 siblings, 0 replies; 18+ messages in thread
From: John Garry @ 2019-06-14 14:08 UTC (permalink / raw)
  To: peterz, mingo, acme, alexander.shishkin, jolsa, namhyung,
	tmricht, brueckner, kan.liang, ben, mathieu.poirier,
	mark.rutland, will.deacon
  Cc: zhangshaokun, John Garry, linux-kernel, linux-arm-kernel, linuxarm

Add support for Hisi hip08 L3C PMU aliasing.

The kernel driver is in drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c

Signed-off-by: John Garry <john.garry@huawei.com>
---
 .../arm64/hisilicon/hip08/uncore-l3c.json     | 37 +++++++++++++++++++
 tools/perf/pmu-events/jevents.c               |  1 +
 2 files changed, 38 insertions(+)
 create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json

diff --git a/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json b/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json
new file mode 100644
index 000000000000..ca48747642e1
--- /dev/null
+++ b/tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json
@@ -0,0 +1,37 @@
+[
+   {
+	    "EventCode": "0x00",
+	    "EventName": "uncore_hisi_l3c.rd_cpipe",
+	    "BriefDescription": "Total read accesses",
+	    "PublicDescription": "Total read accesses",
+	    "Unit": "hisi_sccl,l3c",
+   },
+   {
+	    "EventCode": "0x01",
+	    "EventName": "uncore_hisi_l3c.wr_cpipe",
+	    "BriefDescription": "Total write accesses",
+	    "PublicDescription": "Total write accesses",
+	    "Unit": "hisi_sccl,l3c",
+   },
+   {
+	    "EventCode": "0x02",
+	    "EventName": "uncore_hisi_l3c.rd_hit_cpipe",
+	    "BriefDescription": "Total read hits",
+	    "PublicDescription": "Total read hits",
+	    "Unit": "hisi_sccl,l3c",
+   },
+   {
+	    "EventCode": "0x03",
+	    "EventName": "uncore_hisi_l3c.wr_hit_cpipe",
+	    "BriefDescription": "Total write hits",
+	    "PublicDescription": "Total write hits",
+	    "Unit": "hisi_sccl,l3c",
+   },
+   {
+	    "EventCode": "0x04",
+	    "EventName": "uncore_hisi_l3c.victim_num",
+	    "BriefDescription": "l3c precharge commands",
+	    "PublicDescription": "l3c precharge commands",
+	    "Unit": "hisi_sccl,l3c",
+   },
+]
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index 909e53e3b5bd..7d241efd03de 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -238,6 +238,7 @@ static struct map {
 	{ "UPI LL", "uncore_upi" },
 	{ "hisi_sccl,ddrc", "hisi_sccl,ddrc" },
 	{ "hisi_sccl,hha", "hisi_sccl,hha" },
+	{ "hisi_sccl,l3c", "hisi_sccl,l3c" },
 	{}
 };
 
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64
  2019-06-14 14:07 ` [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64 John Garry
@ 2019-06-14 14:46   ` Arnaldo Carvalho de Melo
  2019-06-14 15:04     ` John Garry
  0 siblings, 1 reply; 18+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-06-14 14:46 UTC (permalink / raw)
  To: John Garry
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, ben, tmricht,
	will.deacon, linux-kernel, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, jolsa, linux-arm-kernel,
	kan.liang

Em Fri, Jun 14, 2019 at 10:07:59PM +0800, John Garry escreveu:
> In commit 292c34c10249 ("perf pmu: Fix core PMU alias list for X86
> platform"), we fixed the issue of CPU events being aliased to uncore
> events.
> 
> Fix this same issue for ARM64, since the said commit left the (broken)
> behaviour untouched for ARM64.

So I added:

Cc: stable@vger.kernel.org
Fixes: 292c34c10249 ("perf pmu: Fix core PMU alias list for X86 platform")

So that the stable trees get this fix and add it to the versions where
it should have been together with the x86 fix, ok?

- Arnaldo
 
> Signed-off-by: John Garry <john.garry@huawei.com>
> ---
>  tools/perf/util/pmu.c | 28 ++++++++++++----------------
>  1 file changed, 12 insertions(+), 16 deletions(-)
> 
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index f2eff272279b..7e7299fee550 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -709,9 +709,7 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
>  {
>  	int i;
>  	struct pmu_events_map *map;
> -	struct pmu_event *pe;
>  	const char *name = pmu->name;
> -	const char *pname;
>  
>  	map = perf_pmu__find_map(pmu);
>  	if (!map)
> @@ -722,28 +720,26 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
>  	 */
>  	i = 0;
>  	while (1) {
> +		const char *cpu_name = is_arm_pmu_core(name) ? name : "cpu";
> +		struct pmu_event *pe = &map->table[i++];
> +		const char *pname = pe->pmu ? pe->pmu : cpu_name;
>  
> -		pe = &map->table[i++];
>  		if (!pe->name) {
>  			if (pe->metric_group || pe->metric_name)
>  				continue;
>  			break;
>  		}
>  
> -		if (!is_arm_pmu_core(name)) {
> -			pname = pe->pmu ? pe->pmu : "cpu";
> -
> -			/*
> -			 * uncore alias may be from different PMU
> -			 * with common prefix
> -			 */
> -			if (pmu_is_uncore(name) &&
> -			    !strncmp(pname, name, strlen(pname)))
> -				goto new_alias;
> +		/*
> +		 * uncore alias may be from different PMU
> +		 * with common prefix
> +		 */
> +		if (pmu_is_uncore(name) &&
> +		    !strncmp(pname, name, strlen(pname)))
> +			goto new_alias;
>  
> -			if (strcmp(pname, name))
> -				continue;
> -		}
> +		if (strcmp(pname, name))
> +			continue;
>  
>  new_alias:
>  		pr_err("%s new_alias name=%s pe->name=%s\n", __func__, name, pe->name);
> -- 
> 2.17.1

-- 

- Arnaldo

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-14 14:08 ` [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing John Garry
@ 2019-06-14 14:50   ` Arnaldo Carvalho de Melo
  2019-06-16  9:58   ` Jiri Olsa
  1 sibling, 0 replies; 18+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-06-14 14:50 UTC (permalink / raw)
  To: John Garry
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, ben, tmricht,
	will.deacon, linux-kernel, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, jolsa, linux-arm-kernel,
	kan.liang

Em Fri, Jun 14, 2019 at 10:08:00PM +0800, John Garry escreveu:
> The jevent "Unit" field is used for uncore PMU alias definition.
> 
> The form uncore_pmu_example_X is supported, where "X" is a wildcard,
> to support multiple instances of the same PMU in a system.
> 
> Unfortunately this format not suitable for all uncore PMUs; take the Hisi
> DDRC uncore PMU for example, where the name is in the form
> hisi_scclX_ddrcY.
> 
> For the current jevent parsing, we would be required to hardcode an uncore
> alias translation for each possible value of X. This is not scalable.
> 
> Instead, add support for "Unit" field in the form "hisi_sccl,ddrc", where
> we can match by hisi_scclX and ddrcY. Tokens in Unit field are 
> delimited by ','.

Looks ok, but would be good to have some Reviewed-by attached as I'm not
super familiar with the PMU oddities, Jiri, can you please review this,
somebody else?

Thanks,

- Arnaldo
 
> Signed-off-by: John Garry <john.garry@huawei.com>
> ---
>  tools/perf/util/pmu.c | 39 ++++++++++++++++++++++++++++++++++-----
>  1 file changed, 34 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index 7e7299fee550..bc71c60589b5 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -700,6 +700,39 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu)
>  	return map;
>  }
>  
> +static bool pmu_uncore_alias_match(const char *pmu_name, const char *name)
> +{
> +	char *tmp, *tok, *str;
> +	bool res;
> +
> +	str = strdup(pmu_name);
> +	if (!str)
> +		return false;
> +
> +	/*
> +	 * uncore alias may be from different PMU with common
> +	 * prefix or matching tokens.
> +	 */
> +	tok = strtok_r(str, ",", &tmp);
> +	if (strncmp(pmu_name, tok, strlen(tok))) {
> +		res = false;
> +		goto out;
> +	}
> +
> +	for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",", &tmp)) {
> +		name = strstr(name, tok);
> +		if (!name) {
> +			res = false;
> +			goto out;
> +		}
> +	}
> +
> +	res = true;
> +out:
> +	free(str);
> +	return res;
> +}
> +
>  /*
>   * From the pmu_events_map, find the table of PMU events that corresponds
>   * to the current running CPU. Then, add all PMU events from that table
> @@ -730,12 +763,8 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
>  			break;
>  		}
>  
> -		/*
> -		 * uncore alias may be from different PMU
> -		 * with common prefix
> -		 */
>  		if (pmu_is_uncore(name) &&
> -		    !strncmp(pname, name, strlen(pname)))
> +		    pmu_uncore_alias_match(pname, name))
>  			goto new_alias;
>  
>  		if (strcmp(pname, name))
> -- 
> 2.17.1

-- 

- Arnaldo

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64
  2019-06-14 14:46   ` Arnaldo Carvalho de Melo
@ 2019-06-14 15:04     ` John Garry
  2019-06-14 15:47       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 18+ messages in thread
From: John Garry @ 2019-06-14 15:04 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, ben, tmricht,
	will.deacon, linux-kernel, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, jolsa, linux-arm-kernel,
	kan.liang

On 14/06/2019 15:46, Arnaldo Carvalho de Melo wrote:
> Em Fri, Jun 14, 2019 at 10:07:59PM +0800, John Garry escreveu:
>> In commit 292c34c10249 ("perf pmu: Fix core PMU alias list for X86
>> platform"), we fixed the issue of CPU events being aliased to uncore
>> events.
>>
>> Fix this same issue for ARM64, since the said commit left the (broken)
>> behaviour untouched for ARM64.
>
> So I added:
>
> Cc: stable@vger.kernel.org
> Fixes: 292c34c10249 ("perf pmu: Fix core PMU alias list for X86 platform")
>
> So that the stable trees get this fix and add it to the versions where
> it should have been together with the x86 fix, ok?

Hi Arnaldo,

I have a slight hesitation about this qualifying for the stable.

It's fixing uncore pmu aliasing for arm64. But this series is also the 
first to introduce any actual arm64 uncore pmu aliases.

Thanks,
John

>
> - Arnaldo
>
>> Signed-off-by: John Garry <john.garry@huawei.com>
>> ---
>>  tools/perf/util/pmu.c | 28 ++++++++++++----------------
>>  1 file changed, 12 insertions(+), 16 deletions(-)
>>
>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
>> index f2eff272279b..7e7299fee550 100644
>> --- a/tools/perf/util/pmu.c
>> +++ b/tools/perf/util/pmu.c
>> @@ -709,9 +709,7 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
>>  {
>>  	int i;
>>  	struct pmu_events_map *map;
>> -	struct pmu_event *pe;
>>  	const char *name = pmu->name;
>> -	const char *pname;
>>
>>  	map = perf_pmu__find_map(pmu);
>>  	if (!map)
>> @@ -722,28 +720,26 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
>>  	 */
>>  	i = 0;
>>  	while (1) {
>> +		const char *cpu_name = is_arm_pmu_core(name) ? name : "cpu";
>> +		struct pmu_event *pe = &map->table[i++];
>> +		const char *pname = pe->pmu ? pe->pmu : cpu_name;
>>
>> -		pe = &map->table[i++];
>>  		if (!pe->name) {
>>  			if (pe->metric_group || pe->metric_name)
>>  				continue;
>>  			break;
>>  		}
>>
>> -		if (!is_arm_pmu_core(name)) {
>> -			pname = pe->pmu ? pe->pmu : "cpu";
>> -
>> -			/*
>> -			 * uncore alias may be from different PMU
>> -			 * with common prefix
>> -			 */
>> -			if (pmu_is_uncore(name) &&
>> -			    !strncmp(pname, name, strlen(pname)))
>> -				goto new_alias;
>> +		/*
>> +		 * uncore alias may be from different PMU
>> +		 * with common prefix
>> +		 */
>> +		if (pmu_is_uncore(name) &&
>> +		    !strncmp(pname, name, strlen(pname)))
>> +			goto new_alias;
>>
>> -			if (strcmp(pname, name))
>> -				continue;
>> -		}
>> +		if (strcmp(pname, name))
>> +			continue;
>>
>>  new_alias:
>>  		pr_err("%s new_alias name=%s pe->name=%s\n", __func__, name, pe->name);
>> --
>> 2.17.1
>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64
  2019-06-14 15:04     ` John Garry
@ 2019-06-14 15:47       ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 18+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-06-14 15:47 UTC (permalink / raw)
  To: John Garry
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, ben, tmricht,
	will.deacon, Arnaldo Carvalho de Melo, linuxarm, linux-kernel,
	zhangshaokun, alexander.shishkin, mingo, namhyung, jolsa,
	linux-arm-kernel, kan.liang

Em Fri, Jun 14, 2019 at 04:04:26PM +0100, John Garry escreveu:
> On 14/06/2019 15:46, Arnaldo Carvalho de Melo wrote:
> > Em Fri, Jun 14, 2019 at 10:07:59PM +0800, John Garry escreveu:
> > > In commit 292c34c10249 ("perf pmu: Fix core PMU alias list for X86
> > > platform"), we fixed the issue of CPU events being aliased to uncore
> > > events.
> > > 
> > > Fix this same issue for ARM64, since the said commit left the (broken)
> > > behaviour untouched for ARM64.
> > 
> > So I added:
> > 
> > Cc: stable@vger.kernel.org
> > Fixes: 292c34c10249 ("perf pmu: Fix core PMU alias list for X86 platform")
> > 
> > So that the stable trees get this fix and add it to the versions where
> > it should have been together with the x86 fix, ok?
> 
> Hi Arnaldo,
> 
> I have a slight hesitation about this qualifying for the stable.
> 
> It's fixing uncore pmu aliasing for arm64. But this series is also the first
> to introduce any actual arm64 uncore pmu aliases.

I'm not talking about the whole series, just the first patch, the one
you said should've been done together with the equivalent fix for x86.

- Arnaldo
 
> Thanks,
> John
> 
> > 
> > - Arnaldo
> > 
> > > Signed-off-by: John Garry <john.garry@huawei.com>
> > > ---
> > >  tools/perf/util/pmu.c | 28 ++++++++++++----------------
> > >  1 file changed, 12 insertions(+), 16 deletions(-)
> > > 
> > > diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> > > index f2eff272279b..7e7299fee550 100644
> > > --- a/tools/perf/util/pmu.c
> > > +++ b/tools/perf/util/pmu.c
> > > @@ -709,9 +709,7 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
> > >  {
> > >  	int i;
> > >  	struct pmu_events_map *map;
> > > -	struct pmu_event *pe;
> > >  	const char *name = pmu->name;
> > > -	const char *pname;
> > > 
> > >  	map = perf_pmu__find_map(pmu);
> > >  	if (!map)
> > > @@ -722,28 +720,26 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
> > >  	 */
> > >  	i = 0;
> > >  	while (1) {
> > > +		const char *cpu_name = is_arm_pmu_core(name) ? name : "cpu";
> > > +		struct pmu_event *pe = &map->table[i++];
> > > +		const char *pname = pe->pmu ? pe->pmu : cpu_name;
> > > 
> > > -		pe = &map->table[i++];
> > >  		if (!pe->name) {
> > >  			if (pe->metric_group || pe->metric_name)
> > >  				continue;
> > >  			break;
> > >  		}
> > > 
> > > -		if (!is_arm_pmu_core(name)) {
> > > -			pname = pe->pmu ? pe->pmu : "cpu";
> > > -
> > > -			/*
> > > -			 * uncore alias may be from different PMU
> > > -			 * with common prefix
> > > -			 */
> > > -			if (pmu_is_uncore(name) &&
> > > -			    !strncmp(pname, name, strlen(pname)))
> > > -				goto new_alias;
> > > +		/*
> > > +		 * uncore alias may be from different PMU
> > > +		 * with common prefix
> > > +		 */
> > > +		if (pmu_is_uncore(name) &&
> > > +		    !strncmp(pname, name, strlen(pname)))
> > > +			goto new_alias;
> > > 
> > > -			if (strcmp(pname, name))
> > > -				continue;
> > > -		}
> > > +		if (strcmp(pname, name))
> > > +			continue;
> > > 
> > >  new_alias:
> > >  		pr_err("%s new_alias name=%s pe->name=%s\n", __func__, name, pe->name);
> > > --
> > > 2.17.1
> > 
> 

-- 

- Arnaldo

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-14 14:08 ` [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing John Garry
  2019-06-14 14:50   ` Arnaldo Carvalho de Melo
@ 2019-06-16  9:58   ` Jiri Olsa
  2019-06-17  9:06     ` John Garry
  1 sibling, 1 reply; 18+ messages in thread
From: Jiri Olsa @ 2019-06-16  9:58 UTC (permalink / raw)
  To: John Garry
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On Fri, Jun 14, 2019 at 10:08:00PM +0800, John Garry wrote:
> The jevent "Unit" field is used for uncore PMU alias definition.
> 
> The form uncore_pmu_example_X is supported, where "X" is a wildcard,
> to support multiple instances of the same PMU in a system.
> 
> Unfortunately this format not suitable for all uncore PMUs; take the Hisi
> DDRC uncore PMU for example, where the name is in the form
> hisi_scclX_ddrcY.
> 
> For the current jevent parsing, we would be required to hardcode an uncore
> alias translation for each possible value of X. This is not scalable.
> 
> Instead, add support for "Unit" field in the form "hisi_sccl,ddrc", where
> we can match by hisi_scclX and ddrcY. Tokens in Unit field are 
> delimited by ','.
> 
> Signed-off-by: John Garry <john.garry@huawei.com>
> ---
>  tools/perf/util/pmu.c | 39 ++++++++++++++++++++++++++++++++++-----
>  1 file changed, 34 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index 7e7299fee550..bc71c60589b5 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -700,6 +700,39 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu)
>  	return map;
>  }
>  
> +static bool pmu_uncore_alias_match(const char *pmu_name, const char *name)
> +{
> +	char *tmp, *tok, *str;
> +	bool res;
> +
> +	str = strdup(pmu_name);
> +	if (!str)
> +		return false;
> +
> +	/*
> +	 * uncore alias may be from different PMU with common
> +	 * prefix or matching tokens.
> +	 */
> +	tok = strtok_r(str, ",", &tmp);
> +	if (strncmp(pmu_name, tok, strlen(tok))) {

if tok is NULL in here we crash

> +		res = false;
> +		goto out;
> +	}
> +
> +	for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",", &tmp)) {

why is name shifted in here?

jirka

> +		name = strstr(name, tok);
> +		if (!name) {
> +			res = false;
> +			goto out;
> +		}
> +	}
> +
> +	res = true;
> +out:
> +	free(str);
> +	return res;
> +}
> +
>  /*
>   * From the pmu_events_map, find the table of PMU events that corresponds
>   * to the current running CPU. Then, add all PMU events from that table
> @@ -730,12 +763,8 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
>  			break;
>  		}
>  
> -		/*
> -		 * uncore alias may be from different PMU
> -		 * with common prefix
> -		 */
>  		if (pmu_is_uncore(name) &&
> -		    !strncmp(pname, name, strlen(pname)))
> +		    pmu_uncore_alias_match(pname, name))
>  			goto new_alias;
>  
>  		if (strcmp(pname, name))
> -- 
> 2.17.1
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-16  9:58   ` Jiri Olsa
@ 2019-06-17  9:06     ` John Garry
  2019-06-20 18:25       ` Jiri Olsa
  0 siblings, 1 reply; 18+ messages in thread
From: John Garry @ 2019-06-17  9:06 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On 16/06/2019 10:58, Jiri Olsa wrote:
> On Fri, Jun 14, 2019 at 10:08:00PM +0800, John Garry wrote:
>> The jevent "Unit" field is used for uncore PMU alias definition.
>>
>> The form uncore_pmu_example_X is supported, where "X" is a wildcard,
>> to support multiple instances of the same PMU in a system.
>>
>> Unfortunately this format not suitable for all uncore PMUs; take the Hisi
>> DDRC uncore PMU for example, where the name is in the form
>> hisi_scclX_ddrcY.
>>
>> For the current jevent parsing, we would be required to hardcode an uncore
>> alias translation for each possible value of X. This is not scalable.
>>
>> Instead, add support for "Unit" field in the form "hisi_sccl,ddrc", where
>> we can match by hisi_scclX and ddrcY. Tokens in Unit field are
>> delimited by ','.
>>
>> Signed-off-by: John Garry <john.garry@huawei.com>
>> ---
>>  tools/perf/util/pmu.c | 39 ++++++++++++++++++++++++++++++++++-----
>>  1 file changed, 34 insertions(+), 5 deletions(-)
>>
>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
>> index 7e7299fee550..bc71c60589b5 100644
>> --- a/tools/perf/util/pmu.c
>> +++ b/tools/perf/util/pmu.c
>> @@ -700,6 +700,39 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu)
>>  	return map;
>>  }
>>
>> +static bool pmu_uncore_alias_match(const char *pmu_name, const char *name)
>> +{
>> +	char *tmp, *tok, *str;
>> +	bool res;
>> +
>> +	str = strdup(pmu_name);
>> +	if (!str)
>> +		return false;
>> +
>> +	/*
>> +	 * uncore alias may be from different PMU with common
>> +	 * prefix or matching tokens.
>> +	 */
>> +	tok = strtok_r(str, ",", &tmp);
>> +	if (strncmp(pmu_name, tok, strlen(tok))) {
>

Hi Jirka,

> if tok is NULL in here we crash
>

As I see, tok could not be NULL. If str contains no delimiters, then we 
just return same as str in tok.

Can you see tok being NULL?

>> +		res = false;
>> +		goto out;
>> +	}
>> +
>> +	for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",", &tmp)) {
>
> why is name shifted in here?

I want to ensure that we match the tokens in order and also guard 
against possible repeated token matches in 'name'.

Thanks,
John

>
> jirka
>
>> +		name = strstr(name, tok);
>> +		if (!name) {
>> +			res = false;
>> +			goto out;
>> +		}
>> +	}
>> +
>> +	res = true;
>> +out:
>> +	free(str);
>> +	return res;
>> +}
>> +
>>  /*
>>   * From the pmu_events_map, find the table of PMU events that corresponds
>>   * to the current running CPU. Then, add all PMU events from that table
>> @@ -730,12 +763,8 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
>>  			break;
>>  		}
>>
>> -		/*
>> -		 * uncore alias may be from different PMU
>> -		 * with common prefix
>> -		 */
>>  		if (pmu_is_uncore(name) &&
>> -		    !strncmp(pname, name, strlen(pname)))
>> +		    pmu_uncore_alias_match(pname, name))
>>  			goto new_alias;
>>
>>  		if (strcmp(pname, name))
>> --
>> 2.17.1
>>
>
> .
>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-17  9:06     ` John Garry
@ 2019-06-20 18:25       ` Jiri Olsa
  2019-06-21 10:42         ` John Garry
  0 siblings, 1 reply; 18+ messages in thread
From: Jiri Olsa @ 2019-06-20 18:25 UTC (permalink / raw)
  To: John Garry
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On Mon, Jun 17, 2019 at 10:06:08AM +0100, John Garry wrote:
> On 16/06/2019 10:58, Jiri Olsa wrote:
> > On Fri, Jun 14, 2019 at 10:08:00PM +0800, John Garry wrote:
> > > The jevent "Unit" field is used for uncore PMU alias definition.
> > > 
> > > The form uncore_pmu_example_X is supported, where "X" is a wildcard,
> > > to support multiple instances of the same PMU in a system.
> > > 
> > > Unfortunately this format not suitable for all uncore PMUs; take the Hisi
> > > DDRC uncore PMU for example, where the name is in the form
> > > hisi_scclX_ddrcY.
> > > 
> > > For the current jevent parsing, we would be required to hardcode an uncore
> > > alias translation for each possible value of X. This is not scalable.
> > > 
> > > Instead, add support for "Unit" field in the form "hisi_sccl,ddrc", where
> > > we can match by hisi_scclX and ddrcY. Tokens in Unit field are
> > > delimited by ','.
> > > 
> > > Signed-off-by: John Garry <john.garry@huawei.com>
> > > ---
> > >  tools/perf/util/pmu.c | 39 ++++++++++++++++++++++++++++++++++-----
> > >  1 file changed, 34 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> > > index 7e7299fee550..bc71c60589b5 100644
> > > --- a/tools/perf/util/pmu.c
> > > +++ b/tools/perf/util/pmu.c
> > > @@ -700,6 +700,39 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu)
> > >  	return map;
> > >  }
> > > 
> > > +static bool pmu_uncore_alias_match(const char *pmu_name, const char *name)
> > > +{
> > > +	char *tmp, *tok, *str;
> > > +	bool res;
> > > +
> > > +	str = strdup(pmu_name);
> > > +	if (!str)
> > > +		return false;
> > > +
> > > +	/*
> > > +	 * uncore alias may be from different PMU with common
> > > +	 * prefix or matching tokens.
> > > +	 */
> > > +	tok = strtok_r(str, ",", &tmp);
> > > +	if (strncmp(pmu_name, tok, strlen(tok))) {
> > 
> 
> Hi Jirka,

heya,
sry for late reply

> 
> > if tok is NULL in here we crash
> > 
> 
> As I see, tok could not be NULL. If str contains no delimiters, then we just
> return same as str in tok.
> 
> Can you see tok being NULL?

well, if there's no ',' in the str it returns NULL, right?
and IIUC this function is still called for standard uncore
pmu names

> 
> > > +		res = false;
> > > +		goto out;
> > > +	}
> > > +
> > > +	for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",", &tmp)) {
> > 
> > why is name shifted in here?
> 
> I want to ensure that we match the tokens in order and also guard against
> possible repeated token matches in 'name'.

i might not understand this correctly.. so

str is the alias name that can contain ',' now, like:
  hisi_sccl,ddrc

and name is still pmu with no ',' ... please make this or
proper version that in some comment

thanks,
jirka

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-20 18:25       ` Jiri Olsa
@ 2019-06-21 10:42         ` John Garry
  2019-06-27 16:27           ` John Garry
  0 siblings, 1 reply; 18+ messages in thread
From: John Garry @ 2019-06-21 10:42 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On 20/06/2019 19:25, Jiri Olsa wrote:
> On Mon, Jun 17, 2019 at 10:06:08AM +0100, John Garry wrote:
>> On 16/06/2019 10:58, Jiri Olsa wrote:
>>> On Fri, Jun 14, 2019 at 10:08:00PM +0800, John Garry wrote:
>>>> The jevent "Unit" field is used for uncore PMU alias definition.
>>>>
>>>> The form uncore_pmu_example_X is supported, where "X" is a wildcard,
>>>> to support multiple instances of the same PMU in a system.
>>>>
>>>> Unfortunately this format not suitable for all uncore PMUs; take the Hisi
>>>> DDRC uncore PMU for example, where the name is in the form
>>>> hisi_scclX_ddrcY.
>>>>
>>>> For the current jevent parsing, we would be required to hardcode an uncore
>>>> alias translation for each possible value of X. This is not scalable.
>>>>
>>>> Instead, add support for "Unit" field in the form "hisi_sccl,ddrc", where
>>>> we can match by hisi_scclX and ddrcY. Tokens in Unit field are
>>>> delimited by ','.
>>>>
>>>> Signed-off-by: John Garry <john.garry@huawei.com>
>>>> ---
>>>>  tools/perf/util/pmu.c | 39 ++++++++++++++++++++++++++++++++++-----
>>>>  1 file changed, 34 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
>>>> index 7e7299fee550..bc71c60589b5 100644
>>>> --- a/tools/perf/util/pmu.c
>>>> +++ b/tools/perf/util/pmu.c
>>>> @@ -700,6 +700,39 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu)
>>>>  	return map;
>>>>  }
>>>>
>>>> +static bool pmu_uncore_alias_match(const char *pmu_name, const char *name)
>>>> +{
>>>> +	char *tmp, *tok, *str;
>>>> +	bool res;
>>>> +
>>>> +	str = strdup(pmu_name);
>>>> +	if (!str)
>>>> +		return false;

Hi Jirka,

>>>> +
>>>> +	/*
>>>> +	 * uncore alias may be from different PMU with common
>>>> +	 * prefix or matching tokens.
>>>> +	 */
>>>> +	tok = strtok_r(str, ",", &tmp);

If str contains no delimiter, then it returns str in tok.

>>>> +	if (strncmp(pmu_name, tok, strlen(tok))) {

So this above check covers the case of str with and without a delimiter.

>>>
>>
>> Hi Jirka,
>
> heya,
> sry for late reply
>
>>
>>> if tok is NULL in here we crash
>>>
>>
>> As I see, tok could not be NULL. If str contains no delimiters, then we just
>> return same as str in tok.
>>
>> Can you see tok being NULL?
>
> well, if there's no ',' in the str it returns NULL, right?

No, it would return str in tok.

> and IIUC this function is still called for standard uncore
> pmu names
>
>>
>>>> +		res = false;
>>>> +		goto out;
>>>> +	}
>>>> +
>>>> +	for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",", &tmp)) {
>>>
>>> why is name shifted in here?
>>
>> I want to ensure that we match the tokens in order and also guard against
>> possible repeated token matches in 'name'.
>
> i might not understand this correctly.. so
>
> str is the alias name that can contain ',' now, like:
>   hisi_sccl,ddrc

For example of pmu_nmame=hisi_sccl,ddrc and pmu=hisi_sccl1_ddrc0, we 
match in this sequence:

loop 1. tok=hisi_sccl name=hisi_sccl1_ddrc0
loop 2. tok=ddrc name=ddrc0
loop 3. tok=NULL -> breakout and return true

A couple of notes:
a. loop 1. could be omitted, but the code becomes a bit more complicated
2. I don't have to advance name. But then we would match something like 
hisi_ddrc0_sccl1. Maybe this is ok.

>
> and name is still pmu with no ',' ...
 > please make this or
> proper version that in some comment
>

I didn't really get your meaning here. Please check my replies and see 
if you have further doubt or concern.

Much appreciated,
John

> thanks,
> jirka
>
> .
>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-21 10:42         ` John Garry
@ 2019-06-27 16:27           ` John Garry
  2019-06-27 16:33             ` Jiri Olsa
  2019-06-28 10:40             ` Jiri Olsa
  0 siblings, 2 replies; 18+ messages in thread
From: John Garry @ 2019-06-27 16:27 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On 21/06/2019 11:42, John Garry wrote:
> On 20/06/2019 19:25, Jiri Olsa wrote:
>> On Mon, Jun 17, 2019 at 10:06:08AM +0100, John Garry wrote:
>>> On 16/06/2019 10:58, Jiri Olsa wrote:
>>>> On Fri, Jun 14, 2019 at 10:08:00PM +0800, John Garry wrote:
>>>>> The jevent "Unit" field is used for uncore PMU alias definition.
>>>>>
>>>>> The form uncore_pmu_example_X is supported, where "X" is a wildcard,
>>>>> to support multiple instances of the same PMU in a system.
>>>>>
>>>>> Unfortunately this format not suitable for all uncore PMUs; take
>>>>> the Hisi
>>>>> DDRC uncore PMU for example, where the name is in the form
>>>>> hisi_scclX_ddrcY.
>>>>>
>>>>> For the current jevent parsing, we would be required to hardcode an
>>>>> uncore
>>>>> alias translation for each possible value of X. This is not scalable.
>>>>>
>>>>> Instead, add support for "Unit" field in the form "hisi_sccl,ddrc",
>>>>> where
>>>>> we can match by hisi_scclX and ddrcY. Tokens in Unit field are
>>>>> delimited by ','.
>>>>>
>>>>> Signed-off-by: John Garry <john.garry@huawei.com>
>>>>> ---
>>>>>  tools/perf/util/pmu.c | 39 ++++++++++++++++++++++++++++++++++-----
>>>>>  1 file changed, 34 insertions(+), 5 deletions(-)
>>>>>
>>>>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
>>>>> index 7e7299fee550..bc71c60589b5 100644
>>>>> --- a/tools/perf/util/pmu.c
>>>>> +++ b/tools/perf/util/pmu.c
>>>>> @@ -700,6 +700,39 @@ struct pmu_events_map
>>>>> *perf_pmu__find_map(struct perf_pmu *pmu)
>>>>>      return map;
>>>>>  }
>>>>>
>>>>> +static bool pmu_uncore_alias_match(const char *pmu_name, const
>>>>> char *name)
>>>>> +{
>>>>> +    char *tmp, *tok, *str;
>>>>> +    bool res;
>>>>> +
>>>>> +    str = strdup(pmu_name);
>>>>> +    if (!str)
>>>>> +        return false;
>
> Hi Jirka,
>
>>>>> +
>>>>> +    /*
>>>>> +     * uncore alias may be from different PMU with common
>>>>> +     * prefix or matching tokens.
>>>>> +     */
>>>>> +    tok = strtok_r(str, ",", &tmp);
>
> If str contains no delimiter, then it returns str in tok.
>
>>>>> +    if (strncmp(pmu_name, tok, strlen(tok))) {
>
> So this above check covers the case of str with and without a delimiter.
>
>>>>
>>>
>>> Hi Jirka,
>>
>> heya,
>> sry for late reply
>>
>>>
>>>> if tok is NULL in here we crash
>>>>
>>>
>>> As I see, tok could not be NULL. If str contains no delimiters, then
>>> we just
>>> return same as str in tok.
>>>
>>> Can you see tok being NULL?
>>
>> well, if there's no ',' in the str it returns NULL, right?
>
> No, it would return str in tok.
>
>> and IIUC this function is still called for standard uncore
>> pmu names
>>
>>>
>>>>> +        res = false;
>>>>> +        goto out;
>>>>> +    }
>>>>> +
>>>>> +    for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",",
>>>>> &tmp)) {
>>>>
>>>> why is name shifted in here?
>>>
>>> I want to ensure that we match the tokens in order and also guard
>>> against
>>> possible repeated token matches in 'name'.
>>
>> i might not understand this correctly.. so
>>
>> str is the alias name that can contain ',' now, like:
>>   hisi_sccl,ddrc
>
> For example of pmu_nmame=hisi_sccl,ddrc and pmu=hisi_sccl1_ddrc0, we
> match in this sequence:
>
> loop 1. tok=hisi_sccl name=hisi_sccl1_ddrc0
> loop 2. tok=ddrc name=ddrc0
> loop 3. tok=NULL -> breakout and return true
>
> A couple of notes:
> a. loop 1. could be omitted, but the code becomes a bit more complicated
> 2. I don't have to advance name. But then we would match something like
> hisi_ddrc0_sccl1. Maybe this is ok.
>
>>
>> and name is still pmu with no ',' ...
>> please make this or
>> proper version that in some comment
>>
>
> I didn't really get your meaning here. Please check my replies and see
> if you have further doubt or concern.
>

Hi Jirka,

I was just wondering if you have any further comments or questions here?

Much appreciated,
John


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-27 16:27           ` John Garry
@ 2019-06-27 16:33             ` Jiri Olsa
  2019-06-28 10:40             ` Jiri Olsa
  1 sibling, 0 replies; 18+ messages in thread
From: Jiri Olsa @ 2019-06-27 16:33 UTC (permalink / raw)
  To: John Garry
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On Thu, Jun 27, 2019 at 05:27:32PM +0100, John Garry wrote:

SNIP

> > loop 2. tok=ddrc name=ddrc0
> > loop 3. tok=NULL -> breakout and return true
> > 
> > A couple of notes:
> > a. loop 1. could be omitted, but the code becomes a bit more complicated
> > 2. I don't have to advance name. But then we would match something like
> > hisi_ddrc0_sccl1. Maybe this is ok.
> > 
> > > 
> > > and name is still pmu with no ',' ...
> > > please make this or
> > > proper version that in some comment
> > > 
> > 
> > I didn't really get your meaning here. Please check my replies and see
> > if you have further doubt or concern.
> > 
> 
> Hi Jirka,
> 
> I was just wondering if you have any further comments or questions here?
> 
> Much appreciated,

sorry, forgot about this one.. will check soon

jirka

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-27 16:27           ` John Garry
  2019-06-27 16:33             ` Jiri Olsa
@ 2019-06-28 10:40             ` Jiri Olsa
  2019-06-28 10:45               ` John Garry
  1 sibling, 1 reply; 18+ messages in thread
From: Jiri Olsa @ 2019-06-28 10:40 UTC (permalink / raw)
  To: John Garry
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On Thu, Jun 27, 2019 at 05:27:32PM +0100, John Garry wrote:

SNIP

> > > 
> > > heya,
> > > sry for late reply
> > > 
> > > > 
> > > > > if tok is NULL in here we crash
> > > > > 
> > > > 
> > > > As I see, tok could not be NULL. If str contains no delimiters, then
> > > > we just
> > > > return same as str in tok.
> > > > 
> > > > Can you see tok being NULL?
> > > 
> > > well, if there's no ',' in the str it returns NULL, right?
> > 
> > No, it would return str in tok.

ok

> > 
> > > and IIUC this function is still called for standard uncore
> > > pmu names
> > > 
> > > > 
> > > > > > +        res = false;
> > > > > > +        goto out;
> > > > > > +    }
> > > > > > +
> > > > > > +    for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",",
> > > > > > &tmp)) {
> > > > > 
> > > > > why is name shifted in here?
> > > > 
> > > > I want to ensure that we match the tokens in order and also guard
> > > > against
> > > > possible repeated token matches in 'name'.
> > > 
> > > i might not understand this correctly.. so
> > > 
> > > str is the alias name that can contain ',' now, like:
> > >   hisi_sccl,ddrc
> > 
> > For example of pmu_nmame=hisi_sccl,ddrc and pmu=hisi_sccl1_ddrc0, we
> > match in this sequence:
> > 
> > loop 1. tok=hisi_sccl name=hisi_sccl1_ddrc0
> > loop 2. tok=ddrc name=ddrc0
> > loop 3. tok=NULL -> breakout and return true

ok, plz put something like above into comment

thanks,
jirka

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing
  2019-06-28 10:40             ` Jiri Olsa
@ 2019-06-28 10:45               ` John Garry
  0 siblings, 0 replies; 18+ messages in thread
From: John Garry @ 2019-06-28 10:45 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: mark.rutland, brueckner, mathieu.poirier, peterz, tmricht,
	will.deacon, linux-kernel, acme, linuxarm, zhangshaokun,
	alexander.shishkin, mingo, namhyung, ben, linux-arm-kernel,
	kan.liang

On 28/06/2019 11:40, Jiri Olsa wrote:
> On Thu, Jun 27, 2019 at 05:27:32PM +0100, John Garry wrote:
>
> SNIP
>
>>>>
>>>> heya,
>>>> sry for late reply
>>>>
>>>>>
>>>>>> if tok is NULL in here we crash
>>>>>>
>>>>>
>>>>> As I see, tok could not be NULL. If str contains no delimiters, then
>>>>> we just
>>>>> return same as str in tok.
>>>>>
>>>>> Can you see tok being NULL?
>>>>
>>>> well, if there's no ',' in the str it returns NULL, right?
>>>
>>> No, it would return str in tok.
>
> ok
>
>>>
>>>> and IIUC this function is still called for standard uncore
>>>> pmu names
>>>>
>>>>>
>>>>>>> +        res = false;
>>>>>>> +        goto out;
>>>>>>> +    }
>>>>>>> +
>>>>>>> +    for (; tok; name += strlen(tok), tok = strtok_r(NULL, ",",
>>>>>>> &tmp)) {
>>>>>>
>>>>>> why is name shifted in here?
>>>>>
>>>>> I want to ensure that we match the tokens in order and also guard
>>>>> against
>>>>> possible repeated token matches in 'name'.
>>>>
>>>> i might not understand this correctly.. so
>>>>
>>>> str is the alias name that can contain ',' now, like:
>>>>   hisi_sccl,ddrc
>>>
>>> For example of pmu_nmame=hisi_sccl,ddrc and pmu=hisi_sccl1_ddrc0, we
>>> match in this sequence:
>>>
>>> loop 1. tok=hisi_sccl name=hisi_sccl1_ddrc0
>>> loop 2. tok=ddrc name=ddrc0
>>> loop 3. tok=NULL -> breakout and return true
>

Hi jirka,

> ok, plz put something like above into comment
>

ok, can do.

Thanks again,
John

> thanks,
> jirka
>
> .
>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2019-06-28 10:46 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-14 14:07 [PATCH v2 0/5] Perf uncore PMU event alias support for Hisi hip08 ARM64 platform John Garry
2019-06-14 14:07 ` [PATCH v2 1/5] perf pmu: Fix uncore PMU alias list for ARM64 John Garry
2019-06-14 14:46   ` Arnaldo Carvalho de Melo
2019-06-14 15:04     ` John Garry
2019-06-14 15:47       ` Arnaldo Carvalho de Melo
2019-06-14 14:08 ` [PATCH v2 2/5] perf pmu: Support more complex PMU event aliasing John Garry
2019-06-14 14:50   ` Arnaldo Carvalho de Melo
2019-06-16  9:58   ` Jiri Olsa
2019-06-17  9:06     ` John Garry
2019-06-20 18:25       ` Jiri Olsa
2019-06-21 10:42         ` John Garry
2019-06-27 16:27           ` John Garry
2019-06-27 16:33             ` Jiri Olsa
2019-06-28 10:40             ` Jiri Olsa
2019-06-28 10:45               ` John Garry
2019-06-14 14:08 ` [PATCH v2 3/5] perf jevents: Add support for Hisi hip08 DDRC PMU aliasing John Garry
2019-06-14 14:08 ` [PATCH v2 4/5] perf jevents: Add support for Hisi hip08 HHA " John Garry
2019-06-14 14:08 ` [PATCH v2 5/5] perf jevents: Add support for Hisi hip08 L3C " John Garry

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).