On 31/03/2025 16.00, Shalini Chellathurai Saroja wrote:
Register Control-Program Identification data with the live
migration infrastructure.
Signed-off-by: Shalini Chellathurai Saroja <shal...@linux.ibm.com>
Reviewed-by: Nina Schoetterl-Glausch <n...@linux.ibm.com>
---
hw/s390x/sclpcpi.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/hw/s390x/sclpcpi.c b/hw/s390x/sclpcpi.c
index 969c15e43d..0b1b5293ea 100644
--- a/hw/s390x/sclpcpi.c
+++ b/hw/s390x/sclpcpi.c
@@ -62,6 +62,7 @@
#include "hw/s390x/event-facility.h"
#include "hw/s390x/ebcdic.h"
#include "qapi/qapi-visit-machine.h"
+#include "migration/vmstate.h"
typedef struct Data {
uint8_t id_format;
@@ -133,12 +134,38 @@ static void get_control_program_id(Object *obj, Visitor
*v,
visit_type_S390ControlProgramId(v, name, &cpi, errp);
}
+static const VMStateDescription vmstate_control_program_id = {
+ .name = "s390_control_program_id",
+ .version_id = 0,
+ .minimum_version_id = 0,
Nit: As long as it is 0, I think you could simply omit the
minimum_version_id field here.
+ .fields = (const VMStateField[]) {
+ VMSTATE_UINT8_ARRAY(system_type, ControlProgramId, 8),
+ VMSTATE_UINT8_ARRAY(system_name, ControlProgramId, 8),
+ VMSTATE_UINT64(system_level, ControlProgramId),
+ VMSTATE_UINT8_ARRAY(sysplex_name, ControlProgramId, 8),
+ VMSTATE_UINT64(timestamp, ControlProgramId),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
+static const VMStateDescription vmstate_sclpcpi = {
+ .name = "s390_sclpcpi",
+ .version_id = 0,
+ .minimum_version_id = 0,
dito
+ .fields = (const VMStateField[]) {
+ VMSTATE_STRUCT(cpi, SCLPEvent, 0, vmstate_control_program_id,
+ ControlProgramId),
+ VMSTATE_END_OF_LIST()
+ }
+};
Thomas