From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Date: Wed, 21 Apr 2010 08:45:32 +0000 Subject: Re: [RFC please check] KVM: question about the commit "Use Little Message-Id: <4BCEBB2C.4040700@oss.ntt.co.jp> List-Id: References: <20100421150720.16516cb7.yoshikawa.takuya@oss.ntt.co.jp> In-Reply-To: <20100421150720.16516cb7.yoshikawa.takuya-gVGce1chcLdL9jVzuh4AOg@public.gmane.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, mtosatti-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, agraf-l3A5Bk7waGM@public.gmane.org Cc: kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org (2010/04/21 15:07), Takuya Yoshikawa wrote: > == not tested => [PATCH sample] KVM: avoid to include an asm-generic bitops header file directly > > Including asm-generic bitops headers is kind of violation: there is no guarantee that > no one will change those functions we are using. > > Signed-off-by: Takuya Yoshikawa Oh, I forgot to drop this line: this is made on my machine with not configured git. Please ignore this Signed-off-by, the address is not valid. > --- > virt/kvm/kvm_main.c | 17 +++++++++++++---- > 1 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 3725605..f029760 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -51,7 +51,6 @@ > #include > #include > #include > -#include > > #include "coalesced_mmio.h" > > @@ -1179,6 +1178,18 @@ int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len) > } > EXPORT_SYMBOL_GPL(kvm_clear_guest); > > +/* > + * __set_le_bit is defined for ppc only. > + */ > +static void kvm___set_le_bit(unsigned long nr, unsigned long *addr) > +{ > +#ifdef __set_le_bit > + __set_le_bit(nr, addr); > +#else > + __set_bit(nr, addr); > +#endif > +} > + > void mark_page_dirty(struct kvm *kvm, gfn_t gfn) > { > struct kvm_memory_slot *memslot; > @@ -1188,9 +1199,7 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) > if (memslot&& memslot->dirty_bitmap) { > unsigned long rel_gfn = gfn - memslot->base_gfn; > > - /* avoid RMW */ > - if (!generic_test_le_bit(rel_gfn, memslot->dirty_bitmap)) > - generic___set_le_bit(rel_gfn, memslot->dirty_bitmap); > + kvm___set_le_bit(rel_gfn, memslot->dirty_bitmap); > } > } >