龙架构上游动向
2026.06.13-2026.06.19

本文包括了龙架构近一周(截至 2026 年 6 月 19 日)在 Linux 内核、工具链、EDK II 及发行版/操作系统等方面的技术进展。
Linux 内核
平台支持
Binbin Zhou 修复了 龙芯 2K0500 BMC 多功能设备 (MFD) 驱动中视频模式解析中的 iomem 指针的不正确处理。
Bibo Mao 为龙架构添加了 ACPI IOVT (I/O Virtualization Table) 表的解析支持,包括 ACPI 框架扩展、PCIe 访问控制服务 (ACS) 自动启用、IOMMU 设备扫描及设备匹配逻辑等功能。
Qunqin Zhao 提交了为龙芯安全引擎 (Security Engine) 驱动添加了多节点中断转发支持的第 3 版补丁,使用共享中断 IRQF_SHARED 而不是手动遍历所有设备以检查中断。
KVM 子系统
Tao Cui 提交了为龙架构添加 KVM PV TLB (Translation Lookaside Buffer) flush(半虚拟化 TLB 刷新)支持的第 4 版补丁,移除了第 3 版中的补丁 1;审阅者 Bibo Mao 指出了错误路径处理和替代 hypercall 方案等问题。
Bibo Mao 提交了为 FPU 添加测试用例的第 3 版补丁,修正了第 2 版中提出的问题:在补丁 2 中检查 LSX/LASX 功能时,直接使用 __kvm_has_device_attr(),而不是使用 __vm_has_feature()。
Bibo Mao 修复了 KVM 在内核态使用了用户态的 API 的问题,将内核态的中断递送从用户态 API(kvm_vcpu_ioctl_interrupt)切换到内部 API(kvm_queue_irq 和 kvm_dequeue_irq)并移除注入不支持的中断号 0 时的不必要 printk 警告。
BPF 子系统
George Guo 为龙架构 BPF JIT 添加了 arena 指令门控功能、私有栈支持及异常处理支持。
Tiezhu Yang 提交了当 JIT 被禁用或编译失败时回退到解释器导致的非对齐 panic 问题的第 4 版补丁:将静态函数重命名为 bpf_fixup_fallback_helpers(),删除冗余的辅助 ID 范围检查并优化了代码结构。
Tiezhu Yang 提交了 BPF 自测试补丁的第 2 版补丁:添加了 get_preempt_count() 支持、架构限制宏 __arch_loongarch,以及针对 bpf_get_current_task() 和 bpf_get_smp_processor_id() 的 JIT 内联的测试用例,作者指出此提交依赖于龙架构核心系列(将 thread_info 移动到 task_struct 中)。
其他内核功能
Haoran Jiang 提交了为龙架构启用了 STRICT_MODULE_RWX(更严格的模块内存权限)安全特性的第 4 版补丁:在 larch_insn_write 调用路径中添加了 text_mutex 锁,并默认启用 CONFIG_STRICT_MODULE_RWX 选项;审阅者 Huacai Chen 认为作者的相关测试并不完整,且作者并没有采纳第 3 版中对于 kprobes 的最佳修改方案。随后作者回应了部分意见,此补丁仍在讨论中。
Bastian Blank 为龙架构的 vDSO 添加了构建“盐”(Build Salt,即特殊标记),使其构建时生成唯一的 build ID。
工具链
GCC
Ruoyao Xi 提交了针对龙架构 SSP 例程在 ILP32 ABI 下生成错误 64 位访存指令问题的修复的第 2 版补丁。和第 1 版相比,该版补丁显式禁用了 ILP32 下不支持的 ldptr.d/stptr.d 指令。
Ruoyao Xi 提交了 Chen (jiegec) 报告的混合了符号扩展和零扩展的向量点成操作为直接使用龙架构对应指令的问题的第 2 版补丁。和第 1 版相比,该版补丁使用 C 重写了测试用例,这样可以重用 gcc.target/loongarch/vector/lasx 中仅在支持 LASX 的处理器上运行编译产物的机制,而不用自行编写该逻辑。
LLVM
Runze Lin (lrzlin) 为龙架构 LSX/LASX 添加了 PARTIAL_REDUCE_MLA 和 getPartialReductionCost 操作的支持。对 PARTIAL_REDUCE_MLA 操作码使用 vmulwev.h.b[u] + vmulwod.h.b[u] + 2 x vhaddw.w.h + 2 x vadd.w 进行行内操作,并实现了 getPartialReductionCost() 函数为向量化器提供成本模型;该优化在 SPEC CPU2026 的 706.stockfish_r 测试中(使用 3C5000L 测试)可实现约 57% 的性能提升。
Box64
Yang Liu (ksco) 本周在 Box64 上有多个修复:
- 包装了
process_vm_writev函数,增加基于 ptrace 的 fallback,以支持 Syringe.exe(Windows 进程注入工具)的跨进程内存访问。 - 修复了信号处理函数返回时对于调试模式的处理,支持
Syringe.exe的调试进程恢复。通过在信号恢复路径中,如果检测到 TF 被设置,则设置no_tf标志以跳过第一个SIGTRAP,使Syringe.exe在 Wine 下正常工作。 - 将
IRET指令中关于陷阱标志 (TF) 处理的修复移植到龙架构 DynaRec,并完善了IRET指令对于调试模式和异常情况的处理。 - 优化了 DynaRec 中的文件缓存调试日志,并重构了文件缓存代码,去除冗余的宏定义;优化文件缓存列表命令的输出格式。
- 为 DynaRec 添加了两个环境变量,修复了文件缓存中某些选项没有被追踪的问题。
- 修复了 DynaRec 在
pass0阶段提前退出的 dynablock 退出时未正确保存 EFLAGS 寄存器的问题。 - 修复了龙架构 DynaRec 中一些标志模拟的几个边缘情况。
- 为
explorer.exe在 Wine 下运行添加了配置文件,禁用 bigblock 以提高其冷启动速度。 - 增加了 Box64 配置器(GUI 工具),用于快捷的单应用配置。
- 对
SHOWSEGV信号处理功能添加了安全性功能处理。
固件 & 启动器
EDK II
Chao Li (kilaterlee) 添加了 EDK II 动态栈 Cookies 入口点库支持,以便启用栈保护功能,并更新了 EDK II 的龙架构维护者目录。
2026 年 5 月 13 日,Dongyan Qian (MarsDoge) 为 EDK2 的 PciBusDxe 驱动添加了 PcdPciScanFuncIfFunc0Absent 选项,以控制是否在功能 0 不存在时继续扫描收集 1-7 号功能的信息(该选项默认值为 FALSE),这一选项可方便支持某些虚拟化拓扑中的非标准设备暴露场景;本周,该补丁收到了核心维护者 lgao4 的认可。
发行版
AnolisOS(龙蜥)
wangkanglong 为 Anolis OS 6.6 内核禁用了龙架构上支持不完善的 CONFIG_STRICT_MODULE_RWX 并修复了编译错误。
deepin
heysion 为 CUPS 调度器增加了 ELF 头解析功能,以检测龙架构旧世界 obj-v0 二进制文件。该功能使用 deepin-compatible-ctl 自动包装,用以替代编译时全部跳过策略,实现细粒度兼容控制。但审阅机器人报告目前 CUPS 软件版本号受控,不得更新。
安同 OS
Xinmudotmoe 禁用了 Linux 内核的 CONFIG_HSA_AMD_P2P 选项,解决了龙架构 3B6000/3C6000 CPU 在 AMD GPU (Radeon RX 9070 XT) 下由于疑似龙芯平台 PCIe P2P 功能存在功能问题,导致 llama.cpp 运行时输出杂乱数据的问题。
Ruoyao Xi (xry111) 修复了 loonggpu-kernel-dkms 包中 KCD 补丁的一个低级错误。
Ruoyao Xi (xry111) 为 loonggpu-kernel-dkms 社区分支添加了 Linux 7.1 支持,并修复了一些遗留问题:修复了 CONFIG_DEBUG_FS=n 时的构建问题、将帧缓冲设备的睡眠唤醒逻辑切换至 DRM 客户端、修复了 Linux ≥ 6.19 上的潜在双重释放问题,并适配了 Linux 7.1 内核中 drm_buddy 到 gpu_buddy 的 API 重构。
Ruoyao Xi (xry111) 修复了使用 Linux 7.0 内核时 LG110 设备和部分 AMD 显卡在从睡眠唤醒后直接导致整个内核崩溃的问题。
全国大学生系统能力大赛相关提交
本周 rCoreOS(唐图)的 tgoskits(面向操作系统与虚拟化开发的集成仓库)项目中收到了多笔龙架构相关的提交:
- Kevin Choo (Promin3) 改进了 StarryOS 的 GDB/ptrace 龙架构支持。
- Feng Lin (Godones) 为 Starry OS 的龙架构内核模块添加了直接映射窗口 (DMW) 后端支持。
- Qingya Zhang (dweeqhd) 为 AxVisor 中断框架添加了龙架构 VM 后端路由中断功能。
- Rui Zhou (ZR233) 按新的串口 IRQ/队列模型重构了串口驱动,其中修复了龙架构 DMW 早期执行地址被误判为已 relocated 的问题。
- Rui Zhou (ZR233) 为龙架构 UEFI 优化了系统时间初始化路径,优先使用 UEFI 固件提供的的 Runtime Service
GetTime初始化系统 wall clock,只有当固件 RTC 不可用时,才会回落到ax-driver的 RTC 驱动探测。
其他开源项目
dcsid 报告了 highway(一个提供可移植 SIMD/向量内建的 C++ 库)上的 sort_test 在无原生 float16 的工具链上构建失败的问题。该问题使用 iota/-klnf 修复后,龙架构上的遇到一个隐藏问题:在 loongarch_lsx-inl.h:272 的 GetLane 函数中,对 2 字节通道(float16_t)执行了 static_cast<T>(__lsx_vpickve2gr_h(...)),该操作对于仿真的 float16_t 同样不合法(无法从 int 构造)。
Emil Lerch (elerch) 为 mise(开发环境管理工具)添加了对龙架构支持。
Denys Fedoryshchenko (nuclearcat) 为 KernelCI(自动化内核持续集成测试框架)的 kernelci-pipeline 组件添加了龙架构构建支持,并为 kernelci-core 组件添加了龙架构构建支持。
futz12 为 ncnn(神经网络推理框架)修复了龙架构上 int8 量化卷积在遇到扁平化 1D 输入和 1x1 卷积核时的计算错误和形状错误问题。
Gaojuxin09 修复了龙架构 LTP 上的两个资源枯竭 (starvation) 运行时测试的问题:一是使 -t 运行时参数有效,避免被自动校准覆盖;二是根据客观硬件制约,跳过了对 CONFIG_PREEMPT_VOLUNTARY=y 内核的测试。
heiher 为 Wasmtime(WebAssembly 运行时)添加了龙架构纤程 (Fiber) 调度支持。
theflysong 为 sustcore(南方科技大学 sustcore 团队内核)添加了龙架构的初始支持。
victorbash400 导入了先前被 fastfetch 上游拒绝的龙架构 ABI 模块支持,为其 fastfetch 分支 所用。
wszqkzqk 为 Google 的 go-tpm-tools(可信平台模块工具集)添加了龙架构支持。
wszqkzqk 为微软的 TPM 2.0 参考实现 添加了龙架构支持。
Kaiyang Wu (OriginCode) 发布了关于 C++20 多线程处理库 TooManyCooks 龙架构支持的英雄帖(该库是聊天软件 Telegram 6.9.3 添加的新运行时依赖);随后 Ruoyao Xi (xry111) 为该库添加了 64 位龙架构支持;tzcnt 随后为 Telegram 桌面客户端更新了 TooManyCooks 版本,最新版已可直接在龙架构上顺利构建。
xcy963 在 OS_Workspace(用于医疗的操作系统)上报告了龙架构的内存不连续的问题:龙架构 QEMU 设备树提供了两个不连续的内存节点(0x0 处的 256MiB 和 0x80000000 处的 768MiB),导致现在龙架构部分始终少 256 MiB;作者认为需要修改 init_phys_mem_from_dtb 函数以支持扫描并添加所有内存节点。