Use TYPE_RISCV_VIRT_MACHINE so the RISC-V virt QOM type does not collide with ARM virt in a combined qemu-system binary. 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/riscv/virt.c | 26 +++++++++++++------------- include/hw/riscv/virt.h | 5 ++++- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index d4b501802f6..d8a2fd7d468 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1134,6 +1134,7 @@ static void virt_machine_class_init(ObjectClass *oc, const void *data) HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc); mc->desc = "RISC-V VirtIO board"; + machine_class_set_name(mc, "virt"); mc->init = virt_machine_init; mc->max_cpus = VIRT_CPUS_MAX; mc->default_cpu_type = TYPE_RISCV_CPU_BASE; @@ -1196,21 +1197,20 @@ static void virt_machine_class_init(ObjectClass *oc, const void *data) "Enable IOMMU platform device"); } -static const TypeInfo virt_machine_typeinfo = { - .name = MACHINE_TYPE_NAME("virt"), - .parent = TYPE_MACHINE, - .class_init = virt_machine_class_init, - .instance_init = virt_machine_instance_init, - .instance_finalize = virt_machine_instance_finalize, - .instance_size = sizeof(RISCVVirtState), - .interfaces = (const InterfaceInfo[]) { - { TYPE_HOTPLUG_HANDLER }, - { } - }, -}; - static void virt_machine_init_register_types(void) { + const TypeInfo virt_machine_typeinfo = { + .name = TYPE_RISCV_VIRT_MACHINE, + .parent = TYPE_MACHINE, + .class_init = virt_machine_class_init, + .instance_init = virt_machine_instance_init, + .instance_finalize = virt_machine_instance_finalize, + .instance_size = sizeof(RISCVVirtState), + .interfaces = (const InterfaceInfo[]) { + { TYPE_HOTPLUG_HANDLER }, + { } + }, + }; type_register_static(&virt_machine_typeinfo); } diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index e516898f9ad..0f03e2546da 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -24,13 +24,16 @@ #include "hw/core/sysbus.h" #include "hw/block/flash.h" #include "hw/intc/riscv_imsic.h" +#include "qemu/target-info.h" #define VIRT_CPUS_MAX_BITS 9 #define VIRT_CPUS_MAX (1 << VIRT_CPUS_MAX_BITS) #define VIRT_SOCKETS_MAX_BITS 2 #define VIRT_SOCKETS_MAX (1 << VIRT_SOCKETS_MAX_BITS) -#define TYPE_RISCV_VIRT_MACHINE MACHINE_TYPE_NAME("virt") +#define TYPE_RISCV_VIRT_MACHINE \ + (target_combined_binary() ? MACHINE_TYPE_NAME("riscv-virt") : \ + MACHINE_TYPE_NAME("virt")) typedef struct RISCVVirtState RISCVVirtState; DECLARE_INSTANCE_CHECKER(RISCVVirtState, RISCV_VIRT_MACHINE, TYPE_RISCV_VIRT_MACHINE) -- 2.55.0.windows.3
