From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by dpdk.org (Postfix) with ESMTP id 17C961B77C for ; Thu, 10 May 2018 00:43:22 +0200 (CEST) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 891E021B74; Wed, 9 May 2018 18:43:22 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Wed, 09 May 2018 18:43:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=mesmtp; bh=Q0LWtxSHndizQ9 sXFGoQir2KkRJ7E8TsVRkz/Shs3jU=; b=amCQC9z4eiwRCnoUNAwxuZrM3nAIa/ bDlpB2aOw6xmWIltPoTK3NuCmUwa6e11kFJELGoUUtNG/SL0DMq8H8R1y+iisy2a eO3nisAd3fIkM9TaiSFbBLbVP/dPnbgNyyd2FVOD70kiVFa38ZtXM6AS9OekqrkV XtIyUTxuQA/MY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=Q0LWtxSHndizQ9sXFGoQir2KkRJ7E8TsVRkz/Shs3jU=; b=doNpuhVB uTmf8qMFD0mb2fnELGDyCB2ihLkugTOA/T/tIuzOH42jPc2szFjn6Z8fFxoChyZo 8PiyWKmKFEzXOLLTxukTRTg9U4glHM/dqdNfy6LoPzIOJRGBXpvlSnqxOkzmm4z7 TmMe8X7vhNjZSJRUdBpJJc2X4421nyzuktkJEdt3PoxPP3KzFTJOkWNWGVX2BETP 4Fw9EcOaUIiF5aF90aDffGl9XIp6/qYq9m7aOgH40j5XJLovYf6oAssfp5SjT1EP +NdT4qpUpCvZFDeLLcpxndpH4FkZU1kzHX62+KvQZilJpfMmsL80hk2kZxrktTPN DsjFzYeHbLflJA== X-ME-Sender: Received: from xps.monjalon.net (184.203.134.77.rev.sfr.net [77.134.203.184]) by mail.messagingengine.com (Postfix) with ESMTPA id ED92DE4EEF for ; Wed, 9 May 2018 18:43:21 -0400 (EDT) From: Thomas Monjalon To: dev@dpdk.org Date: Thu, 10 May 2018 00:43:02 +0200 Message-Id: <20180509224313.27289-1-thomas@monjalon.net> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180509094337.26112-1-thomas@monjalon.net> References: <20180509094337.26112-1-thomas@monjalon.net> Subject: [dpdk-dev] [PATCH v2 00/11] ethdev: fix race conditions in iterator and notifications X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2018 22:43:23 -0000 We have discovered some race conditions when using the port iterator and/or the notifications recently added. The work was done mostly with failsafe but some bugs could be reproduced with other drivers. These 11 patches are fixing all these issues. The PMDs are modified to call a new function after probing each port. v2 (address Gaetan comments): * rename rte_eth_dev_allocated_lock_free to rte_eth_dev_allocated_nolock * do not use uint32_t for avoiding port id iteration overflow (should be fixed separately with BUILD_BUG_ON) Quick survey: Do you think it is too late to merge these fixes in 18.05? Or do you agree that these bugs really deserve to be fixed by this series in 18.05-rc3? Matan Azrad (4): ethdev: allow ownership operations on unused port ethdev: add lock to port allocation check net/failsafe: fix sub-device ownership race ethdev: fix port removal notification timing Thomas Monjalon (7): ethdev: fix debug log of owner id net/failsafe: fix sub-device visibility ethdev: add doxygen comments for each state drivers/net: use higher level of probing helper for PCI ethdev: add probing finish function ethdev: fix port visibility before initialization ethdev: fix port probing notification drivers/net/af_packet/rte_eth_af_packet.c | 2 + drivers/net/ark/ark_ethdev.c | 2 + drivers/net/avp/avp_ethdev.c | 15 +----- drivers/net/bnx2x/bnx2x_ethdev.c | 20 ++----- drivers/net/bonding/rte_eth_bond_pmd.c | 2 + drivers/net/cxgbe/cxgbe_ethdev.c | 1 + drivers/net/cxgbe/cxgbe_main.c | 5 ++ drivers/net/cxgbe/cxgbevf_ethdev.c | 1 + drivers/net/cxgbe/cxgbevf_main.c | 5 ++ drivers/net/dpaa/dpaa_ethdev.c | 5 +- drivers/net/dpaa2/dpaa2_ethdev.c | 4 +- drivers/net/failsafe/failsafe.c | 24 +++++++-- drivers/net/failsafe/failsafe_eal.c | 57 +++++++++++++------- drivers/net/failsafe/failsafe_ether.c | 23 ++++++++ drivers/net/failsafe/failsafe_private.h | 4 ++ drivers/net/kni/rte_eth_kni.c | 2 + drivers/net/liquidio/lio_ethdev.c | 15 +----- drivers/net/mlx4/mlx4.c | 1 + drivers/net/mlx5/mlx5.c | 2 + drivers/net/mvpp2/mrvl_ethdev.c | 1 + drivers/net/nfp/nfp_net.c | 2 + drivers/net/null/rte_eth_null.c | 2 + drivers/net/octeontx/octeontx_ethdev.c | 3 ++ drivers/net/pcap/rte_eth_pcap.c | 2 + drivers/net/ring/rte_eth_ring.c | 1 + drivers/net/softnic/rte_eth_softnic.c | 3 ++ drivers/net/szedata2/rte_eth_szedata2.c | 2 + drivers/net/tap/rte_eth_tap.c | 2 + drivers/net/vhost/rte_eth_vhost.c | 2 + drivers/net/virtio/virtio_user_ethdev.c | 3 ++ lib/librte_ethdev/rte_ethdev.c | 87 ++++++++++++++++++++----------- lib/librte_ethdev/rte_ethdev.h | 6 ++- lib/librte_ethdev/rte_ethdev_driver.h | 14 +++++ lib/librte_ethdev/rte_ethdev_pci.h | 2 + lib/librte_ethdev/rte_ethdev_version.map | 1 + test/test/virtual_pmd.c | 2 + 36 files changed, 228 insertions(+), 97 deletions(-) -- 2.16.2