mach-virt: Set VM's SMBIOS system version to mc->name
Instead of using "1.0" as the system version of SMBIOS, we should use mc->name for mach-virt machine type to be consistent other architectures. With this patch, "dmidecode -t 1" (e.g., "-M virt-2.12,accel=kvm") will show: Handle 0x0100, DMI type 1, 27 bytes System Information Manufacturer: QEMU Product Name: KVM Virtual Machine Version: virt-2.12 Serial Number: Not Specified ... instead of: Handle 0x0100, DMI type 1, 27 bytes System Information Manufacturer: QEMU Product Name: KVM Virtual Machine Version: 1.0 Serial Number: Not Specified ... For backward compatibility, we allow older machine types to keep "1.0" as the default system version. Signed-off-by: Wei Huang <wei@redhat.com> Reviewed-by: Andrew Jones <drjones@redhat.com> Message-id: 20180322212318.7182-1-wei@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
478a573a7d
commit
dfadc3bfb4
|
@ -1132,6 +1132,8 @@ static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)
|
||||||
|
|
||||||
static void virt_build_smbios(VirtMachineState *vms)
|
static void virt_build_smbios(VirtMachineState *vms)
|
||||||
{
|
{
|
||||||
|
MachineClass *mc = MACHINE_GET_CLASS(vms);
|
||||||
|
VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
|
||||||
uint8_t *smbios_tables, *smbios_anchor;
|
uint8_t *smbios_tables, *smbios_anchor;
|
||||||
size_t smbios_tables_len, smbios_anchor_len;
|
size_t smbios_tables_len, smbios_anchor_len;
|
||||||
const char *product = "QEMU Virtual Machine";
|
const char *product = "QEMU Virtual Machine";
|
||||||
|
@ -1145,7 +1147,8 @@ static void virt_build_smbios(VirtMachineState *vms)
|
||||||
}
|
}
|
||||||
|
|
||||||
smbios_set_defaults("QEMU", product,
|
smbios_set_defaults("QEMU", product,
|
||||||
"1.0", false, true, SMBIOS_ENTRY_POINT_30);
|
vmc->smbios_old_sys_ver ? "1.0" : mc->name, false,
|
||||||
|
true, SMBIOS_ENTRY_POINT_30);
|
||||||
|
|
||||||
smbios_get_tables(NULL, 0, &smbios_tables, &smbios_tables_len,
|
smbios_get_tables(NULL, 0, &smbios_tables, &smbios_tables_len,
|
||||||
&smbios_anchor, &smbios_anchor_len);
|
&smbios_anchor, &smbios_anchor_len);
|
||||||
|
@ -1646,8 +1649,11 @@ static void virt_2_11_instance_init(Object *obj)
|
||||||
|
|
||||||
static void virt_machine_2_11_options(MachineClass *mc)
|
static void virt_machine_2_11_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
|
VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
|
||||||
|
|
||||||
virt_machine_2_12_options(mc);
|
virt_machine_2_12_options(mc);
|
||||||
SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_11);
|
SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_11);
|
||||||
|
vmc->smbios_old_sys_ver = true;
|
||||||
}
|
}
|
||||||
DEFINE_VIRT_MACHINE(2, 11)
|
DEFINE_VIRT_MACHINE(2, 11)
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,7 @@ typedef struct {
|
||||||
bool no_its;
|
bool no_its;
|
||||||
bool no_pmu;
|
bool no_pmu;
|
||||||
bool claim_edge_triggered_timers;
|
bool claim_edge_triggered_timers;
|
||||||
|
bool smbios_old_sys_ver;
|
||||||
} VirtMachineClass;
|
} VirtMachineClass;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Reference in a new issue