【问题标题】:How to detect if model specific register exist如何检测是否存在特定于模型的寄存器
【发布时间】:2019-03-05 09:54:55
【问题描述】:

我正在尝试检查 IA32_VMX_EPT_VPID_CAP (48CH) 中的某个位是否清晰,但在某些情况下,我正在使用本身没有该 msr(q9300) 的硬件并且我得到了段错误。我想知道是否有一条指令或一种“好”的方式来检查 msr 是否首先存在。我知道我可能可以处理段错误或检查 CPU 型号并将其与准备好的表进行比较,该表具有哪些 CPU 具有 msr,但这些解决方案对我来说似乎有点混乱。我查看了英特尔手册,但我没有找到任何关于检查它的方法的参考。有没有比上面提到的方式更合适的约定或者更合适的方式?

【问题讨论】:

  • 也许你的意思是IA32_VMX_EPT_VPID_CAP? IA64 = 安腾,而不是 x86。另外,IA64_VMX_EPT_VPID_CAP 的谷歌点击率为零,因为我在谷歌索引这个问题之前设法搜索:P
  • 是的,对不起小姐打了。

标签: c x86 intel virtualization msr


【解决方案1】:

来自英特尔 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2012-08-03
    • 2011-02-17
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多