[dpdk-dev] [PATCH v3 02/12] eal/bus: introduce bus abstraction
Shreyansh Jain
shreyansh.jain at nxp.com
Wed Dec 21 08:11:36 CET 2016
On Tuesday 20 December 2016 10:41 PM, Stephen Hemminger wrote:
> On Tue, 20 Dec 2016 14:17:14 +0100
> Jan Blunck <jblunck at infradead.org> wrote:
>
>> On Fri, Dec 16, 2016 at 2:10 PM, Shreyansh Jain <shreyansh.jain at nxp.com> 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 <shreyansh.jain at nxp.com>
>>>
>
> 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)
More information about the dev
mailing list