On Thu, May 6, 2021 at 2:24 AM Heinrich Schuchardt <xypron.g...@gmx.de> wrote:
>
> On 06.05.21 09:06, Atish Patra wrote:
> > This patch adds all the required content to make RISC-V EBBR compatible.
> > The additional content is not a lot given that we just need to update the
> > architecture specific sections for RISC-V. Rest of the document is ISA 
> > agnostic
> > anyways.
> >
> > Signed-off-by: Atish Patra <atish.pa...@wdc.com>
> > ---
> >  source/chapter1-about.rst       | 83 ++++++++++++++++++++++++++-------
> >  source/chapter2-uefi.rst        | 14 +++---
> >  source/chapter3-secureworld.rst | 12 +++++
> >  source/index.rst                |  3 ++
> >  source/references.rst           |  4 ++
> >  5 files changed, 92 insertions(+), 24 deletions(-)
> >
> > diff --git a/source/chapter1-about.rst b/source/chapter1-about.rst
> > index 52e61e80b7f9..feb3e7b59431 100644
> > --- a/source/chapter1-about.rst
> > +++ b/source/chapter1-about.rst
> > @@ -158,6 +158,8 @@ easily meet the stricter BBR requirements.
> >  By definition, all BBR compliant systems are also EBBR compliant, but the
> >  converse is not true.
> >
> > +This specification is also referenced by RISC-V platform specification 
> > [RVPLTSPEC]_.
> > +
> >  Conventions Used in this Document
> >  =================================
> >
> > @@ -181,14 +183,12 @@ This document uses the following terms and 
> > abbreviations.
> >
> >  .. glossary::
> >
> > +AARCH64
>
> This heading could simply be called ARM as the list comprises both 32
> and 64bit terms.
>
> > +-------
> >     A64
> >        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.
> > -
>
> Under the heading ARM we can keep this here.
>

Grant had earlier suggested to use separate headers for ARM/AARCH64.
I can keep them together if it is fine by him.

> >     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
> > @@ -197,10 +197,6 @@ This document uses the following terms and 
> > abbreviations.
> >     AArch64
> >        Execution state provides a single instruction set, A64.
> >
> > -   EFI Loaded Image
> > -      An executable image to be run under the UEFI environment,
> > -      and which uses boot time services.
> > -
> >     EL0
> >        The lowest Exception level on AArch64. The Exception level that is 
> > used to execute
> >        user applications, in Non-secure state.
> > @@ -218,17 +214,56 @@ This document uses the following terms and 
> > abbreviations.
> >        execute Secure Monitor code, which handles the transitions between
> >        Non-secure and Secure states.  EL3 is always in Secure state.
> >
> > -   Logical Unit (LU)
> > -      A logical unit (LU) is an externally addressable, independent entity
> > -      within a device. In the context of storage, a single device may use
> > -      logical units to provide multiple independent storage areas.
> > +ARM
> > +---
> > +   AArch32
> > +      Arm 32-bit architectures. AArch32 is a roll up term referring to all
> > +      32-bit versions of the Arm architecture starting at ARMv4.
>
> Just leave AArch32 where it is.
>
> >
> > -   OEM
> > -      Original Equipment Manufacturer. In this document, the final device
> > -      manufacturer.
> > +RISC-V
> > +------
> > +   HART
> > +      Hardware thread in RISC-V. This is the hardware execution context 
> > that contains
> > +      all the state mandated by the ISA.
> >
> > -   SiP
> > -      Silicon Partner. In this document, the silicon manufacturer.
> > +   HSM
> > +      Hart State Management (HSM) is an SBI extension that enables the 
> > supervisor
> > +      mode software to implement ordered booting.
> > +
> > +   HS Mode
> > +      Hypervisor-extended-supervisor mode which virtualizes the supervisor 
> > mode.
> > +
> > +   M Mode
> > +      Machine mode is the most secure and privileged mode in RISC-V.
> > +
> > +   RISC-V
> > +      An open standard Instruction Set Architecture (ISA) based on
> > +      Reduced Instruction Set Architecture (RISC).
> > +
> > +   RV32
> > +      32 bit execution mode in RISC-V.
> > +
> > +   RV64
> > +      64 bit execution mode in RISC-V.
> > +
> > +   RISC-V Supervisor Binary Interface (SBI)
> > +      Supervisor Binary Interface. This is an interface between SEE and 
> > supervisor
> > +      mode in RISC-V.
> > +
> > +   SEE
> > +      Supervisor Execution Environment in RISC-V. This can be M mode or HS 
> > mode.
> > +
> > +   S Mode
> > +      Supervisor mode is the next privilege mode after M mode where 
> > virtual memory is enabled.
>
> I am missing VS mode here.
>

