u-boot-brain/common/spl
Masahiro Yamada 7b74c4b60b Revert "armv8: release slave cores from CPU_RELEASE_ADDR"
This reverts commit 8c36e99f21.

There is misunderstanding in commit 8c36e99f21 ("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@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2017-01-28 14:04:38 -05:00
..
Kconfig spl: move RAM boot support in separate file 2017-01-14 16:46:26 -05:00
Makefile spl: move RAM boot support in separate file 2017-01-14 16:46:26 -05:00
spl_dfu.c spl: dfu: adding dfu support functions for SPL-DFU 2016-09-27 23:30:19 +02:00
spl_ext.c spl: Remove inline ifdef check for EXT and FAT support 2017-01-20 15:37:59 -05:00
spl_fat.c spl: Remove inline ifdef check for EXT and FAT support 2017-01-20 15:37:59 -05:00
spl_fit.c spl: Update spl_load_simple_fit() to take an spl_image param 2016-10-06 15:08:54 -04:00
spl_mmc.c SPL: make struct spl_image 64-bit safe 2017-01-04 16:37:41 +01:00
spl_nand.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_net.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_nor.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_onenand.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_ram.c spl: move RAM boot support in separate file 2017-01-14 16:46:26 -05:00
spl_sata.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_spi.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_ubi.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_usb.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl_ymodem.c spl: Add a name to the SPL load-image methods 2016-12-09 08:40:13 -05:00
spl.c Revert "armv8: release slave cores from CPU_RELEASE_ADDR" 2017-01-28 14:04:38 -05:00