gpt4 book ai didi

linux - VT-x中的"Acknowledge interrupt on exit"控制导致CPU死机

转载 作者:太空狗 更新时间:2023-10-29 11:41:17 31 4
gpt4 key购买 nike

我正致力于在我正在编写的使用 Intel VT-x 虚拟化的 VMM 中支持发布中断。启用发布中断的文档中指定的 VM 进入要求之一是“退出时确认中断”VM 退出控制必须设置为 1。

当我将此控件设置为 1 时,我的 guest 操作系统会在停止响应之前运行一小段时间。然后,主机操作系统也停止响应,并向主机内核日志打印一条消息,指出运行 guest 操作系统的 CPU 内核遇到硬锁定(NMI 看门狗:看门狗检测到硬锁定CPU 10).

我正在阅读英特尔文档并试图仔细思考这个问题,但想知道是否还有其他人知道发生了什么。我现在的一般想法是主机操作系统必须向客户操作系统此时正在运行的核心发送中断(即我的客户操作系统不参与发送中断),这会导致虚拟机退出。由于我将“Acknowledge interrupt on exit”控件设置为 1,因此处理器向中断 Controller 确认已收到中断,并将向量放入 VM-exit interrupt-information 字段中。此外,由于我目前没有对我的 VMM 中的中断信息字段执行任何操作,因此中断不会被主机操作系统处理,这导致了问题。我的方向是否正确?

最佳答案

是的,不允许主机操作系统处理设备中断会是一个问题。与其将“退出时确认中断”控件设置为 1,不如将其设置为 0。然后,当您由于硬件中断而退出 VM 时,您应该设置处理器中断启用标志以允许中断被确认和服务通常在主机中。

来自 Intel 64 和 IA-32 架构软件开发人员手册:

33.2 INTERRUPT HANDLING IN VMX OPERATION

  • Acknowledge interrupt on exit. The “acknowledge interrupt on exit” VM-exit control in the controlling VMCS controls processor behavior for external interrupt acknowledgement. If the control is 1, the processor acknowledges the interrupt controller to acquire the interrupt vector upon VM exit, and stores the vector in the VM-exit interruption-information field. If the control is 0, the external interrupt is not acknowledged during VM exit. Since RFLAGS.IF is automatically cleared on VM exits due to external interrupts, VMM re-enabling of interrupts (setting RFLAGS.IF = 1) initiates the external interrupt acknowledgement and vectoring of the external interrupt through the monitor/host IDT

或者,如果你有充分的理由设置这个位,比如你需要将某些硬件中断路由到客户机,那么你需要调用主机操作系统的中断处理程序,就好像它是由中央处理器。

关于linux - VT-x中的"Acknowledge interrupt on exit"控制导致CPU死机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48030293/

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