The TrustZone peripheral protection controller (tz-ppc) sits between
peripherals and the main system. However this results in "info mtree"
looking at bit confusing, especially as the sequence numbers can
overlap and miss steps:
0000000000000000-ffffffffffffffff (prio -2, i/o): system
0000000000000000-00000000003fffff (prio 0, i/o): tz-mpc-upstream
0000000000400000-00000000007fffff (prio 0, i/o): alias ssram-0-alias @tz-mpc-upstream 0000000000000000-00000000003fffff
0000000028000000-00000000281fffff (prio 0, i/o): tz-mpc-upstream
0000000028200000-00000000283fffff (prio 0, i/o): tz-mpc-upstream
0000000040080000-0000000040080fff (prio 0, i/o): iotkit-secctl-ns-regs
0000000040100000-0000000040100fff (prio 0, i/o): tz-ppc-port[1]
0000000040101000-0000000040101fff (prio 0, i/o): tz-ppc-port[2]
0000000040102000-0000000040102fff (prio 0, i/o): tz-ppc-port[3]
0000000040103000-0000000040103fff (prio 0, i/o): tz-ppc-port[4]
0000000040110000-0000000040110fff (prio 0, i/o): tz-ppc-port[0]
0000000040111000-0000000040111fff (prio 0, i/o): tz-ppc-port[1]
0000000040112000-0000000040112fff (prio 0, i/o): tz-ppc-port[2]
0000000040113000-0000000040113fff (prio 0, i/o): tz-ppc-port[3]
0000000040200000-0000000040200fff (prio 0, i/o): tz-ppc-port[5]
0000000040201000-0000000040201fff (prio 0, i/o): tz-ppc-port[6]
0000000040202000-0000000040202fff (prio 0, i/o): tz-ppc-port[7]
0000000040203000-0000000040203fff (prio 0, i/o): tz-ppc-port[8]
0000000040204000-0000000040204fff (prio 0, i/o): tz-ppc-port[9]
0000000040205000-0000000040205fff (prio 0, i/o): tz-ppc-port[0]
0000000040206000-0000000040206fff (prio 0, i/o): tz-ppc-port[1]
0000000040207000-0000000040207fff (prio 0, i/o): tz-ppc-port[10]
0000000040208000-0000000040208fff (prio 0, i/o): tz-ppc-port[11]
0000000040209000-0000000040209fff (prio 0, i/o): tz-ppc-port[2]
000000004020a000-000000004020afff (prio 0, i/o): tz-ppc-port[3]
000000004020b000-000000004020bfff (prio 0, i/o): tz-ppc-port[4]
000000004020c000-000000004020cfff (prio 0, i/o): tz-ppc-port[12]
000000004020d000-000000004020dfff (prio 0, i/o): tz-ppc-port[13]
0000000040300000-0000000040300fff (prio 0, i/o): tz-ppc-port[0]
0000000040301000-0000000040301fff (prio 0, i/o): tz-ppc-port[1]
0000000040302000-0000000040302fff (prio 0, i/o): tz-ppc-port[2]
0000000041000000-000000004113ffff (prio 0, i/o): tz-ppc-port[0]
0000000042000000-00000000420000ff (prio 0, i/o): tz-ppc-port[5]
0000000048007000-0000000048007fff (prio -1000, i/o): FPGA NS PC
0000000050080000-0000000050080fff (prio 0, i/o): iotkit-secctl-s-regs
0000000058007000-0000000058007fff (prio 0, i/o): tz-ppc-port[0]
0000000058008000-0000000058008fff (prio 0, i/o): tz-ppc-port[1]
0000000058009000-0000000058009fff (prio 0, i/o): tz-ppc-port[2]
0000000080000000-0000000080ffffff (prio 0, ram): mps.ram
So as a quality of life feature lets expose the name of the underlying
region so we get something more useful:
0000000000000000-ffffffffffffffff (prio -2, i/o): system
0000000000000000-00000000003fffff (prio 0, i/o): tz-mpc-upstream
0000000000400000-00000000007fffff (prio 0, i/o): alias ssram-0-alias @tz-mpc-upstream 0000000000000000-00000000003fffff
0000000028000000-00000000281fffff (prio 0, i/o): tz-mpc-upstream
0000000028200000-00000000283fffff (prio 0, i/o): tz-mpc-upstream
0000000040080000-0000000040080fff (prio 0, i/o): iotkit-secctl-ns-regs
0000000040100000-0000000040100fff (prio 0, i/o): tz-ppc-port[gpio0]
0000000040101000-0000000040101fff (prio 0, i/o): tz-ppc-port[gpio1]
0000000040102000-0000000040102fff (prio 0, i/o): tz-ppc-port[gpio2]
0000000040103000-0000000040103fff (prio 0, i/o): tz-ppc-port[gpio3]
0000000040110000-0000000040110fff (prio 0, i/o): tz-ppc-port[pl080]
0000000040111000-0000000040111fff (prio 0, i/o): tz-ppc-port[pl080]
0000000040112000-0000000040112fff (prio 0, i/o): tz-ppc-port[pl080]
0000000040113000-0000000040113fff (prio 0, i/o): tz-ppc-port[pl080]
0000000040200000-0000000040200fff (prio 0, i/o): tz-ppc-port[uart]
0000000040201000-0000000040201fff (prio 0, i/o): tz-ppc-port[uart]
0000000040202000-0000000040202fff (prio 0, i/o): tz-ppc-port[uart]
0000000040203000-0000000040203fff (prio 0, i/o): tz-ppc-port[uart]
0000000040204000-0000000040204fff (prio 0, i/o): tz-ppc-port[uart]
0000000040205000-0000000040205fff (prio 0, i/o): tz-ppc-port[pl022]
0000000040206000-0000000040206fff (prio 0, i/o): tz-ppc-port[pl022]
0000000040207000-0000000040207fff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c]
0000000040208000-0000000040208fff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c]
0000000040209000-0000000040209fff (prio 0, i/o): tz-ppc-port[pl022]
000000004020a000-000000004020afff (prio 0, i/o): tz-ppc-port[pl022]
000000004020b000-000000004020bfff (prio 0, i/o): tz-ppc-port[pl022]
000000004020c000-000000004020cfff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c]
000000004020d000-000000004020dfff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c]
0000000040300000-0000000040300fff (prio 0, i/o): tz-ppc-port[mps2-scc]
0000000040301000-0000000040301fff (prio 0, i/o): tz-ppc-port[i2s-audio]
0000000040302000-0000000040302fff (prio 0, i/o): tz-ppc-port[mps2-fpgaio]
0000000041000000-000000004113ffff (prio 0, i/o): tz-ppc-port[gfx]
0000000042000000-00000000420000ff (prio 0, i/o): tz-ppc-port[lan9118-mmio]
0000000048007000-0000000048007fff (prio -1000, i/o): FPGA NS PC
0000000050080000-0000000050080fff (prio 0, i/o): iotkit-secctl-s-regs
0000000058007000-0000000058007fff (prio 0, i/o): tz-ppc-port[tz-mpc-regs]
0000000058008000-0000000058008fff (prio 0, i/o): tz-ppc-port[tz-mpc-regs]
0000000058009000-0000000058009fff (prio 0, i/o): tz-ppc-port[tz-mpc-regs]
0000000080000000-0000000080ffffff (prio 0, ram): mps.ram
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Jim MacArthur <jim.macarthur@linaro.org>
---
hw/misc/tz-ppc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/misc/tz-ppc.c b/hw/misc/tz-ppc.c
index e4235a846d4..fd305f9f62f 100644
--- a/hw/misc/tz-ppc.c
+++ b/hw/misc/tz-ppc.c
@@ -273,7 +273,7 @@ static void tz_ppc_realize(DeviceState *dev, Error **errp)
continue;
}
- name = g_strdup_printf("tz-ppc-port[%d]", i);
+ name = g_strdup_printf("tz-ppc-port[%s]", memory_region_name(port->downstream));
port->ppc = s;
address_space_init(&port->downstream_as, port->downstream, name);
--
2.47.3
On 15/12/25 18:05, Alex Bennée wrote: > The TrustZone peripheral protection controller (tz-ppc) sits between > peripherals and the main system. However this results in "info mtree" > looking at bit confusing, especially as the sequence numbers can > overlap and miss steps: > > 0000000000000000-ffffffffffffffff (prio -2, i/o): system > 0000000000000000-00000000003fffff (prio 0, i/o): tz-mpc-upstream > 0000000000400000-00000000007fffff (prio 0, i/o): alias ssram-0-alias @tz-mpc-upstream 0000000000000000-00000000003fffff > 0000000028000000-00000000281fffff (prio 0, i/o): tz-mpc-upstream > 0000000028200000-00000000283fffff (prio 0, i/o): tz-mpc-upstream > 0000000040080000-0000000040080fff (prio 0, i/o): iotkit-secctl-ns-regs > 0000000040100000-0000000040100fff (prio 0, i/o): tz-ppc-port[1] > 0000000040101000-0000000040101fff (prio 0, i/o): tz-ppc-port[2] > 0000000040102000-0000000040102fff (prio 0, i/o): tz-ppc-port[3] > 0000000040103000-0000000040103fff (prio 0, i/o): tz-ppc-port[4] > 0000000040110000-0000000040110fff (prio 0, i/o): tz-ppc-port[0] > 0000000040111000-0000000040111fff (prio 0, i/o): tz-ppc-port[1] > 0000000040112000-0000000040112fff (prio 0, i/o): tz-ppc-port[2] > 0000000040113000-0000000040113fff (prio 0, i/o): tz-ppc-port[3] > 0000000040200000-0000000040200fff (prio 0, i/o): tz-ppc-port[5] > 0000000040201000-0000000040201fff (prio 0, i/o): tz-ppc-port[6] > 0000000040202000-0000000040202fff (prio 0, i/o): tz-ppc-port[7] > 0000000040203000-0000000040203fff (prio 0, i/o): tz-ppc-port[8] > 0000000040204000-0000000040204fff (prio 0, i/o): tz-ppc-port[9] > 0000000040205000-0000000040205fff (prio 0, i/o): tz-ppc-port[0] > 0000000040206000-0000000040206fff (prio 0, i/o): tz-ppc-port[1] > 0000000040207000-0000000040207fff (prio 0, i/o): tz-ppc-port[10] > 0000000040208000-0000000040208fff (prio 0, i/o): tz-ppc-port[11] > 0000000040209000-0000000040209fff (prio 0, i/o): tz-ppc-port[2] > 000000004020a000-000000004020afff (prio 0, i/o): tz-ppc-port[3] > 000000004020b000-000000004020bfff (prio 0, i/o): tz-ppc-port[4] > 000000004020c000-000000004020cfff (prio 0, i/o): tz-ppc-port[12] > 000000004020d000-000000004020dfff (prio 0, i/o): tz-ppc-port[13] > 0000000040300000-0000000040300fff (prio 0, i/o): tz-ppc-port[0] > 0000000040301000-0000000040301fff (prio 0, i/o): tz-ppc-port[1] > 0000000040302000-0000000040302fff (prio 0, i/o): tz-ppc-port[2] > 0000000041000000-000000004113ffff (prio 0, i/o): tz-ppc-port[0] > 0000000042000000-00000000420000ff (prio 0, i/o): tz-ppc-port[5] > 0000000048007000-0000000048007fff (prio -1000, i/o): FPGA NS PC > 0000000050080000-0000000050080fff (prio 0, i/o): iotkit-secctl-s-regs > 0000000058007000-0000000058007fff (prio 0, i/o): tz-ppc-port[0] > 0000000058008000-0000000058008fff (prio 0, i/o): tz-ppc-port[1] > 0000000058009000-0000000058009fff (prio 0, i/o): tz-ppc-port[2] > 0000000080000000-0000000080ffffff (prio 0, ram): mps.ram > > So as a quality of life feature lets expose the name of the underlying > region so we get something more useful: > > 0000000000000000-ffffffffffffffff (prio -2, i/o): system > 0000000000000000-00000000003fffff (prio 0, i/o): tz-mpc-upstream > 0000000000400000-00000000007fffff (prio 0, i/o): alias ssram-0-alias @tz-mpc-upstream 0000000000000000-00000000003fffff > 0000000028000000-00000000281fffff (prio 0, i/o): tz-mpc-upstream > 0000000028200000-00000000283fffff (prio 0, i/o): tz-mpc-upstream > 0000000040080000-0000000040080fff (prio 0, i/o): iotkit-secctl-ns-regs > 0000000040100000-0000000040100fff (prio 0, i/o): tz-ppc-port[gpio0] > 0000000040101000-0000000040101fff (prio 0, i/o): tz-ppc-port[gpio1] > 0000000040102000-0000000040102fff (prio 0, i/o): tz-ppc-port[gpio2] > 0000000040103000-0000000040103fff (prio 0, i/o): tz-ppc-port[gpio3] > 0000000040110000-0000000040110fff (prio 0, i/o): tz-ppc-port[pl080] > 0000000040111000-0000000040111fff (prio 0, i/o): tz-ppc-port[pl080] > 0000000040112000-0000000040112fff (prio 0, i/o): tz-ppc-port[pl080] > 0000000040113000-0000000040113fff (prio 0, i/o): tz-ppc-port[pl080] > 0000000040200000-0000000040200fff (prio 0, i/o): tz-ppc-port[uart] > 0000000040201000-0000000040201fff (prio 0, i/o): tz-ppc-port[uart] > 0000000040202000-0000000040202fff (prio 0, i/o): tz-ppc-port[uart] > 0000000040203000-0000000040203fff (prio 0, i/o): tz-ppc-port[uart] > 0000000040204000-0000000040204fff (prio 0, i/o): tz-ppc-port[uart] > 0000000040205000-0000000040205fff (prio 0, i/o): tz-ppc-port[pl022] > 0000000040206000-0000000040206fff (prio 0, i/o): tz-ppc-port[pl022] > 0000000040207000-0000000040207fff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c] > 0000000040208000-0000000040208fff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c] > 0000000040209000-0000000040209fff (prio 0, i/o): tz-ppc-port[pl022] > 000000004020a000-000000004020afff (prio 0, i/o): tz-ppc-port[pl022] > 000000004020b000-000000004020bfff (prio 0, i/o): tz-ppc-port[pl022] > 000000004020c000-000000004020cfff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c] > 000000004020d000-000000004020dfff (prio 0, i/o): tz-ppc-port[arm_sbcon_i2c] > 0000000040300000-0000000040300fff (prio 0, i/o): tz-ppc-port[mps2-scc] > 0000000040301000-0000000040301fff (prio 0, i/o): tz-ppc-port[i2s-audio] > 0000000040302000-0000000040302fff (prio 0, i/o): tz-ppc-port[mps2-fpgaio] > 0000000041000000-000000004113ffff (prio 0, i/o): tz-ppc-port[gfx] > 0000000042000000-00000000420000ff (prio 0, i/o): tz-ppc-port[lan9118-mmio] > 0000000048007000-0000000048007fff (prio -1000, i/o): FPGA NS PC > 0000000050080000-0000000050080fff (prio 0, i/o): iotkit-secctl-s-regs > 0000000058007000-0000000058007fff (prio 0, i/o): tz-ppc-port[tz-mpc-regs] > 0000000058008000-0000000058008fff (prio 0, i/o): tz-ppc-port[tz-mpc-regs] > 0000000058009000-0000000058009fff (prio 0, i/o): tz-ppc-port[tz-mpc-regs] > 0000000080000000-0000000080ffffff (prio 0, ram): mps.ram > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Cc: Jim MacArthur <jim.macarthur@linaro.org> > --- > hw/misc/tz-ppc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
© 2016 - 2025 Red Hat, Inc.