Re: [PATCH v4 3/3] memory: Have 'info mtree' remove duplicated Address Space information
On 9/1/21 6:19 PM, Philippe Mathieu-Daudé wrote: @@ -3282,6 +3282,59 @@ static void mtree_info_flatview(bool dispatch_tree, bool owner) /* Free */ g_hash_table_foreach_remove(views, mtree_info_flatview_free, 0); g_hash_table_unref(views); + +return; +} Bogus. +return g_strcmp0(as_a->name, as_b->name); +} +static void mtree_print_as_name(gpointer data, gpointer user_data) Mind the missing vertical whitespace. Otherwise, Reviewed-by: Richard Henderson r~
Re: [PATCH v4 3/3] memory: Have 'info mtree' remove duplicated Address Space information
On 01.09.21 18:19, Philippe Mathieu-Daudé wrote: Per Peter Maydell [*]: 'info mtree' monitor command 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. Similarly about how the FlatView are sorted using a GHashTable, sort the AddressSpace objects to remove the duplications (AS using the same root MemoryRegion). This drastically reduces the output of 'info mtree' on some boards. Before: $ (echo info mtree; echo q) \ | qemu-system-aarch64 -S -monitor stdio -M raspi3b \ | wc -l 423 After: $ (echo info mtree; echo q) \ | qemu-system-aarch64 -S -monitor stdio -M raspi3b \ | wc -l 108 (qemu) info mtree address-space: I/O - (prio 0, i/o): io address-space shared 9 times: - cpu-memory-0 - cpu-memory-1 - cpu-memory-2 - cpu-memory-3 - cpu-secure-memory-0 - cpu-secure-memory-1 - cpu-secure-memory-2 - cpu-secure-memory-3 - memory - (prio 0, i/o): system -3fff (prio 0, ram): ram 3f00-3fff (prio 1, i/o): bcm2835-peripherals 3f003000-3f00301f (prio 0, i/o): bcm2835-sys-timer 3f004000-3f004fff (prio -1000, i/o): bcm2835-txp 3f006000-3f006fff (prio 0, i/o): mphi 3f007000-3f007fff (prio 0, i/o): bcm2835-dma 3f00b200-3f00b3ff (prio 0, i/o): bcm2835-ic 3f00b400-3f00b43f (prio -1000, i/o): bcm2835-sp804 3f00b800-3f00bbff (prio 0, i/o): bcm2835-mbox 3f10-3f1001ff (prio 0, i/o): bcm2835-powermgt 3f101000-3f102fff (prio 0, i/o): bcm2835-cprman 3f104000-3f10400f (prio 0, i/o): bcm2835-rng 3f20-3f200fff (prio 0, i/o): bcm2835_gpio 3f201000-3f201fff (prio 0, i/o): pl011 3f202000-3f202fff (prio 0, i/o): bcm2835-sdhost 3f203000-3f2030ff (prio -1000, i/o): bcm2835-i2s 3f204000-3f20401f (prio -1000, i/o): bcm2835-spi0 3f205000-3f20501f (prio -1000, i/o): bcm2835-i2c0 3f20f000-3f20f07f (prio -1000, i/o): bcm2835-otp 3f212000-3f212007 (prio 0, i/o): bcm2835-thermal 3f214000-3f2140ff (prio -1000, i/o): bcm2835-spis 3f215000-3f2150ff (prio 0, i/o): bcm2835-aux 3f30-3f3000ff (prio 0, i/o): sdhci 3f60-3f6000ff (prio -1000, i/o): bcm2835-smi 3f804000-3f80401f (prio -1000, i/o): bcm2835-i2c1 3f805000-3f80501f (prio -1000, i/o): bcm2835-i2c2 3f90-3f907fff (prio -1000, i/o): bcm2835-dbus 3f91-3f917fff (prio -1000, i/o): bcm2835-ave0 3f98-3f990fff (prio 0, i/o): dwc2 3f98-3f980fff (prio 0, i/o): dwc2-io 3f981000-3f990fff (prio 0, i/o): dwc2-fifo 3fc0-3fc00fff (prio -1000, i/o): bcm2835-v3d 3fe0-3fe000ff (prio -1000, i/o): bcm2835-sdramc 3fe05000-3fe050ff (prio 0, i/o): bcm2835-dma-chan15 4000-40ff (prio 0, i/o): bcm2836-control address-space shared 4 times: - bcm2835-dma-memory - bcm2835-fb-memory - bcm2835-property-memory - dwc2 - (prio 0, i/o): bcm2835-gpu -3fff (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff 4000-7fff (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff 7e00-7eff (prio 1, i/o): alias bcm2835-peripherals @bcm2835-peripherals -00ff 8000-bfff (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff c000- (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff address-space: bcm2835-mbox-memory -008f (prio 0, i/o): bcm2835-mbox 0010-001f (prio 0, i/o): bcm2835-fb 0080-008f (prio 0, i/o): bcm2835-property memory-region: ram -3fff (prio 0, ram): ram memory-region: bcm2835-peripherals 3f00-3fff (prio 1, i/o): bcm2835-peripherals 3f003000-3f00301f (prio 0, i/o):
[PATCH v4 3/3] memory: Have 'info mtree' remove duplicated Address Space information
Per Peter Maydell [*]: 'info mtree' monitor command 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. Similarly about how the FlatView are sorted using a GHashTable, sort the AddressSpace objects to remove the duplications (AS using the same root MemoryRegion). This drastically reduces the output of 'info mtree' on some boards. Before: $ (echo info mtree; echo q) \ | qemu-system-aarch64 -S -monitor stdio -M raspi3b \ | wc -l 423 After: $ (echo info mtree; echo q) \ | qemu-system-aarch64 -S -monitor stdio -M raspi3b \ | wc -l 108 (qemu) info mtree address-space: I/O - (prio 0, i/o): io address-space shared 9 times: - cpu-memory-0 - cpu-memory-1 - cpu-memory-2 - cpu-memory-3 - cpu-secure-memory-0 - cpu-secure-memory-1 - cpu-secure-memory-2 - cpu-secure-memory-3 - memory - (prio 0, i/o): system -3fff (prio 0, ram): ram 3f00-3fff (prio 1, i/o): bcm2835-peripherals 3f003000-3f00301f (prio 0, i/o): bcm2835-sys-timer 3f004000-3f004fff (prio -1000, i/o): bcm2835-txp 3f006000-3f006fff (prio 0, i/o): mphi 3f007000-3f007fff (prio 0, i/o): bcm2835-dma 3f00b200-3f00b3ff (prio 0, i/o): bcm2835-ic 3f00b400-3f00b43f (prio -1000, i/o): bcm2835-sp804 3f00b800-3f00bbff (prio 0, i/o): bcm2835-mbox 3f10-3f1001ff (prio 0, i/o): bcm2835-powermgt 3f101000-3f102fff (prio 0, i/o): bcm2835-cprman 3f104000-3f10400f (prio 0, i/o): bcm2835-rng 3f20-3f200fff (prio 0, i/o): bcm2835_gpio 3f201000-3f201fff (prio 0, i/o): pl011 3f202000-3f202fff (prio 0, i/o): bcm2835-sdhost 3f203000-3f2030ff (prio -1000, i/o): bcm2835-i2s 3f204000-3f20401f (prio -1000, i/o): bcm2835-spi0 3f205000-3f20501f (prio -1000, i/o): bcm2835-i2c0 3f20f000-3f20f07f (prio -1000, i/o): bcm2835-otp 3f212000-3f212007 (prio 0, i/o): bcm2835-thermal 3f214000-3f2140ff (prio -1000, i/o): bcm2835-spis 3f215000-3f2150ff (prio 0, i/o): bcm2835-aux 3f30-3f3000ff (prio 0, i/o): sdhci 3f60-3f6000ff (prio -1000, i/o): bcm2835-smi 3f804000-3f80401f (prio -1000, i/o): bcm2835-i2c1 3f805000-3f80501f (prio -1000, i/o): bcm2835-i2c2 3f90-3f907fff (prio -1000, i/o): bcm2835-dbus 3f91-3f917fff (prio -1000, i/o): bcm2835-ave0 3f98-3f990fff (prio 0, i/o): dwc2 3f98-3f980fff (prio 0, i/o): dwc2-io 3f981000-3f990fff (prio 0, i/o): dwc2-fifo 3fc0-3fc00fff (prio -1000, i/o): bcm2835-v3d 3fe0-3fe000ff (prio -1000, i/o): bcm2835-sdramc 3fe05000-3fe050ff (prio 0, i/o): bcm2835-dma-chan15 4000-40ff (prio 0, i/o): bcm2836-control address-space shared 4 times: - bcm2835-dma-memory - bcm2835-fb-memory - bcm2835-property-memory - dwc2 - (prio 0, i/o): bcm2835-gpu -3fff (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff 4000-7fff (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff 7e00-7eff (prio 1, i/o): alias bcm2835-peripherals @bcm2835-peripherals -00ff 8000-bfff (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff c000- (prio 0, ram): alias bcm2835-gpu-ram-alias[*] @ram -3fff address-space: bcm2835-mbox-memory -008f (prio 0, i/o): bcm2835-mbox 0010-001f (prio 0, i/o): bcm2835-fb 0080-008f (prio 0, i/o): bcm2835-property memory-region: ram -3fff (prio 0, ram): ram memory-region: bcm2835-peripherals 3f00-3fff (prio 1, i/o): bcm2835-peripherals 3f003000-3f00301f (prio 0, i/o): bcm2835-sys-timer 3f004000-3f004fff (prio -1000, i/o): bcm2835-txp 3f006000-3f006fff