Sure. I will add it.

> > +
> > +   U Mode
> > +      User mode is the least privilege mode where user-space application 
> > is expected to run.
> > +
> > +UEFI
> > +----
> > +   EFI Loaded Image
> > +      An executable image to be run under the UEFI environment,
> > +      and which uses boot time services.
> >
> >     UEFI
> >        Unified Extensible Firmware Interface.
> > @@ -240,3 +275,17 @@ This document uses the following terms and 
> > abbreviations.
> >     UEFI Runtime Services
> >        Functionality that is provided to an Operating System after the
> >        ExitBootServices() call.
> > +
> > +Miscellaneous
> > +-------------
> > +   Logical Unit (LU)
> > +      A logical unit (LU) is an externally addressable, independent entity
> > +      within a device. In the context of storage, a single device may use
> > +      logical units to provide multiple independent storage areas.
> > +
> > +   OEM
> > +      Original Equipment Manufacturer. In this document, the final device
> > +      manufacturer.
> > +
> > +   SiP
> > +      Silicon Partner. In this document, the silicon manufacturer.
> > diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst
> > index 53c962ab5c25..4810096a7fd5 100644
> > --- a/source/chapter2-uefi.rst
> > +++ b/source/chapter2-uefi.rst
> > @@ -209,24 +209,24 @@ Resident UEFI firmware might target a specific 
> > privilege level.
> >  In contrast, UEFI Loaded Images, such as third-party drivers and boot
> >  applications, must not contain any built-in assumptions that they are to be
> >  loaded at a given privilege level during boot time since they can, for 
> > example,
> > -legitimately be loaded into either EL1 or EL2 on AArch64.
> > +legitimately be loaded into either EL1 or EL2 on AArch64 and HS or S mode 
> > on RISC-V.
> >
> > -AArch64 Exception Levels
> > +Exception Levels
> >  ------------------------
> >
> > -On AArch64 UEFI shall execute as 64-bit code at either EL1 or EL2,
> > +UEFI shall execute as 64-bit code at either EL1 or EL2 (on AArch64) and at 
> > HS mode or S mode (on RISC-V),
> >  depending on whether or not virtualization is available at OS load time.
> >
> > -UEFI Boot at EL2
> > +UEFI Boot at EL2/HS mode
> >  ^^^^^^^^^^^^^^^^
>
> 'make html' produces a warning:
> source/chapter2-uefi.rst:221: WARNING: Title underline too short.
>
> The hypervisor extension is still draft? I could not find anything newer
> than
> https://github.com/riscv/riscv-isa-manual/blob/master/src/hypervisor.tex.
>

Unfortunately, yes. Nobody is happy about that but the spec is not frozen yet.
http://lists.infradead.org/pipermail/linux-riscv/2021-April/005804.html

> >
> > -Most systems are expected to boot UEFI at EL2, to allow for the 
> > installation of
> > +Most systems are expected to boot UEFI at EL2/HS mode, to allow for the 
> > installation of
> >  a hypervisor or a virtualization aware Operating System.
> >
> > -UEFI Boot at EL1
> > +UEFI Boot at EL1/S Mode
> >  ^^^^^^^^^^^^^^^^
>
> source/chapter2-uefi.rst:227: WARNING: Title underline too short.
>

Thanks. I will fix that in the next version.

> According to the 0.6.1 draft of the hypervisor extension the guest is
> running in VS-mode.
>
> S-mode is used by systems without hypervisor extension.
>

