linux-kernel – KVM如何处理中断
我一直在做KVM的事情,有几个问题无法弄清楚.
1 GT;我们知道,通常外部中断会导致VMexit,如果是guest虚拟机,虚拟机管理程序将注入虚拟中断.然后注入哪个irq(我的意思是用于索引客户IDT的中断向量)? KVM如何了解这一点(将主机IRQ与来宾虚拟IRQ相关联)? 2 – ;如果将分配的设备发送给访客,则管理程序将向访客提供该IRQ.通过跟踪代码,我发现主机IRQ与客户的不同(我的意思是中断向量). KVM如何配置访客应该使用哪个中断向量? 3 GT;如果我们通过在VMCS中设置一些字段来配置不退出外部中断,物理中断期间会发生什么? CPU会使用来宾IDT进行响应中断吗?如果是这样,KVM是否可以重定向CPU以使用另一个IDT作为来宾(假设修改IDTR)? 4>客人IDT在哪里?这是由qemu在初始化vcpu和寄存器(包括IDTR)时配置的? 我真的希望有人可以回复我的问题.我将非常感激. 谢谢 解决方法
1-
2- 代码在irq_comm.c中,非常复杂.对于guest虚拟机向量,虚拟机管理程序捕获并监视guest虚拟机的PCI配置空间(这实际上是在QEMU中完成的 – 请参阅例如kvm_msi_update – 但是KVM的系统调用会使用数据更新它). 3-是的.要设置另一个IDT – 您需要更改VMCS中的IDTR字段. 4-访客IDT由访客代码配置. QEMU / KVM没有直接参与其中.您需要将执行控件配置为在LIDT上进行陷阱,以便监视来宾IDTR的更改. 听起来你正试图从ASPLOS’12实现ELI.离线与我联系(论文的第二作者 – NA). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |