[PATCH v5 00/12] smbios: Deal with tables beyond 4GB

Heinrich Schuchardt xypron.glpk at gmx.de
Sun Dec 31 17:01:58 CET 2023


On 12/31/23 16:56, Heinrich Schuchardt wrote:
>
>
> Am 31. Dezember 2023 16:25:43 MEZ schrieb Simon Glass <sjg at chromium.org>:
>> When the malloc() region extends beyond 4GB on ARM we may end up with
>> an SMBIOS table in that region.
>>
>> Add support for writing an SMBIOS3 table, which supports a 64-bit
>> address.
>>
>> Note that this problem does not happen on x86 since it requires the
>> tables to be placed just below 1MB in memory, unless
>> CONFIG_BLOBLIST_TABLES is enabled.
>
> The ACPI specification only requires that a low memory RSDP exists on non-UEFI x86 systems.
>
> Nothing stops us from copying the RSDP only to low memory when not booting via EFI. Maybe that way we could have more common code. But this is beyond the scope of this series.
>

Same is true for the SMBIOS anchor. You could have all tables in high
memory and only copy the anchor to low memory when booting non-UEFI x86.

Best regards

Heinrich

>
>>
>> v5 drops support for SMBIOS2 tables as well. It also adds some changes
>> to memory mapping which should allow an EFI app (launched from sandbox)
>> to read the ACPI tables correctly.
>>
>> Changes in v5:
>> - Update comment to mention x86 alignment
>> - Add new patch to drop support for SMBIOS2 tables
>> - Add new patch to drop support for SMBIOS2 tables with EFI
>> - Add new patch to rename test dm_test_setup_ctx_and_base_tables()
>> - Add new patch to write pointers to tables instead of addresses
>> - Add new patch to correct smbios-table installation
>>
>> Changes in v4:
>> - Bring in this patch from Heinrich's series
>> - Check the start of the table rather than the end
>>
>> Changes in v2:
>> - Check the end of the table rather than the start.
>> - Add a new patch to correct gd_smbios_start()
>> - Add a note about why unmap_system() is called
>>
>> Heinrich Schuchardt (1):
>>   smbios: SMBIOS 3.0 (64-bit) Entry Point structure
>>
>> Simon Glass (11):
>>   smbios: Refactor 32-bit code into an else statement
>>   smbios: Move the rest of the SMBIOS2 code
>>   smbios: Use SMBIOS 3.0 to support an address above 4GB
>>   smbios: Correct gd_smbios_start()
>>   efi: Use the correct GUID for the SMBIOS table
>>   smbios: Require the caller to align the SMBIOS table
>>   smbios: Drop support for SMBIOS2 tables
>>   efi: smbios: Drop support for SMBIOS2 tables
>>   acpi: Rename test dm_test_setup_ctx_and_base_tables()
>>   acpi: Write pointers to tables instead of addresses
>>   efi: Correct smbios-table installation
>>
>> arch/sandbox/include/asm/io.h     | 16 +++++++++
>> arch/x86/lib/acpi_table.c         |  6 ++--
>> cmd/acpi.c                        | 12 +++----
>> include/asm-generic/global_data.h |  2 +-
>> include/efi_api.h                 |  4 +++
>> include/mapmem.h                  | 18 ++++++++++
>> include/smbios.h                  | 41 ++++++++++++++++++++---
>> lib/acpi/acpi.c                   | 12 +++----
>> lib/acpi/acpi_table.c             |  4 +--
>> lib/acpi/base.c                   |  4 +--
>> lib/efi_loader/efi_smbios.c       | 28 +++++++++-------
>> lib/smbios.c                      | 55 ++++++++++---------------------
>> test/dm/acpi.c                    | 14 ++++----
>> 13 files changed, 134 insertions(+), 82 deletions(-)
>>



More information about the U-Boot mailing list