From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 09/15] KVM: MMU: split kvm_mmu_free_page Date: Thu, 09 Jun 2011 10:07:23 +0300 Message-ID: <4DF0712B.5050400@redhat.com> References: <4DEE205E.8000601@cn.fujitsu.com> <4DEE21AE.9050703@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , LKML , KVM To: Xiao Guangrong Return-path: In-Reply-To: <4DEE21AE.9050703@cn.fujitsu.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 06/07/2011 04:03 PM, Xiao Guangrong wrote: > Split kvm_mmu_free_page to kvm_mmu_free_lock_parts and > kvm_mmu_free_unlock_parts > > One is used to free the parts which is under mmu lock and the other is > used to free the parts which can allow be freed out of mmu lock > > It is used by later patch Suggest kvm_mmu_isolate_page() and kvm_mmu_free_page(). Plus a comment explaining things, unless someone can come up with a better name. > -static void kvm_mmu_free_page(struct kvm_mmu_page *sp) > +static void kvm_mmu_free_lock_parts(struct kvm_mmu_page *sp) > { > ASSERT(is_empty_shadow_page(sp->spt)); > hlist_del(&sp->hash_link); > - list_del(&sp->link); > - free_page((unsigned long)sp->spt); > if (!sp->role.direct) > free_page((unsigned long)sp->gfns); > +} > + > +static void kvm_mmu_free_unlock_parts(struct kvm_mmu_page *sp) > +{ > + list_del(&sp->link); > + free_page((unsigned long)sp->spt); > kmem_cache_free(mmu_page_header_cache, sp); > } The list_del() must be run under a lock, no? it can access kvm->arch.active_mmu_pages. -- error compiling committee.c: too many arguments to function