On Mon, Mar 01, 2021 at 05:48:00PM -0700, Dave Jiang wrote: > > On 3/1/2021 5:29 PM, Jason Gunthorpe wrote: > > On Mon, Mar 01, 2021 at 05:23:47PM -0700, Dave Jiang wrote: > > > So after looking at the code in vfio_pci_intrs.c, I agree that the set_irqs > > > code between VFIO_PCI and this driver can be made in common. Given that Alex > > > doesn't want a vfio_pci device embedded in the driver, > > idxd isn't a vfio_pci so it would be improper to do something like > > that here anyhow. > > > > > I think we'll need some sort of generic VFIO device that can be used > > > from the vfio_pci side and vfio_mdev side to pass down in order to > > > have common support library functions. > > Why do you need more layers? > > > > Just make some helper functions to manage this and build them into > > their own struct and function family. All this needs is some callback > > to for the end driver to hook in the raw device programming and some > > entry points to direct the emulation access to the module. > > > > It should be fully self contained and completely unrelated to vfio_pci > > > Maybe I'm looking at this wrong. I see a some code in vfio_pci_intrs.c that > we can reuse with some changes here and there. But, I think see where you > are getting at with just common functions for mdev side. Let me create it > just for IMS emulation and then we can go from there trying to figure if > that's the right path to go down or if we need to share code with vfio_pci. If it really is very common it could all be consolidated in a vfio_utils.c kind of thing that all the places can use. There is nothing wrong with splitting pieces of vfio_pci out. Jason