diff mbox series

[QEMU] hw/i386: Remove deprecated machines pc-0.10 and pc-0.11

Message ID 1545065857-31164-1-git-send-email-thuth@redhat.com
State New
Headers show
Series [QEMU] hw/i386: Remove deprecated machines pc-0.10 and pc-0.11 | expand

Commit Message

Thomas Huth Dec. 17, 2018, 4:57 p.m. UTC
They've been deprecated for two releases and nobody complained that they
are still required anymore, so it's time to remove these now.
And while we're at it, mark the other remaining old 0.x machine types
as deprecated (since they can not properly be used for live-migration
anyway).

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 hw/i386/pc_piix.c     | 70 ++-------------------------------------------------
 qemu-deprecated.texi  |  2 +-
 tests/cpu-plug-test.c |  4 +--
 3 files changed, 4 insertions(+), 72 deletions(-)

Comments

Eduardo Habkost Dec. 17, 2018, 7:35 p.m. UTC | #1
On Mon, Dec 17, 2018 at 05:57:37PM +0100, Thomas Huth wrote:
> They've been deprecated for two releases and nobody complained that they
> are still required anymore, so it's time to remove these now.
> And while we're at it, mark the other remaining old 0.x machine types
> as deprecated (since they can not properly be used for live-migration
> anyway).

Do you know why exactly they can't be used for live-migration?

Maybe we should split the removal of pc <= 0.10 and deprecation
of pc <= 0.15 into separate patches?

In either case:

Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>

Michael, should I queue this, or should it go through your tree?


> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  hw/i386/pc_piix.c     | 70 ++-------------------------------------------------
>  qemu-deprecated.texi  |  2 +-
>  tests/cpu-plug-test.c |  4 +--
>  3 files changed, 4 insertions(+), 72 deletions(-)
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 6981cfa..7653fbb 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -368,7 +368,7 @@ static void pc_compat_1_2(MachineState *machine)
>      x86_cpu_change_kvm_default("kvm-pv-eoi", NULL);
>  }
>  
> -/* PC compat function for pc-0.10 to pc-0.13 */
> +/* PC compat function for pc-0.12 and pc-0.13 */
>  static void pc_compat_0_13(MachineState *machine)
>  {
>      pc_compat_1_2(machine);
> @@ -834,6 +834,7 @@ static void pc_i440fx_0_15_machine_options(MachineClass *m)
>  {
>      pc_i440fx_1_0_machine_options(m);
>      m->hw_version = "0.15";
> +    m->deprecation_reason = "use a newer machine type instead";
>      SET_MACHINE_COMPAT(m, PC_COMPAT_0_15);
>  }
>  
> @@ -951,73 +952,6 @@ static void pc_i440fx_0_12_machine_options(MachineClass *m)
>  DEFINE_I440FX_MACHINE(v0_12, "pc-0.12", pc_compat_0_13,
>                        pc_i440fx_0_12_machine_options);
>  
> -
> -#define PC_COMPAT_0_11 \
> -        PC_CPU_MODEL_IDS("0.11") \
> -        {\
> -            .driver   = "virtio-blk-pci",\
> -            .property = "vectors",\
> -            .value    = stringify(0),\
> -        },{\
> -            .driver   = TYPE_PCI_DEVICE,\
> -            .property = "rombar",\
> -            .value    = stringify(0),\
> -        },{\
> -            .driver   = "ide-drive",\
> -            .property = "ver",\
> -            .value    = "0.11",\
> -        },{\
> -            .driver   = "scsi-disk",\
> -            .property = "ver",\
> -            .value    = "0.11",\
> -        },
> -
> -static void pc_i440fx_0_11_machine_options(MachineClass *m)
> -{
> -    pc_i440fx_0_12_machine_options(m);
> -    m->hw_version = "0.11";
> -    m->deprecation_reason = "use a newer machine type instead";
> -    SET_MACHINE_COMPAT(m, PC_COMPAT_0_11);
> -}
> -
> -DEFINE_I440FX_MACHINE(v0_11, "pc-0.11", pc_compat_0_13,
> -                      pc_i440fx_0_11_machine_options);
> -
> -
> -#define PC_COMPAT_0_10 \
> -    PC_CPU_MODEL_IDS("0.10") \
> -    {\
> -        .driver   = "virtio-blk-pci",\
> -        .property = "class",\
> -        .value    = stringify(PCI_CLASS_STORAGE_OTHER),\
> -    },{\
> -        .driver   = "virtio-serial-pci",\
> -        .property = "class",\
> -        .value    = stringify(PCI_CLASS_DISPLAY_OTHER),\
> -    },{\
> -        .driver   = "virtio-net-pci",\
> -        .property = "vectors",\
> -        .value    = stringify(0),\
> -    },{\
> -        .driver   = "ide-drive",\
> -        .property = "ver",\
> -        .value    = "0.10",\
> -    },{\
> -        .driver   = "scsi-disk",\
> -        .property = "ver",\
> -        .value    = "0.10",\
> -    },
> -
> -static void pc_i440fx_0_10_machine_options(MachineClass *m)
> -{
> -    pc_i440fx_0_11_machine_options(m);
> -    m->hw_version = "0.10";
> -    SET_MACHINE_COMPAT(m, PC_COMPAT_0_10);
> -}
> -
> -DEFINE_I440FX_MACHINE(v0_10, "pc-0.10", pc_compat_0_13,
> -                      pc_i440fx_0_10_machine_options);
> -
>  typedef struct {
>      uint16_t gpu_device_id;
>      uint16_t pch_device_id;
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index 2912084..190250f 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -124,7 +124,7 @@ their usecases.
>  
>  @section System emulator machines
>  
> -@subsection pc-0.10 and pc-0.11 (since 3.0)
> +@subsection pc-0.12, pc-0.13, pc-0.14 and pc-0.15 (since 4.0)
>  
>  These machine types are very old and likely can not be used for live migration
>  from old QEMU versions anymore. A newer machine type should be used instead.
> diff --git a/tests/cpu-plug-test.c b/tests/cpu-plug-test.c
> index f4a677d..668f001 100644
> --- a/tests/cpu-plug-test.c
> +++ b/tests/cpu-plug-test.c
> @@ -157,9 +157,7 @@ static void add_pc_test_case(const char *mname)
>          (strcmp(mname, "pc-0.15") == 0) ||
>          (strcmp(mname, "pc-0.14") == 0) ||
>          (strcmp(mname, "pc-0.13") == 0) ||
> -        (strcmp(mname, "pc-0.12") == 0) ||
> -        (strcmp(mname, "pc-0.11") == 0) ||
> -        (strcmp(mname, "pc-0.10") == 0)) {
> +        (strcmp(mname, "pc-0.12") == 0)) {
>          path = g_strdup_printf("cpu-plug/%s/init/%ux%ux%u&maxcpus=%u",
>                                 mname, data->sockets, data->cores,
>                                 data->threads, data->maxcpus);
> -- 
> 1.8.3.1
>
Michael S. Tsirkin Dec. 17, 2018, 10:57 p.m. UTC | #2
On Mon, Dec 17, 2018 at 05:35:22PM -0200, Eduardo Habkost wrote:
> On Mon, Dec 17, 2018 at 05:57:37PM +0100, Thomas Huth wrote:
> > They've been deprecated for two releases and nobody complained that they
> > are still required anymore, so it's time to remove these now.
> > And while we're at it, mark the other remaining old 0.x machine types
> > as deprecated (since they can not properly be used for live-migration
> > anyway).
> 
> Do you know why exactly they can't be used for live-migration?
> 
> Maybe we should split the removal of pc <= 0.10 and deprecation
> of pc <= 0.15 into separate patches?
> 
> In either case:
> 
> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
> 
> Michael, should I queue this, or should it go through your tree?

I'll queue it.

> 
> > 
> > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > ---
> >  hw/i386/pc_piix.c     | 70 ++-------------------------------------------------
> >  qemu-deprecated.texi  |  2 +-
> >  tests/cpu-plug-test.c |  4 +--
> >  3 files changed, 4 insertions(+), 72 deletions(-)
> > 
> > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> > index 6981cfa..7653fbb 100644
> > --- a/hw/i386/pc_piix.c
> > +++ b/hw/i386/pc_piix.c
> > @@ -368,7 +368,7 @@ static void pc_compat_1_2(MachineState *machine)
> >      x86_cpu_change_kvm_default("kvm-pv-eoi", NULL);
> >  }
> >  
> > -/* PC compat function for pc-0.10 to pc-0.13 */
> > +/* PC compat function for pc-0.12 and pc-0.13 */
> >  static void pc_compat_0_13(MachineState *machine)
> >  {
> >      pc_compat_1_2(machine);
> > @@ -834,6 +834,7 @@ static void pc_i440fx_0_15_machine_options(MachineClass *m)
> >  {
> >      pc_i440fx_1_0_machine_options(m);
> >      m->hw_version = "0.15";
> > +    m->deprecation_reason = "use a newer machine type instead";
> >      SET_MACHINE_COMPAT(m, PC_COMPAT_0_15);
> >  }
> >  
> > @@ -951,73 +952,6 @@ static void pc_i440fx_0_12_machine_options(MachineClass *m)
> >  DEFINE_I440FX_MACHINE(v0_12, "pc-0.12", pc_compat_0_13,
> >                        pc_i440fx_0_12_machine_options);
> >  
> > -
> > -#define PC_COMPAT_0_11 \
> > -        PC_CPU_MODEL_IDS("0.11") \
> > -        {\
> > -            .driver   = "virtio-blk-pci",\
> > -            .property = "vectors",\
> > -            .value    = stringify(0),\
> > -        },{\
> > -            .driver   = TYPE_PCI_DEVICE,\
> > -            .property = "rombar",\
> > -            .value    = stringify(0),\
> > -        },{\
> > -            .driver   = "ide-drive",\
> > -            .property = "ver",\
> > -            .value    = "0.11",\
> > -        },{\
> > -            .driver   = "scsi-disk",\
> > -            .property = "ver",\
> > -            .value    = "0.11",\
> > -        },
> > -
> > -static void pc_i440fx_0_11_machine_options(MachineClass *m)
> > -{
> > -    pc_i440fx_0_12_machine_options(m);
> > -    m->hw_version = "0.11";
> > -    m->deprecation_reason = "use a newer machine type instead";
> > -    SET_MACHINE_COMPAT(m, PC_COMPAT_0_11);
> > -}
> > -
> > -DEFINE_I440FX_MACHINE(v0_11, "pc-0.11", pc_compat_0_13,
> > -                      pc_i440fx_0_11_machine_options);
> > -
> > -
> > -#define PC_COMPAT_0_10 \
> > -    PC_CPU_MODEL_IDS("0.10") \
> > -    {\
> > -        .driver   = "virtio-blk-pci",\
> > -        .property = "class",\
> > -        .value    = stringify(PCI_CLASS_STORAGE_OTHER),\
> > -    },{\
> > -        .driver   = "virtio-serial-pci",\
> > -        .property = "class",\
> > -        .value    = stringify(PCI_CLASS_DISPLAY_OTHER),\
> > -    },{\
> > -        .driver   = "virtio-net-pci",\
> > -        .property = "vectors",\
> > -        .value    = stringify(0),\
> > -    },{\
> > -        .driver   = "ide-drive",\
> > -        .property = "ver",\
> > -        .value    = "0.10",\
> > -    },{\
> > -        .driver   = "scsi-disk",\
> > -        .property = "ver",\
> > -        .value    = "0.10",\
> > -    },
> > -
> > -static void pc_i440fx_0_10_machine_options(MachineClass *m)
> > -{
> > -    pc_i440fx_0_11_machine_options(m);
> > -    m->hw_version = "0.10";
> > -    SET_MACHINE_COMPAT(m, PC_COMPAT_0_10);
> > -}
> > -
> > -DEFINE_I440FX_MACHINE(v0_10, "pc-0.10", pc_compat_0_13,
> > -                      pc_i440fx_0_10_machine_options);
> > -
> >  typedef struct {
> >      uint16_t gpu_device_id;
> >      uint16_t pch_device_id;
> > diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> > index 2912084..190250f 100644
> > --- a/qemu-deprecated.texi
> > +++ b/qemu-deprecated.texi
> > @@ -124,7 +124,7 @@ their usecases.
> >  
> >  @section System emulator machines
> >  
> > -@subsection pc-0.10 and pc-0.11 (since 3.0)
> > +@subsection pc-0.12, pc-0.13, pc-0.14 and pc-0.15 (since 4.0)
> >  
> >  These machine types are very old and likely can not be used for live migration
> >  from old QEMU versions anymore. A newer machine type should be used instead.
> > diff --git a/tests/cpu-plug-test.c b/tests/cpu-plug-test.c
> > index f4a677d..668f001 100644
> > --- a/tests/cpu-plug-test.c
> > +++ b/tests/cpu-plug-test.c
> > @@ -157,9 +157,7 @@ static void add_pc_test_case(const char *mname)
> >          (strcmp(mname, "pc-0.15") == 0) ||
> >          (strcmp(mname, "pc-0.14") == 0) ||
> >          (strcmp(mname, "pc-0.13") == 0) ||
> > -        (strcmp(mname, "pc-0.12") == 0) ||
> > -        (strcmp(mname, "pc-0.11") == 0) ||
> > -        (strcmp(mname, "pc-0.10") == 0)) {
> > +        (strcmp(mname, "pc-0.12") == 0)) {
> >          path = g_strdup_printf("cpu-plug/%s/init/%ux%ux%u&maxcpus=%u",
> >                                 mname, data->sockets, data->cores,
> >                                 data->threads, data->maxcpus);
> > -- 
> > 1.8.3.1
> > 
> 
> -- 
> Eduardo
Thomas Huth Dec. 18, 2018, 8:06 a.m. UTC | #3
On 2018-12-17 23:57, Michael S. Tsirkin wrote:
> On Mon, Dec 17, 2018 at 05:35:22PM -0200, Eduardo Habkost wrote:
>> On Mon, Dec 17, 2018 at 05:57:37PM +0100, Thomas Huth wrote:
>>> They've been deprecated for two releases and nobody complained that they
>>> are still required anymore, so it's time to remove these now.
>>> And while we're at it, mark the other remaining old 0.x machine types
>>> as deprecated (since they can not properly be used for live-migration
>>> anyway).
>>
>> Do you know why exactly they can't be used for live-migration?

I don't remember the gory details, but IIRC Paolo once said that when
you live-migrate from a QEMU version < 1.3 and then reboot the guest, it
crashes, ... or something similar. Maybe Paolo can give some details again?

>> Maybe we should split the removal of pc <= 0.10 and deprecation
>> of pc <= 0.15 into separate patches?

In that case I'd need to remove the text from qemu-deprecated.texi
first, just to immediately add it afterwards again ... so I'd prefer to
keep this in one patch.

>> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
>>
>> Michael, should I queue this, or should it go through your tree?
> 
> I'll queue it.

Thanks to both of you!

 Thomas
Paolo Bonzini Dec. 18, 2018, 12:32 p.m. UTC | #4
On 18/12/18 09:06, Thomas Huth wrote:
> On 2018-12-17 23:57, Michael S. Tsirkin wrote:
>> On Mon, Dec 17, 2018 at 05:35:22PM -0200, Eduardo Habkost wrote:
>>> On Mon, Dec 17, 2018 at 05:57:37PM +0100, Thomas Huth wrote:
>>>> They've been deprecated for two releases and nobody complained that they
>>>> are still required anymore, so it's time to remove these now.
>>>> And while we're at it, mark the other remaining old 0.x machine types
>>>> as deprecated (since they can not properly be used for live-migration
>>>> anyway).
>>>
>>> Do you know why exactly they can't be used for live-migration?
> 
> I don't remember the gory details, but IIRC Paolo once said that when
> you live-migrate from a QEMU version < 1.3 and then reboot the guest, it
> crashes, ... or something similar. Maybe Paolo can give some details again?

Yes---due to the introduction of the memory API, the firmware is not
migrated correctly from source to destination.  On QEMU <1.3 the
0xf0000-0xfffff area is basically a copy of the higher
0xffff0000-0xffffffff area, while on more recent versions it is
initialized with zeroes and the firmware copies from 0xffff0000 to
0xf0000.  When you migrate from old to new QEMU, after reboot there's
nothing at 0xf0000 and bugs ensue.

Paolo
diff mbox series

Patch

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 6981cfa..7653fbb 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -368,7 +368,7 @@  static void pc_compat_1_2(MachineState *machine)
     x86_cpu_change_kvm_default("kvm-pv-eoi", NULL);
 }
 
-/* PC compat function for pc-0.10 to pc-0.13 */
+/* PC compat function for pc-0.12 and pc-0.13 */
 static void pc_compat_0_13(MachineState *machine)
 {
     pc_compat_1_2(machine);
@@ -834,6 +834,7 @@  static void pc_i440fx_0_15_machine_options(MachineClass *m)
 {
     pc_i440fx_1_0_machine_options(m);
     m->hw_version = "0.15";
+    m->deprecation_reason = "use a newer machine type instead";
     SET_MACHINE_COMPAT(m, PC_COMPAT_0_15);
 }
 
@@ -951,73 +952,6 @@  static void pc_i440fx_0_12_machine_options(MachineClass *m)
 DEFINE_I440FX_MACHINE(v0_12, "pc-0.12", pc_compat_0_13,
                       pc_i440fx_0_12_machine_options);
 
-
-#define PC_COMPAT_0_11 \
-        PC_CPU_MODEL_IDS("0.11") \
-        {\
-            .driver   = "virtio-blk-pci",\
-            .property = "vectors",\
-            .value    = stringify(0),\
-        },{\
-            .driver   = TYPE_PCI_DEVICE,\
-            .property = "rombar",\
-            .value    = stringify(0),\
-        },{\
-            .driver   = "ide-drive",\
-            .property = "ver",\
-            .value    = "0.11",\
-        },{\
-            .driver   = "scsi-disk",\
-            .property = "ver",\
-            .value    = "0.11",\
-        },
-
-static void pc_i440fx_0_11_machine_options(MachineClass *m)
-{
-    pc_i440fx_0_12_machine_options(m);
-    m->hw_version = "0.11";
-    m->deprecation_reason = "use a newer machine type instead";
-    SET_MACHINE_COMPAT(m, PC_COMPAT_0_11);
-}
-
-DEFINE_I440FX_MACHINE(v0_11, "pc-0.11", pc_compat_0_13,
-                      pc_i440fx_0_11_machine_options);
-
-
-#define PC_COMPAT_0_10 \
-    PC_CPU_MODEL_IDS("0.10") \
-    {\
-        .driver   = "virtio-blk-pci",\
-        .property = "class",\
-        .value    = stringify(PCI_CLASS_STORAGE_OTHER),\
-    },{\
-        .driver   = "virtio-serial-pci",\
-        .property = "class",\
-        .value    = stringify(PCI_CLASS_DISPLAY_OTHER),\
-    },{\
-        .driver   = "virtio-net-pci",\
-        .property = "vectors",\
-        .value    = stringify(0),\
-    },{\
-        .driver   = "ide-drive",\
-        .property = "ver",\
-        .value    = "0.10",\
-    },{\
-        .driver   = "scsi-disk",\
-        .property = "ver",\
-        .value    = "0.10",\
-    },
-
-static void pc_i440fx_0_10_machine_options(MachineClass *m)
-{
-    pc_i440fx_0_11_machine_options(m);
-    m->hw_version = "0.10";
-    SET_MACHINE_COMPAT(m, PC_COMPAT_0_10);
-}
-
-DEFINE_I440FX_MACHINE(v0_10, "pc-0.10", pc_compat_0_13,
-                      pc_i440fx_0_10_machine_options);
-
 typedef struct {
     uint16_t gpu_device_id;
     uint16_t pch_device_id;
diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index 2912084..190250f 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -124,7 +124,7 @@  their usecases.
 
 @section System emulator machines
 
-@subsection pc-0.10 and pc-0.11 (since 3.0)
+@subsection pc-0.12, pc-0.13, pc-0.14 and pc-0.15 (since 4.0)
 
 These machine types are very old and likely can not be used for live migration
 from old QEMU versions anymore. A newer machine type should be used instead.
diff --git a/tests/cpu-plug-test.c b/tests/cpu-plug-test.c
index f4a677d..668f001 100644
--- a/tests/cpu-plug-test.c
+++ b/tests/cpu-plug-test.c
@@ -157,9 +157,7 @@  static void add_pc_test_case(const char *mname)
         (strcmp(mname, "pc-0.15") == 0) ||
         (strcmp(mname, "pc-0.14") == 0) ||
         (strcmp(mname, "pc-0.13") == 0) ||
-        (strcmp(mname, "pc-0.12") == 0) ||
-        (strcmp(mname, "pc-0.11") == 0) ||
-        (strcmp(mname, "pc-0.10") == 0)) {
+        (strcmp(mname, "pc-0.12") == 0)) {
         path = g_strdup_printf("cpu-plug/%s/init/%ux%ux%u&maxcpus=%u",
                                mname, data->sockets, data->cores,
                                data->threads, data->maxcpus);