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 0205B1BBA7 for ; Fri, 11 May 2018 01:58:53 +0200 (CEST) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id A410A20DD3; Thu, 10 May 2018 19:58:52 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Thu, 10 May 2018 19:58:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= cc:date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=mesmtp; bh=F/8a9+LmfReOYD 6lEzhuoz2ZO9TKJKmGemmDuY1+/74=; b=PuOJTgMYJBAPFcUJG5PgDHGCcG/XVX VTZPxZQ1VzFkXp6TZtixhDnsYbkNacLpnIfnS1VPaf1zKa5m1w6nsUpTd9sCJOkK NA29EYbgbkyj61EXbNMW0eQPIBqmMc5aN157c0NCcX98odAqfujnhpPWn3lkilsF JgNEReJ64LuDE= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=F/8a9+LmfReOYD6lEzhuoz2ZO9TKJKmGemmDuY1+/74=; b=VGrhVnMT slurjv3fYH+RTcVKZzADu+mvdCPbhNh0DYfWwsoVoxTv1AiDSBBbTVmEaf9ZgAd8 XlC8kjR7r0IpcwjTgfOablhnZAjkwu91WtCY3Cy2WjvIAAI0545GpqTdAmRWZwa8 hOXGhgqcI4w40ro8Nb84cm/gUJd+9NG/QI5UnAWG2tlLUfEmWWkDKSfZe4OUGVLk s6vJiAUYKAKL4CqTPNfel2+fZYjsJViqVUxMsfEFKUXUtBOunbuDbmY4lUvjdvBc SG0nNC0mkBstI4+QIQnBcRrCQlf9ii3+u1E1mwqUaW/tuwpiFDaRxKmdr7QZOXke YYGPUEmzunUCqg== 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 B1B98E4393; Thu, 10 May 2018 19:58:51 -0400 (EDT) From: Thomas Monjalon To: dev@dpdk.org Cc: matan@mellanox.com, arybchenko@solarflare.com, stephen@networkplumber.org, ferruh.yigit@intel.com Date: Fri, 11 May 2018 01:58:34 +0200 Message-Id: <20180510235836.1099-10-thomas@monjalon.net> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180510235836.1099-1-thomas@monjalon.net> References: <20180509094337.26112-1-thomas@monjalon.net> <20180510235836.1099-1-thomas@monjalon.net> Subject: [dpdk-dev] [PATCH v3 09/11] ethdev: fix port probing notification 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: Thu, 10 May 2018 23:58:53 -0000 The new device was notified as soon as it was allocated. It leads to use a device which is not yet initialized. The notification must be published after the initialization is done by the PMD, but before the state is changed, in order to let notified entities taking ownership before general availability. Fixes: 29aa41e36de7 ("ethdev: add notifications for probing and removal") Cc: stable@dpdk.org Signed-off-by: Thomas Monjalon Reviewed-by: Andrew Rybchenko Reviewed-by: Stephen Hemminger --- lib/librte_ethdev/rte_ethdev.c | 5 ++--- lib/librte_ethdev/rte_ethdev_driver.h | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index d12b4db27..54439cd64 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -322,9 +322,6 @@ rte_eth_dev_allocate(const char *name) unlock: rte_spinlock_unlock(&rte_eth_dev_shared_data->ownership_lock); - if (eth_dev != NULL) - _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_NEW, NULL); - return eth_dev; } @@ -3478,6 +3475,8 @@ rte_eth_dev_probing_finish(struct rte_eth_dev *dev) if (dev == NULL) return; + _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_NEW, NULL); + dev->state = RTE_ETH_DEV_ATTACHED; } diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index 3640dff68..c9c825e3f 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -106,6 +106,8 @@ int _rte_eth_dev_callback_process(struct rte_eth_dev *dev, * This is the last step of device probing. * It must be called after a port is allocated and initialized successfully. * + * The notification RTE_ETH_EVENT_NEW is sent to other entities + * (libraries and applications). * The state is set as RTE_ETH_DEV_ATTACHED. * * @param dev -- 2.16.2