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 661D7A2E1B for ; Thu, 5 Sep 2019 12:18:42 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5DBA01EF82; Thu, 5 Sep 2019 12:18:42 +0200 (CEST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 1513F1E9D9 for ; Thu, 5 Sep 2019 12:18:41 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7A6098A1C93; Thu, 5 Sep 2019 10:18:40 +0000 (UTC) Received: from rh.redhat.com (ovpn-117-52.ams2.redhat.com [10.36.117.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id A55D619C6A; Thu, 5 Sep 2019 10:18:36 +0000 (UTC) From: Kevin Traynor To: Liang Ma Cc: Michael Santana , David Hunt , dpdk stable Date: Thu, 5 Sep 2019 11:17:17 +0100 Message-Id: <20190905101754.21933-17-ktraynor@redhat.com> In-Reply-To: <20190905101754.21933-1-ktraynor@redhat.com> References: <20190905101754.21933-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.69]); Thu, 05 Sep 2019 10:18:40 +0000 (UTC) Subject: [dpdk-stable] patch 'distributor: fix livelock on flush' has been queued to LTS release 18.11.3 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" Hi, FYI, your patch has been queued to LTS release 18.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 09/12/19. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/cba708424348b49e50b284da3c6b9a8cce1b6d21 Thanks. Kevin Traynor --- >From cba708424348b49e50b284da3c6b9a8cce1b6d21 Mon Sep 17 00:00:00 2001 From: Liang Ma Date: Thu, 25 Jul 2019 10:03:01 +0100 Subject: [PATCH] distributor: fix livelock on flush [ upstream commit 96c343868dd15ebdc74371a9dea2288b30ce13ea ] The Distributor autotest can lock if ran enough times. Worker and distributor threads get into a livelock situation waiting on each other. To repeat: `while sudo sh -c "echo 'distributor_autotest' | ./build/app/test/dpdk-test"; do :; done` The root cause is where we are flushing on exit, and do not wait for all worker packets to be returned before exiting. Add a delay on flush so that all worker packets are returned before completing the flush. Bugzilla ID: 316 Fixes: 775003ad2f96 ("distributor: add new burst-capable library") Reported-by: Michael Santana Signed-off-by: David Hunt Signed-off-by: Liang Ma Tested-by: Michael Santana --- lib/librte_distributor/rte_distributor.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 043b8f3ae..b60acdeed 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -542,4 +542,7 @@ rte_distributor_flush_v1705(struct rte_distributor *d) rte_distributor_process(d, NULL, 0); + /* wait 10ms to allow all worker drain the pkts */ + rte_delay_us(10000); + /* * Send empty burst to all workers to allow them to exit -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2019-09-05 10:36:48.549605211 +0100 +++ 0017-distributor-fix-livelock-on-flush.patch 2019-09-05 10:36:47.494700905 +0100 @@ -1 +1 @@ -From 96c343868dd15ebdc74371a9dea2288b30ce13ea Mon Sep 17 00:00:00 2001 +From cba708424348b49e50b284da3c6b9a8cce1b6d21 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 96c343868dd15ebdc74371a9dea2288b30ce13ea ] + @@ -21 +22,0 @@ -Cc: stable@dpdk.org @@ -32 +33 @@ -index 9fa05f69a..21eb1fb0a 100644 +index 043b8f3ae..b60acdeed 100644 @@ -35 +36 @@ -@@ -543,4 +543,7 @@ rte_distributor_flush_v1705(struct rte_distributor *d) +@@ -542,4 +542,7 @@ rte_distributor_flush_v1705(struct rte_distributor *d)