• Lukas Auer's avatar
    spl: opensbi: specify main hart as preferred boot hart · b86f6d1e
    Lukas Auer authored
    
    
    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's avatarRick Chen <rick@andestech.com>
    Suggested-by: default avatarAnup Patel <Anup.Patel@wdc.com>
    Signed-off-by: default avatarLukas Auer <lukas.auer@aisec.fraunhofer.de>
    Reviewed-by: Rick Chen's avatarRick Chen <rick@andestech.com>
    Tested-by: Rick Chen's avatarRick Chen <rick@andestech.com>
    Reviewed-by: default avatarAnup Patel <anup.patel@wdc.com>
    b86f6d1e
opensbi.h 1.75 KB