Hey Thomas, I've been working on this with Radu, so see my take below
On 10/05/2017 11:28 AM, Thomas Monjalon wrote:
10/05/2017 12:11, Radu Nicolau:
Hi
On 5/10/2017 10:09 AM, Thomas Monjalon wrote:
Hi,
09/05/2017 16:57, Radu Nicolau:
Updated PCI initialization code to allow devices to be shared across multiple
PMDs.
Signed-off-by: Radu Nicolau <radu.nico...@intel.com>
I was waiting the day when we have a device shared
by two different interfaces.
Note that some Mellanox and Chelsio devices already instantiate
two ethdev ports per PCI device.
Please explain your idea behind this "shared" flag.
What is your exact need?
Currently for each pci device a look-up into a list of PMDs is
performed, and when a match is found the system moves to the next
device. Having this flag will allow a PMD to inform the system that
there may be more matches, more PMDs that can be used for this
particular device.
There is a difference when comparing to the devices you mentioned above,
in this case the PMDs are totally different types, one network and one
cryptodev PMD for each IXGBE network card.
Yes I know it is a lack in DPDK.
Linux introduced MultiFunction Device in 2005:
http://events.linuxfoundation.org/sites/events/files/slides/belloni-mfd-regmap-syscon_0.pdf
So at the most basic level the intention is to allow more than one
device of different types, in our case a net PMD and a crypto PMD, to be
instantiated on a single PCI bar, in essence to share the bar. I'm not
familiar with the approaches taken in the Mellanox and Chelsio devices
but I assume they are handled with the driver probe/create functions
independently from the EAL infrastructure?
For the initial proto-typing of this RFC we only implemented the
multi-device creation but I envisage that there will be a requirement
for sharing state between drivers, or at a minimum implementing locking
around shared resources, registers etc. And I would like to see this
done in a generic fashion that can me leverage by any driver and not
have each driver having to solve this independently.
Do you think it is the best solution?
We evaluated different approaches and this is what we settled on. It
might not be the best, if there are any suggestions of other ways to
achieve this I would be thankful.
I think this approach was sufficient to enable the RFC and kick off the
discussion, but it is not a fully featured solution and we wanted to get
community feedback before progressing to far along with a fully featured
solution.
Please could you explain the other approaches you thought
with pros and cons?
Thanks