龙架构上游动向

2026.06.20-2026.06.26

本文包括了龙架构近一周(截至 2026 年 6 月 26 日)在 Linux 内核、工具链、EDK II、Box64、QEMU 及发行版操作系统等方面的技术进展。Box64 方面,本周继续多个功能修复,并引入了全新的图形化配置工具;龙芯社区版 UEFI 固件发布 202605 稳定版本;U-Boot 上游化再次启动,有望成为龙架构开源固件的可行方案。

Linux 内核

平台支持

本周的 Linux 内核平台支持变更主要集中在针对问题固件的规避和兼容性修缮,以及现有平台设备的支持修缮上。

针对社区用户之间经常烦扰的部分昆仑固件板卡无法启动主线内核,“只能启动 Loongnix”的问题,Huacai Chen 为龙架构添加了 acpi_add_early_pio() 函数,用于添加早期访问的 ISA/LPC PIO(可编程输入输出)设备;以及 acpi_remove_early_pio() 用于在 PCI 根桥注册之前移除 PIO 设备。经 Yuanzhen Gan 测试,该补丁的确可以解决了由早期 ISA/LPC PIO 访问引起的引导失败问题。

编者按:该笔补丁针对部分搭载不规范固件的存量设备提交的,目前已知相关设备有来自希沃 (SEEWO) 的 3A6000 μMATX 主板 (CB,L3A6.MA01 V1.0) 及来自英众的 3B6000M mITX 主板。

平台设备修缮方面,Binbin Zhou 提交了修复龙芯 2K0500 BMC 多功能设备 (MFD) 驱动中视频模式解析中的 iomem 指针的不正确处理的第 2 版补丁。添加了第 1 版中缺失的 memcpy_fromio() 数据拷贝,并删除了不必要的 buf 变量;该补丁已获得审阅者 Huacai Chen 的审阅通过。此外,Binbin Zhou 还提交了为 2K0300 SoC 添加 I2S 控制和声卡支持的第 3 版补丁,修复了第 2 版中由 AI Sashiko 报告的 ACPI 属性解析错误处理,将平台配置结构体标记为 const、修正了 GPIO 命名并新增了 DAPM 路由支持。

KVM 子系统

本周,KVM 子系统方面的更改以修缮为主。Bibo Mao 提交了修复 KVM 在内核态使用了用户态 API 的问题的第 2 版补丁,在 eiointc_set_sw_coreisr()eiointc_update_irq() 中添加边界检查与 ipnum;将 IPI 注入和清除操作移入 spin_lock 保护区域内,避免竞争条件;添加了用户态注入检查。

两周前(2026 年 6 月 15 日),Tao Cui 提交了为龙架构添加 KVM PV TLB (Translation Lookaside Buffer) flush(半虚拟化 TLB 刷新)支持的第 4 版补丁,审阅者 Bibo Mao 指出了错误路径处理,和用 hypercall 替代 IPI 可能效率更高等问题。Tao Cui 本周报告了在 8 核主机使用 4:1 过载的虚拟机的测试情况。

BPF 子系统

本周,BPF 子系统方面的更改主要集中在性能优化及平台修缮上。Chenguang Zhao 为龙架构实现了 BPF JIT kptr xchg 内联优化,当 JIT 通过 bpf_jit_supports_ptr_xchg() 声明支持时,BPF 验证器可以将 bpf_kptr_xchg() 辅助函数调用降级为单条原子指令,性能测试显示吞吐量提升 21%。但审阅机器人反馈补丁 1 仅修复了 BPF_XCHG 的屏障问题,需确认其他带返回值的原子 RMW 指令是否要确保一致性。

BPF JIT 修缮方面,Chenguang Zhao 提交了为龙架构实现 BPF JIT kptr xchg 内联优化的第 3 版补丁,将 JIT 修复排序扩展到所有带返回值的原子操作 (BPF_FETCHBPF_XCHGBPF_CMPXCHG),并添加了 __bpf_root() 解决 libbpf 的 kfunc 链接器问题。此外,George Guo 还修复了龙架构 BPF JIT 中尾部调用计数 (TCC) 的两个问题:

  • 修复了内存损坏的问题,arena 程序因额外的 REG_ARENA 寄存器槽位导致的尾调用计数指针偏移错误。
  • 修复了空槽位增加尾部调用计数的问题,因 emit_bpf_tail_call() 在检查 prog_array 槽位是否为空之前,就先递增了尾调用计数,并将新值写回。即使跳转到空槽位(控制流未转移),计数也被消耗。

其他内核功能

本周在 Linux 内核的核心功能与内存管理方面也有多项修复。

