Add versioned virt machine started from QEMU 10.2
Signed-off-by: Bibo Mao <[email protected]>
---
hw/loongarch/virt.c | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index ed406e3410..afe5d02470 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -1371,9 +1371,41 @@ static void virt_class_init(ObjectClass *oc, const void
*data)
"The string may be up to 8 bytes in
size");
}
+#define DEFINE_VIRT_MACHINE_VERSION(latest, ...) \
+ static void MACHINE_VER_SYM(class_init, virt, __VA_ARGS__)( \
+ ObjectClass *oc, \
+ const void *data) \
+ { \
+ MachineClass *mc = MACHINE_CLASS(oc); \
+ MACHINE_VER_SYM(options, virt, __VA_ARGS__)(mc); \
+ mc->desc = "QEMU " MACHINE_VER_STR(__VA_ARGS__) " LoongArch Virtual
Machine"; \
+ MACHINE_VER_DEPRECATION(__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_LOONGARCH_VIRT_MACHINE, \
+ .class_init = MACHINE_VER_SYM(class_init, virt, __VA_ARGS__), \
+ }; \
+ 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__));
+
+#define DEFINE_VIRT_MACHINE_AS_LATEST(major, minor) \
+ DEFINE_VIRT_MACHINE_VERSION(true, major, minor)
+#define DEFINE_VIRT_MACHINE(major, minor) \
+ DEFINE_VIRT_MACHINE_VERSION(false, major, minor)
+
static const TypeInfo virt_machine_info = {
.name = TYPE_LOONGARCH_VIRT_MACHINE,
.parent = TYPE_MACHINE,
+ .abstract = true,
.instance_size = sizeof(LoongArchVirtMachineState),
.class_init = virt_class_init,
.instance_init = virt_initfn,
@@ -1389,3 +1421,8 @@ static void machvirt_machine_init(void)
}
type_init(machvirt_machine_init);
+
+static void virt_machine_10_2_options(MachineClass *mc)
+{
+}
+DEFINE_VIRT_MACHINE_AS_LATEST(10, 2)
--
2.39.3