Re: [PATCH v4 3/3] memory: Have 'info mtree' remove duplicated Address Space information

2021-09-04 Thread Richard Henderson

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

2021-09-01 Thread David Hildenbrand

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

2021-09-01 Thread Philippe Mathieu-Daudé
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