hyperplatform笔记,关于xeon至强cpu碰见watchdog问题卡死[解决]

x64.asmwindows

guest发生异常时,陷入AsmVmmEntryPoint函数

以后保存现场,而后进入VmmVmExitHandler3d

而后VmmVmExitHandler根据异常的类型进行分发到不一样的handle,如:调试

case VmxExitReason::kMsrRead:
      VmmpHandleMsrReadAccess(guest_context);
      break;
    case VmxExitReason::kMsrWrite:
      VmmpHandleMsrWriteAccess(guest_context);
      break;code

至强cpu会由于windows PG调用msr疯狂陷入到这里卡死ci

解决方法:文档

VmmpHandleMsrAccess中进行处理,当msr=0x400000F0的时候,返回0,即edx和eax都为0,由于rdmsr指令是经过ecx传入,而后将返回值放在edx和eax中,这里的ecx实际上就是0x400000F0,通过查阅intel developer manual,卷4,https://software.intel.com/en-us/download/intel-64-and-ia-32-architectures-software-developers-manual-volume-4-model-specific-registers,发现这个指令并无介绍,可是在正常状况下调试vmware中的虚拟机,发现一直返回的是0,所以这里直接返回0就好了。同步

 

另外关于xeon至强CPU和i系列CPU的差别:博客

xeon是经过pPmIdleGuestExecute陷入虚拟机

i7则是经过pPmIdleDefaultExecute陷入

上层调用则相同,目前暂未查到这两个函数的说明文档。

 

个人博客即将同步至腾讯云+社区,邀请你们一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1v4lrkv3u23dw

相关文章
相关标签/搜索