[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] libqos: fix bugs in qvirtqueue_kick()
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH] libqos: fix bugs in qvirtqueue_kick() |
Date: |
Mon, 5 Sep 2016 14:08:30 -0400 |
User-agent: |
Mutt/1.7.0 (2016-08-17) |
On Fri, Aug 26, 2016 at 11:18:22AM +0800, zhangshuai wrote:
> From: Zhang Shuai <address@hidden>
>
> The idx and ring[] of vring_avail is 16-bit, but the writel
> is 32-bit, the second writel will cover the ring[free_head]
> with 0. So use writew to replace writel to fix the bug.
>
> Signed-off-by: zhangshuai <address@hidden>
> ---
> tests/libqos/virtio.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tests/libqos/virtio.c b/tests/libqos/virtio.c
> index d8c2970..801690f 100644
> --- a/tests/libqos/virtio.c
> +++ b/tests/libqos/virtio.c
> @@ -264,9 +264,9 @@ void qvirtqueue_kick(const QVirtioBus *bus, QVirtioDevice
> *d, QVirtQueue *vq,
> 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);
Laurent Vivier sent an equivalent patch that also covers the incorrect
readl() call. I have applied his patch instead and mentioned your work
to give you credit.
Stefan
signature.asc
Description: PGP signature