All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Lalancette <clalance@redhat.com>
To: Avi Kivity <avi@qumranet.com>
Cc: kvm-devel <kvm-devel@lists.sourceforge.net>
Subject: Re: [PATCH]: Fix MSR_K7_EVNTSEL{0,3} for SVM
Date: Fri, 25 Apr 2008 14:43:19 -0400	[thread overview]
Message-ID: <48122647.4080404@redhat.com> (raw)
In-Reply-To: <4811887E.6040202@qumranet.com>

Avi Kivity wrote:
> 
> Hmm, looking back at the dump:
> 
>>     1811:	8d 86 00 00 ff 3f    	lea    0x3fff0000(%rsi),%eax
>>     1817:	83 f8 03             	cmp    $0x3,%eax
>>     181a:	0f 87 e2 01 00 00    	ja     1a02 <svm_set_msr+0x27f>
> 
> So while gcc is using %rsi, it loads the result back into %eax, which 
> has the effect of dropping back into 32-bits.  So looks like gcc was 
> right here.  Sorry for spreading confusion and apologies to gcc.
> 

Avi,
     Arg.  I was completely, utterly wrong about the problem here (although
there is definitely still a problem).  I'm sorry for making a confusing mess out
of this.  Here is what is actually happening:

During startup, the RHEL-4 x86_64 kernel (2.6.9-67.EL, if you care) setups up
the NMI watchdog.  It does the following:

	for(i = 0; i < 4; ++i) {
		/* Simulator may not support it */
		if (checking_wrmsrl(MSR_K7_EVNTSEL0+i, 0UL))
			return;
		wrmsrl(MSR_K7_PERFCTR0+i, 0UL);
	}

checking_wrmsrl() just does a "test write" to the msr; because of the code that
is currently in there, this succeeds.  However, when it tries to do the
MSR_K7_PERFCTR0 wrmsr, *that* is where it fails, since we don't currently handle
that MSR, and KVM injects a GPF into the guest (which kills it).  My previous
patch just happened to fix this because it was making checking_wrmsrl() fail on
the EVNTSEL0, so we just returned out of this loop rather than trying to write
to the PERFCTR0.

Unfortunately, we can't just "fake emulate" MSR_K7_PERFCTR[0-3] like we are
doing for MSR_K7_EVNTSEL[0-3]; if they are there, linux expects to be able to
put values into them.  I think the correct solution here is to emulate
MSR_K7_PERFCTR[0-3] and MSR_K7_EVNTSEL[0-3] for real.  I'm working on a patch to
do this now.

Chris Lalancette

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

  parent reply	other threads:[~2008-04-25 18:43 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-23 18:23 [PATCH]: Fix MSR_K7_EVNTSEL{0,3} for SVM Chris Lalancette
2008-04-24  7:35 ` Avi Kivity
     [not found]   ` <4810926E.3070900@redhat.com>
2008-04-24 15:20     ` Avi Kivity
2008-04-24 15:44       ` Chris Lalancette
2008-04-24 22:13       ` Chris Lalancette
2008-04-25  7:30         ` Avi Kivity
2008-04-25 13:06           ` Chris Lalancette
2008-04-25 18:43           ` Chris Lalancette [this message]
2008-04-28 12:46             ` Joerg Roedel
2008-04-28 14:17               ` Chris Lalancette
2008-04-28 15:57                 ` Joerg Roedel
2008-04-28 16:38                   ` Chris Lalancette
2008-04-28 16:41                 ` Andi Kleen

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=48122647.4080404@redhat.com \
    --to=clalance@redhat.com \
    --cc=avi@qumranet.com \
    --cc=kvm-devel@lists.sourceforge.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.