【问题标题】:how to remove the ability of a guest VM to utilize the RDRAND instruction?如何删除来宾 VM 使用 RDRAND 指令的能力?
【发布时间】:2017-12-05 20:39:18
【问题描述】:

如果虚拟机管理程序希望取消来宾 VM 使用 RDRAND指令,要实现这个需要什么步骤

【问题讨论】:

  • @MichaelPetch 如果您模拟 cpiud 并删除 cpuid 中的 rdrand 功能怎么办?
  • @MichaelPetch:像 VMX 这样的硬件虚拟化可以选择在 CPUID 上退出 VM。但我仍然不确定您是否真的可以禁用 ISA 扩展而不仅仅是它们的 CPUID 功能标志。在 CPUID 中禁用 AVX 将导致客户机操作系统不启用对它的支持,因此 AVX 指令实际上会在客户机中出错。但 RDRAND 或 BMI2 不同。
  • @PeterCordes :我可能错误地认为,因为没有提到它不适用的硬件辅助虚拟化(即 Intel-VT)。这可能是一个错误的假设,应该是 OP 应该澄清的事情。
  • @MichaelPetch:我假设是 VMX,因为它被标记为 [intel]。如今,基本上所有 CPU 都支持硬件虚拟化。并且绝对是当今进行虚拟化的主流方式。
  • @Peter,CPUID 是少数几条无条件导致虚拟机退出的指令之一。

标签: x86 intel virtualization


【解决方案1】:

是的,英特尔 VMX 硬件虚拟化具有使rdrandrdseed 退出虚拟机的硬件支持。

例如,请参阅discussion on the Linux kernel mailing list 关于修补 KVM(Linux 内置的管理程序):

访客可能未配置为支持RDSEED,即使当主机 做。如果客人不支持RDSEED,拦截指令 并合成#UD。同时清除 RDSEED 退出的“allowed-1”位 在IA32_VMX_PROCBASED_CTLS2 MSR 中。

相关的 VMX 控制是 SECONDARY_EXEC_RDRAND_EXITINGSECONDARY_EXEC_RDSEED_EXITING。 (请参阅 this patch 在 KVM 源代码中重命名它们以匹配英特尔在其 x86 Software Development Manuals (SDM) 中对它们的称呼,您应该在其中找到有关如何对 VMX 进行编程以执行您想要的操作的更多详细信息。)

我只是使用了指向 KVM 内容的链接,因为当我检查是否有硬件支持时,这是在 Google 上首先出现的内容。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多