提交 ca230ff3 编写于 作者: V Viktor Mihajlovski 提交者: Cornelia Huck

qmp: add architecture specific cpu data for query-cpus-fast

The s390 CPU state can be retrieved without interrupting the
VM execution. Extendend the CpuInfoFast union with architecture
specific data and an implementation for s390.

Return data looks like this:
 [
   {"thread-id":64301,"props":{"core-id":0},
    "arch":"s390","cpu-state":"operating",
    "qom-path":"/machine/unattached/device[0]","cpu-index":0},
   {"thread-id":64302,"props":{"core-id":1},
    "arch":"s390","cpu-state":"operating",
    "qom-path":"/machine/unattached/device[1]","cpu-index":1}
]
Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Reviewed-by: NCornelia Huck <cohuck@redhat.com>
Reviewed-by: NEric Blake <eblake@redhat.com>
Message-Id: <1518797321-28356-4-git-send-email-mihajlov@linux.vnet.ibm.com>
Signed-off-by: NCornelia Huck <cohuck@redhat.com>
上级 ce74ee3d
......@@ -2166,6 +2166,10 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp)
MachineClass *mc = MACHINE_GET_CLASS(ms);
CpuInfoFastList *head = NULL, *cur_item = NULL;
CPUState *cpu;
#if defined(TARGET_S390X)
S390CPU *s390_cpu;
CPUS390XState *env;
#endif
CPU_FOREACH(cpu) {
CpuInfoFastList *info = g_malloc0(sizeof(*info));
......@@ -2183,6 +2187,12 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp)
info->value->props = props;
}
#if defined(TARGET_S390X)
s390_cpu = S390_CPU(cpu);
env = &s390_cpu->env;
info->value->arch = CPU_INFO_ARCH_S390;
info->value->u.s390.cpu_state = env->cpu_state;
#endif
if (!cur_item) {
head = cur_item = info;
} else {
......
......@@ -408,7 +408,7 @@
# @CpuInfoArch:
#
# An enumeration of cpu types that enable additional information during
# @query-cpus.
# @query-cpus and @query-cpus-fast.
#
# @s390: since 2.12
#
......@@ -604,12 +604,24 @@
# @props: properties describing to which node/socket/core/thread
# virtual CPU belongs to, provided if supported by board
#
# @arch: architecture of the cpu, which determines which additional fields
# will be listed
#
# Since: 2.12
#
##
{ 'struct': 'CpuInfoFast',
'data': {'cpu-index': 'int', 'qom-path': 'str',
'thread-id': 'int', '*props': 'CpuInstanceProperties' } }
{ 'union': 'CpuInfoFast',
'base': {'cpu-index': 'int', 'qom-path': 'str',
'thread-id': 'int', '*props': 'CpuInstanceProperties',
'arch': 'CpuInfoArch' },
'discriminator': 'arch',
'data': { 'x86': 'CpuInfoOther',
'sparc': 'CpuInfoOther',
'ppc': 'CpuInfoOther',
'mips': 'CpuInfoOther',
'tricore': 'CpuInfoOther',
's390': 'CpuInfoS390',
'other': 'CpuInfoOther' } }
##
# @query-cpus-fast:
......@@ -620,9 +632,6 @@
#
# Returns: list of @CpuInfoFast
#
# Notes: The CPU architecture name is not returned by query-cpus-fast.
# Use query-target to retrieve that information.
#
# Since: 2.12
#
# Example:
......@@ -637,6 +646,7 @@
# "socket-id": 0
# },
# "qom-path": "/machine/unattached/device[0]",
# "arch":"x86",
# "cpu-index": 0
# },
# {
......@@ -647,6 +657,7 @@
# "socket-id": 1
# },
# "qom-path": "/machine/unattached/device[2]",
# "arch":"x86",
# "cpu-index": 1
# }
# ]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册