kvm-all.c: define smp_wmb and use it for coalesced mmio

Acked-by: "Michael S. Tsirkin" <mst@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
Marcelo Tosatti 2010-02-22 13:57:54 -03:00 committed by Avi Kivity
parent 6312b92853
commit 85199474d0
2 changed files with 9 additions and 1 deletions

View File

@ -21,6 +21,7 @@
#include <linux/kvm.h> #include <linux/kvm.h>
#include "qemu-common.h" #include "qemu-common.h"
#include "qemu-barrier.h"
#include "sysemu.h" #include "sysemu.h"
#include "hw/hw.h" #include "hw/hw.h"
#include "gdbstub.h" #include "gdbstub.h"
@ -730,7 +731,7 @@ void kvm_flush_coalesced_mmio_buffer(void)
ent = &ring->coalesced_mmio[ring->first]; ent = &ring->coalesced_mmio[ring->first];
cpu_physical_memory_write(ent->phys_addr, ent->data, ent->len); cpu_physical_memory_write(ent->phys_addr, ent->data, ent->len);
/* FIXME smp_wmb() */ smp_wmb();
ring->first = (ring->first + 1) % KVM_COALESCED_MMIO_MAX; ring->first = (ring->first + 1) % KVM_COALESCED_MMIO_MAX;
} }
} }

7
qemu-barrier.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef __QEMU_BARRIER_H
#define __QEMU_BARRIER_H 1
/* FIXME: arch dependant, x86 version */
#define smp_wmb() asm volatile("" ::: "memory")
#endif