[PATCH 1/2] Fix x86 baytrail boot flow.
Tom Rini
trini at konsulko.com
Tue Feb 3 19:01:59 CET 2026
On Mon, Jul 14, 2025 at 04:02:48PM -0500, Eric Schikschneit wrote:
> It was found that on modern versions of GCC the transition from low level
> assembly into the C function 'fsp_find_header' was no longer valid. A detailed
> step by step analysis with GDB showed that various registers were not being
> initialized properly which would result in the hardware to fail to setup the
> Cache As Ram (CAR) portion. This failure cascades down into later stages of
> initialization because there is no valid stack, or memory for later functions.
>
> The function 'fsp_find_header' has been rewritten in assembly, which should
> no longer be dependant on a specific version of GCC in order to be usable on
> actual hardware.
>
> Testing was done using GCC 11.4.0 on Ubuntu 22.04.
> Hardware used for verification: Intel E3845 SoC
>
> Patch 1 of 2
>
> Upstream-Status: Pending
>
> Signed-off-by: Eric Schikschneit <eric.schikschneit at novatechautomation.com>
Sorry for the delayed response here.
[snip]
> diff --git a/common/board_f.c b/common/board_f.c
> index 442b8349d08..3a9ae741d97 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -860,6 +860,7 @@ __weak int clear_bss(void)
> }
>
> static const init_fnc_t init_sequence_f[] = {
> + arch_fsp_init, // FSP on platforms like baytrail MUST be done before memory ops
> setup_mon_len,
> #ifdef CONFIG_OF_CONTROL
> fdtdec_setup,
> diff --git a/include/init.h b/include/init.h
> index 9a1951d10a0..21d9cea30f6 100644
> --- a/include/init.h
> +++ b/include/init.h
> @@ -68,6 +68,15 @@ int mach_cpu_init(void);
> */
> int arch_fsp_init_r(void);
>
> +/**
> + * arch_fsp_init() - perform firmware support package init
> + *
> + * Where U-Boot relies on binary blobs to handle part of the system init, this
> + * function can be used to set up the blobs. This is used on some Intel
> + * platforms.
> + */
> +int arch_fsp_init(void);
> +
> int dram_init(void);
>
> /**
Doing it this way will break other architectures. Can we just call the
function needed inside of x86 assembly?
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20260203/46fbca5e/attachment.sig>
More information about the U-Boot
mailing list