diff --git a/hw/i386/pc.c b/hw/i386/pc.c index aefb31593b157333e2ea69eb50d6b4854d9e8b6e..7155269835c26ad1d432356c18e1c2b4b00dac66 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -670,7 +670,7 @@ static FWCfgState *bochs_bios_init(void) acpi_tables, acpi_tables_len); fw_cfg_add_i32(fw_cfg, FW_CFG_IRQ0_OVERRIDE, kvm_allows_irq0_override()); - smbios_table = smbios_get_table(&smbios_len); + smbios_table = smbios_get_table_legacy(&smbios_len); if (smbios_table) fw_cfg_add_bytes(fw_cfg, FW_CFG_SMBIOS_ENTRIES, smbios_table, smbios_len); diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 810f32375bbf2623767c76475292c2fe0bf15ac2..e4e176e4f366bd889045f7a5075d7aabe84b4d81 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -60,7 +60,7 @@ static const int ide_irq[MAX_IDE_BUS] = { 14, 15 }; static bool has_pci_info; static bool has_acpi_build = true; -static bool smbios_type1_defaults = true; +static bool smbios_defaults = true; /* Make sure that guest addresses aligned at 1Gbyte boundaries get mapped to * host addresses aligned at 1Gbyte boundaries. This way we can use 1GByte * pages in the host. @@ -143,10 +143,10 @@ static void pc_init1(QEMUMachineInitArgs *args, guest_info->has_pci_info = has_pci_info; guest_info->isapc_ram_fw = !pci_enabled; - if (smbios_type1_defaults) { + if (smbios_defaults) { /* These values are guest ABI, do not change */ - smbios_set_type1_defaults("QEMU", "Standard PC (i440FX + PIIX, 1996)", - args->machine->name); + smbios_set_defaults("QEMU", "Standard PC (i440FX + PIIX, 1996)", + args->machine->name); } /* allocate ram and load rom/bios */ @@ -269,7 +269,7 @@ static void pc_compat_2_0(QEMUMachineInitArgs *args) static void pc_compat_1_7(QEMUMachineInitArgs *args) { pc_compat_2_0(args); - smbios_type1_defaults = false; + smbios_defaults = false; gigabyte_align = false; option_rom_has_mr = true; x86_cpu_compat_disable_kvm_features(FEAT_1_ECX, CPUID_EXT_X2APIC); @@ -356,7 +356,7 @@ static void pc_init_pci_no_kvmclock(QEMUMachineInitArgs *args) { has_pci_info = false; has_acpi_build = false; - smbios_type1_defaults = false; + smbios_defaults = false; x86_cpu_compat_disable_kvm_features(FEAT_KVM, KVM_FEATURE_PV_EOI); enable_compat_apic_id_mode(); pc_init1(args, 1, 0); @@ -366,7 +366,7 @@ static void pc_init_isa(QEMUMachineInitArgs *args) { has_pci_info = false; has_acpi_build = false; - smbios_type1_defaults = false; + smbios_defaults = false; if (!args->cpu_model) { args->cpu_model = "486"; } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 89cf10ca21e4761bf2dda9e0b0cb5b7c4e190f10..312e1ae2e6ab60e6f4f6af19dfc8ee24ac48cf73 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -50,7 +50,7 @@ static bool has_pci_info; static bool has_acpi_build = true; -static bool smbios_type1_defaults = true; +static bool smbios_defaults = true; /* Make sure that guest addresses aligned at 1Gbyte boundaries get mapped to * host addresses aligned at 1Gbyte boundaries. This way we can use 1GByte * pages in the host. @@ -130,10 +130,10 @@ static void pc_q35_init(QEMUMachineInitArgs *args) guest_info->isapc_ram_fw = false; guest_info->has_acpi_build = has_acpi_build; - if (smbios_type1_defaults) { + if (smbios_defaults) { /* These values are guest ABI, do not change */ - smbios_set_type1_defaults("QEMU", "Standard PC (Q35 + ICH9, 2009)", - args->machine->name); + smbios_set_defaults("QEMU", "Standard PC (Q35 + ICH9, 2009)", + args->machine->name); } /* allocate ram and load rom/bios */ @@ -247,7 +247,7 @@ static void pc_compat_2_0(QEMUMachineInitArgs *args) static void pc_compat_1_7(QEMUMachineInitArgs *args) { pc_compat_2_0(args); - smbios_type1_defaults = false; + smbios_defaults = false; gigabyte_align = false; option_rom_has_mr = true; x86_cpu_compat_disable_kvm_features(FEAT_1_ECX, CPUID_EXT_X2APIC); diff --git a/hw/i386/smbios.c b/hw/i386/smbios.c index e8f41ad435a76223f52d22e6c80197ef05d9c9d9..e734d4cc290f3cba970320b8669bcae66c0ef506 100644 --- a/hw/i386/smbios.c +++ b/hw/i386/smbios.c @@ -21,9 +21,8 @@ #include "hw/i386/smbios.h" #include "hw/loader.h" -/* - * Structures shared with the BIOS - */ + +/* legacy structures and constants for <= 2.0 machines */ struct smbios_header { uint16_t length; uint8_t type; @@ -46,6 +45,9 @@ struct smbios_table { static uint8_t *smbios_entries; static size_t smbios_entries_len; +/* end: legacy structures & constants for <= 2.0 machines */ + + static int smbios_type4_count = 0; static bool smbios_immutable; @@ -187,6 +189,8 @@ static void smbios_check_collision(int type, int entry) } } + +/* legacy setup functions for <= 2.0 machines */ static void smbios_add_field(int type, int offset, const void *data, size_t len) { struct smbios_field *field; @@ -256,8 +260,8 @@ static void smbios_build_type_1_fields(void) } } -void smbios_set_type1_defaults(const char *manufacturer, - const char *product, const char *version) +void smbios_set_defaults(const char *manufacturer, const char *product, + const char *version) { if (!type1.manufacturer) { type1.manufacturer = manufacturer; @@ -270,7 +274,7 @@ void smbios_set_type1_defaults(const char *manufacturer, } } -uint8_t *smbios_get_table(size_t *length) +uint8_t *smbios_get_table_legacy(size_t *length) { if (!smbios_immutable) { smbios_build_type_0_fields(); @@ -281,6 +285,8 @@ uint8_t *smbios_get_table(size_t *length) *length = smbios_entries_len; return smbios_entries; } +/* end: legacy setup functions for <= 2.0 machines */ + static void save_opt(const char **dest, QemuOpts *opts, const char *name) { diff --git a/include/hw/i386/smbios.h b/include/hw/i386/smbios.h index 18fb970643592d008a51402ba72d90ac65c81a08..f80819969635f19e44c1458cc3203e5c92226095 100644 --- a/include/hw/i386/smbios.h +++ b/include/hw/i386/smbios.h @@ -16,9 +16,9 @@ #include "qemu/option.h" void smbios_entry_add(QemuOpts *opts); -void smbios_set_type1_defaults(const char *manufacturer, - const char *product, const char *version); -uint8_t *smbios_get_table(size_t *length); +void smbios_set_defaults(const char *manufacturer, const char *product, + const char *version); +uint8_t *smbios_get_table_legacy(size_t *length); /* * SMBIOS spec defined tables