diff mbox

[for-2.4] pc: fix machine options for pc-i440fx-2.3 and below

Message ID 1436473702-8917-1-git-send-email-mdroth@linux.vnet.ibm.com
State New
Headers show

Commit Message

Michael Roth July 9, 2015, 8:28 p.m. UTC
Commit fddd179 introduced a mechanical change that initialized default
machine options using functions instead of macros. Prior to the change
options for pc-i440fx-2.3 were defined as:

  #define PC_I440FX_MACHINE_OPTIONS \
      PC_DEFAULT_MACHINE_OPTIONS, \
      .family = "pc_piix", \
      .desc = "Standard PC (i440FX + PIIX, 1996)", \
      .hot_add_cpu = pc_hot_add_cpu

  #define PC_I440FX_2_4_MACHINE_OPTIONS                           \
      PC_I440FX_MACHINE_OPTIONS,                                  \
      .default_machine_opts = "firmware=bios-256k.bin",           \
      .default_display = "std",                                   \
      .alias = "pc",                                              \
      .is_default = 1

  #define PC_I440FX_2_3_MACHINE_OPTIONS \
      PC_I440FX_2_4_MACHINE_OPTIONS, \
      .alias = NULL, \
      .is_default = 0

However, as part of the conversion, the 2.3 definition was changed to
inherit directly from PC_I440FX_MACHINE_OPTIONS instead of the 2.4
options. As a result, the default pc bios for 2.3 and lower machines
has changed to the 128K version, which breaks 2.3 <> 2.4 migration.

Fix this by restoring the original defaults. 2.4 machine options have
not changed since the above commit, so no additional overrides are
needed.

Cc: ehabkost@redhat.com
Cc: mst@redhat.com
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/i386/pc_piix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Eduardo Habkost July 11, 2015, 7:28 p.m. UTC | #1
On Thu, Jul 09, 2015 at 03:28:22PM -0500, Michael Roth wrote:
> Commit fddd179 introduced a mechanical change that initialized default
> machine options using functions instead of macros. Prior to the change
> options for pc-i440fx-2.3 were defined as:
> 
>   #define PC_I440FX_MACHINE_OPTIONS \
>       PC_DEFAULT_MACHINE_OPTIONS, \
>       .family = "pc_piix", \
>       .desc = "Standard PC (i440FX + PIIX, 1996)", \
>       .hot_add_cpu = pc_hot_add_cpu
> 
>   #define PC_I440FX_2_4_MACHINE_OPTIONS                           \
>       PC_I440FX_MACHINE_OPTIONS,                                  \
>       .default_machine_opts = "firmware=bios-256k.bin",           \
>       .default_display = "std",                                   \
>       .alias = "pc",                                              \
>       .is_default = 1
> 
>   #define PC_I440FX_2_3_MACHINE_OPTIONS \
>       PC_I440FX_2_4_MACHINE_OPTIONS, \
>       .alias = NULL, \
>       .is_default = 0
> 
> However, as part of the conversion, the 2.3 definition was changed to
> inherit directly from PC_I440FX_MACHINE_OPTIONS instead of the 2.4
> options. As a result, the default pc bios for 2.3 and lower machines
> has changed to the 128K version, which breaks 2.3 <> 2.4 migration.
> 
> Fix this by restoring the original defaults. 2.4 machine options have
> not changed since the above commit, so no additional overrides are
> needed.
> 
> Cc: ehabkost@redhat.com
> Cc: mst@redhat.com
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>

I submitted exactly the same fix on June 23:

  From: Eduardo Habkost <ehabkost@redhat.com>
  To: qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>
  Date: Tue, 23 Jun 2015 14:00:51 -0300
  Message-Id: <1435078851-10380-1-git-send-email-ehabkost@redhat.com>
  Cc: Laszlo Ersek <lersek@redhat.com>,
          "Dr. David Alan Gilbert" <dgilbert@redhat.com>
  Subject: [Qemu-devel] [PATCH] pc: Fix resue of pc-i440fx-2.4 on pc-i440fx-2.3 machine_options
diff mbox

Patch

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 8167b12..a896624 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -492,7 +492,7 @@  DEFINE_I440FX_MACHINE(v2_4, "pc-i440fx-2.4", NULL,
 
 static void pc_i440fx_2_3_machine_options(MachineClass *m)
 {
-    pc_i440fx_machine_options(m);
+    pc_i440fx_2_4_machine_options(m);
     m->alias = NULL;
     m->is_default = 0;
     SET_MACHINE_COMPAT(m, PC_COMPAT_2_3);