All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: Cornelia Huck <cornelia.huck@de.ibm.com>,
	virtualization@lists.linux-foundation.org, qemu-devel@nongnu.org,
	kvm@vger.kernel.org
Cc: thuth@linux.vnet.ibm.com, mst@redhat.com
Subject: Qemu and virtio 1.0
Date: Wed, 25 Feb 2015 14:50:22 +1030	[thread overview]
Message-ID: <877fv6mxkp.fsf@rustcorp.com.au> (raw)
In-Reply-To: 1417101409-29482-1-git-send-email-cornelia.huck@de.ibm.com

OK, I am trying to experiment with virtio 1.0 support using the
latest kernel and MST's qemu tree:

        https://git.kernel.org/cgit/virt/kvm/mst/qemu.git/?h=virtio-1.0

The first issue is that the device config endian was wrong (see
attached patch).

I'm now setting up a BE guest on my x86 laptop, and a BE and LE guest
on a BE powerpc machine, to check that all combinations work correctly.
If others test too, that would be appreciated!

Cheers,
Rusty.

From 95ac91554ed602f856a2a5fcc25eaffcad1b1c8d Mon Sep 17 00:00:00 2001
From: Rusty Russell <rusty@rustcorp.com.au>
Date: Tue, 24 Feb 2015 14:47:44 +1030
Subject: [PATCH] virtio_config_write*/virtio_config_read*: Don't endian swap
 for virtio 1.0.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 079944c..882a31b 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -662,7 +662,12 @@ uint32_t virtio_config_readw(VirtIODevice *vdev, uint32_t addr)
 
     k->get_config(vdev, vdev->config);
 
-    val = lduw_p(vdev->config + addr);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        val = lduw_le_p(vdev->config + addr);
+    } else {
+        val = lduw_p(vdev->config + addr);
+    }
     return val;
 }
 
@@ -677,7 +682,12 @@ uint32_t virtio_config_readl(VirtIODevice *vdev, uint32_t addr)
 
     k->get_config(vdev, vdev->config);
 
-    val = ldl_p(vdev->config + addr);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        val = ldl_le_p(vdev->config + addr);
+    } else {
+        val = ldl_p(vdev->config + addr);
+    }
     return val;
 }
 
@@ -706,7 +716,12 @@ void virtio_config_writew(VirtIODevice *vdev, uint32_t addr, uint32_t data)
         return;
     }
 
-    stw_p(vdev->config + addr, val);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        stw_le_p(vdev->config + addr, val);
+    } else {
+        stw_p(vdev->config + addr, val);
+    }
 
     if (k->set_config) {
         k->set_config(vdev, vdev->config);
@@ -722,7 +737,12 @@ void virtio_config_writel(VirtIODevice *vdev, uint32_t addr, uint32_t data)
         return;
     }
 
-    stl_p(vdev->config + addr, val);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        stl_le_p(vdev->config + addr, val);
+    } else {
+        stl_p(vdev->config + addr, val);
+    }
 
     if (k->set_config) {
         k->set_config(vdev, vdev->config);

WARNING: multiple messages have this Message-ID (diff)
From: Rusty Russell <rusty@rustcorp.com.au>
To: Cornelia Huck <cornelia.huck@de.ibm.com>,
	virtualization@lists.linux-foundation.org, qemu-devel@nongnu.org,
	kvm@vger.kernel.org
Cc: thuth@linux.vnet.ibm.com, mst@redhat.com
Subject: Qemu and virtio 1.0
Date: Wed, 25 Feb 2015 14:50:22 +1030	[thread overview]
Message-ID: <877fv6mxkp.fsf@rustcorp.com.au> (raw)
In-Reply-To: 1417101409-29482-1-git-send-email-cornelia.huck@de.ibm.com

OK, I am trying to experiment with virtio 1.0 support using the
latest kernel and MST's qemu tree:

        https://git.kernel.org/cgit/virt/kvm/mst/qemu.git/?h=virtio-1.0

The first issue is that the device config endian was wrong (see
attached patch).

I'm now setting up a BE guest on my x86 laptop, and a BE and LE guest
on a BE powerpc machine, to check that all combinations work correctly.
If others test too, that would be appreciated!

Cheers,
Rusty.

>From 95ac91554ed602f856a2a5fcc25eaffcad1b1c8d Mon Sep 17 00:00:00 2001
From: Rusty Russell <rusty@rustcorp.com.au>
Date: Tue, 24 Feb 2015 14:47:44 +1030
Subject: [PATCH] virtio_config_write*/virtio_config_read*: Don't endian swap
 for virtio 1.0.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 079944c..882a31b 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -662,7 +662,12 @@ uint32_t virtio_config_readw(VirtIODevice *vdev, uint32_t addr)
 
     k->get_config(vdev, vdev->config);
 
-    val = lduw_p(vdev->config + addr);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        val = lduw_le_p(vdev->config + addr);
+    } else {
+        val = lduw_p(vdev->config + addr);
+    }
     return val;
 }
 
