lkml.org 
[lkml]   [2009]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: patch kvm-svm-fix-tsc-offset-adjustment-when-running-nested.patch added to 2.6.31-stable tree
Date
Hi

On Saturday 10 October 2009, gregkh@suse.de wrote:
> This is a note to let you know that we have just queued up the patch titled
>
> Subject: KVM: SVM: Fix tsc offset adjustment when running nested
>
> to the 2.6.31-stable tree. Its filename is
>
> kvm-svm-fix-tsc-offset-adjustment-when-running-nested.patch

This patch breaks compilation of 2.6.31.4-rc1 and 2.6.31.4-rc2, as it
seems to depend on several prior optimisations to kvm's/ svm's nested
behaviour:

[...]
CC [M] arch/x86/kvm/svm.o
arch/x86/kvm/svm.c: In function 'svm_vcpu_load':
arch/x86/kvm/svm.c:713: error: 'struct vcpu_svm' has no member named 'nested'
make[2]: *** [arch/x86/kvm/svm.o] Error 1
make[1]: *** [arch/x86/kvm] Error 2
make: *** [arch/x86] Error 2

Regards
Stefan Lippers-Hollmann

--
> A git repo of this tree can be found at
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>
>
> From 77b1ab1732feb5e3dcbaf31d2f7547c5229f5f3a Mon Sep 17 00:00:00 2001
> From: Joerg Roedel <joerg.roedel@amd.com>
> Date: Wed, 16 Sep 2009 15:24:17 +0200
> Subject: KVM: SVM: Fix tsc offset adjustment when running nested
>
> From: Joerg Roedel <joerg.roedel@amd.com>
>
> commit 77b1ab1732feb5e3dcbaf31d2f7547c5229f5f3a upstream.
>
> When svm_vcpu_load is called while the vcpu is running in
> guest mode the tsc adjustment made there is lost on the next
> emulated #vmexit. This causes the tsc running backwards in
> the guest. This patch fixes the issue by also adjusting the
> tsc_offset in the emulated hsave area so that it will not
> get lost.
>
> 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 | 2 ++
> 1 file changed, 2 insertions(+)
>
> --- a/arch/x86/kvm/svm.c
> +++ b/arch/x86/kvm/svm.c
> @@ -709,6 +709,8 @@ static void svm_vcpu_load(struct kvm_vcp
> rdtscll(tsc_this);
> delta = vcpu->arch.host_tsc - tsc_this;
> svm->vmcb->control.tsc_offset += delta;
> + if (is_nested(svm))
> + svm->nested.hsave->control.tsc_offset += delta;
> vcpu->cpu = cpu;
> kvm_migrate_timers(vcpu);
> svm->asid_generation = 0;


\
 
 \ /
  Last update: 2009-10-10 15:49    [W:0.100 / U:2.168 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site