mach-virt: Set VM's SMBIOS system version to mc->desc
PATCH 1/1 mach-virt: Set VM's SMBIOS system version to mc->desc
Instead of using "1.0" as the system version of SMBIOS, we should use mc->desc for mach-virt machine type. 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: QEMU 2.12 ARM Virtual Machine 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
...--- hw/arm/virt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
hw/arm/virt.c +2 -1
@@ -1132,6 +1132,7 @@ static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)static void virt_build_smbios (VirtMachineState *vms) { +MachineClass *mc =MACHINE_GET_CLASS (vms);uint8_t *smbios_tables, *smbios_anchor;size_t smbios_tables_len, smbios_anchor_len;const char *product ="QEMU Virtual Machine" ;
@@ -1145,7 +1146,7 @@ static void virt_build_smbios(VirtMachineState *vms) }smbios_set_defaults ("QEMU" , product, -"1.0" , false, true,SMBIOS_ENTRY_POINT_30 ); + mc->desc, false, true,SMBIOS_ENTRY_POINT_30 );smbios_get_tables (NULL ,0 , &smbios_tables, &smbios_tables_len, &smbios_anchor, &smbios_anchor_len);
Signature · 1 line
2.14.3
Quoted 49 lines · Wei Huang
Instead of using "1.0" as the system version of SMBIOS, we should use
mc->descfor mach-virt machine type. 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: QEMU 2.12 ARM Virtual Machine 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 ...Signed-off-by Wei Huang <[email protected]>--- hw/arm/virt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)hw/arm/virt.c +2
-1@@ -1132,6 +1132,7 @@ static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)static void virt_build_smbios (VirtMachineState *vms) { +MachineClass *mc =MACHINE_GET_CLASS (vms);uint8_t *smbios_tables, *smbios_anchor;size_t smbios_tables_len, smbios_anchor_len;const char *product ="QEMU Virtual Machine" ;@@ -1145,7 +1146,7 @@ static void virt_build_smbios(VirtMachineState *vms) }smbios_set_defaults ("QEMU" , product, -"1.0" , false, true,SMBIOS_ENTRY_POINT_30 ); + mc->desc, false, true,SMBIOS_ENTRY_POINT_30 );smbios_get_tables (NULL ,0 , &smbios_tables, &smbios_tables_len, &smbios_anchor, &smbios_anchor_len);Signature · 1 line
2.14.3
I agree we should change the useless 1.0, but shouldn't we use mc->name instead of mc->desc? mc->name would make it consistent with pc-piix and q35 and also be a less verbose "version". We'd get e.g.
System Information
Manufacturer: QEMU
Product Name: KVM Virtual Machine
Version: virt-2.12
Serial Number: Not Specified
Thanks,
drew
Quoted 10 lines · Andrew Jones
I agree we should change the useless 1.0, but shouldn't we use
mc->nameinstead ofmc->desc?mc->namewould make it consistent with pc-piix and q35 and also be a less verbose "version". We'd get e.g.System Information
Manufacturer: QEMU
Product Name: KVM Virtual Machine
Version: virt-2.12
Serial Number: Not Specified
I would vote for consistency with x86, I think.
thanks
-- PMM
Quoted 6 lines · Peter Maydell
Quoted 5 lines · Andrew Jones
I agree we should change the useless 1.0, but shouldn't we use
mc->nameinstead ofmc->desc?mc->namewould make it consistent with pc-piix and q35 and also be a less verbose "version". We'd get e.g.
Quoted 7 lines
Quoted 5 lines
System Information
Manufacturer: QEMU
Product Name: KVM Virtual Machine
Version: virt-2.12
Serial Number: Not SpecifiedI would vote for consistency with x86, I think.
Drew and you like ->name better because of its conciseness consistency with x86. In my view virt-2.xx is not very informative. "Version" info in real machine could be verbose. Using my Thinkpad as example:
Manufacturer: LENOVO
Product Name: 20FAS1EG0N
Version: ThinkPad T460s
With that said, I will change it to mc->name.
Quoted 4 lines
thanks
-- PMM
Quoted 39 lines · Wei Huang
Instead of using "1.0" as the system version of SMBIOS, we should use
mc->descfor mach-virt machine type. 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: QEMU 2.12 ARM Virtual Machine 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 ...Signed-off-by Wei Huang <[email protected]>--- hw/arm/virt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)hw/arm/virt.c +1
-0@@ -1132,6 +1132,7 @@ static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)static void virt_build_smbios (VirtMachineState *vms) { +MachineClass *mc =MACHINE_GET_CLASS (vms);uint8_t *smbios_tables, *smbios_anchor;size_t smbios_tables_len, smbios_anchor_len;const char *product ="QEMU Virtual Machine" ;
hw/arm/virt.c static void virt_build_smbios(VirtMachineState *vms) · line 1149
Quoted 5 lines
hw/arm/virt.c +1
-1@@ -1145,7 +1146,7 @@ static void virt_build_smbios(VirtMachineState *vms) }smbios_set_defaults ("QEMU" , product, -"1.0" , false, true,SMBIOS_ENTRY_POINT_30 ); + mc->desc, false, true,SMBIOS_ENTRY_POINT_30 );
Surely this needs to be handled in back compatible manner so that existing machine types are not changed - only the new virt-2.12 machine type should get new format.
Regards,
Daniel
Signature · 3 lines
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
Quoted 42 lines · Daniel P. Berrangé
Quoted 41 lines · Wei Huang
Instead of using "1.0" as the system version of SMBIOS, we should use
mc->descfor mach-virt machine type. 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: QEMU 2.12 ARM Virtual Machine 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 ...Signed-off-by Wei Huang <[email protected]>--- hw/arm/virt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)hw/arm/virt.c +1
-0@@ -1132,6 +1132,7 @@ static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)static void virt_build_smbios (VirtMachineState *vms) { +MachineClass *mc =MACHINE_GET_CLASS (vms);uint8_t *smbios_tables, *smbios_anchor;size_t smbios_tables_len, smbios_anchor_len;const char *product ="QEMU Virtual Machine" ;@@ -1145,7 +1146,7 @@ static void virt_build_smbios(VirtMachineState *vms) }
Quoted 7 lines
hw/arm/virt.c static void virt_build_smbios(VirtMachineState *vms) · line 1149
Quoted 3 lines
hw/arm/virt.c +1
-1smbios_set_defaults ("QEMU" , product, -"1.0" , false, true,SMBIOS_ENTRY_POINT_30 ); + mc->desc, false, true,SMBIOS_ENTRY_POINT_30 );Surely this needs to be handled in back compatible manner so that existing machine types are not changed - only the new virt-2.12 machine type should get new format.
On real hardware this table can change when there's a firmware update, so I don't think any OS would expect it to stay the same across reboots. I also can't imagine any applications caring at all about this, particularly because it's currently the useless "1.0" string. I think we're safe to neglect compat code in this case, but I may be missing something. Is there a particular issue you're aware of that we'd risk hitting? (Well, besides Windows detecting its installation machine has "changed", invalidating its license or whatever. We don't yet have any Windows guests to worry about.)
Thanks,
drew
Quoted 51 lines · Andrew Jones
Quoted 42 lines · Daniel P. Berrangé
Quoted 41 lines · Wei Huang
Instead of using "1.0" as the system version of SMBIOS, we should use
mc->descfor mach-virt machine type. 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: QEMU 2.12 ARM Virtual Machine 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 ...Signed-off-by Wei Huang <[email protected]>--- hw/arm/virt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)hw/arm/virt.c +1
-0@@ -1132,6 +1132,7 @@ static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)static void virt_build_smbios (VirtMachineState *vms) { +MachineClass *mc =MACHINE_GET_CLASS (vms);uint8_t *smbios_tables, *smbios_anchor;size_t smbios_tables_len, smbios_anchor_len;const char *product ="QEMU Virtual Machine" ;@@ -1145,7 +1146,7 @@ static void virt_build_smbios(VirtMachineState *vms) }Quoted 7 lines
hw/arm/virt.c static void virt_build_smbios(VirtMachineState *vms) · line 1149
Quoted 3 lines
hw/arm/virt.c +1
-1smbios_set_defaults ("QEMU" , product, -"1.0" , false, true,SMBIOS_ENTRY_POINT_30 ); + mc->desc, false, true,SMBIOS_ENTRY_POINT_30 );Surely this needs to be handled in back compatible manner so that existing machine types are not changed - only the new virt-2.12 machine type should get new format.
Quoted 9 lines
On real hardware this table can change when there's a firmware update, so I don't think any OS would expect it to stay the same across reboots. I also can't imagine any applications caring at all about this, particularly because it's currently the useless "1.0" string. I think we're safe to neglect compat code in this case, but I may be missing something. Is there a particular issue you're aware of that we'd risk hitting? (Well, besides Windows detecting its installation machine has "changed", invalidating its license or whatever. We don't yet have any Windows guests to worry about.)
I don't have a particular scenario in mind - just the general rule that we don't change something which is guest visible without tieing it to machine type. I guess we've not tied machine types to specific SeaBIOS / UEFI snapshot builds though, so in terms of firmware changing we've already got that scenario.
Regards,
Daniel
Signature · 3 lines
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|