From: chunming <chunming...@verisilicon.com> The current SMMU v3 model only support PCI/PCIe devices, so we update it for non-PCI/PCIe devices. . Add independent IOMMU memory regions for non-PCI/PCIe devices . Add SID value property setting for non-PCI/PCIe devices . Add PL330 DMA controller into "virt" machine and connect with SMMU v3 . Test PL330 DMA controller and PCIe e1000 network with SMMU v3 enabled
Notes: You need apply PL330 memory region patch before compile "virt" machine: https://patchew.org/QEMU/4c23c17b8e87e74e906a25a3254a03f4fa1fe...@shasxm03.verisilicon.com/ The old PL330 model cannot configure its memory region manually. So we update it and provide path. The patch was reviewed and will be merged in target-arm.next for 6.2. v6 - Reviewed by Eric: . Rename sid_map -> peri_sid_map, num_sid -> peri_num_sid . MOve peri_sid_map and peri_num_sid to SMMUState . Add "peri_sdev_list" looking up to replace "g_hash_table_remove()" for non PCI/PCIe devices. chunming (4): hw/arm/smmuv3: Support non PCI/PCIe device connect with SMMU v3 hw/arm/smmuv3: Update CFGI commands to support non PCI/PCIe devices hw/arm/virt: Update SMMU v3 creation to support non PCI/PCIe device connection hw/arm/virt: Add PL330 DMA controller and connect with SMMU v3 hw/arm/smmuv3.c | 75 ++++++++++++++++++++---- hw/arm/virt.c | 110 ++++++++++++++++++++++++++++++++++- include/hw/arm/smmu-common.h | 14 ++++- include/hw/arm/virt.h | 3 + 4 files changed, 188 insertions(+), 14 deletions(-) -- 2.30.2