[Intel-gfx] [PATCH v9 18/25] vfio: Determine noiommu in vfio_device registration
Yi Liu
yi.l.liu at intel.com
Sat Apr 1 15:18:26 UTC 2023
This adds a noiommu flag in vfio_device, hence caller of the
vfio_device_is_noiommu() just refers to the flag for noiommu
check.
Reviewed-by: Kevin Tian <kevin.tian at intel.com>
Tested-by: Nicolin Chen <nicolinc at nvidia.com>
Tested-by: Yanting Jiang <yanting.jiang at intel.com>
Signed-off-by: Yi Liu <yi.l.liu at intel.com>
---
drivers/vfio/group.c | 2 +-
drivers/vfio/vfio.h | 6 +++---
drivers/vfio/vfio_main.c | 2 ++
include/linux/vfio.h | 1 +
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/vfio/group.c b/drivers/vfio/group.c
index de9f09c7cf00..8c88bff0fc59 100644
--- a/drivers/vfio/group.c
+++ b/drivers/vfio/group.c
@@ -192,7 +192,7 @@ static int vfio_device_group_open(struct vfio_device_file *df)
vfio_device_group_get_kvm_safe(device);
df->iommufd = device->group->iommufd;
- if (df->iommufd && vfio_device_is_noiommu(device)) {
+ if (df->iommufd && device->noiommu) {
if (device->open_count == 0) {
ret = vfio_iommufd_enable_noiommu_compat(device,
df->iommufd);
diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h
index b47b186573ac..41dfc9d5205a 100644
--- a/drivers/vfio/vfio.h
+++ b/drivers/vfio/vfio.h
@@ -108,10 +108,10 @@ 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 void 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;
}
#if IS_ENABLED(CONFIG_VFIO_CONTAINER)
diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
index bc2ecbb7c22a..989c40a49171 100644
--- a/drivers/vfio/vfio_main.c
+++ b/drivers/vfio/vfio_main.c
@@ -277,6 +277,8 @@ static int __vfio_register_dev(struct vfio_device *device,
if (ret)
return ret;
+ vfio_device_set_noiommu(device);
+
ret = device_add(&device->device);
if (ret)
goto err_out;
diff --git a/include/linux/vfio.h b/include/linux/vfio.h
index 1445eb185121..672c0d9ac3fa 100644
--- a/include/linux/vfio.h
+++ b/include/linux/vfio.h
@@ -63,6 +63,7 @@ struct vfio_device {
bool iommufd_attached;
#endif
bool cdev_opened;
+ bool noiommu;
};
/**
--
2.34.1
More information about the Intel-gfx
mailing list