我正在努力支持我正在编写的使用 Intel VT-x 虚拟化的 VMM 中的已发布中断。启用发布中断的文档中指定的 VM 进入要求之一是“退出时确认中断”VM 退出控件必须设置为 1。
当我将此控件设置为 1 时,我的客户操作系统会在停止响应之前运行一小段时间。然后,主机操作系统也停止响应,并在主机内核日志中打印一条消息,指出运行来宾操作系统的 CPU 内核发生了硬锁定 ( NMI watchdog: Watchdog detected hard LOCKUP on cpu 10
)。
我正在阅读英特尔文档并试图思考这个问题,但想知道是否有其他人知道发生了什么。我现在的一般想法是,主机操作系统必须向当前正在运行来宾操作系统的内核发送中断(即我的来宾操作系统不参与发送中断),这会导致 VM 退出。由于我将“退出时确认中断”控件设置为 1,因此处理器向中断控制器确认已收到中断,并将向量放入 VM 退出中断信息字段中。此外,由于目前我没有对 VMM 中的中断信息字段执行任何操作,因此主机操作系统不会处理中断,这会导致问题。我是否朝着正确的方向前进?