diff mbox series

[RFC,6/6] hw/i386: deprecate the "isapc" machine

Message ID 20171108022828.7242-7-f4bug@amsat.org
State New
Headers show
Series generic way to deprecate machines | expand

Commit Message

Philippe Mathieu-Daudé Nov. 8, 2017, 2:28 a.m. UTC
Deprecated since 2.9.0, guests should be able to use "pc" instead.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/i386/pc_piix.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Philippe Mathieu-Daudé Nov. 8, 2017, 3:29 a.m. UTC | #1
On 11/07/2017 11:28 PM, Philippe Mathieu-Daudé wrote:
> Deprecated since 2.9.0, guests should be able to use "pc" instead.

I forgot to add Paolo's comment:

"but firmware code paths would be different, do we care?"

> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  hw/i386/pc_piix.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index c462b702ff..df4669c6d3 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -1114,6 +1114,7 @@ static void isapc_machine_options(MachineClass *m)
>      pcmc->smbios_legacy_mode = true;
>      pcmc->has_reserved_memory = false;
>      m->default_cpu_type = X86_CPU_TYPE_NAME("486");
> +    m->deprecated_reason = "Use the \"pc\" machine instead";
>  }
>  
>  DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,
>
Daniel P. Berrangé Nov. 8, 2017, 9:09 a.m. UTC | #2
On Tue, Nov 07, 2017 at 11:28:28PM -0300, Philippe Mathieu-Daudé wrote:
> Deprecated since 2.9.0, guests should be able to use "pc" instead.

Isn't isapc important to allow QEMU to old operating systems that
predate the PCI era. I do recall seeing some messages about specific
cases where you cannot use the 'pc' machine type and we suggested
used of 'isapc' instead, but can't remember the exact details..

I know that's not a typical usecase for modern cloud / data center
virt, but it is interesting for usage of QEMU as a archeology tool,
so I'm loathe to see this removed unless it is demonstrably causing
an unacceptable maint burden to keep it.

> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  hw/i386/pc_piix.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index c462b702ff..df4669c6d3 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -1114,6 +1114,7 @@ static void isapc_machine_options(MachineClass *m)
>      pcmc->smbios_legacy_mode = true;
>      pcmc->has_reserved_memory = false;
>      m->default_cpu_type = X86_CPU_TYPE_NAME("486");
> +    m->deprecated_reason = "Use the \"pc\" machine instead";
>  }
>  
>  DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,

Regards,
Daniel
Gerd Hoffmann Nov. 8, 2017, 9:44 a.m. UTC | #3
On Wed, Nov 08, 2017 at 09:09:00AM +0000, Daniel P. Berrange wrote:
> On Tue, Nov 07, 2017 at 11:28:28PM -0300, Philippe Mathieu-Daudé wrote:
> > Deprecated since 2.9.0, guests should be able to use "pc" instead.
> 
> Isn't isapc important to allow QEMU to old operating systems that
> predate the PCI era.

They should work fine.  The early pci chipsets like the piix4 have
built-in backward compatibility.  The IDE controller can be driven by
simply accessing the isa ide ports.  Likewise vga.  You can plug in ne2k
(we have both isa and pci variants) for ethernet and sb16 (isa too) for
sound.

That should make guests which don't know anything about pci happy.

> I do recall seeing some messages about specific
> cases where you cannot use the 'pc' machine type and we suggested
> used of 'isapc' instead, but can't remember the exact details..

I'd like to see such use cases where isapc is actually required.

> I know that's not a typical usecase for modern cloud / data center
> virt, but it is interesting for usage of QEMU as a archeology tool,
> so I'm loathe to see this removed unless it is demonstrably causing
> an unacceptable maint burden to keep it.

Well, nobody maintains it.  Nobody tests it.

From a firmware point of view it *is* quite different from pc.  isapc
has no rom shadowing, so firmware init code paths are different.  isapc
has no resource management, so isa-vga maps the vesa 2.0 framebuffer at
a hardcoded address instead of placing it in a pci bar and the vgabios
has to know where it is.

So there is a non-zero chance that things break by accident.  IIRC we
even had a qemu release with broken isapc in the past ...

cheers,
  Gerd
Thomas Huth Nov. 8, 2017, 10:05 a.m. UTC | #4
On 08.11.2017 10:44, Gerd Hoffmann wrote:
> On Wed, Nov 08, 2017 at 09:09:00AM +0000, Daniel P. Berrange wrote:
>> On Tue, Nov 07, 2017 at 11:28:28PM -0300, Philippe Mathieu-Daudé wrote:
>>> Deprecated since 2.9.0, guests should be able to use "pc" instead.
>>
>> Isn't isapc important to allow QEMU to old operating systems that
>> predate the PCI era.
> 
> They should work fine.  The early pci chipsets like the piix4 have
> built-in backward compatibility.  The IDE controller can be driven by
> simply accessing the isa ide ports.  Likewise vga.  You can plug in ne2k
> (we have both isa and pci variants) for ethernet and sb16 (isa too) for
> sound.
> 
> That should make guests which don't know anything about pci happy.
> 
>> I do recall seeing some messages about specific
>> cases where you cannot use the 'pc' machine type and we suggested
>> used of 'isapc' instead, but can't remember the exact details..
> 
> I'd like to see such use cases where isapc is actually required.

Just my 0.02 €: I like the idea of keeping isapc. It's a way to remind
the x86 folks that there are also architectures without PCI / APIC /
ACPI. And this helped to spot some bugs in some HMP commands in the past
already.

> Well, nobody maintains it.  Nobody tests it.

At least we've got the automatic boot-serial-test now that checks that
the machine is not completely broken.

 Thomas
diff mbox series

Patch

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index c462b702ff..df4669c6d3 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -1114,6 +1114,7 @@  static void isapc_machine_options(MachineClass *m)
     pcmc->smbios_legacy_mode = true;
     pcmc->has_reserved_memory = false;
     m->default_cpu_type = X86_CPU_TYPE_NAME("486");
+    m->deprecated_reason = "Use the \"pc\" machine instead";
 }
 
 DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,