On Fri, Nov 08, 2019 at 08:44:26PM -0400, Jason Gunthorpe wrote: > There has been some lack of clarity on what the ?? should be. People > have proposed platform and MFD, and those seem to be no-goes. So, it > looks like ?? will be a mlx5_driver on a mlx5_bus, and Intel will use > an ice_driver on a ice_bus, ditto for cxgb4, if I understand Greg's > guidance. Yes, that is the only way it can work because you really are just sharing a single PCI device in a vendor-specific way, and they all need to get along with each one properly for that vendor-specific way. So each vendor needs its own "bus" to be able to work out things properly, I doubt you can make this more generic than that easily. > Though I'm wondering if we should have a 'multi_subsystem_device' that > was really just about passing a 'void *core_handle' from the 'core' > (ie the bus) to the driver (ie RDMA, netdev, etc). Ick, no. > It seems weakly defined, but also exactly what every driver doing this > needs.. It is basically what this series is abusing mdev to accomplish. What is so hard about writing a bus? Last I tried it was just a few hundred lines of code, if that. I know it's not the easiest in places, but we have loads of examples to crib from. If you have problems/questions, just ask! Or, worst case, you just do what I asked in this thread somewhere, and write a "virtual bus" where you just create devices and bind them to the driver before registering and away you go. No auto-loading needed (or possible), but then you have a generic layer that everyone can use if they want to (but you loose some functionality at the expense of generic code.) Are these constant long email threads a way that people are just trying to get me to do this work for them? Because if it is, it's working... thanks, greg k-h