From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Subject: Re: [PATCH v3 4/6] KVM: introduce id_to_memslot function Date: Thu, 24 Nov 2011 19:15:36 +0900 Message-ID: <4ECE1948.2060907@oss.ntt.co.jp> References: <4ECE1037.4060300@gmail.com> <4ECE10F8.9070707@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Avi Kivity , Marcelo Tosatti , Xiao Guangrong , LKML , KVM To: Xiao Guangrong Return-path: In-Reply-To: <4ECE10F8.9070707@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org (2011/11/24 18:40), Xiao Guangrong wrote: ... > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -3521,7 +3521,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, > if (log->slot>= KVM_MEMORY_SLOTS) > goto out; > > - memslot =&kvm->memslots->memslots[log->slot]; > + memslot = id_to_memslot(kvm->memslots, log->slot); > r = -ENOENT; > if (!memslot->dirty_bitmap) > goto out; > @@ -3544,15 +3544,16 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, > if (!slots) > goto out; > memcpy(slots, kvm->memslots, sizeof(struct kvm_memslots)); > - memslot =&slots->memslots[log->slot]; > - memslot->dirty_bitmap = dirty_bitmap; > + memslot = id_to_memslot(slots, log->slot); > memslot->nr_dirty_pages = 0; > + memslot->dirty_bitmap = dirty_bitmap; > update_memslots(slots, NULL); > > old_slots = kvm->memslots; > rcu_assign_pointer(kvm->memslots, slots); > synchronize_srcu_expedited(&kvm->srcu); > - dirty_bitmap = old_slots->memslots[log->slot].dirty_bitmap; > + dirty_bitmap = id_to_memslot(old_slots, > + log->slot)->dirty_bitmap; You can eliminate this if you use old_slot and new_slot for the two memory slots. Takuya > kfree(old_slots); > > write_protect_slot(kvm, memslot, dirty_bitmap, nr_dirty_pages);