Sean Christopherson <sean.j.christopherson@xxxxxxxxx> writes: > On Tue, Aug 06, 2019 at 08:01:47AM +0200, Vitaly Kuznetsov wrote: >> When we're unable to skip instruction with kvm_emulate_instruction() we >> will not advance RIP and most likely the guest will get stuck as >> consequitive attempts to execute the same instruction will likely result >> in the same behavior. >> >> As we're not supposed to see these messages under normal conditions, switch >> to pr_err_once(). >> >> Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> >> Reviewed-by: Jim Mattson <jmattson@xxxxxxxxxx> >> --- >> arch/x86/kvm/svm.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c >> index 7e843b340490..80f576e05112 100644 >> --- a/arch/x86/kvm/svm.c >> +++ b/arch/x86/kvm/svm.c >> @@ -782,7 +782,8 @@ static void skip_emulated_instruction(struct kvm_vcpu *vcpu) >> if (!svm->next_rip) { >> if (kvm_emulate_instruction(vcpu, EMULTYPE_SKIP) != >> EMULATE_DONE) >> - printk(KERN_DEBUG "%s: NOP\n", __func__); >> + pr_err_once("KVM: %s: unable to skip instruction\n", >> + __func__); > > IMO the proper fix would be to change skip_emulated_instruction() to > return an int so that emulation failure can be reported back up the stack. > It's a relatively minor change as there are a limited number of call sites > to skip_emulated_instruction() in SVM and VMX. > (I'm always wondering when is the right time to add "plus a bunch of miscellaneous fixes all over" to the PATCH0's Subject line :-) Will do in the next version, thanks! >> return; >> } >> if (svm->next_rip - kvm_rip_read(vcpu) > MAX_INST_SIZE) >> -- >> 2.20.1 >> -- Vitaly