[PATCH 07/40] efi: Correct call to write_acpi_tables()

Heinrich Schuchardt xypron.glpk at gmx.de
Wed Dec 1 18:59:11 CET 2021


On 12/1/21 17:02, Simon Glass wrote:
> This must be passed a ulong, not a u64. Fix it to avoid LTO warnings on
> sandbox.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>   lib/efi_loader/efi_acpi.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/efi_loader/efi_acpi.c b/lib/efi_loader/efi_acpi.c
> index a62c34009cc..016bbf6db33 100644
> --- a/lib/efi_loader/efi_acpi.c
> +++ b/lib/efi_loader/efi_acpi.c
> @@ -34,7 +34,7 @@ efi_status_t efi_acpi_register(void)
>   	 * a 4k-aligned address, so it is safe to assume that
>   	 * write_acpi_tables() will write the table at that address.
>   	 */
> -	write_acpi_tables(acpi);
> +	write_acpi_tables((ulong)acpi);

This is wrong: acpi is not an address in the virtual address space of
the sandbox. You must not pass it to use map_sysmem() to convert it to a
pointer.

Please change the parameter of write_acpi_tables() to be a pointer and
move all sandbox specific conversions to the sandbox code.

Best regards

Heinrich

>
>   	/* And expose them to our EFI payload */
>   	return efi_install_configuration_table(&acpi_guid,
>



More information about the U-Boot mailing list