|
@@ -1696,23 +1696,26 @@ static void hmp_info_mtree(Monitor *mon, const QDict *qdict)
|
|
|
static void hmp_info_numa(Monitor *mon, const QDict *qdict)
|
|
|
{
|
|
|
int i;
|
|
|
- CPUState *cpu;
|
|
|
uint64_t *node_mem;
|
|
|
+ CpuInfoList *cpu_list, *cpu;
|
|
|
|
|
|
+ cpu_list = qmp_query_cpus(&error_abort);
|
|
|
node_mem = g_new0(uint64_t, nb_numa_nodes);
|
|
|
query_numa_node_mem(node_mem);
|
|
|
monitor_printf(mon, "%d nodes\n", nb_numa_nodes);
|
|
|
for (i = 0; i < nb_numa_nodes; i++) {
|
|
|
monitor_printf(mon, "node %d cpus:", i);
|
|
|
- CPU_FOREACH(cpu) {
|
|
|
- if (cpu->numa_node == i) {
|
|
|
- monitor_printf(mon, " %d", cpu->cpu_index);
|
|
|
+ for (cpu = cpu_list; cpu; cpu = cpu->next) {
|
|
|
+ if (cpu->value->has_props && cpu->value->props->has_node_id &&
|
|
|
+ cpu->value->props->node_id == i) {
|
|
|
+ monitor_printf(mon, " %" PRIi64, cpu->value->CPU);
|
|
|
}
|
|
|
}
|
|
|
monitor_printf(mon, "\n");
|
|
|
monitor_printf(mon, "node %d size: %" PRId64 " MB\n", i,
|
|
|
node_mem[i] >> 20);
|
|
|
}
|
|
|
+ qapi_free_CpuInfoList(cpu_list);
|
|
|
g_free(node_mem);
|
|
|
}
|
|
|
|