使用Intel VT-x虚拟化中断概述

时间:2017-11-19 04:33:15

标签: linux linux-kernel x86 virtual-machine

我正在尝试允许在非root VMX模式下运行的代码使用xAPIC将IPI从一个核心发送到另一个核心。我正在VMM和来宾操作系统中实现此功能。我很难让这个工作起来,在花了几个小时阅读文档后,我想伸出手来看看是否有人能指出任何明显的缺陷或帮助巩固一些有用的信息。

以下是我的理解:

在EPT中,我应该将所有客户物理地址访问映射到内存映射的APIC寄存器到内存映射的APIC寄存器的主机物理基地址。因此,当我尝试写入来宾操作系统中的APIC寄存器时,它们将转到APIC寄存器。据我所知,由于CPU在非root VMX模式下发生这种情况,APIC知道要虚拟化这些中断。

接下来,当收到IPI时,将退出VM退出原因EXIT_REASON_EXTERNAL_INTERRUPT。然后,VMM应通过ISR查找与接收到的中断对应的位集。接下来,我将中断注入客户操作系统。

我认为我正在正确地发送IPI,或者至少我上面写的内容似乎正常工作。但是,我很难收到IPI。当我查看ISR时,没有设置位。有没有人有什么建议?我使用的是Intel Xeon CPU E5-2630,但我通过设置nox2apic内核参数将x2APIC设置为使用xAPIC接口。

0 个答案:

没有答案