Message ID | 20231005160155.1945588-11-nsg@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: CPU Topology | expand |
Nina Schoetterl-Glausch <nsg@linux.ibm.com> writes: > From: Pierre Morel <pmorel@linux.ibm.com> > > S390x provides two more topology attributes, entitlement and dedication. > > Let's add these CPU attributes to the QAPI command query-cpu-fast. > > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com> > Reviewed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> > Co-developed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> > Reviewed-by: Thomas Huth <thuth@redhat.com> > Signed-off-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> > --- > qapi/machine.json | 11 ++++++++++- > target/s390x/cpu.c | 9 +++++++++ > 2 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/qapi/machine.json b/qapi/machine.json > index 7aacd26af0..072a12d168 100644 > --- a/qapi/machine.json > +++ b/qapi/machine.json > @@ -57,9 +57,18 @@ > # > # @cpu-state: the virtual CPU's state > # > +# @dedicated: the virtual CPU's dedication (since 8.2) > +# > +# @entitlement: the virtual CPU's entitlement (since 8.2) > +# > # Since: 2.12 > ## > -{ 'struct': 'CpuInfoS390', 'data': { 'cpu-state': 'CpuS390State' } } > +{ 'struct': 'CpuInfoS390', > + 'data': { 'cpu-state': 'CpuS390State', > + '*dedicated': 'bool', > + '*entitlement': 'CpuS390Entitlement' > + } > +} A more common formatting is '*entitlement': 'CpuS390Entitlement' } } > > ## > # @CpuInfoFast: Acked-by: Markus Armbruster <armbru@redhat.com> [...]
diff --git a/qapi/machine.json b/qapi/machine.json index 7aacd26af0..072a12d168 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -57,9 +57,18 @@ # # @cpu-state: the virtual CPU's state # +# @dedicated: the virtual CPU's dedication (since 8.2) +# +# @entitlement: the virtual CPU's entitlement (since 8.2) +# # Since: 2.12 ## -{ 'struct': 'CpuInfoS390', 'data': { 'cpu-state': 'CpuS390State' } } +{ 'struct': 'CpuInfoS390', + 'data': { 'cpu-state': 'CpuS390State', + '*dedicated': 'bool', + '*entitlement': 'CpuS390Entitlement' + } +} ## # @CpuInfoFast: diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 74405beb51..5967e34a85 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -38,6 +38,7 @@ #ifndef CONFIG_USER_ONLY #include "sysemu/reset.h" #endif +#include "hw/s390x/cpu-topology.h" #define CR0_RESET 0xE0UL #define CR14_RESET 0xC2000000UL; @@ -146,6 +147,14 @@ static void s390_query_cpu_fast(CPUState *cpu, CpuInfoFast *value) S390CPU *s390_cpu = S390_CPU(cpu); value->u.s390x.cpu_state = s390_cpu->env.cpu_state; +#if !defined(CONFIG_USER_ONLY) + if (s390_has_topology()) { + value->u.s390x.has_dedicated = true; + value->u.s390x.dedicated = s390_cpu->env.dedicated; + value->u.s390x.has_entitlement = true; + value->u.s390x.entitlement = s390_cpu->env.entitlement; + } +#endif } /* S390CPUClass::reset() */