feat(vgicv3): implement external interrupt pending handler
Add VirtualGenericInterruptControllerV3SetExternalInterruptPending callback
Set SGI/PPI pending bits for interrupts ID < 32
Set SPI pending bits and route to target vCPU using irouter for ID >= 32
Update QEMU AArch64 Virt PL011 UART interrupt ID in device tree
新功能(vgicv3): 实现外部中断挂起处理函数
新增 VirtualGenericInterruptControllerV3SetExternalInterruptPending 回调
对中断 ID < 32 设置 SGI/PPI 的 pending 位
对中断 ID >= 32 设置 SPI pending 位并通过 irouter 路由到目标 vCPU
更新 QEMU AArch64 Virt 设备树中 PL011 UART 的中断号
Ultraworked with Sisyphus
Co-authored-by: Sisyphus clio-agent@sisyphuslabs.ai
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802032778号
Xhyper
README.md | README_zh.md
Xhyper 是一款基于 Bao Project 的 Type 1 裸机虚拟机监控器,面向 ARMv8-A 与 RISC-V 嵌入式平台。它强调强隔离、直接硬件控制和可落地的多虚拟机部署,支持 Linux 与 FreeRTOS 工作负载并发运行。
核心特点
支持平台
linux+freertos,linux+linuxlinux+freertoslinux+freertoslinux,freertos,linux+freertoslinux+freertos快速开始
体验 Xhyper 的最快方式是使用 QEMU RISC-V64 Virt 平台。项目已经在
bin/quick-start/中提供了预编译固件。1. 安装 QEMU
如果您的环境中已经安装了
qemu-system-riscv647.2.0 或更新版本,可以跳过这一步。请确认
~/.local/bin已加入PATH。2. 在 QEMU 中启动 Xhyper
在项目根目录执行下面的命令,使用预置的 OpenSBI 镜像启动:
启动后,OpenSBI 会自动加载 Xhyper,并在控制台输出 Guest 日志。
3. 通过 Shell 命令管理虚拟机
Xhyper 提供了内置的 shell 用于虚拟机生命周期管理。Xhyper 启动后,您可以使用以下命令:
创建虚拟机
启动虚拟机
在虚拟机控制台之间切换
运行多个虚拟机时,使用 Leader Key 快捷键在控制台之间切换:
示例工作流程:
vmcreate Linuxvmstart Linux(自动切换到 Linux 控制台)Ctrl+X,然后按x返回 Hypervisor shellvmcreate FreeRTOSvmstart FreeRTOSCtrl+X+ 方向键在 Linux 和 FreeRTOS 控制台之间切换更完整的构建、板级启动和运行说明,请参考 docs/build.md 以及 docs/board/ 下的各平台文档。
架构概览
src/hardvisor/:面向硬件的基础能力,包括启动、CPU、中断、IOMMU、内存、缓存和 UART。src/softvisor/:负责虚拟机编排、vCPU 生命周期、IPC、日志、虚拟内存和内存分配。src/board/:ARMv8-A 与 RISC-V 平台的 BSP 实现。src/lib/:字符串、位图、链表、映射等通用基础库。test/:基于 Unity + CMock 的本地与板级测试。Xhyper 采用分层设计,将硬件控制与虚拟机管理解耦。完整架构说明请查看 docs/architecture.md。
文档导航
许可证
Xhyper 基于木兰宽松许可证第 2 版(Mulan PSL v2)发布。完整文本请查看 LICENSE,或访问 http://license.coscl.org.cn/MulanPSL2。
致谢
Xhyper 构建在 Bao Project 的基础之上。感谢 Bao 社区在开源嵌入式虚拟化领域的持续贡献。