diff mbox series

[v16,10/11] qapi/s390x/cpu topology: CPU_POLARIZATION_CHANGE qapi event

Message ID 20230222142105.84700-11-pmorel@linux.ibm.com
State New
Headers show
Series s390x: CPU Topology | expand

Commit Message

Pierre Morel Feb. 22, 2023, 2:21 p.m. UTC
When the guest asks to change the polarization 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 | 34 ++++++++++++++++++++++++++++++++++
 hw/s390x/cpu-topology.c  |  2 ++
 2 files changed, 36 insertions(+)

Comments

Thomas Huth Feb. 27, 2023, 1:32 p.m. UTC | #1
On 22/02/2023 15.21, Pierre Morel wrote:
> When the guest asks to change the polarization this change
> is forwarded to the admin using QAPI.
> The admin is supposed to take according decisions concerning
> CPU provisioning.

I still find it weird talking about "the admin" here. I don't think any 
human will monitor this event to take action on it. Maybe rather talk about 
the "upper layer" (libvirt) or whatever you have in mind to monitor this event?

> diff --git a/qapi/machine-target.json b/qapi/machine-target.json
> index baa9d273cf..e7a9049c1f 100644
> --- a/qapi/machine-target.json
> +++ b/qapi/machine-target.json
> @@ -389,3 +389,37 @@
>     'features': [ 'unstable' ],
>     'if': { 'all': [ 'TARGET_S390X' ] }
>   }
> +
> +##
> +# @CPU_POLARIZATION_CHANGE:
> +#
> +# Emitted when the guest asks to change the polarization.
> +#
> +# @polarization: polarization specified by the guest
> +#
> +# Features:
> +# @unstable: This command may still be modified.
> +#
> +# The guest can tell the host (via the PTF instruction) whether the
> +# CPUs should be provisioned using horizontal or vertical polarization.
> +#
> +# On horizontal polarization the host is expected to provision all vCPUs
> +# equally.
> +# On vertical polarization the host can provision each vCPU differently.
> +# The guest will get information on the details of the provisioning
> +# the next time it uses the STSI(15) instruction.
> +#
> +# Since: 8.0
> +#
> +# Example:
> +#
> +# <- { "event": "CPU_POLARIZATION_CHANGE",
> +#      "data": { "polarization": 0 },
> +#      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
> +#

I'd remove the final empty line.

> +##
> +{ 'event': 'CPU_POLARIZATION_CHANGE',
> +  'data': { 'polarization': 'CpuS390Polarization' },
> +  'features': [ 'unstable' ],
> +  'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] }
> +}

  Thomas
Pierre Morel Feb. 27, 2023, 2:14 p.m. UTC | #2
On 2/27/23 14:32, Thomas Huth wrote:
> On 22/02/2023 15.21, Pierre Morel wrote:
>> When the guest asks to change the polarization this change
>> is forwarded to the admin using QAPI.
>> The admin is supposed to take according decisions concerning
>> CPU provisioning.
>
> I still find it weird talking about "the admin" here. I don't think 
> any human will monitor this event to take action on it. Maybe rather 
> talk about the "upper layer" (libvirt) or whatever you have in mind to 
> monitor this event?


hum, I already read this somewhere :)

Yes I change this.


>
>> diff --git a/qapi/machine-target.json b/qapi/machine-target.json
>> index baa9d273cf..e7a9049c1f 100644
>> --- a/qapi/machine-target.json
>> +++ b/qapi/machine-target.json
>> @@ -389,3 +389,37 @@
>>     'features': [ 'unstable' ],
>>     'if': { 'all': [ 'TARGET_S390X' ] }
>>   }
>> +
>> +##
>> +# @CPU_POLARIZATION_CHANGE:
>> +#
>> +# Emitted when the guest asks to change the polarization.
>> +#
>> +# @polarization: polarization specified by the guest
>> +#
>> +# Features:
>> +# @unstable: This command may still be modified.
>> +#
>> +# The guest can tell the host (via the PTF instruction) whether the
>> +# CPUs should be provisioned using horizontal or vertical polarization.
>> +#
>> +# On horizontal polarization the host is expected to provision all 
>> vCPUs
>> +# equally.
>> +# On vertical polarization the host can provision each vCPU 
>> differently.
>> +# The guest will get information on the details of the provisioning
>> +# the next time it uses the STSI(15) instruction.
>> +#
>> +# Since: 8.0
>> +#
>> +# Example:
>> +#
>> +# <- { "event": "CPU_POLARIZATION_CHANGE",
>> +#      "data": { "polarization": 0 },
>> +#      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
>> +#
>
> I'd remove the final empty line.


OK


>
>> +##
>> +{ 'event': 'CPU_POLARIZATION_CHANGE',
>> +  'data': { 'polarization': 'CpuS390Polarization' },
>> +  'features': [ 'unstable' ],
>> +  'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] }
>> +}
>
>  Thomas
>
Thanks,

Regards,

Pierre
diff mbox series

Patch

diff --git a/qapi/machine-target.json b/qapi/machine-target.json
index baa9d273cf..e7a9049c1f 100644
--- a/qapi/machine-target.json
+++ b/qapi/machine-target.json
@@ -389,3 +389,37 @@ 
   'features': [ 'unstable' ],
   'if': { 'all': [ 'TARGET_S390X' ] }
 }
+
+##
+# @CPU_POLARIZATION_CHANGE:
+#
+# Emitted when the guest asks to change the polarization.
+#
+# @polarization: polarization specified by the guest
+#
+# Features:
+# @unstable: This command may still be modified.
+#
+# The guest can tell the host (via the PTF instruction) whether the
+# CPUs should be provisioned using horizontal or vertical polarization.
+#
+# On horizontal polarization the host is expected to provision all vCPUs
+# equally.
+# On vertical polarization the host can provision each vCPU differently.
+# The guest will get information on the details of the provisioning
+# the next time it uses the STSI(15) instruction.
+#
+# Since: 8.0
+#
+# Example:
+#
+# <- { "event": "CPU_POLARIZATION_CHANGE",
+#      "data": { "polarization": 0 },
+#      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
+#
+##
+{ 'event': 'CPU_POLARIZATION_CHANGE',
+  'data': { 'polarization': 'CpuS390Polarization' },
+  'features': [ 'unstable' ],
+  'if': { 'all': [ 'TARGET_S390X', 'CONFIG_KVM' ] }
+}
diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c
index 3a7eb441a3..d498873c80 100644
--- a/hw/s390x/cpu-topology.c
+++ b/hw/s390x/cpu-topology.c
@@ -21,6 +21,7 @@ 
 #include "qapi/qapi-types-machine-target.h"
 #include "qapi/qapi-types-machine.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"
@@ -167,6 +168,7 @@  void s390_handle_ptf(S390CPU *cpu, uint8_t r1, uintptr_t ra)
             s390_topology.polarization = fc;
             s390_cpu_topology_set_changed(true);
             s390_topology_set_cpus_entitlement(fc);
+            qapi_event_send_cpu_polarization_change(fc);
             setcc(cpu, 0);
         }
         break;