* [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick
@ 2016-08-27 20:34 Laurent Vivier
2016-09-05 11:17 ` Laurent Vivier
2016-09-05 18:07 ` Stefan Hajnoczi
0 siblings, 2 replies; 3+ messages in thread
From: Laurent Vivier @ 2016-08-27 20:34 UTC (permalink / raw)
To: qemu-devel; +Cc: stefanha, Laurent Vivier
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 <lvivier@redhat.com>
---
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);
--
2.5.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick
2016-08-27 20:34 [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick Laurent Vivier
@ 2016-09-05 11:17 ` Laurent Vivier
2016-09-05 18:07 ` Stefan Hajnoczi
1 sibling, 0 replies; 3+ messages in thread
From: Laurent Vivier @ 2016-09-05 11:17 UTC (permalink / raw)
To: qemu-devel; +Cc: stefanha
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 <lvivier@redhat.com>
> ---
> 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);
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick
2016-08-27 20:34 [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick Laurent Vivier
2016-09-05 11:17 ` Laurent Vivier
@ 2016-09-05 18:07 ` Stefan Hajnoczi
1 sibling, 0 replies; 3+ messages in thread
From: Stefan Hajnoczi @ 2016-09-05 18:07 UTC (permalink / raw)
To: Laurent Vivier; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 633 bytes --]
On Sat, Aug 27, 2016 at 04:34:14PM -0400, 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 <lvivier@redhat.com>
> ---
> v2: vq->avail->ring[] is also a 16bit value
>
> tests/libqos/virtio.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
Thanks, applied to my block-next tree:
https://github.com/stefanha/qemu/commits/block-next
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-09-05 19:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-27 20:34 [Qemu-devel] [PATCH v2] tests: fix qvirtqueue_kick Laurent Vivier
2016-09-05 11:17 ` Laurent Vivier
2016-09-05 18:07 ` Stefan Hajnoczi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).