Signed-off-by: Elena Ufimsteva <ufimts...@gmail.com> Signed-off-by: Wei Liu <wei.l...@citrix.com> Cc: Jan Beulich <jbeul...@suse.com> --- Changes in v2: 1. Use unsigned int for loop vars. 2. Use strlcpy. 3. Properly align output. --- xen/arch/x86/numa.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-)
diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c index 628a40a..3bbc975 100644 --- a/xen/arch/x86/numa.c +++ b/xen/arch/x86/numa.c @@ -363,10 +363,13 @@ EXPORT_SYMBOL(node_data); static void dump_numa(unsigned char key) { s_time_t now = NOW(); - int i; + unsigned int i, j, n; + int err; struct domain *d; struct page_info *page; unsigned int page_num_node[MAX_NUMNODES]; + uint64_t mem; + struct vnuma_info *vnuma; printk("'%c' pressed -> dumping numa info (now-0x%X:%08X)\n", key, (u32)(now>>32), (u32)now); @@ -408,6 +411,48 @@ static void dump_numa(unsigned char key) for_each_online_node ( i ) printk(" Node %u: %u\n", i, page_num_node[i]); + + if ( !d->vnuma ) + continue; + + vnuma = d->vnuma; + printk(" %u vnodes, %u vcpus:\n", vnuma->nr_vnodes, d->max_vcpus); + for ( i = 0; i < vnuma->nr_vnodes; i++ ) + { + err = snprintf(keyhandler_scratch, 12, "%3u", + vnuma->vnode_to_pnode[i]); + if ( err < 0 || vnuma->vnode_to_pnode[i] == NUMA_NO_NODE ) + strlcpy(keyhandler_scratch, "???", 3); + + printk(" vnode %3u - pnode %s\n", i, keyhandler_scratch); + for ( j = 0; j < vnuma->nr_vmemranges; j++ ) + { + if ( vnuma->vmemrange[j].nid == i ) + { + mem = vnuma->vmemrange[j].end - vnuma->vmemrange[j].start; + printk("%16"PRIu64" MB: %#016"PRIx64" - %#016"PRIx64"\n", + mem >> 20, + vnuma->vmemrange[j].start, + vnuma->vmemrange[j].end); + } + } + + printk(" vcpus: "); + for ( j = 0, n = 0; j < d->max_vcpus; j++ ) + { + if ( vnuma->vcpu_to_vnode[j] == i ) + { + if ( (n + 1) % 8 == 0 ) + printk("%3d\n", j); + else if ( !(n % 8) && n != 0 ) + printk("%17d ", j); + else + printk("%3d ", j); + n++; + } + } + printk("\n"); + } } rcu_read_unlock(&domlist_read_lock); -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel