All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC please check] KVM: question about the commit
@ 2010-04-21  6:07 ` Takuya Yoshikawa
  0 siblings, 0 replies; 10+ messages in thread
From: Takuya Yoshikawa @ 2010-04-21  6:07 UTC (permalink / raw)
  To: avi-H+wXaHxf7aLQT0dZR+AlfA, mtosatti-H+wXaHxf7aLQT0dZR+AlfA,
	agraf-l3A5Bk7waGM
  Cc: kvm-u79uwXL29TY76Z2rM5mHXA, kvm-ppc-u79uwXL29TY76Z2rM5mHXA

Hi, Alex, Avi, Marcelo

I would like to ask you about the commit:
  c8240bd6f0b4b1b21ffd36dd44114d05c7afe0c0 "Use Little Endian for Dirty Bitmap"
I pasted a snipet below!

I am now confused by the Alex's comment to my recent patch:
  "change mark_page_dirty() to handle endian issues explicitly"
in which I open-coded the generic___set_le_bit().

So please explain me about the commit:
  1. is this really the thing you intended to do?
  2. including <asm-generic/bitops/le.h> directly is OK?
     -- I made a sample patch to avoid this, see below.

  3. or, I misunderstand something about Alex's comment?

Thanks,
  Takuya


== snipet from commit c8240bd6f0b4b1b21ffd36dd44114d05c7afe0c0 =@@ -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"
@@ -1665,8 +1666,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);
 	}
 }

=

== 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 <yoshikawatky@yshtky3.kern.oss.ntt.co.jp>
---
 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 <asm/io.h>
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
-#include <asm-generic/bitops/le.h>
 
 #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);
 	}
 }
 
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-04-22  4:12 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-21  6:07 [RFC please check] KVM: question about the commit Takuya Yoshikawa
2010-04-21  6:07 ` [RFC please check] KVM: question about the commit "Use Little Endian for Dirty Bitmap" Takuya Yoshikawa
     [not found] ` <20100421150720.16516cb7.yoshikawa.takuya-gVGce1chcLdL9jVzuh4AOg@public.gmane.org>
2010-04-21  8:45   ` [RFC please check] KVM: question about the commit "Use Little Takuya Yoshikawa
2010-04-21  8:45     ` [RFC please check] KVM: question about the commit "Use Little Endian for Dirty Bitmap" Takuya Yoshikawa
2010-04-21  9:26 ` [RFC please check] KVM: question about the commit "Use Little Avi Kivity
2010-04-21  9:26   ` [RFC please check] KVM: question about the commit "Use Little Endian for Dirty Bitmap" Avi Kivity
     [not found]   ` <4BCEC4AD.6060305-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-04-21  9:32     ` Alexander Graf
2010-04-21  9:32       ` Alexander Graf
     [not found]       ` <F5C06DB2-AECA-4E05-8B58-74576B65D800-l3A5Bk7waGM@public.gmane.org>
2010-04-22  4:12         ` [RFC please check] KVM: question about the commit "Use Little Takuya Yoshikawa
2010-04-22  4:12           ` [RFC please check] KVM: question about the commit "Use Little Endian for Dirty Bitmap" Takuya Yoshikawa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.