From 1c5f29bbc8dac5f5d109a4aaa761e0dbb9eeea8d Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 3 Dec 2015 17:34:10 +1100 Subject: [PATCH] pseries: Rearrange versioned machine type code hw/ppc/spapr.c has a number of definitions related to the various versioned machine types ("pseries-2.1" .. "pseries-2.5") it defines. These are mostly arranged by type of function first, then machine version second, and it's not consistent about whether it goes in increasing or decreasing version order. This rearranges the code to keep all the definitions for a particular machine version together, and arrange then consistently in order most recent to least recent. This brings us closer to matching the way PC does things, and makes later cleanups easier to follow. Apart from adding some comments marking each section, this is a pure mechanical rearrangement with no semantic changes. Signed-off-by: David Gibson Reviewed-by: Thomas Huth Reviewed-by: Alexey Kardashevskiy --- hw/ppc/spapr.c | 204 ++++++++++++++++++++++++++----------------------- 1 file changed, 110 insertions(+), 94 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index a69856f55a..c126e10fa4 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2301,9 +2301,53 @@ static const TypeInfo spapr_machine_info = { }, }; +/* + * pseries-2.5 + */ +static void spapr_machine_2_5_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(oc); + + mc->desc = "pSeries Logical Partition (PAPR compliant) v2.5"; + mc->alias = "pseries"; + mc->is_default = 1; + smc->dr_lmb_enabled = true; +} + +static const TypeInfo spapr_machine_2_5_info = { + .name = MACHINE_TYPE_NAME("pseries-2.5"), + .parent = TYPE_SPAPR_MACHINE, + .class_init = spapr_machine_2_5_class_init, +}; + +/* + * pseries-2.4 + */ #define SPAPR_COMPAT_2_4 \ HW_COMPAT_2_4 +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->desc = "pSeries Logical Partition (PAPR compliant) v2.4"; + mc->compat_props = compat_props; +} + +static const TypeInfo spapr_machine_2_4_info = { + .name = MACHINE_TYPE_NAME("pseries-2.4"), + .parent = TYPE_SPAPR_MACHINE, + .class_init = spapr_machine_2_4_class_init, +}; + +/* + * pseries-2.3 + */ #define SPAPR_COMPAT_2_3 \ SPAPR_COMPAT_2_4 \ HW_COMPAT_2_3 \ @@ -2313,6 +2357,41 @@ static const TypeInfo spapr_machine_info = { .value = "off",\ }, +static void spapr_compat_2_3(Object *obj) +{ + savevm_skip_section_footers(); + global_state_set_optional(); +} + +static void spapr_machine_2_3_instance_init(Object *obj) +{ + spapr_compat_2_3(obj); + spapr_machine_initfn(obj); +} + +static void spapr_machine_2_3_class_init(ObjectClass *oc, void *data) +{ + static GlobalProperty compat_props[] = { + SPAPR_COMPAT_2_3 + { /* end of list */ } + }; + MachineClass *mc = MACHINE_CLASS(oc); + + mc->desc = "pSeries Logical Partition (PAPR compliant) v2.3"; + mc->compat_props = compat_props; +} + +static const TypeInfo spapr_machine_2_3_info = { + .name = MACHINE_TYPE_NAME("pseries-2.3"), + .parent = TYPE_SPAPR_MACHINE, + .class_init = spapr_machine_2_3_class_init, + .instance_init = spapr_machine_2_3_instance_init, +}; + +/* + * pseries-2.2 + */ + #define SPAPR_COMPAT_2_2 \ SPAPR_COMPAT_2_3 \ HW_COMPAT_2_2 \ @@ -2322,38 +2401,48 @@ static const TypeInfo spapr_machine_info = { .value = "0x20000000",\ }, -#define SPAPR_COMPAT_2_1 \ - SPAPR_COMPAT_2_2 \ - HW_COMPAT_2_1 - -static void spapr_compat_2_3(Object *obj) -{ - savevm_skip_section_footers(); - global_state_set_optional(); -} - static void spapr_compat_2_2(Object *obj) { spapr_compat_2_3(obj); } -static void spapr_compat_2_1(Object *obj) -{ - spapr_compat_2_2(obj); -} - -static void spapr_machine_2_3_instance_init(Object *obj) -{ - spapr_compat_2_3(obj); - spapr_machine_initfn(obj); -} - static void spapr_machine_2_2_instance_init(Object *obj) { spapr_compat_2_2(obj); spapr_machine_initfn(obj); } +static void spapr_machine_2_2_class_init(ObjectClass *oc, void *data) +{ + static GlobalProperty compat_props[] = { + SPAPR_COMPAT_2_2 + { /* end of list */ } + }; + MachineClass *mc = MACHINE_CLASS(oc); + + mc->desc = "pSeries Logical Partition (PAPR compliant) v2.2"; + mc->compat_props = compat_props; +} + +static const TypeInfo spapr_machine_2_2_info = { + .name = MACHINE_TYPE_NAME("pseries-2.2"), + .parent = TYPE_SPAPR_MACHINE, + .class_init = spapr_machine_2_2_class_init, + .instance_init = spapr_machine_2_2_instance_init, +}; + +/* + * pseries-2.1 + */ +#define SPAPR_COMPAT_2_1 \ + SPAPR_COMPAT_2_2 \ + HW_COMPAT_2_1 + +static void spapr_compat_2_1(Object *obj) +{ + spapr_compat_2_2(obj); +} + static void spapr_machine_2_1_instance_init(Object *obj) { spapr_compat_2_1(obj); @@ -2379,79 +2468,6 @@ static const TypeInfo spapr_machine_2_1_info = { .instance_init = spapr_machine_2_1_instance_init, }; -static void spapr_machine_2_2_class_init(ObjectClass *oc, void *data) -{ - static GlobalProperty compat_props[] = { - SPAPR_COMPAT_2_2 - { /* end of list */ } - }; - MachineClass *mc = MACHINE_CLASS(oc); - - mc->desc = "pSeries Logical Partition (PAPR compliant) v2.2"; - mc->compat_props = compat_props; -} - -static const TypeInfo spapr_machine_2_2_info = { - .name = MACHINE_TYPE_NAME("pseries-2.2"), - .parent = TYPE_SPAPR_MACHINE, - .class_init = spapr_machine_2_2_class_init, - .instance_init = spapr_machine_2_2_instance_init, -}; - -static void spapr_machine_2_3_class_init(ObjectClass *oc, void *data) -{ - static GlobalProperty compat_props[] = { - SPAPR_COMPAT_2_3 - { /* end of list */ } - }; - MachineClass *mc = MACHINE_CLASS(oc); - - mc->desc = "pSeries Logical Partition (PAPR compliant) v2.3"; - mc->compat_props = compat_props; -} - -static const TypeInfo spapr_machine_2_3_info = { - .name = MACHINE_TYPE_NAME("pseries-2.3"), - .parent = TYPE_SPAPR_MACHINE, - .class_init = spapr_machine_2_3_class_init, - .instance_init = spapr_machine_2_3_instance_init, -}; - -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->desc = "pSeries Logical Partition (PAPR compliant) v2.4"; - mc->compat_props = compat_props; -} - -static const TypeInfo spapr_machine_2_4_info = { - .name = MACHINE_TYPE_NAME("pseries-2.4"), - .parent = TYPE_SPAPR_MACHINE, - .class_init = spapr_machine_2_4_class_init, -}; - -static void spapr_machine_2_5_class_init(ObjectClass *oc, void *data) -{ - MachineClass *mc = MACHINE_CLASS(oc); - sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(oc); - - mc->desc = "pSeries Logical Partition (PAPR compliant) v2.5"; - mc->alias = "pseries"; - mc->is_default = 1; - smc->dr_lmb_enabled = true; -} - -static const TypeInfo spapr_machine_2_5_info = { - .name = MACHINE_TYPE_NAME("pseries-2.5"), - .parent = TYPE_SPAPR_MACHINE, - .class_init = spapr_machine_2_5_class_init, -}; - static void spapr_machine_register_types(void) { type_register_static(&spapr_machine_info);