[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 08/17] vfio/container: Introduce vfio_get_iommu_class_name()
From: |
Cédric Le Goater |
Subject: |
[PATCH v2 08/17] vfio/container: Introduce vfio_get_iommu_class_name() |
Date: |
Mon, 17 Jun 2024 08:34:00 +0200 |
Rework vfio_get_iommu_class() to return a literal class name instead
of a class object. We will need this name to instantiate the object
later on. Since the default case asserts, remove the error report as
QEMU will simply abort before.
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
---
hw/vfio/container.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/hw/vfio/container.c b/hw/vfio/container.c
index
589f37bc6d68dae18f9e46371f14d6952b2240c0..bb6abe60ee29d5b69b494523c9002f53e1b2a3c8
100644
--- a/hw/vfio/container.c
+++ b/hw/vfio/container.c
@@ -373,24 +373,20 @@ static int vfio_get_iommu_type(int container_fd,
/*
* vfio_get_iommu_ops - get a VFIOIOMMUClass associated with a type
*/
-static const VFIOIOMMUClass *vfio_get_iommu_class(int iommu_type, Error **errp)
+static const char *vfio_get_iommu_class_name(int iommu_type)
{
- ObjectClass *klass = NULL;
-
switch (iommu_type) {
case VFIO_TYPE1v2_IOMMU:
case VFIO_TYPE1_IOMMU:
- klass = object_class_by_name(TYPE_VFIO_IOMMU_LEGACY);
+ return TYPE_VFIO_IOMMU_LEGACY;
break;
case VFIO_SPAPR_TCE_v2_IOMMU:
case VFIO_SPAPR_TCE_IOMMU:
- klass = object_class_by_name(TYPE_VFIO_IOMMU_SPAPR);
+ return TYPE_VFIO_IOMMU_SPAPR;
break;
default:
g_assert_not_reached();
};
-
- return VFIO_IOMMU_CLASS(klass);
}
static bool vfio_set_iommu(VFIOContainer *container, int group_fd,
@@ -398,6 +394,7 @@ static bool vfio_set_iommu(VFIOContainer *container, int
group_fd,
{
int iommu_type;
const VFIOIOMMUClass *vioc;
+ const char *vioc_name;
iommu_type = vfio_get_iommu_type(container->fd, errp);
if (iommu_type < 0) {
@@ -426,11 +423,8 @@ static bool vfio_set_iommu(VFIOContainer *container, int
group_fd,
container->iommu_type = iommu_type;
- vioc = vfio_get_iommu_class(iommu_type, errp);
- if (!vioc) {
- error_setg(errp, "No available IOMMU models");
- return false;
- }
+ vioc_name = vfio_get_iommu_class_name(iommu_type);
+ vioc = VFIO_IOMMU_CLASS(object_class_by_name(vioc_name));
vfio_container_init(&container->bcontainer, vioc);
return true;
--
2.45.2
- Re: [PATCH v2 01/17] vfio: Make vfio_devices_dma_logging_start() return bool, (continued)
[PATCH v2 05/17] vfio/container: Introduce vfio_address_space_insert(), Cédric Le Goater, 2024/06/17
[PATCH v2 07/17] vfio/container: Modify vfio_get_iommu_type() to use a container fd, Cédric Le Goater, 2024/06/17
[PATCH v2 06/17] vfio/container: Simplify vfio_container_init(), Cédric Le Goater, 2024/06/17
[PATCH v2 08/17] vfio/container: Introduce vfio_get_iommu_class_name(),
Cédric Le Goater <=
[PATCH v2 14/17] vfio/container: Remove VFIOContainerBase::ops, Cédric Le Goater, 2024/06/17
[PATCH v2 12/17] vfio/container: Switch to QOM, Cédric Le Goater, 2024/06/17
[PATCH v2 11/17] vfio/container: Change VFIOContainerBase to use QOM, Cédric Le Goater, 2024/06/17
[PATCH v2 09/17] vfio/container: Introduce vfio_create_container(), Cédric Le Goater, 2024/06/17
[PATCH v2 10/17] vfio/container: Discover IOMMU type before creating the container, Cédric Le Goater, 2024/06/17