TianoCore Community Design Meeting Minutes - Mar 20, 2020


Ni, Ray
 

Topic:

1. EDK2 DxeIpl Abstraction (Abner Chang/HPE)

Slides: https://edk2.groups.io/g/devel/files/Designs/2020/0320/EDK2%20DxeIpl%20Abstraction.pdf



Today's meeting was extended to 2 hours to discuss the overall RISC-V support in EDKII. It makes sense because low-level design depends on the finalize of high-level design.

Today's RISC-V enabling in EDKII work is to provide a UEFI wrapper over RISC-V OpenSBI (Open Source Supervisor Binary Interface), which is an open-source reference implementation (https://github.com/riscv/opensbi) of RISC-V SBI specification (https://github.com/riscv/riscv-sbi-doc/blob/master/riscv-sbi.adoc).

OpenSBI itself is a boot loader. If RISC-V SBI specification is treated as UEFI spec and OpenSBI is treated as the EDKII.

Right now, Abner's work is the only effort that enables UEFI in RISC-V platforms.

The EDKII RISC-V environment consists of three phases: SEC-PEI-DXE. A RISC-V specific SEC module statically linked with OpenSBI exposes all interfaces required by the UEFI wrapper.

There are 3 sub-topics discussed in the meeting:

1. Which mode DXE phase is running at?

RISC-V defines three privileged modes: Machine/Supervisor/User Mode.
SEC and PEI run in M mode and DXE can run either in M mode or S mode which is the platform's choice.
If DXE runs in S mode, some of the resources cannot be accessed.
UEFI spec says RISC-V only runs in M mode during post including DXE. Spec needs update.

2. How to resolve MdeModulePkg's dependency on RiscVPkg?

The dependency is because the M to S mode switch
Abner's solution tries to address this dependency issue by introducing another abstract layer. (see slides: https://edk2.groups.io/g/devel/files/Designs/2020/0320/EDK2%20DxeIpl%20Abstraction.pdf)
Mike proposes another solution: RiskVPkg exposes the mode switch interfaces (sbi_init ?) through PPI and the PPI definition can be in MdePkg which might be included by PI spec.

3. Location of RiscVPkg and RiscVPlatformPkg

RiscVPkg in @edk2-platforms/Silicon/... directory.
RiscVPlatformPkg in @edk2-platforms/Platform/... directory.
Long term goal is to put all CPU implementation that follows industry standard to UefiCpuPkg, including ARM and RISC-V.

4. Which changes can be in edk2

Need Abner to look at all the changes again. But at least the INF/C changes that enable individual drivers to be built by RISC-V compiler can.

Thanks,
Ray