Message ID | 20230105145313.168489-11-pmorel@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: CPU Topology | expand |
On 05/01/2023 15.53, Pierre Morel wrote: > When the guest asks to change the polarity this change > is forwarded to the admin using QAPI. > The admin is supposed to take according decisions concerning > CPU provisioning. I somehow doubt that an average admin will monitor QEMU for such events ... so this rather should be handled by upper layers like libvirt one day? > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com> > --- > qapi/machine-target.json | 21 +++++++++++++++++++++ > hw/s390x/cpu-topology.c | 2 ++ > 2 files changed, 23 insertions(+) > > diff --git a/qapi/machine-target.json b/qapi/machine-target.json > index 927618a78f..10235cfb45 100644 > --- a/qapi/machine-target.json > +++ b/qapi/machine-target.json > @@ -437,3 +437,24 @@ > 'returns': ['S390CpuTopology'], > 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] } > } > + > +## > +# @POLARITY_CHANGE: I'd maybe rather call it CPU_POLARITY_CHANGE ... in case "polarity" is one day also used for some other devices. > +# > +# Emitted when the guest asks to change the polarity. > +# > +# @polarity: polarity specified by the guest Please elaborate: Where does the value come from (the PTF instruction)? Which values are possible? Thomas > +# > +# Since: 8.0 > +# > +# Example: > +# > +# <- { "event": "POLARITY_CHANGE", > +# "data": { "polarity": 0 }, > +# "timestamp": { "seconds": 1401385907, "microseconds": 422329 } } > +# > +## > +{ 'event': 'POLARITY_CHANGE', > + 'data': { 'polarity': 'int' }, > + 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM'] } > +} > diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c > index c3748654ff..45621387d5 100644 > --- a/hw/s390x/cpu-topology.c > +++ b/hw/s390x/cpu-topology.c > @@ -19,6 +19,7 @@ > #include "hw/s390x/s390-virtio-ccw.h" > #include "hw/s390x/cpu-topology.h" > #include "qapi/qapi-commands-machine-target.h" > +#include "qapi/qapi-events-machine-target.h" > #include "qapi/qmp/qdict.h" > #include "monitor/hmp.h" > #include "monitor/monitor.h" > @@ -128,6 +129,7 @@ void s390_topology_set_polarity(int polarity) > } > } > s390_cpu_topology_set(); > + qapi_event_send_polarity_change(polarity); > } > > /*
On 1/12/23 12:52, Thomas Huth wrote: > On 05/01/2023 15.53, Pierre Morel wrote: >> When the guest asks to change the polarity this change >> is forwarded to the admin using QAPI. >> The admin is supposed to take according decisions concerning >> CPU provisioning. > > I somehow doubt that an average admin will monitor QEMU for such events > ... so this rather should be handled by upper layers like libvirt one day? Yes. > >> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com> >> --- >> qapi/machine-target.json | 21 +++++++++++++++++++++ >> hw/s390x/cpu-topology.c | 2 ++ >> 2 files changed, 23 insertions(+) >> >> diff --git a/qapi/machine-target.json b/qapi/machine-target.json >> index 927618a78f..10235cfb45 100644 >> --- a/qapi/machine-target.json >> +++ b/qapi/machine-target.json >> @@ -437,3 +437,24 @@ >> 'returns': ['S390CpuTopology'], >> 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] } >> } >> + >> +## >> +# @POLARITY_CHANGE: > > I'd maybe rather call it CPU_POLARITY_CHANGE ... in case "polarity" is > one day also used for some other devices. OK, right. > >> +# >> +# Emitted when the guest asks to change the polarity. >> +# >> +# @polarity: polarity specified by the guest > > Please elaborate: Where does the value come from (the PTF instruction)? > Which values are possible? Yes what about: # @polarity: the guest can specify with the PTF instruction a horizontal # or a vertical polarity. # On horizontal polarity the host is expected to provision # the vCPU equally. # On vertical polarity the host can provision each vCPU # differently # The guest can get information on the provisioning with # the STSI(15) instruction. Regards, Pierre
On 18/01/2023 18.09, Pierre Morel wrote: > > On 1/12/23 12:52, Thomas Huth wrote: >> On 05/01/2023 15.53, Pierre Morel wrote: ...>>> +# >>> +# Emitted when the guest asks to change the polarity. >>> +# >>> +# @polarity: polarity specified by the guest >> >> Please elaborate: Where does the value come from (the PTF instruction)? >> Which values are possible? > > Yes what about: > > # @polarity: the guest can specify with the PTF instruction a horizontal > # or a vertical polarity. Maybe something like: "The guest can tell the host (via the PTF instruction) whether a CPU should have horizontal or vertical polarity." ? > # On horizontal polarity the host is expected to provision > # the vCPU equally. Maybe: "all vCPUs equally" ? Or: "each vCPU equally" ? > # On vertical polarity the host can provision each vCPU > # differently > # The guest can get information on the provisioning with > # the STSI(15) instruction. Thomas
On 1/20/23 12:56, Thomas Huth wrote: > On 18/01/2023 18.09, Pierre Morel wrote: >> >> On 1/12/23 12:52, Thomas Huth wrote: >>> On 05/01/2023 15.53, Pierre Morel wrote: > ...>>> +# OK >>>> +# Emitted when the guest asks to change the polarity. >>>> +# >>>> +# @polarity: polarity specified by the guest >>> >>> Please elaborate: Where does the value come from (the PTF >>> instruction)? Which values are possible? >> >> Yes what about: >> >> # @polarity: the guest can specify with the PTF instruction a horizontal >> # or a vertical polarity. > > Maybe something like: "The guest can tell the host (via the PTF > instruction) whether a CPU should have horizontal or vertical polarity." ? Yes thanks, much better. > >> # On horizontal polarity the host is expected to provision >> # the vCPU equally. > > Maybe: "all vCPUs equally" ? > Or: "each vCPU equally" ? yes, thx. > >> # On vertical polarity the host can provision each vCPU >> # differently >> # The guest can get information on the provisioning with >> # the STSI(15) instruction. > > Thomas > I make the changes. Regards, Pierre
diff --git a/qapi/machine-target.json b/qapi/machine-target.json index 927618a78f..10235cfb45 100644 --- a/qapi/machine-target.json +++ b/qapi/machine-target.json @@ -437,3 +437,24 @@ 'returns': ['S390CpuTopology'], 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] } } + +## +# @POLARITY_CHANGE: +# +# Emitted when the guest asks to change the polarity. +# +# @polarity: polarity specified by the guest +# +# Since: 8.0 +# +# Example: +# +# <- { "event": "POLARITY_CHANGE", +# "data": { "polarity": 0 }, +# "timestamp": { "seconds": 1401385907, "microseconds": 422329 } } +# +## +{ 'event': 'POLARITY_CHANGE', + 'data': { 'polarity': 'int' }, + 'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM'] } +} diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c index c3748654ff..45621387d5 100644 --- a/hw/s390x/cpu-topology.c +++ b/hw/s390x/cpu-topology.c @@ -19,6 +19,7 @@ #include "hw/s390x/s390-virtio-ccw.h" #include "hw/s390x/cpu-topology.h" #include "qapi/qapi-commands-machine-target.h" +#include "qapi/qapi-events-machine-target.h" #include "qapi/qmp/qdict.h" #include "monitor/hmp.h" #include "monitor/monitor.h" @@ -128,6 +129,7 @@ void s390_topology_set_polarity(int polarity) } } s390_cpu_topology_set(); + qapi_event_send_polarity_change(polarity); } /*
When the guest asks to change the polarity this change is forwarded to the admin using QAPI. The admin is supposed to take according decisions concerning CPU provisioning. Signed-off-by: Pierre Morel <pmorel@linux.ibm.com> --- qapi/machine-target.json | 21 +++++++++++++++++++++ hw/s390x/cpu-topology.c | 2 ++ 2 files changed, 23 insertions(+)