u-boot/arch/arm/include/asm
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
..
arch-am33xx clk: ti: add am33xx/am43xx spread spectrum clock support 2021-10-11 14:27:32 -04:00
arch-apple arm: apple: Add RTKit support 2022-02-10 16:44:23 -05:00
arch-armada8k SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-armv7 SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-aspeed doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
arch-bcm235xx SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-bcm281xx SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-bcmcygnus Remove CONFIG_SERIAL_MULTI 2021-11-12 14:18:17 -05:00
arch-bcmns3 board: ns3: add api to save boot parameters passed from BL31 2020-07-29 10:13:41 -04:00
arch-bcmnsp SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-ep93xx SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-fsl-layerscape Convert CONFIG_SYS_IMMR to Kconfig 2021-12-27 08:41:38 -05:00
arch-hi3660 common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
arch-hi3798cv200 poplar: clean up board level mmc initialization code 2019-01-25 12:12:57 -05:00
arch-hi6220 doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
arch-imx arm: imx: add i.MX8ULP cpu type and helper 2021-08-09 14:46:50 +02:00
arch-imx8 arm: imx8: Move container image header file to mach-imx 2021-08-09 14:46:50 +02:00
arch-imx8m imx8m: lock id_swap_bypass bit in tzc380 enable 2022-02-05 15:49:01 +01:00
arch-imx8ulp imx8ulp: clock: Handle the DDRLOCKED when setting DDR clock 2022-02-05 13:38:39 +01:00
arch-imxrt WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
arch-lpc32xx Convert CONFIG_SYS_NAND_BAD_BLOCK_POS to Kconfig 2021-10-06 09:16:23 -04:00
arch-ls102xa Convert CONFIG_SCSI_AHCI_PLAT et al to Kconfig 2022-02-09 09:16:48 -05:00
arch-mediatek mediatek: Drop dm.h header file 2020-08-03 22:19:54 -04:00
arch-meson arm: meson: remove static ethernet link setup 2021-04-06 11:10:29 +02:00
arch-mvebu km/spi: remove deprecated SPI flash driver code for KM Kirkwood boards 2019-07-11 10:58:03 +02:00
arch-mx5 WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
arch-mx6 mx6: crm_regs: drop BM_ANADIG_ANA_MISC0_REFTOP_VBGADJ 2022-02-05 15:49:02 +01:00
arch-mx7 WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
arch-mx7ulp WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
arch-mx27 treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
arch-mx31 spi: imx: Define register bits in the driver 2021-01-23 13:40:29 +01:00
arch-mxs treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
arch-octeontx arm: octeontx: Add headers for OcteonTX 2020-08-25 08:01:16 +02:00
arch-octeontx2 arm: octeontx2: Add headers for OcteonTX2 2020-08-25 08:01:16 +02:00
arch-omap3 arm: omap3: Make some memory functions static and clean headers 2022-02-21 08:35:40 -05:00
arch-omap4 arm: Don't include common.h in header files 2020-05-18 14:54:24 -04:00
arch-omap5 arm: mach-omap2: load/start remoteproc IPU1/IPU2 2022-02-08 09:41:27 -05:00
arch-orion5x SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-owl net: designware: s700: Add glue code for S700 mac 2020-07-07 17:11:58 -04:00
arch-px30 rockchip: add px30 architecture core 2019-11-17 17:23:24 +08:00
arch-pxa SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-rk322x rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3036 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3128 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3188 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3288 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3308 arm: Don't include common.h in header files 2020-05-18 14:54:24 -04:00
arch-rk3328 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3368 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3399 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-rk3568 rockchip: Add rk3568 architecture core 2021-06-18 14:36:24 +08:00
arch-rockchip doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
arch-rv1108 rockchip: add common header boot0.h and gpio.h for soc 2019-05-08 17:34:12 +08:00
arch-sa1100 Move architecture-specific includes to arch/$ARCH/include/asm 2010-04-13 09:13:12 +02:00
arch-stih410 treewide: Update email address Patrick Delaunay and Patrice Chotard 2020-12-09 10:57:50 +01:00
arch-stm32 gpio: stm32: create include file for driver private data 2021-11-10 17:03:36 +01:00
arch-stm32f4 gpio: stm32: create include file for driver private data 2021-11-10 17:03:36 +01:00
arch-stm32f7 gpio: stm32: create include file for driver private data 2021-11-10 17:03:36 +01:00
arch-stm32h7 gpio: stm32: create include file for driver private data 2021-11-10 17:03:36 +01:00
arch-stv0991 Convert CONFIG_SYS_HZ to Kconfig 2021-11-05 11:23:29 -04:00
arch-sunxi sunxi: Add F1C100s DRAM initial support 2022-02-04 00:09:57 +00:00
arch-tegra doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
arch-tegra20 doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
arch-tegra30 ARM: tegra: Use common header for PMU declarations 2019-06-05 09:16:33 -07:00
arch-tegra114 ARM: tegra: Use common header for PMU declarations 2019-06-05 09:16:33 -07:00
arch-tegra124 doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
arch-tegra186 SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
arch-tegra210 ARM: tegra: Use common header for PMU declarations 2019-06-05 09:16:33 -07:00
arch-vf610 WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
armv8 Revert most of the series for adding vexpress_aemv8r support 2021-09-03 10:42:15 -04:00
iproc-common configs: migrate CONFIG_SYS_ARM_CACHE_* in Kconfig 2020-05-01 11:34:01 -04:00
kona-common SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mach-imx imx: spl: Fix typo BMODE_EMI -> BMODE_EIM 2022-02-18 18:12:23 +01:00
proc-armv ARM: correct detection of thumb mode 2019-07-18 11:31:24 -04:00
ti-common nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
xen Revert "arch: arm/xen: add putc() for debugging" 2020-10-23 09:16:07 -04:00
acpi_table.h acpi: Add missing ARM acpi_table header 2021-01-18 15:14:15 -05:00
armv7.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
armv7_mpu.h common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
armv7m.h arm: armv7m: clean up armv7m unified code compilation 2018-09-10 21:19:33 -04:00
assembler.h arm: Migrate SYS_THUMB_BUILD to Kconfig, introduce SPL_SYS_THUMB_BUILD 2017-03-18 20:28:01 -04:00
atomic.h ARM: use asm-generic/atomic.h 2018-09-25 21:49:18 -04:00
barriers.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bitops.h common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
boot0-linux-kernel-header.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bootm.h arm: use CONFIG_SUPPORT_PASSING_ATAGS 2021-09-24 14:30:46 -04:00
byteorder.h armv8: Use __aarch64__ rather than CONFIG_ARM64 in some cases 2014-01-10 10:10:23 +01:00
cache.h arm: cp15: remove weak function arm_init_domains 2021-03-02 15:53:37 -05:00
config.h lmb: move CONFIG_LMB in Kconfig 2021-04-22 14:09:45 -04:00
davinci_rtc.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
dma-mapping.h arm: Don't include common.h in header files 2020-05-18 14:54:24 -04:00
ehci-omap.h usb: ehci-omap: Drop dead code 2022-02-23 05:25:17 +01:00
emif.h arm: Don't include common.h in header files 2020-05-18 14:54:24 -04:00
fsl_secure_boot.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
gic-v3.h Revert "arch: arm: use dt and UCLASS_SYSCON to get gic lpi details" 2021-10-31 08:46:29 -04:00
gic.h arm64 patch: gicv3 support 2014-04-08 00:15:12 +02:00
global_data.h driver: misc: Add MU and S400 API to communicate with Sentinel 2021-08-09 14:46:50 +02:00
gpio.h gpio: Introduce CONFIG_GPIO_EXTRA_HEADER to cleanup #ifdefs 2021-07-06 14:07:36 -04:00
handoff.h arm: Add arm handoff header file 2020-01-24 11:19:52 -05:00
hardware.h Move architecture-specific includes to arch/$ARCH/include/asm 2010-04-13 09:13:12 +02:00
io.h arm64: Update memcpy_{from, to}io() helpers 2021-07-28 19:30:22 -04:00
linkage.h arm: adapt asm/linkage.h from Linux 2012-05-15 08:31:26 +02:00
mach-types.h ARM: at91: remove references to RM9200DK 2021-09-21 10:08:24 +03:00
macro.h WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
memory.h Various, accumulated typos collected from around the tree. 2016-10-06 20:57:40 -04:00
omap_common.h arm: mach-omap2: load/start remoteproc IPU1/IPU2 2022-02-08 09:41:27 -05:00
omap_gpio.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
omap_i2c.h dm: i2c: use CONFIG_IS_ENABLED macro for DM_I2C/DM_I2C_GPIO 2021-02-21 06:08:00 +01:00
omap_mmc.h common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
omap_musb.h dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
omap_sec_common.h arm: Don't include common.h in header files 2020-05-18 14:54:24 -04:00
opcodes-sec.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
opcodes-virt.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
opcodes.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
pl310.h ARM: pl310: Add macro's for handling tag and data latency mask 2019-05-05 08:48:50 -04:00
posix_types.h armv8: Use __aarch64__ rather than CONFIG_ARM64 in some cases 2014-01-10 10:10:23 +01:00
processor.h Remove ${objtree}/include/asm/proc/ link 2014-06-11 16:27:05 -04:00
psci.h common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
ptrace.h Remove ${objtree}/include/asm/proc/ link 2014-06-11 16:27:05 -04:00
sections.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
secure.h treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
setjmp.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
setup.h treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
spin_table.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
spl.h arm: K3: am654: Add support for boot device detection 2018-09-11 08:32:55 -04:00
string.h arm64: Kconfig: Enable usage of optimized memset/memcpy/memmove 2021-09-24 07:49:16 -04:00
system.h armv8: Always unmask SErrors 2022-03-02 13:59:29 -05:00
types.h arch: types.h: factor out fixed width typedefs to int-ll64.h 2018-09-10 20:48:16 -04:00
u-boot-arm.h common: Move reset_misc() function to arch header 2020-01-17 13:27:30 -05:00
u-boot.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
unaligned.h arm64: core support 2014-01-09 16:08:44 +01:00
unified.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
utils.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
xen.h WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00