94 Star 261 Fork 91

泰晓科技 / RISCV-Linux

 / 详情

【老师提案】RISC-V Linux 内核 SBI 调用技术分析

进行中
拥有者
创建于  
2022-12-06 20:34

RISC-V 主要有 3 种模式:M/S/U,其中 M 对应机器模式,主要运行 SBI Firmware,S 模式运行 Linux 内核,U 是用户态。

跑在 M 模式的 SBI Firmware 为跑在 S 模式的 Linux 内核提供了一些服务,这些服务需要通过 ecall 指令进行访问。

该提案的目标是:

  1. 分析 SBI 规范的版本迭代历史以及 OpenSBI/RustSBI 对规范的支持情况
  2. 分析 Linux 内核对各种 SBI 规范的支持情况,包括如何向后兼容等
  3. 分析不同 SBI 版本中提供的服务情况以及演进的原因
  4. 分析几组关键的 SBI 服务,以及这些服务跟 Linux 其他子系统的关系

相关代码:

$ find src/linux-stable/arch/riscv/ -name "*sbi*"
src/linux-stable/arch/riscv/include/asm/sbi.h
src/linux-stable/arch/riscv/kernel/cpu_ops_sbi.c
src/linux-stable/arch/riscv/kernel/sbi.c

kvm 部分这里可以不用特别关注,留给虚拟化小组专门进行分析。

评论 (3)

falcon 创建了任务
falcon 修改了描述
falcon 修改了描述
falcon 添加协作者iOSDevLog
falcon 取消协作者iOSDevLog
falcon 负责人设置为iOSDevLog
falcon 负责人iOSDevLog 修改为未设置
falcon 负责人设置为Groot
falcon 任务状态待办的 修改为进行中
展开全部操作日志

RISC-V SBI 技术剖析计划建议

每一个大的主题需要有 3 篇左右文章,代码贡献部分需要有 3+ 笔功能或者修复类的 patch 提交并合并进主线。

SBI 的作用、演进和最新情况调研

考核任务,已输出 PR,完成评审,等待合并:《RISC-V SBI 概述》

SBI Spec 规范深入学习和调研

可以考虑对照整个 Spec 做中文翻译,看看业内有没有其他机构做过这个工作。

SBI Implementation 深度调研

至少再选 1-2 个,比如 RustSBI,进行编译和启动(需要介绍详细的环境准备情况),从多个维度跟 OpenSBI 进行对比,包括编程语言、上手难度、具体指标(启动速度、程序大小等)、支持的 Spec 及时性、参与开发的人数、Issue 响应的及时性、支持的硬件平台情况、各个厂家的采用情况等。

深入剖析 RustSBI 和 OpenSBI 源码(跟上一节比较难分开)

先 OpenSBI,后 RustSBI,从编译环境、代码构建等方面,记得不要跟之前@yjmstr 等其他同学输出过的部分重复,重复的地方可以直接链接到之前的文章。

OpenSBI 代码贡献

贡献的可能方向:

  1. 了解 OpenSBI 的邮件列表,做周报,了解社区的最新开发动态,并及时帮其他人测试验证代码,提交 Tested-by 报告,有错误可以提交错误报告。合适的时机可以直接提交 patch。
  2. 就 size 优化,启动速度等方面可以做一些测量、分析,找出可能的优化方向,比如说移植 busybox 上支持的 -ffunction-section -fdata-section -Wl,-gc-section ,可以做一些代码贡献。主要是修改 Makefile 和 firmware/*.ldS 等文件,另外,可能需要加控制变量,方便切换 -O2 和 -Os。

20220707 更新:

  • 考核任务 PR 已经合并:introduction to riscv sbi
  • 正在翻译 SBI Spec,已经初步完成,正在进行格式排版。由于本次翻译过长,我计划将翻译内容分三个部分 push 到仓库中,一方面方便大家 review,另一方面也方便读者阅读。全部更新完之后再一次更新一个完整的翻译的 PDF。
  • 正在准备分享会的 PPT

20220708 更新:

  • 完成 SBI Spec 2.0-rc1 的翻译工作
  • 对翻译文本进行了简单的校阅

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
5069540 wuzhangjin 1594531572 8028295 grootofsdust 1686123471
1
https://gitee.com/tinylab/riscv-linux.git
git@gitee.com:tinylab/riscv-linux.git
tinylab
riscv-linux
RISCV-Linux

搜索帮助

53164aa7 5694891 3bd8fe86 5694891