ARTICLE · 1077203
Xvisor 源码分析:中断虚拟化 — 从 HCR 注
Xvisor 源码分析:中断虚拟化 — 从 HCR 注
Xvisor 源码分析:中断虚拟化 — 从 HCR 注
整块 SoC 只有一个物理 GIC,但每个 Guest 都想要个完整的、独占的中断控制器。直接把物理 GIC 交给它们?两个虚拟机同时写一个寄存器,状态立马互相破坏。
解法是把 GIC 拆成三份:软件模拟、直通、硬件辅助排队。最上面一层通用机制负责粘合,连未定义指令、数据访问失败这些异常,最后也全走这条路径送回 Guest。
没有 VGIC 硬件时,只能用 HCR 注入或纯软件模拟。代价是每个中断至少两次陷出,性能全耗在频繁进出 Hypervisor 上。
上了 VGIC 硬件后,高频的读 IAR、写 EOIR 交给 GICV 直通,零陷出;低频的分发器配置才陷出给软件模拟。中断来了就塞进 List Register,硬件自动呈现给 Guest。
Guest 处理完写 EOIR,硬件清空 LR 并触发维护中断。xvisor 就在中断里回收队列,顺便把积压的待处理事件继续填进去。
原文Xvisor 源码分析:中断虚拟化 — 从 HCR 注入到 VGIC 硬件辅助
陕西,6小时前,