首页
社区
课程
招聘
[求助]新手vt 初次entry失败
发表于: 2016-11-7 12:01 4714

[求助]新手vt 初次entry失败

2016-11-7 12:01
4714
在各种字段的初始化完成之后满心欢喜vmlaunch 然后失败。。。

使用的是封装好的__vmx_vmlaunch指令 返回值为1 vmfailvalid

于是读VM_INSTRUCTION_ERROR 读出来结果为7:VM-entry 操作时 current-VMCS 含有无效的 VM-excution 控制字段

然后开始检查自己设置的字段:



pinbase字段=10110b 设置default0和default1位

primaryprocbased字段=10000100000000000110000101110010b 设置default0和default1位并开启activate secondary controls

secondaryprocbased字段=1000000001000b 设置default0位并关闭RDTSCP/INVPCID时产生#UD

exception bitmap字段清0

pfec_mask字段清0 pfec_match置0xffffffff(这样在#PF的时候不产生exit)

guest/host mask与read shadow字段全清零 让guest所有

VM-function control字段忽略 处理器不支持

其他字段全忽略 因为在pinbase primaryprocbased secondaryprocbased中未开启

上述就是全部的设置了。。。就这样产生了vmfailvalid 实在不懂啊 其他字段相关约束也基于开启了某些功能 而我基本都是设置保留位的啊 求指导

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2347
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
另外保险起见 在vmexit字段那边并没有设置acknowledge interrupt on exit位和save vmx-preemption timer value位
2016-11-7 12:10
0
雪    币: 193
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
找份开源代码去看
然后检查
找不出来就用替换大法
2016-11-10 18:26
0
雪    币: 2347
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个过了一天就解决了 intel手册和书上的描述不一样 所以被坑了
2016-11-10 20:56
0
游客
登录 | 注册 方可回帖
返回
//