All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Vivier <lvivier@redhat.com>
To: Greg Kurz <gkurz@linux.vnet.ibm.com>,
	"Michael S. Tsirkin" <mst@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 2/6] Revert "vhost-net: tell tap backend about the vnet endianness"
Date: Thu, 7 Jan 2016 20:52:04 +0100	[thread overview]
Message-ID: <568EC1E4.3050403@redhat.com> (raw)
In-Reply-To: <20160107113208.10897.13792.stgit@bahia.huguette.org>



On 07/01/2016 12:32, Greg Kurz wrote:
> This reverts commit 5be7d9f1b1452613b95c6ba70b8d7ad3d0797991.
> 
> Cross-endian is now configured by the core virtio-net code. We simply
> fall back on full emulation if the net backend cannot support the
> requested endianness for vnet headers.
> 
> Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
> ---
>  hw/net/vhost_net.c  |   33 +--------------------------------
>  hw/net/virtio-net.c |    7 +++++++
>  2 files changed, 8 insertions(+), 32 deletions(-)
> 
> diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
> index 318c3e6ad213..0c7362b7a772 100644
> --- a/hw/net/vhost_net.c
> +++ b/hw/net/vhost_net.c
> @@ -38,7 +38,6 @@
>  #include "standard-headers/linux/virtio_ring.h"
>  #include "hw/virtio/vhost.h"
>  #include "hw/virtio/virtio-bus.h"
> -#include "hw/virtio/virtio-access.h"
>  
>  struct vhost_net {
>      struct vhost_dev dev;
> @@ -199,27 +198,6 @@ static void vhost_net_set_vq_index(struct vhost_net *net, int vq_index)
>      net->dev.vq_index = vq_index;
>  }
>  
> -static int vhost_net_set_vnet_endian(VirtIODevice *dev, NetClientState *peer,
> -                                     bool set)
> -{
> -    int r = 0;
> -
> -    if (virtio_vdev_has_feature(dev, VIRTIO_F_VERSION_1) ||
> -        (virtio_legacy_is_cross_endian(dev) && !virtio_is_big_endian(dev))) {
> -        r = qemu_set_vnet_le(peer, set);
> -        if (r) {
> -            error_report("backend does not support LE vnet headers");
> -        }
> -    } else if (virtio_legacy_is_cross_endian(dev)) {
> -        r = qemu_set_vnet_be(peer, set);
> -        if (r) {
> -            error_report("backend does not support BE vnet headers");
> -        }
> -    }
> -
> -    return r;
> -}
> -
>  static int vhost_net_start_one(struct vhost_net *net,
>                                 VirtIODevice *dev)
>  {
> @@ -308,11 +286,6 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
>          goto err;
>      }
>  
> -    r = vhost_net_set_vnet_endian(dev, ncs[0].peer, true);
> -    if (r < 0) {
> -        goto err;
> -    }
> -
>      for (i = 0; i < total_queues; i++) {
>          vhost_net_set_vq_index(get_vhost_net(ncs[i].peer), i * 2);
>      }
> @@ -320,7 +293,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
>      r = k->set_guest_notifiers(qbus->parent, total_queues * 2, true);
>      if (r < 0) {
>          error_report("Error binding guest notifier: %d", -r);
> -        goto err_endian;
> +        goto err;
>      }
>  
>      for (i = 0; i < total_queues; i++) {
> @@ -342,8 +315,6 @@ err_start:
>          fprintf(stderr, "vhost guest notifier cleanup failed: %d\n", e);
>          fflush(stderr);
>      }
> -err_endian:
> -    vhost_net_set_vnet_endian(dev, ncs[0].peer, false);
>  err:
>      return r;
>  }
> @@ -366,8 +337,6 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
>          fflush(stderr);
>      }
>      assert(r >= 0);
> -
> -    assert(vhost_net_set_vnet_endian(dev, ncs[0].peer, false) >= 0);
>  }
>  
>  void vhost_net_cleanup(struct vhost_net *net)
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index d4cc94ea5e55..5a0ab6ad5bb5 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -128,6 +128,13 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
>      if (!n->vhost_started) {
>          int r, i;
>  
> +        if (n->needs_vnet_hdr_swap) {
> +            error_report("backend does not support %s vnet headers."
> +                         "falling back on userspace virtio",
> +                         virtio_is_big_endian(vdev) ? "BE" : "LE");
> +            return;
> +        }
> +

This is not part of the revert, perhaps this can go in PATCH 1/6 ?
In virtio_net_vnet_status() ?

>          /* Any packets outstanding? Purge them to avoid touching rings
>           * when vhost is running.
>           */
> 
> 

  reply	other threads:[~2016-01-07 19:52 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-07 11:31 [Qemu-devel] [PATCH 0/6] virtio/vhost cross-endian cleanup Greg Kurz
2016-01-07 11:32 ` [Qemu-devel] [PATCH 1/6] virtio-net: use the backend cross-endian capabilities Greg Kurz
2016-01-07 16:22   ` Laurent Vivier
2016-01-07 17:23     ` Greg Kurz
2016-01-07 18:32   ` Laurent Vivier
2016-01-08 14:19     ` Greg Kurz
2016-01-08 15:25       ` Laurent Vivier
2016-01-08 16:00         ` Greg Kurz
2016-01-07 11:32 ` [Qemu-devel] [PATCH 2/6] Revert "vhost-net: tell tap backend about the vnet endianness" Greg Kurz
2016-01-07 19:52   ` Laurent Vivier [this message]
2016-01-08  9:07     ` Greg Kurz
2016-01-08 10:11   ` Cornelia Huck
2016-01-08 10:26     ` Greg Kurz
2016-01-08 11:09       ` Cornelia Huck
2016-01-07 11:32 ` [Qemu-devel] [PATCH 3/6] virtio: drop the virtio_needs_swap() helper Greg Kurz
2016-01-07 19:55   ` Laurent Vivier
2016-01-08  9:16     ` Greg Kurz
2016-01-07 11:32 ` [Qemu-devel] [PATCH 4/6] virtio: move cross-endian helper to vhost Greg Kurz
2016-01-07 11:32 ` [Qemu-devel] [PATCH 5/6] vhost: move virtio 1.0 check to cross-endian helper Greg Kurz
2016-01-07 20:07   ` Laurent Vivier
2016-01-08  9:21     ` Greg Kurz
2016-01-08 10:07       ` Cornelia Huck
2016-01-08 10:22         ` Laurent Vivier
2016-01-07 11:32 ` [Qemu-devel] [PATCH 6/6] virtio: optimize virtio_access_is_big_endian() for little-endian targets Greg Kurz
2016-01-07 20:25   ` Laurent Vivier
2016-01-08  9:27     ` Greg Kurz

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=568EC1E4.3050403@redhat.com \
    --to=lvivier@redhat.com \
    --cc=gkurz@linux.vnet.ibm.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.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.