From patchwork Mon Jul 5 05:27:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 95256 X-Patchwork-Delegate: thomas@monjalon.net 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 EF54DA0A0F; Mon, 5 Jul 2021 07:28:00 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 90CB14068C; Mon, 5 Jul 2021 07:28:00 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2041.outbound.protection.outlook.com [40.107.244.41]) by mails.dpdk.org (Postfix) with ESMTP id 1CF2A40141; Mon, 5 Jul 2021 07:27:59 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eG95IEinYn/cCtMpBcpr5QZP9WEzd7zX0au41kn7iRwp29OwaMaICM+T8yDnsgorwhfWqWmwdI3tXLtFbc5rg1W0qRQt8wHjtYl0F+wecQWtpeIMNHkO+yRXt2PafQqmbrNyNK8BDldGMeSIfyCHQUQv29kFO/dxRTV19MS+tyMqMGwzkOQMkXP+8klDAmjRIAh5XNEcwkJH2Ce8HbBcyVFV1N5bST7l8mSG6tx6kPuPiE2AQwr1DKq2lYOjzZjs+N4/5goiGQjCH5Hsf9mj3MsvOpKew2/EVw9+FV6BlwNh3w6Fr9e+ZZrlnpLpxJciu5FylV/rXxgI+nnmpRWwVQ== 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=pWCFDb2etJiKF9B7Xj7LtZrBIUw89yJYv9690fmftTQ=; b=PyXJHkRKQQM94iOjBS0TEAyHsVnW7EKicn1wzSAZR4nAkZsaJZFLaFdcp1/kVGaOh/AMI8glmH521O6s63yTsWFGCEkoAe8l/U1wlX+tvhHG4JKkHQgN5vDuungasHDaYmSQ++OUQ9zNx8YmD0bwEW2k9U1C6XJzn8qq+cbQTS8cgTuWHu8GJbxcpHjrl2IfIHhtPwHwu0MzKUKGzUNYte6kRo3Thgnw4VFKpzdr7DCmAZP3/GVALXBERTc+Y8Jevc6ETnYomXwcI8MCA9RaANpOdMoP/wWPcgUc+DC1v78V6qOm22t+0+sa7mBpBpBjLfW3FAjIsCotOcQM4Mf6+Q== 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=pWCFDb2etJiKF9B7Xj7LtZrBIUw89yJYv9690fmftTQ=; b=FewPXbjsxCu9o+3npiWPYuuxqGAM/hSQqzcXa7AiU28VwDely86xzv4j3/BbWlcszfvxuFTVqrGFh+c426B9Qu7+0xEiCgX/ziTxy0L9mFvrpsEt0fyeHSBOoO6a8s2QAMp/TMj9aJA4k7gjMkMLKLCxDbw+T+4yl0eI2yRNsTqEdqJhagasMjZosDKHUjNk+klu1AzeTJmJ4gRes9107EXTPOW2RlLfq7OGg1d+ImGXIzDFC1M4gJX+d9e4jv7Ag8+wINjBcruWbd3HugZ19Ne0zbt+aML8c45iEVoIiT1FcpF5+H7Y4+73f83kv/rIO2JCJx/bZl/N+V7VURtrfA== Received: from CO2PR04CA0196.namprd04.prod.outlook.com (2603:10b6:104:5::26) by BYAPR12MB2727.namprd12.prod.outlook.com (2603:10b6:a03:71::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.33; Mon, 5 Jul 2021 05:27:57 +0000 Received: from CO1NAM11FT005.eop-nam11.prod.protection.outlook.com (2603:10b6:104:5:cafe::a0) by CO2PR04CA0196.outlook.office365.com (2603:10b6:104:5::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23 via Frontend Transport; Mon, 5 Jul 2021 05:27:57 +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 CO1NAM11FT005.mail.protection.outlook.com (10.13.174.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 05:27:57 +0000 Received: from nvidia.com (172.20.187.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 05:27:54 +0000 From: Michael Baum To: CC: Matan Azrad , Raslan Darawsheh , Viacheslav Ovsiienko , Date: Mon, 5 Jul 2021 08:27:28 +0300 Message-ID: <20210705052730.2283962-1-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210628192347.1825713-1-michaelba@nvidia.com> References: <20210628192347.1825713-1-michaelba@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.5] 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: d30bf9d8-cfca-4748-9280-08d93f75a5a9 X-MS-TrafficTypeDiagnostic: BYAPR12MB2727: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Vk8hvtbBaSrUMq+NDlCUFt9LRG5FqzCkxkQ+y2bag/vbZ7Wh0E/SDSJIXJEAvplvnqwtX7hDoODjtjC0KT4aENCriILkVyvdDZooTDNfN/oMeGgKxazS0tFI3jCh8AztYyX2xjNvkxQqGzSP8FAu3ubKfCGQ9PKGnd60c1S7jQqZaiNSYdy84aXVWgsBrfoom1Ud3XgJ2cbJaYGE6sGMFEmXwUquPc5WU9S0w7j+V8//CViJ4/XzVkjL466OqeTtqWGJgWp03jBUlAOrlrvz7VOnbq6T1+5C4bmHXno3X/6+b4W5ItBpC77h0q5+Lo3/yZ1mv7hsjN5oPK9tPrYXepeXG+T5/9koxBIsPY8EQ7LWuXYvQOOUz+db4AjrX1HOO/jUTk8pSldkYyhmOQ3EpPKJ2VHprpzkDUEvMaQ5yD2SjEkLOWTVU0DakFJVTuhdLlNMjzXb3yD4QxaGzJ+Mpw/9ofHmpGgLQXQEYQl4Ooy0vUcUoJNy2TpJGcn97bVUSEFkVuh42BZfOMzIMSrxYBy8VNSP1TGaucqhg1uB2GRKLD6F80fuS9BapayzcIKEYf88f2Qxr8NzIQd7/KrlLkQaqUqMptyfuNy8utMmntt2IYgilcf61ZM2h/pCdx9JX8LHihHVUF3RJ5CiAKSEdoADJPYOx6oUGmAhd6mE4OVgmWxjw6LhlT2gGC781prdABmI7idOiqn8Lq835b6MeQ== 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)(346002)(376002)(396003)(36840700001)(46966006)(70586007)(6286002)(70206006)(36906005)(1076003)(2616005)(36756003)(336012)(6916009)(4326008)(82740400003)(426003)(83380400001)(6666004)(7636003)(86362001)(2906002)(316002)(54906003)(356005)(8936002)(186003)(7696005)(450100002)(36860700001)(16526019)(55016002)(82310400003)(47076005)(8676002)(478600001)(26005)(5660300002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 05:27:57.1373 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d30bf9d8-cfca-4748-9280-08d93f75a5a9 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: CO1NAM11FT005.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB2727 Subject: [dpdk-dev] [PATCH_v2 1/3] regex/mlx5: fix memory region unregistration 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" The issue can cause illegal physical address access while a huge-page A is released and huge-page B is allocated on the same virtual address. The old MR can be matched using the virtual address of huge-page B but the HW will access the physical address of huge-page A which is no more part of the DPDK process. Register a driver callback for memory event in order to free out all the MRs of memory that is going to be freed from the dpdk process. Fixes: cda883bbb655 ("regex/mlx5: add dynamic memory registration to datapath") Cc: stable@dpdk.org Signed-off-by: Michael Baum --- v2: - Initialize pointer of global generation number. - Add global generation number checking in indirect mkey creation. drivers/regex/mlx5/mlx5_regex.c | 55 ++++++++++++++++++++++++ drivers/regex/mlx5/mlx5_regex.h | 2 + drivers/regex/mlx5/mlx5_regex_control.c | 2 + drivers/regex/mlx5/mlx5_regex_fastpath.c | 50 +++++++++++++++------ 4 files changed, 97 insertions(+), 12 deletions(-) diff --git a/drivers/regex/mlx5/mlx5_regex.c b/drivers/regex/mlx5/mlx5_regex.c index dcb2ced88e..0f12d94d7e 100644 --- a/drivers/regex/mlx5/mlx5_regex.c +++ b/drivers/regex/mlx5/mlx5_regex.c @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -24,6 +25,10 @@ int mlx5_regex_logtype; +TAILQ_HEAD(regex_mem_event, mlx5_regex_priv) mlx5_mem_event_list = + TAILQ_HEAD_INITIALIZER(mlx5_mem_event_list); +static pthread_mutex_t mem_event_list_lock = PTHREAD_MUTEX_INITIALIZER; + const struct rte_regexdev_ops mlx5_regexdev_ops = { .dev_info_get = mlx5_regex_info_get, .dev_configure = mlx5_regex_configure, @@ -82,6 +87,40 @@ mlx5_regex_get_name(char *name, struct rte_pci_device *pci_dev __rte_unused) pci_dev->addr.devid, pci_dev->addr.function); } +/** + * Callback for memory event. + * + * @param event_type + * Memory event type. + * @param addr + * Address of memory. + * @param len + * Size of memory. + */ +static void +mlx5_regex_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr, + size_t len, void *arg __rte_unused) +{ + struct mlx5_regex_priv *priv; + + /* Must be called from the primary process. */ + MLX5_ASSERT(rte_eal_process_type() == RTE_PROC_PRIMARY); + switch (event_type) { + case RTE_MEM_EVENT_FREE: + pthread_mutex_lock(&mem_event_list_lock); + /* Iterate all the existing mlx5 devices. */ + TAILQ_FOREACH(priv, &mlx5_mem_event_list, mem_event_cb) + mlx5_free_mr_by_addr(&priv->mr_scache, + priv->ctx->device->name, + addr, len); + pthread_mutex_unlock(&mem_event_list_lock); + break; + case RTE_MEM_EVENT_ALLOC: + default: + break; + } +} + static int mlx5_regex_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct rte_pci_device *pci_dev) @@ -193,6 +232,15 @@ mlx5_regex_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, rte_errno = ENOMEM; goto error; } + /* Register callback function for global shared MR cache management. */ + if (TAILQ_EMPTY(&mlx5_mem_event_list)) + rte_mem_event_callback_register("MLX5_MEM_EVENT_CB", + mlx5_regex_mr_mem_event_cb, + NULL); + /* Add device to memory callback list. */ + pthread_mutex_lock(&mem_event_list_lock); + TAILQ_INSERT_TAIL(&mlx5_mem_event_list, priv, mem_event_cb); + pthread_mutex_unlock(&mem_event_list_lock); DRV_LOG(INFO, "RegEx GGA is %s.", priv->has_umr ? "supported" : "unsupported"); return 0; @@ -225,6 +273,13 @@ mlx5_regex_pci_remove(struct rte_pci_device *pci_dev) return 0; priv = dev->data->dev_private; if (priv) { + /* Remove from memory callback device list. */ + pthread_mutex_lock(&mem_event_list_lock); + TAILQ_REMOVE(&mlx5_mem_event_list, priv, mem_event_cb); + pthread_mutex_unlock(&mem_event_list_lock); + if (TAILQ_EMPTY(&mlx5_mem_event_list)) + rte_mem_event_callback_unregister("MLX5_MEM_EVENT_CB", + NULL); if (priv->pd) mlx5_glue->dealloc_pd(priv->pd); if (priv->uar) diff --git a/drivers/regex/mlx5/mlx5_regex.h b/drivers/regex/mlx5/mlx5_regex.h index 51a2101e53..61f59ba873 100644 --- a/drivers/regex/mlx5/mlx5_regex.h +++ b/drivers/regex/mlx5/mlx5_regex.h @@ -70,6 +70,8 @@ struct mlx5_regex_priv { uint32_t nb_engines; /* Number of RegEx engines. */ struct mlx5dv_devx_uar *uar; /* UAR object. */ struct ibv_pd *pd; + TAILQ_ENTRY(mlx5_regex_priv) mem_event_cb; + /**< Called by memory event callback. */ struct mlx5_mr_share_cache mr_scache; /* Global shared MR cache. */ uint8_t is_bf2; /* The device is BF2 device. */ uint8_t sq_ts_format; /* Whether SQ supports timestamp formats. */ diff --git a/drivers/regex/mlx5/mlx5_regex_control.c b/drivers/regex/mlx5/mlx5_regex_control.c index eef0fe579d..8ce2dabb55 100644 --- a/drivers/regex/mlx5/mlx5_regex_control.c +++ b/drivers/regex/mlx5/mlx5_regex_control.c @@ -246,6 +246,8 @@ mlx5_regex_qp_setup(struct rte_regexdev *dev, uint16_t qp_ind, nb_sq_config++; } + /* Save pointer of global generation number to check memory event. */ + qp->mr_ctrl.dev_gen_ptr = &priv->mr_scache.dev_gen; ret = mlx5_mr_btree_init(&qp->mr_ctrl.cache_bh, MLX5_MR_BTREE_CACHE_N, rte_socket_id()); if (ret) { diff --git a/drivers/regex/mlx5/mlx5_regex_fastpath.c b/drivers/regex/mlx5/mlx5_regex_fastpath.c index b57e7d7794..6d5096701f 100644 --- a/drivers/regex/mlx5/mlx5_regex_fastpath.c +++ b/drivers/regex/mlx5/mlx5_regex_fastpath.c @@ -109,6 +109,40 @@ set_wqe_ctrl_seg(struct mlx5_wqe_ctrl_seg *seg, uint16_t pi, uint8_t opcode, seg->imm = imm; } +/** + * Query LKey from a packet buffer for QP. If not found, add the mempool. + * + * @param priv + * Pointer to the priv object. + * @param mr_ctrl + * Pointer to per-queue MR control structure. + * @param mbuf + * Pointer to source mbuf, to search in. + * + * @return + * Searched LKey on success, UINT32_MAX on no match. + */ +static inline uint32_t +mlx5_regex_addr2mr(struct mlx5_regex_priv *priv, struct mlx5_mr_ctrl *mr_ctrl, + struct rte_mbuf *mbuf) +{ + uintptr_t addr = rte_pktmbuf_mtod(mbuf, uintptr_t); + uint32_t lkey; + + /* Check generation bit to see if there's any change on existing MRs. */ + if (unlikely(*mr_ctrl->dev_gen_ptr != mr_ctrl->cur_gen)) + mlx5_mr_flush_local_cache(mr_ctrl); + /* Linear search on MR cache array. */ + lkey = mlx5_mr_lookup_lkey(mr_ctrl->cache, &mr_ctrl->mru, + MLX5_MR_CACHE_N, addr); + if (likely(lkey != UINT32_MAX)) + return lkey; + /* Take slower bottom-half on miss. */ + return mlx5_mr_addr2mr_bh(priv->pd, 0, &priv->mr_scache, mr_ctrl, addr, + !!(mbuf->ol_flags & EXT_ATTACHED_MBUF)); +} + + static inline void __prep_one(struct mlx5_regex_priv *priv, struct mlx5_regex_sq *sq, struct rte_regex_ops *op, struct mlx5_regex_job *job, @@ -160,10 +194,7 @@ prep_one(struct mlx5_regex_priv *priv, struct mlx5_regex_qp *qp, struct mlx5_klm klm; klm.byte_count = rte_pktmbuf_data_len(op->mbuf); - klm.mkey = mlx5_mr_addr2mr_bh(priv->pd, 0, - &priv->mr_scache, &qp->mr_ctrl, - rte_pktmbuf_mtod(op->mbuf, uintptr_t), - !!(op->mbuf->ol_flags & EXT_ATTACHED_MBUF)); + klm.mkey = mlx5_regex_addr2mr(priv, &qp->mr_ctrl, op->mbuf); klm.address = rte_pktmbuf_mtod(op->mbuf, uintptr_t); __prep_one(priv, sq, op, job, sq->pi, &klm); sq->db_pi = sq->pi; @@ -329,10 +360,8 @@ prep_regex_umr_wqe_set(struct mlx5_regex_priv *priv, struct mlx5_regex_qp *qp, (qp->jobs[mkey_job_id].imkey->id); while (mbuf) { /* Build indirect mkey seg's KLM. */ - mkey_klm->mkey = mlx5_mr_addr2mr_bh(priv->pd, - NULL, &priv->mr_scache, &qp->mr_ctrl, - rte_pktmbuf_mtod(mbuf, uintptr_t), - !!(mbuf->ol_flags & EXT_ATTACHED_MBUF)); + mkey_klm->mkey = mlx5_regex_addr2mr + (priv, &qp->mr_ctrl, mbuf); mkey_klm->address = rte_cpu_to_be_64 (rte_pktmbuf_mtod(mbuf, uintptr_t)); mkey_klm->byte_count = rte_cpu_to_be_32 @@ -350,10 +379,7 @@ prep_regex_umr_wqe_set(struct mlx5_regex_priv *priv, struct mlx5_regex_qp *qp, klm.byte_count = scatter_size; } else { /* The single mubf case. Build the KLM directly. */ - klm.mkey = mlx5_mr_addr2mr_bh(priv->pd, NULL, - &priv->mr_scache, &qp->mr_ctrl, - rte_pktmbuf_mtod(mbuf, uintptr_t), - !!(mbuf->ol_flags & EXT_ATTACHED_MBUF)); + klm.mkey = mlx5_regex_addr2mr(priv, &qp->mr_ctrl, mbuf); klm.address = rte_pktmbuf_mtod(mbuf, uintptr_t); klm.byte_count = rte_pktmbuf_data_len(mbuf); } From patchwork Mon Jul 5 05:27:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 95257 X-Patchwork-Delegate: thomas@monjalon.net 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 D9ECCA0A0F; Mon, 5 Jul 2021 07:28:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 649364114E; Mon, 5 Jul 2021 07:28:02 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2087.outbound.protection.outlook.com [40.107.223.87]) by mails.dpdk.org (Postfix) with ESMTP id 7ED8540141; Mon, 5 Jul 2021 07:28:00 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ar8/Pkm/+NImDbBvU2o0fse46JFHj+aXURBZXT9yyIHZq5ODuj9BvAuXpLzoenu5IsWhIPlL5CCgcTF00QFpv1dYATix7aI/iT/sYAeJvPvjqsaA6KpDhJO2dgePp/Bb1Mb3hu3GOXpDhj/tTNgAMjpdMkKLUn/yufJWyr6OvQTe/rhHWWZerWpccJtAeL1buWFq5bbh8Ab5C7syUoQ26HTEwuc3oYfFoumrSKsXXd18Gwslzf8Bl34ahnyd6a3ICX4rX3Ke9rZAtV2BNLIsPpndJvgG54vrFnLdYNekOpsuK1SvwFTJkt0iUwn/15niza0AGEBMQNIj3A08PDeeIg== 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=YaGWfYbwgXWioYwomJdPeptflQ8mLCXOwQmXRzQWB8M=; b=d+K5eLDAMV7CCEXMEvs8by14GvoNTIz/VELVs5/hZBIesICgImXu56F5Iudt/Niy+V4ssQnYThHGKZgEGggXm4eZrnZuwYNz6cZ6qeC/dl30usLfYTzvrVhKz63VWggpWikbI62FMMMN7DlW5HE+r+W4gwQPj5Az3dNOSDhHOHPteI8Y7GF58l4C0w+v9LOMhuXuDPVqkw+fJ5nQt4nLEblUnmH2QWgdkZ8wkEpl58SJRL/RQZ4dJITrzU/OkBtAc8Js84WuNGqEDLUjJyoG8B07IgdQq4UlrkiSYSF9FhoESjw8Lz+pcNU6QDXa0Zgfw0/1jICKT4GQsPUYb7i4QA== 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=YaGWfYbwgXWioYwomJdPeptflQ8mLCXOwQmXRzQWB8M=; b=nrSP0rMMoVSrieO06NgvQ+yxEOLgPkW8Pk+S3Hecml6QmtFfQdNl40/IBiojgk/XhaWM9ubaPCHxHFYsLSXIXtSASlIAGwU8gidzrT0tZ8/ttbJ7szQyVmTwcu7KQ4vnX5O5j8ZfdaZhuJwc8AVd47H1nOS1tR5+Jehm5vqA7VVYLX9ujlRJ3kaZk5ZDhLmNNZnXqPbBGgupoNjUAmv0U270WY9ow01de3KBAdAn3AoRb7HRwVFNOQ8w8oJSRTL/gDqfx3PxkNH+TMxEcWCPQ9eLFN0JHssC7FfDdakpx4E6NheNzMvgg10mZZPyFm9bJDYCv21Szm+ImOvyUtBiPQ== Received: from CO2PR04CA0191.namprd04.prod.outlook.com (2603:10b6:104:5::21) by MN2PR12MB4192.namprd12.prod.outlook.com (2603:10b6:208:1d5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22; Mon, 5 Jul 2021 05:27:58 +0000 Received: from CO1NAM11FT005.eop-nam11.prod.protection.outlook.com (2603:10b6:104:5:cafe::17) by CO2PR04CA0191.outlook.office365.com (2603:10b6:104:5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 05:27:58 +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 CO1NAM11FT005.mail.protection.outlook.com (10.13.174.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 05:27:58 +0000 Received: from nvidia.com (172.20.187.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 05:27:56 +0000 From: Michael Baum To: CC: Matan Azrad , Raslan Darawsheh , Viacheslav Ovsiienko , Date: Mon, 5 Jul 2021 08:27:29 +0300 Message-ID: <20210705052730.2283962-2-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210705052730.2283962-1-michaelba@nvidia.com> References: <20210628192347.1825713-1-michaelba@nvidia.com> <20210705052730.2283962-1-michaelba@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.5] 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: af2cd1cd-21ea-495d-bd33-08d93f75a65e X-MS-TrafficTypeDiagnostic: MN2PR12MB4192: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1850; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K3qBaYwO/3eTox9vZIEs02hThk8TfGEC+YKeVHARLj6GcO3zILdBu0Z88fQwFumZeBkPdBKuwVz+AXoTM5/5zC2iTXJ9rIq47I8Xzt8XMPzceG4ipNbgw8TmCQxYuza8kJ4RAk7ZXmSYCGDmWf/RwvFcLzQ7Y6WAE7XDrzo/6A774DAIbfCONwOoJSqI3rwlrsFjWjJ56CN619/lMyJxQqK6655OjH8BKGZgTr6eLqbe9uGs4Q5OtLLqDEOKMGwPvyUBnJxM7aKax7AJSlG8SJutLGfZ3Kx0FDeyFIQOVk/sxn3AxQbQqlxfSHAsbLDKG3Gt8vpy2e4b9DmDs/gnPJDbUL/ZSgJU5pqG6+YTzD1bWFVMOikY+9p5y0oRcxl5RzsrcJfXdit7j0fJ6jI3Tb/F+gs/On58kwNDcuI2wZq/FnIMwUtEGRcpUp8OVAUFS2Dp2era+Cl6tcXc6NAdfmxicJEBby0C9QGVzhMvZg02uH1ii3lGuPR/x5mFNb5I9ppwiZQa5uWKWZoImcURKDhb7qVQCBtkBzUkg1Yoa6uQ03GIBEb6jLk5hYGexotNBQd+YmoAjeahflPczO9+QOhiChFsMgHphmcXhEwN3ifObx4tCB7Dx4ikE0QG5A5SxzJoTRVeIWMh1B93nbRuh9niz8vG8ENTqIF1z8Xfi/BkjixaxHX7ZZNac7OsC2e6WEcVbJroGU01/SY2pHq37A== 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)(396003)(376002)(136003)(346002)(39860400002)(46966006)(36840700001)(1076003)(86362001)(4744005)(2906002)(47076005)(36756003)(36860700001)(82740400003)(82310400003)(7636003)(2616005)(426003)(6286002)(7696005)(5660300002)(16526019)(336012)(4326008)(54906003)(36906005)(316002)(356005)(478600001)(450100002)(6666004)(6916009)(70586007)(8676002)(26005)(186003)(8936002)(55016002)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 05:27:58.3216 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: af2cd1cd-21ea-495d-bd33-08d93f75a65e 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: CO1NAM11FT005.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4192 Subject: [dpdk-dev] [PATCH_v2 2/3] regex/mlx5: fix leak in PCI remove function 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" In the PCI removal function, PMD releases all driver resources allocated in the probe function. The MR btree memory is allocated in the probe function, but it is not freed in remove function what caused a memory leak. Release it. Fixes: cda883bbb655 ("regex/mlx5: add dynamic memory registration to datapath") Cc: stable@dpdk.org Signed-off-by: Michael Baum --- drivers/regex/mlx5/mlx5_regex.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/regex/mlx5/mlx5_regex.c b/drivers/regex/mlx5/mlx5_regex.c index 0f12d94d7e..f64dc2824c 100644 --- a/drivers/regex/mlx5/mlx5_regex.c +++ b/drivers/regex/mlx5/mlx5_regex.c @@ -280,6 +280,8 @@ mlx5_regex_pci_remove(struct rte_pci_device *pci_dev) if (TAILQ_EMPTY(&mlx5_mem_event_list)) rte_mem_event_callback_unregister("MLX5_MEM_EVENT_CB", NULL); + if (priv->mr_scache.cache.table) + mlx5_mr_release_cache(&priv->mr_scache); if (priv->pd) mlx5_glue->dealloc_pd(priv->pd); if (priv->uar) From patchwork Mon Jul 5 05:27:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 95258 X-Patchwork-Delegate: thomas@monjalon.net 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 74E21A0A0F; Mon, 5 Jul 2021 07:28:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B58AD41155; Mon, 5 Jul 2021 07:28:03 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam07on2080.outbound.protection.outlook.com [40.107.95.80]) by mails.dpdk.org (Postfix) with ESMTP id 54E124114C; Mon, 5 Jul 2021 07:28:02 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bYm5Gi81DFnLGawNTnl5dWgBo1qxF+g1XtuYMBblEvgH3xaImK0pYsuUxFqFv+t8h/GgiT/+9XmSMkan0OR/eCEVeAHupJ6I79ihQwAmrKeH4atQI/xIogFJIcW98ghhYGOs5qRIE4NvbevwwBOKbNzmVOAWibjpsZuTBW1U345KwjndZGGb17vrG26Vi7PEy/dXnScUJg2dPeQbT3OeIowcHXwFA5Obk84/EiUyvEKqcM9AmUFx9+oPTIB01dEISmtGrkwAJzj4gOtYWtbYam8u6eY4ovIq9PiA+pVKPXeIT+fT4QVCadRmmMLWG8698qAffN4+bn9wR2teP+emXQ== 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=RjSLZMTHDj0qPCqThkSVPXkrz3GV7g2E+ySbDJlN5mA=; b=WIOyz92HFhIWguAcPQPnLDXSsT9XU5/t87QUR19BFdyBtV8J9ia5guWEsDbvOEzfQ3fpQfHPgHr0s0mU1+IfNrJ2ctosb8KyxfxheoXapwkYkNB7tMr0jUwbxk2YNlpiqTlGSOV8qmJfDbQ72GPDHqEymSGYQ9u85ypbbEMOTu5O7XbNHHc9a2buZTkBAv8ppmzj9cIhRgAgpXjTqZJ8JGeJZjMps1lSoMDcpfoT2LuvBQtkb7UVfztPAC1IPWivWLolT3a+IoUYq8yfOKEk5W6QudOsVj/h55ssHSNuH+ndK4tUUV5zKaDCRkcgjfTg0jZqbq6E6XV/fjD+pWcrJg== 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=RjSLZMTHDj0qPCqThkSVPXkrz3GV7g2E+ySbDJlN5mA=; b=hgTROHfa4yUOS0V87u1Zf6Yt1E4vdAYhmAHRPspLcrLK9PPd7B+y/R6/Y65+kxMmfj6k12D3hxhzyV1tjkfk0sP5yb88Ev6mCr/GMncemKTQAKwIphBJveQJFC0D1GB83U7X4NaxK3pi/YGYV59/Wj4nCzwaXk88gprlGKwxpZbGXujlzbLOJ0fUgtuGPipHmoKHOBd+D2YnIFGzzYTWa3oJv22dM5u+9LsCqs92IkI0SioqV1UI7Tg3SBOjUSo8Tb+E3ElbWxa7dUDy8bziOo6qvckKxlp3pifOywCjrQcxKHB7DFwfWpOXykdosW+MMnrY2GQ4Xu3MoIuv2w566w== Received: from CO2PR04CA0195.namprd04.prod.outlook.com (2603:10b6:104:5::25) by BN6PR12MB1826.namprd12.prod.outlook.com (2603:10b6:404:106::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22; Mon, 5 Jul 2021 05:28:00 +0000 Received: from CO1NAM11FT005.eop-nam11.prod.protection.outlook.com (2603:10b6:104:5:cafe::98) by CO2PR04CA0195.outlook.office365.com (2603:10b6:104:5::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 05:28:00 +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 CO1NAM11FT005.mail.protection.outlook.com (10.13.174.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 05:28:00 +0000 Received: from nvidia.com (172.20.187.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 05:27:58 +0000 From: Michael Baum To: CC: Matan Azrad , Raslan Darawsheh , Viacheslav Ovsiienko , Date: Mon, 5 Jul 2021 08:27:30 +0300 Message-ID: <20210705052730.2283962-3-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210705052730.2283962-1-michaelba@nvidia.com> References: <20210628192347.1825713-1-michaelba@nvidia.com> <20210705052730.2283962-1-michaelba@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.5] 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: e4e2058d-0d90-406f-9942-08d93f75a78d X-MS-TrafficTypeDiagnostic: BN6PR12MB1826: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1169; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +rhLVg5HmnC5J1lTxA/bMwMCVzyNvkv66WAvY6mNa6KOcP+jPG7dBSLE9S127Vsq6LhULIu/GjTwzioHxXN9/N0sKyVKX7BAjcsBLyyk2/UXji06hA/RrjxlFX1J66bJQjsat86OnUNcttUgSry1B3AlWiJDRmFC2hAJCRCldVsl4sjUZXJb6dy6mjXWtI+oNG/pRtZ7ifQLxcS1m2yQ1OE2A8zE2fQIq39OYqGuloiJdi90PSnKQHbBbW8MPBA0xZbExKPaipH8D1yn+ACrocwZiF50PkGnmjuXft07MCn0rp09VleOtKRHq0z0PlW7a/O6i3JD2Q8LANYl5eAgUayYmb2jaqn5MDLvL01ElADwl04Oytb5lgx5O21PI00WDVDgm4gq9zojpMSj38+sTQHWOEmYvMgkknOhNjbXoZUBhSXYnoMSb3cVUimEbwmDaiGL5ZH5I2K/ZcpmymCGP6yb7cp8b+A1GEXHpLywm1h9aeIMEU+t/hprcSrP9UXh7rL9FIkaa2xDvp7XwJ7xUfr/ZHOEuC5f3mZdn3aDaXnv54aFOqVDKmrvkZW0RisNb0rNaMDGzw3GmdlN+LY1hkQBd0ERO8uzZZCBoQF9KwMOADpJpSG0TsLrLaJGZZN3OBTMKKevvhlNIg+dO5Yzoq7qjZftaYv08qoUsBxsAbcA4u+DF6JBE30OHUBNZGiQTcLyGDsXLWyAe4aP088fgg== 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)(346002)(39860400002)(396003)(376002)(46966006)(36840700001)(36906005)(2906002)(36756003)(4744005)(47076005)(316002)(86362001)(2616005)(82310400003)(16526019)(8676002)(1076003)(6916009)(8936002)(478600001)(426003)(186003)(336012)(55016002)(356005)(7636003)(5660300002)(26005)(4326008)(450100002)(82740400003)(6286002)(54906003)(6666004)(7696005)(83380400001)(70586007)(36860700001)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 05:28:00.1565 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e4e2058d-0d90-406f-9942-08d93f75a78d 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: CO1NAM11FT005.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1826 Subject: [dpdk-dev] [PATCH_v2 3/3] regex/mlx5: fix redundancy in PCI remove function 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" In the PCI removal function, PMD releases all driver resources and cancels the regexdev registry. However, regexdev registration is accidentally canceled twice. Remove one of them. Fixes: b34d816363b5 ("regex/mlx5: support rules import") Cc: stable@dpdk.org Signed-off-by: Michael Baum --- drivers/regex/mlx5/mlx5_regex.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/regex/mlx5/mlx5_regex.c b/drivers/regex/mlx5/mlx5_regex.c index f64dc2824c..1c5bf930ad 100644 --- a/drivers/regex/mlx5/mlx5_regex.c +++ b/drivers/regex/mlx5/mlx5_regex.c @@ -290,8 +290,6 @@ mlx5_regex_pci_remove(struct rte_pci_device *pci_dev) rte_regexdev_unregister(priv->regexdev); if (priv->ctx) mlx5_glue->close_device(priv->ctx); - if (priv->regexdev) - rte_regexdev_unregister(priv->regexdev); rte_free(priv); } return 0;