On Wed, May 10, 2017 at 01:29:55PM +0200, Igor Mammedov wrote: > 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 <imamm...@redhat.com> > Reviewed-by: Eric Blake <ebl...@redhat.com>
Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> > --- > v2: > * fix checkpatch error and remove extra space after = (Eric) > --- > cpus.c | 10 ++++++++++ > qapi-schema.json | 6 +++++- > 2 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/cpus.c b/cpus.c > index 740b8dc..4f91d25 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) { > diff --git a/qapi-schema.json b/qapi-schema.json > index bf48873..f1bcebe 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', -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature