From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 887F8C43334 for ; Wed, 8 Jun 2022 02:03:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442164AbiFHB7q (ORCPT ); Tue, 7 Jun 2022 21:59:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1835824AbiFGX5C (ORCPT ); Tue, 7 Jun 2022 19:57:02 -0400 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72A5C7E1F1 for ; Tue, 7 Jun 2022 16:24:00 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id p123-20020a625b81000000b0051c31cc75dfso2165192pfb.5 for ; Tue, 07 Jun 2022 16:24:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=HzWsVgdFm2oYqm1OPj6CBRtZTI++je2WpE9vsT9Q4dE=; b=qfNZPl0DGpAwisczdNca9pITU2U9zMEzWm3BrXjbGd897plb5bXbxmk9W2/2Rvcw5k yv28W4H+7VJu/PtlIgHIZsV47WgaPwW1qtt3M3gOa9pyxg8/sVDWna3mdIEK8WrIjPLf Utgnt+Iy2tBPuYKAJ4WriOfIiJ27Ra12p+CcwljmCA0RcV6d/3WcWADFnwy21L3IOS05 c+ZNT425BSZ5rPfQZK7AvtaHBI3KS4HB8ZUBIp4vzhG8UEN8qU6qbdxnhFsQRriUP2J4 XLftzFfLaunpJp5g4sP5m4m1Cl6SAnJ4MCUNAXqNfkYYuGFR23mIZh1g4c0RrCBW4Qjf LF5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=HzWsVgdFm2oYqm1OPj6CBRtZTI++je2WpE9vsT9Q4dE=; b=IKWMJ5TEr8EXUnnDwAaA275khOar9/LM8LvSMjN8K7+S8cZPD/8NsL4Wc9ceybXLdM OXW+xEbiCRIH19khrFmtRuvEkXCg/eU/9UMzjdqYNaDwro3pskRVcd/JEQd1tmuSsYNp 4oeJg2T8fgVJ+W6Zh06YcZM021vWJgFKxUlCLfXMt3jXPCvPYUh0tHMVZCwTk8w4zWcy I6S/kzDDucDy5/BBSiyIey8dQ77UF9d+KUo5lqRKYFMQqMbwdNQMPOVnBETTwbS0w6v7 gFUyIvOYNug9gDaKn3D+Ufg2xVFMCl/prv9EHqTGeZgjMxD++gvvVTLmh286r+bv+cE9 EtKA== X-Gm-Message-State: AOAM533RbdM5CiSrCkmjKKE/ekkC3NxikNYj4qmifi3EPEJiKBLwGsV+ vLy3vhKJQ+loqP0ddxpZ1kj/2CCdok4= X-Google-Smtp-Source: ABdhPJwW+RRDZoQq7Au7i9xNoeOWMcVvfwUqmH7KW55H9yWzXC5KnkE0nQyEfRlvmk0fFjuflWIQaM47J68= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1688:b0:517:cf7b:9293 with SMTP id k8-20020a056a00168800b00517cf7b9293mr99735795pfc.7.1654644239818; Tue, 07 Jun 2022 16:23:59 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 7 Jun 2022 23:23:52 +0000 In-Reply-To: <20220607232353.3375324-1-seanjc@google.com> Message-Id: <20220607232353.3375324-3-seanjc@google.com> Mime-Version: 1.0 References: <20220607232353.3375324-1-seanjc@google.com> X-Mailer: git-send-email 2.36.1.255.ge46751e96f-goog Subject: [PATCH 2/3] KVM: VMX: Move MSR_IA32_FEAT_CTL.LOCKED check into "is valid" helper From: Sean Christopherson To: Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Move the check on IA32_FEATURE_CONTROL being locked, i.e. read-only from the guest, into the helper to check the overall validity of the incoming value. Opportunistically rename the helper to make it clear that it returns a bool. No functional change intended. Signed-off-by: Sean Christopherson --- arch/x86/kvm/vmx/vmx.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 8e83e12373c5..eb4cd66055f8 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -1755,8 +1755,8 @@ bool nested_vmx_allowed(struct kvm_vcpu *vcpu) FEAT_CTL_SGX_ENABLED | \ FEAT_CTL_LMCE_ENABLED) -static inline bool vmx_feature_control_msr_valid(struct vcpu_vmx *vmx, - struct msr_data *msr) +static inline bool is_vmx_feature_control_msr_valid(struct vcpu_vmx *vmx, + struct msr_data *msr) { uint64_t valid_bits; @@ -1767,6 +1767,10 @@ static inline bool vmx_feature_control_msr_valid(struct vcpu_vmx *vmx, WARN_ON_ONCE(vmx->msr_ia32_feature_control_valid_bits & ~KVM_SUPPORTED_FEATURE_CONTROL); + if (!msr->host_initiated && + (vmx->msr_ia32_feature_control & FEAT_CTL_LOCKED)) + return false; + if (msr->host_initiated) valid_bits = KVM_SUPPORTED_FEATURE_CONTROL; else @@ -2165,10 +2169,9 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) vcpu->arch.mcg_ext_ctl = data; break; case MSR_IA32_FEAT_CTL: - if (!vmx_feature_control_msr_valid(vmx, msr_info) || - (to_vmx(vcpu)->msr_ia32_feature_control & - FEAT_CTL_LOCKED && !msr_info->host_initiated)) + if (!is_vmx_feature_control_msr_valid(vmx, msr_info)) return 1; + vmx->msr_ia32_feature_control = data; if (msr_info->host_initiated && data == 0) vmx_leave_nested(vcpu); -- 2.36.1.255.ge46751e96f-goog