On Thu, Oct 22, 2020 at 4:19 PM Atish Patra <ati...@atishpatra.org> wrote: > > On Wed, Oct 21, 2020 at 3:21 AM Grant Likely <grant.lik...@arm.com> wrote: > > > > Hi Atish, > > > > Thanks for this. Comments below. > > > > On 16/10/2020 02:10, Atish Patra wrote: > > > This patch adds all minimum mandatory requirements to make RISC-V > > > compatible > > > with EBBR. > > > > > > Signed-off-by: Atish Patra <atish.pa...@wdc.com> > > > --- > > > source/chapter1-about.rst | 42 +++++++++++++++++++++++++++++++-- > > > source/chapter2-uefi.rst | 10 +++++++- > > > source/chapter3-secureworld.rst | 14 +++++++++++ > > > source/references.rst | 4 ++++ > > > 4 files changed, 67 insertions(+), 3 deletions(-) > > > > > > diff --git a/source/chapter1-about.rst b/source/chapter1-about.rst > > > index 3db3f3280448..6927c87a125f 100644 > > > --- a/source/chapter1-about.rst > > > +++ b/source/chapter1-about.rst > > > @@ -152,9 +152,10 @@ operating system. > > > SBBR is targeted at the server ecosystem and places strict requirements > > > on the > > > platform to ensure cross vendor interoperability. > > > EBBR on the other hand allows more flexibility to support embedded > > > designs > > > -which do not fit within the SBBR model. > > > -For example, a platform that isn't SBBR compliant because the SoC is only > > > +which do not fit within the SBBR model. For example, a platform that > > > isn't SBBR compliant because the SoC is only > > > > This hunk is a no-op change to the content and should be dropped from > > the patch, but it's a good opportunity to bring up a writing(coding) > > style comment. :-D As much as possible the EBBR source files should use > > "semantic linefeeds" with one sentence per line because when changes are > > made it eliminate diff hunks due to paragraph reflow. Here's how Brian > > Kernighan described it: > > > > Hints for Preparing Documents > > > > Most documents go through several versions (always more than you > > expected) before they are finally finished. > > Accordingly, you should do whatever possible to make the job of > > changing them easy. > > > > First, when you do the purely mechanical operations of typing, > > type so subsequent editing will be easy. > > Start each sentence on a new line. > > Make lines short, and break lines at natural places, > > such as after commas and semicolons, rather than randomly. > > Since most people change documents by rewriting phrases and adding, > > deleting and rearranging sentences, > > these precautions simplify any editing you have to do later. > > > > Brian W. Kernighan, 1974 > > > > Source : http://rhodesmill.org/brandon/2012/one-sentence-per-line/ > > > > Got it. I will update it. > > > I'll propose a patch adding this guidance to the EBBR repo. > > > > > > > supported using Devicetree could be EBBR compliant, but not SBBR > > > compliant. > > > +EBBR also supports multiple architectures such as AArch64 & RISC-V. > > > However, RISC-V > > > +is not compatible with SBBR. Thus, a EBBR compliant RISC-V platform > > > would not be SBBR compliant. > > > > This section is primarily commentary about the purpose of EBBR and how > > it compares with other specifications. Rather than defining where EBBR > > isn't aligned with SBBR, I'd rather rework the paragraph to state that > > EBBR is aligned with SBBR on AArch64 platforms. How about this for new text? > > > > --- > > This specification was inspired by the Server Base Boot Requirements > > specification [SBBR]_ used by the Arm AArch64 architecture. > > SBBR is targeted at the server ecosystem, > > > > and places strict requirements on the firmware interfaces presented to > > OSes > > to ensure cross vendor interoperability. > > > > Similarly, EBBR provides requirements on firmware interfaces > > using many of the same technologies, > > but provides more flexibility to support embedded designs > > > > which do not align with server platform requirements. > > > > > > > > EBBR strives to remain aligned with SBBR by requiring the same > > interfaces where > > possible, and ensuring EBBR requirements are not mutually exclusive to SBBR. > > For example, SBBR requires an ACPI system description, > > > > but EBBR allows either ACPI or a Devicetree. > > If ACPI support was added to an EBBR platform, > > it would still retain EBBR compliance. > > By definition, this means that all Arm SBBR compliant systems > > > > are also EBBR compliant, but the converse is not true. > > --- > > > > I won't be committing this as-is because I still need to do a bit more > > rework to transition from SBBR to BBR as part of Arm SystemReady. There > > is a bunch of AArch64 text that will get pulled out of EBBR because > > things like exception level handling are detailed properly in the BBR now. > > > > But there can be a RISC-V specific privilege section in EBBR. Correct ? >
Apologies if these things were discussed in the EBBR meeting. I am unable to attend it because of RISC-V platform specification meetings. Any comments on this ? > > Details here: > > > > https://developer.arm.com/architectures/system-architectures/arm-systemready > > https://developer.arm.com/documentation/den0044/latest > > > > I see the BBR also specifies the subset of UEFI boot time services & > runtime services. > Will those sections continue to exist in both places EBBR & BBR ? > Any comments on this ? > > > > > > By definition, all SBBR compliant systems are also EBBR compliant, but > > > the > > > converse is not true. > > > @@ -228,6 +229,43 @@ This document uses the following terms and > > > abbreviations. > > > Original Equipment Manufacturer. In this document, the final > > > device > > > manufacturer. > > > > > > + RISC-V > > > + An open standard Instruction Set Architecture (ISA) based on > > > Reduced Instruction > > > + Set Architecture (RISC). > > > + > > > + HART > > > + Hardware thread in RISC-V. This is the hardware execution context > > > that contains > > > + all the state mandated by the ISA. > > > + > > > + M Mode > > > + Machine mode is the most secure and privileged mode in RISC-V. > > > > Nit: "M Mode" here, but in the spec text "M-Mode" is used. Should be > > identical. > > > > Will do. > > > > + > > > + S Mode > > > + Supervisor mode is the next secure mode where virtual memory is > > > enabled. > > > + > > > + HS Mode > > > + Hypervisor-extended-supervisor mode which virtualizes the > > > supervisor mode. > > > + > > > + U Mode > > > + User mode where userspace application is expected to run. > > > + > > > + HSM > > > + Hart State Management (HSM) is an SBI extension that enables the > > > supervisor > > > + mode software to implement ordered booting. > > > + > > > + SEE > > > + Supervisor Execution Environment in RISC-V. This can be M mode or > > > HS mode. > > > + > > > + SBI > > > + Supervisor Binary Interface. This is an interface between SEE and > > > supervisor > > > + mode in RISC-V. > > > + > > > + RV32 > > > + 32 bit execution mode in RISC-V. > > > + > > > + RV64 > > > + 64 bit execution mode in RISC-V. > + > > > > I disagree with Daniel. I think all the RISC-V specific terms should be > > collected into a sub header, and the same should be done for ARM and > > AArch64. Mixing architecture specific terms together seems confusing to me. > > > > I will put them into a RISC-V specific sub header. > > > > SiP > > > Silicon Partner. In this document, the silicon manufacturer. > > > > > > diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst > > > index 74ef70e29784..ad9d9543555e 100644 > > > --- a/source/chapter2-uefi.rst > > > +++ b/source/chapter2-uefi.rst > > > @@ -36,7 +36,7 @@ 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 in RISC-V. > > > > > > AArch64 Exception Levels > > > ------------------------ > > > @@ -59,6 +59,14 @@ UEFI-compliant Operating System. > > > In this instance, the UEFI boot-time environment can be provided, as a > > > virtualized service, by the hypervisor and not as part of the host > > > firmware. > > > > > > +RISC-V privilege levels > > > +----------------------- > > > + > > > +UEFI shall execute in RV32/RV64 mode either in S or HS mode depending on > > > whether > > > +or not virtualization is supported in hardware and available at OS load > > > time. > > > +If the UEFI firmware is running in HS mode, the hypervisor is > > > responsible for > > > +providing the virtualized boot-time/runtime services. > > > + > > > UEFI Boot Services > > > ================== > > > > > > diff --git a/source/chapter3-secureworld.rst > > > b/source/chapter3-secureworld.rst > > > index 9c51bca24f33..ad5c8fc17e40 100644 > > > --- a/source/chapter3-secureworld.rst > > > +++ b/source/chapter3-secureworld.rst > > > @@ -27,3 +27,17 @@ 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 firmware resident in M-mode or hypervisor running in HS mode must > > > implement > > > +and conform to at least Supervisor Binary Specification [SBI]_ 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. There > > > is no support > > > + for ACPI in RISC-V yet. That's why, passing of the boot hart id via > > > ACPI tables > > > + has not been defined yet. > > > diff --git a/source/references.rst b/source/references.rst > > > index 1eb05090647e..9c96cb977c7e 100644 > > > --- a/source/references.rst > > > +++ b/source/references.rst > > > @@ -23,3 +23,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>`_ > > > + > > > +.. [SBI] `Supervisor Binary Interface (SBI) > > > > Should be `RISC-V Supervisor Binary Interface (SBI)` > > > > Sure. Thanks for the review. > > > > + > > > <https://github.com/riscv/riscv-sbi-doc/blob/master/riscv-sbi.adoc>`_ > > > + 11 October 2020, `RISC-V International <https://riscv.org/>`_ > > > > > IMPORTANT NOTICE: The contents of this email and any attachments are > > confidential and may also be privileged. If you are not the intended > > recipient, please notify the sender immediately and do not disclose the > > contents to any other person, use it for any purpose, or store or copy the > > information in any medium. Thank you. > > _______________________________________________ > > boot-architecture mailing list > > boot-architecture@lists.linaro.org > > https://lists.linaro.org/mailman/listinfo/boot-architecture > > > > -- > Regards, > Atish -- Regards, Atish _______________________________________________ boot-architecture mailing list boot-architecture@lists.linaro.org https://lists.linaro.org/mailman/listinfo/boot-architecture