龙架构上游动向
2026.07.10-2026.07.17

本文包括龙架构近一周(截至 2026 年 7 月 17 日 18:00)的龙架构上游社区动向,包括 Linux 内核、编程语言工具链、模拟器及其他项目的移植、优化、平台支持、问题修复和报告等。
本周上游社区动向中的主要亮点有:
- Linux 内核合入 ISA/LPC PIO 设备提前注册支持,可修复数款 3A6000/2K3000/3B6000M 设备无法启动主线内核的问题,以及使用 ACPI PPTT(处理器属性拓扑)表读取核心 ID,修复 3B6000 拓扑显示错误的问题修复
- .NET 龙架构原子指令支持正待上游审阅
- 模块化计算机系统仿真器 gem5 龙架构支持正待上游审阅,已得到一位上游维护者认可
- RISC-V 模拟器 RVVM 龙架构 JIT 后端支持已合入,可实现约 7% 原生性能(4.7x 解释器性能)
- Julia 编程语言龙架构支持推进中
Linux 内核
本周 Linux 内核动向主要集中在现有平台支持修复(如对部分已知无法启动的设备的修复和对 3B6000 处理器拓扑显示错误的修复)和扩展(CAN-FD 控制器支持补丁迭代)、KVM 功能扩展(ACPI IOVT 表)和可靠性修复,以及其他杂项修复等。
平台支持
两周前,Huacai Chen 提交了一笔补丁,用于支持在 ACPI PCI 根设备前注册 ISA/LPC 可编程 I/O (PIO) 设备;该补丁主要针对的是部分使用 SystemIO 定义 PIO 设备的设备固件上,主线内核引导过程中报访存越界的问题。目前该补丁已合入 Linux 内核主线,并正逐步回合到活跃稳定和长期支持分支上。
该问题尤为常见于使用 ITE Super IO 提供大量串口的工控产品,如希沃 3A6000 主板及英众 3B6000M mITX 主板。
上周,Rong Bao 提交了使用 ACPI PPTT(处理器属性拓扑)表读取核心 ID ,修复 3B6000 拓扑显示错误的补丁的第 2 版,整合了 Xi Ruoyao 先前建议的归一化核心 ID 的修改。目前该补丁已在 XB612B0_V1.0 及 XB612B0_V1.2 主板、8 及 12 核心 3B6000 的组合上测试成功。
Binbin Zhou 提交了 2K0300 的温度监控支持,该补丁支持不同批次的 2K0300 芯片——早期芯片的传感器可能返回无效数据,此时驱动会打印警告并回落到 $T_{raw} \times 569 - 394700$ 的温度计算公式,确保功能基本可用。
Binbin Zhou 提交了龙芯 CAN-FD 控制器驱动的第 5 版,继续修复先前数个补丁版本中发现的功能和代码风格问题,并修复了 master 分支的构建。
KVM 子系统
本周,Huacai Chen 就 Bibo Mao 提交的 ACPI IOVT 表支持补丁集给出了评审意见,主要指出补丁集内容可作整合,将原有的 8 个补丁合并为 3 个,分别对应新增 acpi_arch_init() 及 acpi_arch_late_init() 函数、新增龙架构 IOVT 设备表扫描支持和新增 ACPI_IOVT 配置项三个功能主题。本周提交的第二版根据建议合并了补丁。
Tao Cui 修复了一处 KVM EIOINTC(扩展 I/O 中断控制器)模拟中的越界读取问题,该问题可被无特权的客户机触发,是潜在的安全问题。Bibo Mao 在审阅补丁时指出,其已在另外一个补丁集中纳入了相关修复,Tao Cui 随后表示放弃该补丁集,后续补丁审阅及合入以 Bibo 的版本为准。
Tao Cui 修复了 kvm_restore_timer() 函数中 TVAL 值未在虚拟机迁移后正确更新和一处除零 (division-by-zero) 导致崩溃的问题。
Bibo Mao 提交了龙架构 KVM EIOINTC 及 DMSINTC 模拟强化补丁的第 5 版,该补丁集针对部分变量未初始化便被使用、IPI 不对齐时仅警告而不中断、内核态中断发送未正确使用内核态函数等问题和隐患作了修复。
Bibo Mao 提交了针对 vCPU 的 pv_feature 只能被一次性设置,导致虚拟机迁移问题的修复;该补丁修改 pv_feature 设置逻辑,检查 vCPU 特性是否正确且未被启动过,否则将重新设置 pv_feature。
BPF 子系统
Nicholas Dudar 修复了龙架构 BPF 32 位算术运算 (ALU32) 运算结果中高 32 位结果不为零的问题,该补丁后续由 Tiezhu Yang 测试确认,修复了四个 BPF 测试用例。
Tiezhu Yang 提交了一系列针对 32 位零/符号位扩展的优化,目前该补丁处于征求意见稿 (RFC, Request for Comments) 阶段,尚需审阅和测试。Tiezhu Yang 还清理了 BPF 子系统函数 build_insn() 代码路径中的未使用代码 (dead code)、多余指令和不必要的运行时检查。
其他内核功能和代码修复
Song Hu 修复了内核错误将非写入操作下的缺页异常(如读取 NX 页)视为偶发/不稳定错误,导致引发缺页异常的指令无限循环的问题。Song Hu 提交的针对 local_flush_tlb_kernel_range() 大小计算的补丁则被 Huacai Chen 判定为伪修复并明确驳回了;另外一个为 TLB 向量分配失败新增警告的补丁也因为风险与用户感知不对等被驳回。
Haofeng Li 修复了中断重定向控制器代码中的多个分配 (alloc) 和释放 (free) 泄漏。
工具链
本周工具链动向以修复和优化为主;.NET 方面收到了龙架构原子指令支持。
Binutils
Xi Ruoyao 修复了之前提到的 ld -r 对齐修复导致内核模块中出现非预期的 R_LARCH_ALIGN 重定位而无法被内核加载的问题。
Meng Qinggang 简化了 链接器中 R_LARCH_DTPREL{32,64} 重定位的处理,并忽略了其 addend,以绕过 GCC 在调试信息中使用这些重定位时错误附加 addend 的问题。
Meng Qinggang 采取了一系列减少重定位所需存储空间的措施:针对链接器,设定 R_LARCH_TLS_DESC64_* 重定位的大小为 $4$(之前设为 $8$,导致额外产生了一个 R_LARCH_NONE 重定位);针对汇编器,在能确保链接器松弛不会改变表达式和其引用符号之间相对位置的情况下,不生成 R_LARCH_{ADD,SUB}*、R_LARCH_B21 等重定位,且在生成可能会被松弛的指令之前不生成 R_LARCH_ALIGN。
GCC
WANG Xuerui (xen0n) 报告了 GCC 主分支生成立即数超出允许范围的 vshuf4i.b 指令导致汇编失败的问题;Xi Ruoyao 提交了修复,待审阅。
Meng Qinggang 提交了补丁,以移除调试信息中 R_LARCH_DTPREL{32,64} 重定位附带的不正确的 addend。
glibc
Xi Ruoyao 提交了 glibc 2.44 预发布测试结果。
LLVM
Lei Wang 提交了一笔针对 Clang 测试套件的修复,禁用了龙架构后端暂不支持的 Emulated TLS 测试。该测试最初由拉取请求 #207161 引入,用于为 IRMaterializationUnit 引入 __emutls_t 定义跟踪支持。
Rui Wang 修复了 matchHalfOf128BitLanes 错误地仅绑定了 LSX 指令,导致 LASX 指令模式无法被匹配的问题,以及 VEXTH/VEXTH_U 被错误用于形如 v8i8 -> v8i32 和 v2i64 -> v2i128 扩展操作的问题。这个问题是 #207316 启用向量高 128 位扩展优化引入的。
Rong "Mantle" Bao 修复了 RISC-V/LoongArch lld 在启用 --no-relocs --emit-relocs 参数的情况下重定位漂移的问题,但 Jessica Clarke 对此提出反对意见,认为 --emit-relocs 选项在启用链接器松弛的情况下没有意义,但考虑到 GNU ld 与 mold 均选择修复该问题,因此仍需进一步讨论。
.NET
上个月,An Liu 提交了龙架构原子指令支持,同时支持 LoongArch ISA v1.0 及 v1.1。本轮补丁在过去一周已正式交给 JIT 开发组审阅。
固件 & 模拟器
模拟器方面,Box64 如常推进优化和修复工作,QEMU 收到两笔修复及 TCG 解释器 LVZ 指令集扩展模拟支持的第 3 版。
Box64
- Yang Liu (ksco)
- Xiang Zhai
- 提交了零值追踪相关提交引入的 SIGBUS 处理中 ABI 1.0 的兼容处理代码。
QEMU
Bibo Mao 修复了恒定计时器 (constant timer) 未启用时 CONSTANT_TIMER_TICK_MASK 未被赋值的问题。
SignKirigami 提交了 TCG 解释器下 LVZ 指令集扩展模拟补丁集的第 3 版,目前 Bibo Mao 已提出一系列审阅意见。
Miao Wang 提交了修复 TCG 解释器模拟时,CSR_ESTAT 同时 CPU 和其他线程写入时的潜在竞态条件的补丁,可解决双 vCPU 客户机中随机出现的 RCU Stall、Soft/Hard Lockup 错误,抑或使用单 vCPU 的客户机时随机卡死在 idle_exit() 函数的问题。
Linux 发行版及操作系统
本周,Linux 发行版及操作系统方面针对龙架构的修复或优化较少。
Debian
Miao Wang 通过回合上游补丁修复了 QEMU 中 dracut 测试的错误。
其他开源项目
如同往常,本周其他项目的动向依然十分活跃。为保障可读性,本周开始对其他开源项目的动向作精筛,并排除了学术性和竞赛相关项目的动向(下期开始可能单列此类内容)。
问题报告与英雄帖
lindexi 发布了为 .NET 交叉编译与发行工具链 PublishAotClang 添加龙架构支持的请求,但作者反馈 .NET 的 AOT 发布设施对龙架构支持尚不完整,需要更多关注以便继续推进。
TOA-HI 发布了为龙芯 2K3000 AI 评估板 (G2K30Z0) 更新固件的请求,并随附了该板的硬件设计。
一位称呼未知的社区开发者发布了为 Chromium Clang 工具链新增龙架构 compiler-rt 二进制的请求,随后上游维护者以龙架构不是 Chromium 官方支持的架构为由表示拒绝,并建议下游维护。但该社区开发者指出,同为非官方(社区)支持架构的 RISC-V 在 2025 年便合入了相关支持,并请求上游说明获得类似支持的先决条件有什么,并对两个架构的不同处置方式给出解释。目前上游未予置评。
移植、优化与修复进展
CrazyMax (crazymax) 修复了可复用 Dockerfile 交叉构建库 tonistiigi/xx 对不同龙架构 Linux 发行版架构名称的支持。上游已合并,等待发版。
Hajime Hoshi (hajimehoshi) 修复了纯 Go 语言实现的 C 函数调用库 purego 在龙架构(和 x86-64)上结构体返回时栈参数计数不足的问题。上游已合并,等待发版。
Mikura Kyouka (Mikura-Kyouka) 为龙芯爱好者社区门户提交了《Box64 入门指南》。该指南现已上线。
Rui Wang (heiher) 为 Rust 崩溃处理库 crash-handling 添加了基础龙架构支持,该库是 Zed 编辑器/IDE 的必备依赖之一。
ruki 修复了 MetsukiMio 先前向跨平台构建系统 xmake 报告的构建系统输出错误龙架构二进制(在 64 位目标下输出了 32 位二进制)的问题。补丁已合入主分支,等待发版。
wuggy 发布了基于 Firefox XUL 时代版本的浏览器 Dactyloidae(安乐蜥)的 13.2-rc1 版,该版包含龙架构 JIT 支持,可大幅度提高浏览体验。
xiaoxiaoafeifei 为 Julia 编程语言的 cpufeatures(处理器特性探测库)库添加了龙架构处理器特性探测的支持,并表示这是为 Julia 添加龙架构支持计划中的一部分。上游维护者已表达原则性认可。
Zhongkai Xu 为 Type-1 裸金属虚拟机管理器 hvisor 添加了龙架构 Alternative Routing-ID Interpretation (ARI) 支持。ARI 可提高虚拟化系统的可扩展性和低延时性能。
YANGJINZE (KincaidYang) 为 WHOIS 查询工具 whois 添加了龙架构二进制生成目标支持。目前该更改已合并,自 1.1.0 版开始发行龙架构 (ABI 2.0) 二进制。
Yao Zi (ziyao233) 为 RISC-V 模拟器 RVVM 提交了龙架构 JIT 后端支持,根据作者介绍,JIT 后端目前可实现约 7% 原生性能,但相比纯解释器实现,性能已有 4.7x 提升。上游已合并,等待发版。
Xi Zhang (cheungxi) 为模块化计算机系统仿真器 gem5 提交了龙架构支持。目前已得到一位上游维护者认可。