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 6BE6BA04DB for ; Sat, 17 Oct 2020 05:07:39 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AEE24E2A3; Sat, 17 Oct 2020 05:07:33 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 71B84CFD9 for ; Sat, 17 Oct 2020 05:07:28 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20201017030717euoutp016bed1733c8a02be84abd671021fb08bd~_qLq2FNOh2378923789euoutp01f for ; Sat, 17 Oct 2020 03:07:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20201017030717euoutp016bed1733c8a02be84abd671021fb08bd~_qLq2FNOh2378923789euoutp01f DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1602904037; bh=q+pfAStd5xrOR1iPFbpstZ2K7pNMPEEJM45PQovHdoU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lUZVYrEeYGk9QzFumX0+ml4ie6KvTHPcS3P76Le3tFXMSEKf7U3jZiYJx2XrDK+uv gqLYhVgiZbITw4LBYXLG58yQH1NNW019Rb8JnEQhaCveB6vi/DN0OTr+CdotSWhdoC EUoMj9al/wqX95AHjfoWk/fyF/xqPa/hLCUStMW0= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20201017030712eucas1p100317480a4b1f1de26224bd2ae9b6a48~_qLl_y1iq0897308973eucas1p1o; Sat, 17 Oct 2020 03:07:12 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 12.42.05997.FDF5A8F5; Sat, 17 Oct 2020 04:07:11 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20201017030711eucas1p1b70f13e4636ad7c3e842b48726ae1845~_qLlIIYXY0898308983eucas1p14; Sat, 17 Oct 2020 03:07:11 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20201017030711eusmtrp10af15526127711f0b0cbdccde9bd79ad~_qLlHl8uO3018830188eusmtrp1T; Sat, 17 Oct 2020 03:07:11 +0000 (GMT) X-AuditID: cbfec7f4-65dff7000000176d-b8-5f8a5fdfb5c0 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id AC.DE.06017.FDF5A8F5; Sat, 17 Oct 2020 04:07:11 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20201017030710eusmtip1b03fd00558f7af640aaa09a53eb65d72~_qLkmCB8k3124931249eusmtip15; Sat, 17 Oct 2020 03:07:10 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 17 Oct 2020 05:06:46 +0200 Message-Id: <20201017030701.16134-3-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201017030701.16134-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMIsWRmVeSWpSXmKPExsWy7djP87r347viDXY/tbC4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErozvsyIL jghWNLzayNLAeIivi5GTQ0LARGLL0wnMXYxcHEICKxgljl07xQjhfGGUWHP7OVTmM6PEvLnP gTIcYC03dklBxJczSpx9v4QVZBRY0ZomKRCbTcBW4sjMr2BxEYEwiebmvSwgvcwCzhJPvrKB hIWBSg4v2cQMYrMIqEr8ut8NVs4r4Cpx78pKdojr5CVWbzjADNLKKeAm0XjcFSJ8mU3iUEs1 hO0iMXvSIzYIW1ji1fEtUK0yEqcn97CAnCkhsI1R4urvn4wQzn5Gieu9K6CqrCUO//vNBnGb psT6XfoQYUeJnok3mCHe5ZO48VYQJMwMZE7aNh0qzCvR0SYEUa0n8bRnKiPM2j9rn7BA2B4S W+/cZYOE1FVGiQlTXzJPYJSfhbBsASPjKkbx1NLi3PTUYqO81HK94sTc4tK8dL3k/NxNjMCo P/3v+JcdjLv+JB1iFOBgVOLh5VjaGS/EmlhWXJl7iFGCg1lJhNfp7Ok4Id6UxMqq1KL8+KLS nNTiQ4zSHCxK4rzGi17GCgmkJ5akZqemFqQWwWSZODilGhiZ7Gat8XuT2WQ3w/JZud2p/PWd J1Oi2Q3mcrm7cVbOLr2xm0edocSTe8m0jtUHPzPO2buGYd73q1xCR+1VG33mzDT4WPrrjdx3 XsvHXtI8ho8YKi/t+2STK1W5yEy755tYxcI1TxgPfnLtOhcVLbfxTcY3htP+viG25/qEGA7w 79zbePWrx2clluKMREMt5qLiRAAPqLS09gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCLMWRmVeSWpSXmKPExsVy+t/xu7r347viDb6sYLW4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYzvsyILjghWNLzayNLAeIivi5GDQ0LA ROLGLqkuRk4OIYGljBJXFpZDhGUkPlwSAAlLCAhL/LnWxdbFyAVU8pFR4khLJxtIgk3AVuLI zK+sIPUiAmESJ1b6g4SZBdwltiyeygxiCwOVHF6yCcxmEVCV+HW/mxXE5hVwlbh3ZSU7xHx5 idUbDjCDjOEUcJNoPO4KsaqRUeLsrHUsExj5FjAyrGIUSS0tzk3PLTbSK07MLS7NS9dLzs/d xAgMwW3Hfm7Zwdj1LvgQowAHoxIP74ZFnfFCrIllxZW5hxglOJiVRHidzp6OE+JNSaysSi3K jy8qzUktPsRoCnTURGYp0eR8YHzklcQbmhqaW1gamhubG5tZKInzdggcjBESSE8sSc1OTS1I LYLpY+LglGpgbH0h15fdxJJ5PvTUC7adSp3sX+as3PxpW7NK9vv+7nkewhez79mvO8lx7tTz R+mrV6+wTJu1bmeQ8WfjhcmihxiO3X9ZkMa8YGH24soCOZFAp5ctu2b96r3ibsOe47T3/aub v+TfJ6S35bQdYr+iV9r0KvLKNf/5xyK6TF4oMTAtTwkynav4Q4mlOCPRUIu5qDgRACyEM+hX AgAA X-CMS-MailID: 20201017030711eucas1p1b70f13e4636ad7c3e842b48726ae1845 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20201017030711eucas1p1b70f13e4636ad7c3e842b48726ae1845 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20201017030711eucas1p1b70f13e4636ad7c3e842b48726ae1845 References: <20201010160508.19709-1-l.wojciechow@partner.samsung.com> <20201017030701.16134-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v8 02/17] 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 c6b19a388..d6d4350a2 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -319,12 +319,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; @@ -374,6 +376,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