Platform Spec Chapters and Owners


Kumar Sankaran
 

Hi All,

As we spoke during the meeting today, below are the chapters that we need owners for. We are looking for volunteers to own and write each of these chapters. Please review and provide feedback regarding ownership of the specific chapters preferably this week if possible.

Also, the goal in the platform spec would be to cross reference an item from profiles or a different arch spec if one exists for a particular feature. For example, in the Architecture section for Linux-2022, we would be referring to the RVA22 profile. So all we need here is to point to the RVA22 spec.

Similarly, the interrupt section in the platform spec can point to the AIA spec.

 

Below are the sections as we discussed.

 

Linux-2022

Base

  1. Architecture
    1. Profile – RVA22
      1. Cache Management
      2. PMU
        1. SSCOF extension
      3. ASID
    1. Debug
  1. Memory Map
    1. Virtual Memory
    2. sv39/sv48/sv57
    3. Start Address
  1. Interrupt Controller
    1. AIA
    2. PLIC + CLINT
    3. Interrupt Assignments
  1. System Peripherals
    1. 16550 based UART/Serial Console
    2. Clocks
    3. Timers
    4. Watchdog Timers
  1. Boot Process
    1. Firmware
    2. Boot-Loader

U-Boot

UEFI

    1. Discovery Mechanisms

Device Tree

ACPI

  1. Runtime services
    1. SBI
    2. UEFI

 

Server Extension

  1. Discovery Mechanisms
  2. PCI-E
  3. Secure Boot
    1. TEE
    2. Root of Trust
    3. E-Fuse
    4. PKA/TRNG
  4. Virtualization/Hypervisor Support
    1. H-extension
  1. IOMMU
  2. RAS
  3. MPAM

 

Embedded-2022

Base

  1. Architecture
    1. Profile – RVM22
    2. Debug
  2. Interrupt Controller
    1. CLIC/PLIC
  1. System Peripherals
    1. 16550 based UART/Serial Console
    1. Clocks
    2. Timers

PMP Extension

  1. PMP Regions
  2. Software support needed for PMP

 

RVM-SIS Extension

  1. HAL

 

 

Agenda and minutes kept on the github wiki:

https://github.com/riscv/riscv-platform-specs/wiki

 

Here are the slides:

https://docs.google.com/presentation/d/1R8z435jyQJ4YhZm3eKXq75ZbpNvCoLjaTU6bBJtv_Ic/edit#slide=id.gbad4e10c73_0_663

 

The meeting recording is here https://drive.google.com/file/d/1te2iNY2WN3pKSsMvIEMQdFIw1sXkcN5K/view?usp=sharing

 

Regards

Kumar


Heinrich Schuchardt
 

On 09.03.21 18:31, Kumar Sankaran wrote:
Hi Heinrich,

Agree, I think using the term UEFI is confusing since it is a
specification. It should instead be called EDK II or Tianocore. Will
make the change.

The reason for having U-Boot and EDK II (UEFI) was to specify which
boot-loader would be started by OpenSBI. Right now, everyone I believe
is using U-boot as the default bootloader. I was suggesting we drop
U-boot completely and switch to using EDK II as the standard boot-loader
and use the UEFI entry point to launch the OS.
Hello Kumar,

OpenSBI can collaborate both with both EDK II and U-Boot. For the Linux
platform this should not make a difference as long as the UEFI firmware
implementation and the SBI implementation are compliant.

The relevant question is which part of UEFI has to be implemented. ARM
has driven the definition of two profiles:

EBBR for embedded boards
https://github.com/ARM-software/ebbr
and

SBBR for servers
https://static.docs.arm.com/den0044/12/Server_Base_Boot_Requirements-1.2.pdf.

U-Boot only targets the EBBR specification while EDK II is the UEFI
reference implementation and complies to the SBBR.

My idea is that the envisioned RISC-V Linux platform specification
should either refer to the EBBR and SBBR or define its own subset of
UEFI that has to be implemented by the firmware. It should not require a
specific software implementation.

I would prefer if the base requirement were to have an UEFI
implementation that matches the EBBR and for servers to comply with the
SBBR instead of defining new profiles.

ARM is open to add RISC-V requirements to the EBBR spec. Atish joined
some of the EBBR meetings.

Best regards

Heinrich


 

Regards

Kumar

*From:* Heinrich Schuchardt <xypron.glpk@...
<mailto:xypron.glpk@...>>
*Sent:* Tuesday, March 9, 2021 3:45 AM
*To:* Kumar Sankaran <ksankaran@...
<mailto:ksankaran@...>>
*Subject:* Re: [RISC-V] [tech-unixplatformspec] Platform Spec Chapters
and Owners

 

Item 5.2 Boot-Loader has entries U-Boot and UEFI. This is confusing.
Both U-Boot and EDK II implement the UEFI specification. The Linux
kernel has a UEFI and a non-UEFI entry point which can be invoked by
OpenSBI or U-Boot. I think UEFI should be the default way to start
operating systems.

So maybe:

5.2 Boot-Loader

* UEFI
* non-UEFI Linux invocation

Best regards

Heinrich


Kumar Sankaran
 

Hi Heinrich,
Sorry for the "up" post. Agree with your comments and there is no need to
create new profiles. The intent for RISC-V Linux platforms is the following
Base spec will have a UEFI implementation matching EBBR.
Server extension will have a UEFI implementation matching SBBR.

Regards
Kumar

-----Original Message-----
From: Heinrich Schuchardt <xypron.glpk@...>
Sent: Tuesday, March 9, 2021 10:38 AM
To: Kumar Sankaran <ksankaran@...>
Cc: tech-unixplatformspec@...; Atish Patra
<atish.patra@...>; Anup Patel <anup.patel@...>
Subject: Re: [RISC-V] [tech-unixplatformspec] Platform Spec Chapters and
Owners

