linux/arch
Ard Biesheuvel db227c19e6 ARM: 8985/1: efi/decompressor: deal with HYP mode boot gracefully
EFI on ARM only supports short descriptors, and given that it mandates
that the MMU and caches are on, it is implied that booting in HYP mode
is not supported.

However, implementations of EFI exist (i.e., U-Boot) that ignore this
requirement, which is not entirely unreasonable, given that it makes
HYP mode inaccessible to the operating system.

So let's make sure that we can deal with this condition gracefully.
We already tolerate booting the EFI stub with the caches off (even
though this violates the EFI spec as well), and so we should deal
with HYP mode boot with MMU and caches either on or off.

- When the MMU and caches are on, we can ignore the HYP stub altogether,
  since we can carry on executing at HYP. We do need to ensure that we
  disable the MMU at HYP before entering the kernel proper.

- When the MMU and caches are off, we have to drop to SVC mode so that
  we can set up the page tables using short descriptors. In this case,
  we need to install the HYP stub as usual, so that we can return to HYP
  mode before handing over to the kernel proper.

Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
2020-06-13 11:11:18 +01:00
..
alpha alpha: Fix build around srm_sysrq_reboot_op 2020-06-11 13:05:24 -07:00
arc mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
arm ARM: 8985/1: efi/decompressor: deal with HYP mode boot gracefully 2020-06-13 11:11:18 +01:00
arm64 MIPS: 2020-06-12 11:05:52 -07:00
c6x This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
csky mmap locking API: use coccinelle to convert mmap_sem rwsem call sites 2020-06-09 09:39:14 -07:00
h8300 This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
hexagon mmap locking API: use coccinelle to convert mmap_sem rwsem call sites 2020-06-09 09:39:14 -07:00
ia64 mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
m68k m68knommu: collection of fixes for v5.8 2020-06-11 12:50:54 -07:00
microblaze mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
mips MIPS: 2020-06-12 11:05:52 -07:00
nds32 mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
nios2 nios2 update for v5.8-rc1 2020-06-12 11:55:11 -07:00
openrisc mmap locking API: convert mmap_sem API comments 2020-06-09 09:39:14 -07:00
parisc maccess: always use strict semantics for probe_kernel_read 2020-06-09 09:39:15 -07:00
powerpc MIPS: 2020-06-12 11:05:52 -07:00
riscv RISC-V Patches for the 5.8 Merge Window, Part 2 2020-06-11 12:55:20 -07:00
s390 MIPS: 2020-06-12 11:05:52 -07:00
sh This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
sparc arch/sparc/mm/srmmu.c: fix build 2020-06-10 10:35:28 -07:00
um This pull request contains the following changes for UML: 2020-06-10 13:25:40 -07:00
unicore32 This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
x86 MIPS: 2020-06-12 11:05:52 -07:00
xtensa mmap locking API: convert mmap_sem API comments 2020-06-09 09:39:14 -07:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Kconfig This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00