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.
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?
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.