public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: Avi Kivity <avi@redhat.com>
Cc: shashank rachamalla <shashank.rachamalla@gmail.com>, kvm@vger.kernel.org
Subject: Re: Questing regarding KVM Guest PMU
Date: Thu, 5 Apr 2012 15:37:39 +0300	[thread overview]
Message-ID: <20120405123739.GI11204@redhat.com> (raw)
In-Reply-To: <4F7D8FA6.3030402@redhat.com>

On Thu, Apr 05, 2012 at 03:27:18PM +0300, Avi Kivity wrote:
> On 04/04/2012 01:29 PM, Gleb Natapov wrote:
> > > >
> > > ok. seems to be. will move over to perf as its working fine inside guest.
> > > 
> > Good riddance IMO. I managed to run it on a guest (but not on my
> > host!). The thing is buggy. It does not use global ctrl MSR to enable
> > counters and kvm has all of them disabled by default. I didn't find what
> > value this MSR should have after reset, so this may be either kvm bug or
> > real BIOSes enable all counters in global ctrl MSR for PMUv1
> > compatibility. Doing "wrmsr 0x38f 0x70000000f" solves this problem. The
> > second problem is that oprofile reprogram PMU counters without
> > disabling them first and this is explicitly prohibited by Intel SDM.
> > The patch below solve that, but oprofile is the one who should be fixed.
> 
> Both should be fixed, there may be other profilers affected.
> 
Global ctrl msr issue I need to investigate further, but second one is
bug that should be fixed in oprofile. Intel spec clearly says:

 EN (Enable Counters) Flag (bit 22) — When set, performance counting
 is enabled in the corresponding performance-monitoring counter; when
 clear, the corresponding counter is disabled. The event logic unit
 for a UMASK must be disabled by setting IA32_PERFEVTSELx[bit 22] = 0,
 before writing to IA32_PMCx.

I suspect that on real HW they got wrong result too. It simply subtly
wrong, so it is not as noticeable as with kvm.

> >
> > diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c
> > index a73f0c1..be05028 100644
> > --- a/arch/x86/kvm/pmu.c
> > +++ b/arch/x86/kvm/pmu.c
> > @@ -396,6 +396,7 @@ int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, u32 index, u64 data)
> >  				(pmc = get_fixed_pmc(pmu, index))) {
> >  			data = (s64)(s32)data;
> >  			pmc->counter += data - read_pmc(pmc);
> > +			reprogram_gp_counter(pmc, pmc->eventsel);
> >  			return 0;
> >  		} else if ((pmc = get_gp_pmc(pmu, index, MSR_P6_EVNTSEL0))) {
> >  			if (data == pmc->eventsel)
> >
> 
> -- 
> error compiling committee.c: too many arguments to function

--
			Gleb.

  reply	other threads:[~2012-04-05 12:37 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-18 10:18 Questing regarding KVM Guest PMU shashank rachamalla
2012-03-18 10:30 ` Gleb Natapov
2012-03-18 12:57   ` shashank rachamalla
2012-03-18 14:50     ` Avi Kivity
2012-03-18 14:50     ` Gleb Natapov
2012-03-18 16:17       ` shashank rachamalla
2012-03-18 16:51         ` Gleb Natapov
2012-03-19  6:50           ` shashank rachamalla
2012-03-19  7:07             ` Gleb Natapov
2012-04-03 13:50               ` shashank rachamalla
2012-04-03 16:58                 ` Gleb Natapov
2012-04-03 18:43                   ` shashank rachamalla
2012-04-03 18:54                     ` shashank rachamalla
2012-04-04  7:04                       ` Gleb Natapov
2012-04-04 10:19                         ` shashank rachamalla
2012-04-04 10:29                           ` Gleb Natapov
2012-04-05  2:37                             ` shashank rachamalla
2012-04-05 12:27                             ` Avi Kivity
2012-04-05 12:37                               ` Gleb Natapov [this message]
2012-04-05 12:48                                 ` Avi Kivity
2012-04-05 13:26                                   ` Gleb Natapov
2012-04-05 13:28                                     ` Avi Kivity
2012-04-05 13:48                                       ` Gleb Natapov
2012-04-05 13:57                                         ` Gleb Natapov
2012-04-05 14:38                                           ` Avi Kivity
2012-04-05 14:41                                             ` Gleb Natapov
2012-04-06  5:13                                               ` shashank rachamalla
2012-04-06  6:50                                                 ` Gleb Natapov
2012-04-08 15:27                                                   ` Gleb Natapov
2012-04-09  9:26                                                     ` Gleb Natapov
2012-04-10  3:18                                                       ` shashank rachamalla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120405123739.GI11204@redhat.com \
    --to=gleb@redhat.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=shashank.rachamalla@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox