On Mon, 2009-07-27 at 12:38 +0200, Alexander Graf wrote: > We currently use host endian long types to store information > in the dirty bitmap. > > This works reasonably well on Little Endian targets, because the > u32 after the first contains the next 32 bits. On Big Endian this > breaks completely though, forcing us to be inventive here. > > So Ben suggested to always use Little Endian, which looks reasonable. > > We only have dirty bitmap implemented in Little Endian targets so far > and since PowerPC would be the first Big Endian platform, we can just > as well switch to Little Endian always with little effort without > breaking existing targets. > > Signed-off-by: Alexander Graf <agraf@xxxxxxx> > --- > virt/kvm/kvm_main.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 17d8688..3482ad1 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -48,6 +48,7 @@ > #include <asm/io.h> > #include <asm/uaccess.h> > #include <asm/pgtable.h> > +#include <asm-generic/bitops/le.h> > > #ifdef KVM_COALESCED_MMIO_PAGE_OFFSET > #include "coalesced_mmio.h" > @@ -1656,8 +1657,8 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) > unsigned long rel_gfn = gfn - memslot->base_gfn; > > /* avoid RMW */ > - if (!test_bit(rel_gfn, memslot->dirty_bitmap)) > - set_bit(rel_gfn, memslot->dirty_bitmap); > + if (!generic_test_le_bit(rel_gfn, memslot->dirty_bitmap)) > + generic___set_le_bit(rel_gfn, memslot->dirty_bitmap); > } > } I don't think I've ever exercised the dirty bitmap code, and I don't really have an opinion. Avi? -- Hollis Blanchard IBM Linux Technology Center -- 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