From patchwork Wed Jun 30 12:45:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suanming Mou X-Patchwork-Id: 95055 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9A87BA0A0F; Wed, 30 Jun 2021 14:46:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BE6AB4126A; Wed, 30 Jun 2021 14:46:33 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2070.outbound.protection.outlook.com [40.107.244.70]) by mails.dpdk.org (Postfix) with ESMTP id A49CB40040 for ; Wed, 30 Jun 2021 14:46:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aw9hERnSEisfXjFmzIkGLJ7En7/ygTuWEFfwBcO9yt7LIoArq4ZyByoCvaqyJ2Aq35uDXzhcZcqwKmWmq5u5pQn+poHN4ARXn7fQU7+esXT83itmv3qGl219l+nUMtqFrbfGiYvL7NsVipF6qLwXESHBxJqAiRjOyO1BByLGzsR606To2q4ICWXTbqGBorlWBmy0t0vfIXdPwyLZFAaQXXZ/qkZLVfWQD09wyzm1I6JUqgnoB7U2IgiiTQCGAClzYR8fRZeLweR+PoLSENZxFi7BBMDS75IObxoChV9c3PLP/yMLdyf9x9vl1EGd0i1JV8FvI0NwT5eo96kfLtbLRg== 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-SenderADCheck; bh=Sn456CeZcsUOaCDkAvywA4S0SZXVH3xrrIFlbhWHdDU=; b=K0YQsLYlUKoM8bgjJ63PHx79XYLyh8E+HILkkYIK428KIedfeHCvi2GQmQAuintsz/I2F8LeVWixIcT1wM8wyZAxJ4NlN8mx4CCmFBNZ7qUBPVjl7YOjiwCpoHSCQRakBc119Z4ZPDw/9Z1TPNtfj68D+NGyqQxpa9HR1TRRiy5nEk2KfgbCyCo0OW/jUdQb2GijByv/AtKh7DvEGAU+emr13d+ABXdei0f93rOgabrG53scUN0Cvaua+7KRe/j8TlvxGMydkvd15OXmxPah0vIKDIwsLlim7Hxv7gpLAVAEgtxWTGqeBzpWP3VmXZG/I8e3lZTURBaYpVxNBWg3kQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); 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=Sn456CeZcsUOaCDkAvywA4S0SZXVH3xrrIFlbhWHdDU=; b=LOgUJMG0aVtcx8ZjoqlNyw5kCP73xaR9lpQwMaL4LLs7emgdUps5fsDcL/uNJdY8UfaU6vmWy5RYa4X/xSg+EBMJU5Yw7q6Ido9qqhd0Wqlj7KC2xzKlIYWDelK4NEAMGZjRn4ky/O1gCovHz7rKRyD3naJM9q4zqxBUZ75wW+j7kKecMYy91q4LQMVEOMwnqMUxWdFPLt/WJByf1rflpL5GuK2Ih2RWAWSLO/4d+UmhgHgU2mZ/K4ZkAnoLDLj+lOVVuPI7keadyt/tG/U/OghzjJbudMdeha505ag6J9s6ZAFTItcKHDH8Ibd3tF5FiC74wFptWkZysf1W/vQWEA== Received: from BN6PR20CA0067.namprd20.prod.outlook.com (2603:10b6:404:151::29) by BN7PR12MB2740.namprd12.prod.outlook.com (2603:10b6:408:23::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.23; Wed, 30 Jun 2021 12:46:30 +0000 Received: from BN8NAM11FT042.eop-nam11.prod.protection.outlook.com (2603:10b6:404:151:cafe::b8) by BN6PR20CA0067.outlook.office365.com (2603:10b6:404:151::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23 via Frontend Transport; Wed, 30 Jun 2021 12:46:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by BN8NAM11FT042.mail.protection.outlook.com (10.13.177.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Wed, 30 Jun 2021 12:46:30 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 30 Jun 2021 12:46:27 +0000 From: Suanming Mou To: , CC: , , Date: Wed, 30 Jun 2021 15:45:48 +0300 Message-ID: <20210630124609.8711-2-suanmingm@nvidia.com> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20210630124609.8711-1-suanmingm@nvidia.com> References: <20210527093403.1153127-1-suanmingm@nvidia.com> <20210630124609.8711-1-suanmingm@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL101.nvidia.com (172.20.187.10) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 597f1ca6-3a44-4642-3fb0-08d93bc51575 X-MS-TrafficTypeDiagnostic: BN7PR12MB2740: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tGsW3V27SgQDsb53M+c91WyneKxJnlfJx2UtY9md3lQG1arO1UvfGhUbxQhmpRGXnX8p2jKIoPorlZMrTbJil6aca5OG6tQ8jvzNLkWy1gz4u6ETyj2Wr6SEWoNcNEiTgIPmrveAe4L6cRmj3pRZY7ypCsbNMcgonj3jQV8hEEX2qbl2a5BXO0em/bG8K6N9AsPjCt/twVhhBfEps/fH9xmi6vCMcWn9vcwkqwvXrGpg5GEosee+58SaLo5SdU+Yf4FEIOTZLyGKkgDhhZdG/K42ARjAumZlmj8/CZYux5xR/cSYWzDyVP/4faGH7OYg9yALOL8G6AGbhO6S7yqTdjcQ3AWVJpk9ivyRTli0Xs8fviYNHg8lpq/88N63XXCyBeJ4zhxrB/bvoQ0uBxpCqvrGN4WGdCNEqnA34KOtUsNefl6sgXEHPCzzfgZEvzsj4EIGQU8SMV2EHCND+naX2eqyefCst3aA6rBFocc7JvOIA7+yxppf8eVfq9Zjp8B6UaxR7WGy0dV4K/aTNR19ykTV4692aMCja87KZ8RJ6rDstwPC5bQmFkY2kAEwXwYQRS3XUNy/s7NO1+kNeXWahd2vh0f+ec1q1TUdhT0IQDOw/jg1WJCh1XP6NCZAhFOJUIyRpBB7nARKUqYPB/jjh6pI/LjNOTMV0NOLXQ9tfRJNSSzmy51sTa3RJMXMTgYh/GDagK3tjKcARLWc+tg6tQ== X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(136003)(39860400002)(396003)(346002)(376002)(46966006)(36840700001)(26005)(356005)(55016002)(426003)(36756003)(186003)(16526019)(83380400001)(2616005)(6636002)(6286002)(6666004)(5660300002)(336012)(7696005)(54906003)(36860700001)(1076003)(70586007)(70206006)(8676002)(47076005)(7636003)(478600001)(86362001)(110136005)(2906002)(4326008)(316002)(8936002)(82740400003)(82310400003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2021 12:46:30.2458 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 597f1ca6-3a44-4642-3fb0-08d93bc51575 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT042.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR12MB2740 Subject: [dpdk-dev] [PATCH v2 01/22] net/mlx5: allow limiting the index pool maximum index 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 Sender: "dev" Some ipool instances in the driver are used as ID\index allocator and added other logic in order to work with limited index values. Add a new configuration for ipool specify the maximum index value. The ipool will ensure that no index bigger than the maximum value is provided. Use this configuration in ID allocator cases instead of the current logics. This patch add the maximum ID configurable for the index pool. Signed-off-by: Suanming Mou Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_utils.c | 14 ++++++++++++-- drivers/net/mlx5/mlx5_utils.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c index 18fe23e4fb..bf2b2ebc72 100644 --- a/drivers/net/mlx5/mlx5_utils.c +++ b/drivers/net/mlx5/mlx5_utils.c @@ -270,6 +270,9 @@ mlx5_ipool_create(struct mlx5_indexed_pool_config *cfg) if (i > 0) pool->grow_tbl[i] += pool->grow_tbl[i - 1]; } + if (!pool->cfg.max_idx) + pool->cfg.max_idx = + mlx5_trunk_idx_offset_get(pool, TRUNK_MAX_IDX + 1); return pool; } @@ -282,9 +285,11 @@ mlx5_ipool_grow(struct mlx5_indexed_pool *pool) size_t trunk_size = 0; size_t data_size; size_t bmp_size; - uint32_t idx; + uint32_t idx, cur_max_idx, i; - if (pool->n_trunk_valid == TRUNK_MAX_IDX) + cur_max_idx = mlx5_trunk_idx_offset_get(pool, pool->n_trunk_valid); + if (pool->n_trunk_valid == TRUNK_MAX_IDX || + cur_max_idx >= pool->cfg.max_idx) return -ENOMEM; if (pool->n_trunk_valid == pool->n_trunk) { /* No free trunk flags, expand trunk list. */ @@ -336,6 +341,11 @@ mlx5_ipool_grow(struct mlx5_indexed_pool *pool) trunk->bmp = rte_bitmap_init_with_all_set(data_size, &trunk->data [RTE_CACHE_LINE_ROUNDUP(data_size * pool->cfg.size)], bmp_size); + /* Clear the overhead bits in the trunk if it happens. */ + if (cur_max_idx + data_size > pool->cfg.max_idx) { + for (i = pool->cfg.max_idx - cur_max_idx; i < data_size; i++) + rte_bitmap_clear(trunk->bmp, i); + } MLX5_ASSERT(trunk->bmp); pool->n_trunk_valid++; #ifdef POOL_DEBUG diff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h index b54517c6df..15870e14c2 100644 --- a/drivers/net/mlx5/mlx5_utils.h +++ b/drivers/net/mlx5/mlx5_utils.h @@ -208,6 +208,7 @@ struct mlx5_indexed_pool_config { uint32_t need_lock:1; /* Lock is needed for multiple thread usage. */ uint32_t release_mem_en:1; /* Rlease trunk when it is free. */ + uint32_t max_idx; /* The maximum index can be allocated. */ const char *type; /* Memory allocate type name. */ void *(*malloc)(uint32_t flags, size_t size, unsigned int align, int socket);