Re: [PATCH v4 07/41] vfio/container: Introduce a empty VFIOIOMMUOps

2023-11-06 Thread Cédric Le Goater

On 11/2/23 08:12, Zhenzhong Duan wrote:

This empty VFIOIOMMUOps named vfio_legacy_ops will hold all general
IOMMU ops of legacy container.

Signed-off-by: Zhenzhong Duan 



Reviewed-by: Cédric Le Goater 

Thanks,

C.




---
  include/hw/vfio/vfio-common.h | 2 +-
  hw/vfio/container.c   | 5 +
  2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 586d153c12..678161f207 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -255,7 +255,7 @@ typedef QLIST_HEAD(VFIOGroupList, VFIOGroup) VFIOGroupList;
  typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
  extern VFIOGroupList vfio_group_list;
  extern VFIODeviceList vfio_device_list;
-
+extern const VFIOIOMMUOps vfio_legacy_ops;
  extern const MemoryListener vfio_memory_listener;
  extern int vfio_kvm_device_fd;
  
diff --git a/hw/vfio/container.c b/hw/vfio/container.c

index 242010036a..4bc43ddfa4 100644
--- a/hw/vfio/container.c
+++ b/hw/vfio/container.c
@@ -472,6 +472,7 @@ static int vfio_connect_container(VFIOGroup *group, 
AddressSpace *as,
Error **errp)
  {
  VFIOContainer *container;
+VFIOContainerBase *bcontainer;
  int ret, fd;
  VFIOAddressSpace *space;
  
@@ -552,6 +553,8 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as,

  container->iova_ranges = NULL;
  QLIST_INIT(&container->giommu_list);
  QLIST_INIT(&container->vrdl_list);
+bcontainer = &container->bcontainer;
+bcontainer->ops = &vfio_legacy_ops;
  
  ret = vfio_init_container(container, group->fd, errp);

  if (ret) {
@@ -933,3 +936,5 @@ void vfio_detach_device(VFIODevice *vbasedev)
  vfio_put_base_device(vbasedev);
  vfio_put_group(group);
  }
+
+const VFIOIOMMUOps vfio_legacy_ops;





[PATCH v4 07/41] vfio/container: Introduce a empty VFIOIOMMUOps

2023-11-02 Thread Zhenzhong Duan
This empty VFIOIOMMUOps named vfio_legacy_ops will hold all general
IOMMU ops of legacy container.

Signed-off-by: Zhenzhong Duan 
---
 include/hw/vfio/vfio-common.h | 2 +-
 hw/vfio/container.c   | 5 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 586d153c12..678161f207 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -255,7 +255,7 @@ typedef QLIST_HEAD(VFIOGroupList, VFIOGroup) VFIOGroupList;
 typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
 extern VFIOGroupList vfio_group_list;
 extern VFIODeviceList vfio_device_list;
-
+extern const VFIOIOMMUOps vfio_legacy_ops;
 extern const MemoryListener vfio_memory_listener;
 extern int vfio_kvm_device_fd;
 
diff --git a/hw/vfio/container.c b/hw/vfio/container.c
index 242010036a..4bc43ddfa4 100644
--- a/hw/vfio/container.c
+++ b/hw/vfio/container.c
@@ -472,6 +472,7 @@ static int vfio_connect_container(VFIOGroup *group, 
AddressSpace *as,
   Error **errp)
 {
 VFIOContainer *container;
+VFIOContainerBase *bcontainer;
 int ret, fd;
 VFIOAddressSpace *space;
 
@@ -552,6 +553,8 @@ static int vfio_connect_container(VFIOGroup *group, 
AddressSpace *as,
 container->iova_ranges = NULL;
 QLIST_INIT(&container->giommu_list);
 QLIST_INIT(&container->vrdl_list);
+bcontainer = &container->bcontainer;
+bcontainer->ops = &vfio_legacy_ops;
 
 ret = vfio_init_container(container, group->fd, errp);
 if (ret) {
@@ -933,3 +936,5 @@ void vfio_detach_device(VFIODevice *vbasedev)
 vfio_put_base_device(vbasedev);
 vfio_put_group(group);
 }
+
+const VFIOIOMMUOps vfio_legacy_ops;
-- 
2.34.1