On 8/16/21 12:24 PM, Wen, Jianxian wrote: > PL330 needs a memory region which can connect with SMMU IOMMU region to > support SMMU translate. > > Signed-off-by: Jianxian Wen <jianxian....@verisilicon.com> > --- > Changes v1 -> v2 (after review of Peter Maydell): > - Use the dma_memory_read/dma_memory_write functions, update function > AddressSpace* parameter. > Changes v2 -> v3 (after review of Philippe Mathieu-Daudé): > - Refine code to comply with code style, update error message if memory link > is not set. > > hw/arm/exynos4210.c | 3 +++ > hw/arm/xilinx_zynq.c | 3 +++ > hw/dma/pl330.c | 20 ++++++++++++++++---- > 3 files changed, 22 insertions(+), 4 deletions(-)
> @@ -1562,6 +1565,12 @@ static void pl330_realize(DeviceState *dev, Error > **errp) > "dma", PL330_IOMEM_SIZE); > sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem); > > + if (!s->mem_mr) { > + error_setg(errp, "'memory' link is not set"); > + return; > + } > + address_space_init(&s->mem_as, s->mem_mr, "pl330"); So when multiple controllers are created, this makes the 'info mtree' output longer, all AS named similarly: ./qemu-system-arm -M smdkc210 -S -monitor stdio QEMU 6.0.93 monitor - type 'help' for more information (qemu) info mtree address-space: memory 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom 0000000002000000-000000000200ffff (prio 0, rom): alias exynos4210.irom_alias @exynos4210.irom 0000000000000000-000000000000ffff 0000000002020000-000000000203ffff (prio 0, ram): exynos4210.iram 0000000005000000-00000000050000ff (prio 0, i/o): lan9118-mmio 0000000010000000-0000000010000007 (prio 0, i/o): exynos4210.chipid 0000000010020000-0000000010023d0b (prio 0, i/o): exynos4210.pmu 0000000010030000-0000000010045103 (prio 0, i/o): exynos4210.clk 0000000010050000-0000000010050443 (prio 0, i/o): exynos4210-mct 0000000010070000-00000000100700ff (prio 0, i/o): exynos4210-rtc 0000000010440000-0000000010440107 (prio 0, i/o): exynos4210-combiner 0000000010448000-0000000010448107 (prio 0, i/o): exynos4210-combiner 0000000010480000-000000001048ffff (prio 0, i/o): exynos4210-cpu-container 0000000010480000-00000000104800ff (prio 0, i/o): alias exynos4210-gic-alias_cpu0 @gic_cpu 0000000000000000-00000000000000ff 0000000010488000-00000000104880ff (prio 0, i/o): alias exynos4210-gic-alias_cpu1 @gic_cpu 0000000000000000-00000000000000ff 0000000010490000-000000001049ffff (prio 0, i/o): exynos4210-dist-container 0000000010490000-0000000010490fff (prio 0, i/o): alias exynos4210-gic-alias_dist0 @gic_dist 0000000000000000-0000000000000fff 0000000010498000-0000000010498fff (prio 0, i/o): alias exynos4210-gic-alias_dist1 @gic_dist 0000000000000000-0000000000000fff 0000000010500000-0000000010501fff (prio 0, i/o): a9mp-priv-container 0000000010500000-00000000105000ff (prio 0, i/o): a9-scu 0000000010500100-00000000105001ff (prio 0, i/o): gic_cpu 0000000010500200-000000001050021f (prio 0, i/o): a9gtimer shared 0000000010500600-000000001050061f (prio 0, i/o): arm_mptimer_timer 0000000010500620-000000001050063f (prio 0, i/o): arm_mptimer_timer 0000000010501000-0000000010501fff (prio 0, i/o): gic_dist 0000000010502000-0000000010502fff (prio 0, i/o): l2x0_cc 0000000010830400-00000000108305ff (prio 0, i/o): exynos4210.rng 0000000011c00000-0000000011c04113 (prio 0, i/o): exynos4210.fimd 0000000012510000-00000000125100ff (prio 0, i/o): sdhci 0000000012520000-00000000125200ff (prio 0, i/o): sdhci 0000000012530000-00000000125300ff (prio 0, i/o): sdhci 0000000012540000-00000000125400ff (prio 0, i/o): sdhci 0000000012580000-0000000012580fff (prio 0, i/o): ehci 0000000012580000-000000001258000f (prio 0, i/o): capabilities 0000000012580010-0000000012580053 (prio 0, i/o): operational 0000000012580054-000000001258006b (prio 0, i/o): ports 0000000012680000-0000000012680fff (prio 0, i/o): dma 0000000012690000-0000000012690fff (prio 0, i/o): dma 0000000012850000-0000000012850fff (prio 0, i/o): dma 0000000013800000-000000001380003b (prio 0, i/o): exynos4210.uart 0000000013810000-000000001381003b (prio 0, i/o): exynos4210.uart 0000000013820000-000000001382003b (prio 0, i/o): exynos4210.uart 0000000013830000-000000001383003b (prio 0, i/o): exynos4210.uart 0000000013860000-0000000013860013 (prio 0, i/o): exynos4210.i2c 0000000013870000-0000000013870013 (prio 0, i/o): exynos4210.i2c 0000000013880000-0000000013880013 (prio 0, i/o): exynos4210.i2c 0000000013890000-0000000013890013 (prio 0, i/o): exynos4210.i2c 00000000138a0000-00000000138a0013 (prio 0, i/o): exynos4210.i2c 00000000138b0000-00000000138b0013 (prio 0, i/o): exynos4210.i2c 00000000138c0000-00000000138c0013 (prio 0, i/o): exynos4210.i2c 00000000138d0000-00000000138d0013 (prio 0, i/o): exynos4210.i2c 00000000138e0000-00000000138e0013 (prio 0, i/o): exynos4210.i2c 00000000139d0000-00000000139d004f (prio 0, i/o): exynos4210-pwm 0000000040000000-000000007fffffff (prio 0, ram): exynos4210.dram0 address-space: I/O 0000000000000000-000000000000ffff (prio 0, i/o): io address-space: cpu-memory-0 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom 0000000002000000-000000000200ffff (prio 0, rom): alias exynos4210.irom_alias @exynos4210.irom 0000000000000000-000000000000ffff 0000000002020000-000000000203ffff (prio 0, ram): exynos4210.iram 0000000005000000-00000000050000ff (prio 0, i/o): lan9118-mmio 0000000010000000-0000000010000007 (prio 0, i/o): exynos4210.chipid 0000000010020000-0000000010023d0b (prio 0, i/o): exynos4210.pmu 0000000010030000-0000000010045103 (prio 0, i/o): exynos4210.clk 0000000010050000-0000000010050443 (prio 0, i/o): exynos4210-mct 0000000010070000-00000000100700ff (prio 0, i/o): exynos4210-rtc 0000000010440000-0000000010440107 (prio 0, i/o): exynos4210-combiner 0000000010448000-0000000010448107 (prio 0, i/o): exynos4210-combiner 0000000010480000-000000001048ffff (prio 0, i/o): exynos4210-cpu-container 0000000010480000-00000000104800ff (prio 0, i/o): alias exynos4210-gic-alias_cpu0 @gic_cpu 0000000000000000-00000000000000ff 0000000010488000-00000000104880ff (prio 0, i/o): alias exynos4210-gic-alias_cpu1 @gic_cpu 0000000000000000-00000000000000ff 0000000010490000-000000001049ffff (prio 0, i/o): exynos4210-dist-container 0000000010490000-0000000010490fff (prio 0, i/o): alias exynos4210-gic-alias_dist0 @gic_dist 0000000000000000-0000000000000fff 0000000010498000-0000000010498fff (prio 0, i/o): alias exynos4210-gic-alias_dist1 @gic_dist 0000000000000000-0000000000000fff 0000000010500000-0000000010501fff (prio 0, i/o): a9mp-priv-container 0000000010500000-00000000105000ff (prio 0, i/o): a9-scu 0000000010500100-00000000105001ff (prio 0, i/o): gic_cpu 0000000010500200-000000001050021f (prio 0, i/o): a9gtimer shared 0000000010500600-000000001050061f (prio 0, i/o): arm_mptimer_timer 0000000010500620-000000001050063f (prio 0, i/o): arm_mptimer_timer 0000000010501000-0000000010501fff (prio 0, i/o): gic_dist 0000000010502000-0000000010502fff (prio 0, i/o): l2x0_cc 0000000010830400-00000000108305ff (prio 0, i/o): exynos4210.rng 0000000011c00000-0000000011c04113 (prio 0, i/o): exynos4210.fimd 0000000012510000-00000000125100ff (prio 0, i/o): sdhci 0000000012520000-00000000125200ff (prio 0, i/o): sdhci 0000000012530000-00000000125300ff (prio 0, i/o): sdhci 0000000012540000-00000000125400ff (prio 0, i/o): sdhci 0000000012580000-0000000012580fff (prio 0, i/o): ehci 0000000012580000-000000001258000f (prio 0, i/o): capabilities 0000000012580010-0000000012580053 (prio 0, i/o): operational 0000000012580054-000000001258006b (prio 0, i/o): ports 0000000012680000-0000000012680fff (prio 0, i/o): dma 0000000012690000-0000000012690fff (prio 0, i/o): dma 0000000012850000-0000000012850fff (prio 0, i/o): dma 0000000013800000-000000001380003b (prio 0, i/o): exynos4210.uart 0000000013810000-000000001381003b (prio 0, i/o): exynos4210.uart 0000000013820000-000000001382003b (prio 0, i/o): exynos4210.uart 0000000013830000-000000001383003b (prio 0, i/o): exynos4210.uart 0000000013860000-0000000013860013 (prio 0, i/o): exynos4210.i2c 0000000013870000-0000000013870013 (prio 0, i/o): exynos4210.i2c 0000000013880000-0000000013880013 (prio 0, i/o): exynos4210.i2c 0000000013890000-0000000013890013 (prio 0, i/o): exynos4210.i2c 00000000138a0000-00000000138a0013 (prio 0, i/o): exynos4210.i2c 00000000138b0000-00000000138b0013 (prio 0, i/o): exynos4210.i2c 00000000138c0000-00000000138c0013 (prio 0, i/o): exynos4210.i2c 00000000138d0000-00000000138d0013 (prio 0, i/o): exynos4210.i2c 00000000138e0000-00000000138e0013 (prio 0, i/o): exynos4210.i2c 00000000139d0000-00000000139d004f (prio 0, i/o): exynos4210-pwm 0000000040000000-000000007fffffff (prio 0, ram): exynos4210.dram0 address-space: cpu-memory-1 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom 0000000002000000-000000000200ffff (prio 0, rom): alias exynos4210.irom_alias @exynos4210.irom 0000000000000000-000000000000ffff 0000000002020000-000000000203ffff (prio 0, ram): exynos4210.iram 0000000005000000-00000000050000ff (prio 0, i/o): lan9118-mmio 0000000010000000-0000000010000007 (prio 0, i/o): exynos4210.chipid 0000000010020000-0000000010023d0b (prio 0, i/o): exynos4210.pmu 0000000010030000-0000000010045103 (prio 0, i/o): exynos4210.clk 0000000010050000-0000000010050443 (prio 0, i/o): exynos4210-mct 0000000010070000-00000000100700ff (prio 0, i/o): exynos4210-rtc 0000000010440000-0000000010440107 (prio 0, i/o): exynos4210-combiner 0000000010448000-0000000010448107 (prio 0, i/o): exynos4210-combiner 0000000010480000-000000001048ffff (prio 0, i/o): exynos4210-cpu-container 0000000010480000-00000000104800ff (prio 0, i/o): alias exynos4210-gic-alias_cpu0 @gic_cpu 0000000000000000-00000000000000ff 0000000010488000-00000000104880ff (prio 0, i/o): alias exynos4210-gic-alias_cpu1 @gic_cpu 0000000000000000-00000000000000ff 0000000010490000-000000001049ffff (prio 0, i/o): exynos4210-dist-container 0000000010490000-0000000010490fff (prio 0, i/o): alias exynos4210-gic-alias_dist0 @gic_dist 0000000000000000-0000000000000fff 0000000010498000-0000000010498fff (prio 0, i/o): alias exynos4210-gic-alias_dist1 @gic_dist 0000000000000000-0000000000000fff 0000000010500000-0000000010501fff (prio 0, i/o): a9mp-priv-container 0000000010500000-00000000105000ff (prio 0, i/o): a9-scu 0000000010500100-00000000105001ff (prio 0, i/o): gic_cpu 0000000010500200-000000001050021f (prio 0, i/o): a9gtimer shared 0000000010500600-000000001050061f (prio 0, i/o): arm_mptimer_timer 0000000010500620-000000001050063f (prio 0, i/o): arm_mptimer_timer 0000000010501000-0000000010501fff (prio 0, i/o): gic_dist 0000000010502000-0000000010502fff (prio 0, i/o): l2x0_cc 0000000010830400-00000000108305ff (prio 0, i/o): exynos4210.rng 0000000011c00000-0000000011c04113 (prio 0, i/o): exynos4210.fimd 0000000012510000-00000000125100ff (prio 0, i/o): sdhci 0000000012520000-00000000125200ff (prio 0, i/o): sdhci 0000000012530000-00000000125300ff (prio 0, i/o): sdhci 0000000012540000-00000000125400ff (prio 0, i/o): sdhci 0000000012580000-0000000012580fff (prio 0, i/o): ehci 0000000012580000-000000001258000f (prio 0, i/o): capabilities 0000000012580010-0000000012580053 (prio 0, i/o): operational 0000000012580054-000000001258006b (prio 0, i/o): ports 0000000012680000-0000000012680fff (prio 0, i/o): dma 0000000012690000-0000000012690fff (prio 0, i/o): dma 0000000012850000-0000000012850fff (prio 0, i/o): dma 0000000013800000-000000001380003b (prio 0, i/o): exynos4210.uart 0000000013810000-000000001381003b (prio 0, i/o): exynos4210.uart 0000000013820000-000000001382003b (prio 0, i/o): exynos4210.uart 0000000013830000-000000001383003b (prio 0, i/o): exynos4210.uart 0000000013860000-0000000013860013 (prio 0, i/o): exynos4210.i2c 0000000013870000-0000000013870013 (prio 0, i/o): exynos4210.i2c 0000000013880000-0000000013880013 (prio 0, i/o): exynos4210.i2c 0000000013890000-0000000013890013 (prio 0, i/o): exynos4210.i2c 00000000138a0000-00000000138a0013 (prio 0, i/o): exynos4210.i2c 00000000138b0000-00000000138b0013 (prio 0, i/o): exynos4210.i2c 00000000138c0000-00000000138c0013 (prio 0, i/o): exynos4210.i2c 00000000138d0000-00000000138d0013 (prio 0, i/o): exynos4210.i2c 00000000138e0000-00000000138e0013 (prio 0, i/o): exynos4210.i2c 00000000139d0000-00000000139d004f (prio 0, i/o): exynos4210-pwm 0000000040000000-000000007fffffff (prio 0, ram): exynos4210.dram0 address-space: pl330 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom 0000000002000000-000000000200ffff (prio 0, rom): alias exynos4210.irom_alias @exynos4210.irom 0000000000000000-000000000000ffff 0000000002020000-000000000203ffff (prio 0, ram): exynos4210.iram 0000000005000000-00000000050000ff (prio 0, i/o): lan9118-mmio 0000000010000000-0000000010000007 (prio 0, i/o): exynos4210.chipid 0000000010020000-0000000010023d0b (prio 0, i/o): exynos4210.pmu 0000000010030000-0000000010045103 (prio 0, i/o): exynos4210.clk 0000000010050000-0000000010050443 (prio 0, i/o): exynos4210-mct 0000000010070000-00000000100700ff (prio 0, i/o): exynos4210-rtc 0000000010440000-0000000010440107 (prio 0, i/o): exynos4210-combiner 0000000010448000-0000000010448107 (prio 0, i/o): exynos4210-combiner 0000000010480000-000000001048ffff (prio 0, i/o): exynos4210-cpu-container 0000000010480000-00000000104800ff (prio 0, i/o): alias exynos4210-gic-alias_cpu0 @gic_cpu 0000000000000000-00000000000000ff 0000000010488000-00000000104880ff (prio 0, i/o): alias exynos4210-gic-alias_cpu1 @gic_cpu 0000000000000000-00000000000000ff 0000000010490000-000000001049ffff (prio 0, i/o): exynos4210-dist-container 0000000010490000-0000000010490fff (prio 0, i/o): alias exynos4210-gic-alias_dist0 @gic_dist 0000000000000000-0000000000000fff 0000000010498000-0000000010498fff (prio 0, i/o): alias exynos4210-gic-alias_dist1 @gic_dist 0000000000000000-0000000000000fff 0000000010500000-0000000010501fff (prio 0, i/o): a9mp-priv-container 0000000010500000-00000000105000ff (prio 0, i/o): a9-scu 0000000010500100-00000000105001ff (prio 0, i/o): gic_cpu 0000000010500200-000000001050021f (prio 0, i/o): a9gtimer shared 0000000010500600-000000001050061f (prio 0, i/o): arm_mptimer_timer 0000000010500620-000000001050063f (prio 0, i/o): arm_mptimer_timer 0000000010501000-0000000010501fff (prio 0, i/o): gic_dist 0000000010502000-0000000010502fff (prio 0, i/o): l2x0_cc 0000000010830400-00000000108305ff (prio 0, i/o): exynos4210.rng 0000000011c00000-0000000011c04113 (prio 0, i/o): exynos4210.fimd 0000000012510000-00000000125100ff (prio 0, i/o): sdhci 0000000012520000-00000000125200ff (prio 0, i/o): sdhci 0000000012530000-00000000125300ff (prio 0, i/o): sdhci 0000000012540000-00000000125400ff (prio 0, i/o): sdhci 0000000012580000-0000000012580fff (prio 0, i/o): ehci 0000000012580000-000000001258000f (prio 0, i/o): capabilities 0000000012580010-0000000012580053 (prio 0, i/o): operational 0000000012580054-000000001258006b (prio 0, i/o): ports 0000000012680000-0000000012680fff (prio 0, i/o): dma 0000000012690000-0000000012690fff (prio 0, i/o): dma 0000000012850000-0000000012850fff (prio 0, i/o): dma 0000000013800000-000000001380003b (prio 0, i/o): exynos4210.uart 0000000013810000-000000001381003b (prio 0, i/o): exynos4210.uart 0000000013820000-000000001382003b (prio 0, i/o): exynos4210.uart 0000000013830000-000000001383003b (prio 0, i/o): exynos4210.uart 0000000013860000-0000000013860013 (prio 0, i/o): exynos4210.i2c 0000000013870000-0000000013870013 (prio 0, i/o): exynos4210.i2c 0000000013880000-0000000013880013 (prio 0, i/o): exynos4210.i2c 0000000013890000-0000000013890013 (prio 0, i/o): exynos4210.i2c 00000000138a0000-00000000138a0013 (prio 0, i/o): exynos4210.i2c 00000000138b0000-00000000138b0013 (prio 0, i/o): exynos4210.i2c 00000000138c0000-00000000138c0013 (prio 0, i/o): exynos4210.i2c 00000000138d0000-00000000138d0013 (prio 0, i/o): exynos4210.i2c 00000000138e0000-00000000138e0013 (prio 0, i/o): exynos4210.i2c 00000000139d0000-00000000139d004f (prio 0, i/o): exynos4210-pwm 0000000040000000-000000007fffffff (prio 0, ram): exynos4210.dram0 address-space: pl330 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom 0000000002000000-000000000200ffff (prio 0, rom): alias exynos4210.irom_alias @exynos4210.irom 0000000000000000-000000000000ffff 0000000002020000-000000000203ffff (prio 0, ram): exynos4210.iram 0000000005000000-00000000050000ff (prio 0, i/o): lan9118-mmio 0000000010000000-0000000010000007 (prio 0, i/o): exynos4210.chipid 0000000010020000-0000000010023d0b (prio 0, i/o): exynos4210.pmu 0000000010030000-0000000010045103 (prio 0, i/o): exynos4210.clk 0000000010050000-0000000010050443 (prio 0, i/o): exynos4210-mct 0000000010070000-00000000100700ff (prio 0, i/o): exynos4210-rtc 0000000010440000-0000000010440107 (prio 0, i/o): exynos4210-combiner 0000000010448000-0000000010448107 (prio 0, i/o): exynos4210-combiner 0000000010480000-000000001048ffff (prio 0, i/o): exynos4210-cpu-container 0000000010480000-00000000104800ff (prio 0, i/o): alias exynos4210-gic-alias_cpu0 @gic_cpu 0000000000000000-00000000000000ff 0000000010488000-00000000104880ff (prio 0, i/o): alias exynos4210-gic-alias_cpu1 @gic_cpu 0000000000000000-00000000000000ff 0000000010490000-000000001049ffff (prio 0, i/o): exynos4210-dist-container 0000000010490000-0000000010490fff (prio 0, i/o): alias exynos4210-gic-alias_dist0 @gic_dist 0000000000000000-0000000000000fff 0000000010498000-0000000010498fff (prio 0, i/o): alias exynos4210-gic-alias_dist1 @gic_dist 0000000000000000-0000000000000fff 0000000010500000-0000000010501fff (prio 0, i/o): a9mp-priv-container 0000000010500000-00000000105000ff (prio 0, i/o): a9-scu 0000000010500100-00000000105001ff (prio 0, i/o): gic_cpu 0000000010500200-000000001050021f (prio 0, i/o): a9gtimer shared 0000000010500600-000000001050061f (prio 0, i/o): arm_mptimer_timer 0000000010500620-000000001050063f (prio 0, i/o): arm_mptimer_timer 0000000010501000-0000000010501fff (prio 0, i/o): gic_dist 0000000010502000-0000000010502fff (prio 0, i/o): l2x0_cc 0000000010830400-00000000108305ff (prio 0, i/o): exynos4210.rng 0000000011c00000-0000000011c04113 (prio 0, i/o): exynos4210.fimd 0000000012510000-00000000125100ff (prio 0, i/o): sdhci 0000000012520000-00000000125200ff (prio 0, i/o): sdhci 0000000012530000-00000000125300ff (prio 0, i/o): sdhci 0000000012540000-00000000125400ff (prio 0, i/o): sdhci 0000000012580000-0000000012580fff (prio 0, i/o): ehci 0000000012580000-000000001258000f (prio 0, i/o): capabilities 0000000012580010-0000000012580053 (prio 0, i/o): operational 0000000012580054-000000001258006b (prio 0, i/o): ports 0000000012680000-0000000012680fff (prio 0, i/o): dma 0000000012690000-0000000012690fff (prio 0, i/o): dma 0000000012850000-0000000012850fff (prio 0, i/o): dma 0000000013800000-000000001380003b (prio 0, i/o): exynos4210.uart 0000000013810000-000000001381003b (prio 0, i/o): exynos4210.uart 0000000013820000-000000001382003b (prio 0, i/o): exynos4210.uart 0000000013830000-000000001383003b (prio 0, i/o): exynos4210.uart 0000000013860000-0000000013860013 (prio 0, i/o): exynos4210.i2c 0000000013870000-0000000013870013 (prio 0, i/o): exynos4210.i2c 0000000013880000-0000000013880013 (prio 0, i/o): exynos4210.i2c 0000000013890000-0000000013890013 (prio 0, i/o): exynos4210.i2c 00000000138a0000-00000000138a0013 (prio 0, i/o): exynos4210.i2c 00000000138b0000-00000000138b0013 (prio 0, i/o): exynos4210.i2c 00000000138c0000-00000000138c0013 (prio 0, i/o): exynos4210.i2c 00000000138d0000-00000000138d0013 (prio 0, i/o): exynos4210.i2c 00000000138e0000-00000000138e0013 (prio 0, i/o): exynos4210.i2c 00000000139d0000-00000000139d004f (prio 0, i/o): exynos4210-pwm 0000000040000000-000000007fffffff (prio 0, ram): exynos4210.dram0 address-space: pl330 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom 0000000002000000-000000000200ffff (prio 0, rom): alias exynos4210.irom_alias @exynos4210.irom 0000000000000000-000000000000ffff 0000000002020000-000000000203ffff (prio 0, ram): exynos4210.iram 0000000005000000-00000000050000ff (prio 0, i/o): lan9118-mmio 0000000010000000-0000000010000007 (prio 0, i/o): exynos4210.chipid 0000000010020000-0000000010023d0b (prio 0, i/o): exynos4210.pmu 0000000010030000-0000000010045103 (prio 0, i/o): exynos4210.clk 0000000010050000-0000000010050443 (prio 0, i/o): exynos4210-mct 0000000010070000-00000000100700ff (prio 0, i/o): exynos4210-rtc 0000000010440000-0000000010440107 (prio 0, i/o): exynos4210-combiner 0000000010448000-0000000010448107 (prio 0, i/o): exynos4210-combiner 0000000010480000-000000001048ffff (prio 0, i/o): exynos4210-cpu-container 0000000010480000-00000000104800ff (prio 0, i/o): alias exynos4210-gic-alias_cpu0 @gic_cpu 0000000000000000-00000000000000ff 0000000010488000-00000000104880ff (prio 0, i/o): alias exynos4210-gic-alias_cpu1 @gic_cpu 0000000000000000-00000000000000ff 0000000010490000-000000001049ffff (prio 0, i/o): exynos4210-dist-container 0000000010490000-0000000010490fff (prio 0, i/o): alias exynos4210-gic-alias_dist0 @gic_dist 0000000000000000-0000000000000fff 0000000010498000-0000000010498fff (prio 0, i/o): alias exynos4210-gic-alias_dist1 @gic_dist 0000000000000000-0000000000000fff 0000000010500000-0000000010501fff (prio 0, i/o): a9mp-priv-container 0000000010500000-00000000105000ff (prio 0, i/o): a9-scu 0000000010500100-00000000105001ff (prio 0, i/o): gic_cpu 0000000010500200-000000001050021f (prio 0, i/o): a9gtimer shared 0000000010500600-000000001050061f (prio 0, i/o): arm_mptimer_timer 0000000010500620-000000001050063f (prio 0, i/o): arm_mptimer_timer 0000000010501000-0000000010501fff (prio 0, i/o): gic_dist 0000000010502000-0000000010502fff (prio 0, i/o): l2x0_cc 0000000010830400-00000000108305ff (prio 0, i/o): exynos4210.rng 0000000011c00000-0000000011c04113 (prio 0, i/o): exynos4210.fimd 0000000012510000-00000000125100ff (prio 0, i/o): sdhci 0000000012520000-00000000125200ff (prio 0, i/o): sdhci 0000000012530000-00000000125300ff (prio 0, i/o): sdhci 0000000012540000-00000000125400ff (prio 0, i/o): sdhci 0000000012580000-0000000012580fff (prio 0, i/o): ehci 0000000012580000-000000001258000f (prio 0, i/o): capabilities 0000000012580010-0000000012580053 (prio 0, i/o): operational 0000000012580054-000000001258006b (prio 0, i/o): ports 0000000012680000-0000000012680fff (prio 0, i/o): dma 0000000012690000-0000000012690fff (prio 0, i/o): dma 0000000012850000-0000000012850fff (prio 0, i/o): dma 0000000013800000-000000001380003b (prio 0, i/o): exynos4210.uart 0000000013810000-000000001381003b (prio 0, i/o): exynos4210.uart 0000000013820000-000000001382003b (prio 0, i/o): exynos4210.uart 0000000013830000-000000001383003b (prio 0, i/o): exynos4210.uart 0000000013860000-0000000013860013 (prio 0, i/o): exynos4210.i2c 0000000013870000-0000000013870013 (prio 0, i/o): exynos4210.i2c 0000000013880000-0000000013880013 (prio 0, i/o): exynos4210.i2c 0000000013890000-0000000013890013 (prio 0, i/o): exynos4210.i2c 00000000138a0000-00000000138a0013 (prio 0, i/o): exynos4210.i2c 00000000138b0000-00000000138b0013 (prio 0, i/o): exynos4210.i2c 00000000138c0000-00000000138c0013 (prio 0, i/o): exynos4210.i2c 00000000138d0000-00000000138d0013 (prio 0, i/o): exynos4210.i2c 00000000138e0000-00000000138e0013 (prio 0, i/o): exynos4210.i2c 00000000139d0000-00000000139d004f (prio 0, i/o): exynos4210-pwm 0000000040000000-000000007fffffff (prio 0, ram): exynos4210.dram0 memory-region: exynos4210.irom 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom memory-region: gic_cpu 0000000000000000-00000000000000ff (prio 0, i/o): gic_cpu memory-region: gic_dist 0000000000000000-0000000000000fff (prio 0, i/o): gic_dist (qemu) info mtree -f FlatView #0 AS "I/O", root: io Root memory region: io 0000000000000000-000000000000ffff (prio 0, i/o): io FlatView #1 AS "memory", root: system AS "cpu-memory-0", root: system AS "cpu-memory-1", root: system AS "pl330", root: system AS "pl330", root: system AS "pl330", root: system Root memory region: system 0000000000000000-000000000000ffff (prio 0, rom): exynos4210.irom 0000000002000000-000000000200ffff (prio 0, rom): exynos4210.irom 0000000002020000-000000000203ffff (prio 0, ram): exynos4210.iram 0000000005000000-00000000050000ff (prio 0, i/o): lan9118-mmio 0000000010000000-0000000010000007 (prio 0, i/o): exynos4210.chipid 0000000010020000-0000000010023d0b (prio 0, i/o): exynos4210.pmu 0000000010030000-0000000010045103 (prio 0, i/o): exynos4210.clk 0000000010050000-0000000010050443 (prio 0, i/o): exynos4210-mct 0000000010070000-00000000100700ff (prio 0, i/o): exynos4210-rtc 0000000010440000-0000000010440107 (prio 0, i/o): exynos4210-combiner 0000000010448000-0000000010448107 (prio 0, i/o): exynos4210-combiner 0000000010480000-00000000104800ff (prio 0, i/o): gic_cpu 0000000010488000-00000000104880ff (prio 0, i/o): gic_cpu 0000000010490000-0000000010490fff (prio 0, i/o): gic_dist 0000000010498000-0000000010498fff (prio 0, i/o): gic_dist 0000000010500000-00000000105000ff (prio 0, i/o): a9-scu 0000000010500100-00000000105001ff (prio 0, i/o): gic_cpu 0000000010500200-000000001050021f (prio 0, i/o): a9gtimer shared 0000000010500600-000000001050061f (prio 0, i/o): arm_mptimer_timer 0000000010500620-000000001050063f (prio 0, i/o): arm_mptimer_timer 0000000010501000-0000000010501fff (prio 0, i/o): gic_dist 0000000010502000-0000000010502fff (prio 0, i/o): l2x0_cc 0000000010830400-00000000108305ff (prio 0, i/o): exynos4210.rng 0000000011c00000-0000000011c04113 (prio 0, i/o): exynos4210.fimd 0000000012510000-00000000125100ff (prio 0, i/o): sdhci 0000000012520000-00000000125200ff (prio 0, i/o): sdhci 0000000012530000-00000000125300ff (prio 0, i/o): sdhci 0000000012540000-00000000125400ff (prio 0, i/o): sdhci 0000000012580000-000000001258000f (prio 0, i/o): capabilities 0000000012580010-0000000012580053 (prio 0, i/o): operational 0000000012580054-000000001258006b (prio 0, i/o): ports 0000000012680000-0000000012680fff (prio 0, i/o): dma 0000000012690000-0000000012690fff (prio 0, i/o): dma 0000000012850000-0000000012850fff (prio 0, i/o): dma 0000000013800000-000000001380003b (prio 0, i/o): exynos4210.uart 0000000013810000-000000001381003b (prio 0, i/o): exynos4210.uart 0000000013820000-000000001382003b (prio 0, i/o): exynos4210.uart 0000000013830000-000000001383003b (prio 0, i/o): exynos4210.uart 0000000013860000-0000000013860013 (prio 0, i/o): exynos4210.i2c 0000000013870000-0000000013870013 (prio 0, i/o): exynos4210.i2c 0000000013880000-0000000013880013 (prio 0, i/o): exynos4210.i2c 0000000013890000-0000000013890013 (prio 0, i/o): exynos4210.i2c 00000000138a0000-00000000138a0013 (prio 0, i/o): exynos4210.i2c 00000000138b0000-00000000138b0013 (prio 0, i/o): exynos4210.i2c 00000000138c0000-00000000138c0013 (prio 0, i/o): exynos4210.i2c 00000000138d0000-00000000138d0013 (prio 0, i/o): exynos4210.i2c 00000000138e0000-00000000138e0013 (prio 0, i/o): exynos4210.i2c 00000000139d0000-00000000139d004f (prio 0, i/o): exynos4210-pwm 0000000040000000-000000007fffffff (prio 0, ram): exynos4210.dram0 'info mtree' is mostly for debugging, what matters is the flatview, so no need to make the controller model more complex by adding an 'id' property (which would be useful for trace event btw). AS are not QOM so we can not pass them via link property, we have to use MR for that. So not much room to improve. Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> Tested-by: Philippe Mathieu-Daudé <f4...@amsat.org>