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@xxxxxxxxxxxxx>
---
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);
}
/*