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 1EE62429E7; Tue, 25 Apr 2023 08:20:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 09EC0410EA; Tue, 25 Apr 2023 08:20:00 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 9F769400D7 for ; Tue, 25 Apr 2023 08:19:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682403597; x=1713939597; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=T+s1j5NVJQd96gQq/nJYL6o0zz5t9BERKr3y6MqnPYQ=; b=gkY3kzW0ahFIeqG/j7g5FABdPgRq5ByMio8ZXUDOrR8SXS7UuO/ZtV2m BloaQIGAbUXR+hk8KOg7hvodEsEXZCmkuI2GwOgXkZVowTGIgD63U9nlu sIxq3OlYTdH67puNLbWTREsQrTCjeARsiRpPpyAv3AB9bwQE1um3CjsVp aUlm1WT5nJErdceAwr2zhAAeqc6ImR7ZswcZ8FZlTBrDkOZXfapZ97pQE N/sJHkKKMPsWRe8ULS1vhK3Af5zNerhlZePn2qBuKYMi6KLoRO9SBB780 DW2EKOSR8+Aae8bTTn6GA6OKmhGjg7TMK3uDZgwAeeyW72uSAf0WaqRH4 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10690"; a="330883771" X-IronPort-AV: E=Sophos;i="5.99,224,1677571200"; d="scan'208";a="330883771" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2023 23:19:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10690"; a="696049499" X-IronPort-AV: E=Sophos;i="5.99,224,1677571200"; d="scan'208";a="696049499" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga007.fm.intel.com with ESMTP; 24 Apr 2023 23:19:56 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 24 Apr 2023 23:19:55 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) 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, 24 Apr 2023 23:19:55 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.104) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Mon, 24 Apr 2023 23:19:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U9WJG2T6iuE2Ju5uuwbCQKNqOqc49w+X6qWl8efVHDCRqX54+NOek9msoMkBBqXdUoOxn7tvoCoVXSD7MTlRqmZO9ixB0YdJmBydtJ2dB6SWqbRl7d36J8EkZzq28celAPbEBCd+zIgobs/lywOVfQ8W+boaMTQMqoKCEtnOgLjBSS7XwtSU+pM41GNuBrr0JP5weSzo9Y8Qv4M2ym5PqmhqMwyRERN2A2qnq2rhIiV1DUfYsAmmi791GEsd0k2oIKvPWarjKA3AJSscXRbQRTKsQaQiuhVO1KSXmpES6sl/ZDxL2dfuAc9GPYenqwssgnwXmTAvWbduBkLpxE9TeQ== 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=eT1ZffiXx3SeEof5BRFaNpVPNx8NZapTp/M0DgIWXiE=; b=eV45cCse/cjzvMBO6Gho74JU2gXhv8LcMCsqNzbyR/NdOMfNzFZpVcFb7sbgfVIzVZWLZLSMw/NvtSoePzCdBmInNm8XOd4knDfaPz6wKVgVdt5SXgcvP/cxvAyJ0Cwa/muJE7E/hIRtZ5yPtcXZqEoOLyoXGLkJ9mLkixOzKz+QYYa96DIbySY2vgyvQhDi6cChb4e4dS9oysBpNR0Kk4jaMy83AWcR7LFGar53s1c54uTg4Op/pWIPaZvuj2JAGuyK7pqy1ui5UxGDJpuUArEsUHSnbiG0/XoQPAx8QvId14WDlV332r55Vjq/dI8tztD7TZ+8aoCqNgc8xRnX6Q== 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 SN7PR11MB7439.namprd11.prod.outlook.com (2603:10b6:806:343::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Tue, 25 Apr 2023 06:19:53 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::2d7a:a878:7bed:bb11]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::2d7a:a878:7bed:bb11%4]) with mapi id 15.20.6319.033; Tue, 25 Apr 2023 06:19:53 +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 07/27] vhost: change to single IOTLB cache per device Thread-Topic: [RFC 07/27] vhost: change to single IOTLB cache per device Thread-Index: AQHZY+eWl8aRGq44HEaT/nAF5jxrra87ceMg Date: Tue, 25 Apr 2023 06:19:53 +0000 Message-ID: References: <20230331154259.1447831-1-maxime.coquelin@redhat.com> <20230331154259.1447831-8-maxime.coquelin@redhat.com> In-Reply-To: <20230331154259.1447831-8-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_|SN7PR11MB7439:EE_ x-ms-office365-filtering-correlation-id: 1744a95f-2ebb-473b-2976-08db45551536 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: Ze7bm7QhoL0VIj8MHUi8b+ZJ13uENIvuYg86DC6tGV79ACxEVuTc43Srgc8Mn9gxEO7mcdqGM01TBlSuqd5GzbCdpQI2IgeeR6xeQ15YODJDYhmh8H4z5RyrC/L1NmWrD1Hsd1JSV4kQpcs83VLhA5WmLVLQOh4AqeGJK7M441uDbWAox/7yX2gm+jxcHMf2acYWalDc9oDIAeHqx8dgocXxYd56yeoRZU7R7sbR4Bk8QyUQ/dXMIZ/LmgJHbTOpgDoIt2rlU9tBsLg6xhqIJoUABJZUpTLIP+ld1zQma0ymLtGlmGUHCxjDCk+w32vuLK/3Ywb/r5Q3E2hZX6fASFLTNwINkZSQcVLSC1nIPpsXIXscpFVh4FmXeZPEiT5ULv86rykzGqzh0ocl3vm+/SdT0lKpQR265jpJDF1CW9SHKo26/u9R72QW2HhJeQH8gHjXpXdWz9gSv5hLFVZDT+d/BKLmg/2r2ZxSu6RHkT6EaWT9210oWTnMMbZD43DOtY9QDPB9E6u11Qr4VdVEIL0GrxmSdCig7PdxQF0R98Bj4CEiUduYa4z+6CVoLBf8jE/Us+S1mHpXe0VxM10aVeT/2mUFAMwYcNKIuWNCKmLcb9ePvB3JteXFMEg/mN6v5FhgonndkVygj82C3rpnGg== 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)(136003)(366004)(376002)(396003)(39860400002)(346002)(451199021)(82960400001)(316002)(64756008)(66446008)(38100700002)(41300700001)(122000001)(5660300002)(7416002)(52536014)(921005)(8936002)(8676002)(33656002)(86362001)(38070700005)(2906002)(66476007)(55016003)(66556008)(7696005)(71200400001)(53546011)(6506007)(26005)(9686003)(478600001)(83380400001)(186003)(76116006)(110136005)(66946007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?NFca6cIeL+szSWMv9UwzjwBwnEpDifxrxnaDSIbJpndizVf6Akr+MHC0tyYZ?= =?us-ascii?Q?wVvvv1Ogku0JtcizjcrIf+6C7JPHg1Kl8UatatB1OjlYpttE/Wj1AambR1+k?= =?us-ascii?Q?hFKr+AqPjtl4fxy4NHSZgfCnYQfHvJ0bkzPkXS5Bf9xIIIFOELUVjRvLdAJX?= =?us-ascii?Q?+4Q+m3RmGNlCmDctlIVYxsrFoCN7UJMpyMaWyxhkFfhNVFXp8+7txuYwRMv8?= =?us-ascii?Q?weMH7odWLf7cyzra4taRmX/EU+VNcfKe8Oqs5aOFQzb5V4aVCH22Nb5RmG69?= =?us-ascii?Q?aeK5eN0ilA6Jr9Xj7fzzRZItBEwRbQKUmeHbGuGac+rFmgoeXGz0Eb3yk9YM?= =?us-ascii?Q?A/y2VM1YYAL26Bmrka3/jZ1jGBKa5SvDAZjTZRQxNBZO4L4scqW0dNRpPmV/?= =?us-ascii?Q?tHk5RulUcBTDxDvOTwEkcsHBGVg8U49G8rprMVhDOpjq+mm6kVFsSamqStTr?= =?us-ascii?Q?zRONs7MkYWutZxmkcLyex4RDqIqczUDXaMZHRV+827i7Ops1yqldJgLVbMbE?= =?us-ascii?Q?g3adWVIgaGChsdgjxvKjaQEM9LrENQXKl+OXdyjBdemMhC134RVlEe2Hoxwh?= =?us-ascii?Q?JeayjiyzB8+B7aRQjXTuif2tTgTMipTTl0IXeOgMZF0ztVgN78i+sz03BC6Y?= =?us-ascii?Q?jWK2udGUobE/SVUUIXFXmfIMhDYC8x3x4mM3sFXot3af8xHNSib1JbyFxjg2?= =?us-ascii?Q?RtTYSohezZKcPoZhtvNmBxYWKUcQM2ArwcPLpElbr4SBYMkEWZsPwTN4OWCe?= =?us-ascii?Q?LjI409IBL9JVEmALDoPmuXbqHu3VzpaqJoCwajMRdP6XWP0BGmBMe99K3+pM?= =?us-ascii?Q?8qrdk9X4uss8KNoHmL7LFyJicBRU1J5+is5Y3rCBAixW6DBjURGY3HWxAgmM?= =?us-ascii?Q?KeBPXESlEMR7gVP9OQUfy6s1MVAMqGK2yaq+rBK9e8CTZyT04Jbk2zwB1Hhh?= =?us-ascii?Q?uX+5PxnHnicT8kDT1R8KFTYEUt7SvKHm+HlPJoDQdUn63PbD0yrRhXQdZbWR?= =?us-ascii?Q?wkmejN0H7wYYvjKbYm24RXFPt47R6+1xuyaE1vo1ceef0kkvMkbBwH/+OMBT?= =?us-ascii?Q?16BnNt3T8YH7cQL1n13kQ2pGzDV1Z/ws404KPTfcBRrNQ8kzw9UagBopVmX7?= =?us-ascii?Q?/gNVrr5/Nhsey+CIh7IGMUgfPiz+B1NAOivI5OAh/e7XnEIgSDIPm0i79hO+?= =?us-ascii?Q?DQ3+T1FIisINoIzE0bh5Zx+wTMoIJDpRYuyjheXe/Rwgcr3zBHHZFupckRz2?= =?us-ascii?Q?m7lOZJ0/UgjRQA7FgmOdyJswgHKUa6iVUc0Y9NShq25Nw6r9v+6OBK3VR/J5?= =?us-ascii?Q?flypibV3uU60DE6RaOAV4V/P3NMNevuOUyXxZ7fZMaiUmvfnUvt1uTA5cpe9?= =?us-ascii?Q?7zfa+sqeH5wlB0dKZKcLEggn7zFM4utgD5gSS6+j5dug9CjTI7R/4b2wpZ/x?= =?us-ascii?Q?uOegYoL6SUKa+FVljCiN5pAZ+HYjLbeZ78tIHbp6XZcMyjF8WCrXdHiC6nMr?= =?us-ascii?Q?K2mDCTKm/30irQfK8jDCQ3J9DR37RUSyGMZOb7RG7amPsCfu1nVH70w9RutH?= =?us-ascii?Q?EsReQmyvHn0XXt0w4TKIi5jTW7PzvzEYsoSlVh/l?= 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: 1744a95f-2ebb-473b-2976-08db45551536 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Apr 2023 06:19:53.2957 (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: U6+5sHRYnxDet8Zz0Dwv/o3wASlUQP1BbwMPinoNzHknDtfSJmAEMfuNrBs5px/apaOdqIB6lNtgK5qDDR3bRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB7439 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 Hi Maxime, > -----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 07/27] vhost: change to single IOTLB cache per device >=20 > This patch simplifies IOTLB implementation and improves > IOTLB memory consumption by having a single IOTLB cache > per device, instead of having one per queue. >=20 > In order to not impact performance, it keeps an IOTLB lock > per virtqueue, so that there is no contention between > multiple queue trying to acquire it. >=20 > Signed-off-by: Maxime Coquelin > --- > lib/vhost/iotlb.c | 212 +++++++++++++++++++---------------------- > lib/vhost/iotlb.h | 43 ++++++--- > lib/vhost/vhost.c | 18 ++-- > lib/vhost/vhost.h | 16 ++-- > lib/vhost/vhost_user.c | 25 +++-- > 5 files changed, 160 insertions(+), 154 deletions(-) >=20 [...] > diff --git a/lib/vhost/vhost_user.c b/lib/vhost/vhost_user.c > index d60e39b6bc..81ebef0137 100644 > --- a/lib/vhost/vhost_user.c > +++ b/lib/vhost/vhost_user.c > @@ -7,7 +7,7 @@ > * The vhost-user protocol connection is an external interface, so it > must be > * robust against invalid inputs. > * > - * This is important because the vhost-user frontend is only one step > removed > +* This is important because the vhost-user frontend is only one step > removed This is changed by accident? Thanks, Chenbo > * from the guest. Malicious guests that have escaped will then launch > further > * attacks from the vhost-user frontend. > * > @@ -237,6 +237,8 @@ vhost_backend_cleanup(struct virtio_net *dev) > } >=20 > dev->postcopy_listening =3D 0; > + > + vhost_user_iotlb_destroy(dev); > } >=20 > static void > @@ -539,7 +541,6 @@ numa_realloc(struct virtio_net **pdev, struct > vhost_virtqueue **pvq) > if (vq !=3D dev->virtqueue[vq->index]) { > VHOST_LOG_CONFIG(dev->ifname, INFO, "reallocated virtqueue on > node %d\n", node); > dev->virtqueue[vq->index] =3D vq; > - vhost_user_iotlb_init(dev, vq); > } >=20 > if (vq_is_packed(dev)) { > @@ -664,6 +665,8 @@ numa_realloc(struct virtio_net **pdev, struct > vhost_virtqueue **pvq) > return; > } > dev->guest_pages =3D gp; > + > + vhost_user_iotlb_init(dev); > } > #else > static void > @@ -1360,8 +1363,7 @@ vhost_user_set_mem_table(struct virtio_net **pdev, >=20 > /* Flush IOTLB cache as previous HVAs are now invalid */ > if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM)) > - for (i =3D 0; i < dev->nr_vring; i++) > - vhost_user_iotlb_flush_all(dev, dev->virtqueue[i]); > + vhost_user_iotlb_flush_all(dev); >=20 > free_mem_region(dev); > rte_free(dev->mem); > @@ -2194,7 +2196,7 @@ vhost_user_get_vring_base(struct virtio_net **pdev, > ctx->msg.size =3D sizeof(ctx->msg.payload.state); > ctx->fd_num =3D 0; >=20 > - vhost_user_iotlb_flush_all(dev, vq); > + vhost_user_iotlb_flush_all(dev); >=20 > vring_invalidate(dev, vq); >=20 > @@ -2639,15 +2641,14 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, > if (!vva) > return RTE_VHOST_MSG_RESULT_ERR; >=20 > + vhost_user_iotlb_cache_insert(dev, imsg->iova, vva, len, imsg- > >perm); > + > for (i =3D 0; i < dev->nr_vring; i++) { > struct vhost_virtqueue *vq =3D dev->virtqueue[i]; >=20 > if (!vq) > continue; >=20 > - vhost_user_iotlb_cache_insert(dev, vq, imsg->iova, vva, > - len, imsg->perm); > - > if (is_vring_iotlb(dev, vq, imsg)) { > rte_spinlock_lock(&vq->access_lock); > translate_ring_addresses(&dev, &vq); > @@ -2657,15 +2658,14 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, > } > break; > case VHOST_IOTLB_INVALIDATE: > + vhost_user_iotlb_cache_remove(dev, imsg->iova, imsg->size); > + > for (i =3D 0; i < dev->nr_vring; i++) { > struct vhost_virtqueue *vq =3D dev->virtqueue[i]; >=20 > if (!vq) > continue; >=20 > - vhost_user_iotlb_cache_remove(dev, vq, imsg->iova, > - imsg->size); > - > if (is_vring_iotlb(dev, vq, imsg)) { > rte_spinlock_lock(&vq->access_lock); > vring_invalidate(dev, vq); > @@ -2674,8 +2674,7 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, > } > break; > default: > - VHOST_LOG_CONFIG(dev->ifname, ERR, > - "invalid IOTLB message type (%d)\n", > + VHOST_LOG_CONFIG(dev->ifname, ERR, "invalid IOTLB message type > (%d)\n", > imsg->type); > return RTE_VHOST_MSG_RESULT_ERR; > } > -- > 2.39.2