From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerhard Wiesinger Subject: Re: [PATCH] Fixed KVM problems with old DOS programs. Compatibility can be forced by module parameter. Date: Wed, 4 Nov 2015 22:33:44 +0100 Message-ID: <563A79B8.3020900@wiesinger.com> References: <563A5D7D.4080201@wiesinger.com> <563A7827.8030506@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit To: Paolo Bonzini , kvm@vger.kernel.org Return-path: Received: from vps01.wiesinger.com ([46.36.37.179]:36332 "EHLO vps01.wiesinger.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030333AbbKDVdv (ORCPT ); Wed, 4 Nov 2015 16:33:51 -0500 In-Reply-To: <563A7827.8030506@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 04.11.2015 22:27, Paolo Bonzini wrote: > > On 04/11/2015 20:33, Gerhard Wiesinger wrote: >> Signed-off-by: Gerhard Wiesinger >> --- >> arch/x86/kvm/svm.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c >> index 2f9ed1f..e0b00fc 100644 >> --- a/arch/x86/kvm/svm.c >> +++ b/arch/x86/kvm/svm.c >> @@ -198,6 +198,10 @@ static bool npt_enabled; >> static int npt = true; >> module_param(npt, int, S_IRUGO); >> +/* allow backward compatibility with e.g. old DOS application */ >> +static int npt_task_switch_emulation = true; >> +module_param(npt_task_switch_emulation, int, S_IRUGO); >> + >> /* allow nested virtualization in KVM/SVM */ >> static int nested = true; >> module_param(nested, int, S_IRUGO); >> @@ -1177,6 +1181,9 @@ static void init_vmcb(struct vcpu_svm *svm, bool >> init_event) >> if (npt_enabled) { >> /* Setup VMCB for Nested Paging */ >> control->nested_ctl = 1; >> + if (!npt_task_switch_emulation) { >> + clr_intercept(svm, INTERCEPT_TASK_SWITCH); >> + } >> clr_intercept(svm, INTERCEPT_INVLPG); >> clr_exception_intercept(svm, PF_VECTOR); >> clr_cr_intercept(svm, INTERCEPT_CR3_READ); > What is the problem you are seeing? KVM can emulate task switches; the > intercept is set here because of a processor erratum that can mess them > up even though, in theory, AMD supports task switching from guest mode. See old thread: https://lists.nongnu.org/archive/html/qemu-devel/2012-04/msg01506.html Ciao, Gerhard