From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E7F92A04B1 for ; Wed, 23 Sep 2020 15:26:09 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A73B71DCE5; Wed, 23 Sep 2020 15:26:06 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id EBDD31DC66 for ; Wed, 23 Sep 2020 15:25:50 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200923132550euoutp01e3be6ef58d661456fe3da180972b2c90~3bI4_GCaZ1234112341euoutp015 for ; Wed, 23 Sep 2020 13:25:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200923132550euoutp01e3be6ef58d661456fe3da180972b2c90~3bI4_GCaZ1234112341euoutp015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600867550; bh=jos6MfnCwcP82KcnUf4P5M+gQGwQK14lVxEP6mCmTW4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hD9aBXzcQXo4eL9ih995T0b4CPJro7ypWTszqEIficErKJS8R8btAusNod06oM/fK HxC5J/V5QxzogNJ0FNJJYIh+2BskbFL1fwTnG0GHXH5EwIFO6gRYvrPfaRoDx8iAFo IhdNUVwar67kCS0lEH0QTGEHahEOMVCyd7LqvGuQ= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923132550eucas1p21953e85888b7eb29f4e79076fbac764b~3bI4oxSxa2685426854eucas1p2c; Wed, 23 Sep 2020 13:25:50 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 47.84.05997.EDC4B6F5; Wed, 23 Sep 2020 14:25:50 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200923132550eucas1p2ce158dd81ccc04abcab4130d8cb391f4~3bI4S0uOp2291022910eucas1p2j; Wed, 23 Sep 2020 13:25:50 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200923132549eusmtrp2d661565c96c339171b422734a42e0871~3bI4SHglK2233622336eusmtrp2Y; Wed, 23 Sep 2020 13:25:49 +0000 (GMT) X-AuditID: cbfec7f4-65dff7000000176d-62-5f6b4cdea680 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id AE.A9.06314.DDC4B6F5; Wed, 23 Sep 2020 14:25:49 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200923132549eusmtip25f834ec2380b9d4dbe62daef96593100~3bI3kTCL32716427164eusmtip2O; Wed, 23 Sep 2020 13:25:49 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 15:25:39 +0200 Message-Id: <20200923132541.21417-7-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCIsWRmVeSWpSXmKPExsWy7djP87r3fLLjDX7+FbK4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErowllw8z FewXrPjx/glrA+Nevi5GDg4JAROJW9/Uuxi5OIQEVjBKzFyxhBXC+cIo8bb7OpTzmVGiY+FT xi5GTrCOWat7oBLLGSVOfZ3FBuF8YpSY/3kNG0gVm4CtxJGZX1lBbBGBMInm5r0sIPuYBZwl nnwFKxEWsJbYvGEDK0iYRUBVYt4FJhCTV8BV4tUNXohV8hKrNxxgBrE5BdwkPvx4zwiySULg MptEy43dLBBFLhL7b+1mhbCFJV4d38IOYctI/N85nwmiYRujxNXfP6G69zNKXO9dAVVlLXH4 3282iNs0Jdbv0ocIO0oc+b6DERJEfBI33gqChJmBzEnbpjNDhHklOtqEIKr1JJ72TGWEWftn 7ROo0zwkFr+/zQRiCwlcZZS41186gVF+FsKuBYyMqxjFU0uLc9NTi43yUsv1ihNzi0vz0vWS 83M3MQLj/vS/4192MO76k3SIUYCDUYmHl0M3O16INbGsuDL3EKMEB7OSCK/T2dNxQrwpiZVV qUX58UWlOanFhxilOViUxHmNF72MFRJITyxJzU5NLUgtgskycXBKNTCuj134Zbdy7+tv8wu3 /9xdxFPuznh9+4oLqyevzTjWZbns5cpdfWb6zyYUt+cFFefqzGvjjLHbX33vvMrnR6vdt5ce 558Zqdx+d6nsCccvD6JSs40XFz1NZU+ezLx5gXtEstLSFWGq6gKz0urnZy/Yt2YLj2OY/6Gw s5f8js9J2RQ06d4ccR4DJZbijERDLeai4kQAgU02WPcCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xe7p3fbLjDY6stbK4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYwllw8zFewXrPjx/glrA+Nevi5GTg4J AROJWat7WLsYuTiEBJYySiw5uJ+5i5EDKCEj8eGSAESNsMSfa11sEDUfGCVuXO1kA0mwCdhK HJn5lRWkXkQgTOLESn+QMLOAu8SWxVOZQWxhAWuJzRs2gJWwCKhKzLvABGLyCrhKvLrBCzFd XmL1hgNg1ZwCbhIffrxnhNjUyCix8W0b4wRGvgWMDKsYRVJLi3PTc4sN9YoTc4tL89L1kvNz NzECw3DbsZ+bdzBe2hh8iFGAg1GJh5dDNzteiDWxrLgy9xCjBAezkgiv09nTcUK8KYmVValF +fFFpTmpxYcYTYFumsgsJZqcD4yRvJJ4Q1NDcwtLQ3Njc2MzCyVx3g6BgzFCAumJJanZqakF qUUwfUwcnFINjOkRwv/Wd2U1/dX9t8rfrLXxbHnV6QdKFSxrVSX2xFT+zRft50ycpfciVGrf R/blJxpeT7l27Yfojinbd+yoe3Dtpn97lyC76Zz428r/RD0Zk14Ix1cv1ZgVwvJjpseCL9ox O1euNzlec+WV9DP7fLMqs+TtK+/OiH9cLPPnumC5SGFdam1FtRJLcUaioRZzUXEiACvZBMtZ AgAA X-CMS-MailID: 20200923132550eucas1p2ce158dd81ccc04abcab4130d8cb391f4 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20200923132550eucas1p2ce158dd81ccc04abcab4130d8cb391f4 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923132550eucas1p2ce158dd81ccc04abcab4130d8cb391f4 References: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> <20200923132541.21417-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v3 6/8] distributor: fix handshake deadlock 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: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Synchronization of data exchange between distributor and worker cores is based on 2 handshakes: retptr64 for returning mbufs from workers to distributor and bufptr64 for passing mbufs to workers. Without proper order of verifying those 2 handshakes a deadlock may occur. This can happen when worker core want to return back mbufs and waits for retptr handshake to be cleared and distributor core wait for bufptr to send mbufs to worker. This can happen as worker core first returns mbufs to distributor and later gets new mbufs, while distributor first release mbufs to worker and later handle returning packets. This patch fixes possibility of the deadlock by always taking care of returning packets first on the distributor side and handling packets while waiting to release new. Fixes: 775003ad2f96 ("distributor: add new burst-capable library") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski Acked-by: David Hunt --- lib/librte_distributor/rte_distributor.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 89493c331..12b3db33c 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -321,12 +321,14 @@ release(struct rte_distributor *d, unsigned int wkr) struct rte_distributor_buffer *buf = &(d->bufs[wkr]); unsigned int i; + handle_returns(d, wkr); + /* Sync with worker on GET_BUF flag */ while (!(__atomic_load_n(&(d->bufs[wkr].bufptr64[0]), __ATOMIC_ACQUIRE) - & RTE_DISTRIB_GET_BUF)) + & RTE_DISTRIB_GET_BUF)) { + handle_returns(d, wkr); rte_pause(); - - handle_returns(d, wkr); + } buf->count = 0; @@ -376,6 +378,7 @@ rte_distributor_process(struct rte_distributor *d, /* Flush out all non-full cache-lines to workers. */ for (wid = 0 ; wid < d->num_workers; wid++) { /* Sync with worker on GET_BUF flag. */ + handle_returns(d, wid); if (__atomic_load_n(&(d->bufs[wid].bufptr64[0]), __ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF) { release(d, wid); -- 2.17.1