Signed-off-by: Gabriel Somlo somlo@cmu.edu --- hw/i386/smbios.c | 8 +++++++- include/hw/i386/smbios.h | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/hw/i386/smbios.c b/hw/i386/smbios.c index eb11095..25d2aa3 100644 --- a/hw/i386/smbios.c +++ b/hw/i386/smbios.c @@ -52,7 +52,7 @@ static struct { } type2;
static struct { - const char *manufacturer, *version, *serial, *asset; + const char *manufacturer, *version, *serial, *asset, *sku; } type3;
static struct { @@ -200,6 +200,10 @@ static const QemuOptDesc qemu_smbios_type3_opts[] = { .name = "asset", .type = QEMU_OPT_STRING, .help = "asset tag number", + },{ + .name = "sku", + .type = QEMU_OPT_STRING, + .help = "SKU number", }, { /* end of list */ } }; @@ -449,6 +453,7 @@ static void smbios_build_type_3_table(void) t->height = 0; t->number_of_power_cords = 0; t->contained_element_count = 0; + SMBIOS_TABLE_SET_STR(3, sku_number_str, type3.sku);
SMBIOS_BUILD_TABLE_POST; } @@ -826,6 +831,7 @@ void smbios_entry_add(QemuOpts *opts) save_opt(&type3.version, opts, "version"); save_opt(&type3.serial, opts, "serial"); save_opt(&type3.asset, opts, "asset"); + save_opt(&type3.sku, opts, "sku"); return; case 4: qemu_opts_validate(opts, qemu_smbios_type4_opts, &local_err); diff --git a/include/hw/i386/smbios.h b/include/hw/i386/smbios.h index 6be0445..7d5eac8 100644 --- a/include/hw/i386/smbios.h +++ b/include/hw/i386/smbios.h @@ -100,7 +100,7 @@ struct smbios_type_2 { /* contained elements follow */ } QEMU_PACKED;
-/* SMBIOS type 3 - System Enclosure (v2.3) */ +/* SMBIOS type 3 - System Enclosure (v2.7) */ struct smbios_type_3 { struct smbios_structure_header header; uint8_t manufacturer_str; @@ -116,6 +116,7 @@ struct smbios_type_3 { uint8_t height; uint8_t number_of_power_cords; uint8_t contained_element_count; + uint8_t sku_number_str; /* contained elements follow */ } QEMU_PACKED;