On Tue, 2023-04-25 at 18:14 +0200, Pierre Morel wrote: > The query-cpu-polarization qmp command returns the current > CPU polarization of the machine. > > Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> > --- > qapi/machine-target.json | 30 ++++++++++++++++++++++++++++++ > hw/s390x/cpu-topology.c | 14 ++++++++++++++ > 2 files changed, 44 insertions(+) > > diff --git a/qapi/machine-target.json b/qapi/machine-target.json > index ffde2e9cbd..8eb05755cd 100644 > --- a/qapi/machine-target.json > +++ b/qapi/machine-target.json > @@ -4,6 +4,7 @@ > # This work is licensed under the terms of the GNU GPL, version 2 or later. > # See the COPYING file in the top-level directory. > > +{ 'include': 'common.json' } Why do you need this? > { 'include': 'machine-common.json' } > > ## > @@ -424,3 +425,32 @@ > 'features': [ 'unstable' ], > 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] } > } > + > +## > +# @CpuPolarizationInfo: > +# > +# The result of a cpu polarization > +# > +# @polarization: the CPU polarization > +# > +# Since: 2.8 2.8? > +## > +{ 'struct': 'CpuPolarizationInfo', > + 'data': { 'polarization': 'CpuS390Polarization' }, > + 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] } > +} > + > +## > +# @query-cpu-polarization: > +# > +# Features: > +# @unstable: This command may still be modified. > +# > +# Returns: the machine polarization > +# > +# Since: 8.1 > +## > +{ 'command': 'query-cpu-polarization', 'returns': 'CpuPolarizationInfo', Do you need the struct or could you use CpuS390Polarization directly here? The struct allows for more flexibility in the future, I can't imagine a reason why it'd be necessary, but I'm not opposed. > + 'features': [ 'unstable' ], > + 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] } > +} > diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c > index e8b140d623..d440e8a3c6 100644 > --- a/hw/s390x/cpu-topology.c > +++ b/hw/s390x/cpu-topology.c > @@ -18,6 +18,7 @@ > #include "hw/s390x/cpu-topology.h" > #include "qapi/qapi-commands-machine-target.h" > #include "qapi/qapi-events-machine-target.h" > +#include "qapi/type-helpers.h" What do you need this include for? > > /* > * s390_topology is used to keep the topology information. > @@ -468,3 +469,16 @@ void qmp_set_cpu_topology(uint16_t core, > has_drawer, drawer, has_entitlement, entitlement, > has_dedicated, dedicated, errp); > } > + > +CpuPolarizationInfo *qmp_query_cpu_polarization(Error **errp) > +{ > + CpuPolarizationInfo *info = g_new0(CpuPolarizationInfo, 1); > + > + if (s390_topology.vertical_polarization) { > + info->polarization = S390_CPU_POLARIZATION_VERTICAL; > + } else { > + info->polarization = S390_CPU_POLARIZATION_HORIZONTAL; > + } > + > + return info; > +}