Build full smbios type 32 (system boot info) and 127 (end-of-table) tables, and make them available via fw_cfg.
Signed-off-by: Gabriel Somlo somlo@cmu.edu --- hw/i386/smbios.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/hw/i386/smbios.c b/hw/i386/smbios.c index 6510ff3..b1f1d46 100644 --- a/hw/i386/smbios.c +++ b/hw/i386/smbios.c @@ -615,6 +615,22 @@ static void smbios_build_type_20_table(unsigned instance, SMBIOS_BUILD_TABLE_POST; }
+static void smbios_build_type_32_table(void) +{ + SMBIOS_BUILD_TABLE_PRE(32, 0x2000, true); /* required */ + + memset(t->reserved, 0, 6); + t->boot_status = 0; /* No errors detected */ + + SMBIOS_BUILD_TABLE_POST; +} + +static void smbios_build_type_127_table(void) +{ + SMBIOS_BUILD_TABLE_PRE(127, 0x7F00, true); /* required */ + SMBIOS_BUILD_TABLE_POST; +} + #define SMBIOS_SET_DEFAULT(field, value) \ if (!field) { \ field = value; \ @@ -754,6 +770,9 @@ uint8_t *smbios_get_table(size_t *length) } }
+ smbios_build_type_32_table(); + smbios_build_type_127_table(); + smbios_validate_table(); smbios_immutable = true; }