On Tue, 26 Mar 2024 13:30:48 +0000
Mark Cave-Ayland <mark.cave-ayland(a)ilande.co.uk> wrote:
On 26/03/2024 12:51, Igor Mammedov wrote:
> ISAPC machine was introduced 25 years ago and it's a lot of time since
> such machine was around with real ISA only PC hardware practically defunct.
> Also it's slowly bit-rots (for example: I was able to boot RHEL6 on RHEL9 host
> in only TCG mode, while in KVM mode it hung in the middle of boot)
>
> Rather than spending time on fixing 'the oldest' no longer tested machine
type,
> deprecate it so we can clean up QEMU code from legacy fixups and hopefully
> make it easier to follow.
>
> Folks who have to use ancient guest that requires ISAPC can still
> use older QEMU to play with it.
Heh I've actually been using isapc over the past couple of weeks to fire up some old
programs in a Windows 3 VM :)
I'd really hate to see isapc disappear as there are a number of people from the retro
crowd (such as myself) who fire up QEMU/KVM on various historical images, and whilst
there are alternatives, there isn't really anything that touches QEMU
performance-wise.
This leads into the question as to how QEMU should handle less recent machines: I
appreciate that from an enterprise perspective there is little interest, but there
are plenty of hobbyists and historians who are.
I'm not looking at it from enterprise point of view, but rather from
developers/maintainers side.
From my personal experience with SPARC/macppc machines I accept that
they are not
first-class citizens, and so my approach here is that I don't mind if patches break
migration or command-line compatibility as long as I can still fire up the VM.
Regressions do occur, but fortunately they don't tend to occur that often.
I can see how there is a lot of legacy cruft around handling legacy command line
options that could be improved by removing isapc, and I think that a lot of this is
around preserving historical behaviour.
How about splitting the isapc machine out of the generic PC init so that it can be
used going forward with less command-line/migration compatibility guarantees, but
also won't prevent subsequent tidy-ups/changes to the main PC machines going forward?
it's not only command line, it polluting code all over pc machine
(the recent example, I've touched smbios, where we have legacy mode
only for ISAPC (since 2.0 machine has been deprecated/removed)).
Yep, it should be possible to extract ISA machine at cost of some
duplication and let it slowly continue decay. But it's thanks-less
task and shared code would still remian the issue.
Old QEMU can be used for testing at the cost of few minutes to
create container without much hassle, see my other reply to Philippe.
> Signed-off-by: Igor Mammedov <imammedo(a)redhat.com>
> ---
> docs/about/deprecated.rst | 7 +++++++
> hw/i386/pc_piix.c | 1 +
> 2 files changed, 8 insertions(+)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 7b548519b5..5708296991 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -226,6 +226,13 @@ 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.
>
> +``isapc`` (since 9.0)
>
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
> +
> +These old machine type are quite neglected nowadays and thus might have
> +various pitfalls with regards to live migration. Use a newer machine type
> +instead.
> +
> Nios II ``10m50-ghrd`` and ``nios2-generic-nommu`` machines (since 8.2)
>
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 18ba076609..96f72384dd 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -921,6 +921,7 @@ static void isapc_machine_options(MachineClass *m)
> m->default_nic = "ne2k_isa";
> m->default_cpu_type = X86_CPU_TYPE_NAME("486");
> m->no_parallel = !module_object_class_by_name(TYPE_ISA_PARALLEL);
> + m->deprecation_reason = "old and unattended - use a newer version
instead";
> }
>
> DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,
ATB,
Mark.