From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roel Kluin Subject: Re: [PATCH 05/47] KVM: VMX: Optimize vmx_get_cpl() Date: Wed, 26 Aug 2009 16:15:24 +0200 Message-ID: <4A95437C.2060707@gmail.com> References: <1251282609-12835-1-git-send-email-avi@redhat.com> <1251282609-12835-6-git-send-email-avi@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org To: Avi Kivity Return-path: In-Reply-To: <1251282609-12835-6-git-send-email-avi@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org 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. 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)); } /*