Hi Zhenzhong,
On 2/1/24 08:28, Zhenzhong Duan wrote:
> Either IOMMULegacyDevice or IOMMUFDDevice into VFIODevice, neither
> both.
>
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
> ---
> include/hw/vfio/vfio-common.h | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 8bfb9cbe94..1bbad003ee 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -32,6 +32,7 @@
> #include "sysemu/sysemu.h"
> #include "hw/vfio/vfio-container-base.h"
> #include "sysemu/host_iommu_device.h"
> +#include "sysemu/iommufd.h"
>
> #define VFIO_MSG_PREFIX "vfio %s: "
>
> @@ -132,8 +133,18 @@ typedef struct VFIODevice {
> bool dirty_tracking;
> int devid;
> IOMMUFDBackend *iommufd;
> + union {
> + HostIOMMUDevice base_hdev;
I don't think we want the base object above to be usable here
Thanks
Eric
> + IOMMULegacyDevice legacy_dev;
> + IOMMUFDDevice iommufd_dev;
> + };
> } VFIODevice;
>
> +QEMU_BUILD_BUG_ON(offsetof(VFIODevice, legacy_dev.base) !=
> + offsetof(VFIODevice, base_hdev));
> +QEMU_BUILD_BUG_ON(offsetof(VFIODevice, iommufd_dev.base) !=
> + offsetof(VFIODevice, base_hdev));
> +
> struct VFIODeviceOps {
> void (*vfio_compute_needs_reset)(VFIODevice *vdev);
> int (*vfio_hot_reset_multi)(VFIODevice *vdev);