Message ID | 20231109114529.1904193-12-zhenzhong.duan@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vfio: Adopt iommufd | expand |
On 11/9/23 12:45, 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> > --- > include/hw/vfio/vfio-platform.h | 1 + > hw/vfio/platform.c | 5 +++++ > 2 files changed, 6 insertions(+) > > diff --git a/include/hw/vfio/vfio-platform.h b/include/hw/vfio/vfio-platform.h > index c414c3dffc..f57f4276f2 100644 > --- a/include/hw/vfio/vfio-platform.h > +++ b/include/hw/vfio/vfio-platform.h > @@ -18,6 +18,7 @@ > > #include "hw/sysbus.h" > #include "hw/vfio/vfio-common.h" > +#include "sysemu/iommufd.h" > #include "qemu/event_notifier.h" > #include "qemu/queue.h" > #include "qom/object.h" I think we can move this change including "sysemu/iommufd.h" to file "hw/vfio/platform.c" Thanks, C. > diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c > index 8e3d4ac458..86e176ee97 100644 > --- a/hw/vfio/platform.c > +++ b/hw/vfio/platform.c > @@ -15,6 +15,7 @@ > */ > > #include "qemu/osdep.h" > +#include CONFIG_DEVICES /* CONFIG_IOMMUFD */ > #include "qapi/error.h" > #include <sys/ioctl.h> > #include <linux/vfio.h> > @@ -649,6 +650,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(), > }; >
>-----Original Message----- >From: Cédric Le Goater <clg@redhat.com> >Sent: Friday, November 10, 2023 4:50 PM >Subject: Re: [PATCH v5 11/20] vfio/platform: Allow the selection of a given >iommu backend > >On 11/9/23 12:45, 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> >> --- >> include/hw/vfio/vfio-platform.h | 1 + >> hw/vfio/platform.c | 5 +++++ >> 2 files changed, 6 insertions(+) >> >> diff --git a/include/hw/vfio/vfio-platform.h b/include/hw/vfio/vfio-platform.h >> index c414c3dffc..f57f4276f2 100644 >> --- a/include/hw/vfio/vfio-platform.h >> +++ b/include/hw/vfio/vfio-platform.h >> @@ -18,6 +18,7 @@ >> >> #include "hw/sysbus.h" >> #include "hw/vfio/vfio-common.h" >> +#include "sysemu/iommufd.h" >> #include "qemu/event_notifier.h" >> #include "qemu/queue.h" >> #include "qom/object.h" >I think we can move this change including "sysemu/iommufd.h" to file >"hw/vfio/platform.c" Make sense, will do. Thanks Zhenzhong
diff --git a/include/hw/vfio/vfio-platform.h b/include/hw/vfio/vfio-platform.h index c414c3dffc..f57f4276f2 100644 --- a/include/hw/vfio/vfio-platform.h +++ b/include/hw/vfio/vfio-platform.h @@ -18,6 +18,7 @@ #include "hw/sysbus.h" #include "hw/vfio/vfio-common.h" +#include "sysemu/iommufd.h" #include "qemu/event_notifier.h" #include "qemu/queue.h" #include "qom/object.h" diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c index 8e3d4ac458..86e176ee97 100644 --- a/hw/vfio/platform.c +++ b/hw/vfio/platform.c @@ -15,6 +15,7 @@ */ #include "qemu/osdep.h" +#include CONFIG_DEVICES /* CONFIG_IOMMUFD */ #include "qapi/error.h" #include <sys/ioctl.h> #include <linux/vfio.h> @@ -649,6 +650,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> --- include/hw/vfio/vfio-platform.h | 1 + hw/vfio/platform.c | 5 +++++ 2 files changed, 6 insertions(+)