[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 19/29] QMP: include CpuInstanceProperties into query_
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PULL 19/29] QMP: include CpuInstanceProperties into query_cpus output output |
Date: |
Thu, 11 May 2017 16:18:33 -0300 |
From: Igor Mammedov <address@hidden>
if board supports CpuInstanceProperties, report them for
each CPU thread listed. Main motivation for this is to
provide these properties introspection via QMP interface
for using in test cases to verify numa node to cpu mapping,
which includes not only boards that support cpu hotplug
and have this info in query-hotpluggable-cpus (pc/spapr)
but also for boards that don't not support hotpluggable-cpus
but support numa mapping (virt-arm).
Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>
---
qapi-schema.json | 6 +++++-
cpus.c | 10 ++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/qapi-schema.json b/qapi-schema.json
index f4eef33a44..c3051fb901 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1325,6 +1325,9 @@
#
# @thread_id: ID of the underlying host thread
#
+# @props: properties describing to which node/socket/core/thread
+# virtual CPU belongs to, provided if supported by board (since 2.10)
+#
# @arch: architecture of the cpu, which determines which additional fields
# will be listed (since 2.6)
#
@@ -1335,7 +1338,8 @@
##
{ 'union': 'CpuInfo',
'base': {'CPU': 'int', 'current': 'bool', 'halted': 'bool',
- 'qom_path': 'str', 'thread_id': 'int', 'arch': 'CpuInfoArch' },
+ 'qom_path': 'str', 'thread_id': 'int',
+ '*props': 'CpuInstanceProperties', 'arch': 'CpuInfoArch' },
'discriminator': 'arch',
'data': { 'x86': 'CpuInfoX86',
'sparc': 'CpuInfoSPARC',
diff --git a/cpus.c b/cpus.c
index 740b8dc3f8..4f91d25513 100644
--- a/cpus.c
+++ b/cpus.c
@@ -50,6 +50,7 @@
#include "qapi-event.h"
#include "hw/nmi.h"
#include "sysemu/replay.h"
+#include "hw/boards.h"
#ifdef CONFIG_LINUX
@@ -1859,6 +1860,8 @@ void list_cpus(FILE *f, fprintf_function cpu_fprintf,
const char *optarg)
CpuInfoList *qmp_query_cpus(Error **errp)
{
+ MachineState *ms = MACHINE(qdev_get_machine());
+ MachineClass *mc = MACHINE_GET_CLASS(ms);
CpuInfoList *head = NULL, *cur_item = NULL;
CPUState *cpu;
@@ -1909,6 +1912,13 @@ CpuInfoList *qmp_query_cpus(Error **errp)
#else
info->value->arch = CPU_INFO_ARCH_OTHER;
#endif
+ info->value->has_props = !!mc->cpu_index_to_instance_props;
+ if (info->value->has_props) {
+ CpuInstanceProperties *props;
+ props = g_malloc0(sizeof(*props));
+ *props = mc->cpu_index_to_instance_props(ms, cpu->cpu_index);
+ info->value->props = props;
+ }
/* XXX: waiting for the qapi to support GSList */
if (!cur_item) {
--
2.11.0.259.g40922b1
- [Qemu-devel] [PULL 09/29] numa: move source of default CPUs to NUMA node mapping into boards, (continued)
- [Qemu-devel] [PULL 09/29] numa: move source of default CPUs to NUMA node mapping into boards, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 11/29] pc: add node-id property to CPU, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 10/29] spapr: add node-id property to sPAPR core, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 12/29] virt-arm: add node-id property to CPU, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 13/29] numa: add check that board supports cpu_index to node mapping, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 14/29] numa: mirror cpu to node mapping in MachineState::possible_cpus, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 15/29] numa: do default mapping based on possible_cpus instead of node_cpu bitmaps, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 16/29] pc: get numa node mapping from possible_cpus instead of numa_get_node_for_cpu(), Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 17/29] spapr: get numa node mapping from possible_cpus instead of numa_get_node_for_cpu(), Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 18/29] virt-arm: get numa node mapping from possible_cpus instead of numa_get_node_for_cpu(), Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 19/29] QMP: include CpuInstanceProperties into query_cpus output output,
Eduardo Habkost <=
- [Qemu-devel] [PULL 20/29] tests: numa: add case for QMP command query-cpus, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 21/29] numa: remove no longer need numa_post_machine_init(), Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 22/29] machine: call machine init from wrapper, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 23/29] numa: use possible_cpus for not mapped CPUs check, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 24/29] numa: remove node_cpu bitmaps as they are no longer used, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 25/29] numa: add '-numa cpu, ...' option for property based node mapping, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 26/29] tests: check -numa node, cpu=props_list usecase, Eduardo Habkost, 2017/05/11
- [Qemu-devel] [PULL 27/29] migration/i386: Remove old non-softfloat 64bit FP support, Eduardo Habkost, 2017/05/11