[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick
From: |
Laurent Vivier |
Subject: |
Re: [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick |
Date: |
Mon, 5 Sep 2016 13:17:00 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 |
for 2.8, ping.
Thanks,
Laurent
On 27/08/2016 22:34, Laurent Vivier wrote:
> 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.
>
> Signed-off-by: Laurent Vivier <address@hidden>
> ---
> v2: vq->avail->ring[] is also a 16bit value
>
> tests/libqos/virtio.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tests/libqos/virtio.c b/tests/libqos/virtio.c
> index d8c2970..37ff860 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);
>
- Re: [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick,
Laurent Vivier <=