On Fri, Jul 23, 2021 at 09:44:35AM +0200, Christoph Hellwig wrote: > On Tue, Jul 20, 2021 at 02:42:52PM -0300, Jason Gunthorpe wrote: > > .write = vfio_fsl_mc_write, > > @@ -625,13 +526,15 @@ static int vfio_fsl_mc_probe(struct fsl_mc_device *mc_dev) > > vdev->mc_dev = mc_dev; > > mutex_init(&vdev->igate); > > > > + ret = vfio_assign_device_set(&vdev->vdev, is_fsl_mc_bus_dprc(mc_dev) ? > > + &mc_dev->dev : > > + mc_dev->dev.parent); > > A good old if/else would be much cleaner here. Ok > But do we even need the else part? Assingning &mc_dev->dev is > equivalent to the default per-device set anyway, isn't it? Not quite, the default is this: if (!device->dev_set) vfio_assign_device_set(device, device); Where 'device' is the vfio_device itself, the above is connecting to the struct fsl_mc_device. Thanks, Jason