Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
X86 如何消除来宾VM利用RDRAND指令的能力?_X86_Intel_Virtualization - Fatal编程技术网

X86 如何消除来宾VM利用RDRAND指令的能力?

X86 如何消除来宾VM利用RDRAND指令的能力?,x86,intel,virtualization,X86,Intel,Virtualization,如果虚拟机监控程序希望删除来宾VM利用 RDRAND指令,必须采取哪些步骤才能实现此目标是的,“英特尔VMX硬件虚拟化”具有硬件支持,可使RDRAND和rdseed退出虚拟机 例如,请参阅关于修补KVM(Linux内置的管理程序): 来宾可能未配置为支持RDSEED,即使主机 做如果来宾不支持RDSEED,则截取指令 合成#UD。同时清除RDSEED退出的“允许-1”位 在IA32_VMX_PROCBASED_CTLS2MSR中 相关的VMX CTRL是SECONDARY\u EXEC\u rd

如果虚拟机监控程序希望删除来宾VM利用
RDRAND指令,必须采取哪些步骤才能实现此目标是的,“英特尔VMX硬件虚拟化”具有硬件支持,可使
RDRAND
rdseed
退出虚拟机

例如,请参阅关于修补KVM(Linux内置的管理程序):

来宾可能未配置为支持
RDSEED
,即使主机 做如果来宾不支持
RDSEED
,则截取指令 合成#UD。同时清除
RDSEED
退出的“允许-1”位 在
IA32_VMX_PROCBASED_CTLS2
MSR中

相关的VMX CTRL是
SECONDARY\u EXEC\u rdr\u exing
SECONDARY\u EXEC\u rdr\u exing
。(请参阅在KVM源代码中重命名它们,以匹配Intel在其源代码中对它们的调用,您可以在其中找到有关如何编程VMX以实现所需功能的更多详细信息。)


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

是的,Intel VMX硬件虚拟化支持使
rdrand
rdseed
退出虚拟机

例如,请参阅关于修补KVM(Linux内置的管理程序):

来宾可能未配置为支持
RDSEED
,即使主机 做如果来宾不支持
RDSEED
,则截取指令 合成#UD。同时清除
RDSEED
退出的“允许-1”位 在
IA32_VMX_PROCBASED_CTLS2
MSR中

相关的VMX CTRL是
SECONDARY\u EXEC\u rdr\u exing
SECONDARY\u EXEC\u rdr\u exing
。(请参阅在KVM源代码中重命名它们,以匹配Intel在其源代码中对它们的调用,您可以在其中找到有关如何编程VMX以实现所需功能的更多详细信息。)


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

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