u-boot/arch/arm/cpu/armv8
Heinrich Schuchardt 81ea00838c efi_loader: PSCI reset and shutdown
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 <xypron.glpk@gmx.de>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
2018-12-02 21:59:37 +01:00
..
fsl-layerscape Switch to driver model for eSDHC on Layerscape SoCs including LS1021A, 2018-09-29 11:47:32 -04:00
hisilicon SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
s32v234 SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
zynqmp arm64: zynqmp: Add new command for TCM initialization 2018-10-16 16:53:24 +02:00
cache.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
cache_v8.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
config.mk SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
cpu-dt.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
cpu.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
exceptions.S armv8: Reduce exception handling code 2018-08-03 19:53:54 -04:00
fwcall.c efi_loader: PSCI reset and shutdown 2018-12-02 21:59:37 +01:00
generic_timer.c arm: timer: sunxi: add Allwinner timer erratum workaround 2018-07-03 22:00:00 +05:30
Kconfig efi_loader: PSCI reset and shutdown 2018-12-02 21:59:37 +01:00
linux-kernel-image-header-vars.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
lowlevel_init.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
Makefile armv8: make SPL exception vectors optional 2018-08-03 19:53:54 -04:00
psci.S ARMv8: SError exception handling in PSCI exception vectors 2018-11-16 13:34:34 -05:00
sec_firmware.c armv8: sec_firmware: Add support for multiple loadables 2018-05-09 09:17:51 -05:00
sec_firmware_asm.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
smccc-call.S efi_loader: PSCI reset and shutdown 2018-12-02 21:59:37 +01:00
spin_table.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
spin_table_v8.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
start.S armv8: make SPL exception vectors optional 2018-08-03 19:53:54 -04:00
tlb.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
transition.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
u-boot-spl.lds SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
u-boot.lds efi_loader: Rename sections to allow for implicit data 2018-07-25 14:57:44 +02:00