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 240AEA04C0 for ; Sat, 26 Sep 2020 00:42:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3E0FA1EA5A; Sat, 26 Sep 2020 00:42:39 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 67C311E9E1 for ; Sat, 26 Sep 2020 00:42:24 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224223euoutp01f9b169e6a8b9ed55ce732ea1e2abef9e~4KBYrmCZg2821028210euoutp01C for ; Fri, 25 Sep 2020 22:42:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200925224223euoutp01f9b169e6a8b9ed55ce732ea1e2abef9e~4KBYrmCZg2821028210euoutp01C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073743; bh=WftdC1B2COg7s1H3DcFSiIacdUfLA95Zumy6JUm6xdg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QT8/CKcT8Iys6vy/5o17gC4PwztzM3At0eGaIihXFBGCbA5vlpXOSJ50d8jRlQreH aGPlUmpp/tLaBE8eYMQlECGmUf53VN2+TnJiTZpXx+tJUw4UjQQ4HhUzbC8RoYal9k eF7Rc1dYNEgB26SsxF0AsG8MHFz285MSc8KOcbAg= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200925224222eucas1p221dd45d7dec27ea1e1d3d92053605a3d~4KBXkF1Et0960309603eucas1p2n; Fri, 25 Sep 2020 22:42:22 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 3C.0A.06318.D427E6F5; Fri, 25 Sep 2020 23:42:21 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a~4KBW8kU3o3102531025eucas1p1r; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200925224221eusmtrp26ee72b0b166c473ac6890e34c939b05c~4KBW8DSN20483804838eusmtrp2K; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) X-AuditID: cbfec7f5-38bff700000018ae-0a-5f6e724de0ec Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 50.CE.06017.D427E6F5; Fri, 25 Sep 2020 23:42:21 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224220eusmtip24f028850ff32077c750f8a7a8066f659~4KBWVvVG-1081510815eusmtip24; Fri, 25 Sep 2020 22:42:20 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:08 +0200 Message-Id: <20200925224209.12173-8-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djP87q+RXnxBhMvmlncWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8aBPz2M BfsFKybNPcbewLiXr4uRk0NCwETi+7TbjF2MXBxCAisYJc7t6GaCcL4wSnQtv8YK4XxmlJj0 A6SMA6zlxq08iPhyRomOpcsZ4Yp+NE9mA5nLJmArcWTmV1YQW0QgTKK5eS8LSDOzgLPEk69g JcIC1hL/D3wGK2ERUJXYOqcfzOYVcJU492otM8R58hKrNxwAszkF3CS+7ZvLDLJLQuAym8S2 xjfsEEUuEl3Nh6BsYYlXx7dA2TIS/3fOZ4Jo2MYocfX3T0YIZz+jxPXeFVBV1hKH//1mg7hO U2L9Ln2IsKPErqVPWCA+5pO48VYQJMwMZE7aNp0ZIswr0dEmBFGtJ/G0ZyojzNo/a0E6QWwP iXfr1rNAwucqo8Tls+vYJzDKz0JYtoCRcRWjeGppcW56arFxXmq5XnFibnFpXrpecn7uJkZg 9J/+d/zrDsZ9f5IOMQpwMCrx8J54lBsvxJpYVlyZe4hRgoNZSYTX6ezpOCHelMTKqtSi/Pii 0pzU4kOM0hwsSuK8xotexgoJpCeWpGanphakFsFkmTg4pRoYVZ4uCfi/NLXhp89OXz/n9kc9 BQ80PwcZTxK801yVtHj1Oh7ZRSm3JQr4ItODHj7tqz6bsjrJ+6elZ2fibRb+jc+vmPybzpNj vd48fcuuDQrTxTjnsyrtlZpuW3P7xnKHX53dBxTC1gX77rxpcu7J45OO4YfeTz1crcIv/3NN 63QR/0wdS+OdSizFGYmGWsxFxYkA4rZH6foCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xe7q+RXnxBrdf8VvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsaBPz2MBfsFKybNPcbewLiXr4uRg0NC wETixq28LkYuDiGBpYwSZ2buZ4aIy0h8uCTQxcgJZApL/LnWxQZR85FR4kLrUnaQBJuArcSR mV9ZQepFBMIkTqz0BwkzC7hLbFk8lRnEFhawlvh/4DMriM0ioCqxdU4/mM0r4Cpx7tVaZoj5 8hKrNxwAszkF3CS+7ZvLDLGrkVGi500f6wRGvgWMDKsYRVJLi3PTc4uN9IoTc4tL89L1kvNz NzECA3HbsZ9bdjB2vQs+xCjAwajEw6vwNDdeiDWxrLgy9xCjBAezkgiv09nTcUK8KYmVValF +fFFpTmpxYcYTYGumsgsJZqcD4ySvJJ4Q1NDcwtLQ3Njc2MzCyVx3g6BgzFCAumJJanZqakF qUUwfUwcnFINjAVTlgYetPfWcT3f2eIc8uCD3bZTBeb74zJ7JlqFnNb6v4U3u+uLgZLspQPm ict7vQzscxiMti1JYa0733ji6I82S5mnCbF/yvg1zPQE63dKfq+/Vl1aOcVX4MBkoxfiD7z5 z71XYRI+3/Vap6xQN1V+dv6uNnvXgvKE5QzOz4Oa/3rJzklUYinOSDTUYi4qTgQAO5JsG1oC AAA= X-CMS-MailID: 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v4 7/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 dd68bc233..b720abe03 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