On Tue, May 21, 2019 at 02:40:48PM -0700, kan.liang@xxxxxxxxxxxxxxx wrote:
From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
Metrics counters (hardware counters containing multiple metrics)
are modeled as separate registers for each TopDown metric events,
with an extra reg being used for coordinating access to the
underlying register in the scheduler.
This patch adds the basic infrastructure to separate the scheduler
register indexes from the actual hardware register indexes. In
most cases the MSR address is already used correctly, but for
code using indexes we need a separate reg_idx field in the event
to indicate the correct underlying register.
That doesn't parse. What exactly is the difference between reg_idx and
idx? AFAICT there is a fixed relation like:
reg_idx = is_metric_idx(idx) ? INTEL_PMC_IDX_FIXED_SLOTS : idx;
Do we really need a variable for that?
Also, why do we need that whole enabled_events[] array. Do we really not
have that information elsewhere?
I shouldn've have to reverse engineer patches :/