qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] Save 64-bit of the IA-32e capable sysenter MSRs
Date: Mon, 28 Jul 2008 09:01:32 +0200	[thread overview]
Message-ID: <488D6ECC.2050602@suse.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 908 bytes --]

Hi,

When transitioning from KVM to the qemu userspace, we try to get and 
push a whole bunch of MSR values, including the SYSENTER ones. While 
this is basically a good idea, qemu doesn't know anything about SYSENTER 
on x86_64, which is an additional feature only available on Intel CPUs 
and thus defines SYSENTER_EIP and SYSENTER_ESP as 32-bit values.

Because we're saving/restoring the SYSENTER values on transitions to 
userspace and the values in env->cpu only hold 32 bits, they get 
truncated to 32-bit. The easiest way around this is to widen the fields 
to 64 bits. This should not disturb the current functionality, but 
allows us to run 32-bit code on x86_64 using VMX.

As this is KVM specific for now, I'll only CC the qemu mailinglist, but 
wouldn't encourage qemu to take the patch for now, as it's not necessary 
when emulating an AMD CPU.

Signed-off-by: Alexander Graf <agraf@suse.de>



[-- Attachment #2: sysenter.patch --]
[-- Type: text/x-patch, Size: 411 bytes --]

diff --git a/qemu/target-i386/cpu.h b/qemu/target-i386/cpu.h
index 7e95900..61c39d4 100644
--- a/qemu/target-i386/cpu.h
+++ b/qemu/target-i386/cpu.h
@@ -542,8 +542,8 @@ typedef struct CPUX86State {
 
     /* sysenter registers */
     uint32_t sysenter_cs;
-    uint32_t sysenter_esp;
-    uint32_t sysenter_eip;
+    uint64_t sysenter_esp;
+    uint64_t sysenter_eip;
     uint64_t efer;
     uint64_t star;
 

             reply	other threads:[~2008-07-28  7:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-28  7:01 Alexander Graf [this message]
2008-07-31 10:07 ` [Qemu-devel] Re: [PATCH] Save 64-bit of the IA-32e capable sysenter MSRs Avi Kivity
2008-08-01 13:57   ` Alexander Graf
2008-08-10  8:54     ` Avi Kivity

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=488D6ECC.2050602@suse.de \
    --to=agraf@suse.de \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    /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;
as well as URLs for NNTP newsgroup(s).