@@ -677,7 +682,12 @@ uint32_t virtio_config_readl(VirtIODevice *vdev, uint32_t addr)
 
     k->get_config(vdev, vdev->config);
 
-    val = ldl_p(vdev->config + addr);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        val = ldl_le_p(vdev->config + addr);
+    } else {
+        val = ldl_p(vdev->config + addr);
+    }
     return val;
 }
 
@@ -706,7 +716,12 @@ void virtio_config_writew(VirtIODevice *vdev, uint32_t addr, uint32_t data)
         return;
     }
 
-    stw_p(vdev->config + addr, val);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        stw_le_p(vdev->config + addr, val);
+    } else {
+        stw_p(vdev->config + addr, val);
+    }
 
     if (k->set_config) {
         k->set_config(vdev, vdev->config);
@@ -722,7 +737,12 @@ void virtio_config_writel(VirtIODevice *vdev, uint32_t addr, uint32_t data)
         return;
     }
 
-    stl_p(vdev->config + addr, val);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        stl_le_p(vdev->config + addr, val);
+    } else {
+        stl_p(vdev->config + addr, val);
+    }
 
     if (k->set_config) {
         k->set_config(vdev, vdev->config);

WARNING: multiple messages have this Message-ID (diff)
From: Rusty Russell <rusty@rustcorp.com.au>
To: Cornelia Huck <cornelia.huck@de.ibm.com>,
	virtualization@lists.linux-foundation.org, qemu-devel@nongnu.org,
	kvm@vger.kernel.org
Cc: thuth@linux.vnet.ibm.com, mst@redhat.com
Subject: [Qemu-devel] Qemu and virtio 1.0
Date: Wed, 25 Feb 2015 14:50:22 +1030	[thread overview]
Message-ID: <877fv6mxkp.fsf@rustcorp.com.au> (raw)
In-Reply-To: 1417101409-29482-1-git-send-email-cornelia.huck@de.ibm.com

OK, I am trying to experiment with virtio 1.0 support using the
latest kernel and MST's qemu tree:

        https://git.kernel.org/cgit/virt/kvm/mst/qemu.git/?h=virtio-1.0

The first issue is that the device config endian was wrong (see
attached patch).

I'm now setting up a BE guest on my x86 laptop, and a BE and LE guest
on a BE powerpc machine, to check that all combinations work correctly.
If others test too, that would be appreciated!

Cheers,
Rusty.

>From 95ac91554ed602f856a2a5fcc25eaffcad1b1c8d Mon Sep 17 00:00:00 2001
From: Rusty Russell <rusty@rustcorp.com.au>
Date: Tue, 24 Feb 2015 14:47:44 +1030
Subject: [PATCH] virtio_config_write*/virtio_config_read*: Don't endian swap
 for virtio 1.0.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 079944c..882a31b 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -662,7 +662,12 @@ uint32_t virtio_config_readw(VirtIODevice *vdev, uint32_t addr)
 
     k->get_config(vdev, vdev->config);
 
-    val = lduw_p(vdev->config + addr);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        val = lduw_le_p(vdev->config + addr);
+    } else {
+        val = lduw_p(vdev->config + addr);
+    }
     return val;
 }
 
@@ -677,7 +682,12 @@ uint32_t virtio_config_readl(VirtIODevice *vdev, uint32_t addr)
 
     k->get_config(vdev, vdev->config);
 
-    val = ldl_p(vdev->config + addr);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        val = ldl_le_p(vdev->config + addr);
+    } else {
+        val = ldl_p(vdev->config + addr);
+    }
     return val;
 }
 
@@ -706,7 +716,12 @@ void virtio_config_writew(VirtIODevice *vdev, uint32_t addr, uint32_t data)
         return;
     }
 
-    stw_p(vdev->config + addr, val);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        stw_le_p(vdev->config + addr, val);
+    } else {
+        stw_p(vdev->config + addr, val);
+    }
 
     if (k->set_config) {
         k->set_config(vdev, vdev->config);
@@ -722,7 +737,12 @@ void virtio_config_writel(VirtIODevice *vdev, uint32_t addr, uint32_t data)
         return;
     }
 
