From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48141) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a44J4-0007w0-8D for qemu-devel@nongnu.org; Wed, 02 Dec 2015 05:06:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a44J1-0001Qd-2Q for qemu-devel@nongnu.org; Wed, 02 Dec 2015 05:06:38 -0500 Received: from mx1.redhat.com ([209.132.183.28]:43534) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a44J0-0001QY-Qu for qemu-devel@nongnu.org; Wed, 02 Dec 2015 05:06:34 -0500 References: <1449010688-19205-1-git-send-email-ehabkost@redhat.com> <1449010688-19205-3-git-send-email-ehabkost@redhat.com> From: Marcel Apfelbaum Message-ID: <565EC2A7.8010407@redhat.com> Date: Wed, 2 Dec 2015 12:06:31 +0200 MIME-Version: 1.0 In-Reply-To: <1449010688-19205-3-git-send-email-ehabkost@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 2/6] pc: Move legacy_acpi_table_size global to PCMachineClass List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost , qemu-devel@nongnu.org Cc: Marcel Apfelbaum , "Michael S. Tsirkin" , David Gibson On 12/02/2015 12:58 AM, Eduardo Habkost wrote: > This way we can set legacy_acpi_table_size on the machine_options() > functions, instead of requirng code in pc_compat_*() functions. > > Signed-off-by: Eduardo Habkost > --- > hw/i386/pc_piix.c | 40 +++++++++++++++++++--------------------- > include/hw/i386/pc.h | 1 + > 2 files changed, 20 insertions(+), 21 deletions(-) > > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > index 7a7f748..5f23e9c 100644 > --- a/hw/i386/pc_piix.c > +++ b/hw/i386/pc_piix.c > @@ -60,8 +60,6 @@ static const int ide_iobase[MAX_IDE_BUS] = { 0x1f0, 0x170 }; > static const int ide_iobase2[MAX_IDE_BUS] = { 0x3f6, 0x376 }; > static const int ide_irq[MAX_IDE_BUS] = { 14, 15 }; > > -static int legacy_acpi_table_size; > - > /* PC hardware initialisation */ > static void pc_init1(MachineState *machine, > const char *host_type, const char *pci_type) > @@ -145,7 +143,7 @@ static void pc_init1(MachineState *machine, > guest_info = pc_guest_info_init(pcms); > > guest_info->has_acpi_build = pcmc->has_acpi_build; > - guest_info->legacy_acpi_table_size = legacy_acpi_table_size; > + guest_info->legacy_acpi_table_size = pcmc->legacy_acpi_table_size; > > guest_info->isapc_ram_fw = !pcmc->pci_enabled; > guest_info->has_reserved_memory = pcmc->has_reserved_memory; > @@ -319,23 +317,6 @@ static void pc_compat_2_1(MachineState *machine) > static void pc_compat_2_0(MachineState *machine) > { > pc_compat_2_1(machine); > - /* This value depends on the actual DSDT and SSDT compiled into > - * the source QEMU; unfortunately it depends on the binary and > - * not on the machine type, so we cannot make pc-i440fx-1.7 work on > - * both QEMU 1.7 and QEMU 2.0. > - * > - * Large variations cause migration to fail for more than one > - * consecutive value of the "-smp" maxcpus option. > - * > - * For small variations of the kind caused by different iasl versions, > - * the 4k rounding usually leaves slack. However, there could be still > - * one or two values that break. For QEMU 1.7 and QEMU 2.0 the > - * slack is only ~10 bytes before one "-smp maxcpus" value breaks! > - * > - * 6652 is valid for QEMU 2.0, the right value for pc-i440fx-1.7 on > - * QEMU 1.7 it is 6414. For RHEL/CentOS 7.0 it is 6418. > - */ > - legacy_acpi_table_size = 6652; > pc_set_legacy_acpi_data_size(); > } > > @@ -343,7 +324,6 @@ static void pc_compat_1_7(MachineState *machine) > { > pc_compat_2_0(machine); > option_rom_has_mr = true; > - legacy_acpi_table_size = 6414; > x86_cpu_change_kvm_default("x2apic", NULL); > } > > @@ -519,6 +499,23 @@ static void pc_i440fx_2_0_machine_options(MachineClass *m) > SET_MACHINE_COMPAT(m, PC_COMPAT_2_0); > pcmc->smbios_legacy_mode = true; > pcmc->has_reserved_memory = false; > + /* This value depends on the actual DSDT and SSDT compiled into > + * the source QEMU; unfortunately it depends on the binary and > + * not on the machine type, so we cannot make pc-i440fx-1.7 work on > + * both QEMU 1.7 and QEMU 2.0. > + * > + * Large variations cause migration to fail for more than one > + * consecutive value of the "-smp" maxcpus option. > + * > + * For small variations of the kind caused by different iasl versions, > + * the 4k rounding usually leaves slack. However, there could be still > + * one or two values that break. For QEMU 1.7 and QEMU 2.0 the > + * slack is only ~10 bytes before one "-smp maxcpus" value breaks! > + * > + * 6652 is valid for QEMU 2.0, the right value for pc-i440fx-1.7 on > + * QEMU 1.7 it is 6414. For RHEL/CentOS 7.0 it is 6418. > + */ > + pcmc->legacy_acpi_table_size = 6652; > } > > DEFINE_I440FX_MACHINE(v2_0, "pc-i440fx-2.0", pc_compat_2_0, > @@ -534,6 +531,7 @@ static void pc_i440fx_1_7_machine_options(MachineClass *m) > SET_MACHINE_COMPAT(m, PC_COMPAT_1_7); > pcmc->smbios_defaults = false; > pcmc->gigabyte_align = false; > + pcmc->legacy_acpi_table_size = 6414; > } > > DEFINE_I440FX_MACHINE(v1_7, "pc-i440fx-1.7", pc_compat_1_7, > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h > index 15171e9..7c2cc9f 100644 > --- a/include/hw/i386/pc.h > +++ b/include/hw/i386/pc.h > @@ -76,6 +76,7 @@ struct PCMachineClass { > bool gigabyte_align; > bool has_reserved_memory; > bool kvmclock_enabled; > + int legacy_acpi_table_size; > }; > > #define TYPE_PC_MACHINE "generic-pc-machine" > Reviewed-by: Marcel Apfelbaum Thanks, Marcel