提交 71ae9e94 编写于 作者: E Eduardo Habkost 提交者: Michael S. Tsirkin

pc: Move option_rom_has_mr/rom_file_has_mr globals to MachineClass

This way, these settings can be simply set on the corresponding
machine_options() function, instead of requiring code in
pc_compat_*() functions.
Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
上级 cdedce05
...@@ -51,12 +51,10 @@ ...@@ -51,12 +51,10 @@
#include "hw/nvram/fw_cfg.h" #include "hw/nvram/fw_cfg.h"
#include "exec/memory.h" #include "exec/memory.h"
#include "exec/address-spaces.h" #include "exec/address-spaces.h"
#include "hw/boards.h"
#include <zlib.h> #include <zlib.h>
bool option_rom_has_mr = false;
bool rom_file_has_mr = true;
static int roms_loaded; static int roms_loaded;
/* return the size or -1 if error */ /* return the size or -1 if error */
...@@ -754,6 +752,7 @@ int rom_add_file(const char *file, const char *fw_dir, ...@@ -754,6 +752,7 @@ int rom_add_file(const char *file, const char *fw_dir,
hwaddr addr, int32_t bootindex, hwaddr addr, int32_t bootindex,
bool option_rom) bool option_rom)
{ {
MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
Rom *rom; Rom *rom;
int rc, fd = -1; int rc, fd = -1;
char devpath[100]; char devpath[100];
...@@ -810,7 +809,7 @@ int rom_add_file(const char *file, const char *fw_dir, ...@@ -810,7 +809,7 @@ int rom_add_file(const char *file, const char *fw_dir,
basename); basename);
snprintf(devpath, sizeof(devpath), "/rom@%s", fw_file_name); 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); data = rom_set_mr(rom, OBJECT(fw_cfg), devpath);
} else { } else {
data = rom->data; data = rom->data;
...@@ -838,6 +837,7 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len, ...@@ -838,6 +837,7 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len,
size_t max_len, hwaddr addr, const char *fw_file_name, size_t max_len, hwaddr addr, const char *fw_file_name,
FWCfgReadCallback fw_callback, void *callback_opaque) FWCfgReadCallback fw_callback, void *callback_opaque)
{ {
MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
Rom *rom; Rom *rom;
MemoryRegion *mr = NULL; MemoryRegion *mr = NULL;
...@@ -855,7 +855,7 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len, ...@@ -855,7 +855,7 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len,
snprintf(devpath, sizeof(devpath), "/rom@%s", fw_file_name); 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); data = rom_set_mr(rom, OBJECT(fw_cfg), devpath);
mr = rom->mr; mr = rom->mr;
} else { } else {
......
...@@ -342,6 +342,7 @@ static void machine_class_init(ObjectClass *oc, void *data) ...@@ -342,6 +342,7 @@ static void machine_class_init(ObjectClass *oc, void *data)
/* Default 128 MB as guest ram size */ /* Default 128 MB as guest ram size */
mc->default_ram_size = 128 * M_BYTE; mc->default_ram_size = 128 * M_BYTE;
mc->rom_file_has_mr = true;
} }
static void machine_class_base_init(ObjectClass *oc, void *data) static void machine_class_base_init(ObjectClass *oc, void *data)
......
...@@ -320,14 +320,12 @@ static void pc_compat_2_0(MachineState *machine) ...@@ -320,14 +320,12 @@ static void pc_compat_2_0(MachineState *machine)
static void pc_compat_1_7(MachineState *machine) static void pc_compat_1_7(MachineState *machine)
{ {
pc_compat_2_0(machine); pc_compat_2_0(machine);
option_rom_has_mr = true;
x86_cpu_change_kvm_default("x2apic", NULL); x86_cpu_change_kvm_default("x2apic", NULL);
} }
static void pc_compat_1_6(MachineState *machine) static void pc_compat_1_6(MachineState *machine)
{ {
pc_compat_1_7(machine); pc_compat_1_7(machine);
rom_file_has_mr = false;
} }
static void pc_compat_1_5(MachineState *machine) static void pc_compat_1_5(MachineState *machine)
...@@ -361,8 +359,6 @@ static void pc_compat_0_13(MachineState *machine) ...@@ -361,8 +359,6 @@ static void pc_compat_0_13(MachineState *machine)
static void pc_init_isa(MachineState *machine) static void pc_init_isa(MachineState *machine)
{ {
option_rom_has_mr = true;
rom_file_has_mr = false;
if (!machine->cpu_model) { if (!machine->cpu_model) {
machine->cpu_model = "486"; machine->cpu_model = "486";
} }
...@@ -527,6 +523,7 @@ static void pc_i440fx_1_7_machine_options(MachineClass *m) ...@@ -527,6 +523,7 @@ static void pc_i440fx_1_7_machine_options(MachineClass *m)
pc_i440fx_2_0_machine_options(m); pc_i440fx_2_0_machine_options(m);
m->hw_version = "1.7.0"; m->hw_version = "1.7.0";
m->default_machine_opts = NULL; m->default_machine_opts = NULL;
m->option_rom_has_mr = true;
SET_MACHINE_COMPAT(m, PC_COMPAT_1_7); SET_MACHINE_COMPAT(m, PC_COMPAT_1_7);
pcmc->smbios_defaults = false; pcmc->smbios_defaults = false;
pcmc->gigabyte_align = false; pcmc->gigabyte_align = false;
...@@ -542,6 +539,7 @@ static void pc_i440fx_1_6_machine_options(MachineClass *m) ...@@ -542,6 +539,7 @@ static void pc_i440fx_1_6_machine_options(MachineClass *m)
PCMachineClass *pcmc = PC_MACHINE_CLASS(m); PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
pc_i440fx_1_7_machine_options(m); pc_i440fx_1_7_machine_options(m);
m->hw_version = "1.6.0"; m->hw_version = "1.6.0";
m->rom_file_has_mr = false;
SET_MACHINE_COMPAT(m, PC_COMPAT_1_6); SET_MACHINE_COMPAT(m, PC_COMPAT_1_6);
pcmc->has_acpi_build = false; pcmc->has_acpi_build = false;
} }
...@@ -1026,6 +1024,8 @@ static void isapc_machine_options(MachineClass *m) ...@@ -1026,6 +1024,8 @@ static void isapc_machine_options(MachineClass *m)
PCMachineClass *pcmc = PC_MACHINE_CLASS(m); PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
m->desc = "ISA-only PC"; m->desc = "ISA-only PC";
m->max_cpus = 1; m->max_cpus = 1;
m->option_rom_has_mr = true;
m->rom_file_has_mr = false;
pcmc->pci_enabled = false; pcmc->pci_enabled = false;
pcmc->has_acpi_build = false; pcmc->has_acpi_build = false;
pcmc->smbios_defaults = false; pcmc->smbios_defaults = false;
......
...@@ -304,14 +304,12 @@ static void pc_compat_2_0(MachineState *machine) ...@@ -304,14 +304,12 @@ static void pc_compat_2_0(MachineState *machine)
static void pc_compat_1_7(MachineState *machine) static void pc_compat_1_7(MachineState *machine)
{ {
pc_compat_2_0(machine); pc_compat_2_0(machine);
option_rom_has_mr = true;
x86_cpu_change_kvm_default("x2apic", NULL); x86_cpu_change_kvm_default("x2apic", NULL);
} }
static void pc_compat_1_6(MachineState *machine) static void pc_compat_1_6(MachineState *machine)
{ {
pc_compat_1_7(machine); pc_compat_1_7(machine);
rom_file_has_mr = false;
} }
static void pc_compat_1_5(MachineState *machine) static void pc_compat_1_5(MachineState *machine)
...@@ -434,6 +432,7 @@ static void pc_q35_1_7_machine_options(MachineClass *m) ...@@ -434,6 +432,7 @@ static void pc_q35_1_7_machine_options(MachineClass *m)
pc_q35_2_0_machine_options(m); pc_q35_2_0_machine_options(m);
m->hw_version = "1.7.0"; m->hw_version = "1.7.0";
m->default_machine_opts = NULL; m->default_machine_opts = NULL;
m->option_rom_has_mr = true;
SET_MACHINE_COMPAT(m, PC_COMPAT_1_7); SET_MACHINE_COMPAT(m, PC_COMPAT_1_7);
pcmc->smbios_defaults = false; pcmc->smbios_defaults = false;
pcmc->gigabyte_align = false; pcmc->gigabyte_align = false;
...@@ -448,6 +447,7 @@ static void pc_q35_1_6_machine_options(MachineClass *m) ...@@ -448,6 +447,7 @@ static void pc_q35_1_6_machine_options(MachineClass *m)
PCMachineClass *pcmc = PC_MACHINE_CLASS(m); PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
pc_q35_machine_options(m); pc_q35_machine_options(m);
m->hw_version = "1.6.0"; m->hw_version = "1.6.0";
m->rom_file_has_mr = false;
SET_MACHINE_COMPAT(m, PC_COMPAT_1_6); SET_MACHINE_COMPAT(m, PC_COMPAT_1_6);
pcmc->has_acpi_build = false; pcmc->has_acpi_build = false;
} }
......
...@@ -93,6 +93,8 @@ struct MachineClass { ...@@ -93,6 +93,8 @@ struct MachineClass {
GlobalProperty *compat_props; GlobalProperty *compat_props;
const char *hw_version; const char *hw_version;
ram_addr_t default_ram_size; ram_addr_t default_ram_size;
bool option_rom_has_mr;
bool rom_file_has_mr;
HotplugHandler *(*get_hotplug_handler)(MachineState *machine, HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
DeviceState *dev); DeviceState *dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册