-    stl_p(vdev->config + addr, val);
+    /* Virtio 1.0 is always LE */
+    if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+        stl_le_p(vdev->config + addr, val);
+    } else {
+        stl_p(vdev->config + addr, val);
+    }
 
     if (k->set_config) {
         k->set_config(vdev, vdev->config);

  parent reply	other threads:[~2015-02-25  4:20 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-27 15:16 [PATCH RFC v4 00/16] qemu: towards virtio-1 host support Cornelia Huck
2014-11-27 15:16 ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 01/16] linux-headers/virtio_config: Update with VIRTIO_F_VERSION_1 Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 02/16] virtio: cull virtio_bus_set_vdev_features Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 03/16] virtio: support more feature bits Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:34   ` Michael S. Tsirkin
2014-11-27 15:34     ` [Qemu-devel] " Michael S. Tsirkin
2014-11-27 15:40     ` Cornelia Huck
2014-11-27 15:40       ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:44       ` Michael S. Tsirkin
2014-11-27 15:44         ` [Qemu-devel] " Michael S. Tsirkin
2014-11-27 15:16 ` [PATCH RFC v4 04/16] s390x/virtio-ccw: fix check for WRITE_FEAT Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 05/16] virtio: introduce legacy virtio devices Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 06/16] virtio: allow virtio-1 queue layout Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 07/16] dataplane: allow virtio-1 devices Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 08/16] s390x/css: Add a callback for when subchannel gets disabled Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 09/16] s390x/virtio-ccw: add virtio set-revision call Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 10/16] s390x/virtio-ccw: support virtio-1 set_vq format Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 11/16] virtio: disallow late feature changes for virtio-1 Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 12/16] virtio: allow to fail setting status Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 13/16] s390x/virtio-ccw: enable virtio 1.0 Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 14/16] virtio-net: no writeable mac for virtio-1 Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 15/16] virtio-net: support longer header Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16 ` [PATCH RFC v4 16/16] virtio-net: enable virtio 1.0 Cornelia Huck
2014-11-27 15:16 ` Cornelia Huck
2014-11-27 15:16   ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:24 ` [PATCH RFC v4 00/16] qemu: towards virtio-1 host support Michael S. Tsirkin
2014-11-27 15:24   ` [Qemu-devel] " Michael S. Tsirkin
2014-11-27 15:31   ` Cornelia Huck
2014-11-27 15:31     ` [Qemu-devel] " Cornelia Huck
2014-11-27 15:42     ` Michael S. Tsirkin
2014-11-27 15:42       ` [Qemu-devel] " Michael S. Tsirkin
2014-11-27 16:06       ` Cornelia Huck
2014-11-27 16:06       ` Cornelia Huck
2014-11-27 16:06         ` [Qemu-devel] " Cornelia Huck
2014-11-27 16:18         ` Michael S. Tsirkin
2014-11-27 16:18           ` [Qemu-devel] " Michael S. Tsirkin
2014-11-27 16:28           ` Cornelia Huck
2014-11-27 16:28             ` [Qemu-devel] " Cornelia Huck
2014-11-27 16:35             ` Michael S. Tsirkin
2014-11-27 16:35               ` [Qemu-devel] " Michael S. Tsirkin
2014-11-28  9:47               ` Cornelia Huck
2014-11-28  9:47                 ` [Qemu-devel] " Cornelia Huck
2014-11-28  9:47               ` Cornelia Huck
2014-11-27 16:38             ` Michael S. Tsirkin
2014-11-27 16:38               ` [Qemu-devel] " Michael S. Tsirkin
2014-11-28  9:50               ` Cornelia Huck
2014-11-28  9:50                 ` [Qemu-devel] " Cornelia Huck
2014-11-27 16:28           ` Cornelia Huck
2015-02-25  4:20 ` Rusty Russell [this message]
2015-02-25  4:20   ` [Qemu-devel] Qemu and virtio 1.0 Rusty Russell
2015-02-25  4:20   ` Rusty Russell
2015-02-25 11:26   ` Cornelia Huck
2015-02-25 11:26     ` [Qemu-devel] " Cornelia Huck
2015-03-02 11:43   ` Michael S. Tsirkin
2015-03-02 11:43     ` [Qemu-devel] " Michael S. Tsirkin
2015-03-02 12:00     ` Cornelia Huck
2015-03-02 12:00       ` [Qemu-devel] " Cornelia Huck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877fv6mxkp.fsf@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=cornelia.huck@de.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@linux.vnet.ibm.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.