2H23 Priorities Update (06/29/2023)
This document lists the current 2H23 priorities as of 6/29/2023 - the very first such list produced by the RISE Technical Steering Committee. Because we're starting from "ground zero", the approach taken has been to:
- Share individual company priorities for each of the eight identified categories, which includes ongoing projects.
- Create work groups (WGs) for each category to allow work to be done in parallel.
- Deduplicate, identify dependencies.
- Prioritize in order of importance.
- Identify further dependencies and trends at the TSC level.
This can be best summed up as "bottom up" approach or "getting the lay of the land". Such an approach enables the TSC to build the "big picture" of where most of the development is happening, with the expectation that identified trends will help shape further (1H24, 2H24) priorities.
Contents:
Work Group-Identified Priorities
System Libraries
Lead is Nathan Egge (Google).
Current focus is mostly Standard C and SSL library enablement.
- SL_00_001 - bionic
- SL_00_002 - glibc (incl. SL_XX_XX - glibc support for libmvec to enable vector API for key math library)
- SL_00_003 - OpenSSL
- SL_00_004 - BoringSSL
- SL_02_001 - OpenBLAS
Overall, this WG currently suffers from very weak team engagement, likely due to the extreme breadth of projects under this category and limited multiple-company engagement within each subcategory. This WG has 3 distinct subcategories:
- Core system libraries (applies anywhere)
- Android enablement
- HPC
System Library work has the following cross-WG dependencies:
- LK_01_032 - Vector extension discovery using HWPROBE
- LK_01_005 - Native/hosted debug support (aka HW breakpoint)
- LK_01_020 - Vector crypto extensions discovery using HWPROBE
- SE_02_001 - QEMU Vector crypto support
No projects are requesting RISE resources at this time.
Simulators/Emulators
Lead is Daniel Barboza (Ventana).
Current focus is on Qemu improvements to improve overall developer experience around Qemu, including feature completeness in modeling the emulated userspace Linux environment, improvements to host support for certain platform features and improvements to the emulated platforms to sustain new use-cases.
No projects are requesting RISE resources at this time.
- SE_01_001 - QEMU linux-user riscv_hwprobe syscall support
- SE_01_002 - QEMU Virtual IRQ and IRQ filtering support
- SE_01_003 - QEMU WorldGuard support
- SE_01_005 - QEMU PCIe passthru on x86 hosts
- SE_02_001 - QEMU Vector crypto support
Language Runtimes
Lead is Ludovic Henry (Rivos).
Most of the projects are in Java but are still missing the necessary depth and scoping.
- LR_00_004: Backport RISC-V support to jdk11u
- LR_00_005: Backport RISC-V support to jdk17u
- LR_00_007: Distribute Java 17 + 21 in Adoptium
- LR_01_002: Port Numpy
- LR_02_001: Build and test Go Runtime on RISC-V
- LR_04_001: Port .NET Runtime to RISC-V
Overall, this WG currently suffers from very weak team engagement. This may indicate a lack of interest on behalf of WG members to invest into this category.
No projects are requesting RISE resources at this time.
Kernel and Virtualization
Lead is Anup Patel (Ventana).
Current kernel projects focus on core ISA ("V" extension), feature completeness (KASAN, memory hotplug) and platform enablement (ACPI, IOMMU). Current KVM focus is on AIA virtualization and "V" extension virtualization.
A number of projects are already completed and upstreamed, and these are consequently crossed out.
- Kernel
- LK_00_005 - Memory Hot(Un)plug
LK_00_006 - KASAN supportLK_01_001 - Basic ACPI support- LK_01_002 - ACPI support for PLIC driver
- LK_01_003 - AIA drivers with DT support
- LK_01_004 - ACPI support for AIA drivers
- LK_01_005 - Native/hosted debug support (aka HW breakpoint)
LK_01_006 - Vector extension support- LK_01_007 - IOMMU driver with DT support
- LK_01_020 - Vector crypto extensions discovery using HWPROBE
- LK_01_032 - Vector extension discovery using HWPROBE
- LK_01_033 - Bitmanip extension discovery using HWPROBE
- KVM
LK_02_002 - KVM AIA in-kernel irqchip- LK_02_003 - KVM AIA IMSIC guest file support
- LK_02_004 - KVM AIA irq-bypass (aka Device MSI virtualization)
LK_02_005 - KVM vector extension virtualization- LK_02_011 - KVM Native/hosted debug virtualization
- LK_02_018 - KVM bitmanip extension virtualization
- LK_02_019 - KVM vector crypto extension virtualization
- LK_03_002 - KVMTOOL AIA in-kernel irqchip
- LK_03_004 - KVMTOOL VFIO + irq-bypass support
- LK_03_007 - QEMU-KVM AIA in-kernel irqchip
- LK_03_010 - QEMU-KVM VFIO + irq-bypass support
No projects are requesting RISE resources at this time.
Firmware
Lead is Sunil V L (Ventana).
Currently prioritized projects primarily revolve around Tiano EDK2 enablement - core support to support new hardware (SSTC, CMO, MMU), platform support projects (StandaloneMmPkg for secure flash, MultiArchUefiPkg for PCIe OpRom emulation). Some work is already completed and is either going through upstreaming (CMO, MMU support) or further community validation (MultiArchUefiPkg). Two of the projects are net new contributions - StandaloneMmPkg port to RISC-V and TF-M port to RISC-V.
No projects are requesting RISE resources at this time.
The CoVE and CoVE-IO specs need to evolve to accommodate StandaloneMmPkg scenario.
- Tianocore EDK2 UEFI
- TF-M
There's been an interest in porting TF-A, but this has not yet solidified into something concrete.
Distro Integration
Lead is Brian Harrington (Red Hat).
Work is focused on two kinds of projects.
- Issues common to multiple Linux distros (e.g. bugs/features in common packages)
- One such project category is around Profile- and Extension- Optimized Distros.
- No 2H23 projects are currently defined.
- Enabling a specific Linux distro, provided the Linux distro has a champion/vendor
- The champion identifies the directions/projects.
- The WG works to prioritize, unravel dependencies on other WGs or file projects in other WGs .
- Further scoping happening with Tizen enablement based on Tizen RISC-V Status.
Overall, this WG currently suffers from very weak team engagement. This may indicate a lack of interest on behalf of WG members to invest into this category.
No projects are requesting RISE resources at this time.
Debug and Profiling
Lead is Fei Wu (Intel).
Only two project have been identified with sufficient scope and detail.
Overall, this WG currently suffers from very weak team engagement. This may indicate a lack of interest on behalf of WG members to invest into this category.
No projects are requesting RISE resources at this time.
Compilers and Toolchains
Lead is Jeff Law (Ventana).
Focus is LLVM and GCC-based projects targeting features and distro blockers (Zfa, shadow stacks, atomics) or optimization (fusion, autovectorization). Although some of the projects represent ongoing work, the WG has identified new projects like binary distribution of GCC-13 with backported patches for autovectorization.
A number of projects are already completed and upstreamed, and these are consequently crossed out.
LLVM Enablement
- CT_01_005 - Fusion Support (LLVM)
CT_01_004 -- Zfa Support (LLVM)- CT_01_003 - Shadow Stacks (LLVM)
- CT_01_002 - Forward Compatible Atomic Mappings (LLVM)
- CT_01_001 - Autovectorization -- Basic Functionality (LLVM)
GCC Enablement
- CT_00_007 - Fusion Support (GCC)
- CT_00_006 -- Zfa Support (GCC)
- CT_00_005 -- Zicond with if-conversion improvements (GCC)
- CT_00_004 -- Address rewriting (GCC)
CT_00_003 -- Redundant Extension Elimination (GCC)CT_00_002 - Inline Subword Atomics, Forward Compatible Mappings, Ztso (GCC)- CT_00_001 - Autovectorization -- Basic Functionality (GCC)
Distribution
The following cross-WG dependencies exist:
- LK_01_032 - Vector extension discovery using HWPROBE
- SL_XX_XX - glibc support for libmvec to enable vector API for key math library
No projects are requesting RISE resources at this time.
Specification Dependencies
- RVI CoVE: for EDK2_00_02 - StandaloneMmPkg (PoC)
- RVI CoVE-IO: for EDK2_00_02 - StandaloneMmPkg (PoC)
- UEFI PI: EDK2_00_02 - StandaloneMmPkg (PoC)
- RVI SBI Debug Trigger Extension: LK_01_005 - Native/hosted debug support (aka HW breakpoint)
- RVI RISC-V Cryptography Extensions: SL_00_003 - OpenSSL
- RVI psABI vector ABI: CT_03_001 - Binary Toolchain Packages
- RVI psABI: CT_01_003 - Shadow Stacks (LLVM)
- RVI Unified Discovery: Profile- and Extension- Optimized Distros
Observations
Prioritization Activities
Current prioritization efforts were "bottom up". This meant the WGs were largely left to their own devices in terms of identifying priorities. Such an approach enabled the TSC to identify trends to help shape further (1H24, 2H24) priorities.
Overall, three trends (market directions) are evident:
- General-purpose compute (aka "server")
- HPC (differentiated from "server" by a different software stack)
- Consumer / Mobile (Android, Tizen, possible bridges to existing AArch64 software)
These are all dependent on:
- Base developer / SW ecosystem enablement, seen with toolchain/runtime and emulator work.
It's reasonable to work across a couple of directions that are different enough from each other to have the maximum impact from enablement activities. Such two directions could be server and consumer.
Prioritized Projects
None of the current projects have a RISE requirement for funding or resourcing, which makes sense as all of the projects involve existing RISE member resources. Yet this is somewhat unhelpful is it doesn't communicate the overall level of RISE member engagement within a specific project/category.
Organization
WG operation and "success rate" varies wildly, with three distinct groups:
- Well-formed groups with good momentum around existing/ongoing collaborations (toolchain, kernel)
- Well-formed groups with good momentum around net new collaborations (firmware)
- Ill-formed groups with weak engagement and/or too wide of a scope.
- Either very few participate (1 person show, i.e. the lead)
- Little overlap between proposed projects and WG members (i.e. 1 company projects).
A lot of the WGs structure their progress around periodic meetings, with mailing lists (subjectively) not adopted as the primary medium for organizing/regulating activities.
WGs with weak engagement result in significant (time-wise) and unreasonable commitments from WG leads. Weak team engagement or extremely broad scopes make prioritization efforts challenging. Weak engagement specifically results in prioritization efforts that are not representative of the entirety of RISE member interests.
Action Items
These are discussable.
Board
- Setting direction to the TSC:
- Detailed feedback on this document.
- The Board needs to chose/confirm the trends to follow further prioritization on.
- Forcing functions on consistency of TSC/WG deliverables:
- Each RISE member company needs to re-evaluate its interest in the System Libraries, Language Runtimes, Distro Integration and Debug and Profiling Work Groups and make appropriate recommendations to its WG representatives around participation and engagement.
- RISE Board members are encouraged to drill down into individual projects and reach out to the WG leads for clarification.
- If desired, we could do WG-specific overview/updates to the Board for categories of interest (or even rotate these, doing a different category every other week).
- Accounting
- Board should advise how to account for existing RISE member engineering engagement (including 3rd party contractors) vs RISE-specific engineers (none of the latter have been declared). It should be clear overall how many individuals are involved, even if these are not technically RISE-funded resources.
TSC
Forcing functions on WG deliverables.
- Encourage email-driven instead of meeting-driven collaboration.
- Use TSC meeting deep dives into a WG to help motivate measurable progress.
For each of the Board-confirmed market directions , the TSC ought to:
- Come up with the representative software stack to align development (and WG prioritization activities).
- Identify CPU and platform requirements to sustain the representative software stack, to be reported back to RVI to aid system/platform profile definition work.