[U-Boot] [PATCH] Revert "armv8: release slave cores from CPU_RELEASE_ADDR"
Simon Glass
sjg at chromium.org
Fri Jan 27 22:30:03 CET 2017
On 20 January 2017 at 02:30, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
>
> This reverts commit 8c36e99f211104fd7dcbf0669a35a47ce5e154f5.
>
> There is misunderstanding in commit 8c36e99f2111 ("armv8: release
> slave cores from CPU_RELEASE_ADDR"). How to bring the slave cores
> into U-Boot proper is platform-specific. So, it should be cared
> in SoC/board files instead of common/spl/spl.c. As you see SPL
> is the acronym of Secondary Program Loader, there is generally
> something that runs before SPL (the First one is usually Boot ROM).
>
> How to wake up slave cores from the Boot ROM is really SoC specific.
> So, the intention for the spin table support is to bring the slave
> cores into U-Boot proper in an SoC specific manner. (this must be
> done after relocation. see below.)
>
> If you bring the slaves into SPL, it is SoC own code responsibility
> to transfer them to U-Boot proper. The Spin Table defines the
> interface between a boot-loader and Linux kernel. It is unrelated
> to the interface between SPL and U-Boot proper.
>
> One more thing is missing in the commit; spl_image->entry_point
> points to the entry address of U-Boot *before* relocation. U-Boot
> relocates itself between board_init_f() and board_init_r(). This
> means the master CPU sees the different copy of the spin code than
> the slave CPUs enter. The spin_table_update_dt() protects the code
> *after* relocation. As a result, the slave CPUs spin in unprotected
> code, which leads to unstable behavior.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
> ---
>
> common/spl/spl.c | 8 --------
> 1 file changed, 8 deletions(-)
Reviewed-by: Simon Glass <sjg at chromium.org>
More information about the U-Boot
mailing list