如何检测模型专用寄存器是否存在

时间:2018-09-29 19:08:12

标签: c x86 intel virtualization msr

我正在尝试检查IA32_VMX_EPT_VPID_CAP(48CH)中是否清楚,但是在某些情况下,我正在使用本身不具有该msr(q9300)且出现段错误的硬件。我想知道是否有一种指令或“不错”的方式来检查msr是否首先存在。我知道我可能可以处理segfault或检查CPU模型并将其与具有CPU具有msr的准备好的表进行比较,但是这些解决方案对我来说似乎有点混乱。我查看了Intel Manuel,但没有找到任何检查方法的参考。是否有约定或一种比上述方法更合适的方法?

1 个答案:

答案 0 :(得分:2)

来自Intel SDM的A.10部分:

IA32_VMX_EPT_VPID_CAP MSR存在于支持EPT或VPID的处理器上。

因此,您应该检查以下内容:

  • IA32_VMX_PROCBASED_CTLS MSR的第63位为1(支持辅助控件)
  • IA32_VMX_PROCBASED_CTLS2 MSR的第33位或第37位为1(支持EPT或VPID)