From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X3Da0-0003Ee-Nj for qemu-devel@nongnu.org; Fri, 04 Jul 2014 20:11:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X3DZr-0005M9-Vq for qemu-devel@nongnu.org; Fri, 04 Jul 2014 20:11:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:20327) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X3DZr-0005Lz-Li for qemu-devel@nongnu.org; Fri, 04 Jul 2014 20:11:39 -0400 From: Eduardo Habkost Date: Fri, 4 Jul 2014 21:09:56 -0300 Message-Id: <1404519002-10224-30-git-send-email-ehabkost@redhat.com> In-Reply-To: <1404519002-10224-1-git-send-email-ehabkost@redhat.com> References: <1404519002-10224-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [RFC v3 29/35] pc: Move option_rom_has_mr/rom_file_has_mr to MachineClass List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Marcel Apfelbaum , "Michael S. Tsirkin" , Alexander Graf , Don Slutz , Igor Mammedov , =?UTF-8?q?Andreas=20F=C3=A4rber?= This way, these settings can be simply set on the class_init function, instead of requiring a separate machine init function just to set global variables. Signed-off-by: Eduardo Habkost --- hw/core/loader.c | 12 +++++++----- hw/core/machine.c | 1 + hw/i386/pc_piix.c | 8 ++++---- hw/i386/pc_q35.c | 4 ++-- include/hw/boards.h | 2 ++ 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/hw/core/loader.c b/hw/core/loader.c index 2bf6b8f..d1d1e72 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -51,12 +51,10 @@ #include "hw/nvram/fw_cfg.h" #include "exec/memory.h" #include "exec/address-spaces.h" +#include "hw/boards.h" #include -bool option_rom_has_mr = false; -bool rom_file_has_mr = true; - static int roms_loaded; /* return the size or -1 if error */ @@ -646,6 +644,8 @@ int rom_add_file(const char *file, const char *fw_dir, hwaddr addr, int32_t bootindex, bool option_rom) { + MachineState *machine = current_machine; + MachineClass *mc = MACHINE_GET_CLASS(machine); Rom *rom; int rc, fd = -1; char devpath[100]; @@ -696,7 +696,7 @@ int rom_add_file(const char *file, const char *fw_dir, basename); snprintf(devpath, sizeof(devpath), "/rom@%s", fw_file_name); - if ((!option_rom || option_rom_has_mr) && rom_file_has_mr) { + if ((!option_rom || mc->option_rom_has_mr) && mc->rom_file_has_mr) { data = rom_set_mr(rom, OBJECT(fw_cfg), devpath); } else { data = rom->data; @@ -724,6 +724,8 @@ void *rom_add_blob(const char *name, const void *blob, size_t len, hwaddr addr, const char *fw_file_name, FWCfgReadCallback fw_callback, void *callback_opaque) { + MachineState *machine = current_machine; + MachineClass *mc = MACHINE_GET_CLASS(machine); Rom *rom; void *data = NULL; @@ -740,7 +742,7 @@ void *rom_add_blob(const char *name, const void *blob, size_t len, snprintf(devpath, sizeof(devpath), "/rom@%s", fw_file_name); - if (rom_file_has_mr) { + if (mc->rom_file_has_mr) { data = rom_set_mr(rom, OBJECT(fw_cfg), devpath); } else { data = rom->data; diff --git a/hw/core/machine.c b/hw/core/machine.c index a4d928e..e3a6425 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -302,6 +302,7 @@ static void machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); QTAILQ_INIT(&mc->compat_props); + mc->rom_file_has_mr = true; } static const TypeInfo machine_info = { diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index a9fb9dd..18ac698 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -291,14 +291,12 @@ static void pc_compat_2_0(MachineState *machine) static void pc_compat_1_7(MachineState *machine) { pc_compat_2_0(machine); - option_rom_has_mr = true; x86_cpu_compat_disable_kvm_features(FEAT_1_ECX, CPUID_EXT_X2APIC); } static void pc_compat_1_6(MachineState *machine) { pc_compat_1_7(machine); - rom_file_has_mr = false; } static void pc_compat_1_5(MachineState *machine) @@ -384,8 +382,6 @@ static void pc_init_pci_no_kvmclock(MachineState *machine) static void pc_init_isa(MachineState *machine) { - option_rom_has_mr = true; - rom_file_has_mr = false; if (!machine->cpu_model) { machine->cpu_model = "486"; } @@ -476,6 +472,7 @@ static void pc_i440fx_machine_v1_7_class_init(ObjectClass *oc, void *data) mc->default_machine_opts = NULL; mc->init = pc_init_pci_1_7; mc->name = "pc-i440fx-1.7"; + mc->option_rom_has_mr = true; machine_class_add_compat_props(mc, compat_props); pcmc->smbios_defaults = false; pcmc->gigabyte_align = false; @@ -498,6 +495,7 @@ static void pc_i440fx_machine_v1_6_class_init(ObjectClass *oc, void *data) pc_i440fx_machine_v1_7_class_init(oc, data); mc->init = pc_init_pci_1_6; mc->name = "pc-i440fx-1.6"; + mc->rom_file_has_mr = false; machine_class_add_compat_props(mc, compat_props); pcmc->has_acpi_build = false; } @@ -957,6 +955,8 @@ static void isapc_machine_class_init(ObjectClass *oc, void *data) mc->max_cpus = 1; mc->hot_add_cpu = NULL; mc->name = "isapc"; + mc->option_rom_has_mr = true; + mc->rom_file_has_mr = false; machine_class_add_compat_props(mc, compat_props); pcmc->smbios_defaults = false; pcmc->has_acpi_build = false; diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 3f5b0c3..33ea5dd 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -270,14 +270,12 @@ static void pc_compat_2_0(MachineState *machine) static void pc_compat_1_7(MachineState *machine) { pc_compat_2_0(machine); - option_rom_has_mr = true; x86_cpu_compat_disable_kvm_features(FEAT_1_ECX, CPUID_EXT_X2APIC); } static void pc_compat_1_6(MachineState *machine) { pc_compat_1_7(machine); - rom_file_has_mr = false; } static void pc_compat_1_5(MachineState *machine) @@ -389,6 +387,7 @@ static void pc_q35_machine_v1_7_class_init(ObjectClass *oc, void *data) pc_q35_machine_v2_0_class_init(oc, data); mc->default_machine_opts = NULL; mc->init = pc_q35_init_1_7; + mc->option_rom_has_mr = true; machine_class_add_compat_props(mc, compat_props); mc->name = "pc-q35-1.7"; pcmc->smbios_defaults = false; @@ -411,6 +410,7 @@ static void pc_q35_machine_v1_6_class_init(ObjectClass *oc, void *data) }; pc_q35_machine_v1_7_class_init(oc, data); mc->init = pc_q35_init_1_6; + mc->rom_file_has_mr = false; machine_class_add_compat_props(mc, compat_props); mc->name = "pc-q35-1.6"; pcmc->has_acpi_build = false; diff --git a/include/hw/boards.h b/include/hw/boards.h index 69b76a1..36eaba5 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -99,6 +99,8 @@ struct MachineClass { const char *default_boot_order; GlobalPropertyList compat_props; const char *hw_version; + bool option_rom_has_mr; + bool rom_file_has_mr; HotplugHandler *(*get_hotplug_handler)(MachineState *machine, DeviceState *dev); -- 1.9.3