Add ARM hybrid detection

This patch rewrites the ARM core PMU detection logic
to handle the case of hybrid processors. On ARM, there
can be many different cores in the same SoC. Each
potentially shows up with a different implementer, part, variant.
That means just looking at the first entry in cpuinfo on Linux
is not enough to activate all supported event tables.

The new code parses the entire cpuinfo once and detects each
unique core identifiers. Then, for each core PMU table, the detection
code checks against that pre-built list of detected core models.
That way up to N (currently 8) different core models can be detected.

This new detection code is provided for Linux. For other operating
systems, new code must be added to get the implementer, part, variant
codes for all cores in the system.

Thanks to Vince Weaver for providing the test cases to exercise this
new code.

Signed-off-by: Stephane Eranian <eranian@gmail.com>
9 files changed