u-boot-brain/arch/arm
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
..
cpu efi_loader: PSCI reset and shutdown 2018-12-02 21:59:37 +01:00
dts Improvements: 2018-12-01 14:17:27 -05:00
include rockchip: rk3399: Initialize CPU B clock. 2018-11-30 21:56:45 +01:00
lib arm: efi: Generate Microsoft PE format compliant images 2018-12-02 21:59:36 +01:00
mach-aspeed regmap: change regmap_init_mem() to take ofnode instead udevice 2018-05-07 15:49:51 -04:00
mach-at91 arm: at91: wdt: Convert watchdog driver to dm/dt 2018-11-16 13:34:34 -05:00
mach-bcm283x efi_loader: Convert runtime reset from switch to if statements 2018-06-14 10:52:14 +02:00
mach-bcmstb board: arm: Add support for Broadcom BCM7260 2018-09-10 21:19:31 -04:00
mach-davinci driver: net: consolidate ti's code in separate folder 2018-11-05 10:41:59 -06:00
mach-exynos Kconfig: Sort bool, default, select and imply options 2018-07-30 07:18:48 -04:00
mach-highbank SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-imx imx: mkimage: add size check to the u-boot.imx make target 2018-11-12 11:08:53 +01:00
mach-integrator env: Convert CONFIG_ENV_IS_IN... to a choice 2017-08-15 20:50:01 -04:00
mach-k3 armv7r: K3: Allow SPL to run only on core 0 2018-11-26 22:52:11 -05:00
mach-keystone SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-kirkwood Convert CONFIG_MII et al to Kconfig 2018-08-17 13:03:54 -04:00
mach-mediatek arm: MediaTek: add basic support for MT7623 boards 2018-11-28 23:04:50 -05:00
mach-meson ARM: meson: Add boot device discovery 2018-11-26 14:40:52 +01:00
mach-mvebu ARM: mvebu: add revision id for Armada-385 B0 2018-11-30 10:58:10 +01:00
mach-omap2 ARM: mach-omap2: Kconfig: Make SYS_MPUCLK dependent on AM33XX 2018-10-19 14:16:32 -04:00
mach-orion5x arm: remove prototype for get_timer_masked 2018-10-10 13:35:09 -04:00
mach-owl board: Add uCRobotics Bubblegum-96 board support 2018-07-09 15:25:23 -04:00
mach-qemu Kconfig: Sort bool, default, select and imply options 2018-07-30 07:18:48 -04:00
mach-rmobile ARM: rmobile: Generate fitting mem_map on Gen3 2018-11-02 15:57:13 +01:00
mach-rockchip rockchip: rk3188: use board_debug_uart_init() for UART io init 2018-11-30 22:00:11 +01:00
mach-s5pc1xx SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-snapdragon db410c: serial# env using msm board serial 2018-09-30 13:00:35 -04:00
mach-socfpga arm: socfpga: fix SPL booting from fpga OnChip RAM 2018-11-29 12:45:15 +01:00
mach-sti board: Add STMicroelectronics STiH410-B2260 support 2017-03-14 20:40:21 -04:00
mach-stm32 mach-stm32: Set MPU SDRAM size to 512MB for STM32F7/H7 2018-10-06 14:09:41 -04:00
mach-stm32mp misc: Update read() and write() methods to return bytes xfered 2018-11-20 19:14:22 -07:00
mach-sunxi sunxi: Fix memory 2-rank initialization for a33 cpu 2018-11-22 13:24:15 +05:30
mach-tegra linux/sizes.h: sync from kernel 2018-11-20 13:08:15 +01:00
mach-uniphier mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
mach-versal arm64: versal: Add Xilinx Versal Virtual QEMU board 2018-10-16 16:53:24 +02:00
mach-versatile SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-zynq Kconfig: Move config SYS_MALLOC_LEN to Kconfig for zynq 2018-08-06 08:44:35 +02:00
mach-zynqmp-r5 arm: zynqmp: Add ZynqMP minimal R5 support 2018-05-11 09:38:23 +02:00
thumb1/include/asm/proc-armv SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
config.mk efi_loader: Rename sections to allow for implicit data 2018-07-25 14:57:44 +02:00
Kconfig arm: MediaTek: add basic support for MT7629 boards 2018-11-28 23:04:50 -05:00
Kconfig.debug
Makefile arm: MediaTek: add basic support for MT7629 boards 2018-11-28 23:04:50 -05:00