[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] memory: simple memory tree printer
From: |
Blue Swirl |
Subject: |
[Qemu-devel] [PATCH] memory: simple memory tree printer |
Date: |
Sun, 11 Sep 2011 20:31:36 +0000 |
Add a monitor command 'info mtree' to show the memory hierarchy.
Signed-off-by: Blue Swirl <address@hidden>
---
Example output:
qemu-system-i386 -monitor stdio
QEMU 0.15.50 monitor - type 'help' for more information
(qemu) info mtree
memory
system addr 0000000000000000 off 0000000000000000 size 7fffffffffffffff
-pam-ram addr 00000000000ec000 off 0000000000000000 size 4000
-pam-ram addr 00000000000e8000 off 0000000000000000 size 4000
-pam-ram addr 00000000000e4000 off 0000000000000000 size 4000
-pam-ram addr 00000000000e0000 off 0000000000000000 size 4000
-pam-ram addr 00000000000dc000 off 0000000000000000 size 4000
-pam-ram addr 00000000000d8000 off 0000000000000000 size 4000
-pam-ram addr 00000000000d4000 off 0000000000000000 size 4000
-pam-ram addr 00000000000d0000 off 0000000000000000 size 4000
-pam-ram addr 00000000000cc000 off 0000000000000000 size 4000
-pam-rom addr 00000000000c8000 off 0000000000000000 size 4000
-pam-rom addr 00000000000c4000 off 0000000000000000 size 4000
-pam-rom addr 00000000000c0000 off 0000000000000000 size 4000
-pam-rom addr 00000000000f0000 off 0000000000000000 size 10000
-smram-region addr 00000000000a0000 off 0000000000000000 size 20000
-pci-hole64 addr 4000000000000000 off 0000000000000000 size 4000000000000000
-pci-hole addr 0000000008000000 off 0000000000000000 size f8000000
-ram-below-4g addr 0000000000000000 off 0000000000000000 size 8000000
-apic addr 00000000fee00000 off 0000000000000000 size 100000
I/O
io addr 0000000000000000 off 0000000000000000 size 10000
-e1000-io addr 000000000000c000 off 0000000000000000 size 40
-piix-bmdma-container addr 000000000000c040 off 0000000000000000 size 10
--bmdma addr 000000000000000c off 0000000000000000 size 4
--piix-bmdma addr 0000000000000008 off 0000000000000000 size 4
--bmdma addr 0000000000000004 off 0000000000000000 size 4
--piix-bmdma addr 0000000000000000 off 0000000000000000 size 4
-pci-conf-data addr 0000000000000cfc off 0000000000000000 size 4
-pci-conf-idx addr 0000000000000cf8 off 0000000000000000 size 4
Sparc
memory
system addr 0000000000000000 off 0000000000000000 size 7fffffffffffffff
-escc addr 0000000071100000 off 0000000000000000 size 8
-escc addr 0000000071000000 off 0000000000000000 size 8
-lance-mmio addr 0000000078c00000 off 0000000000000000 size 4
I/O
io addr 0000000000000000 off 0000000000000000 size 10000
Sparc64
memory
system addr 0000000000000000 off 0000000000000000 size 7fffffffffffffff
-pci-mmio addr 000001ff00000000 off 0000000000000000 size 100000000
--vga.chain4 addr 00000000000a0000 off 0000000000000000 size 10000
--isa-mmio addr 0000000003000000 off 0000000000000000 size 800000
--isa-mmio addr 0000000002000000 off 0000000000000000 size 1000000
--vga.rom addr 0000000001000000 off 0000000000000000 size 10000
--vga.vram addr 0000000000800000 off 0000000000000000 size 800000
--vga-lowmem addr 000001fe020a0000 off 0000000000000000 size 20000
-apb-pci-ioport addr 000001fe02000000 off 0000000000000000 size 10000
-apb-pci-config addr 000001fe01000000 off 0000000000000000 size 1000000
-apb-config addr 000001fe00000000 off 0000000000000000 size 10000
I/O
io addr 0000000000000000 off 0000000000000000 size 10000
-cmd646-bmdma addr 0000000000000700 off 0000000000000000 size 10
--cmd646-bmdma-ioport addr 000000000000000c off 0000000000000000 size 4
--cmd646-bmdma-bus addr 0000000000000008 off 0000000000000000 size 4
--cmd646-bmdma-ioport addr 0000000000000004 off 0000000000000000 size 4
--cmd646-bmdma-bus addr 0000000000000000 off 0000000000000000 size 4
-cmd646-cmd addr 0000000000000680 off 0000000000000000 size 4
-cmd646-data addr 0000000000000600 off 0000000000000000 size 8
-cmd646-cmd addr 0000000000000580 off 0000000000000000 size 4
-cmd646-data addr 0000000000000500 off 0000000000000000 size 8
-ne2000 addr 0000000000000400 off 0000000000000000 size 100
PPC
memory
system addr 00000000 off 00000000 size 7fffffffffffffff
-vga.chain4 addr 000a0000 off 00000000 size 10000
-macio addr 80880000 off 00000000 size 80000
--macio-nvram addr 00060000 off 00000000 size 20000
--pmac-ide addr 00020000 off 00000000 size 1000
--(null) addr 00016000 off 00000000 size 0
--escc-bar addr 00013000 off 00000000 size 40
--dbdma addr 00008000 off 00000000 size 1000
--heathrow-pic addr 00000000 off 00000000 size 1000
-vga.rom addr 80800000 off 00000000 size 10000
-vga.vram addr 80000000 off 00000000 size 800000
-vga-lowmem addr 800a0000 off 00000000 size 20000
-escc addr 80013000 off 00000000 size 40
-pci-data-idx addr fee00000 off 00000000 size 1000
-pci-conf-idx addr fec00000 off 00000000 size 1000
-isa-mmio addr fe000000 off 00000000 size 200000
I/O
io addr 00000000 off 00000000 size 10000
-cmd646-bmdma addr 00000700 off 00000000 size 10
--cmd646-bmdma-ioport addr 0000000c off 00000000 size 4
--cmd646-bmdma-bus addr 00000008 off 00000000 size 4
--cmd646-bmdma-ioport addr 00000004 off 00000000 size 4
--cmd646-bmdma-bus addr 00000000 off 00000000 size 4
-cmd646-cmd addr 00000680 off 00000000 size 4
-cmd646-data addr 00000600 off 00000000 size 8
-cmd646-cmd addr 00000580 off 00000000 size 4
-cmd646-data addr 00000500 off 00000000 size 8
-ne2000 addr 00000400 off 00000000 size 100
NB: (null) does not look OK.
Field 'offset' is always zero, maybe that is not interesting. Will it
become one day?
---
memory.c | 27 +++++++++++++++++++++++++++
memory.h | 2 ++
monitor.c | 7 +++++++
3 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/memory.c b/memory.c
index 57f0fa4..0bcef84 100644
--- a/memory.c
+++ b/memory.c
@@ -17,6 +17,7 @@
#include "bitops.h"
#include "kvm.h"
#include <assert.h>
+#include "monitor.h"
unsigned memory_region_transaction_depth = 0;
@@ -1253,3 +1254,29 @@ void set_system_io_map(MemoryRegion *mr)
address_space_io.root = mr;
memory_region_update_topology();
}
+
+static void mtree_print_mr(Monitor *mon, MemoryRegion *mr, unsigned int level)
+{
+ MemoryRegion *submr;
+ unsigned int i;
+
+ for (i = 0; i < level; i++) {
+ monitor_printf(mon, "-");
+ }
+ monitor_printf(mon, "%s addr " TARGET_FMT_plx " off " TARGET_FMT_plx
+ " size %" PRIx64 "\n",
+ mr->name, mr->addr, mr->offset, mr->size);
+
+ QTAILQ_FOREACH(submr, &mr->subregions, subregions_link) {
+ mtree_print_mr(mon, submr, level + 1);
+ }
+}
+
+void mtree_info(Monitor *mon)
+{
+ monitor_printf(mon, "memory\n");
+ mtree_print_mr(mon, address_space_memory.root, 0);
+
+ monitor_printf(mon, "I/O\n");
+ mtree_print_mr(mon, address_space_io.root, 0);
+}
diff --git a/memory.h b/memory.h
index 06b83ae..09d8e29 100644
--- a/memory.h
+++ b/memory.h
@@ -500,6 +500,8 @@ void memory_region_transaction_begin(void);
*/
void memory_region_transaction_commit(void);
+void mtree_info(Monitor *mon);
+
#endif
#endif
diff --git a/monitor.c b/monitor.c
index 03ae997..0302446 100644
--- a/monitor.c
+++ b/monitor.c
@@ -2968,6 +2968,13 @@ static const mon_cmd_t info_cmds[] = {
},
#endif
{
+ .name = "mtree",
+ .args_type = "",
+ .params = "",
+ .help = "show memory tree",
+ .mhandler.info = mtree_info,
+ },
+ {
.name = "jit",
.args_type = "",
.params = "",
--
1.6.2.4
0001-memory-simple-memory-tree-printer.patch
Description: Text Data
- [Qemu-devel] [PATCH] memory: simple memory tree printer,
Blue Swirl <=
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Richard Henderson, 2011/09/12
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Jan Kiszka, 2011/09/12
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Avi Kivity, 2011/09/12
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Jan Kiszka, 2011/09/12
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Richard Henderson, 2011/09/14
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Avi Kivity, 2011/09/14
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Richard Henderson, 2011/09/14
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Avi Kivity, 2011/09/14
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Richard Henderson, 2011/09/14
- Re: [Qemu-devel] [PATCH] memory: simple memory tree printer, Avi Kivity, 2011/09/14