[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87a7c0p74i.fsf@vitty.brq.redhat.com>
Date: Fri, 23 Aug 2019 11:23:57 +0200
From: Vitaly Kuznetsov <vkuznets@...hat.com>
To: Sean Christopherson <sean.j.christopherson@...el.com>
Cc: Wanpeng Li <wanpengli@...cent.com>,
Jim Mattson <jmattson@...gle.com>,
Joerg Roedel <joro@...tes.org>, kvm@...r.kernel.org,
linux-kernel@...r.kernel.org, Paolo Bonzini <pbonzini@...hat.com>,
Radim Krčmář <rkrcmar@...hat.com>
Subject: Re: [RESEND PATCH 02/13] KVM: x86: Clean up handle_emulation_failure()
Sean Christopherson <sean.j.christopherson@...el.com> writes:
> When handling emulation failure, return the emulation result directly
> instead of capturing it in a local variable. Future patches will move
> additional cases into handle_emulation_failure(), clean up the cruft
> before so there isn't an ugly mix of setting a local variable and
> returning directly.
>
> Signed-off-by: Sean Christopherson <sean.j.christopherson@...el.com>
> ---
> arch/x86/kvm/x86.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index cd425f54096a..c6de5bc4fa5e 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -6207,24 +6207,22 @@ EXPORT_SYMBOL_GPL(kvm_inject_realmode_interrupt);
>
> static int handle_emulation_failure(struct kvm_vcpu *vcpu, int emulation_type)
> {
> - int r = EMULATE_DONE;
> -
> ++vcpu->stat.insn_emulation_fail;
> trace_kvm_emulate_insn_failed(vcpu);
>
> if (emulation_type & EMULTYPE_NO_UD_ON_FAIL)
> return EMULATE_FAIL;
>
> + kvm_queue_exception(vcpu, UD_VECTOR);
> +
> if (!is_guest_mode(vcpu) && kvm_x86_ops->get_cpl(vcpu) == 0) {
> vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
> vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_EMULATION;
> vcpu->run->internal.ndata = 0;
> - r = EMULATE_USER_EXIT;
> + return EMULATE_USER_EXIT;
> }
>
> - kvm_queue_exception(vcpu, UD_VECTOR);
> -
> - return r;
> + return EMULATE_DONE;
> }
>
> static bool reexecute_instruction(struct kvm_vcpu *vcpu, gva_t cr2,
No functional change,
Reviewed-by: Vitaly Kuznetsov <vkuznets@...hat.com>
Just for self-education, what sane userspace is supposed to do when it
sees KVM_EXIT_INTERNAL_ERROR other than kill the guest? Why does it make
sense to still prepare to inject '#UD'?
--
Vitaly
Powered by blists - more mailing lists