On Wed, May 21, 2025 at 09:39:42AM +0200, Cédric Le Goater wrote: > These routines : > > Object *vfio_pci_get_object(VFIODevice *vbasedev); > void vfio_pci_intx_eoi(VFIODevice *vbasedev); > int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f); > int vfio_pci_save_config(VFIODevice *vbasedev, QEMUFile *f, Error **errp); > > are exported to simply define the VFIODeviceOps vfio_user_pci_ops struct > (and they don't take a VFIOPCIDevice as first argument). I wonder if we > could find a way to keep them private.
+static Object *vfio_user_pci_get_object(VFIODevice *vbasedev) +{ + VFIOUserPCIDevice *vdev = container_of(vbasedev, VFIOUserPCIDevice, + device.vbasedev); + + return OBJECT(vdev); +} seems to work. > export vfio_pci_intx_eoi() This is definitely required. > Also, does vfio-user support migration ? Not yet: we dropped support during the v2 changeover. Happy to drop the save/load config in the meantime. regards john