From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550166942647533.7130156134384; Thu, 14 Feb 2019 09:55:42 -0800 (PST) Received: from localhost ([127.0.0.1]:52486 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guLEb-0001Ox-Iy for importer@patchew.org; Thu, 14 Feb 2019 12:55:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4M-0002Xb-Sh for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvY-0003EB-3S for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:01 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:53646) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvX-0003CA-PH for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:00 -0500 Received: by mail-wm1-x344.google.com with SMTP id d15so7217460wmb.3 for ; Thu, 14 Feb 2019 09:35:59 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.35.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:35:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CO8uCpXPQgD/K9ZdLkjc3anMGawhMw7kw9o8aMPX+OA=; b=uWytmMgNxLT/RVzj5KeH/s3UBG1eaaUgX4JVLmfGKokx+8oJ0zj2JfrRUfY1/3pVWo vQzup5+X/JjM3tJMcZXwQ3iT1IBF0C2+MeyDzoZU1Co1GJEe1+yMzcEuW9hWee76mEK4 TfvU2/7AbD75AeQFMmdZrJ+lW+WsVpPApdN18WQQr6kLPUHksyfSuQHYZT7XgNC984a2 tgW26ZVV45DUbJBaBf+x5RT3mNl4u+OmdvqmP3/S9q0pf6mYVg6L43dCUGSeI8FeyDYR 6kD+Ee7t4rYySet+CXLxjyQN0mn72E4a8gZAUn0qg3fZi20r5Q/sFc3qmdX4SClZ6JdV iM4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=CO8uCpXPQgD/K9ZdLkjc3anMGawhMw7kw9o8aMPX+OA=; b=VwhYfjaldZWb/MlXyiaHQsYPLp+MmKep45ZpakiY/Tt7qe4kaxG1cUk5uzBifx/F+w Uge7UIhmrH7HJOotjapX/TODcQSdVgs8mJRoF4gKtcbklEx/ZgNG4CDCYyzsCwavrw2R NvgxDQzaMxVFcUZJw2/JHzlST34nFivl9423ZoXBKlREVLJcrUeWBvZz2O4S4bSgniAf KuGtq+wiY2fIS7RNoY+iGsPzH3OfRknC/bW8LEFqO7u5miWlY68oJOOjTjSeYc4CMioX 0LjgRT96FOeyBfgwlB8SAlACGhqOpiqfEn47iph4JDcqJtud13NxvJWHAjRhEZi7KmQT sp4A== X-Gm-Message-State: AHQUAuZS/zEb3th2a2+yk90ndOxuGD2rzksL51mBjmzpYxbeldpYKtfK 6LvpT87ql5ioHAnIrHK3hyoo6o6G X-Google-Smtp-Source: AHgI3IYTsYn/xqjgEhmrQuHSj/I2lWpM8+KBooVc66l6uczHR/i+ASAg5T+EFIwaLg5UtW1xHuWbVw== X-Received: by 2002:a7b:cb9a:: with SMTP id m26mr3727243wmi.68.1550165758441; Thu, 14 Feb 2019 09:35:58 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:48 +0100 Message-Id: <1550165756-21617-2-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH 1/9] vhost-net: move stubs to a separate file X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) There is no reason for CONFIG_VHOST_NET to be specific to a single target; it is a host feature that can be add to all targets, as long as they support the virtio-net device. Currently CONFIG_VHOST_NET depends on CONFIG_KVM, but ioeventfd support is present in the core memory API and works with other accelerators as well. As a first step, move the vhost-net stubs to a separate file. Later, they will become conditional on CONFIG_VIRTIO_NET, which is not available in .c files. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Thomas Huth Signed-off-by: Paolo Bonzini Message-Id: <1543851204-41186-2-git-send-email-pbonzini@redhat.com> --- hw/net/Makefile.objs | 4 ++- hw/net/vhost_net-stub.c | 92 +++++++++++++++++++++++++++++++++++++++++++++= ++++ hw/net/vhost_net.c | 74 --------------------------------------- 3 files changed, 95 insertions(+), 75 deletions(-) create mode 100644 hw/net/vhost_net-stub.c diff --git a/hw/net/Makefile.objs b/hw/net/Makefile.objs index a43351a..acfaea5 100644 --- a/hw/net/Makefile.objs +++ b/hw/net/Makefile.objs @@ -37,7 +37,9 @@ obj-$(CONFIG_PSERIES) +=3D spapr_llan.o obj-$(CONFIG_XILINX_ETHLITE) +=3D xilinx_ethlite.o =20 obj-$(CONFIG_VIRTIO_NET) +=3D virtio-net.o -obj-y +=3D vhost_net.o +obj-$(CONFIG_VHOST_NET) +=3D vhost_net.o +common-obj-$(call lnot,$(CONFIG_VHOST_NET)) +=3D vhost_net-stub.o +common-obj-$(CONFIG_ALL) +=3D vhost_net-stub.o =20 obj-$(CONFIG_ETSEC) +=3D fsl_etsec/etsec.o fsl_etsec/registers.o \ fsl_etsec/rings.o fsl_etsec/miim.o diff --git a/hw/net/vhost_net-stub.c b/hw/net/vhost_net-stub.c new file mode 100644 index 0000000..aac0e98 --- /dev/null +++ b/hw/net/vhost_net-stub.c @@ -0,0 +1,92 @@ +/* + * vhost-net support + * + * Copyright Red Hat, Inc. 2010 + * + * Authors: + * Michael S. Tsirkin + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "net/net.h" +#include "net/tap.h" +#include "net/vhost-user.h" + +#include "hw/virtio/virtio-net.h" +#include "net/vhost_net.h" +#include "qemu/error-report.h" + + +uint64_t vhost_net_get_max_queues(VHostNetState *net) +{ + return 1; +} + +struct vhost_net *vhost_net_init(VhostNetOptions *options) +{ + error_report("vhost-net support is not compiled in"); + return NULL; +} + +int vhost_net_start(VirtIODevice *dev, + NetClientState *ncs, + int total_queues) +{ + return -ENOSYS; +} +void vhost_net_stop(VirtIODevice *dev, + NetClientState *ncs, + int total_queues) +{ +} + +void vhost_net_cleanup(struct vhost_net *net) +{ +} + +uint64_t vhost_net_get_features(struct vhost_net *net, uint64_t features) +{ + return features; +} + +void vhost_net_ack_features(struct vhost_net *net, uint64_t features) +{ +} + +uint64_t vhost_net_get_acked_features(VHostNetState *net) +{ + return 0; +} + +bool vhost_net_virtqueue_pending(VHostNetState *net, int idx) +{ + return false; +} + +void vhost_net_virtqueue_mask(VHostNetState *net, VirtIODevice *dev, + int idx, bool mask) +{ +} + +int vhost_net_notify_migration_done(struct vhost_net *net, char* mac_addr) +{ + return -1; +} + +VHostNetState *get_vhost_net(NetClientState *nc) +{ + return 0; +} + +int vhost_set_vring_enable(NetClientState *nc, int enable) +{ + return 0; +} + +int vhost_net_set_mtu(struct vhost_net *net, uint16_t mtu) +{ + return 0; +} diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index e037db6..b901306 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -23,7 +23,6 @@ #include "qemu/error-report.h" =20 =20 -#ifdef CONFIG_VHOST_NET #include #include #include @@ -449,76 +448,3 @@ int vhost_net_set_mtu(struct vhost_net *net, uint16_t = mtu) =20 return vhost_ops->vhost_net_set_mtu(&net->dev, mtu); } - -#else -uint64_t vhost_net_get_max_queues(VHostNetState *net) -{ - return 1; -} - -struct vhost_net *vhost_net_init(VhostNetOptions *options) -{ - error_report("vhost-net support is not compiled in"); - return NULL; -} - -int vhost_net_start(VirtIODevice *dev, - NetClientState *ncs, - int total_queues) -{ - return -ENOSYS; -} -void vhost_net_stop(VirtIODevice *dev, - NetClientState *ncs, - int total_queues) -{ -} - -void vhost_net_cleanup(struct vhost_net *net) -{ -} - -uint64_t vhost_net_get_features(struct vhost_net *net, uint64_t features) -{ - return features; -} - -void vhost_net_ack_features(struct vhost_net *net, uint64_t features) -{ -} - -uint64_t vhost_net_get_acked_features(VHostNetState *net) -{ - return 0; -} - -bool vhost_net_virtqueue_pending(VHostNetState *net, int idx) -{ - return false; -} - -void vhost_net_virtqueue_mask(VHostNetState *net, VirtIODevice *dev, - int idx, bool mask) -{ -} - -int vhost_net_notify_migration_done(struct vhost_net *net, char* mac_addr) -{ - return -1; -} - -VHostNetState *get_vhost_net(NetClientState *nc) -{ - return 0; -} - -int vhost_set_vring_enable(NetClientState *nc, int enable) -{ - return 0; -} - -int vhost_net_set_mtu(struct vhost_net *net, uint16_t mtu) -{ - return 0; -} -#endif --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550167663149369.7066721694067; Thu, 14 Feb 2019 10:07:43 -0800 (PST) Received: from localhost ([127.0.0.1]:52675 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guLQB-00027j-WD for importer@patchew.org; Thu, 14 Feb 2019 13:07:40 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33937) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4L-0002MK-KX for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvY-0003Fr-TB for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:01 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:38037) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvY-0003EA-Kv for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:00 -0500 Received: by mail-wm1-x344.google.com with SMTP id v26so6926006wmh.3 for ; Thu, 14 Feb 2019 09:36:00 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.35.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:35:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1AxkKgHzbIrTn7/20KQBIiQCEIwsSnkeQY2SKPZNUho=; b=aeuA9o9Mro2huxENIyT/ZoH0D3Xj5YDD0GxKR6mKkJcPFA1AqWcVSPnWBymnWV8dKA 4HWnT+m7/WdsaLzX55J/St8qQ8IQkmcBC7jTLsAv2I1lXb0jJICvKz2eIwW9j5NSPnj1 VuKWDhQEAwORpwPXEZuly7igRNfNeEL9xeQFzCdbF/pM1eR9E7XPMFfUNzQsDvTqIFNf 6XoMYcschjlwFUjkwH0/3QcOZvDZUZ0oIMOTE++L2xNL8xDUhUeM+qVV7JzI9tm3/jmL S4PRB1i6dn6fb1+excgIm8hEe455K6EamyaCc/y+pGj9NWQNNR1HO/Eo4ILwAGWaxj7p OFIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=1AxkKgHzbIrTn7/20KQBIiQCEIwsSnkeQY2SKPZNUho=; b=bGhlZ8hfmzikDhAKmLOzeuVBiFTRDH7KZRZpNsMOnFDbwVYtHkOhA/CpqwCtLbar5M 1TusAT8Co9DwB1+qeQJpPbJTzNpvpiB/SM8Rkzf7iI32m2TMz2dpPiwiQe48jlzexUzH Esk1o3xc3t/naQqKvO3PulP+xjImiCcaKVcVa5EN/12S95nzXJBo0m6v1yYWVdBdiN/U lxdPQlhOhjBwmrct27EcDPjSKSr+VBkny+GmfctoOLRrcVUVIvfI4DLFIwulxMVUxv7a 2bDhp2Aq0jBij4ZFK/f6N5dwm28TCLfHGElj/ABqhelBj9L5mCJ72bl4q+fTHidA9JYE uC4g== X-Gm-Message-State: AHQUAub5Uc5ENuwJtLzF899uLuOjsaK48Yr5NwCLQaa0xFFZD9lxZOqR 544OW01U/k+/3mt4arU+ouwYjuAi X-Google-Smtp-Source: AHgI3IY4aYlnQjbuSrXvLbjFse4nZlJSkkzeySlq/WHohgJA8pGoKKcd4nXYYj+tRYHcW0lsS6XhyQ== X-Received: by 2002:a7b:cf3a:: with SMTP id m26mr1538314wmg.144.1550165759360; Thu, 14 Feb 2019 09:35:59 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:49 +0100 Message-Id: <1550165756-21617-3-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH 2/9] vhost-net-user: add stubs for when no virtio-net device is present X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) hw/net/vhost_net.c needs functions that are declared in net/vhost-user.c: t= he vhost-user code is always compiled into QEMU, only the constructor net_init_vhost_user is unreachable. Also, net/vhost-user.c needs functions declared in hw/virtio/vhost-stub.c even if no virtio device exists. Break this dependency. First, add a minimal version of net/vhost-user.c, with no functionality and no dependency on vhost code. Second, #ifdef out the calls back to net/vhost-user.c from hw/net/vhost_net.c. While at it, this patch fixes the CONFIG_VHOST_NET_USE*D* typo. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <1543851204-41186-3-git-send-email-pbonzini@redhat.com> Reviewed-by: Thomas Huth Signed-off-by: Paolo Bonzini --- configure | 2 +- hw/net/vhost_net.c | 4 ++++ net/Makefile.objs | 4 +++- net/net.c | 2 +- net/vhost-user-stub.c | 23 +++++++++++++++++++++++ 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 net/vhost-user-stub.c diff --git a/configure b/configure index fbd0825..7ac76ec 100755 --- a/configure +++ b/configure @@ -6579,7 +6579,7 @@ if test "$vhost_scsi" =3D "yes" ; then echo "CONFIG_VHOST_SCSI=3Dy" >> $config_host_mak fi if test "$vhost_net" =3D "yes" && test "$vhost_user" =3D "yes"; then - echo "CONFIG_VHOST_NET_USED=3Dy" >> $config_host_mak + echo "CONFIG_VHOST_NET_USER=3Dy" >> $config_host_mak fi if test "$vhost_crypto" =3D "yes" ; then echo "CONFIG_VHOST_CRYPTO=3Dy" >> $config_host_mak diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index b901306..2a300ee 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -193,6 +193,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *optio= ns) } =20 /* Set sane init value. Override when guest acks. */ +#ifdef CONFIG_VHOST_NET_USER if (net->nc->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_USER) { features =3D vhost_user_get_acked_features(net->nc); if (~net->dev.features & features) { @@ -202,6 +203,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *optio= ns) goto fail; } } +#endif =20 vhost_net_ack_features(net, features); =20 @@ -413,10 +415,12 @@ VHostNetState *get_vhost_net(NetClientState *nc) case NET_CLIENT_DRIVER_TAP: vhost_net =3D tap_get_vhost_net(nc); break; +#ifdef CONFIG_VHOST_NET_USER case NET_CLIENT_DRIVER_VHOST_USER: vhost_net =3D vhost_user_get_vhost_net(nc); assert(vhost_net); break; +#endif default: break; } diff --git a/net/Makefile.objs b/net/Makefile.objs index b2bf88a..df2b409 100644 --- a/net/Makefile.objs +++ b/net/Makefile.objs @@ -3,7 +3,9 @@ common-obj-y +=3D socket.o common-obj-y +=3D dump.o common-obj-y +=3D eth.o common-obj-$(CONFIG_L2TPV3) +=3D l2tpv3.o -common-obj-$(CONFIG_POSIX) +=3D vhost-user.o +common-obj-$(call land,$(CONFIG_VIRTIO_NET),$(CONFIG_VHOST_NET_USER)) +=3D= vhost-user.o +common-obj-$(call land,$(call lnot,$(CONFIG_VIRTIO_NET)),$(CONFIG_VHOST_NE= T_USER)) +=3D vhost-user-stub.o +common-obj-$(CONFIG_ALL) +=3D vhost-user-stub.o common-obj-$(CONFIG_SLIRP) +=3D slirp.o common-obj-$(CONFIG_VDE) +=3D vde.o common-obj-$(CONFIG_NETMAP) +=3D netmap.o diff --git a/net/net.c b/net/net.c index 5dcff7f..f3a3c54 100644 --- a/net/net.c +++ b/net/net.c @@ -961,7 +961,7 @@ static int (* const net_client_init_fun[NET_CLIENT_DRIV= ER__MAX])( [NET_CLIENT_DRIVER_BRIDGE] =3D net_init_bridge, #endif [NET_CLIENT_DRIVER_HUBPORT] =3D net_init_hubport, -#ifdef CONFIG_VHOST_NET_USED +#ifdef CONFIG_VHOST_NET_USER [NET_CLIENT_DRIVER_VHOST_USER] =3D net_init_vhost_user, #endif #ifdef CONFIG_L2TPV3 diff --git a/net/vhost-user-stub.c b/net/vhost-user-stub.c new file mode 100644 index 0000000..52ab4e1 --- /dev/null +++ b/net/vhost-user-stub.c @@ -0,0 +1,23 @@ +/* + * vhost-user-stub.c + * + * Copyright (c) 2018 Red Hat, Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "clients.h" +#include "net/vhost_net.h" +#include "net/vhost-user.h" +#include "qemu/error-report.h" +#include "qapi/error.h" + +int net_init_vhost_user(const Netdev *netdev, const char *name, + NetClientState *peer, Error **errp) +{ + error_setg(errp, "vhost-user requires frontend driver virtio-net-*"); + return -1; +} --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550166478584179.43329540137825; Thu, 14 Feb 2019 09:47:58 -0800 (PST) Received: from localhost ([127.0.0.1]:52360 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL72-00048I-B6 for importer@patchew.org; Thu, 14 Feb 2019 12:47:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4A-0002Xb-Cp for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:44:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvZ-0003H2-Sz for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:08 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:35142) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvZ-0003GF-Lu for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:01 -0500 Received: by mail-wm1-x344.google.com with SMTP id t200so6942890wmt.0 for ; Thu, 14 Feb 2019 09:36:01 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.35.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:35:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Tcv40cdkd1lhXrxagJdPoqmTAfMygrznva8pK+fa50o=; b=X3jKl5Nzg7eLXHU22ufOh7PETk0+XE7E6QzOrTer1R9Z4GkeKgL9GeuqJjJICC0wiZ 00ncy+WjjYGIVxhJxJ+Xc+6+Tq+2iMvje3FM5qWlXEUhjGVC3W8O8OSrdCZoVRXcLs1P ThkNyxv7LQB6pFC2Xsle2moyfEvYQH0NRKVJ0vb10+N+8TiMw7sb6WsU02xiHslVm0TY A0xEv5Tro/qLqaBfJ8NVj0Hy+r+ESs+V5eu2Yrvb2of+gKJyWPPYUJX3cHjlKvAQ4ryx KtBryonWnv+M0kv8Ec6jWMj8Za3zhNpU4q+jZ61qT2uq4Li6/Rp5ofQP5DlpVm5HhB9G 4/fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Tcv40cdkd1lhXrxagJdPoqmTAfMygrznva8pK+fa50o=; b=Db6D8yV3jv8ELttvnx74Pn5weoeSDuuaEcKcp/YVy3Rl3o5/dNCztQvmq9no9qfAfX Yj0YPux2tnLILI6TST0APrsb+LHqZKO7joTrIYJDkDVzSYOvV6EBTmudK6efFkaII3M7 xEeVUAW408Bupe2g36laYi3vJz3rkjRxPoH/IMBIS5IvsBPZmswZvaXf8wO8S7106OEP XbD9H6Znr+jPt4U1WlrZfmF6g3RiENaHMhbJvD7eJaPc3ZG94ZXcWT7ye4EnV6yITxNd VMcC7wInR3veANqJrKjEe0RG1EixOR/Qf2+IO/1D3JGqwY93qbDb26An5F+GRXlRhytr 9u5g== X-Gm-Message-State: AHQUAuZCkM+4eAhX/GGkXccykSWDFIM5xEPd2hO+MnzlkrQjOQHAu3iW CQqDsHthWBbXO/2JIteSM0KFU+4q X-Google-Smtp-Source: AHgI3IaByHAvnIGSivGrOeq6nwyNUwg8eE7r1AZiQgLIUDghtcJljOENGGhIzhRkXZoVrYYuBYUTOg== X-Received: by 2002:a1c:f916:: with SMTP id x22mr3746090wmh.87.1550165760425; Thu, 14 Feb 2019 09:36:00 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:50 +0100 Message-Id: <1550165756-21617-4-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH 3/9] vhost: restrict Linux dependency to kernel vhost X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) vhost-user does not depend on Linux; it can run on any POSIX system. Restr= ict vhost-kernel to Linux in hw/virtio/vhost-backend.c, everything else can be compiled on all POSIX systems. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Thomas Huth Message-Id: <1543851204-41186-4-git-send-email-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini --- backends/Makefile.objs | 5 ++--- default-configs/virtio.mak | 4 ++-- hw/net/vhost_net.c | 3 +-- hw/virtio/Makefile.objs | 8 +++++--- hw/virtio/vhost-backend.c | 12 ++++++++++-- hw/virtio/vhost-user.c | 13 ++++++++++++- hw/virtio/vhost.c | 2 +- 7 files changed, 33 insertions(+), 14 deletions(-) diff --git a/backends/Makefile.objs b/backends/Makefile.objs index 717fcbd..ff619d3 100644 --- a/backends/Makefile.objs +++ b/backends/Makefile.objs @@ -9,10 +9,9 @@ common-obj-$(CONFIG_POSIX) +=3D hostmem-file.o common-obj-y +=3D cryptodev.o common-obj-y +=3D cryptodev-builtin.o =20 -ifeq ($(CONFIG_VIRTIO),y) +ifeq ($(CONFIG_VIRTIO_CRYPTO),y) common-obj-y +=3D cryptodev-vhost.o -common-obj-$(call land,$(CONFIG_VHOST_USER),$(CONFIG_LINUX)) +=3D \ - cryptodev-vhost-user.o +common-obj-$(CONFIG_VHOST_CRYPTO) +=3D cryptodev-vhost-user.o endif =20 common-obj-$(CONFIG_LINUX) +=3D hostmem-memfd.o diff --git a/default-configs/virtio.mak b/default-configs/virtio.mak index ecb4420..b653aa0 100644 --- a/default-configs/virtio.mak +++ b/default-configs/virtio.mak @@ -1,5 +1,5 @@ -CONFIG_VHOST_USER_SCSI=3D$(call land,$(CONFIG_VHOST_USER),$(CONFIG_LINUX)) -CONFIG_VHOST_USER_BLK=3D$(call land,$(CONFIG_VHOST_USER),$(CONFIG_LINUX)) +CONFIG_VHOST_USER_SCSI=3D$(CONFIG_VHOST_USER) +CONFIG_VHOST_USER_BLK=3D$(CONFIG_VHOST_USER) CONFIG_VIRTIO=3Dy CONFIG_VIRTIO_9P=3D$(CONFIG_VIRTFS) CONFIG_VIRTIO_BALLOON=3Dy diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index 2a300ee..ae3ca23 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -18,14 +18,13 @@ #include "net/tap.h" #include "net/vhost-user.h" =20 +#include "standard-headers/linux/vhost_types.h" #include "hw/virtio/virtio-net.h" #include "net/vhost_net.h" #include "qemu/error-report.h" =20 =20 -#include #include -#include #include #include #include diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index d335dd0..ce542e7 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -2,15 +2,18 @@ ifeq ($(CONFIG_VIRTIO),y) common-obj-y +=3D virtio-bus.o obj-y +=3D virtio.o =20 +obj-$(call lor,$(CONFIG_VHOST_USER),$(CONFIG_LINUX)) +=3D vhost.o vhost-ba= ckend.o +common-obj-$(call lnot,$(call lor,$(CONFIG_VHOST_USER),$(CONFIG_LINUX))) += =3D vhost-stub.o +obj-$(CONFIG_VHOST_USER) +=3D vhost-user.o + common-obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng.o common-obj-$(CONFIG_VIRTIO_PCI) +=3D virtio-pci.o common-obj-$(CONFIG_VIRTIO_MMIO) +=3D virtio-mmio.o obj-$(CONFIG_VIRTIO_BALLOON) +=3D virtio-balloon.o obj-$(CONFIG_VIRTIO_CRYPTO) +=3D virtio-crypto.o obj-$(call land,$(CONFIG_VIRTIO_CRYPTO),$(CONFIG_VIRTIO_PCI)) +=3D virtio-= crypto-pci.o - -obj-$(CONFIG_LINUX) +=3D vhost.o vhost-backend.o vhost-user.o obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock.o + ifeq ($(CONFIG_VIRTIO_PCI),y) obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o obj-$(CONFIG_VHOST_USER_BLK) +=3D vhost-user-blk-pci.o @@ -28,5 +31,4 @@ obj-$(CONFIG_VIRTIO_SERIAL) +=3D virtio-serial-pci.o endif endif =20 -common-obj-$(call lnot,$(call land,$(CONFIG_VIRTIO),$(CONFIG_LINUX))) +=3D= vhost-stub.o common-obj-$(CONFIG_ALL) +=3D vhost-stub.o diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c index 7f09efa..e0f0bb7 100644 --- a/hw/virtio/vhost-backend.c +++ b/hw/virtio/vhost-backend.c @@ -9,11 +9,14 @@ */ =20 #include "qemu/osdep.h" -#include -#include #include "hw/virtio/vhost.h" #include "hw/virtio/vhost-backend.h" #include "qemu/error-report.h" +#include "standard-headers/linux/vhost_types.h" + +#ifdef CONFIG_LINUX +#include +#include =20 static int vhost_kernel_call(struct vhost_dev *dev, unsigned long int requ= est, void *arg) @@ -265,18 +268,23 @@ static const VhostOps kernel_ops =3D { .vhost_set_iotlb_callback =3D vhost_kernel_set_iotlb_callback, .vhost_send_device_iotlb_msg =3D vhost_kernel_send_device_iotlb_ms= g, }; +#endif =20 int vhost_set_backend_type(struct vhost_dev *dev, VhostBackendType backend= _type) { int r =3D 0; =20 switch (backend_type) { +#ifdef CONFIG_LINUX case VHOST_BACKEND_TYPE_KERNEL: dev->vhost_ops =3D &kernel_ops; break; +#endif +#ifdef CONFIG_VHOST_USER case VHOST_BACKEND_TYPE_USER: dev->vhost_ops =3D &user_ops; break; +#endif default: error_report("Unknown vhost backend type"); r =3D -1; diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 564a31d..0d6c64e 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -27,8 +27,12 @@ #include #include #include -#include + +#include "standard-headers/linux/vhost_types.h" + +#ifdef CONFIG_LINUX #include +#endif =20 #define VHOST_MEMORY_MAX_NREGIONS 8 #define VHOST_USER_F_PROTOCOL_FEATURES 30 @@ -1110,6 +1114,7 @@ out: return ret; } =20 +#ifdef CONFIG_LINUX /* * Called back from the postcopy fault thread when a fault is received on = our * ufd. @@ -1177,6 +1182,7 @@ static int vhost_user_postcopy_waker(struct PostCopyF= D *pcfd, RAMBlock *rb, trace_vhost_user_postcopy_waker_nomatch(qemu_ram_get_idstr(rb), offset= ); return 0; } +#endif =20 /* * Called at the start of an inbound postcopy on reception of the @@ -1184,6 +1190,7 @@ static int vhost_user_postcopy_waker(struct PostCopyF= D *pcfd, RAMBlock *rb, */ static int vhost_user_postcopy_advise(struct vhost_dev *dev, Error **errp) { +#ifdef CONFIG_LINUX struct vhost_user *u =3D dev->opaque; CharBackend *chr =3D u->user->chr; int ufd; @@ -1227,6 +1234,10 @@ static int vhost_user_postcopy_advise(struct vhost_d= ev *dev, Error **errp) u->postcopy_fd.idstr =3D "vhost-user"; /* Need to find unique name */ postcopy_register_shared_ufd(&u->postcopy_fd); return 0; +#else + error_setg(errp, "Postcopy not supported on non-Linux systems"); + return -1; +#endif } =20 /* diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 569c405..311432f 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -21,7 +21,7 @@ #include "qemu/range.h" #include "qemu/error-report.h" #include "qemu/memfd.h" -#include +#include "standard-headers/linux/vhost_types.h" #include "exec/address-spaces.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-access.h" --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550167079088241.94962231623776; Thu, 14 Feb 2019 09:57:59 -0800 (PST) Received: from localhost ([127.0.0.1]:52524 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guLGg-00039p-Qe for importer@patchew.org; Thu, 14 Feb 2019 12:57:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33906) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4K-0002HG-Ax for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKva-0003IO-OO for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:08 -0500 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:53645) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKva-0003H9-HJ for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:02 -0500 Received: by mail-wm1-x342.google.com with SMTP id d15so7217615wmb.3 for ; Thu, 14 Feb 2019 09:36:02 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.36.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:36:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5rrzvUkpuCnqMHM9DLoYJ4yP3OmI6m5/oEvaZDvNdUg=; b=utEKOGNnLANlWXRe9GRHUPrUi98Bdv/lcye6nLJdhs+RGM9AW8/b1y7SuJ5o6NZw06 HZ7nBVEGAM9oN0A6xEHhLSQ/fzTmF5Attzq2Ej3wz7f21qbge4qAUo093+GN+xUa8Wu2 8nL9TMs5NRExOr6s5QKfsNjZhJUP6NSkDKBYvNhH2q5jF7Ht6vtnJI8BBaZlQ4c4iaoF H/EgRt3wACz+6nclappz/h5hh7XL/NqqOFk+BObkURRG8dK6IUI+F1CGUAEyyCJDd0/U pmBWKJzZGekEYMMfMWC2SkbzVr09S9F9sUKaAoT7KkCqET6HdxGt4QSwbGGpwxuVdm1P oWtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=5rrzvUkpuCnqMHM9DLoYJ4yP3OmI6m5/oEvaZDvNdUg=; b=kAv/GNIPqiaITi4UH1QrbbC5u8TO+wsivs1z1e7BW3TkIeucwW342VNgigLx/TQcHE 2ChRvY6DZVq/1I9QFFcgbyVEPMpGC0emJsarDoO3sT9igh2Wn6oPHz9NRV1cMlcD0JQT PIk4oIvQfyh66EIrs9EOqvmpyWGgsIdDNATUbwcwztzbAYY0g5d4M5txOGE0vSDb2RWV cG/kyhMITcLLpjdxpzqGU1LOGoyItlN7nOO4xDMZt9IJNGM7sOEDu7W6nqPyZscu5w1Q mEy7BFJOsBGWWVYneXjw1EAanR2OS6KjER5u/kafDwVdbPyfoxUy4wkkzChF575x7vZT IGcg== X-Gm-Message-State: AHQUAuaSp60V+4EhXUod271w1y8wUZxKMALjAm5mq1J5l6DxiPKZFKOl PnNq89q0IJy8ianuNvv4yS0w5Odj X-Google-Smtp-Source: AHgI3IYX9ZqttL0Srolpt4xgBVSNSqABBREHUZlp0wCjSsKx9Y0zI0jyzVMutb2xGQRTA762OgItyA== X-Received: by 2002:a1c:4006:: with SMTP id n6mr3704118wma.137.1550165761343; Thu, 14 Feb 2019 09:36:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:51 +0100 Message-Id: <1550165756-21617-5-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 Subject: [Qemu-devel] [PATCH 4/9] vhost-user: support cross-endian vnet headers X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) vhost-user already has a way to communicate the endianness of the guest via the vring endianness messages. The vring endianness always matches the vnet header endianness so there is no need to do anything else in the backend. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini Message-Id: <1543851204-41186-9-git-send-email-pbonzini@redhat.com> --- net/vhost-user.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/net/vhost-user.c b/net/vhost-user.c index a39f9c9..cd9659d 100644 --- a/net/vhost-user.c +++ b/net/vhost-user.c @@ -172,6 +172,17 @@ static void net_vhost_user_cleanup(NetClientState *nc) qemu_purge_queued_packets(nc); } =20 +static int vhost_user_set_vnet_endianness(NetClientState *nc, + bool enable) +{ + /* Nothing to do. If the server supports + * VHOST_USER_PROTOCOL_F_CROSS_ENDIAN, it will get the + * vnet header endianness from there. If it doesn't, negotiation + * fails. + */ + return 0; +} + static bool vhost_user_has_vnet_hdr(NetClientState *nc) { assert(nc->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_USER); @@ -193,6 +204,8 @@ static NetClientInfo net_vhost_user_info =3D { .cleanup =3D net_vhost_user_cleanup, .has_vnet_hdr =3D vhost_user_has_vnet_hdr, .has_ufo =3D vhost_user_has_ufo, + .set_vnet_be =3D vhost_user_set_vnet_endianness, + .set_vnet_le =3D vhost_user_set_vnet_endianness, }; =20 static gboolean net_vhost_user_watch(GIOChannel *chan, GIOCondition cond, --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550167474834355.15210327754437; Thu, 14 Feb 2019 10:04:34 -0800 (PST) Received: from localhost ([127.0.0.1]:52615 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guLN6-00080E-Oz for importer@patchew.org; Thu, 14 Feb 2019 13:04:28 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33906) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4L-0002HG-Ao for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvb-0003Kf-Pd for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:04 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:40845) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvb-0003Ja-Iq for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:03 -0500 Received: by mail-wm1-x344.google.com with SMTP id q21so6915494wmc.5 for ; Thu, 14 Feb 2019 09:36:03 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.36.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:36:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aThtvnFfUXeqvUfCCRO64AzyU46KOukxHCy+hPO4KyM=; b=QdT3tDbH6hGYKxJz9QzWtkMVvx57Rr9ZNlbWGP4I850SNjJhfWVDzh6OsFbnmJ3Aaq ExtaBFVOjbtN6glLY9Qlr7K5fK/jr1oaagfeLImhSTA1dlrX83eiAc6dYxdZm8NL6knj fMVmJarWR30mgq5O8ihrfQiUM5t1zqT841Ce28tyvn6K3YVd3hWsbvK9eyYAfwYZhUOg UPBvgdNJ360isKXmNhnJ+SwHDNyGnfsQGh6uA1xlRiNme/klLbm78znMP9Wc0Pe2mH9F gOpiH3fLTjA+9X0PvsHAiS7U5v6yn1930aO8LQqF3oPO0WScLOdxxa+q06HwMV0zDAt1 ylLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=aThtvnFfUXeqvUfCCRO64AzyU46KOukxHCy+hPO4KyM=; b=WQ3ayZKRbU8h1p0DdbiRxrNBzAJW6qTaJgK5SJXcnJPTovxyuKM4O5x0vuMAhWDvN4 0opMJ/KHqHKV5a8CNINgkMWnvhqTCVmq1xLDtrTV7C6uvAnF5VZVkBzlmSGj6clTlfK0 QJpWso8bznwgfUPizp3zJsn8NWeUzlztaLgiGwrjxBCYMCIl8QbdOZgiPe5fqGNrEiCC 24D96NsM+a/b6l7pUv/u8tqAZ3NiGddF4RHeVLK3uWmB183Orn2TpynTqKKDzRSx/rWo H4DGdC+a92Lgv/wIcrK36SDwTobFvUmyU7FbCpKjX3bxXqSfMLdZE7hHNo0cZ/kB/lq0 bdMw== X-Gm-Message-State: AHQUAualw31JmRQu+ncYyOdoeabwgh/ctE9eob8PuyoMQjY/AlFVhq6G mMFXsDnGMEC3A2CVNDhPXEAtTd8H X-Google-Smtp-Source: AHgI3Ia0KM/9I1OHZalCQS7qxKrdbSMslXv8Vvp7ENFpzwgH8txIp3uSqzqm3oourAnhOaI35j86Gg== X-Received: by 2002:a7b:c30b:: with SMTP id k11mr3582985wmj.65.1550165762297; Thu, 14 Feb 2019 09:36:02 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:52 +0100 Message-Id: <1550165756-21617-6-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH 5/9] vhost-net: compile it on all targets that have virtio-net. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This shows a preexisting bug: if a KVM target did not have virtio-net enabl= ed, it would fail with undefined symbols when vhost was enabled. This must now be fixed, lest targets that have no virtio-net fail to compile. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Paolo Bonzini Reviewed-by: Thomas Huth Message-Id: <1543851204-41186-5-git-send-email-pbonzini@redhat.com> --- configure | 11 ++++------- hw/net/Makefile.objs | 4 ++-- hw/net/vhost_net.c | 4 +--- include/exec/poison.h | 1 - tests/Makefile.include | 5 +---- tests/vhost-user-test.c | 16 +++++++++++----- 6 files changed, 19 insertions(+), 22 deletions(-) diff --git a/configure b/configure index 7ac76ec..4553c17 100755 --- a/configure +++ b/configure @@ -6578,7 +6578,10 @@ fi if test "$vhost_scsi" =3D "yes" ; then echo "CONFIG_VHOST_SCSI=3Dy" >> $config_host_mak fi -if test "$vhost_net" =3D "yes" && test "$vhost_user" =3D "yes"; then +if test "$vhost_net" =3D "yes" ; then + echo "CONFIG_VHOST_NET=3Dy" >> $config_host_mak +fi +if test "$vhost_net_user" =3D "yes" ; then echo "CONFIG_VHOST_NET_USER=3Dy" >> $config_host_mak fi if test "$vhost_crypto" =3D "yes" ; then @@ -7354,12 +7357,6 @@ if supported_xen_target $target; then fi if supported_kvm_target $target; then echo "CONFIG_KVM=3Dy" >> $config_target_mak - if test "$vhost_net" =3D "yes" ; then - echo "CONFIG_VHOST_NET=3Dy" >> $config_target_mak - if test "$vhost_user" =3D "yes" ; then - echo "CONFIG_VHOST_USER_NET_TEST_$target_name=3Dy" >> $config_= host_mak - fi - fi fi if supported_hax_target $target; then echo "CONFIG_HAX=3Dy" >> $config_target_mak diff --git a/hw/net/Makefile.objs b/hw/net/Makefile.objs index acfaea5..ea63715 100644 --- a/hw/net/Makefile.objs +++ b/hw/net/Makefile.objs @@ -37,8 +37,8 @@ obj-$(CONFIG_PSERIES) +=3D spapr_llan.o obj-$(CONFIG_XILINX_ETHLITE) +=3D xilinx_ethlite.o =20 obj-$(CONFIG_VIRTIO_NET) +=3D virtio-net.o -obj-$(CONFIG_VHOST_NET) +=3D vhost_net.o -common-obj-$(call lnot,$(CONFIG_VHOST_NET)) +=3D vhost_net-stub.o +common-obj-$(call land,$(CONFIG_VIRTIO_NET),$(CONFIG_VHOST_NET)) +=3D vhos= t_net.o +common-obj-$(call lnot,$(call land,$(CONFIG_VIRTIO_NET),$(CONFIG_VHOST_NET= ))) +=3D vhost_net-stub.o common-obj-$(CONFIG_ALL) +=3D vhost_net-stub.o =20 obj-$(CONFIG_ETSEC) +=3D fsl_etsec/etsec.o fsl_etsec/registers.o \ diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index ae3ca23..be3cc88 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -25,8 +25,6 @@ =20 =20 #include -#include -#include #include #include =20 @@ -134,7 +132,7 @@ static int vhost_net_get_fd(NetClientState *backend) return tap_get_fd(backend); default: fprintf(stderr, "vhost-net requires tap backend\n"); - return -EBADFD; + return -ENOSYS; } } =20 diff --git a/include/exec/poison.h b/include/exec/poison.h index ecdc83c..1a7a57b 100644 --- a/include/exec/poison.h +++ b/include/exec/poison.h @@ -86,7 +86,6 @@ #pragma GCC poison CONFIG_XTENSA_DIS =20 #pragma GCC poison CONFIG_LINUX_USER -#pragma GCC poison CONFIG_VHOST_NET #pragma GCC poison CONFIG_KVM #pragma GCC poison CONFIG_SOFTMMU =20 diff --git a/tests/Makefile.include b/tests/Makefile.include index b39e989..048cf56 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -209,10 +209,7 @@ check-qtest-i386-$(CONFIG_USB_XHCI_NEC) +=3D tests/usb= -hcd-xhci-test$(EXESUF) check-qtest-i386-y +=3D tests/cpu-plug-test$(EXESUF) check-qtest-i386-y +=3D tests/q35-test$(EXESUF) check-qtest-i386-y +=3D tests/vmgenid-test$(EXESUF) -check-qtest-i386-$(CONFIG_VHOST_USER_NET_TEST_i386) +=3D tests/vhost-user-= test$(EXESUF) -ifeq ($(CONFIG_VHOST_USER_NET_TEST_i386),) -check-qtest-x86_64-$(CONFIG_VHOST_USER_NET_TEST_x86_64) +=3D tests/vhost-u= ser-test$(EXESUF) -endif +check-qtest-i386-$(CONFIG_VHOST_NET_USER) +=3D tests/vhost-user-test$(EXES= UF) check-qtest-i386-$(CONFIG_TPM_CRB) +=3D tests/tpm-crb-swtpm-test$(EXESUF) check-qtest-i386-$(CONFIG_TPM_CRB) +=3D tests/tpm-crb-test$(EXESUF) check-qtest-i386-$(CONFIG_TPM_TIS) +=3D tests/tpm-tis-swtpm-test$(EXESUF) diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c index d961bd0..cdbdf3d 100644 --- a/tests/vhost-user-test.c +++ b/tests/vhost-user-test.c @@ -27,10 +27,13 @@ #include "libqos/malloc-pc.h" #include "hw/virtio/virtio-net.h" =20 -#include -#include -#include +#include "standard-headers/linux/vhost_types.h" +#include "standard-headers/linux/virtio_ids.h" +#include "standard-headers/linux/virtio_net.h" + +#ifdef CONFIG_LINUX #include +#endif =20 =20 #define QEMU_CMD_MEM " -m %d -object memory-backend-file,id=3Dmem,size= =3D%dM," \ @@ -459,6 +462,7 @@ static void chr_read(void *opaque, const uint8_t *buf, = int size) g_mutex_unlock(&s->data_mutex); } =20 +#ifdef CONFIG_LINUX static const char *init_hugepagefs(const char *path) { struct statfs fs; @@ -485,6 +489,7 @@ static const char *init_hugepagefs(const char *path) =20 return path; } +#endif =20 static TestServer *test_server_new(const gchar *name) { @@ -983,13 +988,14 @@ int main(int argc, char **argv) } g_assert(tmpfs); =20 + root =3D tmpfs; +#ifdef CONFIG_LINUX hugefs =3D getenv("QTEST_HUGETLBFS_PATH"); if (hugefs) { root =3D init_hugepagefs(hugefs); g_assert(root); - } else { - root =3D tmpfs; } +#endif =20 loop =3D g_main_loop_new(NULL, FALSE); /* run the main loop thread so the chardev may operate */ --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155016726174777.66284423321645; Thu, 14 Feb 2019 10:01:01 -0800 (PST) Received: from localhost ([127.0.0.1]:52580 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guLJh-0005aR-GS for importer@patchew.org; Thu, 14 Feb 2019 13:00:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4L-0002Xb-7E for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvd-0003MK-K4 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:06 -0500 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:40843) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvd-0003LK-DV for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:05 -0500 Received: by mail-wm1-x341.google.com with SMTP id q21so6915569wmc.5 for ; Thu, 14 Feb 2019 09:36:05 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.36.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:36:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cf4gkIh4eGasnItQnETAXHL+dlR+S3M0ZAPw4glBPKA=; b=b0jSPlhRm2blroBfo8hjiujujtWM9CWe31cDiVhtRy8spApsIrll4hF5e9my3Y3Uh1 SL3AYSyBrXK0Fh2oVSkuJJ5TTCoRG4iYQTTwWiYTYz3jQ0w8DwqkjXlmg2D72zO/UvVY y4zIRcN/FaUZrKTJ/9Hz80kFLTMVKBUKgEBE4HJU1IP+YBw1LOJlT9oWhQGFXk6xAgLw VC8G30u4yeYRobW5QL2Ayc9IHSCqaPf54Eu4xlXIUAZm2f/jP0ZNTsbcguKif8uWdb2A 0MPbZ3F1W5fAOLwtgrMOA7rWyeq8WxnptRnzV+pSa7g40n3FmRWtqnyrZO8wKMmcaekI 5zpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=cf4gkIh4eGasnItQnETAXHL+dlR+S3M0ZAPw4glBPKA=; b=MYI26Qu0YYHtHa/KTkcz4GxZ2Lx8/Fcb+sd1MhkGs4jzHJ+FUWWDPFTdSTjRwwrdLI fmx/dMcAMWiMpkc0rCfyeORgHMIqcXV2BSTtA85M1CKbiHSTiBSck0ibPyO0/RSMXmH8 xFQK9Se0YotMZ7lgP+5ekrruot9HKqG3UUrXhkt/fxE2+B7g0hm0FSGAm6E+ig/rnX5M yFfA6h3wwonCejhtjSwDZcbuPcXAOREPLV+lF2C6OFZwvQYObTQqsdEx8tfouDo4ptfJ rV7krX6OIcz/omrNFBLVUFW0dFTGhiCaYa9PGGUiDGVaXE1820/d0gzyIFeVJndxl04t fQaw== X-Gm-Message-State: AHQUAuZwInNod4eAdiCl9KuOcNPtoONyyUNPdQJ/CtOewZoPZRY40keI YRhCtn+6WahT7NWugiLfQnxmLEke X-Google-Smtp-Source: AHgI3Ib5qeFSPM//VWXgo9TORstt8PEGuDhHQQyOJXXbSHP9JWhU47EH75N5TEFwyKA0X1W/HoqoAg== X-Received: by 2002:a1c:7306:: with SMTP id d6mr3439236wmb.98.1550165764021; Thu, 14 Feb 2019 09:36:04 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:53 +0100 Message-Id: <1550165756-21617-7-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::341 Subject: [Qemu-devel] [PATCH 6/9] vhost-net: revamp configure logic X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Detect all invalid configurations (e.g. mingw32 with vhost-user, non-Linux with vhost-kernel). As a collateral benefit, all vhost-kernel backends can be now disabled if one wants to reduce the attack surface. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Paolo Bonzini Reviewed-by: Thomas Huth Message-Id: <1543851204-41186-6-git-send-email-pbonzini@redhat.com> --- configure | 89 +++++++++++++++++++++++++++++++------------= ---- hw/virtio/Makefile.objs | 4 +-- hw/virtio/vhost-backend.c | 4 +-- 3 files changed, 63 insertions(+), 34 deletions(-) diff --git a/configure b/configure index 4553c17..6d58718 100755 --- a/configure +++ b/configure @@ -368,10 +368,10 @@ libattr=3D"" xfs=3D"" tcg=3D"yes" membarrier=3D"" -vhost_net=3D"no" -vhost_crypto=3D"no" -vhost_scsi=3D"no" -vhost_vsock=3D"no" +vhost_net=3D"" +vhost_crypto=3D"" +vhost_scsi=3D"" +vhost_vsock=3D"" vhost_user=3D"" kvm=3D"no" hax=3D"no" @@ -782,6 +782,7 @@ case $targetos in MINGW32*) mingw32=3D"yes" hax=3D"yes" + vhost_user=3D"no" audio_possible_drivers=3D"dsound sdl" if check_include dsound.h; then audio_drv_list=3D"dsound" @@ -882,10 +883,6 @@ Linux) linux=3D"yes" linux_user=3D"yes" kvm=3D"yes" - vhost_net=3D"yes" - vhost_crypto=3D"yes" - vhost_scsi=3D"yes" - vhost_vsock=3D"yes" QEMU_INCLUDES=3D"-I\$(SRC_PATH)/linux-headers -I$PWD/linux-headers $QEMU= _INCLUDES" supported_os=3D"yes" libudev=3D"yes" @@ -1261,11 +1258,7 @@ for opt do ;; --disable-vhost-crypto) vhost_crypto=3D"no" ;; - --enable-vhost-crypto) - vhost_crypto=3D"yes" - if test "$mingw32" =3D "yes"; then - error_exit "vhost-crypto isn't available on win32" - fi + --enable-vhost-crypto) vhost_crypto=3D"yes" ;; --disable-vhost-scsi) vhost_scsi=3D"no" ;; @@ -1470,11 +1463,11 @@ for opt do ;; --disable-vhost-user) vhost_user=3D"no" ;; - --enable-vhost-user) - vhost_user=3D"yes" - if test "$mingw32" =3D "yes"; then - error_exit "vhost-user isn't available on win32" - fi + --enable-vhost-user) vhost_user=3D"yes" + ;; + --disable-vhost-kernel) vhost_kernel=3D"no" + ;; + --enable-vhost-kernel) vhost_kernel=3D"yes" ;; --disable-capstone) capstone=3D"no" ;; @@ -1506,14 +1499,6 @@ for opt do esac done =20 -if test "$vhost_user" =3D ""; then - if test "$mingw32" =3D "yes"; then - vhost_user=3D"no" - else - vhost_user=3D"yes" - fi -fi - case "$cpu" in ppc) CPU_CFLAGS=3D"-m32" @@ -1736,8 +1721,12 @@ disabled with --disable-FEATURE, default is enabled = if available: linux-aio Linux AIO support cap-ng libcap-ng support attr attr and xattr support - vhost-net vhost-net acceleration support - vhost-crypto vhost-crypto acceleration support + vhost-net vhost-net kernel acceleration support + vhost-vsock virtio sockets device support + vhost-scsi vhost-scsi kernel target support + vhost-crypto vhost-user-crypto backend support + vhost-kernel vhost kernel backend support + vhost-user vhost-user backend support spice spice rbd rados block device (rbd) libiscsi iscsi support @@ -1763,7 +1752,6 @@ disabled with --disable-FEATURE, default is enabled i= f available: jemalloc jemalloc support avx2 AVX2 optimization support replication replication support - vhost-vsock virtio sockets device support opengl opengl support virglrenderer virgl rendering support xfsctl xfsctl support @@ -1780,7 +1768,6 @@ disabled with --disable-FEATURE, default is enabled i= f available: parallels parallels image format support sheepdog sheepdog block driver support crypto-afalg Linux AF_ALG crypto backend driver - vhost-user vhost-user support capstone capstone disassembler support debug-mutex mutex debugging support libpmem libpmem support @@ -2171,6 +2158,45 @@ else l2tpv3=3Dno fi =20 +######################################### +# vhost interdependencies and host support + +# vhost backends +test "$vhost_user" =3D "" && vhost_user=3Dyes +if test "$vhost_user" =3D "yes" && test "$mingw32" =3D "yes"; then + error_exit "vhost-user isn't available on win32" +fi +test "$vhost_kernel" =3D "" && vhost_kernel=3D$linux +if test "$vhost_kernel" =3D "yes" && test "$linux" !=3D "yes"; then + error_exit "vhost-kernel is only available on Linux" +fi + +# vhost-kernel devices +test "$vhost_scsi" =3D "" && vhost_scsi=3D$vhost_kernel +if test "$vhost_scsi" =3D "yes" && test "$vhost_kernel" !=3D "yes"; then + error_exit "--enable-vhost-scsi requires --enable-vhost-kernel" +fi +test "$vhost_vsock" =3D "" && vhost_vsock=3D$vhost_kernel +if test "$vhost_vsock" =3D "yes" && test "$vhost_kernel" !=3D "yes"; then + error_exit "--enable-vhost-vsock requires --enable-vhost-kernel" +fi + +# vhost-user backends +test "$vhost_net_user" =3D "" && vhost_net_user=3D$vhost_user +if test "$vhost_net_user" =3D "yes" && test "$vhost_user" =3D "no"; then + error_exit "--enable-vhost-net-user requires --enable-vhost-user" +fi +test "$vhost_crypto" =3D "" && vhost_crypto=3D$vhost_user +if test "$vhost_crypto" =3D "yes" && test "$vhost_user" =3D "no"; then + error_exit "--enable-vhost-crypto requires --enable-vhost-user" +fi + +# OR the vhost-kernel and vhost-user values for simplicity +if test "$vhost_net" =3D ""; then + test "$vhost_net_user" =3D "yes" && vhost_net=3Dyes + test "$vhost_kernel" =3D "yes" && vhost_net=3Dyes +fi + ########################################## # MinGW / Mingw-w64 localtime_r/gmtime_r check =20 @@ -6590,6 +6616,9 @@ fi if test "$vhost_vsock" =3D "yes" ; then echo "CONFIG_VHOST_VSOCK=3Dy" >> $config_host_mak fi +if test "$vhost_kernel" =3D "yes" ; then + echo "CONFIG_VHOST_KERNEL=3Dy" >> $config_host_mak +fi if test "$vhost_user" =3D "yes" ; then echo "CONFIG_VHOST_USER=3Dy" >> $config_host_mak fi diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index ce542e7..a3eb8ed 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -2,8 +2,8 @@ ifeq ($(CONFIG_VIRTIO),y) common-obj-y +=3D virtio-bus.o obj-y +=3D virtio.o =20 -obj-$(call lor,$(CONFIG_VHOST_USER),$(CONFIG_LINUX)) +=3D vhost.o vhost-ba= ckend.o -common-obj-$(call lnot,$(call lor,$(CONFIG_VHOST_USER),$(CONFIG_LINUX))) += =3D vhost-stub.o +obj-$(call lor,$(CONFIG_VHOST_USER),$(CONFIG_VHOST_KERNEL)) +=3D vhost.o v= host-backend.o +common-obj-$(call lnot,$(call lor,$(CONFIG_VHOST_USER),$(CONFIG_VHOST_KERN= EL))) +=3D vhost-stub.o obj-$(CONFIG_VHOST_USER) +=3D vhost-user.o =20 common-obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng.o diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c index e0f0bb7..96b8d3c 100644 --- a/hw/virtio/vhost-backend.c +++ b/hw/virtio/vhost-backend.c @@ -14,7 +14,7 @@ #include "qemu/error-report.h" #include "standard-headers/linux/vhost_types.h" =20 -#ifdef CONFIG_LINUX +#ifdef CONFIG_VHOST_KERNEL #include #include =20 @@ -275,7 +275,7 @@ int vhost_set_backend_type(struct vhost_dev *dev, Vhost= BackendType backend_type) int r =3D 0; =20 switch (backend_type) { -#ifdef CONFIG_LINUX +#ifdef CONFIG_VHOST_KERNEL case VHOST_BACKEND_TYPE_KERNEL: dev->vhost_ops =3D &kernel_ops; break; --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550166762221913.7796936462263; Thu, 14 Feb 2019 09:52:42 -0800 (PST) Received: from localhost ([127.0.0.1]:52437 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guLBe-0007Rp-4q for importer@patchew.org; Thu, 14 Feb 2019 12:52:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33937) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4K-0002MK-A6 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvf-0003NL-9I for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:08 -0500 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:39545) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvf-0003Mr-2m for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:07 -0500 Received: by mail-wr1-x443.google.com with SMTP id l5so6320983wrw.6 for ; Thu, 14 Feb 2019 09:36:07 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.36.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:36:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DSulPWQgJdJCTZCEmW1X1jrLHeqMGDLh5xF76rbzgr8=; b=Rfog5NQ4f9k90dwylyQC58/Jr1A++N25RNOZ4uU8aoIYDU+PFBhj0/X1ZRqoUUBEam cK+PYWJeA8qoj47MEoRUgGcgZMLvkWq+7hhW3KoSpwKSpmDSmSZrdmP6mU4/JbpT+IhN DUveZBLeTnwoJDJSOd5Oj1rwzoxzpbiXRyVQgapVkwOrEz78uD+sj0407vDoclsuxr3n x9UqwcE33ZrBPD9kcWpGLlkdb3qGwScG+ZNXNXnIjwAa6FupV88dJXgG9stDEDvrfdDM WhRCh8C3uXf1uD7++0VGAa+jZS15v8vsLQnXlmgNPBhD8fJaFwh/SHaAiLt5xUFcLb5J IiMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=DSulPWQgJdJCTZCEmW1X1jrLHeqMGDLh5xF76rbzgr8=; b=PbW6oFy8ciZ0zmjZb5+tmarIxPGmF/vs0tP+z5f4cptplIyxrCoxLqGrCZA4AQorjT +/hrpiyfQndyklzpBSdshHoIjHevM53Or9QUawRV2elGXedg+8VwSi8B8+998y8q+udV d7qd/JzVWZ0phYtzBBo6mlbrCE6/LwN0eC/td/BHnHF+STRYlEOefVFf6/64GuhbnPMz H7quv8+8vnXS7Dyubs+/QYlq2DyZ1wfMY+Nteu3CdtVvem75djhuc4DhXVRKj8mgtk3j SDh8mUr6pntl8U7i3uJXODGK1wwKdt3CjG0M7X9YDR86Y72CLgMLrp9+xYBe32rhrJTG 6nAQ== X-Gm-Message-State: AHQUAuZ+uH+E8w3mh0giA57B1dTTSjXrnRRAFCG0ZRPvAe6ZeMJSJQQi amnEgt6UC5LAFJ4viebn47/b7Jib X-Google-Smtp-Source: AHgI3IaalsDWw9q2mfou9oqkZyh2zIxkzeVgF42iFwv5AO6qyuZ7bZ+alq1A21JwMfQZMTFexpoeQw== X-Received: by 2002:a5d:538a:: with SMTP id d10mr3745636wrv.121.1550165765750; Thu, 14 Feb 2019 09:36:05 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:54 +0100 Message-Id: <1550165756-21617-8-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::443 Subject: [Qemu-devel] [PATCH 7/9] vhost-user-test: create a main loop per TestServer X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This makes the tests more independent and removes the need to defer test_se= rver_free via an idle event source. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini Message-Id: <1543851204-41186-13-git-send-email-pbonzini@redhat.com> --- tests/vhost-user-test.c | 53 +++++++++++++++++++++++++--------------------= ---- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c index cdbdf3d..33030e0 100644 --- a/tests/vhost-user-test.c +++ b/tests/vhost-user-test.c @@ -146,6 +146,9 @@ typedef struct TestServer { int fds_num; int fds[VHOST_MEMORY_MAX_NREGIONS]; VhostUserMemory memory; + GMainContext *context; + GMainLoop *loop; + GThread *thread; GMutex data_mutex; GCond data_cond; int log_fd; @@ -495,6 +498,12 @@ static TestServer *test_server_new(const gchar *name) { TestServer *server =3D g_new0(TestServer, 1); =20 + server->context =3D g_main_context_new(); + server->loop =3D g_main_loop_new(server->context, FALSE); + + /* run the main loop thread so the chardev may operate */ + server->thread =3D g_thread_new(NULL, thread_function, server->loop); + server->socket_path =3D g_strdup_printf("%s/%s.sock", tmpfs, name); server->mig_path =3D g_strdup_printf("%s/%s.mig", tmpfs, name); server->chr_name =3D g_strdup_printf("chr-%s", name); @@ -524,13 +533,13 @@ static void test_server_create_chr(TestServer *server= , const gchar *opt) Chardev *chr; =20 chr_path =3D g_strdup_printf("unix:%s%s", server->socket_path, opt); - chr =3D qemu_chr_new(server->chr_name, chr_path, NULL); + chr =3D qemu_chr_new(server->chr_name, chr_path, server->context); g_free(chr_path); =20 g_assert_nonnull(chr); qemu_chr_fe_init(&server->chr, chr, &error_abort); qemu_chr_fe_set_handlers(&server->chr, chr_can_read, chr_read, - chr_event, NULL, server, NULL, true); + chr_event, NULL, server, server->context, tru= e); } =20 static void test_server_listen(TestServer *server) @@ -538,10 +547,19 @@ static void test_server_listen(TestServer *server) test_server_create_chr(server, ",server,nowait"); } =20 -static gboolean _test_server_free(TestServer *server) +static void test_server_free(TestServer *server) { int i; =20 + /* finish the helper thread and dispatch pending sources */ + g_main_loop_quit(server->loop); + g_thread_join(server->thread); + while (g_main_context_pending(NULL)) { + g_main_context_iteration(NULL, TRUE); + } + g_main_loop_unref(server->loop); + g_main_context_unref(server->context); + qemu_chr_fe_deinit(&server->chr, true); =20 for (i =3D 0; i < server->fds_num; i++) { @@ -563,13 +581,6 @@ static gboolean _test_server_free(TestServer *server) qpci_free_pc(server->bus); =20 g_free(server); - - return FALSE; -} - -static void test_server_free(TestServer *server) -{ - g_idle_add((GSourceFunc)_test_server_free, server); } =20 static void wait_for_log_fd(TestServer *s) @@ -728,7 +739,7 @@ static void test_migrate(void) sizeof(TestMigrateSource)); ((TestMigrateSource *)source)->src =3D s; ((TestMigrateSource *)source)->dest =3D dest; - g_source_attach(source, NULL); + g_source_attach(source, s->context); =20 /* slow down migration to have time to fiddle with log */ /* TODO: qtest could learn to break on some places */ @@ -825,6 +836,7 @@ connect_thread(gpointer data) static void test_reconnect_subprocess(void) { TestServer *s =3D test_server_new("reconnect"); + GSource *src; char *cmd; =20 g_thread_new("connect", connect_thread, s); @@ -842,7 +854,10 @@ static void test_reconnect_subprocess(void) /* reconnect */ s->fds_num =3D 0; s->rings =3D 0; - g_idle_add(reconnect_cb, s); + src =3D g_idle_source_new(); + g_source_set_callback(src, reconnect_cb, s, NULL); + g_source_attach(src, s->context); + g_source_unref(src); g_assert(wait_for_fds(s)); wait_for_rings_started(s, 2); =20 @@ -974,8 +989,6 @@ int main(int argc, char **argv) const char *hugefs; int ret; char template[] =3D "/tmp/vhost-test-XXXXXX"; - GMainLoop *loop; - GThread *thread; =20 g_test_init(&argc, &argv, NULL); =20 @@ -997,10 +1010,6 @@ int main(int argc, char **argv) } #endif =20 - loop =3D g_main_loop_new(NULL, FALSE); - /* run the main loop thread so the chardev may operate */ - thread =3D g_thread_new(NULL, thread_function, loop); - if (qemu_memfd_check(0)) { qtest_add_data_func("/vhost-user/read-guest-mem/memfd", GINT_TO_POINTER(TEST_MEMFD_YES), @@ -1028,14 +1037,6 @@ int main(int argc, char **argv) =20 /* cleanup */ =20 - /* finish the helper thread and dispatch pending sources */ - g_main_loop_quit(loop); - g_thread_join(thread); - while (g_main_context_pending(NULL)) { - g_main_context_iteration (NULL, TRUE); - } - g_main_loop_unref(loop); - ret =3D rmdir(tmpfs); if (ret !=3D 0) { g_test_message("unable to rmdir: path (%s): %s\n", --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155016654822443.326268224603496; Thu, 14 Feb 2019 09:49:08 -0800 (PST) Received: from localhost ([127.0.0.1]:52373 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL8C-0004ur-6j for importer@patchew.org; Thu, 14 Feb 2019 12:49:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4K-0002Xb-2c for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvi-0003RN-HL for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:12 -0500 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:33243) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvg-0003Ng-HV for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:10 -0500 Received: by mail-wr1-x42a.google.com with SMTP id i12so7455823wrw.0 for ; Thu, 14 Feb 2019 09:36:08 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.36.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:36:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vUxuauqDnOrbhRqiE8T41LmhF60yntDSpw9qcKEJX10=; b=u8Mt5ykMRuIqWQ2SJJytGOEdzrmitD+PiXsOlx5n46BrwBAzp4gUhiwePUl4Jo2bc0 Y4Ow8w1oqFfbdWNAqll7ZZSTA25BDkF5lT0CrGqX5NLfbQ4e9Q3SGxkfNxSokAKk9EDA 0CJk5B5vuaZLs67cIZeDNR7WFsDqzdRVIJf792BxwHPbUYoJxQg2OvwA1KVQzSE4J2Mx Xdx2GZhQixi+Yhple4JAmXP7GZ1tintSUXdhhfQP/HFlmulI7PgZTGFuN+RpqdiDnxLH qrOj/DnHCfQAh1OrWOarwFGk2gyoDdIFeBvtePK5Owa3VljxV27nbQMhZ4ZgI7qEzfM1 TxCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=vUxuauqDnOrbhRqiE8T41LmhF60yntDSpw9qcKEJX10=; b=Xrk7w6T8UTQTij8k2zmyVN9p6hHUqKKECQ8kM2xVh8E0AjF3LZ5o1+FJEvQ7rCKhgZ wIz16UWoGMRxLIOHU+5tsCXWqsW14CI9RrCAMTZrXYJS+Ujm5VaMXtKRuxLNhhZvuIqG C3kwaL9SHUSFuhOSSAoUyoRSGZeoip7dC873yu7WZ/IZT5Ce3YPc14kcf/o1TF21v6pt F9eyt3CkqXtNWSdpNUmGacRllsA9jcNKBRfTjd8X9ttUyCjxS+yuhLjTaaVJTKo3a53h 3rFGkKDjWfRYj5K7J0HGyNrs82w9/x4d9D7MFaYaY2CgzQs3kejZEobxGdmvp3EoGUQe tIFw== X-Gm-Message-State: AHQUAubiBAm9kfoaqeH6MBYSTTCznmiergxrbDQHRWTeZnD7iQloJR7W HewvsyecFokW4kByOwZ3yATFaorn X-Google-Smtp-Source: AHgI3IaeZr+8hVWsr6Yr+XEkcDQIvhCCshTflvn+fjGdQqIoFMWCNoOenooOHcleAqEaWT/+AgHTDg== X-Received: by 2002:a5d:4bc7:: with SMTP id l7mr3643234wrt.242.1550165766638; Thu, 14 Feb 2019 09:36:06 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:55 +0100 Message-Id: <1550165756-21617-9-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42a Subject: [Qemu-devel] [PATCH 8/9] vhost-user-test: small changes to init_hugepagefs X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) After the conversion to qgraph, the equivalent of "main" will be in a constructor and will run even if the tests are not being requested. Therefore, it should not assert that init_hugepagefs succeeds and will be called when creating the TestServer. This patch changes the prototype of init_hugepagefs, this way the next patch looks nicer. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini Message-Id: <1543851204-41186-14-git-send-email-pbonzini@redhat.com> Reviewed-by: Thomas Huth --- tests/vhost-user-test.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c index 33030e0..516e31c 100644 --- a/tests/vhost-user-test.c +++ b/tests/vhost-user-test.c @@ -465,14 +465,20 @@ static void chr_read(void *opaque, const uint8_t *buf= , int size) g_mutex_unlock(&s->data_mutex); } =20 -#ifdef CONFIG_LINUX -static const char *init_hugepagefs(const char *path) +static const char *init_hugepagefs(void) { +#ifdef CONFIG_LINUX + const char *path =3D getenv("QTEST_HUGETLBFS_PATH"); struct statfs fs; int ret; =20 + if (!path) { + return NULL; + } + if (access(path, R_OK | W_OK | X_OK)) { g_test_message("access on path (%s): %s\n", path, strerror(errno)); + abort(); return NULL; } =20 @@ -482,17 +488,21 @@ static const char *init_hugepagefs(const char *path) =20 if (ret !=3D 0) { g_test_message("statfs on path (%s): %s\n", path, strerror(errno)); + abort(); return NULL; } =20 if (fs.f_type !=3D HUGETLBFS_MAGIC) { g_test_message("Warning: path not on HugeTLBFS: %s\n", path); + abort(); return NULL; } =20 return path; -} +#else + return NULL; #endif +} =20 static TestServer *test_server_new(const gchar *name) { @@ -986,7 +996,6 @@ static void test_multiqueue(void) =20 int main(int argc, char **argv) { - const char *hugefs; int ret; char template[] =3D "/tmp/vhost-test-XXXXXX"; =20 @@ -1001,14 +1010,7 @@ int main(int argc, char **argv) } g_assert(tmpfs); =20 - root =3D tmpfs; -#ifdef CONFIG_LINUX - hugefs =3D getenv("QTEST_HUGETLBFS_PATH"); - if (hugefs) { - root =3D init_hugepagefs(hugefs); - g_assert(root); - } -#endif + root =3D init_hugepagefs() ? : tmpfs; =20 if (qemu_memfd_check(0)) { qtest_add_data_func("/vhost-user/read-guest-mem/memfd", --=20 1.8.3.1 From nobody Sat May 18 21:15:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550166905466454.11775567903476; Thu, 14 Feb 2019 09:55:05 -0800 (PST) Received: from localhost ([127.0.0.1]:52462 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guLDv-0000hd-5g for importer@patchew.org; Thu, 14 Feb 2019 12:54:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33906) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guL4H-0002HG-0x for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:45:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guKvk-0003UQ-E8 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:14 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:51282) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guKvi-0003OV-E5 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 12:36:10 -0500 Received: by mail-wm1-x331.google.com with SMTP id b11so7226625wmj.1 for ; Thu, 14 Feb 2019 09:36:08 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id s3sm1906796wmj.23.2019.02.14.09.36.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 09:36:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LqoVWdbkjMRXjHgbbUmOn9gob+4pkTKayLPSt1oN/cE=; b=qZ6+qwMX1KZbTSaRKv/YM0rSxq4L/6VrbRGaX4hKyofY3b+/D+LOXwwPO266esxJYw 3uchz/8I0gxaa6F2VkiW4HPucKXzEvBxVigTRGeac35Hix59ZfWzpqWt6NRkpvQDXWW0 JMStAeLUUw3zQ+Ncx0iR600t8Tvqhw6yhVfEhmJuzmV27XZjqemIhkC01NDXbtcxtxT5 w/ICbtea/eQNh7ZyOIddvd/J4vMFr901aSp9NSLo39FrFTLlRxH1DxNVwsZoSmvSrzMa DfJ2SYv43QNNbIyrdPrzQfYQtLM025F+EUVqorYEU8muxabe81gzV5i5/cwhosB/Sjya lF+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=LqoVWdbkjMRXjHgbbUmOn9gob+4pkTKayLPSt1oN/cE=; b=HLYHTKL/kQHfjcLMM2rDzHFTXzT7ptHpmt1bWIZvclkswE5nBq4RpgMUyt9l2dqCQU 9vt7er+D3pFN1oiFwWkqmzy3l7SpceK6YNbagyC8N3Xr6I6MPVQnBKz8+OpdhJCVfgy6 v1Wc2iQYIIkz78D7Z/1jOnQchh7/jtNSbuY/RM7ZuoPzAFLFsdUVHzWzotIU9HqvNn8R 2PQ8bxttPrPFxgxcnQOCEcioEAIzTLWr4SD2lRtH7aI/oaIJ9mpEdMIJo6kGYLoNs7f7 L4OLn3zqIIIbY5XHw+AJa2z3Mu/FIaiQ3Gh/3wGpulYemf33XH5DoiRquwKyKtNb/hUv 8M7Q== X-Gm-Message-State: AHQUAuY3voWMXatGkrieayPZV7GhPE4WKe8l0QHOfiOZS/QKNiTWANZ9 UXBnYClp84gvkMb9nKObtPuBxN0W X-Google-Smtp-Source: AHgI3IbsU6LwdG+FVcQc+KKS1j6uABWTfP++mK+7RGPCqdSyY4zDRgzSn3rNn9b1Flfq6vB1qDdCpA== X-Received: by 2002:a1c:2ec4:: with SMTP id u187mr3394183wmu.29.1550165767568; Thu, 14 Feb 2019 09:36:07 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 18:35:56 +0100 Message-Id: <1550165756-21617-10-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> References: <1550165756-21617-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::331 Subject: [Qemu-devel] [PATCH 9/9] vhost-user-test: create a temporary directory per TestServer X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, mst@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This makes the tests more independent, and also the source and destination TestServers in the migration test. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini Message-Id: <1543851204-41186-15-git-send-email-pbonzini@redhat.com> --- tests/vhost-user-test.c | 77 ++++++++++++++++++++++-----------------------= ---- 1 file changed, 35 insertions(+), 42 deletions(-) diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c index 516e31c..1c550aa 100644 --- a/tests/vhost-user-test.c +++ b/tests/vhost-user-test.c @@ -142,6 +142,8 @@ typedef struct TestServer { gchar *socket_path; gchar *mig_path; gchar *chr_name; + const gchar *mem_path; + gchar *tmpfs; CharBackend chr; int fds_num; int fds[VHOST_MEMORY_MAX_NREGIONS]; @@ -163,9 +165,6 @@ static TestServer *test_server_new(const gchar *name); static void test_server_free(TestServer *server); static void test_server_listen(TestServer *server); =20 -static const char *tmpfs; -static const char *root; - enum test_memfd { TEST_MEMFD_AUTO, TEST_MEMFD_YES, @@ -173,7 +172,7 @@ enum test_memfd { }; =20 static char *get_qemu_cmd(TestServer *s, - int mem, enum test_memfd memfd, const char *mem_= path, + int mem, enum test_memfd memfd, const char *chr_opts, const char *extra) { if (memfd =3D=3D TEST_MEMFD_AUTO && qemu_memfd_check(0)) { @@ -188,7 +187,7 @@ static char *get_qemu_cmd(TestServer *s, } else { return g_strdup_printf(QEMU_CMD_MEM QEMU_CMD_CHR QEMU_CMD_NETDEV QEMU_CMD_NET "%s", mem, mem, - mem_path, s->chr_name, s->socket_path, + s->mem_path, s->chr_name, s->socket_path, chr_opts, s->chr_name, extra); } } @@ -507,6 +506,8 @@ static const char *init_hugepagefs(void) static TestServer *test_server_new(const gchar *name) { TestServer *server =3D g_new0(TestServer, 1); + char template[] =3D "/tmp/vhost-test-XXXXXX"; + const char *tmpfs; =20 server->context =3D g_main_context_new(); server->loop =3D g_main_loop_new(server->context, FALSE); @@ -514,6 +515,14 @@ static TestServer *test_server_new(const gchar *name) /* run the main loop thread so the chardev may operate */ server->thread =3D g_thread_new(NULL, thread_function, server->loop); =20 + tmpfs =3D mkdtemp(template); + if (!tmpfs) { + g_test_message("mkdtemp on path (%s): %s", template, strerror(errn= o)); + } + g_assert(tmpfs); + + server->tmpfs =3D g_strdup(tmpfs); + server->mem_path =3D init_hugepagefs() ? : server->tmpfs; server->socket_path =3D g_strdup_printf("%s/%s.sock", tmpfs, name); server->mig_path =3D g_strdup_printf("%s/%s.mig", tmpfs, name); server->chr_name =3D g_strdup_printf("chr-%s", name); @@ -559,7 +568,7 @@ static void test_server_listen(TestServer *server) =20 static void test_server_free(TestServer *server) { - int i; + int i, ret; =20 /* finish the helper thread and dispatch pending sources */ g_main_loop_quit(server->loop); @@ -570,6 +579,18 @@ static void test_server_free(TestServer *server) g_main_loop_unref(server->loop); g_main_context_unref(server->context); =20 + unlink(server->socket_path); + g_free(server->socket_path); + + unlink(server->mig_path); + g_free(server->mig_path); + + ret =3D rmdir(server->tmpfs); + if (ret !=3D 0) { + g_test_message("unable to rmdir: path (%s): %s", + server->tmpfs, strerror(errno)); + } + qemu_chr_fe_deinit(&server->chr, true); =20 for (i =3D 0; i < server->fds_num; i++) { @@ -580,12 +601,6 @@ static void test_server_free(TestServer *server) close(server->log_fd); } =20 - unlink(server->socket_path); - g_free(server->socket_path); - - unlink(server->mig_path); - g_free(server->mig_path); - g_free(server->chr_name); g_assert(server->bus); qpci_free_pc(server->bus); @@ -691,7 +706,7 @@ static void test_read_guest_mem(const void *arg) "read-guest-memfd" : "read-guest-mem"); test_server_listen(server); =20 - qemu_cmd =3D get_qemu_cmd(server, 512, memfd, root, "", ""); + qemu_cmd =3D get_qemu_cmd(server, 512, memfd, "", ""); =20 s =3D qtest_start(qemu_cmd); g_free(qemu_cmd); @@ -726,7 +741,7 @@ static void test_migrate(void) test_server_listen(s); test_server_listen(dest); =20 - cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, root, "", ""); + cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, "", ""); from =3D qtest_start(cmd); g_free(cmd); =20 @@ -739,7 +754,7 @@ static void test_migrate(void) g_assert_cmpint(size, =3D=3D, (2 * 1024 * 1024) / (VHOST_LOG_PAGE * 8)= ); =20 tmp =3D g_strdup_printf(" -incoming %s", uri); - cmd =3D get_qemu_cmd(dest, 2, TEST_MEMFD_AUTO, root, "", tmp); + cmd =3D get_qemu_cmd(dest, 2, TEST_MEMFD_AUTO, "", tmp); g_free(tmp); to =3D qtest_init(cmd); g_free(cmd); @@ -850,7 +865,7 @@ static void test_reconnect_subprocess(void) char *cmd; =20 g_thread_new("connect", connect_thread, s); - cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, root, ",server", ""); + cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, ",server", ""); qtest_start(cmd); g_free(cmd); =20 @@ -895,7 +910,7 @@ static void test_connect_fail_subprocess(void) =20 s->test_fail =3D true; g_thread_new("connect", connect_thread, s); - cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, root, ",server", ""); + cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, ",server", ""); qtest_start(cmd); g_free(cmd); =20 @@ -928,7 +943,7 @@ static void test_flags_mismatch_subprocess(void) =20 s->test_flags =3D TEST_FLAGS_DISCONNECT; g_thread_new("connect", connect_thread, s); - cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, root, ",server", ""); + cmd =3D get_qemu_cmd(s, 2, TEST_MEMFD_AUTO, ",server", ""); qtest_start(cmd); g_free(cmd); =20 @@ -976,7 +991,7 @@ static void test_multiqueue(void) cmd =3D g_strdup_printf( QEMU_CMD_MEM QEMU_CMD_CHR QEMU_CMD_NETDEV ",queues=3D%d " "-device virtio-net-pci,netdev=3Dnet0,mq=3Don,vectors=3D%d", - 512, 512, root, s->chr_name, + 512, 512, s->mem_path, s->chr_name, s->socket_path, "", s->chr_name, s->queues, s->queues * 2 + 2); } @@ -996,22 +1011,11 @@ static void test_multiqueue(void) =20 int main(int argc, char **argv) { - int ret; - char template[] =3D "/tmp/vhost-test-XXXXXX"; - g_test_init(&argc, &argv, NULL); =20 module_call_init(MODULE_INIT_QOM); qemu_add_opts(&qemu_chardev_opts); =20 - tmpfs =3D mkdtemp(template); - if (!tmpfs) { - g_test_message("mkdtemp on path (%s): %s\n", template, strerror(er= rno)); - } - g_assert(tmpfs); - - root =3D init_hugepagefs() ? : tmpfs; - if (qemu_memfd_check(0)) { qtest_add_data_func("/vhost-user/read-guest-mem/memfd", GINT_TO_POINTER(TEST_MEMFD_YES), @@ -1035,16 +1039,5 @@ int main(int argc, char **argv) qtest_add_func("/vhost-user/flags-mismatch", test_flags_mismatch); } =20 - ret =3D g_test_run(); - - /* cleanup */ - - ret =3D rmdir(tmpfs); - if (ret !=3D 0) { - g_test_message("unable to rmdir: path (%s): %s\n", - tmpfs, strerror(errno)); - } - g_assert_cmpint(ret, =3D=3D, 0); - - return ret; + return g_test_run(); } --=20 1.8.3.1