hw: skip registration of outdated versioned machine types
authorDaniel P. Berrangé <berrange@redhat.com>
Thu, 20 Jun 2024 16:57:39 +0000 (17:57 +0100)
committerPhilippe Mathieu-Daudé <philmd@linaro.org>
Tue, 2 Jul 2024 04:58:37 +0000 (06:58 +0200)
This calls the MACHINE_VER_DELETION() macro in the machine type
registration method, so that when a versioned machine type reaches
the end of its life, it is no longer registered with QOM and thus
cannot be used.

The actual definition of the machine type should be deleted at
this point, but experience shows that can easily be forgotten.
By skipping registration the manual code deletion task can be
done at any later date.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240620165742.1711389-12-berrange@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
hw/arm/virt.c
hw/m68k/virt.c
hw/ppc/spapr.c
hw/s390x/s390-virtio-ccw.c
include/hw/i386/pc.h

index 02e13b4a3dbda10ea809feae4f7fd187688d6d45..b0c68d66a3456f60480fea84ef0c17c2e668b31e 100644 (file)
@@ -123,6 +123,7 @@ static void arm_virt_compat_set(MachineClass *mc)
     }; \
     static void MACHINE_VER_SYM(register, virt, __VA_ARGS__)(void) \
     { \
+        MACHINE_VER_DELETION(__VA_ARGS__); \
         type_register_static(&MACHINE_VER_SYM(info, virt, __VA_ARGS__)); \
     } \
     type_init(MACHINE_VER_SYM(register, virt, __VA_ARGS__));
index 37bb36b385bf38e2e5c62f014c0d66e2bd3c73bf..cda199af8faa16dd8ddee1825e6e77123e87bf9d 100644 (file)
@@ -356,6 +356,7 @@ type_init(virt_machine_register_types)
     }; \
     static void MACHINE_VER_SYM(register, virt, __VA_ARGS__)(void) \
     { \
+        MACHINE_VER_DELETION(__VA_ARGS__); \
         type_register_static(&MACHINE_VER_SYM(info, virt, __VA_ARGS__)); \
     } \
     type_init(MACHINE_VER_SYM(register, virt, __VA_ARGS__));
index 55268489d366d140f721a1a7d294aa1474b254e4..044e6a8d9d41b03043d1c186555c471915872de0 100644 (file)
@@ -4824,6 +4824,7 @@ static void spapr_machine_latest_class_options(MachineClass *mc)
     };                                                               \
     static void MACHINE_VER_SYM(register, spapr, __VA_ARGS__)(void)  \
     {                                                                \
+        MACHINE_VER_DELETION(__VA_ARGS__);                           \
         type_register(&MACHINE_VER_SYM(info, spapr, __VA_ARGS__));   \
     }                                                                \
     type_init(MACHINE_VER_SYM(register, spapr, __VA_ARGS__))
index c25dc3e13f153e4284fa463720701f090784f6d1..336cb8c6d4bd7a18699c926a90962ad233469138 100644 (file)
@@ -847,6 +847,7 @@ static const TypeInfo ccw_machine_info = {
     };                                                                        \
     static void MACHINE_VER_SYM(register, ccw, __VA_ARGS__)(void)             \
     {                                                                         \
+        MACHINE_VER_DELETION(__VA_ARGS__);                                    \
         type_register_static(&MACHINE_VER_SYM(info, ccw, __VA_ARGS__));       \
     }                                                                         \
     type_init(MACHINE_VER_SYM(register, ccw, __VA_ARGS__))
index 83d2e664983f7b072632c4e4c999e3fb604ecebf..4e55d7ef6ea91e440f98931d4e643a58d278f981 100644 (file)
@@ -340,6 +340,7 @@ extern const size_t pc_compat_2_3_len;
     }; \
     static void MACHINE_VER_SYM(register, namesym, __VA_ARGS__)(void) \
     { \
+        MACHINE_VER_DELETION(__VA_ARGS__); \
         type_register(&MACHINE_VER_SYM(info, namesym, __VA_ARGS__)); \
     } \
     type_init(MACHINE_VER_SYM(register, namesym, __VA_ARGS__));