4 月 25 日(北京时间,下同),我院计算机系统结构学部院士、理学部专家 cyy 在最新的主线 Rocket Chip 上运行 Linux 时发现若关闭 CPU FPU,会导致内核在保存上下文的浮点寄存器时因指令不合法而恐慌(panic)。经过其观察发现,从 Rocket Chip 在去年 12 月的一次更新开始,输出到设备树的 ISA 标识符存在大写字母。而 Linux 中的 ISA 解析器在遇到大写字母时会判定为失败继而跳到下一个字符继续执行,从而产生错误的结果。cyy 在阅读 RISC-V 指令集手册以及 ACPI 中 RISC-V Hart Capabilities Table (RHCT) 的说明后发现,在使用 UEFI 的情况下,内核的 ISA 解析器仍然需要以大小写不敏感方式解析 ISA 标识符。
cyy 院士在院内讨论后对该问题进行了修复,并将 patch 提交到了邮件列表中。该 patch 在邮件列表中引起了有关维护者的激烈讨论,有一派维护者以兼容性为由想保留有关错误实现。cyy 据理力争,坚持引入正确的 ISA 解析器才是为 RISC-V 生态好的观点,使维护者最终同意采纳此 patch。
6 月 7 日,其提交的更改已被内核维护者 Palmer Dabbelt 合并进了 riscv 分支[1]。7 月 1 日,Linus Torvalds 在 Linux 内核主线中将 riscv 分支合并了一次[2],这标志着我院 cyy 院士正式成为了 Linux 内核的贡献者,为 RISC-V 生态在 Linux 社区的正常使用和健康发展做出了重大贡献。
cyy 院士此次成为了我院第 3 位内核贡献者,希望我院各位同志能再接再厉,为开源世界贡献更多力量。