On Tue, 25 Sep 2018 at 16:45, Grant Likely <grant.lik...@arm.com> wrote:
>
> On 24/09/2018 16:22, Ard Biesheuvel wrote:
> > 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
>
> Fixed
>
> >
> >>   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

Here's another one btw ^^^

> >> +-------------------------
> >> +
> >> +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.
>
> I was definitely writing out of ignorance here, and just matching what
> was done in the AArch32 blurb. Can you recommend some different text? I
> can also simply drop the blurb.
>

The UEFI spec is already very normative about the boot mode, so we can
just refer to that.

But that leaves the question whether we should push for a UEFI spec
update to permit HYP mode and thus long descriptors. Is anyone
interested in using that, e.g., for partitioning on
industrial/automotive?
_______________________________________________
boot-architecture mailing list
boot-architecture@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to