[PATCHv3 0/8] perf/x86: Rework msr probe interface

From: Jiri Olsa
Date: Sun Jun 16 2019 - 10:08:59 EST


hi,
following up on [1], [2] and [3], this patchset adds update
attribute groups to pmu, factors out the MSR probe code and
use it in msr,cstate* and rapl PMUs.

The functionality stays the same with one exception:
for msr PMU: the event is not exported if the rdmsr return zero
on event's msr, cstate* and rapl pmu functionality stays.

And also: ;-)
> Somewhere along the line you lost the explanation of _why_ we're doing
> this; namely: virt sucks.

Also available in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/msr

Tested on snb and skylake servers.

v3 changes:
- rebase on latest perf changes for Icelake models

v2 changes:
- checking zero rdmsr only for rapl PMU events,
cstate* and msr pmu functionality stays unchanged

thanks,
jirka


[1] https://lore.kernel.org/lkml/20190301114250.GA23459@krava/
[2] https://lore.kernel.org/lkml/20190318182116.17388-1-jolsa@xxxxxxxxxx/
[3] https://lore.kernel.org/lkml/20190512155518.21468-1-jolsa@xxxxxxxxxx/
---
Jiri Olsa (8):
perf/x86: Add msr probe interface
perf/x86/msr: Use new probe function
perf/x86/cstate: Use new probe function
perf/x86/rapl: Use new msr detection interface
perf/x86/rapl: Get rapl_cntr_mask from new probe framework
perf/x86/rapl: Get msr values from new probe framework
perf/x86/rapl: Get attributes from new probe framework
perf/x86/rapl: Get quirk state from new probe framework

arch/x86/events/Makefile | 2 +-
arch/x86/events/intel/cstate.c | 152 +++++++++++++++++++++++++++---------------------
arch/x86/events/intel/rapl.c | 380 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------
arch/x86/events/msr.c | 110 +++++++++++++++++++----------------
arch/x86/events/probe.c | 45 +++++++++++++++
arch/x86/events/probe.h | 29 ++++++++++
6 files changed, 392 insertions(+), 326 deletions(-)
create mode 100644 arch/x86/events/probe.c
create mode 100644 arch/x86/events/probe.h