Re: [PATCH] Use Little Endian for Dirty Bitmap

2009-09-28 Thread Hollis Blanchard
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 ag...@suse.de
 ---
  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-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Use Little Endian for Dirty Bitmap

2009-09-26 Thread Alexander Graf

bump

On 27.07.2009, at 12:38, 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 ag...@suse.de
---
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);
}
}

--
1.6.0.2

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line unsubscribe kvm-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Use Little Endian for Dirty Bitmap

2009-07-27 Thread Alexander Graf
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 ag...@suse.de
---
 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);
}
 }
 
-- 
1.6.0.2

--
To unsubscribe from this list: send the line unsubscribe kvm-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html