2017-10-17 00:34:56

by Ganapatrao Kulkarni

[permalink] [raw]
Subject: [PATCH v9 0/5] Add support for ThunderX2 pmu events using json files

Extending json/jevent framework for parsing arm64 event files.
Adding jevents for ThunderX2 implementation defined PMU events.

v9:
- Rebased to [3] and resolved conficts in PATCH 1/5 and reworked PATCH 3/5.
- Added PATCH 5 to fix segmentation fault in perf_pmu__find_map

[3] https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git/log/?h=perf/core

v8:
- Rename thunderx2 directory to cavium

v7:
- Addressed some more comments from Will Deacon.

v6 : Addressed comments [1] [2]

[1] https://patchwork.kernel.org/patch/9903099/
[2] https://patchwork.kernel.org/patch/9853899/

v5:
- Addressed comments from Arnaldo.
- Rebased to 4.13-rc5

v4:
- Rebased to 4.13-rc1

v3:
- Addressed comments from Will Deacon and Jayachandran C.
- Rebased to 4.12-rc1

v2:
- Updated as per Mark Rutland's suggestions.
- Added provision for get_cpuid_str to get cpu id string
from associated cpus of pmu core device.

v1: Initial patchset.


Ganapatrao Kulkarni (5):
perf utils: passing pmu as a parameter to function get_cpuid_str
perf tools arm64: Add support for get_cpuid_str function.
perf utils: use pmu->is_uncore to detect PMU CORE/UNCORE devices
perf vendor events arm64: Add ThunderX2 implementation defined pmu
core events
perf utils: add check for valid cpuid in function perf_pmu__find_map

tools/perf/arch/arm64/util/Build | 1 +
tools/perf/arch/arm64/util/header.c | 65 ++++++++++++++++++++++
tools/perf/arch/powerpc/util/header.c | 2 +-
tools/perf/arch/x86/util/header.c | 2 +-
.../arch/arm64/cavium/thunderx2-imp-def.json | 62 +++++++++++++++++++++
tools/perf/pmu-events/arch/arm64/mapfile.csv | 15 +++++
tools/perf/util/header.h | 3 +-
tools/perf/util/metricgroup.c | 4 +-
tools/perf/util/pmu.c | 39 ++++++++-----
tools/perf/util/pmu.h | 2 +-
10 files changed, 174 insertions(+), 21 deletions(-)
create mode 100644 tools/perf/arch/arm64/util/header.c
create mode 100644 tools/perf/pmu-events/arch/arm64/cavium/thunderx2-imp-def.json
create mode 100644 tools/perf/pmu-events/arch/arm64/mapfile.csv

--
2.9.4


From 1624567492584634144@xxx Mon Feb 04 19:24:52 +0000 2019
X-GM-THRID: 1585904185306072742
X-Gmail-Labels: Inbox,Category Forums,Downloaded_2019-02


2017-10-17 00:35:39

by Ganapatrao Kulkarni

[permalink] [raw]
Subject: [PATCH v9 3/5] perf utils: use pmu->is_uncore to detect PMU UNCORE devices

PMU CORE devices are identified using sysfs filename cpu, however
on some platforms(like arm/arm64), PMU CORE sysfs name is not cpu.
Hence cpu cannot be used to differentiate PMU CORE/UNCORE devices.

commit:
66ec1191 ("perf pmu: Unbreak perf record for arm/arm64 with events with explicit PMU")

has introduced pmu->is_uncore, which is set to PMU UNCORE devices only.
Adding changes to use pmu->is_uncore to identify UNCORE devices.

Acked-by: Will Deacon <[email protected]>
Tested-by: Shaokun Zhang <[email protected]>
Signed-off-by: Ganapatrao Kulkarni <[email protected]>
---
tools/perf/util/pmu.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 8b17db5..9110718 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -603,7 +603,6 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
*/
i = 0;
while (1) {
- const char *pname;

pe = &map->table[i++];
if (!pe->name) {
@@ -612,9 +611,13 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu)
break;
}

- pname = pe->pmu ? pe->pmu : "cpu";
- if (strncmp(pname, name, strlen(pname)))
- continue;
+ if (pmu->is_uncore) {
+ /* check for uncore devices */
+ if (pe->pmu == NULL)
+ continue;
+ if (strncmp(pe->pmu, name, strlen(pe->pmu)))
+ continue;
+ }

/* need type casts to override 'const' */
__perf_pmu__new_alias(head, NULL, (char *)pe->name,
--
2.9.4


From 1587377630901823067@xxx Thu Dec 21 07:27:57 +0000 2017
X-GM-THRID: 1585844813410483000
X-Gmail-Labels: Inbox,Category Forums