From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f49.google.com (mail-pg0-f49.google.com [74.125.83.49]) by dpdk.org (Postfix) with ESMTP id F34F910CC9 for ; Thu, 22 Dec 2016 00:33:43 +0100 (CET) Received: by mail-pg0-f49.google.com with SMTP id f188so90310817pgc.3 for ; Wed, 21 Dec 2016 15:33:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=m8mBNNBIxSL2VykWdIhwDsyHRdoZzdHt2BCtLHwmxIQ=; b=QyIlCE70lYwPpgnwQr1MiWNODCkTSOzCFfDP4DjDRHXFOA/dXzMqe2x3mX0yhEjAnl Q29cFawfJoxRVwiHdmGWcEch/5ZXwUGi3985Xgk5If//mF5AFT/kHSp7tiAHz8MQ3F90 7sz+3IxSZI5appgVENPtu5K+n2cKnzAOUN/0WlHLWx2Fu2sqC9q1BiWmKrUjS1Wv9E9H DbEQik/90Q/J42TZVPBqNDHWhmB9q52iI5gXx6KN/Ctd4eFb7aQS+EqSNaPELDQ3Iskg SD/3y7hpvA8QdRMkiKCYzdZ7ZJQYwP1OFMVbcIxd3MbCUUGuTVA1dmeUPvtssaEc0/jw fzzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m8mBNNBIxSL2VykWdIhwDsyHRdoZzdHt2BCtLHwmxIQ=; b=Us7vqsd1xDcGZZiMl3G2kPNOoXziiqVPRQmmN446eYgNGEi5a4fXVM3NOnkuPSoJ6M UkHiSoGYDEJLYhxYz9CMZ58g4SFYn2SSavGRqJENbiFJZT416dkI0+4p+50qx8KOXzVh 3lmFNBL0/5ZwGdeOASTNXQAvHNefzUhmNZPA3rUHkI/egpQ+NJ3LxQUwyhXCQG66Emzs QLprBFyGdVjmUJeS2QBny7wkXJj+wRuzXGxAc5AaiSXmE0PdwvoQ8k4TKh7YfVqsHHJJ aWYRBoE6F2HxLBn+fZCeSYXH9fmRfWoM56dIfVazJYrojWYR5G+wMRmyZvrUYlWfHzdX zTdg== X-Gm-Message-State: AIkVDXJ++1oyWP8y7hBPlpq2eJ43GA5J8obcWWQDJVdDf6zVERifRfD8XfL8NpAufdzSNw== X-Received: by 10.99.212.69 with SMTP id i5mr11966160pgj.29.1482363223190; Wed, 21 Dec 2016 15:33:43 -0800 (PST) Received: from xeon-e3 (204-195-18-65.wavecable.com. [204.195.18.65]) by smtp.gmail.com with ESMTPSA id n8sm28453556pgc.0.2016.12.21.15.33.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 21 Dec 2016 15:33:42 -0800 (PST) Date: Wed, 21 Dec 2016 15:33:34 -0800 From: Stephen Hemminger To: Jan Blunck Cc: Shreyansh Jain , dev@dpdk.org, David Marchand , Thomas Monjalon , Ferruh Yigit , jianbo.liu@linaro.org Message-ID: <20161221153334.2b04f732@xeon-e3> In-Reply-To: References: <1481636232-2300-1-git-send-email-shreyansh.jain@nxp.com> <1481893853-31790-1-git-send-email-shreyansh.jain@nxp.com> <1481893853-31790-3-git-send-email-shreyansh.jain@nxp.com> <20161220091156.4442cb07@xeon-e3> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v3 02/12] eal/bus: introduce bus abstraction 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, 21 Dec 2016 23:33:44 -0000 On Wed, 21 Dec 2016 16:38:42 +0100 Jan Blunck wrote: > On Tue, Dec 20, 2016 at 6:11 PM, Stephen Hemminger > wrote: > > On Tue, 20 Dec 2016 14:17:14 +0100 > > Jan Blunck wrote: > > > >> On Fri, Dec 16, 2016 at 2:10 PM, Shreyansh Jain wrote: > >> > This patch introduces the rte_bus abstraction for devices and drivers in > >> > EAL framework. The model is: > >> > - One or more buses are connected to a CPU (or core) > >> > - One or more devices are conneted to a Bus > >> > - Drivers are running instances which manage one or more devices > >> > - Bus is responsible for identifying devices (and interrupt propogation) > >> > - Driver is responsible for initializing the device > >> > > >> > This patch adds a 'rte_bus' class which rte_driver and rte_device refer. > >> > This way, each device (rte_xxx_device) would have reference to the bus > >> > it is based on. As well as, each driver (rte_xxx_driver) would have link > >> > to the bus and devices on it for servicing. > >> > > >> > __ rte_bus_list > >> > / > >> > +----------'---+ > >> > |rte_bus | > >> > | driver_list------> List of rte_bus specific > >> > | device_list---- devices > >> > | | `-> List of rte_bus associated > >> > | | drivers > >> > +--|------|----+ > >> > _________/ \_________ > >> > +--------/----+ +-\---------------+ > >> > |rte_device | |rte_driver | > >> > | rte_bus | | rte_bus | > >> > | rte_driver | | ... | > >> > | ... | +---------...-----+ > >> > | | ||| > >> > +---||--------+ ||| > >> > || ||| > >> > | \ \\\ > >> > | \_____________ \\\ > >> > | \ ||| > >> > +------|---------+ +----|----------+ ||| > >> > |rte_pci_device | |rte_xxx_device | ||| > >> > | .... | | .... | ||| > >> > +----------------+ +---------------+ / | \ > >> > / | \ > >> > _____________________/ / \ > >> > / ___/ \ > >> > +-------------'--+ +------------'---+ +--'------------+ > >> > |rte_pci_driver | |rte_vdev_driver | |rte_xxx_driver | > >> > | .... | | .... | | .... | > >> > +----------------+ +----------------+ +---------------+ > >> > > >> > This patch only enables the bus references on rte_driver and rte_driver. > >> > EAL wide global device and driver list continue to exist until an instance > >> > of bus is added in subsequent patches. > >> > > >> > This patch also introduces RTE_REGISTER_BUS macro on the lines of > >> > RTE_PMD_REGISTER_XXX. Key difference is that the constructor priority has > >> > been explicitly set to 101 so as to execute bus registration before PMD. > >> > > >> > Signed-off-by: Shreyansh Jain > >> > > > > > Ok, but let's keep this as bus type not bus. It gets really hard and complex > > to enumerate all layers of PCI bus and bridges. > > As far as I understand it this isn't the intention to replicate the > hierarchy of buses we have in the kernel. The PCI bus in this case > becomes a list of PCI devices. One of the motivations seems to be "lets be able to handle lots of devices", but the current model with an array of ports is not going to scale well for that. It is time to make rte_eth_devices into rb-tree and get rid of MAX_PORTS config option.