From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 05/47] KVM: VMX: Optimize vmx_get_cpl() Date: Wed, 26 Aug 2009 17:33:10 +0300 Message-ID: <4A9547A6.1000902@redhat.com> References: <1251282609-12835-1-git-send-email-avi@redhat.com> <1251282609-12835-6-git-send-email-avi@redhat.com> <4A95437C.2060707@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org To: Roel Kluin Return-path: In-Reply-To: <4A95437C.2060707@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 08/26/2009 05:15 PM, Roel Kluin wrote: > Op 26-08-09 12:29, Avi Kivity schreef: > >> Instead of calling vmx_get_segment() (which reads a whole bunch of >> vmcs fields), read only the cs selector which contains the cpl. >> >> Signed-off-by: Avi Kivity >> > Can't we also optimise cs_ss_rpl_check()? (Please review, untested.) > > ------------->8 ---------------------- 8< -------------------- > Instead of calling vmx_get_segment() (which reads a whole bunch of > vmcs fields), read only the cs/ss selectors which contains the rpls. > > It's really a slowpath, so I prefer not to touch it. We're likely to start caching guest segment fields soon, so the less code that reads them directly, the better. > Signed-off-by: Roel Kluin > --- > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index 29f9129..5d8512a 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -1932,13 +1932,8 @@ static bool ldtr_valid(struct kvm_vcpu *vcpu) > > static bool cs_ss_rpl_check(struct kvm_vcpu *vcpu) > { > - struct kvm_segment cs, ss; > - > - vmx_get_segment(vcpu,&cs, VCPU_SREG_CS); > - vmx_get_segment(vcpu,&ss, VCPU_SREG_SS); > - > - return ((cs.selector& SELECTOR_RPL_MASK) == > - (ss.selector& SELECTOR_RPL_MASK)); > + return ((vmcs_read16(GUEST_CS_SELECTOR)& SELECTOR_RPL_MASK) == > + (vmcs_read16(GUEST_SS_SELECTOR)& SELECTOR_RPL_MASK)); > } > > /* > -- error compiling committee.c: too many arguments to function