aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/lib
diff options
context:
space:
mode:
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2024-01-02 00:11:44 +0100
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2024-04-20 10:15:03 +0200
commit52c62acc349a0ec1ba26ae497913ad34ee3de733 (patch)
tree05e88b4e7c30aba16e152762a23f1aa802ed604a /arch/x86/lib
parent85177b2cf4e9e92eb8454430ed64ecad69df9f92 (diff)
downloadu-boot-52c62acc349a0ec1ba26ae497913ad34ee3de733.zip
u-boot-52c62acc349a0ec1ba26ae497913ad34ee3de733.tar.gz
u-boot-52c62acc349a0ec1ba26ae497913ad34ee3de733.tar.bz2
x86: all firmware tables must be paragraph aligned
On qemu-x86_64_defconfig the following was observed: => efidebug tables 00000000000f0074 eb9d2d31-2d88-11d3-9a16-0090273fc14d SMBIOS table The SMBIOS configuration table does not point to a paragraph-aligned (16 byte aligned) address. The reason is that in write_tables() rom_addr is not aligned and copied to gd->arch.smbios_start. The Simple Firmware Interface requires that the SFI table is paragraph- aligned but our code does not guarantee this. As all tables written in write_tables() must be paragraph-aligned, we should implement the address rounding in write_tables() and not in table specific routines like copy_pirq_routing_table(). Add paragraph-alignment in write_tables(). Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/x86/lib')
-rw-r--r--arch/x86/lib/tables.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
index 12eae17..1095dc9 100644
--- a/arch/x86/lib/tables.c
+++ b/arch/x86/lib/tables.c
@@ -98,6 +98,8 @@ int write_tables(void)
int size = table->size ? : CONFIG_ROM_TABLE_SIZE;
u32 rom_table_end;
+ rom_addr = ALIGN(rom_addr, 16);
+
if (!strcmp("smbios", table->name))
gd->arch.smbios_start = rom_addr;