Hi All, Changes from v2: https://lore.kernel.org/qemu-devel/20250502102707.110516-1-shameerali.kolothum.th...@huawei.com/
Addressed feedback on v2. Thanks to all. Major changes: 1. Not use the default "bus" property for associated PCIe RC. Instead use "primary-bus". 2. Split of IORT ACPI changes into two different patches(Patches 2 & 3). 3. Picked some R-by tags. (I haven't included Nicolin's R-by for the v2 ACPI IORT patch as that is now splitted into patches 2 &3.) Cover letter: This patch series introduces support for a user-creatable SMMUv3 device (-device arm-smmuv3) in QEMU. The implementation is based on feedback received from the RFCv2[0]: "hw/arm/virt: Add support for user-creatable accelerated SMMUv3" Currently, QEMU's SMMUv3 emulation (iommu=smmuv3) is tied to the machine and does not support instantiating multiple SMMUv3 devices—each associated with a separate PCIe root complex. In contrast, real-world ARM systems often include multiple SMMUv3 instances, each bound to a different PCIe root complex. This series allows to specify multiple SMMUv3 instances as below, -device arm-smmuv3,primary-bus=pcie.0,id=smmuv3.0 ... -device arm-smmuv3,primary-bus=pcie.1,,id=smmuv3.1 The multiple SMMUv3 instance support lays the groundwork for supporting accelerated SMMUv3, as proposed in the aforementioned RFCv2[0]. The proposed accelerated support will be an optional property like below, -device arm-smmuv3,primary-bus=pcie.1,accel=on,.. Please note, the accelerated SMMUv3 support is not part of this series and will be sent out as a separate series later on top of this one. This series also, -Supports either the legacy iommu=smmuv3 option or the new "-device arm-smmuv3" model. -Adds device tree bindings for the new SMMUv3 device on the arm/virt machine only, and only for the default pcie.0 root complex. (Note: pxb-pcie root complexes are currently not supported with the device tree due to known limitations[1].) Example usage: -device arm-smmuv3,primary-bus=pcie.0,id=smmuv3.0 -device virtio-net-pci,bus=pcie.0 -device pxb-pcie,id=pcie.1,bus_nr=2 -device arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1 -device pcie-root-port,id=pcie.port1,bus=pcie.1 -device virtio-net-pci,bus=pcie.port1 Please take a look and let me know your feedback. Thanks, Shameer [0]:https://lore.kernel.org/qemu-devel/20250311141045.66620-1-shameerali.kolothum.th...@huawei.com/ [1]:https://lore.kernel.org/qemu-devel/20230421165037.2506-1-jonathan.came...@huawei.com/ Nicolin Chen (1): hw/arm/virt: Add an SMMU_IO_LEN macro Shameer Kolothum (5): hw/arm/smmuv3: Check SMMUv3 has PCIe Root Complex association hw/arm/virt-acpi-build: Re-arrange SMMUv3 IORT build hw/arm/virt-acpi-build: Update IORT for multiple smmuv3 devices hw/arm/virt: Factor out common SMMUV3 dt bindings code hw/arm/virt: Allow user-creatable SMMUv3 dev instantiation hw/arm/smmuv3.c | 10 +++ hw/arm/virt-acpi-build.c | 164 +++++++++++++++++++++++++++++++-------- hw/arm/virt.c | 111 +++++++++++++++++++------- hw/core/sysbus-fdt.c | 3 + include/hw/arm/virt.h | 1 + 5 files changed, 229 insertions(+), 60 deletions(-) -- 2.34.1