[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 2/2] memory: hmp: dump flat view for 'info mtree'
From: |
Peter Xu |
Subject: |
[Qemu-devel] [PATCH v2 2/2] memory: hmp: dump flat view for 'info mtree' |
Date: |
Wed, 21 Dec 2016 15:58:57 +0800 |
Dumping flat view will be useful to debug the memory rendering logic,
also it'll be much easier with it to know what memory region is handling
what address range.
Signed-off-by: Peter Xu <address@hidden>
---
memory.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/memory.c b/memory.c
index 5dcc2e1..91341d3 100644
--- a/memory.c
+++ b/memory.c
@@ -2545,6 +2545,36 @@ static void mtree_print_mr(fprintf_function mon_printf,
void *f,
}
}
+static void mtree_print_flatview(fprintf_function p, void *f,
+ AddressSpace *as)
+{
+ FlatView *view = address_space_get_flatview(as);
+ FlatRange *range = &view->ranges[0];
+ MemoryRegion *mr;
+ int n = view->nr;
+
+ if (n <= 0) {
+ p(f, MTREE_INDENT "No rendered FlatView for "
+ "address space '%s'\n", as->name);
+ return;
+ }
+
+ p(f, MTREE_INDENT "FlatView (address space '%s'):\n", as->name);
+
+ while (n--) {
+ mr = range->mr;
+ p(f, MTREE_INDENT MTREE_INDENT TARGET_FMT_plx "-"
+ TARGET_FMT_plx " (prio %d, %c%c): %s\n",
+ int128_get64(range->addr.start),
+ int128_get64(range->addr.start) + MR_SIZE(range->addr.size),
+ mr->priority, MR_CHAR_RD(mr), MR_CHAR_WR(mr),
+ memory_region_name(mr));
+ range++;
+ }
+
+ flatview_unref(view);
+}
+
void mtree_info(fprintf_function mon_printf, void *f)
{
MemoryRegionListHead ml_head;
@@ -2556,6 +2586,7 @@ void mtree_info(fprintf_function mon_printf, void *f)
QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) {
mon_printf(f, "address-space: %s\n", as->name);
mtree_print_mr(mon_printf, f, as->root, 1, 0, &ml_head);
+ mtree_print_flatview(mon_printf, f, as);
mon_printf(f, "\n");
}
--
2.7.4