03 Dec, 2018

1 commit

  • When an operating system started via bootefi tries to reset or power off
    this is done by calling the EFI runtime ResetSystem(). On most ARMv8 system
    the actual reset relies on PSCI. Depending on whether the PSCI firmware
    resides the hypervisor (EL2) or in the secure monitor (EL3) either an HVC
    or an SMC command has to be issued.

    The current implementation always uses SMC. This results in crashes on
    systems where the PSCI firmware is implemented in the hypervisor, e.g.
    qemu-arm64_defconfig.

    The logic to decide which call is needed based on the device tree is
    already implemented in the PSCI firmware driver. During the EFI runtime
    the device driver model is not available. But we can minimize code
    duplication by merging the EFI runtime reset and poweroff code with
    the PSCI firmware driver.

    As the same HVC/SMC problem is also evident for the ARMv8 do_poweroff
    and reset_misc routines let's move them into the same code module.

    Signed-off-by: Heinrich Schuchardt
    Reviewed-by: Sumit Garg
    Tested-by: Sumit Garg
    Signed-off-by: Alexander Graf

    Heinrich Schuchardt
     

18 Apr, 2017

1 commit

  • If the system is running PSCI firmware, the System Reset function
    (func ID: 0x80000009) is supposed to be handled by PSCI, that is,
    the SoC/board specific reset implementation should be moved to PSCI.
    U-Boot should call the PSCI service according to the arm-smccc
    manner.

    The arm-smccc is supported on ARMv7 or later. Especially, ARMv8
    generation SoCs are likely to run ARM Trusted Firmware BL31. In
    this case, U-Boot is a non-secure world boot loader, so it should
    not be able to reset the system directly.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

20 Jan, 2016

1 commit