From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH v3 02/12] eal/bus: introduce bus abstraction Date: Tue, 20 Dec 2016 09:11:56 -0800 Message-ID: <20161220091156.4442cb07@xeon-e3> 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> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: Shreyansh Jain , dev@dpdk.org, David Marchand , Thomas Monjalon , Ferruh Yigit , jianbo.liu@linaro.org To: Jan Blunck Return-path: Received: from mail-pf0-f181.google.com (mail-pf0-f181.google.com [209.85.192.181]) by dpdk.org (Postfix) with ESMTP id D916CFBC5 for ; Tue, 20 Dec 2016 18:11:59 +0100 (CET) Received: by mail-pf0-f181.google.com with SMTP id 189so30007122pfz.3 for ; Tue, 20 Dec 2016 09:11:59 -0800 (PST) In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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.