我正在为 VM 的 IO 进行 KVM 优化。我看过KVM代码,通常所有的物理中断都会导致VMexit进入KVM。然后主机的IDT会处理相应的物理中断。我的问题是 KVM 如何决定是否向 guest 注入(inject)虚拟中断?在什么情况下它会向 guest 注入(inject)虚拟中断?
谢谢
最佳答案
在 kvm 的文档中,这是关于何时可以注入(inject)虚拟中断的内容。这是链接http://os1a.cs.columbia.edu/lxr/source/Documentation/kvm/api.txt
查看第 905 行。
我认为 struct kvm_run 结构可以控制应用程序如何制作 VM
行为。使用cscope并在源代码中搜索字符串request_interrupt_window,您将了解kvm如何查看何时进入guest以注入(inject)中断。另外通过api.txt文件非常有帮助。
干杯
已编辑
这是主机向 guest 注入(inject)中断的一个示例。
假设 GUEST VM 中存在页面错误
这是主机插入虚拟中断的一个示例。当然,还有很多其他方法/理由可以这样做。
您实际上可以配置 VMCS 以使 guest 在执行 后执行 VMEXIT每条指令这可以使用 MONITOR TRAP FLAG 来完成。
关于interrupt - KVM如何处理物理中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10826261/