u-boot/arch/arm/cpu/armv7
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
..
bcm235xx SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bcm281xx SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bcmcygnus SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bcmnsp SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
iproc-common SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
kona-common SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
ls102xa arm: remove prototype for get_timer_masked 2018-10-10 13:35:09 -04:00
s5p-common arm: remove prototype for reset_timer_masked 2018-10-10 13:35:09 -04:00
stv0991 arm: remove prototype for get_timer_masked 2018-10-10 13:35:09 -04:00
sunxi arm: remove prototype for get_timer_masked 2018-10-10 13:35:09 -04:00
vf610 arm: remove prototype for get_timer_masked 2018-10-10 13:35:09 -04:00
arch_timer.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
cache_v7.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
cache_v7_asm.S 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
cp15.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
Kconfig ARM: HYP/non-sec: enable ARMV7_LPAE if HYP mode is supported 2018-07-25 14:57:43 +02: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 arm: armv7: allow unaligned memory access 2018-06-03 15:27:21 +02:00
mpu_v7r.c arm: v7R: Add support for enabling caches 2018-05-07 15:53:29 -04:00
nonsec_virt.S ARM: HYP/non-sec: migrate stack 2018-07-25 14:57:43 +02:00
psci-common.c psci: arm: remove armv7 function psci_save_target_pc 2018-05-07 11:52:55 -04:00
psci.S ARM: PSCI: initialize stack pointer on secondary CPUs 2018-07-23 10:53:12 +02:00
sctlr.S arm: armv7: allow unaligned memory access 2018-06-03 15:27:21 +02:00
smccc-call.S efi_loader: PSCI reset and shutdown 2018-12-02 21:59:37 +01:00
start.S ARM: armv7: Add early stack for erratum workarounds 2018-11-26 22:52:12 -05:00
syslib.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
virt-dt.c libfdt: move headers to <linux/libfdt.h> and <linux/libfdt_env.h> 2018-03-05 10:16:28 -05:00
virt-v7.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00