summary refs log tree commit diff stats
path: root/hw/ipmi/isa_ipmi_kcs.c
diff options
context:
space:
mode:
authorCorey Minyard <corey@minyard.net>2025-04-04 10:47:07 -0500
committerCorey Minyard <corey@minyard.net>2025-04-11 10:50:01 -0500
commitd11d904c81a202c7bfb5b18f4ee248eb2fc9174f (patch)
tree9480bfa745a3a3d6e60ac00e82cdff89348cfeb5 /hw/ipmi/isa_ipmi_kcs.c
parent56c6e249b6988c1b6edc2dd34ebb0f1e570a1365 (diff)
downloadfocaccia-qemu-d11d904c81a202c7bfb5b18f4ee248eb2fc9174f.tar.gz
focaccia-qemu-d11d904c81a202c7bfb5b18f4ee248eb2fc9174f.zip
hw/ipmi: Move vmsd registration to device class
It's the right way to do it now, and it handles multiple instances
properly.  I need multiple instances for some testing I'm doing so this
is the right thing to do.

Tested by doing:

   (qemu) migrate -d exec:cat>filen.mig

before and after the fix, then:

   scripts/analyze-migration.py -d desc -f file1.mig >file1.json
   scripts/analyze-migration.py -d desc -f file2.mig >file2.json
   diff file1.json file2.json

with no differences.

Signed-off-by: Corey Minyard <corey@minyard.net>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Diffstat (limited to 'hw/ipmi/isa_ipmi_kcs.c')
-rw-r--r--hw/ipmi/isa_ipmi_kcs.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c
index d9ebdd5371..94bbe45d35 100644
--- a/hw/ipmi/isa_ipmi_kcs.c
+++ b/hw/ipmi/isa_ipmi_kcs.c
@@ -72,6 +72,10 @@ static bool vmstate_kcs_before_version2(void *opaque, int version)
     return version <= 1;
 }
 
+/*
+ * Version 1 had an incorrect name, it clashed with the BT IPMI
+ * device, so receive it, but transmit a different version.
+ */
 static const VMStateDescription vmstate_ISAIPMIKCSDevice = {
     .name = TYPE_IPMI_INTERFACE,
     .version_id = 2,
@@ -119,13 +123,6 @@ static void ipmi_isa_realize(DeviceState *dev, Error **errp)
     qdev_set_legacy_instance_id(dev, iik->kcs.io_base, iik->kcs.io_length);
 
     isa_register_ioport(isadev, &iik->kcs.io, iik->kcs.io_base);
-
-    /*
-     * Version 1 had an incorrect name, it clashed with the BT
-     * IPMI device, so receive it, but transmit a different
-     * version.
-     */
-    vmstate_register(NULL, 0, &vmstate_ISAIPMIKCSDevice, iik);
 }
 
 static void isa_ipmi_kcs_init(Object *obj)
@@ -154,6 +151,7 @@ static void isa_ipmi_kcs_class_init(ObjectClass *oc, void *data)
     AcpiDevAmlIfClass *adevc = ACPI_DEV_AML_IF_CLASS(oc);
 
     dc->realize = ipmi_isa_realize;
+    dc->vmsd = &vmstate_ISAIPMIKCSDevice;
     device_class_set_props(dc, ipmi_isa_properties);
 
     iic->get_backend_data = isa_ipmi_kcs_get_backend_data;