qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: David Hildenbrand
Subject: Re: [PATCH v4 3/3] memory: Have 'info mtree' remove duplicated Address Space information
Date: Wed, 1 Sep 2021 19:12:27 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

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
     0000000000000000-000000000000ffff (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
     0000000000000000-ffffffffffffffff (prio 0, i/o): system
       0000000000000000-000000003fffffff (prio 0, ram): ram
       000000003f000000-000000003fffffff (prio 1, i/o): bcm2835-peripherals
         000000003f003000-000000003f00301f (prio 0, i/o): bcm2835-sys-timer
         000000003f004000-000000003f004fff (prio -1000, i/o): bcm2835-txp
         000000003f006000-000000003f006fff (prio 0, i/o): mphi
         000000003f007000-000000003f007fff (prio 0, i/o): bcm2835-dma
         000000003f00b200-000000003f00b3ff (prio 0, i/o): bcm2835-ic
         000000003f00b400-000000003f00b43f (prio -1000, i/o): bcm2835-sp804
         000000003f00b800-000000003f00bbff (prio 0, i/o): bcm2835-mbox
         000000003f100000-000000003f1001ff (prio 0, i/o): bcm2835-powermgt
         000000003f101000-000000003f102fff (prio 0, i/o): bcm2835-cprman
         000000003f104000-000000003f10400f (prio 0, i/o): bcm2835-rng
         000000003f200000-000000003f200fff (prio 0, i/o): bcm2835_gpio
         000000003f201000-000000003f201fff (prio 0, i/o): pl011
         000000003f202000-000000003f202fff (prio 0, i/o): bcm2835-sdhost
         000000003f203000-000000003f2030ff (prio -1000, i/o): bcm2835-i2s
         000000003f204000-000000003f20401f (prio -1000, i/o): bcm2835-spi0
         000000003f205000-000000003f20501f (prio -1000, i/o): bcm2835-i2c0
         000000003f20f000-000000003f20f07f (prio -1000, i/o): bcm2835-otp
         000000003f212000-000000003f212007 (prio 0, i/o): bcm2835-thermal
         000000003f214000-000000003f2140ff (prio -1000, i/o): bcm2835-spis
         000000003f215000-000000003f2150ff (prio 0, i/o): bcm2835-aux
         000000003f300000-000000003f3000ff (prio 0, i/o): sdhci
         000000003f600000-000000003f6000ff (prio -1000, i/o): bcm2835-smi
         000000003f804000-000000003f80401f (prio -1000, i/o): bcm2835-i2c1
         000000003f805000-000000003f80501f (prio -1000, i/o): bcm2835-i2c2
         000000003f900000-000000003f907fff (prio -1000, i/o): bcm2835-dbus
         000000003f910000-000000003f917fff (prio -1000, i/o): bcm2835-ave0
         000000003f980000-000000003f990fff (prio 0, i/o): dwc2
           000000003f980000-000000003f980fff (prio 0, i/o): dwc2-io
           000000003f981000-000000003f990fff (prio 0, i/o): dwc2-fifo
         000000003fc00000-000000003fc00fff (prio -1000, i/o): bcm2835-v3d
         000000003fe00000-000000003fe000ff (prio -1000, i/o): bcm2835-sdramc
         000000003fe05000-000000003fe050ff (prio 0, i/o): bcm2835-dma-chan15
       0000000040000000-00000000400000ff (prio 0, i/o): bcm2836-control

   address-space shared 4 times:
     - bcm2835-dma-memory
     - bcm2835-fb-memory
     - bcm2835-property-memory
     - dwc2
     0000000000000000-00000000ffffffff (prio 0, i/o): bcm2835-gpu
       0000000000000000-000000003fffffff (prio 0, ram): alias 
bcm2835-gpu-ram-alias[*] @ram 0000000000000000-000000003fffffff
       0000000040000000-000000007fffffff (prio 0, ram): alias 
bcm2835-gpu-ram-alias[*] @ram 0000000000000000-000000003fffffff
       000000007e000000-000000007effffff (prio 1, i/o): alias 
bcm2835-peripherals @bcm2835-peripherals 0000000000000000-0000000000ffffff
       0000000080000000-00000000bfffffff (prio 0, ram): alias 
bcm2835-gpu-ram-alias[*] @ram 0000000000000000-000000003fffffff
       00000000c0000000-00000000ffffffff (prio 0, ram): alias 
bcm2835-gpu-ram-alias[*] @ram 0000000000000000-000000003fffffff

   address-space: bcm2835-mbox-memory
     0000000000000000-000000000000008f (prio 0, i/o): bcm2835-mbox
       0000000000000010-000000000000001f (prio 0, i/o): bcm2835-fb
       0000000000000080-000000000000008f (prio 0, i/o): bcm2835-property

   memory-region: ram
     0000000000000000-000000003fffffff (prio 0, ram): ram

   memory-region: bcm2835-peripherals
     000000003f000000-000000003fffffff (prio 1, i/o): bcm2835-peripherals
       000000003f003000-000000003f00301f (prio 0, i/o): bcm2835-sys-timer
       000000003f004000-000000003f004fff (prio -1000, i/o): bcm2835-txp
       000000003f006000-000000003f006fff (prio 0, i/o): mphi
       000000003f007000-000000003f007fff (prio 0, i/o): bcm2835-dma
       000000003f00b200-000000003f00b3ff (prio 0, i/o): bcm2835-ic
       000000003f00b400-000000003f00b43f (prio -1000, i/o): bcm2835-sp804
       000000003f00b800-000000003f00bbff (prio 0, i/o): bcm2835-mbox
       000000003f100000-000000003f1001ff (prio 0, i/o): bcm2835-powermgt
       000000003f101000-000000003f102fff (prio 0, i/o): bcm2835-cprman
       000000003f104000-000000003f10400f (prio 0, i/o): bcm2835-rng
       000000003f200000-000000003f200fff (prio 0, i/o): bcm2835_gpio
       000000003f201000-000000003f201fff (prio 0, i/o): pl011
       000000003f202000-000000003f202fff (prio 0, i/o): bcm2835-sdhost
       000000003f203000-000000003f2030ff (prio -1000, i/o): bcm2835-i2s
       000000003f204000-000000003f20401f (prio -1000, i/o): bcm2835-spi0
       000000003f205000-000000003f20501f (prio -1000, i/o): bcm2835-i2c0
       000000003f20f000-000000003f20f07f (prio -1000, i/o): bcm2835-otp
       000000003f212000-000000003f212007 (prio 0, i/o): bcm2835-thermal
       000000003f214000-000000003f2140ff (prio -1000, i/o): bcm2835-spis
       000000003f215000-000000003f2150ff (prio 0, i/o): bcm2835-aux
       000000003f300000-000000003f3000ff (prio 0, i/o): sdhci
       000000003f600000-000000003f6000ff (prio -1000, i/o): bcm2835-smi
       000000003f804000-000000003f80401f (prio -1000, i/o): bcm2835-i2c1
       000000003f805000-000000003f80501f (prio -1000, i/o): bcm2835-i2c2
       000000003f900000-000000003f907fff (prio -1000, i/o): bcm2835-dbus
       000000003f910000-000000003f917fff (prio -1000, i/o): bcm2835-ave0
       000000003f980000-000000003f990fff (prio 0, i/o): dwc2
         000000003f980000-000000003f980fff (prio 0, i/o): dwc2-io
         000000003f981000-000000003f990fff (prio 0, i/o): dwc2-fifo
       000000003fc00000-000000003fc00fff (prio -1000, i/o): bcm2835-v3d
       000000003fe00000-000000003fe000ff (prio -1000, i/o): bcm2835-sdramc
       000000003fe05000-000000003fe050ff (prio 0, i/o): bcm2835-dma-chan15

   (qemu) q

[*] https://www.mail-archive.com/qemu-devel@nongnu.org/msg829821.html

Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Pending question from David on v3:

   We can still distinguish from a completely empty AS, because we don't have 
an empty line here, correct?

checkpatch warning (81 chars):

   WARNING: line over 80 characters
   #86: FILE: softmmu/memory.c:3359:
   +                                  address_space_compare_name);
---
  softmmu/memory.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 70 insertions(+), 3 deletions(-)

diff --git a/softmmu/memory.c b/softmmu/memory.c
index 5be7d5e7412..9be2017bc38 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -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;

^ unnecessary

Reviewed-by: David Hildenbrand <david@redhat.com>

--
Thanks,

David / dhildenb




reply via email to

[Prev in Thread] Current Thread [Next in Thread]