|
@@ -70,7 +70,7 @@ static SmbiosEntryPoint ep;
|
|
|
static int smbios_type4_count = 0;
|
|
|
static bool smbios_immutable;
|
|
|
static bool smbios_have_defaults;
|
|
|
-static uint32_t smbios_cpuid_version, smbios_cpuid_features, smbios_smp_sockets;
|
|
|
+static uint32_t smbios_cpuid_version, smbios_cpuid_features;
|
|
|
|
|
|
static DECLARE_BITMAP(have_binfile_bitmap, SMBIOS_MAX_TYPE+1);
|
|
|
static DECLARE_BITMAP(have_fields_bitmap, SMBIOS_MAX_TYPE+1);
|
|
@@ -539,14 +539,11 @@ opts_init(smbios_register_config);
|
|
|
*/
|
|
|
#define SMBIOS_21_MAX_TABLES_LEN 0xffff
|
|
|
|
|
|
-static void smbios_validate_table(MachineState *ms)
|
|
|
+static void smbios_validate_table(uint32_t expected_t4_count)
|
|
|
{
|
|
|
- uint32_t expect_t4_count = smbios_legacy ?
|
|
|
- ms->smp.cpus : smbios_smp_sockets;
|
|
|
-
|
|
|
- if (smbios_type4_count && smbios_type4_count != expect_t4_count) {
|
|
|
+ if (smbios_type4_count && smbios_type4_count != expected_t4_count) {
|
|
|
error_report("Expected %d SMBIOS Type 4 tables, got %d instead",
|
|
|
- expect_t4_count, smbios_type4_count);
|
|
|
+ expected_t4_count, smbios_type4_count);
|
|
|
exit(1);
|
|
|
}
|
|
|
|
|
@@ -634,7 +631,7 @@ static void smbios_build_type_1_fields(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-uint8_t *smbios_get_table_legacy(MachineState *ms, size_t *length)
|
|
|
+uint8_t *smbios_get_table_legacy(uint32_t expected_t4_count, size_t *length)
|
|
|
{
|
|
|
if (!smbios_legacy) {
|
|
|
*length = 0;
|
|
@@ -644,7 +641,7 @@ uint8_t *smbios_get_table_legacy(MachineState *ms, size_t *length)
|
|
|
if (!smbios_immutable) {
|
|
|
smbios_build_type_0_fields();
|
|
|
smbios_build_type_1_fields();
|
|
|
- smbios_validate_table(ms);
|
|
|
+ smbios_validate_table(expected_t4_count);
|
|
|
smbios_immutable = true;
|
|
|
}
|
|
|
*length = smbios_entries_len;
|
|
@@ -1235,10 +1232,9 @@ void smbios_get_tables(MachineState *ms,
|
|
|
smbios_build_type_2_table();
|
|
|
smbios_build_type_3_table();
|
|
|
|
|
|
- smbios_smp_sockets = ms->smp.sockets;
|
|
|
- assert(smbios_smp_sockets >= 1);
|
|
|
+ assert(ms->smp.sockets >= 1);
|
|
|
|
|
|
- for (i = 0; i < smbios_smp_sockets; i++) {
|
|
|
+ for (i = 0; i < ms->smp.sockets; i++) {
|
|
|
smbios_build_type_4_table(ms, i);
|
|
|
}
|
|
|
|
|
@@ -1284,7 +1280,7 @@ void smbios_get_tables(MachineState *ms,
|
|
|
smbios_build_type_41_table(errp);
|
|
|
smbios_build_type_127_table();
|
|
|
|
|
|
- smbios_validate_table(ms);
|
|
|
+ smbios_validate_table(ms->smp.sockets);
|
|
|
smbios_entry_point_setup();
|
|
|
smbios_immutable = true;
|
|
|
}
|