aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCédric Le Goater <clg@redhat.com>2024-06-17 08:34:01 +0200
committerCédric Le Goater <clg@redhat.com>2024-06-24 23:15:31 +0200
commit58f5c13260c2bf8fe158d0e176d1595858157946 (patch)
treec2f3ccdee83f1de44db1bad1c2147999fcb01640
parent17401879c416c48c72e5e4d805244b893d44637c (diff)
downloadqemu-58f5c13260c2bf8fe158d0e176d1595858157946.zip
qemu-58f5c13260c2bf8fe158d0e176d1595858157946.tar.gz
qemu-58f5c13260c2bf8fe158d0e176d1595858157946.tar.bz2
vfio/container: Introduce vfio_create_container()
This routine allocates the QEMU struct type representing the VFIO container. It is minimal currently and future changes will do more initialization. Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Tested-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com>
-rw-r--r--hw/vfio/container.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/hw/vfio/container.c b/hw/vfio/container.c
index bb6abe6..a869194 100644
--- a/hw/vfio/container.c
+++ b/hw/vfio/container.c
@@ -430,6 +430,16 @@ static bool vfio_set_iommu(VFIOContainer *container, int group_fd,
return true;
}
+static VFIOContainer *vfio_create_container(int fd, VFIOGroup *group,
+ Error **errp)
+{
+ VFIOContainer *container;
+
+ container = g_malloc0(sizeof(*container));
+ container->fd = fd;
+ return container;
+}
+
static int vfio_get_iommu_info(VFIOContainer *container,
struct vfio_iommu_type1_info **info)
{
@@ -604,13 +614,14 @@ static bool vfio_connect_container(VFIOGroup *group, AddressSpace *as,
goto close_fd_exit;
}
- container = g_malloc0(sizeof(*container));
- container->fd = fd;
- bcontainer = &container->bcontainer;
-
+ container = vfio_create_container(fd, group, errp);
+ if (!container) {
+ goto close_fd_exit;
+ }
if (!vfio_set_iommu(container, group->fd, errp)) {
goto free_container_exit;
}
+ bcontainer = &container->bcontainer;
if (!vfio_cpr_register_container(bcontainer, errp)) {
goto free_container_exit;