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 A4F5AA04BC for ; Sat, 10 Oct 2020 00:03:01 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A381D1D614; Sat, 10 Oct 2020 00:02:56 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id EF4F81D60A for ; Sat, 10 Oct 2020 00:02:52 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20201009220241euoutp02f7a1a7ddf6b135e07704cc8f67cccad9~8cguiO8CP2454124541euoutp02E for ; Fri, 9 Oct 2020 22:02:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20201009220241euoutp02f7a1a7ddf6b135e07704cc8f67cccad9~8cguiO8CP2454124541euoutp02E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1602280961; bh=vuwpOk5DYAg8nrtQAkN6Jx3ymyd0V4eE98pnCakaiTY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cFmGuWqSfq9iDuVdBJ+ogoyFVEuybbFcSo3p8giN1mpOYi8fea9uNQK2HLiHN6LnR 9b9bX2NIhMyBZ2VS7hotdl6xTarR+zJtZBh2uOr5WGJC8Ck84q4+rVSQhXEQRD8hkZ 0nUPGbHO7JSSrlOE2AllqXU/0VznpZwtVdiXrYts= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20201009220231eucas1p15ab66d078308bacac156bc2b8f0f3c90~8cglFagMQ1023910239eucas1p1b; Fri, 9 Oct 2020 22:02:31 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 33.88.05997.7FDD08F5; Fri, 9 Oct 2020 23:02:31 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20201009220231eucas1p217c48d880aaa7f15e4351f92eede01b6~8cgktOpNq1926719267eucas1p2h; Fri, 9 Oct 2020 22:02:31 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20201009220231eusmtrp2bfc2d7a6b92eff2947f2c304e0352c9c~8cgkspy0B1642116421eusmtrp2X; Fri, 9 Oct 2020 22:02:31 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-f1-5f80ddf746c9 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 72.E2.06314.7FDD08F5; Fri, 9 Oct 2020 23:02:31 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20201009220230eusmtip1c8faceecd183e000f66feff7d0c691d0~8cgjrYEHl1990219902eusmtip1E; Fri, 9 Oct 2020 22:02:29 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 10 Oct 2020 00:01:49 +0200 Message-Id: <20201009220202.20834-3-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201009220202.20834-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djP87rf7zbEG+zoUbS4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsEroy9U+Yy FhwRrLj88ihjA+Mhvi5GTg4JAROJ2Y37WboYuTiEBFYwSkxYeJ8ZwvnCKPHg6HdWCOczo8Tt CfeYYFqmr34L1bKcUeLVjB1QVZ8YJbouTGQDqWITsJU4MvMrK4gtIhAm0dy8F6iDg4NZwFni yVewEmGgkpMXZrGA2CwCqhITe/4ygti8Aq4SLX9PskIsk5dYveEAM4jNKeAm0bprGdhiCYHr bBLbXixnhChykfj99QI7hC0s8er4FihbRuL/zvlMEA3bGCWu/v7JCOHsZ5S43rsCqspa4vC/ 32wQ12lKrN+lD2JKCDhK3O+QgDD5JG68FQQpZgYyJ22bzgwR5pXoaBOCmKEn8bRnKiPM1j9r n7BA2B4SW85uYoIEz1VGiY1dl1kmMMrPQti1gJFxFaN4amlxbnpqsVFearlecWJucWleul5y fu4mRmD0n/53/MsOxl1/kg4xCnAwKvHwNiQ3xAuxJpYVV+YeYpTgYFYS4XU6ezpOiDclsbIq tSg/vqg0J7X4EKM0B4uSOK/xopexQgLpiSWp2ampBalFMFkmDk6pBsaoJYeDD8sLi1RlHk9g XcQYeC5L5WSIsNKUdTqJEabqHwXWvW80PO6yfPOF+RcEpnZN3uf2dom4493aYwYPezNfiHku n3V3jWCMcc2EerdlWQnFEy/tD2RXeae8TfHKLe4/Ae0JOffnpGX53Sxw9jh5ycDLcWrLz6Lr 3fdapzNd2/1u2vIX5SxKLMUZiYZazEXFiQA0+ww2+gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBLMWRmVeSWpSXmKPExsVy+t/xu7rf7zbEG+w8wWpxY5W9Rd+kj0wW 7z5tZ7J41rOO0eJfxx92B1aPXwuWsnos3vOSyePguz1MAcxRejZF+aUlqQoZ+cUltkrRhhZG eoaWFnpGJpZ6hsbmsVZGpkr6djYpqTmZZalF+nYJehl7p8xlLDgiWHH55VHGBsZDfF2MnBwS AiYS01e/Zeli5OIQEljKKPHt8AL2LkYOoISMxIdLAhA1whJ/rnWxQdR8YJTo23+dHSTBJmAr cWTmV1aQehGBMIkTK/1BwswC7hJbFk9lBrGFgUpOXpjFAmKzCKhKTOz5ywhi8wq4SrT8PckK MV9eYvWGA2D1nAJuEq27lkHd08goseXAS+YJjHwLGBlWMYqklhbnpucWG+oVJ+YWl+al6yXn 525iBIbitmM/N+9gvLQx+BCjAAejEg+vRmJDvBBrYllxZe4hRgkOZiURXqezp+OEeFMSK6tS i/Lji0pzUosPMZoCXTWRWUo0OR8YJ3kl8YamhuYWlobmxubGZhZK4rwdAgdjhATSE0tSs1NT C1KLYPqYODilGhjTWda1Oc5TMm7/cCggZdLZpBrDqPXM9pdUpqZFCFtduf4ot8j5xYEdJXd+ /JqYvPfsWc57Nwzv37ol63Bm6rmFEw95dHZ5qyyYqutx+Qv3PxbBvHmhl7WrOlS0tiw18E9q XyJ1k7PIV1Rwid5OO9nG639ZGYyldm946LV4/nvxq7yHY6oWWS5TYinOSDTUYi4qTgQAPQxj rVsCAAA= X-CMS-MailID: 20201009220231eucas1p217c48d880aaa7f15e4351f92eede01b6 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20201009220231eucas1p217c48d880aaa7f15e4351f92eede01b6 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20201009220231eucas1p217c48d880aaa7f15e4351f92eede01b6 References: <20201008052323.11547-1-l.wojciechow@partner.samsung.com> <20201009220202.20834-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v6 02/15] 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 wants to return back mbufs and waits for retptr handshake to be cleared while distributor core waits 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 releases 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