On Mon, 24 Sep 2018 at 15:54, Grant Likely <grant.lik...@arm.com> wrote:
>
> Fill out the requirements for AArch32 systems. Not much needs to be
> specified here other than the different privilege modes defined by
> ARMv7 and below.
>
> Resolves: #15
> Signed-off-by: Grant Likely <grant.lik...@arm.com>
> ---
>  source/chapter1-about.rst       | 19 +++++++++++--------
>  source/chapter2-uefi.rst        | 32 ++++++++++++++++++++------------
>  source/chapter3-secureworld.rst | 18 ++++++++++++++----
>  source/index.rst                |  1 +
>  4 files changed, 46 insertions(+), 24 deletions(-)
>
> diff --git a/source/chapter1-about.rst b/source/chapter1-about.rst
> index d1c6d1d..4d70b2a 100644
> --- a/source/chapter1-about.rst
> +++ b/source/chapter1-about.rst
> @@ -107,9 +107,8 @@ The following guiding principles are used while 
> developing the EBBR specificatio
>  - Support multiple architectures
>
>    Any architecture can implement the EBBR requirements.
> -
> -  .. note::
> -     At the time of writing this document only addresses AArch64, but 
> AArch32 and others architectures are expected.
> +  Architecture specific requirements will clearly marked as to which
> +  architecture(s) they apply.
>
>  - Design for common embedded hardware
>
> @@ -139,7 +138,7 @@ The following guiding principles are used while 
> developing the EBBR specificatio
>  Scope
>  =====
>  This document defines the boot and runtime services that are expected by an
> -Operating System or hypervisor, for an Arm embedded device, which follows the
> +Operating System or hypervisor, for a device which follows the
>  UEFI specification [UEFI]_.
>
>  This specification defines the boot and runtime services for a physical 
> system,
> @@ -180,6 +179,10 @@ This document uses the following terms and abbreviations.
>        The 64-bit Arm instruction set used in AArch64 state.
>        All A64 instructions are 32 bits.
>
> +   AArch32
> +      Arm 32-bit architectures. AArch32 is a roll up term referring to all
> +      32-bit versions of the Arm architecture starting at ARMv4.
> +
>     AArch64 state
>        The Arm 64-bit Execution state that uses 64-bit general purpose
>        registers, and a 64-bit program counter (PC), Stack Pointer (SP), and
> @@ -193,19 +196,19 @@ This document uses the following terms and 
> abbreviations.
>        and which uses boot time services.
>
>     EL0
> -      The lowest Exception level. The Exception level that is used to execute
> +      The lowest Exception level on AArch64. The Exception level that is 
> used to execute
>        user applications, in Non-secure state.
>
>     EL1
> -      Privileged Exception level. The Exception level that is used to execute
> +      Privileged Exception level on AArch64. The Exception level that is 
> used to execute
>        Operating Systems, in Non-secure state.
>
>     EL2
> -      Hypervisor Exception level. The Exception level that is used to execute
> +      Hypervisor Exception level on AArch64. The Exception level that is 
> used to execute
>        hypervisor code. EL2 is always in Non-secure state.
>
>     EL3
> -      Secure Monitor Exception level. The Exception level that is used to
> +      Secure Monitor Exception level on AArch64. The Exception level that is 
> used to
>        execute Secure Monitor code, which handles the transitions between
>        Non-secure and Secure states.  EL3 is always in Secure state.
>
> diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst
> index f89ac04..7fd8aa6 100644
> --- a/source/chapter2-uefi.rst
> +++ b/source/chapter2-uefi.rst
> @@ -29,19 +29,27 @@ The system firmware must implement support for MBR, GPT 
> and El Torito partitioni
>  UEFI System Environment and Configuration
>  =========================================
>
> -AArch64 Exception Levels
> -------------------------
> -
> -The resident AArch64 UEFI boot-time environment is specified to "Use the
> -highest 64-bit Non-secure privilege level available".
> -This level is either EL1 or EL2, depending on whether or not virtualization 
> is
> -used or supported.
> +The resident UEFI boot-time environment shall use the highest non-secure
> +privilege level available.
> +The exact meaning of this is architecture dependant, as detailed below.
>
> -Resident UEFI firmware might target a specific Exception level.
> +Resident UEFI firmware might target a specific priviledge level.

