Subject: Re: [PATCH 3/4] perf: Use pmu_events_map table to create event aliases

From: Sukadev Bhattiprolu <[email-masked]>
Date: Wed, 20 May 2015 17:19:35 -0700

Andi Kleen [[email-masked]] wrote:
| > +/*
| > + * Return TRUE if the CPU identified by @vfm, @version, and @type
| > + * matches the current CPU.  vfm refers to [Vendor, Family, Model],
| > + *
| > + * Return FALSE otherwise.
| > + *
| > + * For Powerpc, we only compare @version to the processor PVR.
| > + */
| > +bool arch_pmu_events_match_cpu(const char *vfm __maybe_unused,
| > +				const char *version,
| > +				const char *type __maybe_unused)
| > +{
| > +	char *cpustr;
| > +	bool rc;
| > +
| > +	cpustr = get_cpu_str();
| > +	rc = !strcmp(version, cpustr);
| 
| 
| Surely against vfm not version
| I think your mapfile is wrong if that works?

Like I say in the comment, and elsewhere, each archictecture
could use a subset of [vfm, version, type] to match the CPU.

On Power, we use the PVR, which is a string like "004d0100",
to uniquely identify the CPU.

Obviously, that does not fit into the VFM field. We could either
add a new PVR field to the mapfile:

	[vfm, version, type, pvr]

or, as the patch currently does, let architectures intepret the
"version" field as they see fit?

IOW, leave it to architectures to keep arch_pmu_events_match_cpu()
consistent with _their_ mapfile?

| 
| That's the Intel format:
| 
| .vfm = "GenuineIntel-6-3E",
|         .version = "V16",
|         .type = "core",
|         .table = pme_IvyTown_core
| 
| 
| -Andi