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 40DBF43F12; Fri, 26 Apr 2024 09:40:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B856E43AE0; Fri, 26 Apr 2024 09:40:55 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2088.outbound.protection.outlook.com [40.107.244.88]) by mails.dpdk.org (Postfix) with ESMTP id 6E00C402EF for ; Fri, 26 Apr 2024 09:40:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=azJubdJmdAEWx+fQj/1B0MFFgARF4s1ExR9SU/kclQ3gEYH+jC9YGJ1Le5Tbyy5oNp5kOqWlBBm0KBbxN1T4SDQzQpjBmr6uVnDfaVuX07/NBYQya7EqM5WD3r5HeZ8DzQm/LHg8O7vgLpTXasc8t8zTMbdHcP3uTE/jyDFxggl7y+Kynbs+d7oAOmp8LDvvj1w091pHLvVdEglQvRgvn6cjgb2YMuobwSG6Bm56vKTI2nq5NLxaiZvNY2y+VeBQyzEH4YXHErcmwks5LDMbDA5cQT13K4kwVhECmVxRC+KJcJ+rcmLUhrTr+bnxkm5wpVyis0LjBbegJ0bQnII3tw== 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=U/iwzCZB+kGhWJWQ0rC8iqYoFckybLlZ+GqW5XYW3yU=; b=VFFfFqSxYYCdNrO1883RwSLV2P0J1Ln0wlTzxKUTfH1VBz3dsN1+kO9cHHdjHayp5ERDKO6IjJb3389A2aOgZWe6mXdu/z7LimK6Dk1XxHQ0ptD4xkNjvD3d6eiqp1rErL3OSgEjteNFFc/fuMRfZsrGZoGWF/pJ20vBz/Mgfm9/B3dOQ9Z0QLNIjaieu4ZIG7lB/pGhhbhAPJLymrTQV80qy5DzuZHZ/pqhwiM9zBfI8i7lzr/Om+kH5L1MObt0u2rvp+KK1ONNbPN1yZaftIaQS0uXGyI+VBHUDv6z1wh+3q0c4qi6pgTK/sAbr3FVi7bGWMUha3MoOWss+Mqk+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U/iwzCZB+kGhWJWQ0rC8iqYoFckybLlZ+GqW5XYW3yU=; b=eicRYY7BrWGcHTcvR9kUFD7TZWbX6zyzKC3DGcDiVNV5mL9q5USjyMGVRqfFrJw17TZtgKS/kDecqK/mql+RTIQkTIs7xYAG0ePK9lYpWFCLnaFluIdemzgjy59tAGWQ6i9D6FeQ/JfjpZu0VrDUUKoQu5FCqhvzgEfGtXJclZTV3QtYdCiTC4iyUjcfp6WtlroqVIea2LsJcQoG7IHbxtfmGQLNkqEHRlTqwAgWT3B3kJrqLLwSP/WxDrDDv1UhFILz2a6oCne2FqREdxJq+06Mio/jlU7KzAdF4X8WhzoZqxPg+Y8lTjNbnOis5DEuuB1vZSzXzhH4D9bS9Sb6vw== Received: from MN0PR12MB6341.namprd12.prod.outlook.com (2603:10b6:208:3c2::13) by CH3PR12MB7571.namprd12.prod.outlook.com (2603:10b6:610:147::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Fri, 26 Apr 2024 07:40:51 +0000 Received: from MN0PR12MB6341.namprd12.prod.outlook.com ([fe80::4cbb:90c1:e4f:38d5]) by MN0PR12MB6341.namprd12.prod.outlook.com ([fe80::4cbb:90c1:e4f:38d5%4]) with mapi id 15.20.7519.023; Fri, 26 Apr 2024 07:40:50 +0000 From: Chenbo Xia To: Maxime Coquelin CC: "dev@dpdk.org" , David Marchand Subject: Re: [PATCH v3 4/5] vhost: improve fdset initialization Thread-Topic: [PATCH v3 4/5] vhost: improve fdset initialization Thread-Index: AQHainPug4QpkS4IVkqnJfvy0w/11bF6RSgA Date: Fri, 26 Apr 2024 07:40:50 +0000 Message-ID: <2CC8E7C2-D630-4907-92FA-15D7AFC864D1@nvidia.com> References: <20240409114845.1336403-1-maxime.coquelin@redhat.com> <20240409114845.1336403-5-maxime.coquelin@redhat.com> In-Reply-To: <20240409114845.1336403-5-maxime.coquelin@redhat.com> Accept-Language: en-US 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=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN0PR12MB6341:EE_|CH3PR12MB7571:EE_ x-ms-office365-filtering-correlation-id: 9e2ba1d5-126f-4516-347d-08dc65c43216 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?us-ascii?Q?Mf6MDgu/rLXZPK0tATZyAc7JrrIEsecI8BEoAlcdS8SqQD5bqQWp9jLa84q+?= =?us-ascii?Q?WJlx8lG3k/dXooqKb80TurvP0S1S6TkeEiKbbE4ltGHE/KcCA5N4jQZfbv9T?= =?us-ascii?Q?jiqLSKHtskMZ76Q2xQTMqN8s8zVAuXyPGoUTK/wVRdJXAONJmMoXlDwGZSCY?= =?us-ascii?Q?PvwMuw2qNP1P1on0dcWwU/g3MSr2+EzzqE30J61Z4QGhBdw24rvTzTlWuGwy?= =?us-ascii?Q?5hTmdo40dtj7gQfjTNVdzue4yyiXfeLFljVoWEh2AMWqtF5oiZ1iZx0/q/+I?= =?us-ascii?Q?Hof9w5bDh3HMGuP0ti0+UyUnqebFVe/a+xt23bEfvZuZPuh9X/UF7ayPK52z?= =?us-ascii?Q?MlrZwXByEf03Res+MyD4NKhv8upALv88S7MK9Bs9GlbxJYv/gAeLbPE8I4qe?= =?us-ascii?Q?a4OWo2QrcRUl08rqB7tOt9lYJltQmeOMueqCRKL4+w+lfUAxdVNhOR3q06rv?= =?us-ascii?Q?kC+4r6BGQ8pKvpq2D0KL9pkNjRDJ2QEkbkDIuB9uilHKCG6JZ8wmubLPz9Sy?= =?us-ascii?Q?NFEe0zGkxlhGmhvVx+McnA4SwsLhvXU6zgnRR5kxQp5kkXiIQpKzaPaLRd/Y?= =?us-ascii?Q?b75/pQ/PjlubgeyGd3SU5IJqMhIl7Zn+2SYU+iqrM7YQxB9m6CX1MFa8V9eE?= =?us-ascii?Q?a3zkuJ8bU8vypQFBHgOdseQsRCCJ/N8W5a3IGq1kEsea5yxCehxfjm2uuorT?= =?us-ascii?Q?sYdb8h5JmpJfU7kpDQAVnK18QArF/aMXPPbOnu9JORo15mWJSuGyknjVwTcL?= =?us-ascii?Q?8JK34SfMo5kEa95eUp7nD2C3rjDQND+zvqOVw1RwMXMsMDCteNq2tD/v59fj?= =?us-ascii?Q?O3gwKqnq9+2VFxBtpnBSPZTqXr6bDBoeAspHjM87Cfb5fdU4RXprKHUegi8h?= =?us-ascii?Q?TbvKfnA4bMFtlK3g1TihbIL+go+lEUsFXF1+fK8RcWCfVVDDhmBuR3m39oTB?= =?us-ascii?Q?m8oChRt1974WMfJ403ou9ez22vTWIasDMh/WDk5YC7BnweVEGs1WcmuuUFj3?= =?us-ascii?Q?zwyRQuL4w5UPRCKgPI6bmxD8NbH+MxHlEHLgZ0Yfg2BTqYLG8fdTdOgxawNq?= =?us-ascii?Q?wPe2rjtyo9m7ETAcg/b7wpcYITQ7FB3G5duJ3Fb/VvdlArPq9HSKZGFpyMix?= =?us-ascii?Q?yREXXtZAPkzp7kxIiGkuLkfbtu2V7U4BIWzJp3eCXaDsYAjM02cSZojtEPOa?= =?us-ascii?Q?+yRIowhR9FpYBL4LYgQnYTD4z7wQ4zw8AYsYgCBY4OhQ+Ab/2QwF7dTvIXBO?= =?us-ascii?Q?u013XwIffF8SwX970Zo4AD0SQI05HN105tPKKBB1gR2f1hqRcfJrtD0azQUT?= =?us-ascii?Q?oe6Sgb7otdyT80PK+4v4j+s5?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR12MB6341.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?j73SEVwK3LXbmX29qOd+P2osm2Ytc8Gv7QU4aAqkwsHxJYrVV1XD8n2UCKjb?= =?us-ascii?Q?usj6UJRYXxcfTOrYfPAS+d0eQJQYfWmXeRYBLYEM9DdOB0BfNw9kXP2SgXpt?= =?us-ascii?Q?ef7TtJJMNNFBlzkn0V5oTXKDlPYFU/r2jS3n6qJYZTGcSXSdNkS4RSBuDEL+?= =?us-ascii?Q?q6eghURAaBFemu/DL1PgzJpT/v2yYHOWKuSDyomzXF7SBWBLuhFrnOhib+7e?= =?us-ascii?Q?cmzoo6ejOr5NKmQjYl8NZtNNATIJ6t9h/HFenE6Vxb+2+CTEl5j4B9Us0VrK?= =?us-ascii?Q?y/ey9ksxDix3Vl+rHzHte9N+CTFil2ofOJTRMQPEbeJ7nmChBPaBsQ+uTy5k?= =?us-ascii?Q?jJMdM5MZ6BMQXp7rC6eXPNITZu5dG3+7+H8uBbna21n9tN9hyYNVpeEE3lU5?= =?us-ascii?Q?t+joCHN3nzlpGc5G6gLDwsMslETOW84k5Xb4MyRITjNkqmv+hIryvZoGf6ag?= =?us-ascii?Q?2/l51T+XpIYNNY2g7+/kEJ2Aful7R5uOThueeideTGUgRfSL3TYFNTJ9cLSg?= =?us-ascii?Q?xE7+52DK+FX4kh0jBp8T7pcR4aYMt7uAKMbkt91hjiTSZvmttmS1HDPpUL/6?= =?us-ascii?Q?A4nPvmX9qHkNEYtRsO9mflMqeoFqnODWyDAQ8ub6eNqyQMElrzktuhUUWxuY?= =?us-ascii?Q?CfjBs+Tg4rNams9VarE2X3ZiDs+UmvaHT7p4S5t5VzciIesidDF9yfgzz1DP?= =?us-ascii?Q?e7d66OYR3Gf35f3tuuNRMWeZ1WkMc9Smf8nB5jqX1hC8x1uiqGwS4cb1THih?= =?us-ascii?Q?9mnm3XxwNnUlvQkCApq5KzB6LR0pnbwJKWa6pdxSiJoirjM8KHBb7YD/qfkn?= =?us-ascii?Q?IlfT3nIdBFResYyVOW6zU7uuNITn2xOH83gX1+pGqkteUshpeEhOBH2zaBlk?= =?us-ascii?Q?MeD1n7xL0Q2UGyNBzXQkgl+7Z596uHHz1nkgnyBAdgznnlMwSn0ChR26pOba?= =?us-ascii?Q?aHrL5U1JDy2z4RfOvjZ/Uy8uoIeLoPpOM9RVtoobx09FXLp0i7ewabVmz3iR?= =?us-ascii?Q?T/wgIRgP5I/QSg94dGM820IUMkxFdMMcpOj9vLiTSwA42nvcAC9NoB1Yrnwc?= =?us-ascii?Q?MOKnw30gZNrPYxUhvRCUDFpJWx3m1ZSKi6JriGDyuYhkhnzdOWZX8Yo1xhyZ?= =?us-ascii?Q?doYBduCk/ibuMNjQuZSoEWjKOhh9dCEfUYTYABIPoRA4kwnIP3fvNMV4dgSY?= =?us-ascii?Q?vNJRIieUCiewj8GrZuK6WGwKzmxFpGG6QHHhqB7lpwME5VEPQwoXXVG2bKPR?= =?us-ascii?Q?Ktm6pKAyScSxDiToU0M8vf0MxdRTtKD4gGXYhyBQ9+ZIVbaMUFDz2yP7g2dx?= =?us-ascii?Q?AlIBpQFYDZ23ewISeCpeFxrzUJxrDnSRbW4g9Wy2VpHhfecKLqePl/UMv4UH?= =?us-ascii?Q?Dh1njaDrBDdIvVPu6tMs4CeObiPMDDeE4KFrZ4m1wZuXoocD2/I0ESU41Jwv?= =?us-ascii?Q?NhW2F06BRj/RcLA7PNackFeNzAKoHVPB/ijqcuhLB7CNY9PlYXfsFxqlkHGa?= =?us-ascii?Q?1AgdIXv2RE31pM3fnelAj/SKLy4pT9UV1DTSQBshLp45SMTQEU8BXY8vQmUC?= =?us-ascii?Q?G+o8c6lRe7yDa3mydVOGWNTx8oyzOEyTXkSq0a5H?= Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR12MB6341.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e2ba1d5-126f-4516-347d-08dc65c43216 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Apr 2024 07:40:50.8024 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HwYE6nIxGYNoFKSWLjLIrZKGphrT/xJUhpU65F6AsuLvzLgh+6MXmE9ldvFm8pN6MsP9pixV2t2FmxW0WLdDCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7571 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, > On Apr 9, 2024, at 19:48, Maxime Coquelin wr= ote: >=20 > External email: Use caution opening links or attachments >=20 >=20 > This patch heavily reworks fdset initialization: > - fdsets are now dynamically allocated by the FD manager > - the event dispatcher is now created by the FD manager > - struct fdset is now opaque to VDUSE and Vhost >=20 > Signed-off-by: Maxime Coquelin > --- > lib/vhost/fd_man.c | 177 ++++++++++++++++++++++++++++++++++++++++----- > lib/vhost/fd_man.h | 39 +--------- > lib/vhost/socket.c | 24 ++---- > lib/vhost/vduse.c | 29 ++------ > 4 files changed, 177 insertions(+), 92 deletions(-) >=20 > diff --git a/lib/vhost/fd_man.c b/lib/vhost/fd_man.c > index 0ae481b785..8b47c97d45 100644 > --- a/lib/vhost/fd_man.c > +++ b/lib/vhost/fd_man.c > @@ -3,12 +3,16 @@ > */ >=20 > #include > +#include > #include > #include > #include >=20 > #include > #include > +#include > +#include > +#include >=20 > #include "fd_man.h" >=20 > @@ -19,6 +23,79 @@ RTE_LOG_REGISTER_SUFFIX(vhost_fdset_logtype, fdset, IN= FO); >=20 > #define FDPOLLERR (POLLERR | POLLHUP | POLLNVAL) >=20 > +struct fdentry { > + int fd; /* -1 indicates this entry is empty */ > + fd_cb rcb; /* callback when this fd is readable. */ > + fd_cb wcb; /* callback when this fd is writeable.*/ > + void *dat; /* fd context */ > + int busy; /* whether this entry is being used in cb. */ > +}; > + > +struct fdset { > + char name[RTE_THREAD_NAME_SIZE]; > + struct pollfd rwfds[MAX_FDS]; > + struct fdentry fd[MAX_FDS]; > + rte_thread_t tid; > + pthread_mutex_t fd_mutex; > + pthread_mutex_t fd_polling_mutex; > + int num; /* current fd number of this fdset */ > + > + union pipefds { > + struct { > + int pipefd[2]; > + }; > + struct { > + int readfd; > + int writefd; > + }; > + } u; > + > + pthread_mutex_t sync_mutex; > + pthread_cond_t sync_cond; > + bool sync; > + bool destroy; > +}; > + > +static int fdset_add_no_sync(struct fdset *pfdset, int fd, fd_cb rcb, fd= _cb wcb, void *dat); > +static uint32_t fdset_event_dispatch(void *arg); > + > +#define MAX_FDSETS 8 > + > +static struct fdset *fdsets[MAX_FDSETS]; > +pthread_mutex_t fdsets_mutex =3D PTHREAD_MUTEX_INITIALIZER; Static pthread_mutex_t ? Thanks, Chenbo=