perf list: Remove s390 specific strcmp_cpuid_cmp function
PATCH v2 1/1 perf list: Remove s390 specific strcmp_cpuid_cmp function
Make the type field in pmu-events/arch/s390/mapfile.cvs more generic to match the created cpuid string for s390. The pattern also checks for the counter first version number and counter second version number ([13]\.[1-5]) and the authorization field which follows. These numbers do not exist in the cpuid identification string when perf commands are executed on a z/VM environment (which does not support CPU counter measurement facility). CPUID string for LPAR:
cpuid : IBM,3906,704,M03,3.5,002f
CPUID string for z/VM:
cpuid : IBM,2964,702,N96
This allows the removal of s390 specific cpuid compare code and uses the common compare function with its regular expression matching algorithm.
--- tools/perf/arch/s390/util/header.c | 18 ------------------ tools/perf/pmu-events/arch/s390/mapfile.csv | 10 +++++----- tools/perf/util/pmu.c | 2 +- 3 files changed, 6 insertions(+), 24 deletions(-)
tools/perf/arch/s390/util/header.c +0 -18
@@ -146,21 +146,3 @@ char *get_cpuid_str(struct perf_pmu *pmu __maybe_unused)zfree (&buf);return buf; } - -/* -* Compare the cpuid string returned by get_cpuid() function -* with the name generated by the jevents file read from -* pmu-events/arch/s390/mapfile.csv. -* -* Parameter mapcpuid is the cpuid as stored in the -* pmu-events/arch/s390/mapfile.csv. This is just the type number. -* Parameter cpuid is the cpuid returned by function get_cpuid(). -*/ -int strcmp_cpuid_str (const char *mapcpuid,const char *cpuid) -{ -char *cp =strchr (cpuid,',' ); - -if (cp ==NULL ) -return -1 ; -return strncmp (cp +1 , mapcpuid,strlen (mapcpuid)); -}
tools/perf/pmu-events/arch/s390/mapfile.csv +5 -5
@@ -1,6 +1,6 @@ Family-model,Version,Filename,EventType -209[78],1,cf_z10,core -281[78],1,cf_z196,core -282[78],1,cf_zec12,core -296[45],1,cf_z13,core -3906,3,cf_z14,core +^IBM.209[78].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_z10,core +^IBM.281[78].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_z196,core +^IBM.282[78].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_zec12,core +^IBM.296[45].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_z13,core +^IBM.390[67].*[13]\.[1-5].[[:xdigit:]]+$,3,cf_z14,core
tools/perf/util/pmu.c +1 -1
@@ -586,7 +586,7 @@ char * __weak get_cpuid_str(struct perf_pmu *pmu __maybe_unused)* cpuid string generated on this platform. * Otherwise return non-zero. */ -int __weak strcmp_cpuid_str (const char *mapcpuid,const char *cpuid) +int strcmp_cpuid_str (const char *mapcpuid,const char *cpuid) {regex_t re;regmatch_t pmatch[1 ];
Signature · 1 line
2.14.3
Em Mon, Apr 23, 2018 at 10:17:45AM +0200, Thomas Richter escreveu:
Quoted 9 lines
Make the type field in pmu-events/arch/s390/mapfile.cvs more generic to match the created cpuid string for s390. The pattern also checks for the counter first version number and counter second version number ([13]\.[1-5]) and the authorization field which follows. These numbers do not exist in the cpuid identification string when perf commands are executed on a z/VM environment (which does not support CPU counter measurement facility). CPUID string for LPAR:
Quoted 7 lines
cpuid : IBM,3906,704,M03,3.5,002f CPUID string for z/VM: cpuid : IBM,2964,702,N96This allows the removal of s390 specific cpuid compare code and uses the common compare function with its regular expression matching algorithm.
Thanks, applied.
- Arnaldo
tip-bot for Thomas Richter
merge botperf list: Remove s390 specific strcmp_cpuid_cmp function
Commit-ID: ce04abfbd3ea545a8eb38a8b6a48fb6e7d139dcb Gitweb: https://git.kernel.org/tip/ce04abfbd3ea545a8eb38a8b6a48fb6e7d139dcb Author: Thomas Richter <[email protected]> AuthorDate: Mon, 23 Apr 2018 10:17:45 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 23 Apr 2018 11:03:13 -0300
perf list: Remove s390 specific strcmp_cpuid_cmp function
Make the type field in pmu-events/arch/s390/mapfile.cvs more generic to match the created cpuid string for s390.
The pattern also checks for the counter first version number and counter second version number ([13]\.[1-5]) and the authorization field which follows.
These numbers do not exist in the cpuid identification string when perf commands are executed on a z/VM environment (which does not support CPU counter measurement facility).
CPUID string for LPAR:
cpuid : IBM,3906,704,M03,3.5,002f
CPUID string for z/VM:
cpuid : IBM,2964,702,N96
This allows the removal of s390 specific cpuid compare code and uses the common compare function with its regular expression matching algorithm.
--- tools/perf/arch/s390/util/header.c | 18 ------------------ tools/perf/pmu-events/arch/s390/mapfile.csv | 10 +++++----- tools/perf/util/pmu.c | 2 +- 3 files changed, 6 insertions(+), 24 deletions(-)
tools/perf/arch/s390/util/header.c +0 -18
@@ -146,21 +146,3 @@ char *get_cpuid_str(struct perf_pmu *pmu __maybe_unused)zfree (&buf);return buf; } - -/* -* Compare the cpuid string returned by get_cpuid() function -* with the name generated by the jevents file read from -* pmu-events/arch/s390/mapfile.csv. -* -* Parameter mapcpuid is the cpuid as stored in the -* pmu-events/arch/s390/mapfile.csv. This is just the type number. -* Parameter cpuid is the cpuid returned by function get_cpuid(). -*/ -int strcmp_cpuid_str (const char *mapcpuid,const char *cpuid) -{ -char *cp =strchr (cpuid,',' ); - -if (cp ==NULL ) -return -1 ; -return strncmp (cp +1 , mapcpuid,strlen (mapcpuid)); -}
tools/perf/pmu-events/arch/s390/mapfile.csv +5 -5
@@ -1,6 +1,6 @@ Family-model,Version,Filename,EventType -209[78],1,cf_z10,core -281[78],1,cf_z196,core -282[78],1,cf_zec12,core -296[45],1,cf_z13,core -3906,3,cf_z14,core +^IBM.209[78].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_z10,core +^IBM.281[78].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_z196,core +^IBM.282[78].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_zec12,core +^IBM.296[45].*[13]\.[1-5].[[:xdigit:]]+$,1,cf_z13,core +^IBM.390[67].*[13]\.[1-5].[[:xdigit:]]+$,3,cf_z14,core
tools/perf/util/pmu.c +1 -1
@@ -586,7 +586,7 @@ char * __weak get_cpuid_str(struct perf_pmu *pmu __maybe_unused)* cpuid string generated on this platform. * Otherwise return non-zero. */ -int __weak strcmp_cpuid_str (const char *mapcpuid,const char *cpuid) +int strcmp_cpuid_str (const char *mapcpuid,const char *cpuid) {regex_t re;regmatch_t pmatch[1 ];