On Wed, Sep 20, 2023 at 09:51:03AM -0300, Jason Gunthorpe wrote: > On Wed, Sep 20, 2023 at 02:19:42PM +0200, Cédric Le Goater wrote: > > On 9/20/23 05:42, Duan, Zhenzhong wrote: > > > > > > > > > > -----Original Message----- > > > > From: Cédric Le Goater <c...@redhat.com> > > > > Sent: Wednesday, September 20, 2023 1:08 AM > > > > Subject: Re: [PATCH v1 15/22] Add iommufd configure option > > > > > > > > On 8/30/23 12:37, Zhenzhong Duan wrote: > > > > > This adds "--enable-iommufd/--disable-iommufd" to enable or disable > > > > > iommufd support, enabled by default. > > > > > > > > Why would someone want to disable support at compile time ? It might > > > > > > For those users who only want to support legacy container feature? > > > Let me know if you still prefer to drop this patch, I'm fine with that. > > > > I think it is too early. > > > > > > have been useful for dev but now QEMU should self-adjust at runtime > > > > depending only on the host capabilities AFAIUI. Am I missing something ? > > > > > > IOMMUFD doesn't support all features of legacy container, so QEMU > > > doesn't self-adjust at runtime by checking if host supports IOMMUFD. > > > We need to specify it explicitly to use IOMMUFD as below: > > > > > > -object iommufd,id=iommufd0 > > > -device vfio-pci,host=0000:02:00.0,iommufd=iommufd0 > > > > OK. I am not sure this is the correct interface yet. At first glance, > > I wouldn't introduce a new object for a simple backend depending on a > > kernel interface. I would tend to prefer a "iommu-something" property > > of the vfio-pci device with string values: "legacy", "iommufd", "default" > > and define the various interfaces (the ops you proposed) for each > > depending on the user preference and the capabilities of the host and > > possibly the device. > > I think the idea came from Alex? The major point is to be able to have > libvirt open /dev/iommufd and FD pass it into qemu and then share that > single FD across all VFIOs. qemu will typically not be able to > self-open /dev/iommufd as it is root-only. > > So the object is not exactly for the backend, the object is for the > file descriptor.
Assuming we must have the exact same FD used for all vfio-pci devices, then using -object iommufd is the least worst way to get that FD injected into QEMU from libvirt. It is a little sucky in that when hotplugging/unplugging devices, libvirt has to think about whether or not it has to object_add/object_del the iommufd> again I don't see better options considering the need to have a single global FD. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|