Skip to content

Commit

Permalink
memory: hmp: add "-f" for "info mtree"
Browse files Browse the repository at this point in the history
Adding one more option "-f" for "info mtree" to dump the flat views of
all the address spaces.

This 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.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <1484556005-29701-3-git-send-email-peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
xzpeter authored and bonzini committed Jan 27, 2017
1 parent 4e83190 commit 57bb40c
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 6 deletions.
6 changes: 3 additions & 3 deletions hmp-commands-info.hx
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,9 @@ ETEXI

{
.name = "mtree",
.args_type = "",
.params = "",
.help = "show memory tree",
.args_type = "flatview:-f",
.params = "[-f]",
.help = "show memory tree (-f: dump flat view for address spaces)",
.cmd = hmp_info_mtree,
},

Expand Down
2 changes: 1 addition & 1 deletion include/exec/memory.h
Original file line number Diff line number Diff line change
Expand Up @@ -1250,7 +1250,7 @@ void memory_global_dirty_log_start(void);
*/
void memory_global_dirty_log_stop(void);

void mtree_info(fprintf_function mon_printf, void *f);
void mtree_info(fprintf_function mon_printf, void *f, bool flatview);

/**
* memory_region_dispatch_read: perform a read directly to the specified
Expand Down
41 changes: 40 additions & 1 deletion memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -2564,12 +2564,51 @@ static void mtree_print_mr(fprintf_function mon_printf, void *f,
}
}

void mtree_info(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);
flatview_unref(view);
return;
}

while (n--) {
mr = range->mr;
p(f, MTREE_INDENT TARGET_FMT_plx "-"
TARGET_FMT_plx " (prio %d, %s): %s\n",
int128_get64(range->addr.start),
int128_get64(range->addr.start) + MR_SIZE(range->addr.size),
mr->priority,
memory_region_type(mr),
memory_region_name(mr));
range++;
}

flatview_unref(view);
}

void mtree_info(fprintf_function mon_printf, void *f, bool flatview)
{
MemoryRegionListHead ml_head;
MemoryRegionList *ml, *ml2;
AddressSpace *as;

if (flatview) {
QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) {
mon_printf(f, "address-space (flat view): %s\n", as->name);
mtree_print_flatview(mon_printf, f, as);
mon_printf(f, "\n");
}
return;
}

QTAILQ_INIT(&ml_head);

QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) {
Expand Down
4 changes: 3 additions & 1 deletion monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -1529,7 +1529,9 @@ static void hmp_boot_set(Monitor *mon, const QDict *qdict)

static void hmp_info_mtree(Monitor *mon, const QDict *qdict)
{
mtree_info((fprintf_function)monitor_printf, mon);
bool flatview = qdict_get_try_bool(qdict, "flatview", false);

mtree_info((fprintf_function)monitor_printf, mon, flatview);
}

static void hmp_info_numa(Monitor *mon, const QDict *qdict)
Expand Down

0 comments on commit 57bb40c

Please sign in to comment.