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 <ehabk...@redhat.com> --- hw/core/loader.c | 12 +++++++----- hw/core/machine.c | 2 ++ hw/i386/pc_piix.c | 4 ++-- hw/i386/pc_q35.c | 4 ++-- include/hw/boards.h | 2 ++ 5 files changed, 15 insertions(+), 9 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 <zlib.h> -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..8e37a2f 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -302,6 +302,8 @@ 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 1a82441..20ac637 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -273,14 +273,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) @@ -453,6 +451,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; @@ -475,6 +474,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; } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 6bac65a..73e6cab 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -251,14 +251,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) @@ -370,6 +368,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; @@ -392,6 +391,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 8753a20..da9cadf 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -96,6 +96,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.0