diff options
Diffstat (limited to 'drivers/vfio/mdev/mdev_driver.c')
| -rw-r--r-- | drivers/vfio/mdev/mdev_driver.c | 45 | 
1 files changed, 4 insertions, 41 deletions
| diff --git a/drivers/vfio/mdev/mdev_driver.c b/drivers/vfio/mdev/mdev_driver.c index e2cb1ff56f6c..7927ed4f1711 100644 --- a/drivers/vfio/mdev/mdev_driver.c +++ b/drivers/vfio/mdev/mdev_driver.c @@ -13,60 +13,23 @@  #include "mdev_private.h" -static int mdev_attach_iommu(struct mdev_device *mdev) -{ -	int ret; -	struct iommu_group *group; - -	group = iommu_group_alloc(); -	if (IS_ERR(group)) -		return PTR_ERR(group); - -	ret = iommu_group_add_device(group, &mdev->dev); -	if (!ret) -		dev_info(&mdev->dev, "MDEV: group_id = %d\n", -			 iommu_group_id(group)); - -	iommu_group_put(group); -	return ret; -} - -static void mdev_detach_iommu(struct mdev_device *mdev) -{ -	iommu_group_remove_device(&mdev->dev); -	dev_info(&mdev->dev, "MDEV: detaching iommu\n"); -} -  static int mdev_probe(struct device *dev)  {  	struct mdev_driver *drv =  		container_of(dev->driver, struct mdev_driver, driver); -	struct mdev_device *mdev = to_mdev_device(dev); -	int ret; -	ret = mdev_attach_iommu(mdev); -	if (ret) -		return ret; - -	if (drv->probe) { -		ret = drv->probe(mdev); -		if (ret) -			mdev_detach_iommu(mdev); -	} - -	return ret; +	if (!drv->probe) +		return 0; +	return drv->probe(to_mdev_device(dev));  }  static void mdev_remove(struct device *dev)  {  	struct mdev_driver *drv =  		container_of(dev->driver, struct mdev_driver, driver); -	struct mdev_device *mdev = to_mdev_device(dev);  	if (drv->remove) -		drv->remove(mdev); - -	mdev_detach_iommu(mdev); +		drv->remove(to_mdev_device(dev));  }  static int mdev_match(struct device *dev, struct device_driver *drv) | 
