From 627a054d6fdf86c382ad770841457af572fc5693 Mon Sep 17 00:00:00 2001
From: Mark Brown <>
Date: Thu, 1 Apr 2021 19:09:38 +0100
Subject: [PATCH v2 0/4] arm64: Booting clarifications and fine grained traps setup

Currently there are a number of areas where we are not explicit about
how system registers should be configured when booting the kernel,
provide more detailed guidance to help ensure people get things right.
I'm not entirely happy with the wording on use of specified reset values
so it is a separate patch at the end, I worry that the requirement is
too strict.

This was triggered by noticing that it was in spec to leave fine grained
traps to EL2 enabled so explicitly disable them at boot, this is sent as
part of the same series since doing so means we require that EL3 provide
access to fine grained traps in the same document.

 - Pull booting and FGT setup into a single series.
 - Require system registers at or below the level the kernel is entered
   to be initialised, not just those at that level.
 - Rather than documenting the desired EL2 setup for FGT add a general
   statement about how we expect registers to be set up.
 - Reorder register initialisation in el2_setup.h.
 - Document requirement for SCR_EL3.FGTEn to be 1.

Mark Brown (4):
  arm64: Document requirements for fine grained traps at boot
  arm64: Disable fine grained traps on boot
  arm64: Require that system registers at all visible ELs be initialized
  arm64: Document values for system registers on boot

 Documentation/arm64/booting.rst    | 15 ++++++++++++---
 arch/arm64/include/asm/el2_setup.h | 21 +++++++++++++++++++++
 arch/arm64/include/asm/sysreg.h    |  6 ++++++
 3 files changed, 39 insertions(+), 3 deletions(-)

base-commit: 1e28eed17697bcf343c6743f0028cc3b5dd88bf0
arm64: Document values for system registers on boot

When booting require that the system registers available at or below the
exception level the kernel is entered be initialised but do not specify
what values should be used in the general case, creating some potential
for issues if the kernel does not subsequently configure those registers
explicitly (for example if they are not yet used by the kernel) or where
their effects may create issues during early configuration.

Specify that where the architecture provides a reset value that value
must be used.

Signed-off-by: Mark Brown <>
1 file changed