Message ID | 20240227154749.1818189-5-imammedo@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Workaround Windows failing to find 64bit SMBIOS entry point with SeaBIOS | expand |
> On 27-Feb-2024, at 21:17, Igor Mammedov <imammedo@redhat.com> wrote: > > smbios_get_tables() bails out right away if leagacy mode is enabled > and won't generate any SMBIOS tables. At the same time x86 specific > fw_cfg_build_smbios() will genarate legacy tables and then proceed > to preparing temporary mem_array for useless call to > smbios_get_tables() and then discard it. > > Drop legacy related check in smbios_get_tables() and return from > fw_cfg_build_smbios() early if legacy tables where built without > proceeding to non legacy part of the function. > > Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Ani Sinha <anisinha@redhat.com> > --- > hw/i386/fw_cfg.c | 1 + > hw/smbios/smbios.c | 6 ------ > 2 files changed, 1 insertion(+), 6 deletions(-) > > diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c > index 98a478c276..a635234e68 100644 > --- a/hw/i386/fw_cfg.c > +++ b/hw/i386/fw_cfg.c > @@ -74,6 +74,7 @@ void fw_cfg_build_smbios(PCMachineState *pcms, FWCfgState *fw_cfg) > if (smbios_tables) { > fw_cfg_add_bytes(fw_cfg, FW_CFG_SMBIOS_ENTRIES, > smbios_tables, smbios_tables_len); > + return; > } > > /* build the array of physical mem area from e820 table */ > diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c > index a3c4e52ce9..8e86c62184 100644 > --- a/hw/smbios/smbios.c > +++ b/hw/smbios/smbios.c > @@ -1106,12 +1106,6 @@ void smbios_get_tables(MachineState *ms, > { > unsigned i, dimm_cnt, offset; > > - if (smbios_legacy) { > - *tables = *anchor = NULL; > - *tables_len = *anchor_len = 0; > - return; > - } > - > if (!smbios_immutable) { > smbios_build_type_0_table(); > smbios_build_type_1_table(); > -- > 2.39.3 >
diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c index 98a478c276..a635234e68 100644 --- a/hw/i386/fw_cfg.c +++ b/hw/i386/fw_cfg.c @@ -74,6 +74,7 @@ void fw_cfg_build_smbios(PCMachineState *pcms, FWCfgState *fw_cfg) if (smbios_tables) { fw_cfg_add_bytes(fw_cfg, FW_CFG_SMBIOS_ENTRIES, smbios_tables, smbios_tables_len); + return; } /* build the array of physical mem area from e820 table */ diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index a3c4e52ce9..8e86c62184 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -1106,12 +1106,6 @@ void smbios_get_tables(MachineState *ms, { unsigned i, dimm_cnt, offset; - if (smbios_legacy) { - *tables = *anchor = NULL; - *tables_len = *anchor_len = 0; - return; - } - if (!smbios_immutable) { smbios_build_type_0_table(); smbios_build_type_1_table();
smbios_get_tables() bails out right away if leagacy mode is enabled and won't generate any SMBIOS tables. At the same time x86 specific fw_cfg_build_smbios() will genarate legacy tables and then proceed to preparing temporary mem_array for useless call to smbios_get_tables() and then discard it. Drop legacy related check in smbios_get_tables() and return from fw_cfg_build_smbios() early if legacy tables where built without proceeding to non legacy part of the function. Signed-off-by: Igor Mammedov <imammedo@redhat.com> --- hw/i386/fw_cfg.c | 1 + hw/smbios/smbios.c | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-)