Message ID | 20230426145419.450922-2-yi.l.liu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enhance vfio PCI hot reset for vfio cdev device | expand |
> From: Liu, Yi L <yi.l.liu@intel.com> > Sent: Wednesday, April 26, 2023 10:54 PM > > -static inline bool vfio_device_is_noiommu(struct vfio_device *vdev) > +static inline int vfio_device_set_noiommu(struct vfio_device *device) > { > - return IS_ENABLED(CONFIG_VFIO_NOIOMMU) && > - vdev->group->type == VFIO_NO_IOMMU; > + device->noiommu = IS_ENABLED(CONFIG_VFIO_NOIOMMU) && > + device->group->type == VFIO_NO_IOMMU; > + return 0; Just void. this can't fail.
> From: Tian, Kevin <kevin.tian@intel.com> > Sent: Thursday, April 27, 2023 2:36 PM > > > From: Liu, Yi L <yi.l.liu@intel.com> > > Sent: Wednesday, April 26, 2023 10:54 PM > > > > -static inline bool vfio_device_is_noiommu(struct vfio_device *vdev) > > +static inline int vfio_device_set_noiommu(struct vfio_device *device) > > { > > - return IS_ENABLED(CONFIG_VFIO_NOIOMMU) && > > - vdev->group->type == VFIO_NO_IOMMU; > > + device->noiommu = IS_ENABLED(CONFIG_VFIO_NOIOMMU) && > > + device->group->type == VFIO_NO_IOMMU; > > + return 0; > > Just void. this can't fail. Hmmm. Yes, before below commit, it cannot fail. Maybe this can be converted to int later. https://lore.kernel.org/kvm/20230426150321.454465-22-yi.l.liu@intel.com/T/#u Regards, Yi Liu
On Thu, 27 Apr 2023 07:05:37 +0000 "Liu, Yi L" <yi.l.liu@intel.com> wrote: > > From: Tian, Kevin <kevin.tian@intel.com> > > Sent: Thursday, April 27, 2023 2:36 PM > > > > > From: Liu, Yi L <yi.l.liu@intel.com> > > > Sent: Wednesday, April 26, 2023 10:54 PM > > > > > > -static inline bool vfio_device_is_noiommu(struct vfio_device *vdev) > > > +static inline int vfio_device_set_noiommu(struct vfio_device *device) > > > { > > > - return IS_ENABLED(CONFIG_VFIO_NOIOMMU) && > > > - vdev->group->type == VFIO_NO_IOMMU; > > > + device->noiommu = IS_ENABLED(CONFIG_VFIO_NOIOMMU) && > > > + device->group->type == VFIO_NO_IOMMU; > > > + return 0; > > > > Just void. this can't fail. > > Hmmm. Yes, before below commit, it cannot fail. Maybe this can be > converted to int later. > > https://lore.kernel.org/kvm/20230426150321.454465-22-yi.l.liu@intel.com/T/#u AFAICT with the comments on the next patch, this change is not at all justified within this series and should be dropped. Thanks, Alex
diff --git a/drivers/vfio/iommufd.c b/drivers/vfio/iommufd.c index 88b00c501015..895852ad37ed 100644 --- a/drivers/vfio/iommufd.c +++ b/drivers/vfio/iommufd.c @@ -18,7 +18,7 @@ int vfio_iommufd_bind(struct vfio_device *vdev, struct iommufd_ctx *ictx) lockdep_assert_held(&vdev->dev_set->lock); - if (vfio_device_is_noiommu(vdev)) { + if (vdev->noiommu) { if (!capable(CAP_SYS_RAWIO)) return -EPERM; @@ -59,7 +59,7 @@ void vfio_iommufd_unbind(struct vfio_device *vdev) { lockdep_assert_held(&vdev->dev_set->lock); - if (vfio_device_is_noiommu(vdev)) + if (vdev->noiommu) return; if (vdev->ops->unbind_iommufd) diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h index 7b19c621e0e6..1ddf43863ad6 100644 --- a/drivers/vfio/vfio.h +++ b/drivers/vfio/vfio.h @@ -88,10 +88,11 @@ bool vfio_device_has_container(struct vfio_device *device); int __init vfio_group_init(void); void vfio_group_cleanup(void); -static inline bool vfio_device_is_noiommu(struct vfio_device *vdev) +static inline int vfio_device_set_noiommu(struct vfio_device *device) { - return IS_ENABLED(CONFIG_VFIO_NOIOMMU) && - vdev->group->type == VFIO_NO_IOMMU; + device->noiommu = IS_ENABLED(CONFIG_VFIO_NOIOMMU) && + device->group->type == VFIO_NO_IOMMU; + return 0; } #if IS_ENABLED(CONFIG_VFIO_CONTAINER) diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c index 89497c933490..09be9df2ceca 100644 --- a/drivers/vfio/vfio_main.c +++ b/drivers/vfio/vfio_main.c @@ -276,6 +276,10 @@ static int __vfio_register_dev(struct vfio_device *device, if (ret) return ret; + ret = vfio_device_set_noiommu(device); + if (ret) + goto err_out; + ret = device_add(&device->device); if (ret) goto err_out; diff --git a/include/linux/vfio.h b/include/linux/vfio.h index 2c137ea94a3e..4ee613924435 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -62,6 +62,7 @@ struct vfio_device { struct iommufd_device *iommufd_device; bool iommufd_attached; #endif + bool noiommu; }; /**