[PATCH 1/1] x86: all firmware tables must be paragraph aligned
Simon Glass
sjg at chromium.org
Mon Jan 1 23:41:30 CET 2024
On Mon, Jan 1, 2024 at 4:52 AM Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> 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
> 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
paragraph-aligned
But was is a paragraph? Is that an x86 term?
> 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 at canonical.com>
> ---
> arch/x86/lib/tables.c | 2 ++
> 1 file changed, 2 insertions(+)
Reviewed-by: Simon Glass <sjg at chromium.org>
>
> diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
> index 5b5070f7ca..89d4d30a6a 100644
> --- a/arch/x86/lib/tables.c
> +++ b/arch/x86/lib/tables.c
> @@ -97,6 +97,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;
>
> --
> 2.43.0
>
More information about the U-Boot
mailing list