Set TYPE_VIRT_MACHINE to MACHINE_TYPE_NAME("arm-virt") so ARM 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/arm/virt.c | 54 +++++++++++++++++++++++-------------------- include/hw/arm/virt.h | 5 +++- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 9d192515d85..ceb848ca386 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -121,23 +121,27 @@ static void arm_virt_compat_default_set(MachineClass *mc) MachineClass *mc = MACHINE_CLASS(oc); \ arm_virt_compat_default_set(mc); \ MACHINE_VER_SYM(options, virt, __VA_ARGS__)(mc); \ - mc->desc = "QEMU " MACHINE_VER_STR(__VA_ARGS__) " ARM Virtual Machine"; \ + mc->desc = "QEMU " MACHINE_VER_STR(__VA_ARGS__) \ + " ARM 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 = TYPE_VIRT_MACHINE, \ - .class_init = MACHINE_VER_SYM(class_init, virt, __VA_ARGS__), \ - .is_available = target_base_arm, \ - }; \ static void MACHINE_VER_SYM(register, virt, __VA_ARGS__)(void) \ { \ + const TypeInfo virt_machine_info = \ + { \ + .name = target_combined_binary() ? \ + MACHINE_VER_TYPE_NAME("arm-virt", __VA_ARGS__) : \ + MACHINE_VER_TYPE_NAME("virt", __VA_ARGS__), \ + .parent = TYPE_VIRT_MACHINE, \ + .class_init = MACHINE_VER_SYM(class_init, virt, __VA_ARGS__), \ + .is_available = target_base_arm, \ + }; \ 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__)); @@ -4417,24 +4421,24 @@ static void virt_instance_finalize(Object *obj) g_ptr_array_free(vms->smmuv3_devices, TRUE); } -static const TypeInfo virt_machine_info = { - .name = TYPE_VIRT_MACHINE, - .parent = TYPE_MACHINE, - .abstract = true, - .instance_size = sizeof(VirtMachineState), - .class_size = sizeof(VirtMachineClass), - .class_init = virt_machine_class_init, - .instance_init = virt_instance_init, - .instance_finalize = virt_instance_finalize, - .interfaces = (const InterfaceInfo[]) { - { TYPE_HOTPLUG_HANDLER }, - { } - }, - .is_available = target_base_arm, -}; - static void machvirt_machine_init(void) { + const TypeInfo virt_machine_info = { + .name = TYPE_VIRT_MACHINE, + .parent = TYPE_MACHINE, + .abstract = true, + .instance_size = sizeof(VirtMachineState), + .class_size = sizeof(VirtMachineClass), + .class_init = virt_machine_class_init, + .instance_init = virt_instance_init, + .instance_finalize = virt_instance_finalize, + .interfaces = (const InterfaceInfo[]) { + { TYPE_HOTPLUG_HANDLER }, + { } + }, + .is_available = target_base_arm, + }; + type_register_static(&virt_machine_info); } type_init(machvirt_machine_init); diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 22e66d1a113..971eb973618 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -32,6 +32,7 @@ #include "exec/hwaddr.h" #include "qemu/notify.h" +#include "qemu/target-info.h" #include "hw/core/boards.h" #include "hw/acpi/ghes.h" #include "hw/arm/boot.h" @@ -215,7 +216,9 @@ struct VirtMachineState { #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM) -#define TYPE_VIRT_MACHINE MACHINE_TYPE_NAME("virt") +#define TYPE_VIRT_MACHINE (target_combined_binary() ? \ + MACHINE_TYPE_NAME("arm-virt") : \ + MACHINE_TYPE_NAME("virt")) OBJECT_DECLARE_TYPE(VirtMachineState, VirtMachineClass, VIRT_MACHINE) void virt_acpi_setup(VirtMachineState *vms); -- 2.55.0.windows.3