Huacai Chen 移植了 MIPS 中的一个提交补丁,为龙架构的 stop_this_cpu() 函数添加了 rcutree_report_cpu_dead() 调用,以在系统关机/重启时向 RCU 报告,避免因 RCU 长期等待而导致的系统挂起问题。这应该只会影响理论上可能存在的不支持 IPI IOCSR 的硬件,目前不存在此种硬件。另外,Hongchen Zhang 修复了龙架构在启用硬件页表遍历 (HW PTW) 时,因硬件仅设置 _PAGE_DIRTY 而未设置软件位 _PAGE_MODIFIED,导致 fork CoW 后脏页信息丢失、可能引发数据损坏的问题。

本周在代码清理与配置更新方面,Sang-Heon Jeon 清理了龙架构 kasan_init() 函数中因 for_each_mem_range() 不返回无效范围而不必要的 start >= end 检查。该补丁已获得审阅者 Andrey Ryabinin 的审阅通过以及审阅者 Mike Rapoport 的确认 (Acked-by)。此外,Pengpeng Hou 将龙架构 defconfig 中过时的 CONFIG_I2C_DESIGNWARE_SLAVE 配置项更新为当前通用的 CONFIG_I2C_SLAVE,以修复因上游 Kconfig 变更导致的 I2C 从设备支持在默认内核中未正确启用的问题。

工具链

ABI

本周,xtexx 针对在 GOT 和 TLS 重定位公式中是否应该加入 addend 的问题发起了讨论,Xuerui Wang (xen0n) 指出一些指令需要预偏移量,按照作者的修复会出现问题,cloudspurs 指出 GOT 重定位用于寻址符号 (S) 的 GOT 条目,而非 (S+A) 的 GOT 条目,同时应区分 TLS 重定位。随后作者将此 Issues 关闭。

LLVM

本周,LLVM 方面主要解决了一个内联函数无法编译的问题。

Zhaoxin Yang (ylzsx) 报告了龙架构在指令选择阶段无法处理 llvm.set.rounding 内联函数,导致包含该调用的 IR 编译失败。随后,tangyuan0821 为龙架构添加了 llvm.set.rounding 支持,将 ISD::SET_ROUNDING 节点合法化并映射到 MOVGR2FCSR 指令,并添加了测试用例,但审阅者 Zhaoxin Yang (ylzsx) 和 Lei Wang (wangleiat) 指出测试用例仍有问题。

Rust

本周,Rust 上游内联汇编文档得到更新,基础库中亦有实现新功能。

heiher 为 Rust 官方参考手册补充了龙架构 LSX (vreg) 和 LASX (xreg) 内联汇编文档。

heiher 为 compiler-builtins(编译器运时库)库添加了龙架构上 CLZ 指令可用性的检测,并重命名了一个导零算法 leading_zeros_riscv,使同样支持条件置位指令的龙架构也可以使用。

heiher 为 portable-simd(Rust 标准库的便携式 SIMD API)库中的 swizzle_dyn 操作在龙架构上添加了针对 16 字节(LSX)和 32 字节(LASX)向量的优化实现,使用 vshuf.b / xvshuf.b 指令替代通用代码,并通过了所有相关测试。

固件 & 模拟器

Box64

Yang Liu (ksco) 本周向 Box64 提交了多个修复,主要包括针对 ROL/ROR 系列指令的功能修复、包装器方面的优化、Box64 配置方面的更新以及模拟指令实现:

  • 针对 ROL/ROR 系列指令的 FLAGS 模拟修复:
    • 分别修复了 8 位16 位 ROL/ROR 指令的 OF 标志计算和保留逻辑。
    • 修复了龙架构 DynaRec 中 8 位和 16位 ROL/ROR 指令的 OF 标志模拟错误。
    • 禁用了龙架构 DynaRec 中所有 CL 操作码的移位/旋转操作的标志融合,以确保这些指令的标志位正确模拟。
    • 修复了龙架构 DynaRec 中延迟标志的回归问题。
    • 改进了解释器中 ROL/ROR 指令的 OF 模拟。
    • 改进了龙架构 DynaRec 中 ROL/ROR 指令的 OF 模拟,并移除了不完整的 cputype 处理逻辑。
  • 针对包装器 (wrapper) 方面的修复:
    • 修复了对于 GLib 库函数 g_option_group_add_entries 的包装错误。
    • 修复了自动生成库包装的工具 wrapperhelper 中的一个拼写错误。
    • 为 liblz4(LZ4 压缩库)添加了包装器。
    • 实现了 2 个额外的 Wayland(显示服务器通信协议)监听器并添加包装器,以支持 Wine-Wayland 在 GE-Proton10-34 中的运行。
    • 增加并修复了 wayland-client 监听器,作者指出 Terraria Linux 在 Wayland 环境下正常运行。
    • 移除了对于 pipwire 的包装。
  • Box64 模拟指令实现方面:
    • 修复了此前更改了 AVX 选项导致了对 CPUID 模拟的回归问题。
    • 修复了特定条件下 DynaRec 中的 32 位 RCL/RCR 指令未清零的问题。
    • 为龙架构 DynaRec 实现了 AAMAAD 操作码,并修复了 AAD16 帮助函数的 FLAGS 模拟。
    • 为龙架构 DynaRec 实现了 PCMPESTRMPCMPISTRM 字符串比较指令。
  • 其他功能实现:
    • 重构了 ctest 相关的 CMake 脚本。
    • 修复了环境变量打印功能中的问题。
    • 修复了 DynaRec 在通过配置文件启用时因跳转表未初始化导致 DynaRec 无法正常启用的问题。

