From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33093) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aBQBB-0005En-S3 for qemu-devel@nongnu.org; Tue, 22 Dec 2015 11:52:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aBQB9-0000Z6-S8 for qemu-devel@nongnu.org; Tue, 22 Dec 2015 11:52:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38512) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aBQB9-0000Yv-Jh for qemu-devel@nongnu.org; Tue, 22 Dec 2015 11:52:51 -0500 Date: Tue, 22 Dec 2015 18:52:48 +0200 From: "Michael S. Tsirkin" Message-ID: <1450803119-4223-5-git-send-email-mst@redhat.com> References: <1450803119-4223-1-git-send-email-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1450803119-4223-1-git-send-email-mst@redhat.com> Subject: [Qemu-devel] [PULL 04/55] pc: Move acpi_data_size global to PCMachineClass List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Marcel Apfelbaum , Peter Maydell , Richard Henderson , Eduardo Habkost , Paolo Bonzini From: Eduardo Habkost This way we don't need code in pc_compat_*() functions to set the legacy acpi_data_size value. Signed-off-by: Eduardo Habkost Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Marcel Apfelbaum --- include/hw/i386/pc.h | 6 ++++-- hw/i386/pc.c | 17 ++++++----------- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index f858b8b..3edae2b 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -90,6 +90,10 @@ struct PCMachineClass { bool has_reserved_memory; bool kvmclock_enabled; int legacy_acpi_table_size; + /* Leave a chunk of memory at the top of RAM for the BIOS ACPI tables + * and other BIOS datastructures. + */ + unsigned acpi_data_size; }; #define TYPE_PC_MACHINE "generic-pc-machine" @@ -201,8 +205,6 @@ void pc_acpi_init(const char *default_dsdt); PcGuestInfo *pc_guest_info_init(PCMachineState *pcms); -void pc_set_legacy_acpi_data_size(void); - #define PCI_HOST_PROP_PCI_HOLE_START "pci-hole-start" #define PCI_HOST_PROP_PCI_HOLE_END "pci-hole-end" #define PCI_HOST_PROP_PCI_HOLE64_START "pci-hole64-start" diff --git a/hw/i386/pc.c b/hw/i386/pc.c index c2e1a7e..e8dfc70 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -77,15 +77,6 @@ #define DPRINTF(fmt, ...) #endif -/* Leave a chunk of memory at the top of RAM for the BIOS ACPI tables - * (128K) and other BIOS datastructures (less than 4K reported to be used at - * the moment, 32K should be enough for a while). */ -static unsigned acpi_data_size = 0x20000 + 0x8000; -void pc_set_legacy_acpi_data_size(void) -{ - acpi_data_size = 0x10000; -} - #define BIOS_CFG_IOPORT 0x510 #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0) #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1) @@ -841,6 +832,7 @@ static void load_linux(PCMachineState *pcms, FILE *f; char *vmode; MachineState *machine = MACHINE(pcms); + PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); const char *kernel_filename = machine->kernel_filename; const char *initrd_filename = machine->initrd_filename; const char *kernel_cmdline = machine->kernel_cmdline; @@ -908,8 +900,8 @@ static void load_linux(PCMachineState *pcms, initrd_max = 0x37ffffff; } - if (initrd_max >= pcms->below_4g_mem_size - acpi_data_size) { - initrd_max = pcms->below_4g_mem_size - acpi_data_size - 1; + if (initrd_max >= pcms->below_4g_mem_size - pcmc->acpi_data_size) { + initrd_max = pcms->below_4g_mem_size - pcmc->acpi_data_size - 1; } fw_cfg_add_i32(fw_cfg, FW_CFG_CMDLINE_ADDR, cmdline_addr); @@ -1961,6 +1953,9 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) pcmc->gigabyte_align = true; pcmc->has_reserved_memory = true; pcmc->kvmclock_enabled = true; + /* BIOS ACPI tables: 128K. Other BIOS datastructures: less than 4K reported + * to be used at the moment, 32K should be enough for a while. */ + pcmc->acpi_data_size = 0x20000 + 0x8000; mc->get_hotplug_handler = pc_get_hotpug_handler; mc->cpu_index_to_socket_id = pc_cpu_index_to_socket_id; mc->default_boot_order = "cad"; diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index fa6f507..82b8a5e 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -318,7 +318,6 @@ static void pc_compat_2_1(MachineState *machine) static void pc_compat_2_0(MachineState *machine) { pc_compat_2_1(machine); - pc_set_legacy_acpi_data_size(); } static void pc_compat_1_7(MachineState *machine) @@ -517,6 +516,7 @@ static void pc_i440fx_2_0_machine_options(MachineClass *m) * QEMU 1.7 it is 6414. For RHEL/CentOS 7.0 it is 6418. */ pcmc->legacy_acpi_table_size = 6652; + pcmc->acpi_data_size = 0x10000; } DEFINE_I440FX_MACHINE(v2_0, "pc-i440fx-2.0", pc_compat_2_0, diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index c028748..cc85d3a 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -302,7 +302,6 @@ static void pc_compat_2_1(MachineState *machine) static void pc_compat_2_0(MachineState *machine) { pc_compat_2_1(machine); - pc_set_legacy_acpi_data_size(); } static void pc_compat_1_7(MachineState *machine) @@ -424,6 +423,7 @@ static void pc_q35_2_0_machine_options(MachineClass *m) SET_MACHINE_COMPAT(m, PC_COMPAT_2_0); pcmc->has_reserved_memory = false; pcmc->smbios_legacy_mode = true; + pcmc->acpi_data_size = 0x10000; } DEFINE_Q35_MACHINE(v2_0, "pc-q35-2.0", pc_compat_2_0, -- MST