Joel Schopp <joel.schopp@xxxxxxx> writes: > From: David Kaplan <David.Kaplan@xxxxxxx> > No need to re-decode WBINVD since we know what it is from the intercept. > > Signed-off-by: David Kaplan <David.Kaplan@xxxxxxx> > [extracted from larger unlrelated patch, forward ported, tested] > Signed-off-by: Joel Schopp <joel.schopp@xxxxxxx> > --- > arch/x86/kvm/svm.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c > index d319e0c..86ecd21 100644 > --- a/arch/x86/kvm/svm.c > +++ b/arch/x86/kvm/svm.c > @@ -2776,6 +2776,14 @@ static int skinit_interception(struct vcpu_svm *svm) > return 1; > } > > +static int wbinvd_interception(struct vcpu_svm *svm) > +{ > + kvm_emulate_wbinvd(&svm->vcpu); > + skip_emulated_instruction(&svm->vcpu); > + return 1; > +} > + > + Can't we merge this to kvm_emulate_wbinvd, and just call that function directly for both vmx and svm ? > static int xsetbv_interception(struct vcpu_svm *svm) > { > u64 new_bv = kvm_read_edx_eax(&svm->vcpu); > @@ -3376,7 +3384,7 @@ static int (*const svm_exit_handlers[])(struct vcpu_svm *svm) = { > [SVM_EXIT_STGI] = stgi_interception, > [SVM_EXIT_CLGI] = clgi_interception, > [SVM_EXIT_SKINIT] = skinit_interception, > - [SVM_EXIT_WBINVD] = emulate_on_interception, So, this means x86_emulate_insn() in emulate.c has no callers left for the wbinvd case ? vmx calls kvm_emulate_wbinvd directly too.. Bandan > + [SVM_EXIT_WBINVD] = wbinvd_interception, > [SVM_EXIT_MONITOR] = monitor_interception, > [SVM_EXIT_MWAIT] = mwait_interception, > [SVM_EXIT_XSETBV] = xsetbv_interception, > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html