From: Sean Christopherson <seanjc@google.com>
To: Zeng Guang <guang.zeng@intel.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
kvm@vger.kernel.org, Dave Hansen <dave.hansen@linux.intel.com>,
Tony Luck <tony.luck@intel.com>,
Kan Liang <kan.liang@linux.intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Kim Phillips <kim.phillips@amd.com>,
Jarkko Sakkinen <jarkko@kernel.org>,
Jethro Beekman <jethro@fortanix.com>,
Kai Huang <kai.huang@intel.com>,
x86@kernel.org, linux-kernel@vger.kernel.org,
Robert Hu <robert.hu@intel.com>, Gao Chao <chao.gao@intel.com>,
Robert Hoo <robert.hu@linux.intel.com>
Subject: Re: [PATCH 3/6] KVM: VMX: Detect Tertiary VM-Execution control when setup VMCS config
Date: Thu, 29 Jul 2021 00:03:55 +0000 [thread overview]
Message-ID: <YQHwa42jixqPPvVm@google.com> (raw)
In-Reply-To: <20210716064808.14757-4-guang.zeng@intel.com>
On Fri, Jul 16, 2021, Zeng Guang wrote:
> @@ -4204,6 +4234,13 @@ vmx_adjust_secondary_exec_control(struct vcpu_vmx *vmx, u32 *exec_control,
> #define vmx_adjust_sec_exec_exiting(vmx, exec_control, lname, uname) \
> vmx_adjust_sec_exec_control(vmx, exec_control, lname, uname, uname##_EXITING, true)
>
> +static void vmx_compute_tertiary_exec_control(struct vcpu_vmx *vmx)
> +{
> + u32 exec_control = vmcs_config.cpu_based_3rd_exec_ctrl;
This is incorrectly truncating the value.
> +
> + vmx->tertiary_exec_control = exec_control;
> +}
> +
> static void vmx_compute_secondary_exec_control(struct vcpu_vmx *vmx)
> {
> struct kvm_vcpu *vcpu = &vmx->vcpu;
> @@ -4319,6 +4356,11 @@ static void init_vmcs(struct vcpu_vmx *vmx)
> secondary_exec_controls_set(vmx, vmx->secondary_exec_control);
> }
>
> + if (cpu_has_tertiary_exec_ctrls()) {
> + vmx_compute_tertiary_exec_control(vmx);
> + tertiary_exec_controls_set(vmx, vmx->tertiary_exec_control);
IMO, the existing vmx->secondary_exec_control is an abomination that should not
exist. Looking at the code, it's actually not hard to get rid, there's just one
annoying use in prepare_vmcs02_early() that requires a bit of extra work to get
rid of.
Anyways, for tertiary controls, I'd prefer to avoid the same mess and instead
follow vmx_exec_control(), both in functionality and in name:
static u64 vmx_tertiary_exec_control(struct vcpu_vmx *vmx)
{
return vmcs_config.cpu_based_3rd_exec_ctrl;
}
and:
if (cpu_has_tertiary_exec_ctrls())
tertiary_exec_controls_set(vmx, vmx_tertiary_exec_control(vmx));
and then the next patch becomes:
static u64 vmx_tertiary_exec_control(struct vcpu_vmx *vmx)
{
u64 exec_control = vmcs_config.cpu_based_3rd_exec_ctrl;
if (!kvm_vcpu_apicv_active(vcpu))
exec_control &= ~TERTIARY_EXEC_IPI_VIRT;
return exec_control;
}
And I'll work on a patch to purge vmx->secondary_exec_control.
> + }
> +
> if (kvm_vcpu_apicv_active(&vmx->vcpu)) {
> vmcs_write64(EOI_EXIT_BITMAP0, 0);
> vmcs_write64(EOI_EXIT_BITMAP1, 0);
> diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h
> index 945c6639ce24..c356ceebe84c 100644
> --- a/arch/x86/kvm/vmx/vmx.h
> +++ b/arch/x86/kvm/vmx/vmx.h
> @@ -266,6 +266,7 @@ struct vcpu_vmx {
> u32 msr_ia32_umwait_control;
>
> u32 secondary_exec_control;
> + u64 tertiary_exec_control;
>
> /*
> * loaded_vmcs points to the VMCS currently used in this vcpu. For a
> --
> 2.25.1
>
next prev parent reply other threads:[~2021-07-29 0:04 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-16 6:48 [PATCH 0/5] IPI virtualization support for VM Zeng Guang
2021-07-16 6:48 ` [PATCH 1/6] x86/feat_ctl: Add new VMX feature, Tertiary VM-Execution control Zeng Guang
2021-07-28 23:44 ` Sean Christopherson
2021-07-29 15:56 ` Paolo Bonzini
2021-08-02 8:22 ` Zeng Guang
2021-08-02 16:20 ` Sean Christopherson
2021-07-16 6:48 ` [PATCH 2/6] KVM: VMX: Extend BUILD_CONTROLS_SHADOW macro to support 64-bit variation Zeng Guang
2021-07-16 6:48 ` [PATCH 3/6] KVM: VMX: Detect Tertiary VM-Execution control when setup VMCS config Zeng Guang
2021-07-29 0:03 ` Sean Christopherson [this message]
2021-08-02 6:59 ` Zeng Guang
2021-07-16 6:48 ` [PATCH 4/6] KVM: VMX: dump_vmcs() reports tertiary_exec_control field as well Zeng Guang
2021-07-16 6:48 ` [PATCH 5/6] KVM: x86: Support interrupt dispatch in x2APIC mode with APIC-write VM exit Zeng Guang
2021-07-16 6:48 ` [PATCH 6/6] KVM: VMX: enable IPI virtualization Zeng Guang
2021-07-16 9:52 ` Paolo Bonzini
2021-07-17 3:55 ` Zeng Guang
2021-07-18 20:32 ` Paolo Bonzini
2021-07-19 12:38 ` Zeng Guang
2021-07-19 13:58 ` Paolo Bonzini
2021-07-20 1:07 ` Zeng Guang
2021-07-19 13:16 ` Zeng Guang
2021-07-16 9:25 ` [PATCH 0/5] IPI virtualization support for VM Wanpeng Li
2021-07-17 1:46 ` Zeng Guang
2021-07-19 7:26 ` Zeng Guang
2021-07-19 7:37 ` Wanpeng Li
2021-07-23 6:15 ` Zeng Guang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YQHwa42jixqPPvVm@google.com \
--to=seanjc@google.com \
--cc=bp@alien8.de \
--cc=chao.gao@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=guang.zeng@intel.com \
--cc=hpa@zytor.com \
--cc=jarkko@kernel.org \
--cc=jethro@fortanix.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kai.huang@intel.com \
--cc=kan.liang@linux.intel.com \
--cc=kim.phillips@amd.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=robert.hu@intel.com \
--cc=robert.hu@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.