From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bandan Das Subject: Re: [PATCH] x86: svm: make wbinvd faster Date: Sun, 01 Mar 2015 21:29:36 -0500 Message-ID: References: <20150228001917.15247.41063.stgit@joelvmguard2.amd.com> Mime-Version: 1.0 Content-Type: text/plain Cc: Gleb Natapov , Paolo Bonzini , , David Kaplan , , Joerg Roedel , Marcelo Tosatti , , Borislav Petkov To: Joel Schopp Return-path: In-Reply-To: <20150228001917.15247.41063.stgit@joelvmguard2.amd.com> (Joel Schopp's message of "Fri, 27 Feb 2015 18:19:18 -0600") Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org Joel Schopp writes: > From: David Kaplan > No need to re-decode WBINVD since we know what it is from the intercept. > > Signed-off-by: David Kaplan > [extracted from larger unlrelated patch, forward ported, tested] > Signed-off-by: Joel Schopp > --- > 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@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html