This will be used by virtio 1.0 virtio-pci virtqueue migration backward compatibility.
Cc: David Gibson <da...@gibson.dropbear.id.au> Cc: Alexander Graf <ag...@suse.de> Cc: qemu-...@nongnu.org Signed-off-by: Jason Wang <jasow...@redhat.com> --- hw/ppc/spapr.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index a6f1947..7d5b0db 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1855,7 +1855,11 @@ static const TypeInfo spapr_machine_info = { }, }; +#define SPAPR_COMPAT_2_4 \ + HW_COMPAT_2_4 + #define SPAPR_COMPAT_2_3 \ + SPAPR_COMPAT_2_4 \ HW_COMPAT_2_3 \ {\ .driver = "spapr-pci-host-bridge",\ @@ -1876,8 +1880,13 @@ static const TypeInfo spapr_machine_info = { SPAPR_COMPAT_2_2 \ HW_COMPAT_2_1 +static void spapr_compat_2_4(Object *obj) +{ +} + static void spapr_compat_2_3(Object *obj) { + spapr_compat_2_4(obj); savevm_skip_section_footers(); global_state_set_optional(); } @@ -1892,6 +1901,12 @@ static void spapr_compat_2_1(Object *obj) spapr_compat_2_2(obj); } +static void spapr_machine_2_4_instance_init(Object *obj) +{ + spapr_compat_2_4(obj); + spapr_machine_initfn(obj); +} + static void spapr_machine_2_3_instance_init(Object *obj) { spapr_compat_2_3(obj); @@ -1972,18 +1987,38 @@ static const TypeInfo spapr_machine_2_3_info = { static void spapr_machine_2_4_class_init(ObjectClass *oc, void *data) { + static GlobalProperty compat_props[] = { + SPAPR_COMPAT_2_4 + { /* end of list */ } + }; MachineClass *mc = MACHINE_CLASS(oc); mc->name = "pseries-2.4"; mc->desc = "pSeries Logical Partition (PAPR compliant) v2.4"; - mc->alias = "pseries"; - mc->is_default = 1; + mc->compat_props = compat_props; } static const TypeInfo spapr_machine_2_4_info = { .name = TYPE_SPAPR_MACHINE "2.4", .parent = TYPE_SPAPR_MACHINE, .class_init = spapr_machine_2_4_class_init, + .instance_init = spapr_machine_2_4_instance_init, +}; + +static void spapr_machine_2_5_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + + mc->name = "pseries-2.5"; + mc->desc = "pSeries Logical Partition (PAPR compliant) v2.5"; + mc->alias = "pseries"; + mc->is_default = 1; +} + +static const TypeInfo spapr_machine_2_5_info = { + .name = TYPE_SPAPR_MACHINE "2.5", + .parent = TYPE_SPAPR_MACHINE, + .class_init = spapr_machine_2_5_class_init, }; static void spapr_machine_register_types(void) @@ -1993,6 +2028,7 @@ static void spapr_machine_register_types(void) type_register_static(&spapr_machine_2_2_info); type_register_static(&spapr_machine_2_3_info); type_register_static(&spapr_machine_2_4_info); + type_register_static(&spapr_machine_2_5_info); } type_init(spapr_machine_register_types) -- 2.1.4