[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 05/10] numa: make hmp 'info numa' fetch numa nodes fr
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PULL 05/10] numa: make hmp 'info numa' fetch numa nodes from qmp_query_cpus() result |
Date: |
Mon, 5 Jun 2017 15:59:22 -0300 |
From: Igor Mammedov <address@hidden>
HMP command 'info numa' is the last external user that access
CPUState::numa_node field directly. In order to move it to CPU
classes that actually use it, eliminate direct access and use
an alternative approach by using result of qmp_query_cpus(),
which provides topology properties CPU threads are associated
with (including node-id).
Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>
---
monitor.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/monitor.c b/monitor.c
index 75e7cd26d0..1e63ace2d4 100644
--- a/monitor.c
+++ b/monitor.c
@@ -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);
}
--
2.11.0.259.g40922b1
- [Qemu-devel] [PULL 00/10] x86 and machine queue, 2017-06-05, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 01/10] pc: Use "min-[x]level" on compat_props, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 02/10] numa: consolidate cpu_preplug fixups/checks for pc/arm/spapr, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 03/10] numa: move default mapping init to machine, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 04/10] numa: make sure that all cpus have has_node_id set if numa is enabled, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 05/10] numa: make hmp 'info numa' fetch numa nodes from qmp_query_cpus() result,
Eduardo Habkost <=
- [Qemu-devel] [PULL 06/10] numa: move numa_node from CPUState into target specific classes, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 07/10] spapr: cleanup spapr_fixup_cpu_numa_dt() usage, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 09/10] qemu.py: Add QEMUMachine.exitcode() method, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 08/10] qemu.py: Don't set _popen=None on error/shutdown, Eduardo Habkost, 2017/06/05
- [Qemu-devel] [PULL 10/10] scripts: Test script to look for -device crashes, Eduardo Habkost, 2017/06/05
- Re: [Qemu-devel] [PULL 00/10] x86 and machine queue, 2017-06-05, Peter Maydell, 2017/06/06