猿问

如何使用VMX挂起和恢复VM

我已经在Linux中使用VMX设计了一个玩具管理程序,它可以与我的测试VM一起很好地工作。现在,我正在尝试使用玩具管理程序测试挂起并恢复我的测试虚拟机。我进行了以下操作以挂起VM。

VM以实模式启动,然后进入保护模式。它调用wrmsr,这将导致VMEXIT。系统管理程序获取VMEXIT,然后将CPU上下文(gprs,段reg,描述符表等)和VM的内存保存到磁盘文件中,然后退出。(未清除VMXON / VMCS区域)。

现在,重新启动VM加载程序,它将读取磁盘文件,将CPU上下文保存到VMCS字段中,并填充VM的内存。然后,通过调用“ vmlaunch”告诉系统管理程序启动VM。(在此之前,系统管理程序将调用vmxon,vmclear,vmptrld和vmwrite VMCS字段和来宾CPU上下文)。我的期望是虚拟机将从以前保存的RIP中恢复。
但失败并显示“无效的访客状态”

我用ch 26.3检查了这些字段,但是找不到任何提示。请在上面照亮你的灯。


拉莫斯之舞
浏览 312回答 1
1回答

慕桂英4014372

FS ATTR和GS ATTR无效。请参阅26.3.1.2中对“访问权限字段”的检查。如果位16为0,则位7:0必须为非零值,通常为0x93。
随时随地看视频慕课网APP
我要回答