
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.
1. Adding a <nestedSmmuv3> attribute for PXB controller. 2. Having a single virDomainIOMMUDef struct for virDomainDef. Adding variable-length array members to virDomainIOMMUDef for multiple SMMU node names and bus numbers. 3. Having a single virDomainIOMMUDef struct for virDomainDef. Adding a variable-length array member to virDomainIOMMUDef for SMMU node names. Changing the single virDomainDeviceInfo struct to a variable-length array of virDomainDeviceInfo structs for multiple nested SMMU bus numbers. 4. Supporting multiple virDomainIOMMUDef structs for virDomainDef.
Following up here - would you have a recommendation on which implementation to proceed with? I will proceed with adding a <nestedSmmuv3> attribute for PXB controller and removing the <nestedSmmuv3> device stanzas for the next RFC, if there is no preference for one method over the other. Thanks, Nathan