From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 1/2] KVM: SVM: Fix NMI path when NMI happens in guest mode Date: Thu, 13 Jan 2011 17:42:01 +0200 Message-ID: <4D2F1D49.8070807@redhat.com> References: <1294932178-26866-1-git-send-email-joerg.roedel@amd.com> <1294932178-26866-2-git-send-email-joerg.roedel@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, stable@kernel.org To: Joerg Roedel Return-path: Received: from mx1.redhat.com ([209.132.183.28]:39275 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751194Ab1AMPoQ (ORCPT ); Thu, 13 Jan 2011 10:44:16 -0500 In-Reply-To: <1294932178-26866-2-git-send-email-joerg.roedel@amd.com> Sender: kvm-owner@vger.kernel.org List-ID: On 01/13/2011 05:22 PM, Joerg Roedel wrote: > The vmexit path on SVM needs to restore the KERNEL_GS_BASE > MSR in order to savely execute the NMI handler. Otherwise a > pending NMI can occur after the STGI instruction and crash > the machine. > This makes it impossible to run perf and kvm in parallel on > an AMD machine in a stable way. > > Cc: stable@kernel.org > Signed-off-by: Joerg Roedel > --- > arch/x86/kvm/svm.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c > index 25bd1bc..8b9bc72 100644 > --- a/arch/x86/kvm/svm.c > +++ b/arch/x86/kvm/svm.c > @@ -3637,6 +3637,7 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) > > #ifdef CONFIG_X86_64 > wrmsrl(MSR_GS_BASE, svm->host.gs_base); > + wrmsrl(MSR_KERNEL_GS_BASE, current->thread.gs); > #else > loadsegment(fs, svm->host.fs); > #endif Why would an NMI crash if MSR_KERNEL_GS_BASE is bad? I see save_paranoid depends on MSR_GS_BASE (specifically its sign, which is bad for the new instructions that allow userspace to write gsbase), but not on MSR_KERNEL_GS_BASE. -- error compiling committee.c: too many arguments to function