summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorLaurent Vivier <lvivier@redhat.com>2016-08-27 16:34:14 -0400
committerStefan Hajnoczi <stefanha@redhat.com>2016-09-13 11:00:57 +0100
commite49f827725d53d2fb1b8ec42db96c442d0caf6cd (patch)
treeb7839b0c7135d5b1274b64d7a6bbe6f02aaa72d5
parent049105a3c1134bb27f52d3a6ec4e92a3d5278800 (diff)
downloadfocaccia-qemu-e49f827725d53d2fb1b8ec42db96c442d0caf6cd.tar.gz
focaccia-qemu-e49f827725d53d2fb1b8ec42db96c442d0caf6cd.zip
tests: fix qvirtqueue_kick
vq->avail.idx and vq->avail->ring[] are a 16bit values,
so read and write them with readw()/writew() instead of
readl()/writel().

To read/write a 16bit value with a 32bit accessor works fine
on little-endian CPU but not on big endian CPU.

[An equivalent patch for the writew() calls was also sent by
Zhang Shuai <zhangshuai13@huawei.com>.
--Stefan]

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-id: 1472330054-22607-1-git-send-email-lvivier@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
-rw-r--r--tests/libqos/virtio.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/tests/libqos/virtio.c b/tests/libqos/virtio.c
index d8c2970de7..37ff860c16 100644
--- a/tests/libqos/virtio.c
+++ b/tests/libqos/virtio.c
@@ -257,16 +257,16 @@ void qvirtqueue_kick(const QVirtioBus *bus, QVirtioDevice *d, QVirtQueue *vq,
                                                             uint32_t free_head)
 {
     /* vq->avail->idx */
-    uint16_t idx = readl(vq->avail + 2);
+    uint16_t idx = readw(vq->avail + 2);
     /* vq->used->flags */
     uint16_t flags;
     /* vq->used->avail_event */
     uint16_t avail_event;
 
     /* vq->avail->ring[idx % vq->size] */
-    writel(vq->avail + 4 + (2 * (idx % vq->size)), free_head);
+    writew(vq->avail + 4 + (2 * (idx % vq->size)), free_head);
     /* vq->avail->idx */
-    writel(vq->avail + 2, idx + 1);
+    writew(vq->avail + 2, idx + 1);
 
     /* Must read after idx is updated */
     flags = readw(vq->avail);