arm_vgic
路径:
virtualization/arm_vgic类型:库 crate 分层:组件层 / 可复用基础组件 版本:0.2.1文档依据:Cargo.toml、README.md、src/lib.rs、src/vgic.rs、src/vgicd.rs、src/interrupt.rs、src/devops_impl.rs、src/consts.rs、src/registers.rs、src/vtimer/*、src/v3/*
arm_vgic 是 ARM 虚拟中断控制器相关组件集合。它既包含面向 guest 的 GIC MMIO 设备实现,也包含虚拟定时器系统寄存器设备,以及可选的 GICv3 透传/窗口模型。它不是完整的“所有中断虚拟化逻辑都在这里”的单体,而是与 arm_vcpu、axvm、axdevice、axvisor_api 明确分工的组件。
架构设计
设计定位
arm_vgic 的职责可以概括为“两类虚拟设备 + 一层状态建模”:
- 一类是 guest 可见的 GIC MMIO 设备窗口,如
Vgic、VGicD、VGicR、Gits。 - 一类是 guest 可见的系统寄存器设备,如虚拟物理定时器
CNTP_*设备。 - 中间层则是软件维护的中断元数据、寄存器解码和若干宿主 GIC 访问/屏蔽逻辑。
但它 不 完整负责:
- vCPU 进入/退出生命周期,这属于
arm_vcpu。 - 虚拟中断最终注入执行,这一动作已由
arm_vcpu/axvisor_api承担。 - 全量 GIC 寄存器行为建模,当前实现范围明显小于 README 中较强的宣传语。