本周,Yang Liu (ksco) 还针对 Box64 Configurator 添加了常用设置组和 BOX64_PROFILE 环境变量支持,并添加了 KDE 文件项操作集成,此插件同时支持 KDE 5 桌面环境。

UEFI 固件

本周,EDK II 上游收到数个龙架构的新功能和修复,ModernSetupPkgs 为龙架构带来图形化 UEFI 设置界面。同时,本周社区版 UEFI 发布了 202605 稳定版本。

功能修复方面,Qihang Gao (EricGao2015) 为 SecurityPkg 中的 PE 镜像解析函数 LoadPeiImage() 添加了龙架构支持:如果 PE/COFF 镜像的机器类型是 LOONGARCH64 则返回 EFI_SUCCESS ;同时删除了未使用的变量。

UEFI 交互式前端方面,Dongyan Qian (MarsDoge) 为 ModernSetupPkg(UEFI 交互式前端)实现了多个功能:新增了 SMBIOS 系统侧栏、基于 HII 表单的“面包屑”(分段路径)导航、“快速设置”页面,并添加了俄语界面支持。

龙芯 UEFI 固件 EDK II 本周发布了新的稳定版本,stable202605,其中 Dongyan Qian (MarsDoge) 更新了 PC 平台固件,Zixuan Lu 补充发布了 香橙派 Nova 及 XB612B0_V1.1 主板的固件。本版固件主要引入固件备份恢复、ACPI FPDT 启动性能测量表及 ACPI I/O 虚拟化表 (IOVT) 等新功能,并实验性地加入了对主线内核的 CPU 动态调频调压 (cpufreq) 驱动的支持。

QEMU

本周 QEMU 新增了龙架构的虚拟机迁移测试支持,同时一周前的补丁在本周被审阅者合并。

Bibo Mao 为龙架构添加了虚拟机迁移测试(migration-test)支持。已由审阅者 Stefan Hajnoczi 合并

一周前(2026 年 6 月 17 日),Helge Deller 为龙架构 CPU 实现了 /proc/cpuinfo,并于本周由审阅者 Stefan Hajnoczi 合并

U-Boot 上游化

近期,社区开发者再次启动了龙架构 U-Boot 上游化工作。基于此前对 U-Boot 上的工作,社区开发者 Yao Zi (ziyao233) 正主导基础平台支持代码的修缮。

Yao Zi (ziyao233) 修复了此前重构设备树内存解析函数 fdtdec_setup_memory_banksizefdtdec_setup_mem_size_base_lowest 的补丁,将开放编码排序替换为 qsort,并修复了CONFIG_VAL(NR_DRAM_BANKS) 引起的 SPL 编译错误。

Yao Zi (ziyao233) 修复了此前重构代码库,允许 setup_booti 提供入口点的补丁,修复了 sandbox 中的 booti_setup()

此前在龙架构上实现了完整的框架支持,Yao Zi (ziyao233) 又重新添加了 HOST_ARCH 定义。

Yao Zi (ziyao233) 正确实现了 dcache 操作。

Yao Zi (ziyao233) 在 CPU 汇编例程中,在跨 C 函数边界时将 t6 替换为 s5 以保存重定位偏移量。

Yao Zi (ziyao233) 移除了龙架构 Linux 内核镜像的加载与引导功能中未使用的 arch_lmb_reserve()

Yao Zi (ziyao233) 移除了 qemu-loongarch 板级支持中对已废弃 API 的调用。

Yao Zi (ziyao233) 在 efi_helper.c添加了 HOST_BOOTEFI_NAMEHOST_PXE_ARCH 定义。

发行版

Anolis OS(龙蜥)

