summaryrefslogtreecommitdiffstats
path: root/include/hw/vfio
diff options
context:
space:
mode:
authorDavid Gibson2015-09-30 04:13:51 +0200
committerAlex Williamson2015-10-05 20:36:08 +0200
commitee0bf0e59bb1c07c0196142f2ecfd88f7f8b194e (patch)
tree5b15e491f3990044cda1654e9df2d27eb3908a65 /include/hw/vfio
parenthw/vfio/platform: do not set resamplefd for edge-sensitive IRQS (diff)
downloadqemu-ee0bf0e59bb1c07c0196142f2ecfd88f7f8b194e.tar.gz
qemu-ee0bf0e59bb1c07c0196142f2ecfd88f7f8b194e.tar.xz
qemu-ee0bf0e59bb1c07c0196142f2ecfd88f7f8b194e.zip
vfio: Remove unneeded union from VFIOContainer
Currently the VFIOContainer iommu_data field contains a union with different information for different host iommu types. However: * It only actually contains information for the x86-like "Type1" iommu * Because we have a common listener the Type1 fields are actually used on all IOMMU types, including the SPAPR TCE type as well In fact we now have a general structure for the listener which is unlikely to ever need per-iommu-type information, so this patch removes the union. In a similar way we can unify the setup of the vfio memory listener in vfio_connect_container() that is currently split across a switch on iommu type, but is effectively the same in both cases. The iommu_data.release pointer was only needed as a cleanup function which would handle potentially different data in the union. With the union gone, it too can be removed. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Laurent Vivier <lvivier@redhat.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'include/hw/vfio')
-rw-r--r--include/hw/vfio/vfio-common.h16
1 files changed, 3 insertions, 13 deletions
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 9b9901fbe2..fbbe6de9b3 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -59,22 +59,12 @@ typedef struct VFIOAddressSpace {
struct VFIOGroup;
-typedef struct VFIOType1 {
- MemoryListener listener;
- int error;
- bool initialized;
-} VFIOType1;
-
typedef struct VFIOContainer {
VFIOAddressSpace *space;
int fd; /* /dev/vfio/vfio, empowered by the attached groups */
- struct {
- /* enable abstraction to support various iommu backends */
- union {
- VFIOType1 type1;
- };
- void (*release)(struct VFIOContainer *);
- } iommu_data;
+ MemoryListener listener;
+ int error;
+ bool initialized;
QLIST_HEAD(, VFIOGuestIOMMU) giommu_list;
QLIST_HEAD(, VFIOGroup) group_list;
QLIST_ENTRY(VFIOContainer) next;