我一直在做 KVM 的东西,有几个问题想不通。
1>众所周知,通常外部中断会导致VMexit,如果是针对guest,虚拟机管理程序将注入虚拟中断。那么将注入哪个 irq(我的意思是用于索引来宾 IDT 的中断向量)?KVM 如何知道这一点(将主机 IRQ 与来宾虚拟 IRQ 关联)?
2> 如果分配给guest 的设备,hypervisor 会将该IRQ 传递给guest。通过跟踪代码,我发现主机 IRQ 与来宾的不同(我的意思是中断向量)。KVM 如何配置来宾应该使用哪个中断向量?
3> 如果我们通过在 VMCS 中设置一些字段来配置不退出外部中断,那么在物理中断期间会发生什么?CPU会使用guest IDT来响应中断吗?如果是这样,KVM 是否可以重定向 CPU 以使用另一个 IDT 来宾(假设修改 IDTR)?
4> 访客IDT在哪里?这是在初始化 vcpu 和寄存器(包括 IDTR)时由 qemu 配置的吗?
我真的希望有人能回答我的问题。我将不胜感激。
谢谢