Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce04abfb authored by Thomas Richter's avatar Thomas Richter Committed by Arnaldo Carvalho de Melo
Browse files

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.

Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
Reviewed-by: default avatarHendrik Brueckner <brueckner@linux.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Link: http://lkml.kernel.org/r/20180423081745.3672-1-tmricht@linux.ibm.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent ee05d217
Loading
Loading
Loading
Loading
+0 −18
Original line number Diff line number Diff line
@@ -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));
}
+5 −5
Original line number Diff line number Diff line
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
+1 −1
Original line number Diff line number Diff line
@@ -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];