From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20057.outbound.protection.outlook.com [40.107.2.57]) by dpdk.org (Postfix) with ESMTP id 5DE13F72; Mon, 23 Jul 2018 22:57:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qNQT2P5b9ab1x0Y4LftEi5XOyQqOQMkYGH42IDQ7ojU=; b=sweZRbePGLx59qsDW60/bxfkbWaaIDzXlcev3af//W8EXWIyDhAOqKPLDHU4zpRTRBoa/YLq3orxxUzEkq6+uMyPehdAv1sXpkxUzS9t2nUKYbPHBytaNz0jX74JkfZAHRLll0eGpO1vuS3yJFLH2HQXClGkhyYjsfJPkjBruWw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by HE1PR0501MB2042.eurprd05.prod.outlook.com (2603:10a6:3:35::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Mon, 23 Jul 2018 20:57:21 +0000 From: Yongseok Koh To: shahafs@mellanox.com Cc: dev@dpdk.org, Yongseok Koh , stable@dpdk.org Date: Mon, 23 Jul 2018 13:57:04 -0700 Message-Id: <20180723205704.1999-1-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: MWHPR19CA0081.namprd19.prod.outlook.com (2603:10b6:320:1f::19) To HE1PR0501MB2042.eurprd05.prod.outlook.com (2603:10a6:3:35::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ed54029f-2488-42e9-f773-08d5f0dee2da X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0501MB2042; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2042; 3:B0yyzdzJgVEwK6cLUhHkLk46ItMc8thfSqC106Z2FKh0KXh8MBI4WeK1eVpAhuBst68VbwYLEFkdoOjVZp0Ra3Jib1oh4ocY7WMpskvMH6p8v94iaH6dU0aqOnMG2w/qiKeuAv429ktUvd+Nw3m9Z+SfKWbrQPT3Uet4/qrxTIgpjmXc6e+S75jbrYvc3OE5//ejDug16t+NFgEfgnAo1Vvz8G2FgBhRJetFRu1w65+7SLYzvA6STemRXActVn3X; 25:ZlA3DQvg/DJA3Zla0s8eu5gofRtA5mEADvjGotT7KlLpw8ZNjEhswN0h1sTS9ACKGDNvptDrqFChUNpbUnGJTRVAbsX8C39oRWBeSxH0wJdo083unls97Rn1VCtszth305I1FDrQhBWpfuEFk30oqlx/2Vd357TYUPSTYrvOkhiKTFu/57spvbv9t8t2N9kwvHNHixcMEqO2g2MpDOtQRNtL2/Y1Bxf37oUIrtnmCzkTq8eFYWCLVlAj/oiTvPO5v+6gxnIpYnnoqM5oud8ojyIlgxLd0dRaXJfJ+nqPKzyyqPrIynnPw6UyiQPqBKTF6vnQ/SGZf53uwtbJbVPjDA==; 31:5LGGVW2cHBr6qlQnLYnFMGV8UUX1ov2Yy6B273itIh58AeDVhbxKgrRgvzYl1irNhnGbMSIQATwhMXxJk9Kw/QODuBRvP4f+HtjkfrFRGxnGPR6Xz7PUxdhlyDD8M2fVB7ADDYvFdRT/tf7KHUUq/Rq+OJwJ6+tk4hilfKEjjGVlshHJL1BMYfqokunCeLSkCSvqYMUAnBWGheoj+mRn0LcP484W2bfCY/WYMEiHKg0= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2042: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2042; 20:dMmzVI489KF3Qvc+QpZT8BUEIIZRXc7P8uQLuaxPZz4WQHp0sleYKJOCagsOp/l8JMRm6r71Dxf3jfmBRpfPJl0TPmthCELbay7pkUo+WpgF3mldBXbYMbVWJYFNdTgUzf2TgozVPfvVWhbFeeasXPEjsVL794BP7yuiYLo4TkPN7FhHkTPDc+2Wtwbvqstz0Ozbe2AR5JIFHnO12SR4EcLPfVvCi+9msPe41xsiSfOb/mXfSRyaEqcurlQdLi/V+y0ViGsCPuYLNbhYmWM2T2scrkSAUeELlpWJuh1LrMgQG0caI5KD8O/GI+we9jLMOgcg2xJRyMteFm7drHKIdwXn9L9iWUvjUHjgChoOBs/d2NTRzbXThiOtyoxvv/hqQlbN9Sg2oVzrm2dAvBmC/wLhoruKfGEtEI1RjvrTjDhiYqMZoGv7f3llv4LvGaVWfhea6pz2zqrsp470klkQGbIt7otiOK/FAk7u4dDC1cTKu5oZCeiZ6mMZbG1VhvKl; 4:sOGjL5GaO6ET8vv1MfdOBnQhFYlWHs0QG7KBRBWNVe00FehAigMX6DuzBSpEnMkp0dIZ9Gjj52OASGsQXG3VW+p7tpjitBolnDfAsnkI07U0/8iDJE4bZO0aKcfcrJRfKbJFeN36vvdvgYmI4wxIbpAptP2Z5sm4N7sL8ggSI46jTsifVHQNANMj9p5npDbvq88KcH6/3W0Q5/hXtvtNQ+aIQVerYt8Kw6TT47RYb3aIl4cmuchoxJoDEk1SZboNIKCMok7g1AeYFwFce38xgQ== 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)(8121501046)(5005006)(3231311)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:HE1PR0501MB2042; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0501MB2042; X-Forefront-PRVS: 0742443479 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(376002)(346002)(366004)(396003)(39860400002)(199004)(189003)(81166006)(7736002)(50226002)(55016002)(478600001)(4326008)(3846002)(26005)(68736007)(6116002)(25786009)(1076002)(36756003)(316002)(1857600001)(16526019)(476003)(34206002)(486006)(52116002)(7696005)(51416003)(2616005)(2361001)(450100002)(386003)(14444005)(956004)(16586007)(37006003)(106356001)(50466002)(86362001)(53936002)(66066001)(105586002)(2906002)(2351001)(47776003)(6636002)(6666003)(8936002)(21086003)(5660300001)(305945005)(97736004)(69596002)(81156014)(8676002)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2042; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0501MB2042; 23:K2hIEmKqm1MrMzQdx/yUYXYXXFFcAiAJxDo1ONQ?= =?us-ascii?Q?8oYWolU6Uu5Tr+6nqsQ9Ha5tfDKI4dtwyOKdBZh7RRv5a+fV15bo0XZ8y1Eb?= =?us-ascii?Q?tFqqMGuwe/0QJbZPVmJJ2ORHIRJftnfkERxz8M3kw0uMTEF7WeTVH0/rLlMZ?= =?us-ascii?Q?3RSKJsk6NwbPsU/DEsBIOUtvNkQe6rwvUi8vZINYzMDAzK2IFwhBQuKxYCdJ?= =?us-ascii?Q?4IQTugjy+SGEJq3xh/1eWGunwuTn3JIImUOjemUkh7ewxtmhRKAMse77nGoB?= =?us-ascii?Q?2+w1MBWWcewaUbjcXxHk0Qq5gtnAXiMi+ytFtPberzVu5WHv9teDXGrKeBAE?= =?us-ascii?Q?fZc9hY4A9p58CmkHFaLcBnt86rcA3hSdwlBdcbfhyewGGTuJ8Beo+m44k9iM?= =?us-ascii?Q?sYoZ32XIiTWOiWUm0xr7vvH3zOwLShortxih8OLe0EJpLdny79mOYREvCHV4?= =?us-ascii?Q?Xap480kQLDCNkpDMGlt0fEDS8cevKWUsBp3a6/VYOL7Y8RE6opA3tH8Kw9xF?= =?us-ascii?Q?f/8A7E9tXnSj5VCdDItHNktujd3oKskZ1oMZxa/CtAPmDrzvQ+isLLFv2xkL?= =?us-ascii?Q?HB2qCo5UpnkRTfioBmHUMFvUfykun8BKX8Ox1/M4wBZvF52vn7L0EIbCcug5?= =?us-ascii?Q?t9BVFy6STj0fwClYgSUA+02Ia97P4IH2I18dp/Li9kiiIVq9o24n4PsvTHSr?= =?us-ascii?Q?i4139wFB0pG3DP7PzTtO24JrndG9Jz69wLdJwlAx56pVqKHd2mV7dbor6P+I?= =?us-ascii?Q?Ob+wPkoronrmH1lpxNDwhPQARyVwstTKRdYRdppRWprFMfx2mur46Rt+niI0?= =?us-ascii?Q?OVrz30CiYZOyG5wfEnKESLLT/8ZrUJnG70x7UctsCyNqjXNNtsuCI/wuKbVx?= =?us-ascii?Q?RW10aFPAHIpTE0c/ikJdfJThTgr0PMHCuaNLDlUBHwifmtMzL+vTOEcf6RC8?= =?us-ascii?Q?9ezMjYTW+DXY1DF7vYOvUw+MPMziRypmJ1ySp08XK/3ozxGKU2MBZonXYym6?= =?us-ascii?Q?g3buJ4eqjbLTieX3ZSswmu+xN0LWgxs4C/HlRx+qGVeDwYoubtZuR4pA2oCD?= =?us-ascii?Q?IIxBPhGisAMEezBo2yEBTKmTvbSSoToXqnKwI4h/yT1g/aT3PSksY9/vyeE5?= =?us-ascii?Q?AavtHjsmxw+NCQTLLXrKc4+rAKywB+A/BwzmVj14Ddoh/+LFGETYw0Ciroyt?= =?us-ascii?Q?A4EQYUmSvy8dm2rVqUqcWzdsiIcRcTxniEU7sgDxXLzAevJ5Ba/pzPRUwT7a?= =?us-ascii?Q?UHfJv++j0nQe2heOa8ptKvUpwAwjDn56VgkL7vZHtAU8M8YytuKvj3lUzwGH?= =?us-ascii?Q?lbQ=3D=3D?= X-Microsoft-Antispam-Message-Info: ZGWi2HyZYyXULy9IIdVNShmwLM7MBsnKCtFpEA7TINYLCjkFyJBMpJxKL7xWQah2QajhygaUoiEPnRSfyGZ4hahbbOTYiuuUIlYeX0/Nohh1/YXj73I2Cs6IVo1ohvF6lOpSFr7ufkd+EQbdOPWjsXJ0cl2itszIHH60Q6hfRqhXmndV+XPx0WcP4Md3kLZc/jg+mgMcSTk7MwMTvejgFPOIkcCQvlBp6UiSZYRkXi24PWy5Q1gi2lObb/cEyUuSf+U3OyoTTeRtALsa64I3pdrd7atwVIB1edO2Vbt139qY+DbQgCnztte04Ny88qwCl3G3a3r8Vx6lpg/+V28b7JlN1nwC/XqCVqkbXMhMlOY= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2042; 6:7dgfdVyDu4SiT6YBXa2HqPrew4QOcKoDm+mmUCACnuPPkh52fbQ/r0KmxSlVj0f7OBZ9y3mHfHlWZpll6+qVK0lIBVHb6iL+ljnOQruklkHVbNxioptfdaZcPPi8iNMUpSeDXbvYTwFeEMHVuUtOnUnVcA15OujgsgwbkAuLEduSEhW9rLVRtcj678IJuKsWfzHKePMrFsm72KjosGdxLu5p/HmFuuYMnf0YqRh+qMJVynu6X+pcY7qb60WiVU21LJ4WqOQAtU8tBD88xv3EtlVY4XYyEQ3Mr14wLuuWZ1k5ndP153Amkpp0zfBKCG3Do82wqXYlpFqjxUM7L2rimiuBa4AA8CfgJNW2UkWt2/Aczsnwz0N2mwWJ3lPnkCo8G14A5fi0LVF973+fSmwivQxD65ByhjPQY8siDEkLxAFBXs6jmH+SvTK2WeZboJNms5qHDraJaCCEdenWmixS/g==; 5:n6vjqy4hA9tYVIRNUgWjXEc01h3srH8/OESiC0HdSsSaUuyvR3eXfH/AJayrYQ3+7Ic9+godU3k0Y3O3Ll/sDgyD9khXJnp0gNnSgI2sY73Sl4O+g8yTcPgyO4Hmi8mNVJAouFmsjRSMJ/VetQgUnmKz3XclIJRuXWmrrQ198Co=; 7:DyeYrnMmrNiEa68tPd53eq/tsK+1/0NXp9YsW8i0jxN+2tA45UGhi7IjN8JMccomgQgIeL4Zpc3LI1yIyn1cCVHOVwqbHj32UoeRLafJB3CVGc2C68FzdikXAaQUyzpr2gbLqhsOLxnfa17t39muHa4VS5LX4sPCVs1m9j5de+fznGqC5r9zgWH+CyOCBhyk1mRvse0DvCjGrgLm/NyqdoN9z7Dh0VwcCPm8WYfdp8UBZNDZ4w6Xb9DnLCGsrvxm SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2018 20:57:21.0324 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ed54029f-2488-42e9-f773-08d5f0dee2da X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2042 Subject: [dpdk-dev] [PATCH] net/mlx5: fix queue rollback when starting device 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: , X-List-Received-Date: Mon, 23 Jul 2018 20:57:25 -0000 mlx5_rxq_start() and mlx5_rxq_stop() must be strictly paired because internal reference counter is increased or decreased inside. Also, mlx5_rxq_get() must be paired with mlx5_rxq_release(). Fixes: 7d6bf6b866b8 ("net/mlx5: add Multi-Packet Rx support") Fixes: a1366b1a2be3 ("net/mlx5: add reference counter on DPDK Rx queues") Fixes: 6e78005a9b30 ("net/mlx5: add reference counter on DPDK Tx queues") Cc: stable@dpdk.org Signed-off-by: Yongseok Koh --- drivers/net/mlx5/mlx5_trigger.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index 4d2078bbd..ef499d898 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -46,7 +46,6 @@ mlx5_txq_start(struct rte_eth_dev *dev) unsigned int i; int ret; - /* Add memory regions to Tx queues. */ for (i = 0; i != priv->txqs_n; ++i) { struct mlx5_txq_ctrl *txq_ctrl = mlx5_txq_get(dev, i); @@ -60,12 +59,17 @@ mlx5_txq_start(struct rte_eth_dev *dev) } } ret = mlx5_tx_uar_remap(dev, priv->ctx->cmd_fd); - if (ret) + if (ret) { + /* Adjust index for rollback. */ + i = priv->txqs_n - 1; goto error; + } return 0; error: ret = rte_errno; /* Save rte_errno before cleanup. */ - mlx5_txq_stop(dev); + do { + mlx5_txq_release(dev, i); + } while (i-- != 0); rte_errno = ret; /* Restore rte_errno. */ return -rte_errno; } @@ -103,8 +107,10 @@ mlx5_rxq_start(struct rte_eth_dev *dev) int ret = 0; /* Allocate/reuse/resize mempool for Multi-Packet RQ. */ - if (mlx5_mprq_alloc_mp(dev)) - goto error; + if (mlx5_mprq_alloc_mp(dev)) { + /* Should not release Rx queues but return immediately. */ + return -rte_errno; + } for (i = 0; i != priv->rxqs_n; ++i) { struct mlx5_rxq_ctrl *rxq_ctrl = mlx5_rxq_get(dev, i); struct rte_mempool *mp; @@ -130,7 +136,9 @@ mlx5_rxq_start(struct rte_eth_dev *dev) return 0; error: ret = rte_errno; /* Save rte_errno before cleanup. */ - mlx5_rxq_stop(dev); + do { + mlx5_rxq_release(dev, i); + } while (i-- != 0); rte_errno = ret; /* Restore rte_errno. */ return -rte_errno; } @@ -152,21 +160,21 @@ mlx5_dev_start(struct rte_eth_dev *dev) struct priv *priv = dev->data->dev_private; int ret; - dev->data->dev_started = 1; - DRV_LOG(DEBUG, "port %u allocating and configuring hash Rx queues", - dev->data->port_id); + DRV_LOG(DEBUG, "port %u starting device", dev->data->port_id); ret = mlx5_txq_start(dev); if (ret) { DRV_LOG(ERR, "port %u Tx queue allocation failed: %s", dev->data->port_id, strerror(rte_errno)); - goto error; + return -rte_errno; } ret = mlx5_rxq_start(dev); if (ret) { DRV_LOG(ERR, "port %u Rx queue allocation failed: %s", dev->data->port_id, strerror(rte_errno)); - goto error; + mlx5_txq_stop(dev); + return -rte_errno; } + dev->data->dev_started = 1; ret = mlx5_rx_intr_vec_enable(dev); if (ret) { DRV_LOG(ERR, "port %u Rx interrupt vector creation failed", @@ -221,8 +229,7 @@ mlx5_dev_stop(struct rte_eth_dev *dev) dev->tx_pkt_burst = removed_tx_burst; rte_wmb(); usleep(1000 * priv->rxqs_n); - DRV_LOG(DEBUG, "port %u cleaning up and destroying hash Rx queues", - dev->data->port_id); + DRV_LOG(DEBUG, "port %u stopping device", dev->data->port_id); mlx5_flow_stop(dev, &priv->flows); mlx5_traffic_disable(dev); mlx5_rx_intr_vec_disable(dev); -- 2.11.0