Message ID | 20240429065046.3688701-3-zhenzhong.duan@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add a host IOMMU device abstraction to check with vIOMMU | expand |
On 4/29/24 08:50, Zhenzhong Duan wrote: > HostIOMMUDeviceLegacyVFIO represents a host IOMMU device under VFIO > legacy container backend. > > It includes a link to VFIODevice. I don't see any use of this attribute. May be introduce later when needed. Thanks, C. > > Suggested-by: Eric Auger <eric.auger@redhat.com> > Suggested-by: Cédric Le Goater <clg@redhat.com> > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> > --- > include/hw/vfio/vfio-common.h | 12 ++++++++++++ > hw/vfio/container.c | 6 +++++- > 2 files changed, 17 insertions(+), 1 deletion(-) > > diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h > index b9da6c08ef..aa3abe0a18 100644 > --- a/include/hw/vfio/vfio-common.h > +++ b/include/hw/vfio/vfio-common.h > @@ -31,6 +31,7 @@ > #endif > #include "sysemu/sysemu.h" > #include "hw/vfio/vfio-container-base.h" > +#include "sysemu/host_iommu_device.h" > > #define VFIO_MSG_PREFIX "vfio %s: " > > @@ -147,6 +148,17 @@ typedef struct VFIOGroup { > bool ram_block_discard_allowed; > } VFIOGroup; > > +#define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO TYPE_HOST_IOMMU_DEVICE "-legacy-vfio" > +OBJECT_DECLARE_SIMPLE_TYPE(HostIOMMUDeviceLegacyVFIO, > + HOST_IOMMU_DEVICE_LEGACY_VFIO) > + > +/* Abstract of host IOMMU device with VFIO legacy container backend */ > +struct HostIOMMUDeviceLegacyVFIO { > + HostIOMMUDevice parent_obj; > + > + VFIODevice *vdev; > +}; > + > typedef struct VFIODMABuf { > QemuDmaBuf buf; > uint32_t pos_x, pos_y, pos_updates; > diff --git a/hw/vfio/container.c b/hw/vfio/container.c > index 77bdec276e..3b6826996a 100644 > --- a/hw/vfio/container.c > +++ b/hw/vfio/container.c > @@ -1148,7 +1148,11 @@ static const TypeInfo types[] = { > .name = TYPE_VFIO_IOMMU_LEGACY, > .parent = TYPE_VFIO_IOMMU, > .class_init = vfio_iommu_legacy_class_init, > - }, > + }, { > + .name = TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO, > + .parent = TYPE_HOST_IOMMU_DEVICE, > + .instance_size = sizeof(HostIOMMUDeviceLegacyVFIO), > + } > }; > > DEFINE_TYPES(types)
>-----Original Message----- >From: Cédric Le Goater <clg@redhat.com> >Subject: Re: [PATCH v3 02/19] vfio/container: Introduce >HostIOMMUDeviceLegacyVFIO device > >On 4/29/24 08:50, Zhenzhong Duan wrote: >> HostIOMMUDeviceLegacyVFIO represents a host IOMMU device under >VFIO >> legacy container backend. >> >> It includes a link to VFIODevice. > >I don't see any use of this attribute. May be introduce later when needed. Indeed, will remove. Then 'struct HostIOMMUDeviceLegacyVFIO' is same as struct HostIOMMUDevice. Not clear if it's preferred to remove 'struct HostIOMMUDeviceLegacyVFIO' and use HostIOMMUDevice instead. Something like: OBJECT_DECLARE_SIMPLE_TYPE(HostIOMMUDevice, HOST_IOMMU_DEVICE_LEGACY_VFIO) Thanks Zhenzhong > >Thanks, > >C. > >> >> Suggested-by: Eric Auger <eric.auger@redhat.com> >> Suggested-by: Cédric Le Goater <clg@redhat.com> >> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> >> --- >> include/hw/vfio/vfio-common.h | 12 ++++++++++++ >> hw/vfio/container.c | 6 +++++- >> 2 files changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio- >common.h >> index b9da6c08ef..aa3abe0a18 100644 >> --- a/include/hw/vfio/vfio-common.h >> +++ b/include/hw/vfio/vfio-common.h >> @@ -31,6 +31,7 @@ >> #endif >> #include "sysemu/sysemu.h" >> #include "hw/vfio/vfio-container-base.h" >> +#include "sysemu/host_iommu_device.h" >> >> #define VFIO_MSG_PREFIX "vfio %s: " >> >> @@ -147,6 +148,17 @@ typedef struct VFIOGroup { >> bool ram_block_discard_allowed; >> } VFIOGroup; >> >> +#define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO >TYPE_HOST_IOMMU_DEVICE "-legacy-vfio" >> +OBJECT_DECLARE_SIMPLE_TYPE(HostIOMMUDeviceLegacyVFIO, >> + HOST_IOMMU_DEVICE_LEGACY_VFIO) >> + >> +/* Abstract of host IOMMU device with VFIO legacy container backend */ >> +struct HostIOMMUDeviceLegacyVFIO { >> + HostIOMMUDevice parent_obj; >> + >> + VFIODevice *vdev; >> +}; >> + >> typedef struct VFIODMABuf { >> QemuDmaBuf buf; >> uint32_t pos_x, pos_y, pos_updates; >> diff --git a/hw/vfio/container.c b/hw/vfio/container.c >> index 77bdec276e..3b6826996a 100644 >> --- a/hw/vfio/container.c >> +++ b/hw/vfio/container.c >> @@ -1148,7 +1148,11 @@ static const TypeInfo types[] = { >> .name = TYPE_VFIO_IOMMU_LEGACY, >> .parent = TYPE_VFIO_IOMMU, >> .class_init = vfio_iommu_legacy_class_init, >> - }, >> + }, { >> + .name = TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO, >> + .parent = TYPE_HOST_IOMMU_DEVICE, >> + .instance_size = sizeof(HostIOMMUDeviceLegacyVFIO), >> + } >> }; >> >> DEFINE_TYPES(types)
On 4/30/24 11:13, Duan, Zhenzhong wrote: > > >> -----Original Message----- >> From: Cédric Le Goater <clg@redhat.com> >> Subject: Re: [PATCH v3 02/19] vfio/container: Introduce >> HostIOMMUDeviceLegacyVFIO device >> >> On 4/29/24 08:50, Zhenzhong Duan wrote: >>> HostIOMMUDeviceLegacyVFIO represents a host IOMMU device under >> VFIO >>> legacy container backend. >>> >>> It includes a link to VFIODevice. >> >> I don't see any use of this attribute. May be introduce later when needed. > > Indeed, will remove. > > Then 'struct HostIOMMUDeviceLegacyVFIO' is same as > struct HostIOMMUDevice. > > Not clear if it's preferred to remove 'struct HostIOMMUDeviceLegacyVFIO' > and use HostIOMMUDevice instead. Something like: > > OBJECT_DECLARE_SIMPLE_TYPE(HostIOMMUDevice, > HOST_IOMMU_DEVICE_LEGACY_VFIO) I would. The simpler the better. Thanks, C.
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h index b9da6c08ef..aa3abe0a18 100644 --- a/include/hw/vfio/vfio-common.h +++ b/include/hw/vfio/vfio-common.h @@ -31,6 +31,7 @@ #endif #include "sysemu/sysemu.h" #include "hw/vfio/vfio-container-base.h" +#include "sysemu/host_iommu_device.h" #define VFIO_MSG_PREFIX "vfio %s: " @@ -147,6 +148,17 @@ typedef struct VFIOGroup { bool ram_block_discard_allowed; } VFIOGroup; +#define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO TYPE_HOST_IOMMU_DEVICE "-legacy-vfio" +OBJECT_DECLARE_SIMPLE_TYPE(HostIOMMUDeviceLegacyVFIO, + HOST_IOMMU_DEVICE_LEGACY_VFIO) + +/* Abstract of host IOMMU device with VFIO legacy container backend */ +struct HostIOMMUDeviceLegacyVFIO { + HostIOMMUDevice parent_obj; + + VFIODevice *vdev; +}; + typedef struct VFIODMABuf { QemuDmaBuf buf; uint32_t pos_x, pos_y, pos_updates; diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 77bdec276e..3b6826996a 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -1148,7 +1148,11 @@ static const TypeInfo types[] = { .name = TYPE_VFIO_IOMMU_LEGACY, .parent = TYPE_VFIO_IOMMU, .class_init = vfio_iommu_legacy_class_init, - }, + }, { + .name = TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO, + .parent = TYPE_HOST_IOMMU_DEVICE, + .instance_size = sizeof(HostIOMMUDeviceLegacyVFIO), + } }; DEFINE_TYPES(types)
HostIOMMUDeviceLegacyVFIO represents a host IOMMU device under VFIO legacy container backend. It includes a link to VFIODevice. Suggested-by: Eric Auger <eric.auger@redhat.com> Suggested-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> --- include/hw/vfio/vfio-common.h | 12 ++++++++++++ hw/vfio/container.c | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-)