Message ID | 20230921121051.192355-2-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
Series | pc_piix: remove machines using a 128K BIOS | expand |
On 21/09/2023 14.10, Paolo Bonzini wrote: > These are the last users of the 128K SeaBIOS blob in the i440FX family. > Removing them allows us to drop PCI support from the 128K blob, > thus making it easier to update SeaBIOS to newer versions. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > docs/about/deprecated.rst | 8 ---- > docs/about/removed-features.rst | 2 +- > hw/i386/pc.c | 54 --------------------- > hw/i386/pc_piix.c | 73 ----------------------------- > tests/qtest/test-x86-cpuid-compat.c | 10 +--- > 5 files changed, 2 insertions(+), 145 deletions(-) > > diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst > index 694a165a54a..d59bcf36230 100644 > --- a/docs/about/deprecated.rst > +++ b/docs/about/deprecated.rst > @@ -261,14 +261,6 @@ deprecated; use the new name ``dtb-randomness`` instead. The new name > better reflects the way this property affects all random data within > the device tree blob, not just the ``kaslr-seed`` node. > > -``pc-i440fx-1.4`` up to ``pc-i440fx-1.7`` (since 7.0) > -''''''''''''''''''''''''''''''''''''''''''''''''''''' > - > -These old machine types are quite neglected nowadays and thus might have > -various pitfalls with regards to live migration. Use a newer machine type > -instead. While you're at it ... do we maybe want to start deprecating the next batch of machine types already? (Say pc-i440fx-2.0 up to pc-i440fx-2.2 maybe?) > - > Backend options > --------------- > > diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst > index 39468b6e926..56e078ad126 100644 > --- a/docs/about/removed-features.rst > +++ b/docs/about/removed-features.rst > @@ -730,7 +730,7 @@ mips ``fulong2e`` machine alias (removed in 6.0) > > This machine has been renamed ``fuloong2e``. > > -``pc-0.10`` up to ``pc-1.3`` (removed in 4.0 up to 6.0) > +``pc-0.10`` up to ``pc-1.7`` (removed in 4.0 up to 8.2) > ''''''''''''''''''''''''''''''''''''''''''''''''''''''' The names started to change with version 1.4, so it's "pc-i440fx-1.7" and not "pc-1.7". > These machine types were very old and likely could not be used for live > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index 54838c0c411..1c7898a2d34 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -359,60 +359,6 @@ GlobalProperty pc_compat_2_0[] = { > }; > const size_t pc_compat_2_0_len = G_N_ELEMENTS(pc_compat_2_0); > > -GlobalProperty pc_compat_1_7[] = { > - PC_CPU_MODEL_IDS("1.7.0") > - { TYPE_USB_DEVICE, "msos-desc", "no" }, > - { "PIIX4_PM", ACPI_PM_PROP_ACPI_PCIHP_BRIDGE, "off" }, > - { "hpet", HPET_INTCAP, "4" }, > -}; > -const size_t pc_compat_1_7_len = G_N_ELEMENTS(pc_compat_1_7); > - > -GlobalProperty pc_compat_1_6[] = { > - PC_CPU_MODEL_IDS("1.6.0") > - { "e1000", "mitigation", "off" }, > - { "qemu64-" TYPE_X86_CPU, "model", "2" }, > - { "qemu32-" TYPE_X86_CPU, "model", "3" }, > - { "i440FX-pcihost", "short_root_bus", "1" }, > - { "q35-pcihost", "short_root_bus", "1" }, > -}; > -const size_t pc_compat_1_6_len = G_N_ELEMENTS(pc_compat_1_6); > - > -GlobalProperty pc_compat_1_5[] = { > - PC_CPU_MODEL_IDS("1.5.0") > - { "Conroe-" TYPE_X86_CPU, "model", "2" }, > - { "Conroe-" TYPE_X86_CPU, "min-level", "2" }, > - { "Penryn-" TYPE_X86_CPU, "model", "2" }, > - { "Penryn-" TYPE_X86_CPU, "min-level", "2" }, > - { "Nehalem-" TYPE_X86_CPU, "model", "2" }, > - { "Nehalem-" TYPE_X86_CPU, "min-level", "2" }, > - { "virtio-net-pci", "any_layout", "off" }, > - { TYPE_X86_CPU, "pmu", "on" }, > - { "i440FX-pcihost", "short_root_bus", "0" }, > - { "q35-pcihost", "short_root_bus", "0" }, > -}; > -const size_t pc_compat_1_5_len = G_N_ELEMENTS(pc_compat_1_5); > - > -GlobalProperty pc_compat_1_4[] = { > - PC_CPU_MODEL_IDS("1.4.0") > - { "scsi-hd", "discard_granularity", "0" }, > - { "scsi-cd", "discard_granularity", "0" }, > - { "ide-hd", "discard_granularity", "0" }, > - { "ide-cd", "discard_granularity", "0" }, > - { "virtio-blk-pci", "discard_granularity", "0" }, > - /* DEV_NVECTORS_UNSPECIFIED as a uint32_t string: */ > - { "virtio-serial-pci", "vectors", "0xFFFFFFFF" }, > - { "virtio-net-pci", "ctrl_guest_offloads", "off" }, > - { "e1000", "romfile", "pxe-e1000.rom" }, > - { "ne2k_pci", "romfile", "pxe-ne2k_pci.rom" }, > - { "pcnet", "romfile", "pxe-pcnet.rom" }, > - { "rtl8139", "romfile", "pxe-rtl8139.rom" }, > - { "virtio-net-pci", "romfile", "pxe-virtio.rom" }, > - { "486-" TYPE_X86_CPU, "model", "0" }, > - { "n270" "-" TYPE_X86_CPU, "movbe", "off" }, > - { "Westmere" "-" TYPE_X86_CPU, "pclmulqdq", "off" }, > -}; > -const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4); It might be worth to have a closer look at the above settings in the various devices - maybe we can get rid of some compatibility handling code in the devices now, in case the properties are not set by other targets as well. Thomas
Il ven 22 set 2023, 08:43 Thomas Huth <thuth@redhat.com> ha scritto: > > While you're at it ... do we maybe want to start deprecating the next > batch > of machine types already? (Say pc-i440fx-2.0 up to pc-i440fx-2.2 maybe?) > It depends on the benefit. We would have to check the compat options that are not needed anymore, and whether they'd be something that is useful anyway for debugging. Also it would be useful to check if isapc can drop some of the compat code and realign itself to the 2.0 i440fx machine in terms of QEMU-specific features. Because of all this todo, I decided not to proceed further with deprecations. The 128k ROM on the other hand does provide immediate benefit. Paolo > > - > > Backend options > > --------------- > > > > diff --git a/docs/about/removed-features.rst > b/docs/about/removed-features.rst > > index 39468b6e926..56e078ad126 100644 > > --- a/docs/about/removed-features.rst > > +++ b/docs/about/removed-features.rst > > @@ -730,7 +730,7 @@ mips ``fulong2e`` machine alias (removed in 6.0) > > > > This machine has been renamed ``fuloong2e``. > > > > -``pc-0.10`` up to ``pc-1.3`` (removed in 4.0 up to 6.0) > > +``pc-0.10`` up to ``pc-1.7`` (removed in 4.0 up to 8.2) > > ''''''''''''''''''''''''''''''''''''''''''''''''''''''' > > The names started to change with version 1.4, so it's "pc-i440fx-1.7" and > not "pc-1.7". > > > These machine types were very old and likely could not be used for live > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > > index 54838c0c411..1c7898a2d34 100644 > > --- a/hw/i386/pc.c > > +++ b/hw/i386/pc.c > > @@ -359,60 +359,6 @@ GlobalProperty pc_compat_2_0[] = { > > }; > > const size_t pc_compat_2_0_len = G_N_ELEMENTS(pc_compat_2_0); > > > > -GlobalProperty pc_compat_1_7[] = { > > - PC_CPU_MODEL_IDS("1.7.0") > > - { TYPE_USB_DEVICE, "msos-desc", "no" }, > > - { "PIIX4_PM", ACPI_PM_PROP_ACPI_PCIHP_BRIDGE, "off" }, > > - { "hpet", HPET_INTCAP, "4" }, > > -}; > > -const size_t pc_compat_1_7_len = G_N_ELEMENTS(pc_compat_1_7); > > - > > -GlobalProperty pc_compat_1_6[] = { > > - PC_CPU_MODEL_IDS("1.6.0") > > - { "e1000", "mitigation", "off" }, > > - { "qemu64-" TYPE_X86_CPU, "model", "2" }, > > - { "qemu32-" TYPE_X86_CPU, "model", "3" }, > > - { "i440FX-pcihost", "short_root_bus", "1" }, > > - { "q35-pcihost", "short_root_bus", "1" }, > > -}; > > -const size_t pc_compat_1_6_len = G_N_ELEMENTS(pc_compat_1_6); > > - > > -GlobalProperty pc_compat_1_5[] = { > > - PC_CPU_MODEL_IDS("1.5.0") > > - { "Conroe-" TYPE_X86_CPU, "model", "2" }, > > - { "Conroe-" TYPE_X86_CPU, "min-level", "2" }, > > - { "Penryn-" TYPE_X86_CPU, "model", "2" }, > > - { "Penryn-" TYPE_X86_CPU, "min-level", "2" }, > > - { "Nehalem-" TYPE_X86_CPU, "model", "2" }, > > - { "Nehalem-" TYPE_X86_CPU, "min-level", "2" }, > > - { "virtio-net-pci", "any_layout", "off" }, > > - { TYPE_X86_CPU, "pmu", "on" }, > > - { "i440FX-pcihost", "short_root_bus", "0" }, > > - { "q35-pcihost", "short_root_bus", "0" }, > > -}; > > -const size_t pc_compat_1_5_len = G_N_ELEMENTS(pc_compat_1_5); > > - > > -GlobalProperty pc_compat_1_4[] = { > > - PC_CPU_MODEL_IDS("1.4.0") > > - { "scsi-hd", "discard_granularity", "0" }, > > - { "scsi-cd", "discard_granularity", "0" }, > > - { "ide-hd", "discard_granularity", "0" }, > > - { "ide-cd", "discard_granularity", "0" }, > > - { "virtio-blk-pci", "discard_granularity", "0" }, > > - /* DEV_NVECTORS_UNSPECIFIED as a uint32_t string: */ > > - { "virtio-serial-pci", "vectors", "0xFFFFFFFF" }, > > - { "virtio-net-pci", "ctrl_guest_offloads", "off" }, > > - { "e1000", "romfile", "pxe-e1000.rom" }, > > - { "ne2k_pci", "romfile", "pxe-ne2k_pci.rom" }, > > - { "pcnet", "romfile", "pxe-pcnet.rom" }, > > - { "rtl8139", "romfile", "pxe-rtl8139.rom" }, > > - { "virtio-net-pci", "romfile", "pxe-virtio.rom" }, > > - { "486-" TYPE_X86_CPU, "model", "0" }, > > - { "n270" "-" TYPE_X86_CPU, "movbe", "off" }, > > - { "Westmere" "-" TYPE_X86_CPU, "pclmulqdq", "off" }, > > -}; > > -const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4); > > It might be worth to have a closer look at the above settings in the > various > devices - maybe we can get rid of some compatibility handling code in the > devices now, in case the properties are not set by other targets as well. > > Thomas > >
On 22/09/2023 11.19, Paolo Bonzini wrote: > > > Il ven 22 set 2023, 08:43 Thomas Huth <thuth@redhat.com > <mailto:thuth@redhat.com>> ha scritto: > > > While you're at it ... do we maybe want to start deprecating the next batch > of machine types already? (Say pc-i440fx-2.0 up to pc-i440fx-2.2 maybe?) > > > It depends on the benefit. We would have to check the compat options that > are not needed anymore, and whether they'd be something that is useful > anyway for debugging. > > Also it would be useful to check if isapc can drop some of the compat code > and realign itself to the 2.0 i440fx machine in terms of QEMU-specific features. > > Because of all this todo, I decided not to proceed further with > deprecations. The 128k ROM on the other hand does provide immediate benefit. FWIW, when I was working on deprecating the old pc machine types, I originally wanted to stop with pc-1.3 (since I was most bugged by the different naming between "pc" and "pc-i44fx" in the help output). I then only put the 1.4 to 1.7 machine types on the deprecation list without anything in mind. Now this became useful for the 128k bios rework... so maybe we should continue deprecating older machine types for other future reworks that we don't envision yet. Thomas
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 694a165a54a..d59bcf36230 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -261,14 +261,6 @@ deprecated; use the new name ``dtb-randomness`` instead. The new name better reflects the way this property affects all random data within the device tree blob, not just the ``kaslr-seed`` node. -``pc-i440fx-1.4`` up to ``pc-i440fx-1.7`` (since 7.0) -''''''''''''''''''''''''''''''''''''''''''''''''''''' - -These old machine types are quite neglected nowadays and thus might have -various pitfalls with regards to live migration. Use a newer machine type -instead. - - Backend options --------------- diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst index 39468b6e926..56e078ad126 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -730,7 +730,7 @@ mips ``fulong2e`` machine alias (removed in 6.0) This machine has been renamed ``fuloong2e``. -``pc-0.10`` up to ``pc-1.3`` (removed in 4.0 up to 6.0) +``pc-0.10`` up to ``pc-1.7`` (removed in 4.0 up to 8.2) ''''''''''''''''''''''''''''''''''''''''''''''''''''''' These machine types were very old and likely could not be used for live diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 54838c0c411..1c7898a2d34 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -359,60 +359,6 @@ GlobalProperty pc_compat_2_0[] = { }; const size_t pc_compat_2_0_len = G_N_ELEMENTS(pc_compat_2_0); -GlobalProperty pc_compat_1_7[] = { - PC_CPU_MODEL_IDS("1.7.0") - { TYPE_USB_DEVICE, "msos-desc", "no" }, - { "PIIX4_PM", ACPI_PM_PROP_ACPI_PCIHP_BRIDGE, "off" }, - { "hpet", HPET_INTCAP, "4" }, -}; -const size_t pc_compat_1_7_len = G_N_ELEMENTS(pc_compat_1_7); - -GlobalProperty pc_compat_1_6[] = { - PC_CPU_MODEL_IDS("1.6.0") - { "e1000", "mitigation", "off" }, - { "qemu64-" TYPE_X86_CPU, "model", "2" }, - { "qemu32-" TYPE_X86_CPU, "model", "3" }, - { "i440FX-pcihost", "short_root_bus", "1" }, - { "q35-pcihost", "short_root_bus", "1" }, -}; -const size_t pc_compat_1_6_len = G_N_ELEMENTS(pc_compat_1_6); - -GlobalProperty pc_compat_1_5[] = { - PC_CPU_MODEL_IDS("1.5.0") - { "Conroe-" TYPE_X86_CPU, "model", "2" }, - { "Conroe-" TYPE_X86_CPU, "min-level", "2" }, - { "Penryn-" TYPE_X86_CPU, "model", "2" }, - { "Penryn-" TYPE_X86_CPU, "min-level", "2" }, - { "Nehalem-" TYPE_X86_CPU, "model", "2" }, - { "Nehalem-" TYPE_X86_CPU, "min-level", "2" }, - { "virtio-net-pci", "any_layout", "off" }, - { TYPE_X86_CPU, "pmu", "on" }, - { "i440FX-pcihost", "short_root_bus", "0" }, - { "q35-pcihost", "short_root_bus", "0" }, -}; -const size_t pc_compat_1_5_len = G_N_ELEMENTS(pc_compat_1_5); - -GlobalProperty pc_compat_1_4[] = { - PC_CPU_MODEL_IDS("1.4.0") - { "scsi-hd", "discard_granularity", "0" }, - { "scsi-cd", "discard_granularity", "0" }, - { "ide-hd", "discard_granularity", "0" }, - { "ide-cd", "discard_granularity", "0" }, - { "virtio-blk-pci", "discard_granularity", "0" }, - /* DEV_NVECTORS_UNSPECIFIED as a uint32_t string: */ - { "virtio-serial-pci", "vectors", "0xFFFFFFFF" }, - { "virtio-net-pci", "ctrl_guest_offloads", "off" }, - { "e1000", "romfile", "pxe-e1000.rom" }, - { "ne2k_pci", "romfile", "pxe-ne2k_pci.rom" }, - { "pcnet", "romfile", "pxe-pcnet.rom" }, - { "rtl8139", "romfile", "pxe-rtl8139.rom" }, - { "virtio-net-pci", "romfile", "pxe-virtio.rom" }, - { "486-" TYPE_X86_CPU, "model", "0" }, - { "n270" "-" TYPE_X86_CPU, "movbe", "off" }, - { "Westmere" "-" TYPE_X86_CPU, "pclmulqdq", "off" }, -}; -const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4); - GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled) { GSIState *s; diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 8321f36f97f..ff8654ecdab 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -423,27 +423,6 @@ static void pc_compat_2_0_fn(MachineState *machine) pc_compat_2_1_fn(machine); } -static void pc_compat_1_7_fn(MachineState *machine) -{ - pc_compat_2_0_fn(machine); - x86_cpu_change_kvm_default("x2apic", NULL); -} - -static void pc_compat_1_6_fn(MachineState *machine) -{ - pc_compat_1_7_fn(machine); -} - -static void pc_compat_1_5_fn(MachineState *machine) -{ - pc_compat_1_6_fn(machine); -} - -static void pc_compat_1_4_fn(MachineState *machine) -{ - pc_compat_1_5_fn(machine); -} - #ifdef CONFIG_ISAPC static void pc_init_isa(MachineState *machine) { @@ -876,58 +855,6 @@ static void pc_i440fx_2_0_machine_options(MachineClass *m) DEFINE_I440FX_MACHINE(v2_0, "pc-i440fx-2.0", pc_compat_2_0_fn, pc_i440fx_2_0_machine_options); -static void pc_i440fx_1_7_machine_options(MachineClass *m) -{ - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); - - pc_i440fx_2_0_machine_options(m); - m->hw_version = "1.7.0"; - m->default_machine_opts = NULL; - m->option_rom_has_mr = true; - m->deprecation_reason = "old and unattended - use a newer version instead"; - compat_props_add(m->compat_props, pc_compat_1_7, pc_compat_1_7_len); - pcmc->smbios_defaults = false; - pcmc->gigabyte_align = false; - pcmc->legacy_acpi_table_size = 6414; -} - -DEFINE_I440FX_MACHINE(v1_7, "pc-i440fx-1.7", pc_compat_1_7_fn, - pc_i440fx_1_7_machine_options); - -static void pc_i440fx_1_6_machine_options(MachineClass *m) -{ - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); - - pc_i440fx_1_7_machine_options(m); - m->hw_version = "1.6.0"; - m->rom_file_has_mr = false; - compat_props_add(m->compat_props, pc_compat_1_6, pc_compat_1_6_len); - pcmc->has_acpi_build = false; -} - -DEFINE_I440FX_MACHINE(v1_6, "pc-i440fx-1.6", pc_compat_1_6_fn, - pc_i440fx_1_6_machine_options); - -static void pc_i440fx_1_5_machine_options(MachineClass *m) -{ - pc_i440fx_1_6_machine_options(m); - m->hw_version = "1.5.0"; - compat_props_add(m->compat_props, pc_compat_1_5, pc_compat_1_5_len); -} - -DEFINE_I440FX_MACHINE(v1_5, "pc-i440fx-1.5", pc_compat_1_5_fn, - pc_i440fx_1_5_machine_options); - -static void pc_i440fx_1_4_machine_options(MachineClass *m) -{ - pc_i440fx_1_5_machine_options(m); - m->hw_version = "1.4.0"; - compat_props_add(m->compat_props, pc_compat_1_4, pc_compat_1_4_len); -} - -DEFINE_I440FX_MACHINE(v1_4, "pc-i440fx-1.4", pc_compat_1_4_fn, - pc_i440fx_1_4_machine_options); - #ifdef CONFIG_ISAPC static void isapc_machine_options(MachineClass *m) { diff --git a/tests/qtest/test-x86-cpuid-compat.c b/tests/qtest/test-x86-cpuid-compat.c index b39c9055b30..6a39454fce1 100644 --- a/tests/qtest/test-x86-cpuid-compat.c +++ b/tests/qtest/test-x86-cpuid-compat.c @@ -313,18 +313,10 @@ int main(int argc, char **argv) "xlevel2", 0); } /* - * QEMU 1.4.0 had auto-level enabled for CPUID[7], already, + * QEMU 2.3.0 had auto-level enabled for CPUID[7], already, * and the compat code that sets default level shouldn't * disable the auto-level=7 code: */ - if (qtest_has_machine("pc-i440fx-1.4")) { - add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-1.4/off", - "-machine pc-i440fx-1.4 -cpu Nehalem", - "level", 2); - add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-1.5/on", - "-machine pc-i440fx-1.4 -cpu Nehalem,smap=on", - "level", 7); - } if (qtest_has_machine("pc-i440fx-2.3")) { add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-2.3/off", "-machine pc-i440fx-2.3 -cpu Penryn",
These are the last users of the 128K SeaBIOS blob in the i440FX family. Removing them allows us to drop PCI support from the 128K blob, thus making it easier to update SeaBIOS to newer versions. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- docs/about/deprecated.rst | 8 ---- docs/about/removed-features.rst | 2 +- hw/i386/pc.c | 54 --------------------- hw/i386/pc_piix.c | 73 ----------------------------- tests/qtest/test-x86-cpuid-compat.c | 10 +--- 5 files changed, 2 insertions(+), 145 deletions(-)