Received: by 10.223.176.5 with SMTP id f5csp73351wra; Mon, 5 Feb 2018 16:59:01 -0800 (PST) X-Google-Smtp-Source: AH8x225caQ+zFovJJxF02uq4LcC/HyHmNP0216uxQd2xqd/wXspYSAfLA76nIZllZoUD6Xw8V4Ty X-Received: by 2002:a17:902:424:: with SMTP id 33-v6mr613689ple.57.1517878741541; Mon, 05 Feb 2018 16:59:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517878741; cv=none; d=google.com; s=arc-20160816; b=y0XNGWMJdhC64jlHMENS32ug6T0UhUbxLlyM5J9ToHQCk5hY0DFZjO9wwHBLK4QW7I +cvOMh1cgk8CbgunHU2FRoFB/c+rAg0cNEfN4lc7wMhCGVVqoa2BWbMvCFhKsqfzZqv5 GrvQr2KHObdKlPkUebIKip/F/MAjXbvVdpDZLLMQBnDYT6pufYnF8j/JyGFXp/rO3yzp jsScwiqhawzqGrzFUXz+Ez5L1dTGvlbEWE1Gfj37UokMdriBgUFESQRUuDO3Qrgfm3ZP 2UCdrupRjIrkvNZYBNs/E9Qzg88AhPZC5g7eNhuHnTgpfpZZuB8kOftiJRDxmwWTaJyg bc9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:arc-authentication-results; bh=g+5CeZ2e6T0x6RQvuaoXJilZMWWDbqdZqVGn7Y8Rm34=; b=x1vQFOa7X6O0lXAmUXBwp5wzPPGEJojWz7XVU74zDJlqOSqists7x8xMV0ri8KossV rsTcIDnq438Nn++aHnR6AuD+5lBPGtpR9xZsYERC0M0eSdZWvYGcTrfmyVZNqAUbPMO3 LqgkvAoC0bUZP/yHp28j+WGLe2U0ILgcSoVSPw0WUi87W2hV8wgmIV7/iWELAD/+wE9U uc4z5+UDLZXNmjcITigz6d3ryzoKhiCIYBvwRLL5NBInlLCiYZiVsFruWxgRkM7n1Tw9 3kGGWTB+0BWBEqfwGomKf0WY67yAIjZQj2zzq1/OuT82k4LFrAhzSt5X/tDm4Ta9AZ4d 0y7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hRQIMBKr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z8-v6si566703plo.762.2018.02.05.16.58.46; Mon, 05 Feb 2018 16:59:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hRQIMBKr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752465AbeBFA5z (ORCPT + 99 others); Mon, 5 Feb 2018 19:57:55 -0500 Received: from mail-oi0-f67.google.com ([209.85.218.67]:44373 "EHLO mail-oi0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752089AbeBFA5j (ORCPT ); Mon, 5 Feb 2018 19:57:39 -0500 Received: by mail-oi0-f67.google.com with SMTP id b3so153648oib.11; Mon, 05 Feb 2018 16:57:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=g+5CeZ2e6T0x6RQvuaoXJilZMWWDbqdZqVGn7Y8Rm34=; b=hRQIMBKrXmcQCl0FyU3oSUEDa6STwifySXBcehe8Qn3naxrzrJaKJOQ9hSHuqtsvdt 3D7rn//hDx6p6UpVqois9cHRyPpk99N/AlHXZv7X4zpu9YD3KNWC0hFRrwtU3Dw+BRYJ rCvxHdOWdGqiHUSkofOuPYFKL4H0JA++riis6Dcp9DbLAI7Gwzf0Cu/IxSsUfJbPA1KB cKPRkFGqkjzu0ejHXLmoXWim4mhz3lepZbMo0XsT2HT43Pte0A7R4DJbUdl8kA4TJ+ac xVp9uvcOOc1p3WEpBKAfrsQ03j4cmGL7R+bZhiloGrh08GfJtAj/kC4pQG8ysSJvnUSk TIfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=g+5CeZ2e6T0x6RQvuaoXJilZMWWDbqdZqVGn7Y8Rm34=; b=aTKNBmZ/eSWAeQQxuZflSGLwdGAdwaHFTAex8gfG6/JO6bf5rOFLgA/a/pkBh5sL+k Ripv9W0ZrLUCBYdnu8QM+RXY1++705p4B49zFegY1Ype/pq8HX8YiSoz+XQb1HsH94Dx N6+z4d09jvikw0/6zlzDhTLZs3wIwLHHd/S9wSywz/5bydTftqdoJooMu60sQeBSjDxh kifhcHhgeSeN75BRIbWeygYBN35uETnxgdHHdIvwicYRyItWwBas2M8KaccVAqXM+Pvn Da9WUwaZjkf1THzGDCBq67PLQLGzUMZgpZ32aKn38gUhI1ej+7wJ37/uoX/EZBNW8fsE M1NA== X-Gm-Message-State: APf1xPCFj0bUJ6M/1T5Rx6bDGdcUU29kFRirSxQCbdR78/gEa9I+zkXP oql80hPDAHzocvfTdOX0lpJ3qTQaOe6z30TBvbc= X-Received: by 10.202.193.137 with SMTP id r131mr385933oif.232.1517878658434; Mon, 05 Feb 2018 16:57:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.10.129 with HTTP; Mon, 5 Feb 2018 16:57:37 -0800 (PST) In-Reply-To: References: <1517828686-29070-1-git-send-email-wanpengli@tencent.com> From: Wanpeng Li Date: Tue, 6 Feb 2018 08:57:37 +0800 Message-ID: Subject: Re: [PATCH] KVM: nVMX: Fix CR4 after VMLAUNCH/VMRESUME failure To: Jim Mattson Cc: kvm list , LKML , Radim Krcmar , Paolo Bonzini Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2018-02-06 2:24 GMT+08:00 Jim Mattson : > [Resending as plain text] > > On Mon, Feb 5, 2018 at 10:21 AM Jim Mattson wrote: > >> This is incorrect. In the event of an early VM-entry failure (e.g. a >> VM-entry failure for "VM entry with invalid control field(s)"), no host >> state should be loaded from the VMCS12. Of course, no guest state should >> have been loaded from the VMCS12 either, but that's a problem we have wi= th >> deferring some VMCS12 control field checks to the hardware. > >> CR4 should be unchanged from the time of the VMLAUNCH/VMRESUME. There is This is effective one, what I restore in this patch is achitectural/guest visible. Regards, Wanpeng Li >> no guarantee that vmcs12->host_cr4 holds the correct value. > > >> On Mon, Feb 5, 2018 at 3:05 AM Wanpeng Li wrote: > >>> From: Wanpeng Li > >>> In L0, Haswell client host: > >>> nested_vmx_exit_reflected failed vm entry 7 >>> WARNING: CPU: 6 PID: 6797 at kvm/arch/x86/kvm//vmx.c:6206 >>> handle_desc+0x2d/0x40 [kvm_intel] >>> CPU: 6 PID: 6797 Comm: qemu-system-x86 Tainted: G W OE >>> 4.15.0+ #4 >>> RIP: 0010:handle_desc+0x2d/0x40 [kvm_intel] >>> Call Trace: >>> vmx_handle_exit+0xbd/0xe20 [kvm_intel] >>> ? kvm_arch_vcpu_ioctl_run+0xcde/0x1c00 [kvm] >>> kvm_arch_vcpu_ioctl_run+0xd5a/0x1c00 [kvm] >>> kvm_vcpu_ioctl+0x3e9/0x720 [kvm] >>> ? kvm_vcpu_ioctl+0x3e9/0x720 [kvm] >>> ? __fget+0xfc/0x210 >>> ? __fget+0xfc/0x210 >>> do_vfs_ioctl+0xa4/0x6a0 >>> ? __fget+0x11d/0x210 >>> SyS_ioctl+0x79/0x90 >>> entry_SYSCALL_64_fastpath+0x25/0x9c > >>> This can be reproduced by running kvm-unit-tests/run_tests.sh >>> vmx_controls in >>> L1. UMIP CPUID bit is exposed to the L1 UMIP aware guest since it is >>> emulated >>> by enabling descriptor-table exits on L0. There is a vmentry fail when >>> L0 tries to run L2 directly, the L1 guest architectural CR4 is not >>> restored >>> after this failure since commit 4f350c6dbcb (kvm: nVMX: Handle deferred >>> early >>> VMLAUNCH/VMRESUME failure properly). The L2 is kvm-unit-tests which wil= l >>> not >>> write CR4 w/ X86_CR4_UMIP bit. After another L1 access descriptor vmexi= t, >>> we >>> check L2's architectural CR4 instead of L1's architectural CR4. This >>> patch >>> fixes it by restoring L1's architectural CR4 after L0's VMLAUNCH/VMRESU= ME >>> failure. > >>> Cc: Paolo Bonzini >>> Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 >>> Signed-off-by: Wanpeng Li >>> --- >>> arch/x86/kvm/vmx.c | 1 + >>> 1 file changed, 1 insertion(+) > >>> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c >>> index 23789c9..9fc0492 100644 >>> --- a/arch/x86/kvm/vmx.c >>> +++ b/arch/x86/kvm/vmx.c >>> @@ -11633,6 +11633,7 @@ static void nested_vmx_vmexit(struct kvm_vcpu >>> *vcpu, u32 exit_reason, >>> */ >>> nested_vmx_failValid(vcpu, VMXERR_ENTRY_INVALID_CONTROL_FIELD)= ; > >>> + vcpu->arch.cr4 =3D vmcs12->host_cr4; >>> load_vmcs12_mmu_host_state(vcpu, vmcs12); > >>> /* >>> -- >>> 2.7.4