Received: by 10.223.176.5 with SMTP id f5csp2852224wra; Mon, 5 Feb 2018 10:58:46 -0800 (PST) X-Google-Smtp-Source: AH8x224JEiADyPKDU7yAXdZs8J0Ny3T8NwT8OWpmjGh3MyARyf8Z3iceGFJ5w8AXDM8Ugre7ftAF X-Received: by 10.99.9.1 with SMTP id 1mr32441689pgj.257.1517857125868; Mon, 05 Feb 2018 10:58:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517857125; cv=none; d=google.com; s=arc-20160816; b=zDxBQRcjUhzVBP/5ARMq0qmbKqzWM7E01DHx+FRGYa73Q2XJHdVwgd22z+Hw765Pnl myYM+phB044TcKSeGe7QArJ9/0m5XTR/n2GMXoiL8GTPuPVCkTdXJMT8T6J1MUVNT35O nnpY67nR+vzazNpL64HX56+q3xwZsLd103PzIQXpBlIBqsrmKaDh6cZ5BsK5Jlsm02pW kuOmRIebJiKv/tVPGQKDDpl79umL1/A7GgakihEKeN36IFMbPylEtstDnkrkgEdMMKAd fAbQiwxlRA4LcYS7PxvnVox4fdWv5SmZeg9LvKtDOaWNeZD2jI+/n9VMg30wxVdczeh6 8sXg== 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:mime-version:dkim-signature :arc-authentication-results; bh=XU3zQiaxOo5oQoy4cQaGnMS5Kv8bYfVZAn8QNjChDhk=; b=pW6QoVHMfXkuQMQ1yXgX7tH0n8hcWVO6JkeKS057OSUdNMhMur4s7gID5uxfLY+CUU sYHKuFmaXsJgceJ+yf4SoGi5ai/7HMp7QcZQqMwWeT/gKV8cpzkfYLIT1X7zemKJVXdi 0+AYeQyz3hBiqKVaTY6EE3M3G+G2XEWYJc5Yd7z2aZkxqM4SaKCyr1/qrJPP6iP0rTJC tGKhftSxPhdPjEqtWFVSGnNdASndeaEpXKL2EXD/VqyLjoDmq4GNiYqDATBG+el2kGcM poY4HLjX8KnFNjLntIzGRAlFA1NsZ+cWOJ0H1vIyP9J7ilP0GjRu6T/0N4RogVkHm/qC QuIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ICtQY6pc; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o12-v6si7342155plk.60.2018.02.05.10.58.31; Mon, 05 Feb 2018 10:58:45 -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=@google.com header.s=20161025 header.b=ICtQY6pc; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753809AbeBES5K (ORCPT + 99 others); Mon, 5 Feb 2018 13:57:10 -0500 Received: from mail-io0-f193.google.com ([209.85.223.193]:46874 "EHLO mail-io0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753380AbeBESZE (ORCPT ); Mon, 5 Feb 2018 13:25:04 -0500 Received: by mail-io0-f193.google.com with SMTP id f34so31237555ioi.13 for ; Mon, 05 Feb 2018 10:25:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:from:date:message-id:subject:to:cc :content-transfer-encoding; bh=XU3zQiaxOo5oQoy4cQaGnMS5Kv8bYfVZAn8QNjChDhk=; b=ICtQY6pcA/uvJ9KGdNYulQL6rP/u58c94k13Gf/61+AK7FR1H6AjC0NTebdKx7CycJ keJJpOhZv2n5F2IzH2lzCMbXQbNJ1npYLbE6jWWo052SkAE1H2sRQSm7CLBR01hNQ8sD 6XisKWQzsN63JaiVJ1PTYtboRjOYQdy61TQeO1W1Hf4GLNviSdCVIaEUbro2IIu8/Skr s+QLHiL6h3js3TEZks2hmSW7y+UbzKXQ4O1+gdcRdiLjQKwe+0s3vlCaBsbu9XKKjf/5 aSSD2+0ST4RignkaLTaz/DzmYwl5HagWU04hHXkghNeOImDkLzXUIz4pWBGYtLIEMxfl jeiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=XU3zQiaxOo5oQoy4cQaGnMS5Kv8bYfVZAn8QNjChDhk=; b=jNkgPFK9xvKeZdYi12Wsrt4Uz1KWlFoPhe6TqDDeMqo1jslOw7Xg3o2DifkvTnMF+9 vWdAmWBWmiP5JO+4HQX7DM7036dzgKxKOeVAz7MjqV+ziIz7xPNgmKYF6Vgh2WL19V/u fl2i+9/Ud3tEGpVyz1Fos2YRGBQs2J2MHV+wydQIgq+B/ZVTTyaOJkN8og/hOEo7k4JY DGXXBoZsID8x+FOFLpgwGjOoHigP6uGwuUYOCM8U4fakcUOnj3FFYSItFmJ2qFu2vqid 0xbuIjulAVohhaz6z/U8XQnHa0rMaGG3HSzJDoXzOMu3714B+yOlmjJVLbhZeHJLG51H Z+VQ== X-Gm-Message-State: AKwxytc7GD2C4c4+WKmCuQEZ99rdB1rZI/mAoa/pKs8dH9Wtfk1eaPFE gzDhg20wOf7UQFvrMBcd049ODh2QKUO7PeE/Vqy7jQ== X-Received: by 10.107.53.150 with SMTP id k22mr40304384ioo.285.1517855102863; Mon, 05 Feb 2018 10:25:02 -0800 (PST) MIME-Version: 1.0 References: <1517828686-29070-1-git-send-email-wanpengli@tencent.com> From: Jim Mattson Date: Mon, 05 Feb 2018 18:24:52 +0000 Message-ID: Subject: Re: [PATCH] KVM: nVMX: Fix CR4 after VMLAUNCH/VMRESUME failure To: kvm list Cc: LKML 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 [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 wit= h > deferring some VMCS12 control field checks to the hardware. > CR4 should be unchanged from the time of the VMLAUNCH/VMRESUME. There is > 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 will >> not >> write CR4 w/ X86_CR4_UMIP bit. After another L1 access descriptor vmexit= , >> 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/VMRESUM= E >> 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