From patchwork Thu Jun 7 16:30:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 40777 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4AD9A1B3CF; Thu, 7 Jun 2018 18:30:34 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0080.outbound.protection.outlook.com [104.47.34.80]) by dpdk.org (Postfix) with ESMTP id 09C621B21B; Thu, 7 Jun 2018 18:30:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o8TbdVtzqB3nOVMFnj8M4a+/oOOuLjkFrqKEGz74HG0=; b=XV2btlCf6jkP4FaPJ/yARKRbMpXHGySxoGyxkuYIScsP/VEQ1n9vPqYa1EFqLEL6eZcPiCcjL81lHxWtMKiwAdBDaEtoN1Ja0Dpwp34Z0wFlGS9xh9fR2GTNXTtY8VLBf9uewkA2t1q0Xmtb9IFnTw1Ctf/LlUGwDDCzhw6f2nM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by SN1PR07MB4032.namprd07.prod.outlook.com (2603:10b6:802:2b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.841.17; Thu, 7 Jun 2018 16:30:30 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Rasesh Mody , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com, stable@dpdk.org Date: Thu, 7 Jun 2018 09:30:20 -0700 Message-Id: <1528389020-4803-1-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 MIME-Version: 1.0 X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: CO2PR04CA0134.namprd04.prod.outlook.com (2603:10b6:104::12) To SN1PR07MB4032.namprd07.prod.outlook.com (2603:10b6:802:2b::15) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN1PR07MB4032; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB4032; 3:SGWBIYUUqtM/Y3IlOITtju/UOJggkxgPt05AHge5WvGc+vXYgZr0fsh9lAI/aJsuzL0Q0AD/MqOhhXrk/LnmRCgnL3FSzVbfb/V/ZirJfgHtk/kZFR+FBAeQdayyzMRpflE/hIMAScw55EBzCgyo4Km0OFxODnveTNDrCLM/ksxMy1OSQqFu4f4Q5QycZe0pHXZKKfd5quitj/oFaIp6BR0UO9vYkIzLd4jy38fl6WqybkJWP0Xgvu0vbJYMDo2g; 25:JIsW4EWeKYkl+MK6TEPOivmPGUVpVqcpigYY0VDKlN/66C5g70b+WHSMx9dSlD9MDU4CWzin9Z0SAWfZ2BW5ps+P/kLRarMLLDV75Toan8wKU7St3GibP/cnGd+kX9ogs2nPDgcIhyEVLfTqGYYN+NtIWcbcxzaeEGop6WGuxuMIr3ZAIDePj80ljF1E5fzFkcDuVhLN2uOVG/BGwoGB7x141FWQkqtC3zKR8uBMzsOpHFwQn3cEUj/Tq5Bet6kW9Bn0D2LUAZjnXHmOgvRC1DUNJSdylXnGpJ/tl2Az0A01jL4fB6vHaq0a5sgdxS2+oQxfe0zF7dxIok/neHNdog==; 31:iOr2OK+VARVCLyf5O+5iJHS6MlBCzMFpx4wVaZjlFTzZwyg5xW806ISfUuWRwI0vJWwwbxM9LyPgoUJAS6AUQNKXPrsB25gu4vopMDES2slAHD94rfgaYPBnlrkISCS8UbTYXDzsgr1nOMDAY0QDatlXpNrgo6ux2JM7EMhTRapHdTvF+Xf1nOS0RU+MgGJnopzVZgDkcILjskjcBDMEMwLYAKZ+IUKHfDOf3I0kAiI= X-MS-TrafficTypeDiagnostic: SN1PR07MB4032: X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB4032; 20:Re+oWxuYxkR0a+nDR8yVvYzEit2JwEsgkM/CaE8Q0xqxOrrnpLYWtjG+wOhe0WxwCdm4ivTP48ww7iwRsz676Hw/bXNy5irNcRuY/y0Wj/p6vu7uqvP1lRImog6oQauad1Wb2AgTnGXApQzIrT19VRf9nzIB9Ct9YnbZWjD6xrlROJJGYNjNRV9+S8sxl3yXII6YNAuZSc2BsILy6loqAAQOR1bamAb3ChysfRw7vktv+SuuzftkSLlBbdfadvYPnncZM6VDoqBKk7NaZc2/GFV0PbUQb6Hj8lXM3/O3To6CAVoAmTVuB2zC4xL7JkZjTuTqSyFt5PK+6m24wLrAWKFa3uMwEjjopzQu2ePVrMReMxYamAeFXblSeojS8pw6va+stO+TZEuN34IXGxytR/YES23s+8UweeuSGffW29jMPNl1CnD05b/d28c6nBCsgRCcdSxv5UF0FJOB5N5DnlmlWU2ihzPDetOnEbRu70P/gZT3Vc8gtQ5hjpzUvzx0; 4:aHItbNxjBv2wZRnEP2W8sCFTbrGCzqcZy0ynkq+FnK3wcZ9xgxEpSiQzv7Oxpqj6RED3TeCqzgJUxWY9gaVvz5ptrcig0Yy0FZBwCYR4YMvgqufkaupp7v8Z3ES8enK8TwaiQOVEYl3y1WDWDLlXQmREJHdXhj9qm+XhJaHh1EGhaKauXP7a8CPtyvXXjFqVJjPERkqfcvkIApQtWtDGenSRJD3hpisNCDTFONw2+kn2xL6OIDHsSMe8PsRjfI7FBhmdL+anQekkfjmex19+fQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN1PR07MB4032; BCL:0; PCL:0; RULEID:; SRVR:SN1PR07MB4032; X-Forefront-PRVS: 06968FD8C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39860400002)(396003)(39380400002)(199004)(189003)(4720700003)(50226002)(7736002)(97736004)(16586007)(68736007)(386003)(25786009)(50466002)(52116002)(7696005)(51416003)(72206003)(47776003)(48376002)(4326008)(2361001)(2351001)(69596002)(6916009)(305945005)(59450400001)(5660300001)(316002)(66066001)(478600001)(2906002)(6666003)(106356001)(55016002)(21086003)(186003)(3846002)(8676002)(6116002)(16526019)(81166006)(81156014)(486006)(105586002)(36756003)(53936002)(956004)(2616005)(44832011)(1857600001)(476003)(8936002)(26005)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR07MB4032; H:cavium.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB4032; 23:k0T8yrZXuPtZLEeVWmczIu8yIyLxyo4NpGvEGIpdJ?= Qo+sgQS6IUGad6uY89jgRpMWhCD1yU4FUuI4ZtMoRZxetq/hFruzbG+RnRZgfxRnmuXlHtY5uc3Fm1qJvH52eqSn2n1TlBpM68hI1jewJwBd+RlfPwcteS7zM4ud7IVQIgxcpj6B1qtghlU+7k0gdOOcPbVNcHrfIMpyCUx4iLTDyg/oqKU2sooH2yaLDDtNT29haSTWpcFE0LAdNBHJVbbH5I+YHTFdLMe+pjTOWAlXvFraJUDd0wzXAbnL5aTqH/0FHf5kcHOtRW7QvC/24QO9h/p+ps6lvI10rRZS4KDw+V9oaJJQXZKT2UIqGoR/rs/9g774xlW9N00ARENoZ/83J5ITKHhMW9Zw4rp9qzBHUkDv7+chD/dPGUkNhFV8yRzn5n3oQu5CSVu3x1Y6XrxIrl2GCRMe/3YwRKlacK5JKOzUoNgE9mQsHotRNtRKIr38xQWI6TpnNppQOeZEY7eZHty2hbhRqsJ8Vw3bh+EfWnlQtuS4+rGV3pzrdFve5k23nBfUsXzLaZIFMD4ppVD70fewjk/gjqJ6PniQcaaO5nCIiHaPNs4r1XPETj4ceiSzcLm7WDVsdmGIFZIfy9d78tgVGzcbEjBstAi/lYgvrsEIR1cOVRLtdIKhnUczgTpPfoo11nO2L1ZP2YKZn1p6nKj8O0dTcWc9i361BCxyauuabQXd6QXq2llFZkepC6HBAb6Li7L4T3nU+3ieMWsATwJiAAbiPbpF3qKdW8aTITSsXJScT/akYWRNS2phC2JpYjsyD2javQGs4SgAJFuO6U1v9HstRa09EyNJ6wOn58Tz1dC/nZ6KLJZQXEKhEiHKjqw8LMaks8Bo7r3uM+HXiNlIy6tvQ7DspeSgL1Od4p2oWCV9/Ef9jZTR1Zlquq905jaUrVt9+tNsrIgkxJ+IKDmqhcCM6o0Di2Rgk4sDbWNGCJpWDRx/qSueRt9PzsTsHUsNVTUsymBrNqQdm4sVRGOUZySeamwOD0xneKIx1vyQnGDvh+Pr1ZdO+hentqFdrnJn9zKNvEVpO2Xyr2/J3mC+giaWCPl5E0fNVsI8EBAem+a5oYz7if1AtW78pwhTK3KOV7WND4jrzcdnGKx6MFAmWxPFFYeX/5ZZtjlz8w2Ep0ElU+eWovqEQdaqpkhEz7esuNZabXzUEn7vN/7hhFyRyhR2Q2FUvIsf9nZ9bB09DoffjkHfmQV9ov18L3uUQ9oRrAb/4n3ONwdpbSZnl10qvB9PDUp4WClYo4uxDOkdYxNSA8kfN8JAxQsj7A= X-Microsoft-Antispam-Message-Info: RhVWbsjzLnBGSCD/ycNcQUdUIDkX5DzEMLgiPcl+oGep7bt8tbA3mWxRGPz0DibDRWswDexGr8mTFCDjnOZyml7a/GBzQ1+S/qJwFgQINywuo2aAlzu/mZwjhv5Lc09/i7cV4ZyLDTjwO7hibf0LKC6ODv0H/1fx7QHi2n7danith3uLfKhiS5hjSZoWwm/3 X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB4032; 6:1YJD+nlIcRPZci0uCZqahStOZY8RE/u/sFRg8gMgZgMfhp3yR1HEiT18TnDqftSCjJlnphImJEkuN780qLCrMJzXlpsD0yGdmdmtUqbXFLB3hmcvWsPxQ8+xB3NH8UTwVlP8z3eCF7MPTLbSUew5jRG+/YdISqHo+pMYlhrjdaqD0KBqdPrrS132WORYoRBZwpPZNcLd92p94ptd7uP8ex4fUkaVotkScw1RgSGYw9ze2bKAr+WbyUzyx3SyNVFV4lqflCTfEv8N+HSV6GYFgmBODfTUCN46fjO4yTjjJNrnbNlbnclW1oXk/amaXBQdDGA2LQ2ZYriPnFT/dxAMlQXgqDA3JtHydUSOFbePUCNJlwGSMuBC+TGJPiiD92Ta/TpGJtV3B8coGD/kA6sbwhH8xDctNp4cqmB4mOJ6QOpnwjAhW6J6k404h00lB4o88IhibIRWSIgxX7vvO4kIUQ==; 5:0r3RVIDA5c3mq1/TsyQFkRXFP05TA90ITPrCMWf8Eg80FinWkDsQxmqUxNYK25F38PqaB5OjoVbVfoZnVYvbTMefcF1QHHzk3B6/tiEoUmXtsMYIg34VZQUKj9pzGbVFPxW5UdaqPs5LgJYwAcGcztdS8ei6EZV7yRW6s/k7FYE=; 24:unP54WgN3RTNIXkDp/3KAXN4MDapgyIKvZVkZDZG78P3yZrzV46LffgLn3mPX8/1+iHMw7NAoilY/idZKd08RhA4T9DgDp3jlJhmaV5C9c8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB4032; 7:8BEoHhAr6XBPbCdRBxpS0WFWsjrQeV8aXK6xhgsuOVwycHbD82E0MEI4JOwOHNUr2J26HULQErQVo/GZTWDBNHCbeSWchEw19y7wL6bsnuYFRpZX2Wa4a3YPA0JALWVc9Y0LoZ5XqL0qZktbAd/0LjMcQXKMO/uT6sY2Ou4MCKplSDa+kOYdsKalLUX4IRQ2Rt8HE/14wLf+VHtmmB3XSEeaTQKcZnkcsl2rz+cgbTN8DYF8DtM14EgGxoi6XUEz X-MS-Office365-Filtering-Correlation-Id: d28a9db8-3ad5-4e4c-09b5-08d5cc93fc92 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2018 16:30:30.0882 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d28a9db8-3ad5-4e4c-09b5-08d5cc93fc92 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB4032 Subject: [dpdk-dev] [PATCH] net/qede: fix memory alloc for multiple port reconfig X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Multiple port reconfigurations can lead to memory allocation failures due to hitting RTE memzone limit or no more room in config while reserving memzone. When freeing memzones, update the memzone mapping and the memzone count. Release Rx and Tx queue rings allocated during queue setup. Fixes: a39001d90dbd ("net/qede: fix DMA memory leak") Cc: stable@dpdk.org Signed-off-by: Rasesh Mody Reviewed-by: Kevin Traynor --- drivers/net/qede/base/bcm_osal.c | 5 +++++ drivers/net/qede/qede_rxtx.c | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c index ca1c2b1..72627df 100644 --- a/drivers/net/qede/base/bcm_osal.c +++ b/drivers/net/qede/base/bcm_osal.c @@ -201,6 +201,11 @@ void osal_dma_free_mem(struct ecore_dev *p_dev, dma_addr_t phys) DP_VERBOSE(p_dev, ECORE_MSG_SP, "Free memzone %s\n", ecore_mz_mapping[j]->name); rte_memzone_free(ecore_mz_mapping[j]); + while (j < ecore_mz_count - 1) { + ecore_mz_mapping[j] = ecore_mz_mapping[j + 1]; + j++; + } + ecore_mz_count--; return; } } diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c index bdb5d6f..4fa1c61 100644 --- a/drivers/net/qede/qede_rxtx.c +++ b/drivers/net/qede/qede_rxtx.c @@ -192,9 +192,15 @@ static void qede_rx_queue_release_mbufs(struct qede_rx_queue *rxq) void qede_rx_queue_release(void *rx_queue) { struct qede_rx_queue *rxq = rx_queue; + struct qede_dev *qdev = rxq->qdev; + struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); + + PMD_INIT_FUNC_TRACE(edev); if (rxq) { qede_rx_queue_release_mbufs(rxq); + qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring); + qdev->ops->common->chain_free(edev, &rxq->rx_comp_ring); rte_free(rxq->sw_rx_ring); rte_free(rxq); } @@ -350,9 +356,14 @@ static void qede_tx_queue_release_mbufs(struct qede_tx_queue *txq) void qede_tx_queue_release(void *tx_queue) { struct qede_tx_queue *txq = tx_queue; + struct qede_dev *qdev = txq->qdev; + struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); + + PMD_INIT_FUNC_TRACE(edev); if (txq) { qede_tx_queue_release_mbufs(txq); + qdev->ops->common->chain_free(edev, &txq->tx_pbl); rte_free(txq->sw_tx_ring); rte_free(txq); } @@ -441,8 +452,6 @@ void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev) struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); struct qede_fastpath *fp; - struct qede_rx_queue *rxq; - struct qede_tx_queue *txq; uint16_t sb_idx; uint8_t i; @@ -467,21 +476,13 @@ void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev) for (i = 0; i < eth_dev->data->nb_rx_queues; i++) { if (eth_dev->data->rx_queues[i]) { qede_rx_queue_release(eth_dev->data->rx_queues[i]); - rxq = eth_dev->data->rx_queues[i]; - qdev->ops->common->chain_free(edev, - &rxq->rx_bd_ring); - qdev->ops->common->chain_free(edev, - &rxq->rx_comp_ring); eth_dev->data->rx_queues[i] = NULL; } } for (i = 0; i < eth_dev->data->nb_tx_queues; i++) { if (eth_dev->data->tx_queues[i]) { - txq = eth_dev->data->tx_queues[i]; qede_tx_queue_release(eth_dev->data->tx_queues[i]); - qdev->ops->common->chain_free(edev, - &txq->tx_pbl); eth_dev->data->tx_queues[i] = NULL; } }