加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – KVM如何处理中断

发布时间:2020-12-14 01:54:33 所属栏目:Linux 来源:网络整理
导读:我一直在做KVM的事情,有几个问题无法弄清楚. 1 GT;我们知道,通常外部中断会导致VMexit,如果是guest虚拟机,虚拟机管理程序将注入虚拟中断.然后注入哪个irq(我的意思是用于索引客户IDT的中断向量)? KVM如何了解这一点(将主机IRQ与来宾虚拟IRQ相关联)? 2 – ;
我一直在做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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读