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 371C8A04B1 for ; Sat, 10 Oct 2020 18:05:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 439E11D917; Sat, 10 Oct 2020 18:05:39 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id EAC7A1D907 for ; Sat, 10 Oct 2020 18:05:33 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20201010160522euoutp01e653ca3a6ef8d3fa13f20450bfb83c20~8rSCNvDJH0390103901euoutp01U for ; Sat, 10 Oct 2020 16:05:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20201010160522euoutp01e653ca3a6ef8d3fa13f20450bfb83c20~8rSCNvDJH0390103901euoutp01U DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1602345922; bh=vuwpOk5DYAg8nrtQAkN6Jx3ymyd0V4eE98pnCakaiTY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q9ia6w0YCsFVAPCYbCX9qCHEXPfz8Cvh6cA1jQQi4/VtkOT2ET1P5mLtklQqEqjc7 SEU9j+X8esYXFsQNLOrJRBbYhotr9LTYDrZGfE8Syyf5D+r7Rl3uU7jH08irEbF4K9 u9ZXb4nbxsreZa5aKCD3T04swsM0BHelaOBQ/Hjs= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20201010160517eucas1p24fbc84b691935dacc6c41042010c114e~8rR9bI0zU1129911299eucas1p2w; Sat, 10 Oct 2020 16:05:17 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id D5.58.05997.DBBD18F5; Sat, 10 Oct 2020 17:05:17 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20201010160517eucas1p2141c0bb6097a05aa99ed8efdf5fb7512~8rR8_j_R10268502685eucas1p2s; Sat, 10 Oct 2020 16:05:17 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20201010160517eusmtrp266af92c0cdffc3cf9044a79bb4a3be8f~8rR898gth1692616926eusmtrp2E; Sat, 10 Oct 2020 16:05:17 +0000 (GMT) X-AuditID: cbfec7f4-65dff7000000176d-5c-5f81dbbd6a74 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id B3.5A.06314.DBBD18F5; Sat, 10 Oct 2020 17:05:17 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20201010160516eusmtip1cb0687b01d5520dc1ee11806883d87fa~8rR8NKl_G2442224422eusmtip1w; Sat, 10 Oct 2020 16:05:16 +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 18:04:53 +0200 Message-Id: <20201010160508.19709-3-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201010160508.19709-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djPc7p7bzfGG+x/q2RxY5W9Rd+kj0wW 7z5tZ7J41rOO0eJfxx92B1aPXwuWsnos3vOSyePguz1MAcxRXDYpqTmZZalF+nYJXBl7p8xl LDgiWHH55VHGBsZDfF2MnBwSAiYSd4/+Z+9i5OIQEljBKDG9+yobhPOFUeLJqgvMEM5nRokX VxqYYVp+PtrBCJFYzijx7ME3FgjnE6PEsuOrmECq2ARsJY7M/MoKYosIhEk0N+8FKuLgYBZw lnjylQ0kLAxU0tHwC8xmEVCVWNF3khHE5hVwlZh95A/UMnmJ1RsOgNmcAm4SZ7sOgp0nIXCd TeL2w7ssEEUuEofuTGWFsIUlXh3fwg5hy0j83zmfCaJhG6PE1d8/GSGc/YwS13tXQFVZSxz+ 95sN4jpNifW79EFMCQFHiVvz/SBMPokbbwVBipmBzEnbpjNDhHklOtqEIGboSTztmcoIs/XP 2idQl3lIbDh/jQkSPFcZJRbtvsw2gVF+FsKuBYyMqxjFU0uLc9NTi43yUsv1ihNzi0vz0vWS 83M3MQKj//S/4192MO76k3SIUYCDUYmHV+JUY7wQa2JZcWXuIUYJDmYlEV6ns6fjhHhTEiur Uovy44tKc1KLDzFKc7AoifMaL3oZKySQnliSmp2aWpBaBJNl4uCUamAs4lj3/8oZ3vuxF1aU yiiun24TtStjm2H06R7xmqszzHabX5hgI8c27U5fcVqhv9/2W66+Qn0z/+4NX/PN89Tyx292 LEmZ2PDTMN5vu1++3tyPwr9V1hu+PRQ8Qz+kJjVVuSY0OjYqQNNzSe32PxWWG8I0Aj6bnW9f sNFt5eplztPaEyrVXx9UYinOSDTUYi4qTgQAx48Ui/oCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBLMWRmVeSWpSXmKPExsVy+t/xu7p7bzfGG/yczmJxY5W9Rd+kj0wW 7z5tZ7J41rOO0eJfxx92B1aPXwuWsnos3vOSyePguz1MAcxRejZF+aUlqQoZ+cUltkrRhhZG eoaWFnpGJpZ6hsbmsVZGpkr6djYpqTmZZalF+nYJehl7p8xlLDgiWHH55VHGBsZDfF2MnBwS AiYSPx/tYOxi5OIQEljKKPH060umLkYOoISMxIdLAhA1whJ/rnWxQdR8YJTYtPoMO0iCTcBW 4sjMr6wg9SICYRInVvqDhJkF3CW2LJ7KDGILA5V0NPxiA7FZBFQlVvSdZASxeQVcJWYf+cMM MV9eYvWGA2A2p4CbxNmug1C7GhklTty+yTaBkW8BI8MqRpHU0uLc9NxiQ73ixNzi0rx0veT8 3E2MwFDcduzn5h2MlzYGH2IU4GBU4uGVONUYL8SaWFZcmXuIUYKDWUmE1+ns6Tgh3pTEyqrU ovz4otKc1OJDjKZAV01klhJNzgfGSV5JvKGpobmFpaG5sbmxmYWSOG+HwMEYIYH0xJLU7NTU gtQimD4mDk6pBsb0qq6KDQv7214ctvmS3xDWUJiZVCPmKuR9SbvQ/o/t/6m/ZS5NF+Z4fHuS d+AZC1vdC2Ixfj4LrRJuB06ttZDrada5zqao//tJ+NcvChwpr+4uDl8tzDPloeihyy+2G670 fPd4xyaRx9VmFvpi/knzFy5btcbhBp+b+iKpXcFbEs/PVlWeJaPEUpyRaKjFXFScCACugGUP WwIAAA== X-CMS-MailID: 20201010160517eucas1p2141c0bb6097a05aa99ed8efdf5fb7512 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20201010160517eucas1p2141c0bb6097a05aa99ed8efdf5fb7512 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20201010160517eucas1p2141c0bb6097a05aa99ed8efdf5fb7512 References: <20201009220202.20834-1-l.wojciechow@partner.samsung.com> <20201010160508.19709-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v7 02/16] 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