From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: KVM: x86: move vapic page handling out of fast path Date: Sun, 22 Jun 2008 14:05:58 -0300 Message-ID: <20080622170558.GA6587@dmt.cnet> References: <20080619174347.GA9236@dmt.cnet> <485DDC5B.1020707@qumranet.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm-devel To: Avi Kivity Return-path: Received: from mx1.redhat.com ([66.187.233.31]:49117 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751105AbYFVRGQ (ORCPT ); Sun, 22 Jun 2008 13:06:16 -0400 Content-Disposition: inline In-Reply-To: <485DDC5B.1020707@qumranet.com> Sender: kvm-owner@vger.kernel.org List-ID: On Sun, Jun 22, 2008 at 08:00:11AM +0300, Avi Kivity wrote: > Marcelo Tosatti wrote: >> I fail to see the point of handling the vapic page grab and ref >> counting in __vcpu_run's heavyweight enter/exit path. >> >> > > It's to avoid pinning the page indefinitely. > >> So move it to kvm_lapic_set_vapic_addr / kvm_free_lapic time. >> >> Other than the obvious improvement for non-Flexpriority case, this >> kills a down_read/up_read pair in heavy exits and reduces code size. >> > > With mmu notifiers we can do this and still not ping the page: > > fast path: > > > if (vapic_addr && !vapic_page) > enter_vapic(); > > > mmu notifier: > > if (gpa == vapic_addr) > exit_vapic() > > > So let's wait with this until mmu notifiers are merged. But what is the point, or advantage, of having the _any_ vapic page handling in __vcpu_run ? The reference for it is grabbed at kvm_lapic_set_vapic_addr() (which does not take any spinlock, so its safe to swapin the page) and released at guest exit. So, what do you have against this patch ?