On Fri, 2011-11-18 at 17:20 +0800, Xiao Guangrong wrote: > The operation of getting dirty log is frequency When framebuffer-based > displays are used(for example, Xwindow), so, we introduce a mapping table > to speed up id_to_memslot() > > Signed-off-by: Xiao Guangrong <xiaoguangrong@xxxxxxxxxxxxxxxxxx> > --- > include/linux/kvm_host.h | 13 +++++++------ > virt/kvm/kvm_main.c | 7 ++++++- > 2 files changed, 13 insertions(+), 7 deletions(-) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index 83b396a..fbf66eb 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -238,6 +238,8 @@ struct kvm_irq_routing_table {}; > struct kvm_memslots { > u64 generation; > struct kvm_memory_slot memslots[KVM_MEM_SLOTS_NUM]; > + /* The mapping table from slot id to the index in memslots[]. */ > + int id_to_index[KVM_MEM_SLOTS_NUM]; > }; > > struct kvm { > @@ -340,14 +342,13 @@ static inline struct kvm_memslots *kvm_memslots(struct kvm *kvm) > static inline struct kvm_memory_slot * > id_to_memslot(struct kvm_memslots *slots, int id) > { > - int i; > + int index = slots->id_to_index[id]; > + struct kvm_memory_slot *slot; > > - for (i = 0; i < KVM_MEM_SLOTS_NUM; i++) > - if (slots->memslots[i].id == id) > - return &slots->memslots[i]; > + slot = &slots->memslots[index]; > > - WARN_ON(1); > - return NULL; > + WARN_ON(slot->id != id); > + return slot; > } If we didn't find the right memslot we shouldn't be returning a wrong one, we should be failing. -- Sasha. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html