From patchwork Wed Aug 10 20:02:04 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Natty,SRU] KVM: fix kvmclock regression due to missing clock update Date: Wed, 10 Aug 2011 10:02:04 -0000 From: Stefan Bader X-Patchwork-Id: 109436 Message-Id: <1313006524-20742-1-git-send-email-stefan.bader@canonical.com> To: kernel-team@lists.ubuntu.com SRU Justification: Impact: An upstream change in the kvm code in 2.6.37 causes regressions running 32bit guest under 11.04 (Natty) KVM. Fix: Cherry-picking a single upstream patch (which went into 2.6.39) fixes the issue. Testcase: Booting 32bit rhel and centos 5.(5|6) guests under Natty used to hang, but has been verified to succeed with a test kernel including the upstream patch. Note: Submission to upstream stable is not considered as there are no longterm kernels between 2.6.37 and 2.6.39 which are supported. -Stefan >From 626a3425d512ad12effebf90ba6aa0c4c4052118 Mon Sep 17 00:00:00 2001 From: Nikola Ciprich Date: Wed, 9 Mar 2011 23:36:51 +0100 Subject: [PATCH] KVM: fix kvmclock regression due to missing clock update commit 387b9f97750444728962b236987fbe8ee8cc4f8c moved kvm_request_guest_time_update(vcpu), breaking 32bit SMP guests using kvm-clock. Fix this by moving (new) clock update function to proper place. Signed-off-by: Nikola Ciprich Acked-by: Zachary Amsden Signed-off-by: Avi Kivity BugLink: http://bugs.launchpad.net/bugs/795717 (cherry-picked from commit 1aa8ceef0312a6aae7dd863a120a55f1637b361d upstream) Signed-off-by: Stefan Bader Acked-by: Tim Gardner Acked-by: Andy Whitcroft --- arch/x86/kvm/x86.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 980317a..0556e05 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2100,8 +2100,8 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) if (check_tsc_unstable()) { kvm_x86_ops->adjust_tsc_offset(vcpu, -tsc_delta); vcpu->arch.tsc_catchup = 1; - kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu); } + kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu); if (vcpu->cpu != cpu) kvm_migrate_timers(vcpu); vcpu->cpu = cpu;