rpms/kvm/F-9 kvm-sysenter32.patch,NONE,1.1 kvm.spec,1.60,1.61

Glauber Costa glommer at fedoraproject.org
Mon Oct 13 16:46:03 UTC 2008


Author: glommer

Update of /cvs/pkgs/rpms/kvm/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv29307

Modified Files:
	kvm.spec 
Added Files:
	kvm-sysenter32.patch 
Log Message:
fix #457694, with upstream patch



kvm-sysenter32.patch:

--- NEW FILE kvm-sysenter32.patch ---
commit 894db29e15565b0cdf982aa97cc3c372391f0c91
Author: Alexander Graf <agraf at suse.de>
Date:   Mon Jul 28 09:01:32 2008 +0200

    kvm: qemu: save 64-bit of the IA-32e capable sysenter MSRs
    
    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.
    
    Signed-off-by: Alexander Graf <agraf at suse.de>
    Signed-off-by: Avi Kivity <avi at qumranet.com>

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;
 


Index: kvm.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kvm/F-9/kvm.spec,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- kvm.spec	28 Aug 2008 15:50:21 -0000	1.60
+++ kvm.spec	13 Oct 2008 16:45:32 -0000	1.61
@@ -1,7 +1,7 @@
 Summary: Kernel-based Virtual Machine
 Name: kvm
 Version: 65
-Release: 9%{?dist}
+Release: 10%{?dist}
 License: GPLv2+ and LGPLv2+
 Group: Development/Tools
 URL: http://%{name}.sf.net
@@ -18,6 +18,7 @@
 Patch8: %{name}-extboot.patch
 Patch9: %{name}-acpi-do-not-wrap.patch
 Patch10: %{name}-acpi-do-not-ovflw.patch
+Patch11: %{name}-sysenter32.patch
 # patches from upstream qemu
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: SDL-devel
@@ -57,6 +58,7 @@
 %patch8 -p1
 %patch9 -p1
 %patch10 -p1
+%patch11 -p1
 
 %build
 # we need to install the data bits in a different path
@@ -111,6 +113,10 @@
 %{_sysconfdir}/sysconfig/modules/%{name}.modules
 
 %changelog
+* Mon Oct 13 2008 Glauber Costa <gcosta at redhat.com> - 65-10.fc9
+- Fix sysenter save in 64-bit hosts #457649
+
+%changelog
 * Thu Aug 28 2008 Glauber Costa <gcosta at redhat.com> - 65-9.fc9
 - there's already a 65-8 tag
 




More information about the fedora-extras-commits mailing list