On 2023/3/20 22:09, Jason Gunthorpe wrote:
On Wed, Mar 15, 2023 at 04:40:19AM +0000, Liu, Yi L wrote:# if IS_ENABLED(CONFIG_VFIO_GROUP) static inline bool vfio_device_is_noiommu(struct vfio_device *vdev) { return IS_ENABLED(CONFIG_VFIO_NOIOMMU) && vdev->group->type == VFIO_NO_IOMMU; } #else static inline bool vfio_device_is_noiommu(struct vfio_device *vdev) { struct iommu_group *iommu_group; if (!IS_ENABLED(CONFIG_VFIO_NOIOMMU) || !vfio_noiommu) return -EINVAL; iommu_group = iommu_group_get(vdev->dev); if (iommu_group) iommu_group_put(iommu_group); return !iommu_group;If we don't have VFIO_GROUP then no-iommu is signaled by a NULL iommu_ctx pointer in the vdev, don't mess with groups
yes, NULL iommufd_ctx pointer would be set in vdev and passed to the vfio_device_open(). But here, we want to use this helper to check if user can use noiommu mode. This is before calling vfio_device_open(). e.g. if the device is protected by iommu, then user cannot use noiommu mode on it. -- Regards, Yi Liu
