Set the parent and versioned QOM types to m68k-virt so M68K virt no longer collides with other virt-machine types in one process. Keep the -M / help / migration name as virt-* via machine_class_set_name().
Signed-off-by: Yonggang Luo <[email protected]> Reviewed-by: Marc-André Lureau <[email protected]> Reviewed-by: Zhao Liu <[email protected]> --- hw/m68k/virt.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index e52546e4fab..6f141488752 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -8,6 +8,7 @@ */ #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qemu/units.h" #include "qemu/guest-random.h" #include "exec/target_page.h" @@ -322,16 +323,19 @@ static void virt_machine_class_init(ObjectClass *oc, const void *data) mc->default_ram_id = "m68k_virt.ram"; } -static const TypeInfo virt_machine_info = { - .name = MACHINE_TYPE_NAME("virt"), - .parent = TYPE_MACHINE, - .abstract = true, - .class_init = virt_machine_class_init, - .is_available = target_m68k, -}; +#define TYPE_M68K_VIRT_MACHINE \ + (target_combined_binary() ? MACHINE_TYPE_NAME("m68k-virt") : \ + MACHINE_TYPE_NAME("virt")) static void virt_machine_register_types(void) { + const TypeInfo virt_machine_info = { + .name = TYPE_M68K_VIRT_MACHINE, + .parent = TYPE_MACHINE, + .abstract = true, + .class_init = virt_machine_class_init, + .is_available = target_m68k, + }; type_register_static(&virt_machine_info); } @@ -346,21 +350,24 @@ type_init(virt_machine_register_types) MACHINE_VER_SYM(options, virt, __VA_ARGS__)(mc); \ mc->desc = "QEMU " MACHINE_VER_STR(__VA_ARGS__) " M68K Virtual Machine"; \ MACHINE_VER_DEPRECATION(__VA_ARGS__); \ + machine_class_set_name(mc, "virt-" MACHINE_VER_STR(__VA_ARGS__)); \ if (latest) { \ mc->alias = "virt"; \ } \ } \ - static const TypeInfo MACHINE_VER_SYM(info, virt, __VA_ARGS__) = \ - { \ - .name = MACHINE_VER_TYPE_NAME("virt", __VA_ARGS__), \ - .parent = MACHINE_TYPE_NAME("virt"), \ - .class_init = MACHINE_VER_SYM(class_init, virt, __VA_ARGS__), \ - .is_available = target_m68k, \ - }; \ static void MACHINE_VER_SYM(register, virt, __VA_ARGS__)(void) \ { \ + const TypeInfo virt_machine_info = \ + { \ + .name = target_combined_binary() ? \ + MACHINE_VER_TYPE_NAME("m68k-virt", __VA_ARGS__) : \ + MACHINE_VER_TYPE_NAME("virt", __VA_ARGS__), \ + .parent = TYPE_M68K_VIRT_MACHINE, \ + .class_init = MACHINE_VER_SYM(class_init, virt, __VA_ARGS__), \ + .is_available = target_m68k, \ + }; \ MACHINE_VER_DELETION(__VA_ARGS__); \ - type_register_static(&MACHINE_VER_SYM(info, virt, __VA_ARGS__)); \ + type_register_static(&virt_machine_info); \ } \ type_init(MACHINE_VER_SYM(register, virt, __VA_ARGS__)); -- 2.55.0.windows.3
