我正在尝试检查IA32_VMX_EPT_VPID_CAP(48CH)中的位是否清晰,但在某些情况下,我使用的硬件没有msr(q9300)本身,因此我得到segfault。我想知道是否有一个指令或者一个“好”的方法来检查MSR是否存在。我知道我可能可以处理segfault或检查CPU模型,并将其与一个准备好的表进行比较,该表的CPU具有msr,但这些解决方案对我来说似乎有点混乱。我查看了一下情报手册,但没有找到任何有关检查方法的参考资料。有没有比上述方法更合适的方法?

最佳答案

摘自英特尔SDM的A.10部分:
在支持EPT或VPID的处理器上存在IA32、VMXY-EPTYVPIDCAP MSR。
所以你应该检查一下:
IA32_VMX_procbase_CTLS MSR的位63是1(支持辅助控件)
IA32_VMX_procbase_CTLS2 MSR的位33或位37为1(支持EPT或VPID)

关于c - 如何检测模型专用寄存器是否存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52571625/

10-11 18:43