u-boot/arch/arm
Andre Przywara 6c7691edd5 armv8: Always unmask SErrors
The ARMv8 architecture describes the "SError interrupt" as the fourth
kind of exception, next to synchronous exceptions, IRQs, and FIQs.
Those SErrors signal exceptional conditions from which the system might
not easily recover, and are normally generated by the interconnect as a
response to some bus error. A typical situation is access to a
non-existing memory address or device, but it might be deliberately
triggered by a device as well.
The SError interrupt replaces the Armv7 asynchronous abort.

Trusted Firmware enters U-Boot (BL33) typically with SErrors masked,
and we never enable them. However any SError condition still triggers
the SError interrupt, and this condition stays pending, it just won't be
handled. If now later on the Linux kernel unmasks the "A" bit in PState,
it will immediately take the exception, leading to a kernel crash.
This leaves many people scratching their head about the reason for
this, and leads to long debug sessions, possibly looking at the wrong
places (the kernel, but not U-Boot).

To avoid the situation, just unmask SErrors early in the ARMv8 boot
process, so that the U-Boot exception handlers reports them in a timely
manner. As SErrors are typically asynchronous, the register dump does
not need to point at the actual culprit, but it should happen very
shortly after the condition.

For those exceptions to be taken, we also need to route them to EL2,
if U-Boot is running in this exception level.

This removes the respective code snippet from the Freescale lowlevel
routine, as this is now handled in generic ARMv8 code.

Reported-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2022-03-02 13:59:29 -05:00
..
cpu armv8: Always unmask SErrors 2022-03-02 13:59:29 -05:00
dts Merge branch '2022-02-21-platform-updates' 2022-02-21 08:53:24 -05:00
include armv8: Always unmask SErrors 2022-03-02 13:59:29 -05:00
lib efi_loader: fix SectionAlignment, FileAlignment 2022-01-15 10:57:22 +01:00
mach-apple arm: apple: Switch to fully dynamic mem layout 2022-02-28 10:33:45 -05:00
mach-aspeed ast2600: spl: Locate load buffer in DRAM space 2021-11-17 17:05:00 -05:00
mach-at91 Convert CONFIG_AT91_EFLASH to Kconfig 2022-01-21 14:01:35 -05:00
mach-bcm283x doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mach-bcmstb
mach-cortina
mach-davinci Finish conversion of CONFIG_SYS_CLK_FREQ to Kconfig 2021-12-27 16:20:18 -05:00
mach-exynos Pull request doc-2022-04-rc1 2022-01-20 09:39:45 -05:00
mach-highbank
mach-imx imx8m: Drop unused function env_get_offset 2022-02-19 14:46:54 +01:00
mach-integrator
mach-ipq40xx
mach-k3 arm: j721e: Add support for selecting DT based on board name 2022-02-16 14:19:30 -05:00
mach-keystone arch/arm/mach-keystone/ddr3.c: Fix spelling of "resetting". 2022-01-13 07:57:50 -05:00
mach-kirkwood Convert CONFIG_SYS_IDE_MAXBUS et al to Kconfig 2022-02-09 09:16:47 -05:00
mach-lpc32xx
mach-mediatek
mach-meson
mach-mvebu arm: mvebu: spl: Add option to reset the board on DDR training failure 2022-02-17 14:17:07 +01:00
mach-nexell Convert CONFIG_CONS_INDEX et al to Kconfig 2021-12-27 08:41:38 -05:00
mach-octeontx Convert CONFIG_SYS_PCI_64BIT to Kconfig 2021-12-27 16:20:17 -05:00
mach-octeontx2 Convert CONFIG_SYS_PCI_64BIT to Kconfig 2021-12-27 16:20:17 -05:00
mach-omap2 arm: omap3: Make some memory functions static and clean headers 2022-02-21 08:35:40 -05:00
mach-orion5x Convert CONFIG_88F5182 et al to Kconfig 2021-12-27 16:20:19 -05:00
mach-owl
mach-qemu
mach-rmobile
mach-rockchip - disable CONFIG_NET_RANDOM_ETHADDR when unnecessary on amlogic based configs 2022-01-09 07:56:31 -05:00
mach-s5pc1xx doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mach-snapdragon
mach-socfpga arm: socfpga: arria10: Enable double peripheral RBF configuration 2021-12-17 12:58:01 +08:00
mach-sti
mach-stm32
mach-stm32mp configs: stm32mp15: Enable OF_BOARD flag 2022-01-24 11:03:21 +01:00
mach-sunxi mach-sunxi: Add support for SUNIV architecture 2022-02-04 00:09:57 +00:00
mach-tegra Merge https://source.denx.de/u-boot/custodians/u-boot-marvell 2022-01-20 12:40:20 -05:00
mach-u8500
mach-uniphier
mach-versal xilinx: Remove GPIO_EXTRA_HEADER selection 2022-02-15 13:06:13 +01:00
mach-versatile
mach-zynq ARM: zynq: Fix debug uart initialization 2022-02-21 13:20:24 +01:00
mach-zynqmp arm64: zynqmp: Fix debug uart initialization 2022-02-21 13:20:29 +01:00
mach-zynqmp-r5 Convert CONFIG_CPU_FREQ_HZ to Kconfig 2021-12-27 16:20:19 -05:00
thumb1/include/asm/proc-armv
config.mk
Kconfig Xilinx changes for v2022.04-rc3 2022-02-21 08:32:02 -05:00
Kconfig.debug
Makefile