From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EFD8542A9D; Tue, 9 May 2023 07:35:36 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D552A42D30; Tue, 9 May 2023 07:35:34 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 00D6142D13 for ; Tue, 9 May 2023 07:35:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1683610533; x=1715146533; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=CmdKLz5jXFhJx2ADVkqK5JRKfOSheZxUixuKKKvOAWM=; b=jKWCFrdh3ceC48R5/R9WC7N9MvdS3sSg3mQgROhVUxwqYnabCNIGOYlm Z+r8+wpYevwEtOcivkjSH1VcjgZ3hHFq//PuU1RhsMQG7IjTUAZTicIuG Z8aHyTX74nilHu5VjBpQkNCqHyBj8NKG++r/DPSSF/dWpZd7psV6S+vQf e13ip1f14WMenmhPBgHx7m0vkQQpuMzSSiZR1nWDG/xZkksWMIdWz+wu2 jRZEYaGUHo3XQBbtV51lmNXl3XMBtK/+zTaR1l5xgHpWyIOJQx1cYLRS9 28a5NDobeO9fiblTq0hRYMu0eiq0NAwIYa8sswMI0rOiKUp2tTLQGqqtY A==; X-IronPort-AV: E=McAfee;i="6600,9927,10704"; a="352874163" X-IronPort-AV: E=Sophos;i="5.99,261,1677571200"; d="scan'208";a="352874163" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 May 2023 22:35:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10704"; a="698756131" X-IronPort-AV: E=Sophos;i="5.99,261,1677571200"; d="scan'208";a="698756131" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga002.jf.intel.com with ESMTP; 08 May 2023 22:35:30 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 8 May 2023 22:35:30 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 8 May 2023 22:35:30 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Mon, 8 May 2023 22:35:29 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Mon, 8 May 2023 22:35:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m1PXS6ceIgtv8/7a6z6gV3QZUGoR1h6o9IzrJs+EnKHix13ZfQPAO5gmwHl+T+B4Loz96KN043AI0j8HWGS7H/PV2nhX1WjnIhF8kTyQzeCaF5m51WpleqIWJfuOYfDuajEc9DJVY5AH38XUtIQwHoTA3R9bonokwSAHiynb2nOxkeJecNzsLxGTrVYg9AhjkSMj3xQN4etAIGVWu44IX7CTNOPqL+kgmNPu7U2DmAmRB7UeskPqn2Kql2OW0993ZyCMYS4TAezH0sE7Nal93hE8u2a3/DNTc1NPpFGnaG+jbasyxpA7Xu8qX3CVPh7vN2fuT6ERbDQoOvMo9VGZ7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cWYdrYQFCj1hOFKYrduMcd29x4pVRAjdFWDVbCSRbHE=; b=VotpOZjCRCqlylI2Cc8eZtIkNrE1Gs8q6pnPMRGAeCrq9glLlPnKYh4eDMyBPDJSocU0h/DsnFfuBfJk8AL/YD42If9ddC2B3iXn+XEdxpAPPjrSjfk4T5mV5azWsP6aj3C/lCzetvgA+RHKN6il7QFVcfnHVQIwWftkURVTwP4nqJb5tbFWwf+156iKX0Ab6x3K+RykgKBe9dhsri6CKQxmoALFs4h1oLJrT8G0nBXzbyh/VCf/AQ/YlKY3+vj0d19jZO2IDrPOLaoLr0j89Wa8xDFCsWPl1SeXw30NX2YJKRav+poFdrWz0OsbIiF3gPbJd45JIefCbLvDsauPNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN6PR11MB3504.namprd11.prod.outlook.com (2603:10b6:805:d0::17) by SA1PR11MB6807.namprd11.prod.outlook.com (2603:10b6:806:24e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.32; Tue, 9 May 2023 05:35:28 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::5797:849:7a10:560d]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::5797:849:7a10:560d%6]) with mapi id 15.20.6363.032; Tue, 9 May 2023 05:35:28 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "david.marchand@redhat.com" , "mkp@redhat.com" , "fbl@redhat.com" , "jasowang@redhat.com" , "Liang, Cunming" , "Xie, Yongji" , "echaudro@redhat.com" , "eperezma@redhat.com" , "amorenoz@redhat.com" Subject: RE: [RFC 27/27] vhost: add multiqueue support to VDUSE Thread-Topic: [RFC 27/27] vhost: add multiqueue support to VDUSE Thread-Index: AQHZY+evzeOuoH9i2EKIWxS7MpSgw69RqENA Date: Tue, 9 May 2023 05:35:27 +0000 Message-ID: References: <20230331154259.1447831-1-maxime.coquelin@redhat.com> <20230331154259.1447831-28-maxime.coquelin@redhat.com> In-Reply-To: <20230331154259.1447831-28-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR11MB3504:EE_|SA1PR11MB6807:EE_ x-ms-office365-filtering-correlation-id: 7886ba4f-6013-436a-c211-08db504f3245 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Phmv0vKfjpNgN73yp44A517UcAyUHXRC3UrYQ/l46xK1GIp1CLPcJ/lLnMeTLOrW+ixsqlOPElR/hx2gsvGpvXtU5NG3ZCpq9sc4ilpO4Lwq5B2EaR20yC+lLVprjnFjgg/XIZmPM4s10y/ppP6F00tcW5c690M1adSRO62/pp8JDmSW9mdFfcq5In+Bk2sUWpLtH6umjFg1MHWaNoy8+2dcbaxH77VR/ti1HepnAJnmOQmU8s2EBCWv2QJ860fKuODHxX/fQpbf6HCg7lLo0FFVKrMUsBvjt0fu3dcH72ouL4uFuNcbJxPQwFlMwiZaU60wVTrbzyjKjOTMkx6ojYi0iQ2rFvTVWUpMRQUVj+t6bhipHZPLksPiJld76v6BHWgTW4RwxU0/RIZv7jeuJDmoKBu0JIVO//bVoH3jp9vbPG4ohN1M9M8IkCfWXj3GhwXYW4/4Z3HT84Md3g+3cfnBpiXKVPX8bZ2gLmCeYHqy/m16M+J9nrH716BnNu6/UjszkuMmE0GXgrpUGG9R6Acm6JdXibD7qIBtC3gPVm/2IDBzW3iwrZHDXber75lG8mfAk2wjqsfC47T7ppkv7mhyHjwYLgDvBcaAGdi2DFzF5bkyqqtZz5oZDqvBKIlULYV8Uv2zHTkjwB2aN9FpQA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3504.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(376002)(396003)(39860400002)(366004)(346002)(136003)(451199021)(33656002)(52536014)(66556008)(38100700002)(2906002)(7416002)(55016003)(316002)(86362001)(8676002)(66446008)(64756008)(76116006)(82960400001)(66946007)(5660300002)(66476007)(38070700005)(8936002)(921005)(41300700001)(122000001)(83380400001)(186003)(53546011)(6506007)(26005)(9686003)(478600001)(7696005)(110136005)(71200400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?whLb/hqRMutW0g9TbmpLjChUTAevF8IFLH0xoeI7nQXHXxopUaSo8H9a1wYx?= =?us-ascii?Q?gChCYVpa2JOW0FAIgJbb+4P+vrctqLsQzbMrXdSumtgHdeVAmfEQZneXay0u?= =?us-ascii?Q?kaRtCz4MvDWFAcsDpw5R4VIUS2O3ROyGsCk1i90qrx9l/p3Jzw5bARdvmqRn?= =?us-ascii?Q?nmko1tmWD7jpB07r7JI4xWL/y/IybxzPacBlbtMUgAEdAW4t2xlzgYWfXxuW?= =?us-ascii?Q?JibkHOLCk3cjdiU7G0bnx3MFQ9zUZdwZP87+yZrV/hJY/DMgTzwCzomLdKS+?= =?us-ascii?Q?VfJ8YEFwFRXkOFaVtDbXFHXGTc7/uWAdRHKfNVaBAad1B0by7VT1oKSpBfZy?= =?us-ascii?Q?yQ9pDPD/m9PROaSrV9ojzl1XiNqqa5Pl8Mv5AbE+hDqJ+pNpeRCCv5LdDOL/?= =?us-ascii?Q?PpCs8sR2ZbEP50BMesed6cb6lm9lOtjtq1eA0UzLHloIe77SUBtbAdh3Lc7q?= =?us-ascii?Q?1G5Lr5hD+X9Srr/TJ1F/h+OiCWUTtsyQQmWVLzSz+3x/JjVojdiO7fbU6IhT?= =?us-ascii?Q?mq3kxwGaozUCmK3DpoFok/SD6wT6i2op4/D+sUYdYPIyvD7gxVMHg7fuCaao?= =?us-ascii?Q?5Lon8c1oVQ4tvrJMojuanLNnzHa/kcu+RM8ewiVRWtMR/Hdj9hEbU8MbNdXd?= =?us-ascii?Q?jBZuvFKlO4igiu+6Yt0RaXiq43uANQ7cJWKPSTGCKJZ3l+Ql1R2u6JKZrWv6?= =?us-ascii?Q?ef9ktKtcWO47m2eAUR69zF+8KbmmF8KcVioiWg1uQ4C9tY2mdwjXGaMRZwXS?= =?us-ascii?Q?9el4IdBHaa1ShxVx9kWiLiZ1CSqydUqdSrMELsnyrjph/dLGXBsDwFBw9mEZ?= =?us-ascii?Q?AolaXr9dY9e+KBN521+l+fDMRbyoNLmX1D0l3fHp2XouapIJkoA/jphtpJxq?= =?us-ascii?Q?CD3HRUnymnWK7uohKOVSuJ5DEy4x63O9/bXDU0c40rqX4gynH6dzGDr6kLwI?= =?us-ascii?Q?ptGkR2unFk11FI+AOy6W91vndgNe9EFHXvU1ZNVYNSknNyyDquDJT0rSiFsO?= =?us-ascii?Q?bweoXyvs9kHE3XEJ6hMOg1nIuT276QJjst8W5dfJB9jHcvvdFFTerLH4okH9?= =?us-ascii?Q?MPycjznZFKleiPjj8Vg7g9ZQBAE0fUjOmf84eBTVRFDdGf5n341kNJitsL5o?= =?us-ascii?Q?p0u7D1SlqUW5zP1Vqlh44/8m97SGyeSUjoIv1cYsueEcymmFagVqqFpjdeHs?= =?us-ascii?Q?WgGccGNHBNsz7mTF5lvucwA0wQiIFTSu3+z+ZrJokeR9TWPV7382vNTeHUqx?= =?us-ascii?Q?OJhKmMoabmeSfL3f+Zvbxe6SH1cltT7xTb9PjDdMZwd2h8ehTRXc12kRqEDg?= =?us-ascii?Q?HgCbkFd8UGVDQaoJkH2guD70opUfBim1BQyG5WxBj81dmKQWo6MkXbZFs/1V?= =?us-ascii?Q?dMpoGue+JoOCA6txBjL5seOr0j2g51LUo1dLPsuyTpkvSr4tvcu4GSsaAmru?= =?us-ascii?Q?92gqesGLhysOn36fiP+kLeISPxfUQk14HiMfpsw5YVAWXZKYZVPflOzlpcfQ?= =?us-ascii?Q?hN2r23PcwEzbzi8xZXxc22YcCF+xPBgctO7OikWhiYYIYAFZIxxhf1LF6a0r?= =?us-ascii?Q?svxrXUqpYBA8Z0AJExDaXNG++d+3y6mB3EKGeReu?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB3504.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7886ba4f-6013-436a-c211-08db504f3245 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2023 05:35:27.8738 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jZ7SiZx6FrLk3uK88jrvpbros/wZZsSqaOldEjTvphjbgKfegPKiEqiUV1uyLIyTMeAHOH3CmSw+ycKe0CyrQQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6807 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > -----Original Message----- > From: Maxime Coquelin > Sent: Friday, March 31, 2023 11:43 PM > To: dev@dpdk.org; david.marchand@redhat.com; Xia, Chenbo > ; mkp@redhat.com; fbl@redhat.com; > jasowang@redhat.com; Liang, Cunming ; Xie, Yongj= i > ; echaudro@redhat.com; eperezma@redhat.com; > amorenoz@redhat.com > Cc: Maxime Coquelin > Subject: [RFC 27/27] vhost: add multiqueue support to VDUSE >=20 > This patch enables control queue support in order to > support multiqueue. >=20 > Signed-off-by: Maxime Coquelin > --- > lib/vhost/vduse.c | 69 ++++++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 63 insertions(+), 6 deletions(-) >=20 > diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c > index 1cd04b4872..135e78fc35 100644 > --- a/lib/vhost/vduse.c > +++ b/lib/vhost/vduse.c > @@ -21,6 +21,7 @@ > #include "iotlb.h" > #include "vduse.h" > #include "vhost.h" > +#include "virtio_net_ctrl.h" >=20 > #define VHOST_VDUSE_API_VERSION 0 > #define VDUSE_CTRL_PATH "/dev/vduse/control" > @@ -31,7 +32,9 @@ > (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \ > (1ULL << VIRTIO_RING_F_EVENT_IDX) | \ > (1ULL << VIRTIO_F_IN_ORDER) | \ > - (1ULL << VIRTIO_F_IOMMU_PLATFORM)) > + (1ULL << VIRTIO_F_IOMMU_PLATFORM) | \ > + (1ULL << VIRTIO_NET_F_CTRL_VQ) | \ > + (1ULL << VIRTIO_NET_F_MQ)) >=20 > struct vduse { > struct fdset fdset; > @@ -127,6 +130,25 @@ static struct vhost_backend_ops vduse_backend_ops = =3D { > .inject_irq =3D vduse_inject_irq, > }; >=20 > +static void > +vduse_control_queue_event(int fd, void *arg, int *remove __rte_unused) > +{ > + struct virtio_net *dev =3D arg; > + uint64_t buf; > + int ret; > + > + ret =3D read(fd, &buf, sizeof(buf)); > + if (ret < 0) { > + VHOST_LOG_CONFIG(dev->ifname, ERR, "Failed to read control > queue event: %s\n", > + strerror(errno)); > + return; > + } > + > + VHOST_LOG_CONFIG(dev->ifname, DEBUG, "Control queue kicked\n"); > + if (virtio_net_ctrl_handle(dev)) > + VHOST_LOG_CONFIG(dev->ifname, ERR, "Failed to handle ctrl > request\n"); > +} > + > static void > vduse_vring_setup(struct virtio_net *dev, unsigned int index) > { > @@ -192,6 +214,18 @@ vduse_vring_setup(struct virtio_net *dev, unsigned > int index) > vq->kickfd =3D VIRTIO_UNINITIALIZED_EVENTFD; > return; > } > + > + if (vq =3D=3D dev->cvq) { > + vhost_enable_guest_notification(dev, vq, 1); > + ret =3D fdset_add(&vduse.fdset, vq->kickfd, > vduse_control_queue_event, NULL, dev); > + if (ret) { > + VHOST_LOG_CONFIG(dev->ifname, ERR, > + "Failed to setup kickfd handler for > VQ %u: %s\n", > + index, strerror(errno)); > + close(vq->kickfd); > + vq->kickfd =3D VIRTIO_UNINITIALIZED_EVENTFD; > + } > + } > } >=20 > static void > @@ -236,6 +270,9 @@ vduse_device_start(struct virtio_net *dev) > for (i =3D 0; i < dev->nr_vring; i++) { > struct vhost_virtqueue *vq =3D dev->virtqueue[i]; >=20 > + if (vq =3D=3D dev->cvq) > + continue; > + > if (dev->notify_ops->vring_state_changed) > dev->notify_ops->vring_state_changed(dev->vid, i, vq- > >enabled); > } > @@ -315,8 +352,9 @@ vduse_device_create(const char *path) > { > int control_fd, dev_fd, vid, ret; > pthread_t fdset_tid; > - uint32_t i; > + uint32_t i, max_queue_pairs; > struct virtio_net *dev; > + struct virtio_net_config vnet_config =3D { 0 }; > uint64_t ver =3D VHOST_VDUSE_API_VERSION; > struct vduse_dev_config *dev_config =3D NULL; > const char *name =3D path + strlen("/dev/vduse/"); > @@ -357,22 +395,33 @@ vduse_device_create(const char *path) > goto out_ctrl_close; > } >=20 > - dev_config =3D malloc(offsetof(struct vduse_dev_config, config)); > + dev_config =3D malloc(offsetof(struct vduse_dev_config, config) + > + sizeof(vnet_config)); > if (!dev_config) { > VHOST_LOG_CONFIG(name, ERR, "Failed to allocate VDUSE > config\n"); > ret =3D -1; > goto out_ctrl_close; > } >=20 > + ret =3D rte_vhost_driver_get_queue_num(path, &max_queue_pairs); > + if (ret < 0) { > + VHOST_LOG_CONFIG(name, ERR, "Failed to get max queue pairs\n"); > + goto out_free; > + } > + > + VHOST_LOG_CONFIG(path, INFO, "VDUSE max queue pairs: %u\n", > max_queue_pairs); > + > + vnet_config.max_virtqueue_pairs =3D max_queue_pairs; > memset(dev_config, 0, sizeof(struct vduse_dev_config)); >=20 > strncpy(dev_config->name, name, VDUSE_NAME_MAX - 1); > dev_config->device_id =3D VIRTIO_ID_NET; > dev_config->vendor_id =3D 0; > dev_config->features =3D VDUSE_NET_SUPPORTED_FEATURES; > - dev_config->vq_num =3D 2; > + dev_config->vq_num =3D max_queue_pairs * 2 + 1; /* Includes ctrl queue > */ > dev_config->vq_align =3D sysconf(_SC_PAGE_SIZE); > - dev_config->config_size =3D 0; > + dev_config->config_size =3D sizeof(struct virtio_net_config); > + memcpy(dev_config->config, &vnet_config, sizeof(vnet_config)); >=20 > ret =3D ioctl(control_fd, VDUSE_CREATE_DEV, dev_config); > if (ret < 0) { > @@ -407,7 +456,7 @@ vduse_device_create(const char *path) > dev->vduse_dev_fd =3D dev_fd; > vhost_setup_virtio_net(dev->vid, true, true, true, true); >=20 > - for (i =3D 0; i < 2; i++) { > + for (i =3D 0; i < max_queue_pairs * 2 + 1; i++) { > struct vduse_vq_config vq_cfg =3D { 0 }; >=20 > ret =3D alloc_vring_queue(dev, i); > @@ -426,6 +475,8 @@ vduse_device_create(const char *path) > } > } >=20 > + dev->cvq =3D dev->virtqueue[max_queue_pairs * 2]; > + > ret =3D fdset_add(&vduse.fdset, dev->vduse_dev_fd, > vduse_events_handler, NULL, dev); > if (ret) { > VHOST_LOG_CONFIG(name, ERR, "Failed to add fd %d to vduse > fdset\n", > @@ -471,6 +522,12 @@ vduse_device_destroy(const char *path) > if (vid =3D=3D RTE_MAX_VHOST_DEVICE) > return -1; >=20 > + if (dev->cvq && dev->cvq->kickfd >=3D 0) { > + fdset_del(&vduse.fdset, dev->cvq->kickfd); > + close(dev->cvq->kickfd); > + dev->cvq->kickfd =3D VIRTIO_UNINITIALIZED_EVENTFD; > + } > + > fdset_del(&vduse.fdset, dev->vduse_dev_fd); >=20 > if (dev->vduse_dev_fd >=3D 0) { > -- > 2.39.2 Reviewed-by: Chenbo Xia =20