From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shreyansh Jain Subject: Re: [PATCH v3 02/12] eal/bus: introduce bus abstraction Date: Wed, 21 Dec 2016 12:41:36 +0530 Message-ID: <50a813ca-8921-3a8f-49a1-efa1441dfe69@nxp.com> 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="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Cc: Jan Blunck , , David Marchand , Thomas Monjalon , Ferruh Yigit , To: Stephen Hemminger Return-path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0051.outbound.protection.outlook.com [104.47.37.51]) by dpdk.org (Postfix) with ESMTP id E134338EB for ; Wed, 21 Dec 2016 08:08:03 +0100 (CET) In-Reply-To: <20161220091156.4442cb07@xeon-e3> 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 Tuesday 20 December 2016 10:41 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. > Sorry, I couldn't understand your comment. You mean it should be rte_bus_type rather than rte_bus? Or, you mean rather than creating a rte_bus, we should rather have a type embedded in rte_device/driver? (Though this is 'to' Jan, the context is hinting at my mail)