diff options
| author | Laurent Vivier | 2016-08-27 22:34:14 +0200 |
|---|---|---|
| committer | Stefan Hajnoczi | 2016-09-13 12:00:57 +0200 |
| commit | e49f827725d53d2fb1b8ec42db96c442d0caf6cd (patch) | |
| tree | b7839b0c7135d5b1274b64d7a6bbe6f02aaa72d5 /tests/libqos/virtio.c | |
| parent | MAINTAINERS: add maintainer for replication (diff) | |
| download | qemu-e49f827725d53d2fb1b8ec42db96c442d0caf6cd.tar.gz qemu-e49f827725d53d2fb1b8ec42db96c442d0caf6cd.tar.xz 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>
Diffstat (limited to 'tests/libqos/virtio.c')
| -rw-r--r-- | tests/libqos/virtio.c | 6 |
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); |
