Re: [RFC PATCH 0/5] qemu: Route hostdevs to multiple nested SMMUs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 30, 2025 at 09:51:55AM -0800, Nathan Chen wrote:
> 
> > > Hi Daniel,
> > > 
> > > > Top level libvirt device representation in XML is based on the device
> > > > *class*, not the specific device impl. Adding a <nestedSmmuv3> device
> > > > type XML element in libvirt is totally inappropriate. Any configuration
> > > > must be done beneath the <iommu> element.
> > > Would keeping track of PXB <=> host SMMU nodes be better represented with a
> > > <nestedSmmuv3> PXB attribute like below, when the "nestedSmmuv3" IOMMU model
> > > is specified? This method would be simplest IMO because we could omit
> > > keeping track of the nestedSmmuv3 bus number in the virDomainDef struct
> > > since its association with a PXB controller would already be baked-in.
> > > 
> > > <devices>
> > >    ...
> > >    <controller type='pci' index='1' model='pcie-expander-bus'>
> > >      <model name='pxb-pcie'/>
> > >      <target busNr='254'/>
> > >      <nestedSmmuv3>smmu3.0x0000000012000000</nestedSmmuv3>
> > >      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> > >    </controller>
> > >    ...
> > >    <iommu model='nestedSmmuv3'/>
> > > </devices>
> > 
> > The '<nestedSmmuv3>smmu3.0x0000000012000000</nestedSmmuv3>' bit
> > is also wierd, because it never appears in the QEMU command line
> > at all. Some kind of implicit association seems to be taking
> > place behind the scenes and that is unlikely to be a desirable
> > thing. We need to model associations between devices explicitly
> > and directly pass this on to QEMU.
> > 
> > If the nestedSmmuv3 is assocaited with a host SMMUv3 device,
> > then that association should be represented on the <iommu>
> > device, and this mapping passed to QEMU.
> 
> The '<nestedSmmuv3>smmu3.0x0000000012000000</nestedSmmuv3>' bit will be
> moved to the <iommu> definition in the next revision.
> 
> I agree that explicitly specifying the host SMMU node name in QEMU would
> make the host to guest SMMU association more clear. But the current QEMU
> implementation appears more flexible in allowing us to create nestedSmmuv3
> instances and then imply the association to a host SMMU node based on the
> PCIe topology isolating devices under different PXBs. I think we should
> discuss this further on the QEMU thread with Shameer before he sends out the
> second revision of his series, then adjust the libvirt implementation based
> on the next QEMU revision.

"auto-magic" associations between different pieces has too large a
scope to bite us at a later date. libvirt's goal has always been to
make everything that's functionally impacting a guest device be
100% explicit. So I don't think we should be implying mappings to
the host SMMU in QEMU at all, QEMU must be told what to map to.


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 :|



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux