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 56138A04C7 for ; Tue, 15 Sep 2020 21:35:18 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1FECE1C1B8; Tue, 15 Sep 2020 21:35:12 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 034B71C124 for ; Tue, 15 Sep 2020 21:35:02 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200915193501euoutp010d87216e2b109a5628c3700a9be8ad69~1DA8xxLLN1766217662euoutp01A for ; Tue, 15 Sep 2020 19:35:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200915193501euoutp010d87216e2b109a5628c3700a9be8ad69~1DA8xxLLN1766217662euoutp01A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600198502; bh=F/QcS1TsD+CKMSw/ff2Fe2SfzJqQzA9Zm090joEQmbE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VmGOAit+/7tj9cZfKaRr1ZLzM2zHodTZAbDQ1UoiKHfhXwr58XovYHcMmDPYUAgvR YLX1QHGx4/yEtAPgq5KztfdvOIxTrYLzNOO3FRbvUt+HWouBCBC9PVZ+blYA/vDZop ScOBnoBUrAx+ZWy2V6fJXak2Q1BHwA7xRC6KQq7M= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200915193501eucas1p13038defc40f3004b76f6168bf0d96b61~1DA8bqpJ_0245102451eucas1p1h; Tue, 15 Sep 2020 19:35:01 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 8F.60.05997.567116F5; Tue, 15 Sep 2020 20:35:01 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200915193501eucas1p2333f0b08077c06ba04b89ce192072f9a~1DA776dUy0565705657eucas1p2n; Tue, 15 Sep 2020 19:35:01 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200915193501eusmtrp1fd87506751c2a1e0dabe666f5b8c6b65~1DA77V-h61473114731eusmtrp1F; Tue, 15 Sep 2020 19:35:01 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-12-5f6117659f51 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 7A.6C.06017.567116F5; Tue, 15 Sep 2020 20:35:01 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200915193500eusmtip29af20133654451b2b9841b0ac5b4938d~1DA7U1z042437224372eusmtip2y; Tue, 15 Sep 2020 19:35:00 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Tue, 15 Sep 2020 21:34:49 +0200 Message-Id: <20200915193449.13310-7-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRmVeSWpSXmKPExsWy7djP87qp4onxBi/uKFvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8acjx3s BZMEK349vs7awDiVr4uRk0NCwERi1dR7TF2MXBxCAisYJR58/sIG4XxhlJgzey4TSJWQwGdG iVP7JGE6mt5vYoYoWs4ocfvGIUYI5xOjRMOnJ2AdbAK2EkdmfmUFsUUEwiSam/eydDFycDAL OEs8+coGEhYWsJaYuLYDrJxFQFXi9csmZpASXgFXiTXvoa6Tl1i94QAziM0p4CZx9eNssL0S ApfZJB4fOssKUeQise7wY0YIW1ji1fEt7BC2jMTpyT0sEA3bGCWu/v7JCOHsZ5S43rsCqspa 4vC/32wQx2lKrN+lDxF2lJi87hdYWEKAT+LGW0GQMDOQOWnbdGaIMK9ER5sQRLWexNOeqYww a/+sfcICYXtIvJrazgIJnpmMEkvuHGWfwCg/C2HZAkbGVYziqaXFuempxUZ5qeV6xYm5xaV5 6XrJ+bmbGIGxf/rf8S87GHf9STrEKMDBqMTDu+B2QrwQa2JZcWXuIUYJDmYlEV6ns6fjhHhT EiurUovy44tKc1KLDzFKc7AoifMaL3oZKySQnliSmp2aWpBaBJNl4uCUamC03ia323zJese5 pzhXzHb6MlnSfc2KDKtF19r/esZ+sdN7ZVX089+1XVUCFqVzlmmWl4ctDlgac21bfMb9Zyur ngotDy5aH/rjCaP9QpWt6/QZgn+IJPlnO/Aq7fYOOnnvDccyD2s3d72ktaLvFaWv7D+wNDUt 439FB3OlUuzFJfkOM4T1n5cosRRnJBpqMRcVJwIAXAEgyfkCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xe7qp4onxBhtnsljcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsacjx3sBZMEK349vs7awDiVr4uRk0NC wESi6f0m5i5GLg4hgaWMEvfbdrJ2MXIAJWQkPlwSgKgRlvhzrYsNouYDo0TP/W42kASbgK3E kZlfwepFBMIkTqz0BwkzC7hLbFk8lRnEFhawlpi4toMJxGYRUJV4/bKJGaScV8BVYs17qBPk JVZvOABWzingJnH142wwWwioZPHJ8+wTGPkWMDKsYhRJLS3OTc8tNtIrTswtLs1L10vOz93E CAzDbcd+btnB2PUu+BCjAAejEg/vgtsJ8UKsiWXFlbmHGCU4mJVEeJ3Ono4T4k1JrKxKLcqP LyrNSS0+xGgKdNNEZinR5HxgjOSVxBuaGppbWBqaG5sbm1koifN2CByMERJITyxJzU5NLUgt gulj4uCUamCcoH9d49MbR+cQh2n3JFZOvWmQ7Lly9dnHxaLNwvs4rlgXXLZLK4uWF/23XNHj lF6X16qgnumTtYSYjW90Nd5c+nBr3OSC/5vYjlZf/xHZ1/T/Zy7bm/ILgkbN2hWFx9iW5Z19 eDpiht9Jw4NJ9//s/vBX+anX6cTwrt1/sv/vSiyvOTXnIz+TEktxRqKhFnNRcSIAPirjClkC AAA= X-CMS-MailID: 20200915193501eucas1p2333f0b08077c06ba04b89ce192072f9a X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20200915193501eucas1p2333f0b08077c06ba04b89ce192072f9a X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200915193501eucas1p2333f0b08077c06ba04b89ce192072f9a References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v1 6/6] 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