Skip to content
  • Eduardo Habkost's avatar
    smbios: Encode UUID according to SMBIOS specification · caad057b
    Eduardo Habkost authored
    Differently from older versions, SMBIOS version 2.6 is explicit about
    the encoding of UUID fields:
    
    > Although RFC 4122 recommends network byte order for all fields, the PC
    > industry (including the ACPI, UEFI, and Microsoft specifications) has
    > consistently used little-endian byte encoding for the first three fields:
    > time_low, time_mid, time_hi_and_version. The same encoding, also known as
    > wire format, should also be used for the SMBIOS representation of the UUID.
    >
    > The UUID {00112233-4455-6677-8899-AABBCCDDEEFF} would thus be represented
    > as 33 22 11 00 55 44 77 66 88 99 AA BB CC DD EE FF.
    
    The dmidecode tool implements this and decodes the above "wire format"
    when SMBIOS version >= 2.6. We moved from SMBIOS version 2.4 to 2.8 when
    we started building the SMBIOS entry point inside QEMU, on commit
    c97294ec
    
    .
    
    Change smbios_build_type_1_table() to encode the UUID as specified.
    
    To make sure we won't change the guest-visible UUID when upgrading to a
    newer QEMU version, keep the old behavior on pc-*-2.1 and older.
    
    Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    caad057b