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 D5B46A04B5 for ; Wed, 23 Sep 2020 03:47:37 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4AFE51DBA0; Wed, 23 Sep 2020 03:47:36 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 621BC1DB35 for ; Wed, 23 Sep 2020 03:47:23 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014723euoutp02be45ab8c38caa7514187985bd393b44a~3RnDe8ZBV1896818968euoutp02z for ; Wed, 23 Sep 2020 01:47:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200923014723euoutp02be45ab8c38caa7514187985bd393b44a~3RnDe8ZBV1896818968euoutp02z DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825643; bh=F/QcS1TsD+CKMSw/ff2Fe2SfzJqQzA9Zm090joEQmbE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s2LQgGZzWSE2YA0xRDfaQ3htUOamLh6hoqP89w9kxfHnOMa4QhTzyy3UWOhYoj2mM toTulNiKXbo4I4GFMIMjwnrxL65HK3ve0Q3mM69d5yqqaB+rZA4DTCuidgd9UTWMgY FeDZJQqwxxpE/npo8nN5VoHwLu+8rhUrW+ZhtcNU= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923014722eucas1p2ea4c62b314e6ada658a7622cbc4d2ec2~3RnDQhNst1707617076eucas1p2k; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 8A.7D.05997.A29AA6F5; Wed, 23 Sep 2020 02:47:22 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384~3RnC5-x1x1709717097eucas1p2e; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200923014722eusmtrp29aa6288addcca36aa769abd3ab22723d~3RnC5fNHI2054820548eusmtrp2S; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-8d-5f6aa92a49a0 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id F4.9A.06314.A29AA6F5; Wed, 23 Sep 2020 02:47:22 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014721eusmtip19577b114809479c8312233e376d0a5d6~3RnCQeQ5I1064810648eusmtip1v; Wed, 23 Sep 2020 01:47:21 +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 03:47:11 +0200 Message-Id: <20200923014713.16932-7-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKIsWRmVeSWpSXmKPExsWy7djPc7paK7PiDRZd17e4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErow5HzvY CyYJVvx6fJ21gXEqXxcjJ4eEgInE7eavjF2MXBxCAisYJR6sPAzlfGGU2PzgNZTzmVHi0rKV LDAtnRdPQSWWM0ps+fyFBcL5xCgxcdUZRpAqNgFbiSMzv7KC2CICYRLNzXuBijg4mAWcJZ58 ZQMxhQWsJWYerQSpYBFQlTg+5wJYJ6+Aq8TKqUegdslLrN5wgBmknFPATeLpP3mQTRIC19kk Vi7dxg5R4yLx7fYJZghbWOLV8S1QcRmJ/zvnM0E0bGOUuPr7JyOEs59R4nrvCqgqa4nD/36z QdymKbF+lz5E2FHiyuX3YIslBPgkbrwVBAkzA5mTtk2HCvNKdLQJQVTrSTztmcoIs/bP2idQ 53tIXJq0AWyRkMBVRokbD9MmMMrPQti1gJFxFaN4amlxbnpqsVFearlecWJucWleul5yfu4m RmDkn/53/MsOxl1/kg4xCnAwKvHwvniSGS/EmlhWXJl7iFGCg1lJhNfp7Ok4Id6UxMqq1KL8 +KLSnNTiQ4zSHCxK4rzGi17GCgmkJ5akZqemFqQWwWSZODilGhhD4+fOrf61/vzH93yCGzJe HY68ZsoXsn/TpA7XD95KqYs0d3LnXd+7zmNL94/Fj4U4Ti8IznM/YLroi8uLuKxDYdfb/+1T fJ136Gzg8qRwX0P7RYfvdp4SCVlou2zH7HdFr7bKPOj/Xx/pf95/7nRuvQDHum/dxb8KHM7s jGqQeJl31Sa4cvU2JZbijERDLeai4kQA3dBLyfgCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xu7paK7PiDRZdk7G4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYw5HzvYCyYJVvx6fJ21gXEqXxcjJ4eE gIlE58VTjF2MXBxCAksZJU4cO8HexcgBlJCR+HBJAKJGWOLPtS42iJoPjBJX571gAkmwCdhK HJn5lRWkXkQgTOLESn+QMLOAu8SWxVOZQcLCAtYSM49WgoRZBFQljs+5wAhi8wq4SqyceoQF Yry8xOoNB8DKOQXcJJ7+k4fY1MgoMWPha/YJjHwLGBlWMYqklhbnpucWG+oVJ+YWl+al6yXn 525iBIbhtmM/N+9gvLQx+BCjAAejEg/viyeZ8UKsiWXFlbmHGCU4mJVEeJ3Ono4T4k1JrKxK LcqPLyrNSS0+xGgKdNREZinR5HxgjOSVxBuaGppbWBqaG5sbm1koifN2CByMERJITyxJzU5N LUgtgulj4uCUamCU3LvP6MvMlSv2ht+7kJ66W6lBoNgmcv3jHzcj9Jbp/JaQ43OuMP0WXreC U/yxxbGr8m1PygtdlS/KVbcIlJyM5zyim9hUuN+zMbk+dqUy60Tx0gSGva+E4w9Isur0s/jq SjmIy0YZpq1xfLTqyofVhYeEWKR+te/OPbrzcoTJvcDkK7enpiixFGckGmoxFxUnAgCZS3RZ WQIAAA== X-CMS-MailID: 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384 References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v2 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 --- 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