arm_vcpu
路径:
virtualization/arm_vcpu类型:库 crate 分层:组件层 / AArch64 虚拟化 core
arm_vcpu 是 OS-neutral 的 AArch64 vCPU core。它只负责 EL2 entry/exit、guest trap frame、guest EL1/EL0 系统寄存器保存恢复、trap decode、Stage-2 寄存器语义和少量可在 vCPU core 内部完成的架构处理。它不直接绑定 AxVM、ArceOS、ax-percpu、ax-crate-interface、axvm-types 或 ax-errno。
AxVM/ArceOS 接入层位于 virtualization/axvm/src/arch/aarch64:该 adapter 把 ArmVcpu<H> / ArmPerCpu 包装成 axvm_types::VmArchVcpuOps / VmArchPerCpuOps,并负责 ArmVmExit、ArmVcpuError 和 AxVM 类型之间的转换。
架构设计
设计定位
arm_vcpu本体是 AArch64 硬件虚拟化执行 core,不是 VM 生命周期管理层。- 宿主 OS/VMM 策略通过
ArmHostOps注入,包括虚拟中断注入、pending host IRQ 获取和 current-EL host IRQ 处理。 - AxVM 仍是本仓库默认 consumer,但 AxVM trait glue 已经属于 AxVM adapter,而不是
arm_vcpucore。 arm_vgic仍独立维护虚拟 GIC 设备模型,本 crate 不把 vGIC 泛化进 vCPU core。
模块结构
src/lib.rs:crate 入口与对外导出,导出ArmVcpu、ArmPerCpu、ArmHostOps、ArmVmExit、ArmNestedPagingConfig、ArmVcpuError和兼容别名。src/types.rs:OS-neutral 地址、访问宽度、nested paging config、VM exit 和错误类型。src/host.rs:ArmHostOpstrait,以及 current-EL IRQ handler 的泛型到汇编入口桥接。src/vcpu.rs:vCPU 主体、EL2 guest entry/exit 协议、guest 系统寄存器恢复、VM exit 分类。src/pcpu.rs:per-CPU EL2 本地状态,负责异常向量安装和硬件虚拟化开关。src/exception.rs/src/exception.S:EL2 异常入口、VM exit trampoline、同步异常和系统寄存器 trap 处理。src/context_frame.rs:guestTrapFrame和GuestSystemRegisters保存恢复。src/exception_utils.rs:ESR/FAR/HPFAR 解析与辅助汇编宏。src/smc.rs:SMC 调用封装。