On 02/22/2010 04:45 PM, Marcelo Tosatti wrote:
On Mon, Feb 22, 2010 at 04:23:32PM +0200, Avi Kivity wrote:
On 02/22/2010 03:59 PM, Marcelo Tosatti wrote:
Cc: "Michael S. Tsirkin"<m...@redhat.com>
Signed-off-by: Marcelo Tosatti<mtosa...@redhat.com>
Index: qemu/kvm-all.c
===================================================================
--- qemu.orig/kvm-all.c
+++ qemu/kvm-all.c
@@ -718,6 +718,9 @@ static int kvm_handle_io(uint16_t port,
return 1;
}
+/* FIXME: arch dependant, x86 version */
+#define smp_wmb() asm volatile("" ::: "memory")
+
sfence?
There is no need (for this case). Older read cannot be reordered with
write, writes are not reordered with other writes, writes by a single
processor are observed in the same order by all processors.
Well, Linux does use sfence. Perhaps it's only needed for WC writes
(movnti and friends), but better be careful here.
what about other arches?
They need to be fixed? PPC needs an instruction apparently.
Is there any objection to including this patch?
I imagine all arches need an instruction. For reads as well.
Note, gcc has a __sync_synchronize() builtin that compiles to mfence on
x86. We might use that as a baseline for both rmb and wmb, and let each
arch override it incrementally.
--
error compiling committee.c: too many arguments to function