On 09.03.21 18:31, Kumar Sankaran wrote:
Hi Heinrich,

Agree, I think using the term UEFI is confusing since it is a
specification. It should instead be called EDK II or Tianocore. Will
make the change.

The reason for having U-Boot and EDK II (UEFI) was to specify which
boot-loader would be started by OpenSBI. Right now, everyone I believe
is using U-boot as the default bootloader. I was suggesting we drop
U-boot completely and switch to using EDK II as the standard
boot-loader and use the UEFI entry point to launch the OS.
Hello Kumar,

OpenSBI can collaborate both with both EDK II and U-Boot. For the Linux
platform this should not make a difference as long as the UEFI firmware
implementation and the SBI implementation are compliant.

The relevant question is which part of UEFI has to be implemented. ARM has
driven the definition of two profiles:

EBBR for embedded boards
https://github.com/ARM-software/ebbr
and

SBBR for servers
https://static.docs.arm.com/den0044/12/Server_Base_Boot_Requirements-1.2.pdf.

U-Boot only targets the EBBR specification while EDK II is the UEFI
reference implementation and complies to the SBBR.

My idea is that the envisioned RISC-V Linux platform specification should
either refer to the EBBR and SBBR or define its own subset of UEFI that has
to be implemented by the firmware. It should not require a specific software
implementation.

I would prefer if the base requirement were to have an UEFI implementation
that matches the EBBR and for servers to comply with the SBBR instead of
defining new profiles.

ARM is open to add RISC-V requirements to the EBBR spec. Atish joined some
of the EBBR meetings.

Best regards

Heinrich




Regards

Kumar

*From:* Heinrich Schuchardt <xypron.glpk@...
<mailto:xypron.glpk@...>>
*Sent:* Tuesday, March 9, 2021 3:45 AM
*To:* Kumar Sankaran <ksankaran@...
<mailto:ksankaran@...>>
*Subject:* Re: [RISC-V] [tech-unixplatformspec] Platform Spec Chapters
and Owners



Item 5.2 Boot-Loader has entries U-Boot and UEFI. This is confusing.
Both U-Boot and EDK II implement the UEFI specification. The Linux
kernel has a UEFI and a non-UEFI entry point which can be invoked by
OpenSBI or U-Boot. I think UEFI should be the default way to start
operating systems.

So maybe:

5.2 Boot-Loader

* UEFI
* non-UEFI Linux invocation

Best regards

Heinrich


atishp@...
 

On Tue, 2021-03-09 at 19:38 +0100, Heinrich Schuchardt wrote:
On 09.03.21 18:31, Kumar Sankaran wrote:
Hi Heinrich,

Agree, I think using the term UEFI is confusing since it is a
specification. It should instead be called EDK II or Tianocore.
Will
make the change.

The reason for having U-Boot and EDK II (UEFI) was to specify which
boot-loader would be started by OpenSBI. Right now, everyone I
believe
is using U-boot as the default bootloader. I was suggesting we drop
U-boot completely and switch to using EDK II as the standard boot-
loader
and use the UEFI entry point to launch the OS.
Adding EDK-II support for platforms usually takes more effort than U-
Boot. I think we should keep U-Boot/EDK-II for the base and may choose
only EDK-II for server extension.

Hello Kumar,

OpenSBI can collaborate both with both EDK II and U-Boot. For the
Linux
platform this should not make a difference as long as the UEFI
firmware
implementation and the SBI implementation are compliant.

The relevant question is which part of UEFI has to be implemented.
ARM
has driven the definition of two profiles:

EBBR for embedded boards
https://github.com/ARM-software/ebbr
and

SBBR for servers

https://static.docs.arm.com/den0044/12/Server_Base_Boot_Requirements-1.2.pdf
.

U-Boot only targets the EBBR specification while EDK II is the UEFI
reference implementation and complies to the SBBR.

My idea is that the envisioned RISC-V Linux platform specification
should either refer to the EBBR and SBBR or define its own subset of
UEFI that has to be implemented by the firmware. It should not
require a
specific software implementation.

I would prefer if the base requirement were to have an UEFI
implementation that matches the EBBR
That is still the intention for base Linux platform specification.
That's why, I had sent the patch for RISC-V support to EBBR.


and for servers to comply with the
SBBR instead of defining new profiles.
I am not sure if that is feasible because of SBBR is a completely ARM
specification and comes under Arm Non-Confidential Document Licence
(“Licence”). Legal guys may have to weigh on this.

ARM is open to add RISC-V requirements to the EBBR spec. Atish joined
some of the EBBR meetings.
Unfortunately, I couldn't attend any recent meetings due to the
conflict with platform meeting. That shouldn't be an once the DST
starts.

Best regards

Heinrich


 

Regards

Kumar

*From:* Heinrich Schuchardt <xypron.glpk@...
<mailto:xypron.glpk@...>>
*Sent:* Tuesday, March 9, 2021 3:45 AM
*To:* Kumar Sankaran <ksankaran@...
<mailto:ksankaran@...>>
*Subject:* Re: [RISC-V] [tech-unixplatformspec] Platform Spec
Chapters
and Owners

 

Item 5.2 Boot-Loader has entries U-Boot and UEFI. This is
confusing.
Both U-Boot and EDK II implement the UEFI specification. The Linux
kernel has a UEFI and a non-UEFI entry point which can be invoked
by
OpenSBI or U-Boot. I think UEFI should be the default way to start
operating systems.

So maybe:

5.2 Boot-Loader

  * UEFI
  * non-UEFI Linux invocation

Best regards

Heinrich
--
Regards,
Atish