Message ID | 20220107160713.235918-1-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/i386: Add the possibility to disable the 'isapc' machine | expand |
On 1/7/22 17:07, Thomas Huth wrote: > We already have a CONFIG_ISAPC switch - but we're not using it yet. > Add some "#ifdefs" to make it possible to disable this machine now. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > hw/i386/pc_piix.c | 5 ++++- > tests/qtest/cdrom-test.c | 2 +- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > index 1999190276..5147e1ee74 100644 > --- a/hw/i386/pc_piix.c > +++ b/hw/i386/pc_piix.c > @@ -357,10 +357,12 @@ 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) > { > pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, TYPE_I440FX_PCI_DEVICE); > } > +#endif > > #ifdef CONFIG_XEN > static void pc_xen_hvm_init_pci(MachineState *machine) > @@ -916,6 +918,7 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id) > pci_config_set_revision(bridge_dev->config, pch_rev_id); > } > > +#ifdef CONFIG_ISAPC > static void isapc_machine_options(MachineClass *m) > { > PCMachineClass *pcmc = PC_MACHINE_CLASS(m); > @@ -935,7 +938,7 @@ static void isapc_machine_options(MachineClass *m) > > DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa, > isapc_machine_options); > - > +#endif > > #ifdef CONFIG_XEN > static void xenfv_4_2_machine_options(MachineClass *m) > diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c > index cfca24fa94..fdd889a487 100644 > --- a/tests/qtest/cdrom-test.c > +++ b/tests/qtest/cdrom-test.c > @@ -138,7 +138,7 @@ static void add_x86_tests(void) > * Unstable CI test under load > * See https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg05509.html > */ > - if (g_test_slow()) { > + if (g_test_slow() && qtest_has_machine("isapc")) { > qtest_add_data_func("cdrom/boot/isapc", "-M isapc " > "-drive if=ide,media=cdrom,file=", test_cdboot); > } Acked-by: Paolo Bonzini <pbonzini@redhat.com>
On 1/7/22 17:07, Thomas Huth wrote: > We already have a CONFIG_ISAPC switch - but we're not using it yet. > Add some "#ifdefs" to make it possible to disable this machine now. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > hw/i386/pc_piix.c | 5 ++++- > tests/qtest/cdrom-test.c | 2 +- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > index 1999190276..5147e1ee74 100644 > --- a/hw/i386/pc_piix.c > +++ b/hw/i386/pc_piix.c > @@ -357,10 +357,12 @@ 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) > { > pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, TYPE_I440FX_PCI_DEVICE); > } > +#endif > > #ifdef CONFIG_XEN > static void pc_xen_hvm_init_pci(MachineState *machine) > @@ -916,6 +918,7 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id) > pci_config_set_revision(bridge_dev->config, pch_rev_id); > } > > +#ifdef CONFIG_ISAPC > static void isapc_machine_options(MachineClass *m) > { > PCMachineClass *pcmc = PC_MACHINE_CLASS(m); > @@ -935,7 +938,7 @@ static void isapc_machine_options(MachineClass *m) > > DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa, > isapc_machine_options); > - > +#endif Wouldn't it be cleaner to extract the isapc machine to a new C unit (after renaming/declaring pc_init1 public)? Anyway this is what is done for Xen, so why not... Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
On 07/01/2022 19.54, Philippe Mathieu-Daudé wrote: > On 1/7/22 17:07, Thomas Huth wrote: >> We already have a CONFIG_ISAPC switch - but we're not using it yet. >> Add some "#ifdefs" to make it possible to disable this machine now. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> hw/i386/pc_piix.c | 5 ++++- >> tests/qtest/cdrom-test.c | 2 +- >> 2 files changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c >> index 1999190276..5147e1ee74 100644 >> --- a/hw/i386/pc_piix.c >> +++ b/hw/i386/pc_piix.c >> @@ -357,10 +357,12 @@ 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) >> { >> pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, TYPE_I440FX_PCI_DEVICE); >> } >> +#endif >> >> #ifdef CONFIG_XEN >> static void pc_xen_hvm_init_pci(MachineState *machine) >> @@ -916,6 +918,7 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id) >> pci_config_set_revision(bridge_dev->config, pch_rev_id); >> } >> >> +#ifdef CONFIG_ISAPC >> static void isapc_machine_options(MachineClass *m) >> { >> PCMachineClass *pcmc = PC_MACHINE_CLASS(m); >> @@ -935,7 +938,7 @@ static void isapc_machine_options(MachineClass *m) >> >> DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa, >> isapc_machine_options); >> - >> +#endif > > Wouldn't it be cleaner to extract the isapc machine to a new C unit > (after renaming/declaring pc_init1 public)? That would be cleaner, of course, but that would also mean a major refactoring: We could rearrange the code so that it is possible to compile a binary that has isapc, but not i440fx... but that likely means a complete rework of pc_piix.c so that the code that is common between i440fx and isapc needs to be moved into a separate file, too. And that's likely not worth the effort, I guess, since people rather want to compile without isapc than compiling without i440fx, I think. So let's go with this low-hanging fruit here for now, and keep the possible clean-up in mind for later. > Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Thanks! Thomas
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 1999190276..5147e1ee74 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -357,10 +357,12 @@ 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) { pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, TYPE_I440FX_PCI_DEVICE); } +#endif #ifdef CONFIG_XEN static void pc_xen_hvm_init_pci(MachineState *machine) @@ -916,6 +918,7 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id) pci_config_set_revision(bridge_dev->config, pch_rev_id); } +#ifdef CONFIG_ISAPC static void isapc_machine_options(MachineClass *m) { PCMachineClass *pcmc = PC_MACHINE_CLASS(m); @@ -935,7 +938,7 @@ static void isapc_machine_options(MachineClass *m) DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa, isapc_machine_options); - +#endif #ifdef CONFIG_XEN static void xenfv_4_2_machine_options(MachineClass *m) diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c index cfca24fa94..fdd889a487 100644 --- a/tests/qtest/cdrom-test.c +++ b/tests/qtest/cdrom-test.c @@ -138,7 +138,7 @@ static void add_x86_tests(void) * Unstable CI test under load * See https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg05509.html */ - if (g_test_slow()) { + if (g_test_slow() && qtest_has_machine("isapc")) { qtest_add_data_func("cdrom/boot/isapc", "-M isapc " "-drive if=ide,media=cdrom,file=", test_cdboot); }
We already have a CONFIG_ISAPC switch - but we're not using it yet. Add some "#ifdefs" to make it possible to disable this machine now. Signed-off-by: Thomas Huth <thuth@redhat.com> --- hw/i386/pc_piix.c | 5 ++++- tests/qtest/cdrom-test.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-)