]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
fix up some .31 kvm patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 12 Oct 2009 19:39:30 +0000 (12:39 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 12 Oct 2009 19:39:30 +0000 (12:39 -0700)
review-2.6.31/kvm-svm-fix-tsc-offset-adjustment-when-running-nested.patch
review-2.6.31/kvm-svm-handle-tsc-in-svm_get_msr-svm_set_msr-correctly.patch [new file with mode: 0644]
review-2.6.31/series

index 9de6bbc7e1f9cb27b68cb67e3b09cf6943c2d793..39174b4fce28e18870016ed22d23f8175998c475 100644 (file)
@@ -1,7 +1,12 @@
-From 77b1ab1732feb5e3dcbaf31d2f7547c5229f5f3a Mon Sep 17 00:00:00 2001
+From joerg.roedel@amd.com  Mon Oct 12 12:11:35 2009
 From: Joerg Roedel <joerg.roedel@amd.com>
-Date: Wed, 16 Sep 2009 15:24:17 +0200
+Date: Mon, 12 Oct 2009 11:41:51 +0200
 Subject: KVM: SVM: Fix tsc offset adjustment when running nested
+To: Stefan Lippers-Hollmann <s.L-H@gmx.de>
+Cc: stable@kernel.org, gregkh@suse.de, linux-kernel@vger.kernel.org, mtosatti@redhat.com
+Message-ID: <20091012094151.GA32228@amd.com>
+Content-Disposition: inline
+
 
 From: Joerg Roedel <joerg.roedel@amd.com>
 
@@ -29,7 +34,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
                delta = vcpu->arch.host_tsc - tsc_this;
                svm->vmcb->control.tsc_offset += delta;
 +              if (is_nested(svm))
-+                      svm->nested.hsave->control.tsc_offset += delta;
++                      svm->hsave->control.tsc_offset += delta;
                vcpu->cpu = cpu;
                kvm_migrate_timers(vcpu);
                svm->asid_generation = 0;
diff --git a/review-2.6.31/kvm-svm-handle-tsc-in-svm_get_msr-svm_set_msr-correctly.patch b/review-2.6.31/kvm-svm-handle-tsc-in-svm_get_msr-svm_set_msr-correctly.patch
new file mode 100644 (file)
index 0000000..218b715
--- /dev/null
@@ -0,0 +1,67 @@
+From joerg.roedel@amd.com  Mon Oct 12 12:15:03 2009
+From: Joerg Roedel <joerg.roedel@amd.com>
+Date: Mon, 12 Oct 2009 11:42:44 +0200
+Subject: KVM: SVM: Handle tsc in svm_get_msr/svm_set_msr correctly
+To: Greg KH <greg@kroah.com>
+Cc: Marcelo Tosatti <mtosatti@redhat.com>, stable@kernel.org
+Message-ID: <20091012094244.GB32228@amd.com>
+Content-Disposition: inline
+
+
+From: Joerg Roedel <joerg.roedel@amd.com>
+
+commit 20824f30bb0b8ae0a4099895fd4509f54cf2e1e2 upstream.
+
+When running nested we need to touch the l1 guests
+tsc_offset. Otherwise changes will be lost or a wrong value
+be read.
+
+Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
+Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kvm/svm.c |   23 +++++++++++++++++------
+ 1 file changed, 17 insertions(+), 6 deletions(-)
+
+--- a/arch/x86/kvm/svm.c
++++ b/arch/x86/kvm/svm.c
+@@ -1956,10 +1956,14 @@ static int svm_get_msr(struct kvm_vcpu *
+       switch (ecx) {
+       case MSR_IA32_TIME_STAMP_COUNTER: {
+-              u64 tsc;
++              u64 tsc_offset;
+-              rdtscll(tsc);
+-              *data = svm->vmcb->control.tsc_offset + tsc;
++              if (is_nested(svm))
++                      tsc_offset = svm->hsave->control.tsc_offset;
++              else
++                      tsc_offset = svm->vmcb->control.tsc_offset;
++
++              *data = tsc_offset + native_read_tsc();
+               break;
+       }
+       case MSR_K6_STAR:
+@@ -2046,10 +2050,17 @@ static int svm_set_msr(struct kvm_vcpu *
+       switch (ecx) {
+       case MSR_IA32_TIME_STAMP_COUNTER: {
+-              u64 tsc;
++              u64 tsc_offset = data - native_read_tsc();
++              u64 g_tsc_offset = 0;
++
++              if (is_nested(svm)) {
++                      g_tsc_offset = svm->vmcb->control.tsc_offset -
++                                     svm->hsave->control.tsc_offset;
++                      svm->hsave->control.tsc_offset = tsc_offset;
++              }
++
++              svm->vmcb->control.tsc_offset = tsc_offset + g_tsc_offset;
+-              rdtscll(tsc);
+-              svm->vmcb->control.tsc_offset = data - tsc;
+               break;
+       }
+       case MSR_K6_STAR:
index 73b2d8ab53049071d91a8c6c9ae8b4954925c886..50de06d4436ee5303fc8cebe23ec395733646029 100644 (file)
@@ -17,6 +17,7 @@ kvm-prevent-overflow-in-kvm_get_supported_cpuid.patch
 kvm-vmx-flush-tlb-with-invept-on-cpu-migration.patch
 kvm-fix-lapic-timer-period-overflow.patch
 kvm-svm-fix-tsc-offset-adjustment-when-running-nested.patch
+kvm-svm-handle-tsc-in-svm_get_msr-svm_set_msr-correctly.patch
 net-fix-wrong-sizeof.patch
 mm-add_to_swap_cache-must-not-sleep.patch
 sis5513-fix-pio-setup-for-atapi-devices.patch