From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiao Guangrong Subject: Re: [PATCH v2 10/12] KVM: MMU: unify the code of walking pte list Date: Tue, 29 Jan 2013 11:01:55 +0800 Message-ID: <51073BA3.2030901@linux.vnet.ibm.com> References: <50FFB5A1.5090708@linux.vnet.ibm.com> <50FFB6DE.8060709@linux.vnet.ibm.com> <20130127132840.GB21650@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , Avi Kivity , LKML , KVM To: Gleb Natapov Return-path: In-Reply-To: <20130127132840.GB21650@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 01/27/2013 09:28 PM, Gleb Natapov wrote: >> >> @@ -1256,19 +1243,18 @@ static int kvm_set_pte_rmapp(struct kvm *kvm, unsigned long *rmapp, >> >> if (pte_write(*ptep)) { >> drop_spte(kvm, sptep); >> - sptep = rmap_get_first(*rmapp, &iter); >> - } else { >> - new_spte = *sptep & ~PT64_BASE_ADDR_MASK; >> - new_spte |= (u64)new_pfn << PAGE_SHIFT; >> + goto restart; > I do not like this "goto restart" pattern throughout this patch. Follow up > patch gets rid of most of them, so they are tolerable as a temporary solution > here, but this one stays. What about moving pte_write(*ptep) outside > for_each_spte_in_rmap() loop like that: > > if (pte_write(*ptep)) > need_flush = kvm_unmap_rmapp(); > else > for_each_spte_in_rmap() { > } Nice. Will do.