From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49684) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YMp9Q-0001yZ-8F for qemu-devel@nongnu.org; Sat, 14 Feb 2015 21:41:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YMp9O-0001qG-Pm for qemu-devel@nongnu.org; Sat, 14 Feb 2015 21:41:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:59625) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YMp9O-0001qC-IN for qemu-devel@nongnu.org; Sat, 14 Feb 2015 21:41:38 -0500 Date: Sun, 15 Feb 2015 02:49:29 +0008 From: Jason Wang Message-Id: <1423968089.10674.2@smtp.corp.redhat.com> In-Reply-To: <353871312.9426025.1423755698156.JavaMail.zimbra@redhat.com> References: <1423722005-6129-1-git-send-email-pagupta@redhat.com> <20150212102931.GA22283@redhat.com> <373579236.9177551.1423739188738.JavaMail.zimbra@redhat.com> <353871312.9426025.1423755698156.JavaMail.zimbra@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Subject: Re: [Qemu-devel] [RFC] net: 'Remove vhostforce option in addition to vhost param' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pankaj Gupta Cc: aliguori@amazon.com, qemu-devel@nongnu.org, stefanha@redhat.com, "Michael S. Tsirkin" On Thu, Feb 12, 2015 at 11:41 PM, Pankaj Gupta wrote: > >> >> > On Thu, Feb 12, 2015 at 11:50:05AM +0530, Pankaj Gupta wrote: >> > > vhostforce was added to enable use of vhost when >> > > guest don't have MSI-X support. >> > > Now, we have scenarios which dont use interrupts >> > > like DPDK and still use vhost. Also, performance of >> > > guests without MSI-X support is getting less popular. >> > > >> > > Its ok to remove this extra option and enable vhost >> > > on the basis of vhost=ON/OFF. >> > > >> > > Signed-off-by: Pankaj Gupta >> > >> > The patch doesn't seem to do what it says. >> > Did you try with a non MSIX guest and vhost=on, to check that >> > it actually runs vhost and not userspace virtio? >> >> No, I have not. I just did basic tested a new guest without >> vhostforce. >> I will test non-MSIX guest and share the result. > > I tested this with RHEL 4 guest which don't have MSI-X. Though vhost > gets > created but still userspace virtio-net code executes. > > So, vhostforce was added to disable vhost for non-MSI guest? In fact to enable vhost. > > I took the idea from KVM/Networking todo list. > > Do we have some other dependency before we want to remove vhostforce? > You may want to take a look at the vhost_dev->force and vhost_dev_query(). > >> >> > >> > > --- >> > > net/tap.c | 4 +--- >> > > net/vhost-user.c | 16 ++-------------- >> > > 2 files changed, 3 insertions(+), 17 deletions(-) >> > > >> > > diff --git a/net/tap.c b/net/tap.c >> > > index 1fe0edf..bd2efa9 100644 >> > > --- a/net/tap.c >> > > +++ b/net/tap.c >> > > @@ -634,13 +634,11 @@ static int net_init_tap_one(const >> NetdevTapOptions >> > > *tap, NetClientState *peer, >> > > } >> > > } >> > > >> > > - if (tap->has_vhost ? tap->vhost : >> > > - vhostfdname || (tap->has_vhostforce && >> tap->vhostforce)) { >> > > + if (tap->has_vhost ? tap->vhost : vhostfdname) { >> > > VhostNetOptions options; >> > > >> > > options.backend_type = VHOST_BACKEND_TYPE_KERNEL; >> > > options.net_backend = &s->nc; >> > > - options.force = tap->has_vhostforce && tap->vhostforce; >> > > >> > > if (tap->has_vhostfd || tap->has_vhostfds) { >> > > vhostfd = monitor_handle_fd_param(cur_mon, >> vhostfdname); >> > > diff --git a/net/vhost-user.c b/net/vhost-user.c >> > > index 24e050c..d2d7bf2 100644 >> > > --- a/net/vhost-user.c >> > > +++ b/net/vhost-user.c >> > > @@ -18,7 +18,6 @@ >> > > typedef struct VhostUserState { >> > > NetClientState nc; >> > > CharDriverState *chr; >> > > - bool vhostforce; >> > > VHostNetState *vhost_net; >> > > } VhostUserState; >> > > >> > > @@ -51,7 +50,6 @@ static int vhost_user_start(VhostUserState *s) >> > > options.backend_type = VHOST_BACKEND_TYPE_USER; >> > > options.net_backend = &s->nc; >> > > options.opaque = s->chr; >> > > - options.force = s->vhostforce; >> > > >> > > s->vhost_net = vhost_net_init(&options); >> > > >> > > @@ -133,8 +131,7 @@ static void net_vhost_user_event(void >> *opaque, int >> > > event) >> > > } >> > > >> > > static int net_vhost_user_init(NetClientState *peer, const >> char *device, >> > > - const char *name, >> CharDriverState *chr, >> > > - bool vhostforce) >> > > + const char *name, >> CharDriverState *chr) >> > > { >> > > NetClientState *nc; >> > > VhostUserState *s; >> > > @@ -149,7 +146,6 @@ static int >> net_vhost_user_init(NetClientState *peer, >> > > const char *device, >> > > /* We don't provide a receive callback */ >> > > s->nc.receive_disabled = 1; >> > > s->chr = chr; >> > > - s->vhostforce = vhostforce; >> > > >> > > qemu_chr_add_handlers(s->chr, NULL, NULL, >> net_vhost_user_event, s); >> > > >> > > @@ -230,7 +226,6 @@ int net_init_vhost_user(const >> NetClientOptions *opts, >> > > const char *name, >> > > { >> > > const NetdevVhostUserOptions *vhost_user_opts; >> > > CharDriverState *chr; >> > > - bool vhostforce; >> > > >> > > assert(opts->kind == NET_CLIENT_OPTIONS_KIND_VHOST_USER); >> > > vhost_user_opts = opts->vhost_user; >> > > @@ -247,12 +242,5 @@ int net_init_vhost_user(const >> NetClientOptions >> > > *opts, >> > > const char *name, >> > > return -1; >> > > } >> > > >> > > - /* vhostforce for non-MSIX */ >> > > - if (vhost_user_opts->has_vhostforce) { >> > > - vhostforce = vhost_user_opts->vhostforce; >> > > - } else { >> > > - vhostforce = false; >> > > - } >> > > - >> > > - return net_vhost_user_init(peer, "vhost_user", name, chr, >> > > vhostforce); >> > > + return net_vhost_user_init(peer, "vhost_user", name, chr); >> > > } >> > > -- >> > > 1.8.3.1 >> > >> > >> >