Messages in this thread | | | Date | Wed, 6 Oct 2021 15:35:37 +0200 | Subject | Re: [PATCH MANUALSEL 5.14 5/9] KVM: x86: VMX: synthesize invalid VM exit when emulating invalid guest state | From | Paolo Bonzini <> |
| |
On 06/10/21 15:30, Sasha Levin wrote: > From: Maxim Levitsky <mlevitsk@redhat.com> > > [ Upstream commit c42dec148b3e1a88835e275b675e5155f99abd43 ] > > Since no actual VM entry happened, the VM exit information is stale. > To avoid this, synthesize an invalid VM guest state VM exit. > > Suggested-by: Sean Christopherson <seanjc@google.com> > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> > Message-Id: <20210913140954.165665-6-mlevitsk@redhat.com> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > Signed-off-by: Sasha Levin <sashal@kernel.org> > --- > arch/x86/kvm/vmx/vmx.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 256f8cab4b8b..339116ff236f 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -6607,10 +6607,21 @@ static fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu) > vmx->loaded_vmcs->soft_vnmi_blocked)) > vmx->loaded_vmcs->entry_time = ktime_get(); > > - /* Don't enter VMX if guest state is invalid, let the exit handler > - start emulation until we arrive back to a valid state */ > - if (vmx->emulation_required) > + /* > + * Don't enter VMX if guest state is invalid, let the exit handler > + * start emulation until we arrive back to a valid state. Synthesize a > + * consistency check VM-Exit due to invalid guest state and bail. > + */ > + if (unlikely(vmx->emulation_required)) { > + vmx->fail = 0; > + vmx->exit_reason.full = EXIT_REASON_INVALID_STATE; > + vmx->exit_reason.failed_vmentry = 1; > + kvm_register_mark_available(vcpu, VCPU_EXREG_EXIT_INFO_1); > + vmx->exit_qualification = ENTRY_FAIL_DEFAULT; > + kvm_register_mark_available(vcpu, VCPU_EXREG_EXIT_INFO_2); > + vmx->exit_intr_info = 0; > return EXIT_FASTPATH_NONE; > + } > > trace_kvm_entry(vcpu); > >
NACK
| |