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.