【问题标题】:Intel VT-x: How NMI is delivered to guest OS英特尔 VT-x:如何将 NMI 交付给客户操作系统
【发布时间】:2018-08-08 19:47:59
【问题描述】:
我正在使用 Intel VT-x 在 KVM 上运行客户操作系统。我试图了解 NMI 在非 root 模式下运行时是如何处理的。英特尔 VT-x 是否会自动在来宾或 Linux 内核的 kvm 子系统上导致 NMI 将 NMI 发送到 VCPU?虽然我已经在来宾操作系统中注册了 NMI 处理程序,但我只在非 root 执行期间获得了主机 NMI 触发器。
【问题讨论】:
标签:
intel
interrupt
virtualization
kvm
【解决方案1】:
这是对问题的部分回答。我可以描述发生 NMI 时处理器的作用,但我不知道 KVM 的作用。
如果 NMI Exiting 控件为 0,并且 NMI 在 VMX-non-root 模式下到达,则 NMI 通过 guest 的 IDT 传递给 guest。
如果 NMI 退出控件为 1,则 NMI 会导致 VM 退出。 [英特尔 SDM,第 3 卷,第 24.6.1 节,表 24-5]
可能 KVM 将此控件设置为 1。在这种情况下,处理器不会自动处理 NMI。发生VM退出时如何处理取决于KVM。它可以通过主机 IDT 将 NMI 传递给主机,也可以将其注入来宾。