From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30041.outbound.protection.outlook.com [40.107.3.41]) by dpdk.org (Postfix) with ESMTP id C527D14E8 for ; Fri, 27 Jul 2018 04:33:54 +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=a5a6G69BYCN2VuEBSKkpCWM6rsYVSZqHul4q0lIOEdE=; b=L/kZ2osEZ5/l/A5WujjNfyegLAEaz/WT94a3HcolqUdS4aDBVfmm6QRNq3uRk8pBSQPwivJ/b3Ysf/bfq329VijKZUlpuJ/IMhJlOhCnHZi//aPmH+x4EoBhWMYKPXDTxWngsyg/T1elVtzZq4+XUyCkbvn1VVjIJL7ejD4TZkA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by DB6PR0501MB2039.eurprd05.prod.outlook.com (2603:10a6:4:6::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.995.16; Fri, 27 Jul 2018 02:33:51 +0000 From: Yongseok Koh To: Yongseok Koh Cc: dpdk stable Date: Thu, 26 Jul 2018 19:33:36 -0700 Message-Id: <20180727023339.38855-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: BL0PR02CA0083.namprd02.prod.outlook.com (2603:10b6:208:51::24) To DB6PR0501MB2039.eurprd05.prod.outlook.com (2603:10a6:4:6::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9267e445-867c-487c-9e3f-08d5f369643b X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2039; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2039; 3:QC/ZkA0vwYcEnt54sottdrC9/WHzag0O/VRpfgjI1NhK3QDgRU0NkRe3+HDXgb4MheqKUens5Hl4wG+D4dNJVy4TgsBkG+Uerb26BMAoypXAwQO4YQZFrnmfv2S9MGckbRf4xCPi6ubiC3/Ly+kA3XM6QdDFaKW/bEqYYF1PxrK+DsZdPW2RA0TExQ8kEHNMPGJSJjH4BQ5TUHpskKdrVvYSDRgO9HvVlIAU49bzhgWrGcPepvy+KCUUv7eaTMOY; 25:fegLO+KumAk2QMsPqmpOrLcXG+lLKilY8UjJE4nqtwHl6tdD+FbBQjE4vlrreiAylwoaZ/IXIZHHDR/Qn5WQ2bUEvZAuvnr9JcDVDSA+CZm9rw0viY/qu7zq/v9svW/uQ47Ha6chn5Ulj6fgv7ihfeDL2BSj7Wip7cXAakTcv+B99Kj93MGrdqXnx5bshcV9UVmaa90BR/Qr4XMOhySKQVl4dmznNVObHNMxja+5yXfM5IAQJABx27rNC1tI1uqZSatoyOojiwTv5gMcohouZ+B0+IrQZK1zZdqbPh0WYm9jy/0T/kGIuFKCZFn1oO4hC3aAQ5F21G31EccvE1Zf7g==; 31:Hih1+Xi1r5lPk4Sk42weQsmwQTUMHqSg/cITtsx4sSEFuTm7A+7kLS516Qrn4UXm74Wgn8cpG7ritqY4ug6XmJjnTJiNrScTKGtF304beKmVFEcON4ccco3hUGNsCr9kGn1AEybsp45kYB0ol3JVV0Bj4w6MEEJMe/px7NPJR3RCfNQGtJKNKKHgrMcnDoZ5YxWeF0SWjkI1uHsCBDmZl7QP5r6nLDJSX8EfgrHAVSo= X-MS-TrafficTypeDiagnostic: DB6PR0501MB2039: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2039; 20:GLTPD7RImzg/C0uXuMh2F50uX9Rk7i3WeLpX+Mr8QzCYZUa9O5Uxn7dyUL2Ft/N8y4jfDzJfGToKjxO1bLgZEy6kC7K/W0fJVl0IUKS/giajhr6PyZV8aB32aBe8WpyZYyjkM2F+FoU/mMK/PwV4PvKL1mLD/2vuG8FPq962D5c4QEQX0n9L4pXI00fKAdZZH+n8GvLJN466G/nGjYWppJoe+WVMtiAcAE77kE8jUkcP17zEvAVzm4p2Kddj8MPZV/qOH2lku9iicYsTKbkF6e0bm0M7O51uQ3uO5fD0tIBWSYO0lIytygcQaw04pwjd3lhlOFKwo1T85WDLnI760Mg7hyGVfEChyiWfyhYHN5EdKfUeajOr9kYpF/A1lOgB7NUwbC3cyvxalQGojOXd86DJB711lOTmV6SS6pP9ygFSAblX0M+2qAYtV9FiUFrQl83NjllZFMd0CYVk7GqjE8JH4ZFckqFctbIRBfmX0BblibUdNRSJoUTmEqUms0d0; 4:wNCroa5Dh6eYe9TXvlujY+EPp3hy+uR2K1/bLdc6vo8FLd97mliVcSJxF43MjWm+H/6Jfx7571MQUJf13UU1YyYxjlDw6ZS5eQekjUl9N3XLSFh1hRmCL5BTwg/3ijc3a7odcGavav/NPtSXaETIwe+6ktQUGO04f99NwC+6SNXL0VebUeb0eDmEhv/jY0BqeZqm5WFNsaHF88sTujJ5zvyD0x4i2jFty7L/9GJdctQhF4pSEW/qa9cqWD/hQpi12p03C0Jbt12HU91xkukH3g== 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)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:DB6PR0501MB2039; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2039; X-Forefront-PRVS: 07467C4D33 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(366004)(136003)(376002)(346002)(199004)(189003)(69234005)(28163001)(386003)(69596002)(2906002)(53376002)(14444005)(6862004)(53936002)(3846002)(6116002)(7049001)(966005)(21086003)(81166006)(81156014)(8936002)(105586002)(106356001)(53546011)(316002)(16586007)(486006)(51416003)(7696005)(55016002)(52116002)(8676002)(6306002)(1720100001)(37006003)(50226002)(5660300001)(47776003)(86362001)(305945005)(68736007)(7736002)(6666003)(476003)(25786009)(97736004)(4326008)(1076002)(6200100001)(66066001)(48376002)(16526019)(50466002)(478600001)(956004)(2616005)(26005)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2039; 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; DB6PR0501MB2039; 23:V6aV4n/FGObSeMbpELmrh6lJpwGlMaYAQTct+Zn?= =?us-ascii?Q?c8XBavQt+zhXYs6MN5EJNUb6nnk+7J4O8inDSKdophmolTjTwL5NL9JczrOa?= =?us-ascii?Q?9VcQSaBUPtw1BGoKHQQSB5MNCoMyH4CoL2swILLD9bcQH1i0BPmfQsOvZWo7?= =?us-ascii?Q?HUWaQ7W1TjnanZlQqKKkIzj4TZBr1Rqm1Kiaydmyetp71dRpiVESf9DQNXIh?= =?us-ascii?Q?gch4ahh4A8AOleU1enYMtZ0UbdQ0KJ3t+Iv7Ad46m6de702w7G1uHEHMpTn7?= =?us-ascii?Q?N2pXnucMQk4SfYm9F8N1JKv382OQJSRxDq8LTZ5o3uGDvvv1O9+MEI0Dyiga?= =?us-ascii?Q?bkX1y8qFlrkyZJbaTim2pZT+wUJRRNRwTjapMkvLtvpvrhdPxFaE5CreLCsh?= =?us-ascii?Q?/3QD5Aj6lfKZ7jXzfQ+5HS/d7YTbrR/KCjCM8ugJjkOq4NufH0gdDCv3flQt?= =?us-ascii?Q?BVLb3rBqhX1uDgUTocc4TOU3w9Bh9mKfzIA3yonMtOTxnpE214IQyjMhauoq?= =?us-ascii?Q?IvZH2v1qFxbZvO2pxH7caJyKRslXyrDowtmmqeT+ET1olrjXuL+3XIQlE/ao?= =?us-ascii?Q?2Ykv/tYm6386wHL/Vuq17a8WiEkzBGb61DJIkSSsS0SqHC+YSx2pqYSwNgpK?= =?us-ascii?Q?bS0DJfM7FCjc0uhQ0AZWtFzpfLc0tK2IpQy6DWU9R9FXjvPi7Bl42DMk1o10?= =?us-ascii?Q?kPOWYqCvz3e2D3ToaoSAciqjb+b42MWt2+NizdLalO2uxGjFhu5N8n8cUsKI?= =?us-ascii?Q?JUhrsrlMLCxuau9RCQ5lELzmSPxeoXJM5e1v2UBDIKTKAPAQvFpeB3+rhNEZ?= =?us-ascii?Q?+BquWVp5R6tfQXruG1JeXP1FjzUJ/Yi7q6OU4aNDbg5mjsjrs2/PrUL9eQEt?= =?us-ascii?Q?3T5yNN1JmJkMCY+gNKmTSeZ2aqvU+Y2h/9MOULx4EG1wNDmNUejrCU6CgQlK?= =?us-ascii?Q?Gi1r4pjH+wUjCB6dOmIfuXLhNzm0BcZQSqszedYj9QwyWFZ+y6Ayd6lYzyBr?= =?us-ascii?Q?oDfoP8ZD3HtZCzq7uP/gcVTKRwzbBsfk6OucnfdvQ6aNiQLRfn+0i/VZczhd?= =?us-ascii?Q?stUe40UFCtA6bnbgCTAjupDIe8UBVSOGTqYmN9Jj425vybj+15dmt6i4SGY0?= =?us-ascii?Q?t8UG7FStrmrebiUtoOlmm4oqONVbUi+L7m99OzNtzilBRZohp8rBdj5/0PDw?= =?us-ascii?Q?/ziSqU7EvS6gOey18ZbdLn9Wjkyv/g6xCuJlBJeNHtvOm911j7E+YHTYUj9z?= =?us-ascii?Q?MAq/+XXrPR0Gw2DctUzAh78xdHJET5xvEPXbkaC7My4WF1HASz5A/t7Sj6sk?= =?us-ascii?Q?ZHhlr43NmPDKSB0ppRlxC+jwhpLYLHrd9U09IfFtIEAl0cAXgBqG84cZ7oPw?= =?us-ascii?Q?iYwg994SbKdKQzoNl4ZQB5PdS+Ss=3D?= X-Microsoft-Antispam-Message-Info: xaXHu9eISrEgqifl2xfERQOU9MeBLDskNY3zfkBGrExshf5mc2Timbq/U4xvwtm6qdycCYyXUxRRxnwYlLs/3Tz9O4jlCFj4gBLY2ctIkozgPcdD0vqb5p54seAvOuc6IqoTdExmBFQl5HxCuAr7abTo/E+OT0eidtDBk5JMQ2I32lWPZOV4OxF2+Gx0YZ9YBSaL8u4sTQT2Fx/3bYA4xqyY9mLMmw2SGozCqzYtFF3VSgDIaSfyBHrlvpItZ9W2myCGiTIb3uMgswzL+UQI7J0RhCvsn7UrjeKJYIkn0RWXcfWXpxIo8HA4Sis+LGd4V1I7t1OS6QTLfV65HZA2JXUE57gfzyBBfVko56HQhJw= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2039; 6:2VBRP+0xlYDD/a0/EnQij7YSCHZ2Dk2r/1glkC2w6/js7ochdUahZqyQJrCkvhNIeha63gfi8UgqUN1Hqi47nQoQ1YqIiBVymwchW4A/Fb8uHvXPSiWr8H/i5R9AWtqBaxiIeIK9+6Dfej5hmZ29H2c9YB64Eg3b/H+9T6U3GiIkCwg4rDL3MFUoSsK3NT4huy8bnNyvFpbyRjViiyU6MNAa337paCs4sYHpKBT6S8pjrfE2etim2HPo81eTuyObHG5uV0xKrqgSVlzzXBaWCHU37AYQu2gH6XhWmeSgHhIvsWipv4tOptgZpWePWLs/QZv3WVL9jjwsivQYKn4OCHvy/WFtsdDK3erhYI9/E0tRn0SA/HkLnZ4UjoC2Rxn8Wz3kR0HnUJBOI6Vw3ISDDv1LR9VgZDY66wvIf5gJljZPjlLD/kkR/G64Gmixxpf5OcLcWh2qvGv/TfbjjremDQ==; 5:SHh5cUCsb17UXN14yqNMBj0QKQdY7e12lbr7hP50rt/bGRx/h3b5XY5AdTvz15ODn0YH58VnPgQd/z3yin2tuQSnELX0yYLhf+Tg8grp44tyCaEYdGrgU8KuHhbc7/br/Rs9QPgtWOEa+3ltVXMxjM3+c9CnsKSb10z3PPrB3Ts=; 7:iUQSY+DNR6jR9hLUdN6svxkoVnIFsp6Hqb8gmpMsU4tobzog16bXAVcMWYwowuhZRRnXPNp4z/2JzsFEjhQwLlw6MFSIl/DfllMYgU/rjRJ1W5jJqFgJhthxYhbqkng9LMghttX5Z7Y+ddbkrYMLlxIrqNWMckewgNbgIKNFk5Gwjaw++oi5kRgRGOhL3L9Pj3TABGtrcr7Tjf0g9yukyZDGR6cRN/7W4LE2tP0FUa6ddeJBXdl2FdF/9rTQ90oF SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2018 02:33:51.5201 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9267e445-867c-487c-9e3f-08d5f369643b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2039 Subject: [dpdk-stable] patch 'net/mlx5: fix queue rollback when starting device' has been queued to LTS release 17.11.4 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jul 2018 02:33:55 -0000 Hi, FYI, your patch has been queued to LTS release 17.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/28/18. So please shout if anyone has objections. Thanks. Yongseok --- >>From 997e25edbb09bb08e6289ad2b77b6e833c18287c Mon Sep 17 00:00:00 2001 From: Yongseok Koh Date: Mon, 23 Jul 2018 13:57:04 -0700 Subject: [PATCH] net/mlx5: fix queue rollback when starting device [ upstream commit 24f653a7e8bff5f500894a07771dd6718966e9be ] 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") Signed-off-by: Yongseok Koh --- drivers/net/mlx5/mlx5_trigger.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index 49f1c1331..9a1d6f954 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -73,7 +73,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) { unsigned int idx = 0; struct mlx5_mr *mr; @@ -94,12 +93,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; } @@ -151,7 +155,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; } @@ -174,28 +180,28 @@ mlx5_dev_start(struct rte_eth_dev *dev) struct mlx5_mr *mr = NULL; int ret; - dev->data->dev_started = 1; + DRV_LOG(DEBUG, "port %u starting device", dev->data->port_id); ret = mlx5_flow_create_drop_queue(dev); if (ret) { DRV_LOG(ERR, "port %u drop queue allocation failed: %s", dev->data->port_id, strerror(rte_errno)); goto error; } - DRV_LOG(DEBUG, "port %u allocating and configuring hash Rx queues", - dev->data->port_id); rte_mempool_walk(mlx5_mp2mr_iter, priv); 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", @@ -254,8 +260,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