privilege

>  In contrast, UEFI Loaded Images, such as thirdparty drivers and boot
>  applications, must not contain any built-in assumptions that they are to be
> -loaded at a given Exception level during boot time, since they can 
> legitimately
> -be loaded into EL1 or EL2.
> +loaded at a given priviledge level during boot time since they can, for 
> example,
> +legitimately be loaded into either EL1 or EL2 on AArch64.
> +
> +AArch32 Priviledge Levels
> +-------------------------
> +
> +UEFI shall execute at either PL1 (svc) or PL2 (hyp),
> +depending on whether or not virtualization is used and supported.
> +

Unfortunately, the UEFI spec currently does not permit booting in HYP
mode, and since it also mandates short descriptors, this needs a bit
of discussion (and a fair amount of EDK2 code) to support.

> +AArch64 Exception Levels
> +------------------------
> +
> +UEFI shall execute as 64-bit code in AArch64 model at either EL1 or EL2,
> +depending on whether or not virtualization is used or supported.
>
>  UEFI Boot at EL2
>  ^^^^^^^^^^^^^^^^
> @@ -112,8 +120,8 @@ must be provided.
>  Runtime Exception Level
>  -----------------------
>
> -UEFI 2.7 enables runtime services to be supported at either EL1 or EL2, with
> -appropriate virtual address mappings.
> +On AArch64, UEFI 2.7 enables runtime services to be supported at either
> +EL1 or EL2, with appropriate virtual address mappings.
>  When called, subsequent runtime service calls must be from the same Exception
>  level.
>
> diff --git a/source/chapter3-secureworld.rst b/source/chapter3-secureworld.rst
> index 25d24f5..4e9fa61 100644
> --- a/source/chapter3-secureworld.rst
> +++ b/source/chapter3-secureworld.rst
> @@ -4,10 +4,20 @@
>  Priviledged or Secure Firmware
>  ******************************
>
> -Multiprocessor Startup Protocol
> -===============================
> -Firmware resident in Trustzone EL3 must implement and conform to the
> -Power State Coordination Interface specification [PSCI]_.
> +AArch32 Multiprocessor Startup Protocol
> +=======================================
> +There is no standard multiprocessor startup or CPU power management mechanism
> +for ARMv7 and earlier platforms.
> +The OS is expected to use platform specific drivers for CPU power management.
> +Firmware must advertize the CPU power management mechanism in the Devicetree
> +system description or the ACPI tables so that the OS can enable the correct
> +driver.
> +At ExitBootServices() time, all secondary CPUs must be parked or powered off.
> +
> +AArch64 Multiprocessor Startup Protocol
> +=======================================
> +On AArch64 platforms, Firmware resident in Trustzone EL3 must implement and
> +conform to the Power State Coordination Interface specification [PSCI]_.
>
>  Platforms without EL3 must implement one of:
>
> diff --git a/source/index.rst b/source/index.rst
> index 7dc9e40..db47ce6 100644
> --- a/source/index.rst
> +++ b/source/index.rst
> @@ -36,6 +36,7 @@ Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
>     12 July 2018      0.6       - Response to comments on v0.6-pre1
>                                 - Add large note on implementation of runtime
>                                   modification of non-volatile variables
> +   TBD               TBD       - Add AArch32 details
>     ================= ========= =============================================
>
>  .. toctree::
> --
> 2.13.0
>
> _______________________________________________
> Arm.ebbr-discuss mailing list
> arm.ebbr-disc...@arm.com
_______________________________________________
boot-architecture mailing list
boot-architecture@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to