diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 2d9df7c117..3ffb05f93e 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -464,13 +464,25 @@ static void pc_i440fx_machine_options(MachineClass *m) m->default_display = "std"; } +static void pc_i440fx_2_5_machine_options(MachineClass *m) +{ + pc_i440fx_machine_options(m); + m->alias = "pc"; + m->is_default = 1; +} + +DEFINE_I440FX_MACHINE(v2_5, "pc-i440fx-2.5", NULL, + pc_i440fx_2_5_machine_options); + + static void pc_i440fx_2_4_machine_options(MachineClass *m) { PCMachineClass *pcmc = PC_MACHINE_CLASS(m); - pc_i440fx_machine_options(m); + pc_i440fx_2_5_machine_options(m); + m->alias = NULL; + m->is_default = 0; pcmc->broken_reserved_end = true; - m->alias = "pc"; - m->is_default = 1; + SET_MACHINE_COMPAT(m, PC_COMPAT_2_4); } DEFINE_I440FX_MACHINE(v2_4, "pc-i440fx-2.4", NULL, diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 966eedb91f..1b7d3b644e 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -370,12 +370,22 @@ static void pc_q35_machine_options(MachineClass *m) m->no_tco = 0; } +static void pc_q35_2_5_machine_options(MachineClass *m) +{ + pc_q35_machine_options(m); + m->alias = "q35"; +} + +DEFINE_Q35_MACHINE(v2_5, "pc-q35-2.5", NULL, + pc_q35_2_5_machine_options); + static void pc_q35_2_4_machine_options(MachineClass *m) { PCMachineClass *pcmc = PC_MACHINE_CLASS(m); - pc_q35_machine_options(m); + pc_q35_2_5_machine_options(m); + m->alias = NULL; pcmc->broken_reserved_end = true; - m->alias = "q35"; + SET_MACHINE_COMPAT(m, PC_COMPAT_2_4); } DEFINE_Q35_MACHINE(v2_4, "pc-q35-2.4", NULL, diff --git a/include/hw/compat.h b/include/hw/compat.h index 94c8097d0c..095de5d12f 100644 --- a/include/hw/compat.h +++ b/include/hw/compat.h @@ -1,6 +1,9 @@ #ifndef HW_COMPAT_H #define HW_COMPAT_H +#define HW_COMPAT_2_4 \ + /* empty */ + #define HW_COMPAT_2_3 \ {\ .driver = "virtio-blk-pci",\ diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 3e002c9da6..6896328aa0 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -291,7 +291,11 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t); int e820_get_num_entries(void); bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); +#define PC_COMPAT_2_4 \ + HW_COMPAT_2_4 + #define PC_COMPAT_2_3 \ + PC_COMPAT_2_4 \ HW_COMPAT_2_3 \ {\ .driver = TYPE_X86_CPU,\