* [PATCH v3] hw/dma/pl330: Add memory region to replace default
@ 2021-08-16 10:24 Wen, Jianxian
2021-08-16 10:41 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 3+ messages in thread
From: Wen, Jianxian @ 2021-08-16 10:24 UTC (permalink / raw)
To: peter.maydell, i.mitsyanko, edgar.iglesias, alistair
Cc: qemu-arm, Liu, Renwei, qemu-devel, Li, Chunming
PL330 needs a memory region which can connect with SMMU IOMMU region to support SMMU translate.
Signed-off-by: Jianxian Wen <jianxian.wen@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(-)
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 5c7a51b..0299e81 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -173,6 +173,9 @@ static DeviceState *pl330_create(uint32_t base, qemu_or_irq *orgate,
int i;
dev = qdev_new("pl330");
+ object_property_set_link(OBJECT(dev), "memory",
+ OBJECT(get_system_memory()),
+ &error_fatal);
qdev_prop_set_uint8(dev, "num_events", nevents);
qdev_prop_set_uint8(dev, "num_chnls", 8);
qdev_prop_set_uint8(dev, "num_periph_req", nreq);
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index 245af81..69c333e 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -312,6 +312,9 @@ static void zynq_init(MachineState *machine)
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[39-IRQ_OFFSET]);
dev = qdev_new("pl330");
+ object_property_set_link(OBJECT(dev), "memory",
+ OBJECT(address_space_mem),
+ &error_fatal);
qdev_prop_set_uint8(dev, "num_chnls", 8);
qdev_prop_set_uint8(dev, "num_periph_req", 4);
qdev_prop_set_uint8(dev, "num_events", 16);
diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c
index 944ba29..c3bd30c 100644
--- a/hw/dma/pl330.c
+++ b/hw/dma/pl330.c
@@ -269,6 +269,9 @@ struct PL330State {
uint8_t num_faulting;
uint8_t periph_busy[PL330_PERIPH_NUM];
+ /* Memory region that DMA operation access */
+ MemoryRegion *mem_mr;
+ AddressSpace mem_as;
};
#define TYPE_PL330 "pl330"
@@ -1108,7 +1111,7 @@ static inline const PL330InsnDesc *pl330_fetch_insn(PL330Chan *ch)
uint8_t opcode;
int i;
- dma_memory_read(&address_space_memory, ch->pc, &opcode, 1);
+ dma_memory_read(&ch->parent->mem_as, ch->pc, &opcode, 1);
for (i = 0; insn_desc[i].size; i++) {
if ((opcode & insn_desc[i].opmask) == insn_desc[i].opcode) {
return &insn_desc[i];
@@ -1122,7 +1125,7 @@ static inline void pl330_exec_insn(PL330Chan *ch, const PL330InsnDesc *insn)
uint8_t buf[PL330_INSN_MAXSIZE];
assert(insn->size <= PL330_INSN_MAXSIZE);
- dma_memory_read(&address_space_memory, ch->pc, buf, insn->size);
+ dma_memory_read(&ch->parent->mem_as, ch->pc, buf, insn->size);
insn->exec(ch, buf[0], &buf[1], insn->size - 1);
}
@@ -1186,7 +1189,7 @@ static int pl330_exec_cycle(PL330Chan *channel)
if (q != NULL && q->len <= pl330_fifo_num_free(&s->fifo)) {
int len = q->len - (q->addr & (q->len - 1));
- dma_memory_read(&address_space_memory, q->addr, buf, len);
+ dma_memory_read(&s->mem_as, q->addr, buf, len);
trace_pl330_exec_cycle(q->addr, len);
if (trace_event_get_state_backends(TRACE_PL330_HEXDUMP)) {
pl330_hexdump(buf, len);
@@ -1217,7 +1220,7 @@ static int pl330_exec_cycle(PL330Chan *channel)
fifo_res = pl330_fifo_get(&s->fifo, buf, len, q->tag);
}
if (fifo_res == PL330_FIFO_OK || q->z) {
- dma_memory_write(&address_space_memory, q->addr, buf, len);
+ dma_memory_write(&s->mem_as, q->addr, buf, len);
trace_pl330_exec_cycle(q->addr, len);
if (trace_event_get_state_backends(TRACE_PL330_HEXDUMP)) {
pl330_hexdump(buf, len);
@@ -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");
+
s->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, pl330_exec_cycle_timer, s);
s->cfg[0] = (s->mgr_ns_at_rst ? 0x4 : 0) |
@@ -1656,6 +1665,9 @@ static Property pl330_properties[] = {
DEFINE_PROP_UINT8("rd_q_dep", PL330State, rd_q_dep, 16),
DEFINE_PROP_UINT16("data_buffer_dep", PL330State, data_buffer_dep, 256),
+ DEFINE_PROP_LINK("memory", PL330State, mem_mr,
+ TYPE_MEMORY_REGION, MemoryRegion *),
+
DEFINE_PROP_END_OF_LIST(),
};
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v3] hw/dma/pl330: Add memory region to replace default
2021-08-16 10:24 [PATCH v3] hw/dma/pl330: Add memory region to replace default Wen, Jianxian
@ 2021-08-16 10:41 ` Philippe Mathieu-Daudé
2021-08-16 10:43 ` Peter Maydell
0 siblings, 1 reply; 3+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-08-16 10:41 UTC (permalink / raw)
To: Wen, Jianxian, peter.maydell, i.mitsyanko, edgar.iglesias, alistair
Cc: qemu-arm, Liu, Renwei, qemu-devel, Li, Chunming
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.wen@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é <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v3] hw/dma/pl330: Add memory region to replace default
2021-08-16 10:41 ` Philippe Mathieu-Daudé
@ 2021-08-16 10:43 ` Peter Maydell
0 siblings, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2021-08-16 10:43 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Liu, Renwei, Li, Chunming, i.mitsyanko, alistair, Wen, Jianxian,
qemu-devel, qemu-arm, edgar.iglesias
On Mon, 16 Aug 2021 at 11:41, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
> So when multiple controllers are created, this makes the 'info mtree'
> output longer, all AS named similarly:
I think this is a problem with 'info mtree' to some extent -- it
was designed on the assumption that there's really only one or two
interesting address spaces, and with more recent developments that's
just not the case any more.
-- PMM
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-08-16 10:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-16 10:24 [PATCH v3] hw/dma/pl330: Add memory region to replace default Wen, Jianxian
2021-08-16 10:41 ` Philippe Mathieu-Daudé
2021-08-16 10:43 ` Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.