From 076c77cf401d16008b5a33abcde0aab0e7c28bbc Mon Sep 17 00:00:00 2001 From: Michael S. Tsirkin <mst@redhat.com> Date: Wed, 27 Jan 2010 12:19:53 -0200 Subject: [PATCH 3/5] qemu/virtio: atomic access for index values RH-Author: Michael S. Tsirkin <mst@redhat.com> Message-id: <20100127121953.GC7223@redhat.com> Patchwork-id: 6703 O-Subject: [PATCHv3-repost 2/2] qemu/virtio: atomic access for index values Bugzilla: 525323 RH-Acked-by: Markus Armbruster <armbru@redhat.com> RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com> RH-Acked-by: Juan Quintela <quintela@redhat.com> virtio index values must be read/written atomically. Use the new _atomic routines for them. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- qemu/hw/virtio.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- qemu/hw/virtio.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu/hw/virtio.c b/qemu/hw/virtio.c index 2fdfc59..618cef7 100644 --- a/qemu/hw/virtio.c +++ b/qemu/hw/virtio.c @@ -198,7 +198,7 @@ static inline uint16_t vring_avail_idx(VirtQueue *vq) { target_phys_addr_t pa; pa = vq->vring.avail + offsetof(VRingAvail, idx); - return lduw_phys(pa); + return lduw_phys_atomic(pa); } static inline uint16_t vring_avail_ring(VirtQueue *vq, int i) @@ -233,7 +233,7 @@ static inline void vring_used_idx_increment(VirtQueue *vq, uint16_t val) { target_phys_addr_t pa; pa = vq->vring.used + offsetof(VRingUsed, idx); - stw_phys(pa, vring_used_idx(vq) + val); + stw_phys_atomic(pa, vring_used_idx(vq) + val); } static inline void vring_used_flags_set_bit(VirtQueue *vq, int mask) -- 1.6.3.rc4.29.g8146