Message ID | 20231114100955.1961974-13-zhenzhong.duan@intel.com |
---|---|
State | New |
Headers | show |
Series | vfio: Adopt iommufd | expand |
On 11/14/23 11:09, Zhenzhong Duan wrote: > Now we support two types of iommu backends, let's add the capability > to select one of them. This depends on whether an iommufd object has > been linked with the vfio-platform device: > > If the user wants to use the legacy backend, it shall not > link the vfio-platform device with any iommufd object: > > -device vfio-platform,host=XXX > > This is called the legacy mode/backend. > > If the user wants to use the iommufd backend (/dev/iommu) it > shall pass an iommufd object id in the vfio-platform device options: > > -object iommufd,id=iommufd0 > -device vfio-platform,host=XXX,iommufd=iommufd0 > > Suggested-by: Alex Williamson <alex.williamson@redhat.com> > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Thanks, C. > --- > v6: Move #include "sysemu/iommufd.h" in platform.c > > hw/vfio/platform.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c > index 8e3d4ac458..98ae4bc655 100644 > --- a/hw/vfio/platform.c > +++ b/hw/vfio/platform.c > @@ -15,11 +15,13 @@ > */ > > #include "qemu/osdep.h" > +#include CONFIG_DEVICES /* CONFIG_IOMMUFD */ > #include "qapi/error.h" > #include <sys/ioctl.h> > #include <linux/vfio.h> > > #include "hw/vfio/vfio-platform.h" > +#include "sysemu/iommufd.h" > #include "migration/vmstate.h" > #include "qemu/error-report.h" > #include "qemu/lockable.h" > @@ -649,6 +651,10 @@ static Property vfio_platform_dev_properties[] = { > DEFINE_PROP_UINT32("mmap-timeout-ms", VFIOPlatformDevice, > mmap_timeout, 1100), > DEFINE_PROP_BOOL("x-irqfd", VFIOPlatformDevice, irqfd_allowed, true), > +#ifdef CONFIG_IOMMUFD > + DEFINE_PROP_LINK("iommufd", VFIOPlatformDevice, vbasedev.iommufd, > + TYPE_IOMMUFD_BACKEND, IOMMUFDBackend *), > +#endif > DEFINE_PROP_END_OF_LIST(), > }; >
Hi Zhenzhong, On 11/14/23 11:09, Zhenzhong Duan wrote: > Now we support two types of iommu backends, let's add the capability > to select one of them. This depends on whether an iommufd object has > been linked with the vfio-platform device: > > If the user wants to use the legacy backend, it shall not > link the vfio-platform device with any iommufd object: > > -device vfio-platform,host=XXX > > This is called the legacy mode/backend. > > If the user wants to use the iommufd backend (/dev/iommu) it > shall pass an iommufd object id in the vfio-platform device options: > > -object iommufd,id=iommufd0 > -device vfio-platform,host=XXX,iommufd=iommufd0 > > Suggested-by: Alex Williamson <alex.williamson@redhat.com> > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Eric > --- > v6: Move #include "sysemu/iommufd.h" in platform.c > > hw/vfio/platform.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c > index 8e3d4ac458..98ae4bc655 100644 > --- a/hw/vfio/platform.c > +++ b/hw/vfio/platform.c > @@ -15,11 +15,13 @@ > */ > > #include "qemu/osdep.h" > +#include CONFIG_DEVICES /* CONFIG_IOMMUFD */ > #include "qapi/error.h" > #include <sys/ioctl.h> > #include <linux/vfio.h> > > #include "hw/vfio/vfio-platform.h" > +#include "sysemu/iommufd.h" > #include "migration/vmstate.h" > #include "qemu/error-report.h" > #include "qemu/lockable.h" > @@ -649,6 +651,10 @@ static Property vfio_platform_dev_properties[] = { > DEFINE_PROP_UINT32("mmap-timeout-ms", VFIOPlatformDevice, > mmap_timeout, 1100), > DEFINE_PROP_BOOL("x-irqfd", VFIOPlatformDevice, irqfd_allowed, true), > +#ifdef CONFIG_IOMMUFD > + DEFINE_PROP_LINK("iommufd", VFIOPlatformDevice, vbasedev.iommufd, > + TYPE_IOMMUFD_BACKEND, IOMMUFDBackend *), > +#endif > DEFINE_PROP_END_OF_LIST(), > }; >
diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c index 8e3d4ac458..98ae4bc655 100644 --- a/hw/vfio/platform.c +++ b/hw/vfio/platform.c @@ -15,11 +15,13 @@ */ #include "qemu/osdep.h" +#include CONFIG_DEVICES /* CONFIG_IOMMUFD */ #include "qapi/error.h" #include <sys/ioctl.h> #include <linux/vfio.h> #include "hw/vfio/vfio-platform.h" +#include "sysemu/iommufd.h" #include "migration/vmstate.h" #include "qemu/error-report.h" #include "qemu/lockable.h" @@ -649,6 +651,10 @@ static Property vfio_platform_dev_properties[] = { DEFINE_PROP_UINT32("mmap-timeout-ms", VFIOPlatformDevice, mmap_timeout, 1100), DEFINE_PROP_BOOL("x-irqfd", VFIOPlatformDevice, irqfd_allowed, true), +#ifdef CONFIG_IOMMUFD + DEFINE_PROP_LINK("iommufd", VFIOPlatformDevice, vbasedev.iommufd, + TYPE_IOMMUFD_BACKEND, IOMMUFDBackend *), +#endif DEFINE_PROP_END_OF_LIST(), };
Now we support two types of iommu backends, let's add the capability to select one of them. This depends on whether an iommufd object has been linked with the vfio-platform device: If the user wants to use the legacy backend, it shall not link the vfio-platform device with any iommufd object: -device vfio-platform,host=XXX This is called the legacy mode/backend. If the user wants to use the iommufd backend (/dev/iommu) it shall pass an iommufd object id in the vfio-platform device options: -object iommufd,id=iommufd0 -device vfio-platform,host=XXX,iommufd=iommufd0 Suggested-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> --- v6: Move #include "sysemu/iommufd.h" in platform.c hw/vfio/platform.c | 6 ++++++ 1 file changed, 6 insertions(+)