On Tue, Apr 20, 2021 at 05:35:01PM +0000, Sean Christopherson wrote: > On Fri, Apr 09, 2021, Yang Weijiang wrote: > > These fields are rarely updated by L1 QEMU/KVM, sync them when L1 is trying to > > read/write them and after they're changed. If CET guest entry-load bit is not > > set by L1 guest, migrate them to L2 manaully. > > > > Opportunistically remove one blank line in previous patch. > > > > Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx> > > Signed-off-by: Yang Weijiang <weijiang.yang@xxxxxxxxx> > > --- > > arch/x86/kvm/cpuid.c | 1 - > > arch/x86/kvm/vmx/nested.c | 30 ++++++++++++++++++++++++++++++ > > arch/x86/kvm/vmx/vmx.h | 3 +++ > > 3 files changed, 33 insertions(+), 1 deletion(-) > > > > vmx_set_rflags(vcpu, vmcs12->guest_rflags); > > > > /* EXCEPTION_BITMAP and CR0_GUEST_HOST_MASK should basically be the > > @@ -3375,6 +3391,11 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu, > > if (kvm_mpx_supported() && > > !(vmcs12->vm_entry_controls & VM_ENTRY_LOAD_BNDCFGS)) > > vmx->nested.vmcs01_guest_bndcfgs = vmcs_read64(GUEST_BNDCFGS); > > + if (kvm_cet_supported() && !vmx->nested.nested_run_pending) { > > This needs to be: > > if (kvm_cet_supported() && (!vmx->nested.nested_run_pending || > !(vmcs12->vm_entry_controls & VM_ENTRY_LOAD_CET_STATE))) > > otherwise the vmcs01_* members will be stale when emulating VM-Enter with > vcmc12.vm_entry_controls.LOAD_CET_STATE=0. > Thanks Sean! Change is included in v6 patch series. > > + vmx->nested.vmcs01_guest_ssp = vmcs_readl(GUEST_SSP); > > + vmx->nested.vmcs01_guest_s_cet = vmcs_readl(GUEST_S_CET); > > + vmx->nested.vmcs01_guest_ssp_tbl = vmcs_readl(GUEST_INTR_SSP_TABLE); > > + }