【问题标题】:Why would you want external-interrupt exiting?为什么要退出外部中断?
【发布时间】:2019-02-14 01:33:41
【问题描述】:

对于使用 Intel VT-x 的 VMM,为什么有人想将 VMCS 中的外部中断退出位设置为 0,而不是使用已发布的中断(假设架构支持两者)?

例如,如果您将外部中断退出位设置为 0,那么现在如果来宾正在运行,则发往主机操作系统的中断将被传递到来宾操作系统。如果客人也使用相同的中断向量,这将如何处理?这个问题不是发布中断处理的问题。

【问题讨论】:

  • 这可能用于父分区 VMCS 中的混​​合管理程序,其中驱动程序位于父分区中,主机操作系统实际上作为来宾运行。正如你所说,我看不到它被用于 2 类管理程序驱动程序。

标签: x86 virtual-machine interrupt virtualization hypervisor


【解决方案1】:

有许多不同的方法来设计使用 VMX 的 VMM。从您对“主机操作系统”一词的使用看来,您可能正在考虑一种特定的 VMM 架构。

由于外部中断退出控制在 VMCS 中,VMM 可以为每个 VM 进行不同的设置。如果存在主机操作系统和客户操作系统,那么 VMM 肯定会在客户操作系统的 VMCS 中将外部中断退出控制设置为 1,但可能在主机操作系统的 VMCS 中将其设置为 0。 (在某些 VMM 设计中,主机操作系统在 VMX 根模式下运行或 VMX 关闭,因此这不适用;但在某些 VMM 中,主机操作系统(也称为服务操作系统、根分区或 ​​Dom0)以虚拟机。)

关于为什么 VMM 可能会这样做而不是设置进程发布中断控制,这里有几个可能的原因:

  • 在发布的中断可用之前写入 VMM。
  • VMM 旨在在不支持发布中断的平台上工作。
  • (可能)与使用发布的中断相比,直接传递中断需要更少的处理器时间和功率,并且延迟更低。
  • 发布中断处理旨在处理分配给来宾 vcpu 的中断。来宾 vcpu 当前可能没有运行,当它运行时,它运行的物理 CPU 可能会有所不同。此外,已发布的中断处理支持中断传递可能会延迟到 vcpu 恢复的情况。
    如果 VMM 希望始终将主机中断立即传送到中断目标中指示的物理 CPU,则对这些中断使用已发布的中断可能没有任何价值。

【讨论】:

    猜你喜欢
    • 2022-07-05
    • 2010-12-27
    • 2017-09-08
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2018-07-20
    相关资源
    最近更新 更多