gaosong 修复了龙架构 KVM 中软件中断时硬件定时器中断丢失的问题,优化了定时器清除路径中的延迟逻辑并增加了 ESTAT 二次检查。

安同 OS

Mingcong Bai 后向移植了 Linux 内核中针对龙芯 2K0500 BMC 多功能设备驱动中语义错误的修复。

其他开源项目

本周龙架构在开源生态中的适配工作依旧丰富,覆盖了从系统仿真器及内核方面、.NET 运行时/CPython 方面及基础图形处理库等众多关键项目。

系统模拟器及内核

doruche 则为 anemone 添加了龙架构支持,确保 mke2fs 能在龙架构上正确编译和运行,并修复了嵌套 shebang 处理中的问题。

Ke He (Lfan-ke) 在 Machina(一个用 Rust 编写的模块化全系统仿真器)中为龙架构 GCSRXCHG 指令编写了两个测试用例,验证非零掩码的按位更新测试和零掩码的只读测试。作者还新增了一个龙架构测试终止器 (test-finisher) MMIO 设备,使裸机测试程序能像模拟器报告成功/失败状态,并建立了基于退出码的 CI 测试流程。

基础库

Charles Harris (charris) 在 NumPy(Python 中的科学计算和数据分析基础库)中为 uv 的 pip 安装命令添加了 --only-binary 参数,使其使用预编译的二进制包,而不是源码编译。

dabao1955 为 ffi(Libffi 绑定的 purego,可以使用 purego 调用 C 而不使用 cgo) 添加了龙架构支持。

lawn123 为 .NET Runtime 添加了龙架构的原子指令,以支持在 ISA1.0 和 ISA1.1 上实现原子指令。

sunhaiyong1978 为 libilbc(iLBC 音频编解码器库)添加了龙架构预处理程序支持。同时作者还为 Mozilla 的 NSPR (Netscape Portable Runtime) 库实现了对龙架构的自动识别与构建支持。

wszqkzqk 为 highway(一个提供可移植 SIMD/向量内建的 C++ 库)修复了龙架构 LSX LoadInterleaved3 函数在处理 64 位 uint16_t 向量时因索引错误导致通道 0 和 2 数据交换的问题。作者还为 Pillow(Python 中的图像处理库)上的龙架构提高了 AVIF(以 AV1 影片编码器为基础的图片格式)测试的 epsilon 值,以容纳龙架构上 libavif 编解码器带来的微小浮点精度差异。

yzewei 则修复了 cpython(Python 3.16.0 alpha 0 版本)中在龙架构上 test_c_stack_unwind 测试失败的问题。

应用程序

2026 年 5 月 23日,Haoxuan Pi (pihaoxuan) 报告了为 Claude Code 添加龙架构支持,但目前 PR 并没有官方回复而被 bot 关闭。

shankerwangmiao 在 Nginx 的配置文件中为龙架构设置了缓存行大小,由原本的未知架构默认值 32 字节改为 64 字节,以匹配龙架构的硬件特性。

Xiaobai Wu (xuxiaowei-com-cn) 请求containerd(容器运行时)添加龙架构支持,维护者 samuelkarp 提出首先需要为龙架构添加编译测试。作者提交了对龙架构支持的 PR。

Xiaowei Xu (xuxiaowei-com-cn) 在 CI Runner 支持进度的 Issues 中提交了为龙架构构建 GitLab Runner Docker 执行器所需的 Helper 镜像的解决方案。

文档与技术参考

phorcys 为 unofficial-loongarch-intrinsics-guide 添加了 LBT 指令的详细文档,作者确定下周会处理所有的文档。

全国大学生系统能力大赛相关

a6d9a6m 在 comix实现了稳定启动并跑通 OSComp musl 冒烟测试。

MF-B 在 tgoskits(面向操作系统与虚拟化开发的集成仓库)项目中 增加了对 LS2K1000 板卡的支持,使 ArceOS/StarryOS 能在 loongarch64-ls2k1000 上完成启动、挂载 rootfs、进入 Starry shell,并使用板载 AHCI/GMAC 等基础设备。

Suquster 修复了 RustMicroOS 中龙架构高地址内存不足的问题,将可用物理内存从 ~155 MB 提升至 ~992 MB;同时调整了测试顺序为 musl 优先。

theflysong 为 SUSTcore(南方科技大学使用的内核)添加了龙架构的 virtio-block 块设备支持。

xcy963 报告了在 HITOSTeam 的 OS_Workspace(HITOS 医疗团队使用的内核) 中龙架构上 musl libc 的部分官方镜像有很多空函数(例如:sched_getparamsched_getschedulersched_setparamsched_setscheduler),导致 cyclictest 程序无法正常运行;作者自己实现了这些函数。