gpt4 book ai didi

linux-kernel - KVM如何处理中断

转载 作者:行者123 更新时间:2023-12-03 00:51:27 24 4
gpt4 key购买 nike

我一直在做 KVM 方面的工作,有几个问题无法解决。

1> 众所周知,通常外部中断会导致VMexit,如果是针对guest,虚拟机管理程序将注入(inject)虚拟中断。那么哪个 irq 将被注入(inject)(我的意思是用于索引 guest IDT 的中断向量)? KVM 如何了解这一点(将主机 IRQ 与 guest 虚拟 IRQ 相关联)?

2> 如果将设备分配给 guest ,虚拟机管理程序会将该 IRQ 传送给 guest 。通过跟踪代码,我发现主机 IRQ 与客户机的不同(我的意思是中断向量)。 KVM 如何配置 guest 应使用哪个中断向量?

3> 如果我们通过在 VMCS 中设置某些字段来配置在外部中断时不退出,那么在物理中断期间会发生什么? CPU会使用guest IDT来响应中断吗?如果是这样,KVM 可以重定向 CPU 以使用另一个 IDT guest (假设修改 IDTR)吗?

4> guest 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,以便监视 guest IDTR 的更改。

听起来您正在尝试从 ASPLOS'12 实现 ELI。线下联系我(论文第二作者-NA)。

关于linux-kernel - KVM如何处理中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com