Sean Christopherson <seanjc@xxxxxxxxxx> writes: > Don't skip the vmcall() in l2_guest_code() prior to re-entering L2, doing > so will result in L2 running to completion, popping '0' off the stack for > RET, jumping to address '0', and ultimately dying with a triple fault > shutdown. > > It's not at all obvious why the test re-enters L2 and re-executes VMCALL, > but presumably it serves a purpose. I managed to forget everything but it seems my intentions were to test two things: - "Enter SMM during L2 execution and check that we correctly return from it." - "Perform save/restore while the guest is in SMM triggered during L2 execution" the later could've been complemented with "and try running L2 after". > The VMX path doesn't skip vmcall(), and the test can't possibly have > passed on SVM Well, it kind of works for me (pre-patch) :-) I do see #DF in the trace but not #TF. >, so just do what VMX does. > Makes sense. I can't recall how "+= 3" appeared. > Fixes: d951b2210c1a ("KVM: selftests: smm_test: Test SMM enter from L2") > Cc: Maxim Levitsky <mlevitsk@xxxxxxxxxx> > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> > --- > tools/testing/selftests/kvm/x86_64/smm_test.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/tools/testing/selftests/kvm/x86_64/smm_test.c b/tools/testing/selftests/kvm/x86_64/smm_test.c > index 2da8eb8e2d96..a626d40fdb48 100644 > --- a/tools/testing/selftests/kvm/x86_64/smm_test.c > +++ b/tools/testing/selftests/kvm/x86_64/smm_test.c > @@ -105,7 +105,6 @@ static void guest_code(void *arg) > > if (cpu_has_svm()) { > run_guest(svm->vmcb, svm->vmcb_gpa); > - svm->vmcb->save.rip += 3; > run_guest(svm->vmcb, svm->vmcb_gpa); > } else { > vmlaunch(); > > base-commit: e2e83a73d7ce66f62c7830a85619542ef59c90e4 Reviewed-and-tested-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> -- Vitaly