On Tue, Feb 01, 2022 at 01:06:51PM +0100, Cornelia Huck wrote: > On Sun, Jan 30 2022, Yishai Hadas <yishaih@xxxxxxxxxx> wrote: > > > @@ -1582,6 +1760,10 @@ static int vfio_ioctl_device_feature(struct vfio_device *device, > > return -EINVAL; > > > > switch (feature.flags & VFIO_DEVICE_FEATURE_MASK) { > > + case VFIO_DEVICE_FEATURE_MIGRATION: > > + return vfio_ioctl_device_feature_migration( > > + device, feature.flags, arg->data, > > + feature.argsz - minsz); > > default: > > if (unlikely(!device->ops->device_feature)) > > return -EINVAL; > > @@ -1597,6 +1779,8 @@ static long vfio_device_fops_unl_ioctl(struct file *filep, > > struct vfio_device *device = filep->private_data; > > > > switch (cmd) { > > + case VFIO_DEVICE_MIG_SET_STATE: > > + return vfio_ioctl_mig_set_state(device, (void __user *)arg); > > case VFIO_DEVICE_FEATURE: > > return vfio_ioctl_device_feature(device, (void __user *)arg); > > default: > > Not really a critique of this patch, but have we considered how mediated > devices will implement migration? Yes > I.e. what parts of the ops will need to be looped through the mdev > ops? I've deleted mdev ops in every driver except the intel vgpu, once Christoph's patch there is merged mdev ops will be almost gone completely. mdev drivers now implement normal vfio_device_ops and require nothing special for migration. > Do we need to consider the scope of some queries/operations (whole > device vs subdivisions etc.)? Not trying to distract from the whole new > interface here, but I think we should have at least an idea. All vfio operations on the device FD operate on whatever the struct vfio_device is. Jason