Re: [PATCH 06/34] perf, kvm: Support the intx/intx_cp modifiers inKVM arch perfmon emulation v2

From: Gleb Natapov
Date: Tue Oct 23 2012 - 08:53:07 EST


On Tue, Oct 23, 2012 at 02:36:05PM +0200, Peter Zijlstra wrote:
> On Thu, 2012-10-18 at 16:19 -0700, Andi Kleen wrote:
> > From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> >
> > This is not arch perfmon, but older CPUs will just ignore it. This makes
> > it possible to do at least some TSX measurements from a KVM guest
>
> Please, always CC people who wrote the code as well, in this case that's
> Gleb.
>
Yes, I missed the v2. Thanks Peter.

> > Cc: avi@xxxxxxxxxx
> > v2: Various fixes to address review feedback
> > Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> > ---
> > arch/x86/kvm/pmu.c | 15 +++++++++++----
> > 1 files changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c
> > index cfc258a..81c1632 100644
> > --- a/arch/x86/kvm/pmu.c
> > +++ b/arch/x86/kvm/pmu.c
>
> > @@ -173,6 +173,11 @@ static void reprogram_counter(struct kvm_pmc *pmc, u32 type,
> > .exclude_kernel = exclude_kernel,
> > .config = config,
> > };
> > + /* Will be ignored on CPUs that don't support this. */
> > + if (intx)
> > + attr.config |= HSW_INTX;
> > + if (intx_cp)
> > + attr.config |= HSW_INTX_CHECKPOINTED;
> >
> > attr.sample_period = (-pmc->counter) & pmc_bitmask(pmc);
> >
>
> So I forgot how all this worked, but will the KVM emulation not pass
> this straight down to the hardware?
KVM PMU emulation does not talk to HW directly. It creates perf_event to
emulate PMU counter. As far as I see those two will be dropped by
hsw_hw_config() if host HW does not support them.


>
> Don't we have a problem where we're emulating arch perfmon v1 on AMD
> hardware? On AMD hardware those bits do have meaning.
PMU emulation does not support AMD yet.

--
Gleb.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/