From: Andrea Arcangeli <aarcange@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] allow sysenter on 32bit guests running on vmx host
Date: Tue, 23 Jun 2009 18:21:40 +0200 [thread overview]
Message-ID: <20090623162140.GB4379@random.random> (raw)
From: Andrea Arcangeli <aarcange@redhat.com>
model=2 is not existent when vendor is intel and an errata of P6 says
that any model <= 2 when family is 6 lack sap feature, so windows and
linux 32bit guests disable sap in software and slowdown for no good
reason when running inside kvm on intel CPU.
Fix is to set model = 3 so it'll be the duron cpu when kvm runs on amd bare
metal (not anymore athlon but userland doesn't see the difference) and it'll be
PII that has sysenter functional like all cpus that run KVM have too when on
intel bare metal.
Patch will follow, workaround without this fix is -cpu qemu64,model=3.
There is a bug in skype that it checks if the sep feature is set to
run sysenter on intel chip inside its binary without passing through
ntdll, without verifying the model was <= 2 like windows does, so
windows forbids sysenter but skype calls it anyway and crashes (this
is why recent skype stopped working on KVM). This is skype bug and it
would trigger on real P6 hardware too (but nobody tests skype on
P6). qemu64,-sep fixed skype too. But because every time we have an
intel cpu running kvm, we also have sysenter functioning, we boots the
model to 3 so windows 32bit (and linux32bit) gets a performance boost
with sysenter too.
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
---
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 8a76abd..636e113 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -139,7 +139,8 @@ static x86_def_t x86_defs[] = {
.vendor2 = CPUID_VENDOR_AMD_2,
.vendor3 = CPUID_VENDOR_AMD_3,
.family = 6,
- .model = 2,
+ /* AMD Duron || PII Intel with sep capbility - P6 has no sep */
+ .model = 3,
.stepping = 3,
.features = PPRO_FEATURES |
/* these features are needed for Win64 and aren't fully implemented */
next reply other threads:[~2009-06-23 20:38 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-23 16:21 Andrea Arcangeli [this message]
2009-06-24 17:29 ` [Qemu-devel] allow sysenter on 32bit guests running on vmx host Jamie Lokier
2009-06-24 17:48 ` Filip Navara
2009-06-24 21:13 ` Andrea Arcangeli
2009-06-24 21:12 ` Andrea Arcangeli
2009-06-24 21:39 ` Jamie Lokier
2009-06-24 22:32 ` Andrea Arcangeli
2009-06-25 8:11 ` [Qemu-devel] KVMs default CPU type (was: allow sysenter on 32bit guests running on vmx host) Andre Przywara
2009-06-25 8:29 ` [Qemu-devel] KVMs default CPU type Avi Kivity
2009-06-26 0:42 ` [Qemu-devel] KVMs default CPU type (was: allow sysenter on 32bit guests running on vmx host) Andrea Arcangeli
2009-06-26 1:06 ` Andrea Arcangeli
2009-06-25 17:39 ` [Qemu-devel] allow sysenter on 32bit guests running on vmx host Paul Brook
2009-06-25 21:02 ` Andrea Arcangeli
2009-06-25 22:12 ` Paul Brook
2009-06-25 23:27 ` Andrea Arcangeli
2009-06-25 23:49 ` Paul Brook
2009-06-26 0:06 ` Andrea Arcangeli
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=20090623162140.GB4379@random.random \
--to=aarcange@redhat.com \
--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).