X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvirtio-ring.h;h=b7a7aafb238df38d5fb19ac6e92f74deb4e9a8de;hb=1313b78a5b096ac4bb8a611d25633246047462e8;hp=3fb86fe4f6d07ba3b77fb5bf57ae5ba1f6b465f1;hpb=ea8ac63a06bf621408d65fbfc17d77fa4a19be6f;p=seabios.git diff --git a/src/virtio-ring.h b/src/virtio-ring.h index 3fb86fe..b7a7aaf 100644 --- a/src/virtio-ring.h +++ b/src/virtio-ring.h @@ -9,8 +9,9 @@ #define virt_to_phys(v) (unsigned long)(v) #define phys_to_virt(p) (void*)(p) -#define wmb() barrier() -#define mb() barrier() +/* Compiler barrier is enough as an x86 CPU does not reorder reads or writes */ +#define smp_rmb() barrier() +#define smp_wmb() barrier() /* Status byte for guest to report progress, and synchronize features. */ /* We have seen device and processed generic fields (VIRTIO_CONFIG_F_VIRTIO) */ @@ -105,6 +106,8 @@ static inline void vring_init(struct vring *vr, vr->desc = phys_to_virt(pa); vr->avail = (struct vring_avail *)&vr->desc[num]; + /* disable interrupts */ + vr->avail->flags |= VRING_AVAIL_F_NO_INTERRUPT; /* physical address of used must be page aligned */