Yes. I wanted to keep them in one section. Looking at again, I think
we should create a new
RISC-V specific section called "RISC-V privilege levels" to avoid confusion.

> The following image would be helpful here:
>
> https://raw.githubusercontent.com/riscv/riscv-sbi-doc/master/riscv-sbi-intro2.png
>
> The image is licensed under CC-BY 4.0. So it should be allowable to add
> it to the EBBR.
>

Sure. I will add that.

> @Grant:
> Is there a free version of
> https://documentation-service.arm.com/static/602a712462b3ab66934ed42f?token=
> or can ARM release the image under the CC-BY 4.0 license?
>
> Best regards
>
> Heinrich
>
> >
> > -Booting of UEFI at EL1 is most likely employed within a hypervisor hosted 
> > Guest
> > +Booting of UEFI at EL1/S mode is most likely employed within a hypervisor 
> > hosted Guest
> >  Operating System environment, to allow the subsequent booting of a
> >  UEFI-compliant Operating System.
> >  In this instance, the UEFI boot-time environment can be provided, as a
> > diff --git a/source/chapter3-secureworld.rst 
> > b/source/chapter3-secureworld.rst
> > index 9c51bca24f33..d6bfbd322837 100644
> > --- a/source/chapter3-secureworld.rst
> > +++ b/source/chapter3-secureworld.rst
> > @@ -27,3 +27,15 @@ Platforms without EL3 must implement one of:
> >  However, the spin table protocol is strongly discouraged.
> >  Future versions of this specification will only allow PSCI, and PSCI should
> >  be implemented in all new designs.
> > +
> > +RISC-V Multiprocessor Startup Protocol
> > +======================================
> > +The resident firmware in M mode or hypervisor running in HS mode must 
> > implement
> > +and conform to at least SBI [RVSBISPEC]_ v0.2 with HART
> > +State Management(HSM) extension for both RV32 and RV64. In addition to 
> > that, the
> > +firmware must ensure the following condition before jumping to the UEFI
> > +application.
> > +
> > +The device tree must contain a property named **boot-hartid** under the 
> > */chosen*
> > +node. This property must indicate the id of the booting hart. The 
> > corresponding entry
> > +in the ACPI tables has not been defined yet as ACPI support in RISC-V is 
> > under progress.
> > diff --git a/source/index.rst b/source/index.rst
> > index 48318757f717..acd214d25323 100644
> > --- a/source/index.rst
> > +++ b/source/index.rst
> > @@ -1,5 +1,6 @@
> >  .. EBBR Source Document
> >     Copyright Arm Limited, 2017-2019
> > +   Copyright Western Digital Corporation or its affiliates, 2021
> >     SPDX-License-Identifier: CC-BY-SA-4.0
> >
> >  ####################################################
> > @@ -8,6 +9,8 @@ Embedded Base Boot Requirements (EBBR) Specification
> >
> >  Copyright © 2017-2019 Arm Limited and Contributors.
> >
> > +Copyright © 2021 Western Digital Corporation or its affiliates.
> > +
> >  This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
> >  International License. To view a copy of this license, visit
> >  http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
> > diff --git a/source/references.rst b/source/references.rst
> > index 6d09d3c0aaa7..6d35d909c8fe 100644
> > --- a/source/references.rst
> > +++ b/source/references.rst
> > @@ -29,3 +29,7 @@
> >  .. [UEFI] `Unified Extensable Firmware Interface Specification v2.8 Errata 
> > A
> >     
> > <https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_A_Feb14.pdf>`_,
> >     February 2020, `UEFI Forum <http://www.uefi.org>`_
> > +
> > +.. [RVPLTSPEC] `RISC-V Platform specification 
> > <https://github.com/riscv/riscv-platform-specs>`_
> > +
> > +.. [RVSBISPEC] `RISC-V Supervisor Binary Interface specification 
> > <https://github.com/riscv/riscv-sbi-doc>`_
> >
>
> _______________________________________________
> boot-architecture mailing list
> boot-architecture@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/boot-architecture



-- 
Regards,
Atish
_______________________________________________
boot-architecture mailing list
boot-architecture@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to