u-boot-brain/common
Lukas Auer b86f6d1e64 spl: opensbi: specify main hart as preferred boot hart
OpenSBI uses a relocation lottery to determine the hart to relocate
OpenSBI to its link address. In the U-Boot SPL boot flow, the main hart
schedules the secondary harts to enter OpenSBI before doing so itself.
One of the secondary harts will therefore always be the winner of the
relocation lottery. This is problematic if the link address ranges of
OpenSBI and U-Boot SPL overlap. OpenSBI will be relocated and therefore
overwrite U-Boot SPL while some harts may still run it, leading to code
corruption.

Avoid this problem by specifying the main hart as the preferred boot
hart to perform the OpenSBI relocation. The main hart will be the last
hart to enter OpenSBI, relocation can therefore occur safely.

The boot hart field was added to version 2 of the OpenSBI FW_DYNAMIC
info structure. The header file include/opensbi.h is synchronized with
include/sbi/fw_dynamic.h from the OpenSBI project to update the info
structure. The header file is recent as of commit
7a13beb21326 ("firmware: Add preferred boot HART field in struct
fw_dynamic_info").

Reported-by: Rick Chen <rick@andestech.com>
Suggested-by: Anup Patel <Anup.Patel@wdc.com>
Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Reviewed-by: Rick Chen <rick@andestech.com>
Tested-by: Rick Chen <rick@andestech.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
2019-12-10 08:23:10 +08:00
..
eeprom SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
init spl: implement stack usage check 2019-08-11 16:43:41 -04:00
spl spl: opensbi: specify main hart as preferred boot hart 2019-12-10 08:23:10 +08:00
android_ab.c crc32: Use the crc.h header for crc functions 2019-12-02 18:23:08 -05:00
autoboot.c common: Move command functions out of common.h 2019-12-02 18:25:02 -05:00
avb_verify.c common: Move ARM cache operations out of common.h 2019-12-02 18:24:58 -05:00
bedbug.c Consolidate bool type 2013-04-01 16:33:52 -04:00
bloblist.c crc32: Use the crc.h header for crc functions 2019-12-02 18:23:08 -05:00
board_f.c common: Move board_get_usable_ram_top() out of common.h 2019-12-02 18:25:04 -05:00
board_info.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
board_r.c common: Move enable/disable_interrupts out of common.h 2019-12-02 18:25:01 -05:00
boot_fit.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bootm_os.c bootm: vxworks: Support Linux compatible standard DTB for ARM and PPC 2019-12-03 08:43:23 -05:00
bootm.c common: Move enable/disable_interrupts out of common.h 2019-12-02 18:25:01 -05:00
bootretry.c common: Move get_ticks() function out of common.h 2019-12-02 18:23:13 -05:00
bootstage.c common: Move sorting functions to their own header file 2019-12-02 18:23:08 -05:00
bouncebuf.c common: Move ARM cache operations out of common.h 2019-12-02 18:24:58 -05:00
cli_hush.c hush: re-sequence includes 2019-11-07 18:01:13 -05:00
cli_readline.c common: Move get_ticks() function out of common.h 2019-12-02 18:23:13 -05:00
cli_simple.c common: Move command functions out of common.h 2019-12-02 18:25:02 -05:00
cli.c common: Move command functions out of common.h 2019-12-02 18:25:02 -05:00
command.c common: command: Fix manual relocation for repeatable command 2019-10-24 13:37:03 +02:00
common_fit.c common: Compile error with CONFIG_MULTI_DTB_FIT and not SPL 2018-11-09 10:44:50 -05:00
console.c common/console.c: Fix unused warning with console_doenv() 2019-11-06 22:54:28 -05:00
cros_ec.c sandbox: cros_ec: exynos: Drop use of cros_ec_get_error() 2018-11-20 19:14:22 -07:00
ddr_spd.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dfu.c usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers 2018-12-07 16:31:45 +01:00
dlmalloc.c dlmalloc: calloc: fix zeroing early allocations 2019-11-07 18:01:13 -05:00
dlmalloc.src Consolidate bool type 2013-04-01 16:33:52 -04:00
edid.c edid: fix edid_get_timing_validate() mode_valid lookup 2019-07-29 19:14:58 +02:00
exports.c board/ls2085rdb: Export functions for standalone AQ FW load apps 2015-07-20 11:44:37 -07:00
fdt_support.c common: fdt_support: add support for setting usable memory 2019-12-06 12:09:25 +01:00
flash.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
hash.c crc32: Use the crc.h header for crc functions 2019-12-02 18:23:08 -05:00
hwconfig.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
image-android-dt.c common: image-android-dt: Fix logic in print fdt info routine 2019-08-07 15:31:05 -04:00
image-android.c image: android: Support boot image v1 and v2 2019-10-15 09:56:04 -04:00
image-fdt.c image: fdt: copy possible optee nodes to a loaded devicetree 2019-11-14 07:09:34 -06:00
image-fit.c crc32: Use the crc.h header for crc functions 2019-12-02 18:23:08 -05:00
image-sig.c common: image-sig.c: Add manual relocation 2019-10-24 13:37:02 +02:00
image.c common: Move ARM cache operations out of common.h 2019-12-02 18:24:58 -05:00
iomux.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
iotrace.c common: Move get_ticks() function out of common.h 2019-12-02 18:23:13 -05:00
kallsyms.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
Kconfig mtd: rename CONFIG_NAND -> CONFIG_MTD_RAW_NAND 2019-12-03 23:04:10 -05:00
kgdb_stubs.c common: Move some cache and MMU functions out of common.h 2019-12-02 18:23:55 -05:00
kgdb.c Fix spelling of "occurred". 2016-05-02 18:37:09 -04:00
lcd_console_rotation.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
lcd_console.c common: Move serial functions out of common.h 2019-12-02 18:23:11 -05:00
lcd_simplefb.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
lcd.c common: Move ARM cache operations out of common.h 2019-12-02 18:24:58 -05:00
log_console.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
log.c log: Add a Kconfig option to set the default log level 2019-02-20 15:21:44 +08:00
lynxkdi.c Remove unnecessary instances of DECLARE_GLOBAL_DATA_PTR 2018-04-27 14:54:48 -04:00
main.c common: Move command functions out of common.h 2019-12-02 18:25:02 -05:00
Makefile common: Implement A/B metadata 2019-07-24 13:16:29 -04:00
malloc_simple.c malloc_simple: Add logging of allocations 2018-11-29 09:30:05 -07:00
memsize.c common/memsize.c: Increase save array for supporting memory size > 4GB 2018-07-10 16:55:59 -04:00
menu.c menu: don't bother going interactive with just one menu item 2019-07-24 13:16:29 -04:00
miiphyutil.c miiphy: Add function to retrieve MDIO bus list head 2018-10-24 14:45:36 -05:00
s_record.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
splash_source.c common: Move command functions out of common.h 2019-12-02 18:25:02 -05:00
splash.c splash: fix build breakage with newer llvm-7 2019-10-31 09:10:34 +01:00
stdio.c splash: display splash in DM_VIDEO configurations 2019-06-04 23:20:43 +02:00
system_map.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
update.c common: Move ARM cache operations out of common.h 2019-12-02 18:24:58 -05:00
usb_hub.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
usb_kbd.c usb: kbd: move USB_KBD_BOOT_REPORT_SIZE to usb.h 2019-11-25 13:28:53 +01:00
usb_storage.c usb: storage: Only clear READY flag on error 2019-10-31 12:13:40 +01:00
usb.c usb: Add nonblock argument to submit_int_msg 2019-09-11 10:11:29 +02:00
xyzModem.c spl: Allow tiny printf() to be controlled in SPL and TPL 2019-10-08 13:57:45 +08:00