On Tuesday 20 December 2016 10:41 PM, Stephen Hemminger wrote:
On Tue, 20 Dec 2016 14:17:14 +0100
Jan Blunck <jblu...@infradead.org> wrote:
On Fri, Dec 16, 2016 at 2:10 PM, Shreyansh Jain <shreyansh.j...@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.j...@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)