We don't want to carry along old machine types forever. If we are able to remove the pc machines up to 0.13 one day for example, this would allow us to eventually kill the code for rombar=0 (i.e. where QEMU copies ROM BARs directly to low memory). Everything up to pc-1.2 is also known to have issues with migration. So let's start with a deprecation message for the old machine types so that the (hopefully) few users of these old systems start switching over to newer machine types instead.
Signed-off-by: Thomas Huth <th...@redhat.com> --- Note: Even if we mark all these old machines as deprecated, this ofcourse doesn't mean that we also have to remove them all at once later when we decide to finally really remove some. We could then also start by removing 0.10 and 0.11 only, for example (since there should really be no users left for these), or only up to 0.13 (to be able to kill rombar=0). v3: - Use a more generic approach by introducing a "deprecation_msg" in the MachineClass instead. v2: - Deprecate machines up to pc-1.2 hw/i386/pc_piix.c | 1 + include/hw/boards.h | 1 + vl.c | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 22dbef6..8e70308 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -707,6 +707,7 @@ static void pc_i440fx_1_2_machine_options(MachineClass *m) { pc_i440fx_1_3_machine_options(m); m->hw_version = "1.2.0"; + m->deprecation_msg = "Please use a newer machine type instead."; SET_MACHINE_COMPAT(m, PC_COMPAT_1_2); } diff --git a/include/hw/boards.h b/include/hw/boards.h index 76ce021..42a0264 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -112,6 +112,7 @@ struct MachineClass { char *name; const char *alias; const char *desc; + const char *deprecation_msg; void (*init)(MachineState *state); void (*reset)(void); diff --git a/vl.c b/vl.c index f7560de..0058d41 100644 --- a/vl.c +++ b/vl.c @@ -4115,6 +4115,10 @@ int main(int argc, char **argv, char **envp) replay_configure(icount_opts); machine_class = select_machine(); + if (machine_class->deprecation_msg) { + error_report("Machine type '%s' is deprecated. %s", + machine_class->name, machine_class->deprecation_msg); + } set_memory_options(&ram_slots, &maxram_size, machine_class); -- 1.8.3.1