Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp973535iog; Wed, 29 Jun 2022 14:18:35 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tKDR6A56TAxZRSiH3cvR7DnPV4cab8/NnyMZqqF2Zq9ZcLHK8lb0WMbuNPG2509pCjyloH X-Received: by 2002:a17:906:5a62:b0:728:f6d4:7786 with SMTP id my34-20020a1709065a6200b00728f6d47786mr5278985ejc.184.1656537515377; Wed, 29 Jun 2022 14:18:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656537515; cv=none; d=google.com; s=arc-20160816; b=NSvkgD7jX7npHLqqWOxsNZ+KwkS8e1p2oFzMqqBXy2Kot2Sf3E/8i0T4WzViz0cl9/ uChT4o8QWS+7xj0WR0EFvZURiC4meoiB/jtph1MDtvVMo6Bq4m3NH8HNsr2HG64gFfNu +K2Ho8PZTbwyah/zOBR3Qb9g0VSxsWSW2nHyR4fCWNmuo9hVqYjEw7jpNk6SeUMBCWMo EKnrIqeUrE3CzWlkUUYWuB2+ZT21OHGhjRsuiiVcwClruUEYiPGAJ5fLYZVr8kvsWAGm PT3GaHQKnx2JMlGNvj5i2nYIYNeqYV88cATRFeNEOF/RMfx7Pswc1v6X8D7TjYNqzwba aoiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=KimsAoqWoBrckvrcWpjK4MOnhaDZP2RBKEz3EuP/iv0=; b=jJrMd9j4E3KXZsV2EgsR+E3I6ETsMzCCD6sWK3v70Xrd7nPzVYd8QrtbZBeH56ioKi FCDfPmtArcVJ8Fqb4OZMHY6Ijh3vWBdSukRViNC2DImxdcp2juBF7kc4gzZkuStiKbTk fag6U6q5dsvNgwcBzocTEz0psx8Iighk4sBVFcrS1XOFWTfkeCMI5JSSHp6Qh008FRH8 60wP05XTRX3ns1PGHOWNELYMJPxP9C+sZgEDDMoK+3zpR5vIOTsk9XdbF1hDPr4xSS8+ RxAxfiwK/AJHh9i521FFV/W4++X4FHQ1d1Dgz4L+DR9F/NUe8XzFYVNinqjqIQ5pD4kd tH2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="QHei7/5W"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gw3-20020a170906f14300b0071203baa0desi22004098ejb.260.2022.06.29.14.18.10; Wed, 29 Jun 2022 14:18:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="QHei7/5W"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S230022AbiF2U2i (ORCPT + 99 others); Wed, 29 Jun 2022 16:28:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229635AbiF2U2f (ORCPT ); Wed, 29 Jun 2022 16:28:35 -0400 Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 675AC14D38 for ; Wed, 29 Jun 2022 13:28:34 -0700 (PDT) Received: by mail-oi1-x229.google.com with SMTP id i126so2737538oih.4 for ; Wed, 29 Jun 2022 13:28:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KimsAoqWoBrckvrcWpjK4MOnhaDZP2RBKEz3EuP/iv0=; b=QHei7/5WL4hfbeuAzCg4LaoNAqlQ2HGQMzjAP0kBgkQJ5H5joM7A64WoPajiwd+Nx+ s8o6ZDbyUw3coAAFdaWkwagdkTSSy1V8gYj4lxaqO5xIl/hMMi+/fHzAC9NonvcY3W1f 2gqs9vB5JhKGTIuVKeWbwQZm+OsR+mz+BNOj2QNi1zChQxJmCUPTSe8nuZ2yQMuVFm1o +0/vMxfMP4wnXc8B7vxMS7GzZ9xZyhUZGsX9znUXgHwJ2xuNicMKx/yljOJGxVFX2rl3 0r6zYQ2nC6gKwjNIGKM2m2qvFc3EVDsP6dvht4lpI0Z1w9EcKX74Huo1hSapRM2+8xFX 7sWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KimsAoqWoBrckvrcWpjK4MOnhaDZP2RBKEz3EuP/iv0=; b=1jYPsLbJgCHOXPErSq0qzGd2sz5CaHVj4u3Gk82JFad2QIPgOkxdfar2ONDWAU1soG s13ZVRiMYyPElt6LCPiUpoWbTl+ev2Zptncf+1H+3Yd378I6wzFyYVBshEU0eznndBKt rd3A2GhS0dB80dCz2ImwsFAgrRNgVfjdwRjCUi0cDLnNLTk8jfp14Sc6BD2IA2H/2N59 Yr1CD3ez2FG8Twn/eSnqpYeIPD04vtQz2b/69W34Ic5jZlriCAgM9ofIQUep0ciHDKMe +w4fQiM8jpsqsCpO7IdnxWtyT4OSSCy3AHaijUMTZ2RIvEfsNSr8SRW6VnD+RsoSlJM8 3/dA== X-Gm-Message-State: AJIora90lvdxXXRr8KOAAHY1KSl3RQ42UBigMiGY3aDnhNrtGIX2HZiQ 4nomyBhSzqfyQzWzQH4tmd4e2UU6dGJ1RTv9A/V4YA== X-Received: by 2002:a05:6808:2124:b0:335:7483:f62d with SMTP id r36-20020a056808212400b003357483f62dmr4297123oiw.112.1656534513612; Wed, 29 Jun 2022 13:28:33 -0700 (PDT) MIME-Version: 1.0 References: <20220629150625.238286-1-vkuznets@redhat.com> <20220629150625.238286-15-vkuznets@redhat.com> In-Reply-To: <20220629150625.238286-15-vkuznets@redhat.com> From: Jim Mattson Date: Wed, 29 Jun 2022 13:28:22 -0700 Message-ID: Subject: Re: [PATCH v2 14/28] KVM: VMX: Check VM_ENTRY_IA32E_MODE in setup_vmcs_config() To: Vitaly Kuznetsov Cc: kvm@vger.kernel.org, Paolo Bonzini , Sean Christopherson , Anirudh Rayabharam , Wanpeng Li , Maxim Levitsky , linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jun 29, 2022 at 8:07 AM Vitaly Kuznetsov wrote: > > VM_ENTRY_IA32E_MODE control is toggled dynamically by vmx_set_efer() > and setup_vmcs_config() doesn't check its existence. On the contrary, > nested_vmx_setup_ctls_msrs() doesn set it on x86_64. Add the missing > check and filter the bit out in vmx_vmentry_ctrl(). > > No (real) functional change intended as all existing CPUs supporting > long mode and VMX are supposed to have it. > > Signed-off-by: Vitaly Kuznetsov > --- > arch/x86/kvm/vmx/vmx.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 83feb70d44a9..da8bbba38d0e 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -2610,6 +2610,9 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf, > _pin_based_exec_control &= ~PIN_BASED_POSTED_INTR; > > min = VM_ENTRY_LOAD_DEBUG_CONTROLS; > +#ifdef CONFIG_X86_64 > + min |= VM_ENTRY_IA32E_MODE; > +#endif > opt = VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL | > VM_ENTRY_LOAD_IA32_PAT | > VM_ENTRY_LOAD_IA32_EFER | > @@ -4242,9 +4245,15 @@ static u32 vmx_vmentry_ctrl(void) > if (vmx_pt_mode_is_system()) > vmentry_ctrl &= ~(VM_ENTRY_PT_CONCEAL_PIP | > VM_ENTRY_LOAD_IA32_RTIT_CTL); > - /* Loading of EFER and PERF_GLOBAL_CTRL are toggled dynamically */ > - return vmentry_ctrl & > - ~(VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL | VM_ENTRY_LOAD_IA32_EFER); > + /* > + * Loading of EFER, VM_ENTRY_IA32E_MODE, and PERF_GLOBAL_CTRL > + * are toggled dynamically. > + */ Nit: Previously, this could be read as "loading of (EFER and PERF_GLOBAL_CTRL)." Since "loading" doesn't apply to IA32e mode, you've lost "loading" of PERF_GLOBAL_CONTROL. Also, why drop the VM_ENTRY prefix from the MSRs and not from IA32e mode? Perhaps: /* * IA32e mode, and loading of EFER and PERF_GLOBAL_CTRL are toggled dynamically. */ > + vmentry_ctrl &= ~(VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL | > + VM_ENTRY_LOAD_IA32_EFER | > + VM_ENTRY_IA32E_MODE); > + > + return vmentry_ctrl; > } > > static u32 vmx_vmexit_ctrl(void) > -- > 2.35.3 > Reviewed-by: Jim Mattson