Intel处理器虚拟化技术浅析2VMCS初始化
VMCS区域:guest区域,从真实系统进入虚拟系统时,CPU需要加载的数据,包括很多CPU内部的寄存器,通用寄存器,控制寄存器,调试寄存器之类。host区域,就是从虚拟系统返回真实系统时CPU需要加载的寄存器。控制区域进入虚拟系统后,处理器的行为由这个区域的字段控制。虚拟机退出时的控制区域。控制怎样进入虚拟机。控制CPU以什么样的方式退出到真实系统。从虚拟机退出到真实系统时,虚拟系统退出的原因,或者失败时的错误代码。
上一节提过VMCS区域需要专门的汇编指令才能读取,下面我们填充VMCS区域。
我们看下64位系统段选择子的描述:SEGMENTSELECTORrecordLimit:32,SEGMENTGPA:4,SEGMENTattrG:1,SEGMENTattrDB:1,SEGMENTattrL:1,SEGMENTattrAVL:1,SEGMENTattrP:1,SEGMENTattrDPL:2,SEGMENTattrS:1,SEGMENTattrTypecodeordata:1,SEGMENTattrTypeCRA:3,selectorindex:13,selectorTI:1,selectorRPL:2
;selectorTI(TableIndicator)描述符表索引位,当TI0时从GDT查找1时从LDT查找。RPL:权限级别03
vmxvmwritesegprocvalueHOSTXXSELECTOR:qword,SELECTORname:qwordmovrax,SELECTORnamemovzxeax,axandeax,0f8h;清低3位,RPL0从GDT(全局描述符表)加载段描述符cdqemovrcx,valueHOSTXXSELECTORvmwritercx,raxretvmxvmwritesegendpinvokevmxvmwriteseg,HOSTESSELECTOR,ESinvokevmxvmwriteseg,HOSTCSSELECTOR,CSinvokevmxvmwriteseg,HOSTSSSELECTOR,SSinvokevmxvmwriteseg,HOSTDSSELECTOR,DSinvokevmxvmwriteseg,HOSTFSSELECTOR,FSinvokevmxvmwriteseg,HOSTGSSELECTOR,GS
任务寄存器需要单独操作:strraxinvokevmxvmwriteseg,HOSTTRSELECTOR,RAXmovrcx,MSRIA32EFER
使能ExtendedFeatureEnableRrdmsrshlrdx,20horrax,rdxmovrbx,raxinvokevmxvmwrite,HOSTEFER,rbx
cr0与cr4的固定位:
MSRIA32VMXCR0FIXED0、MSRIA32VMXCR0FIXED1字段里规定了guest里cr0控制寄存器的数值要求。movrcx,MSRIA32VMXCR0FIXED1rdmsrshlrdx,20horrax,rdxmovrbx,cr0andrbx,raxmovrcx,MSRIA32VMXCR0FIXED0rdmsrshlrdx,20horrax,rdxorrbx,raxvmwrite,HOSTCR0,rbxvmwrite,HOSTCR3,cr3movrcx,MSRIA32VMXCR4FIXED1rdmsrshlrdx,20horrax,rdxmovrbx,cr4andrbx,raxmovrcx,MSRIA32VMXCR4FIXED0rdmsrshlrdx,20horrax,rdxorrbx,raxvmwrite,HOSTCR3,rbx
从全局描述符表查找任务寄存器的基址:sgdtgdtbaseleardi,gdtbasemovrbx,〔rdi2〕;路过LtssinvokeGetSegmentDescriptor,addrSEGMENTSELECTOR,rdx,rbxvmwrite,HOSTTRBASE,SEGMENTSELECTOR。BASE
填充fs寄存器字段:(64位系统下fs基本是兼容32个应用程序而保留)movecx,MSRFSBASErdmsrshlrdx,20horrax,rdxvmwrite,HOSTFSBASE,rax
填充gs寄存器字段:(64位系统非常重要的寄存器,相当于32个系统里的fs寄存器)movecx,MSRGSBASErdmsrshlrdx,20horrax,rdxvmwrite,HOSTGSBASE,rax
填充全局描述符表字段:sgdtgdtbaseleardi,gdtbasemovrbx,〔rdi2〕vmwrite,HOSTGDTRBASE,rbx
填充中断描述符表字段:sidtidtbaseleardi,idtbasemovrbx,〔rdi2〕vmwrite,HOSTIDTRBASE,rbxvmwrite,VMCSLINKPOINTER,1;不启用SMM双重监控处理机制vmwrite,EXCEPTIONBITMAP,0
填充guest段选择子、段限、访问权限、段基址。sgdttbyteptrgdtbaseleardi,gdtbasemovrbx,〔rdi2〕invokeFillGuestSelectorData,rbx,0,esinvokeFillGuestSelectorData,rbx,1,csinvokeFillGuestSelectorData,rbx,2,ssinvokeFillGuestSelectorData,rbx,3,dsinvokeFillGuestSelectorData,rbx,4,fsinvokeFillGuestSelectorData,rbx,5,gssldtraxinvokeFillGuestSelectorData,rbx,6,raxstrraxinvokeFillGuestSelectorData,rbx,7,rax
填充fs寄存器字段:movecx,MSRFSBASErdmsrshlrdx,20horrax,rdxvmwrite,GUESTFSBASE,rax
填充gs寄存器字段:movecx,MSRGSBASErdmsrshlrdx,20horrax,rdxvmwrite,GUESTGSBASE,rax
填充控制字段:movecx,MSRIA32VMXTRUEPROCBASEDCTLSReax存入的是允许为零的位允许为零的位已经被标0(其余的位必须为1)edx存入的是允许为1的位允许为1的位已经被标1(其余的位必须为0)Movecx,CPUBASEDACTIVATEMSRBITMAPCPUBASEDACTIVATESECONDARYCONTROLSmovrbx,rcxorecx,eaxandecx,edxvmwrite,CPUBASEDVMEXECCONTROL,rcxmovecx,MSRIA32VMXPROCBASEDCTLS2rdmsrmovrcx,CPUBASEDCTL2RDTSCP;RDTSCP这个指令的用途,它是RDTSC的升级版,在一些比较新的处理器中用于获;得CPU时间计数器。;SECONDARYEXECENABLERDTSCPSECONDARYEXECENABLEINVPCID;SECONDARYEXECXSAVES;;如果不设置rdtscexiting和usetscoffsetting的话,那么rdtscp会正常执行,因此这;里其实可以只设置SECONDARYEXECENABLERDTSCP,其他不设置。;这样的话rdtscp指令的执行并不会导致vmexit事件的发生。这里我尝试了只将;SECONDARYEXECENABLERDTSCP控制位置位,其他位不动,发现完全不会进入到;vmexit事件中。;因此如果图省事的话其实可以只将SECONDARYEXECENABLERDTSCP置位,其他位不;进行操作即可。orrcx,CPUBASEDCTL2ENABLEINVPCID;如果invlpgexiting没有被设置,那么也不会导致vmexit事件的发生。因此这里其实;也可以只设置SECONDARYEXECENABLEINVPCID,不设置invlpgexiting。这样可以;让其正常执行,不用在vmexit处理函数中对其进行复杂的处理。orrcx,CPUBASEDCTL2ENABLEXSAVEXRSTORSorrcx,CPUBASEDCTL2ENABLEEPTorrcx,CPUBASEDCTL2ENABLEVPIDmovrbx,rcxorecx,eaxandecx,edxandebx,edxorebx,eaxvmwrite,SECONDARYVMEXECCONTROL,rcxvmwrite,PINBASEDVMEXECCONTROL,0movecx,MSRIA32VMXTRUEEXITCTLSRdmsrmovrcx,VMEXITIA32EMODEVMEXITACKINTRONEXIT;OnprocessorsthatsupportIntel64architecture,processorisin64bitmodeafterthenextVMexit。ItsvalueisloadedintoCS。L,andecx,edxorecx,eaxvmwrite,VMEXITCONTROLS,rcxmovecx,MSRIA32VMXTRUEEXITCTLSrdmsrmovrcx,VMEXITIA32EMODEVMEXITACKINTRONEXIT;OsupportIntel64architecture,processorisin64bitmodeafterthenextVMexit。ItsvalueisloadedintoCS。L,andecx,edxorecx,eaxvmwrite,VMEXITCONTROLS,rcx
;。配置vmentry控制域movecx,MSRIA32VMXTRUEENTRYCTLSrdmsrmovrcx,VMENTRYIA32EMODE;64系统必须填,参考【处理器虚拟化技术】(第212页)andecx,edxorecx,eaxvmwrite,VMENTRYCONTROLS,
以下为填充guest区域和填充host区域基本相同movrcx,MSRIA32EFERrdmsrshlrdx,20horrax,rdxmovrbx,raxvmwrite,GUESTEFER,rbxmovrcx,MSRIA32VMXCR0FIXED1rdmsrshlrdx,20horrax,rdxmovrbx,cr0andrbx,raxmovrcx,MSRIA32VMXCR0FIXED0rdmsrshlrdx,20horrax,rdxorrbx,raxvmwrite,GUESTCR0,rbxmovrcx,MSRIA32VMXCR4FIXED1rdmsrshlrdx,20horrax,rdxmovrbx,cr4andrbx,raxmovrcx,MSRIA32VMXCR4FIXED0rdmsrshlrdx,20horrax,rdxorrbx,raxvmwrite,GUESTCR4,rbxvmwrite,GUESTCR3,cr3invokevmxvmwrite,GUESTDR7,0400hsgdtgdtbaseleardi,gdtbasemovrbx,〔rdi2〕vmwrite,GUESTGDTRBASE,GetGDTBase());movzxeax,wordptr〔rdi〕vmwrite,GUESTGDTRLIMIT,GetGDTLimit());sidtidtbaseleardi,idtbasemovrbx,〔rdi2〕vmwrite,GUESTIDTRBASE,GetIDTBase());movzxeax,wordptr〔rdi〕vmwrite,GUESTIDTRLIMIT,GetIDTLimit());pushfqpopraxvmwrite,GUESTRFLAGS,movrsi,currentvmStatemovrdx,〔rsiVirtualMachineState。MSRBitMapPhysical〕vmwrite,MSRBITMAP,vmStateMSRBitMapPhysical);MSRBitmap的某位为0时访问;该位所对应的MSR不会产生VMexitvmwrite,GUESTRSP,GuestS(ULONG64)GuestStack);setupguestspmovrax,〔rsiVirtualMachineState。VmxGuestRip〕vmwrite,GUESTRIP,addrVMXRestoreSsetupguestipmovrsi,currentvmStatemovrdx,〔rsiVirtualMachineState。VMMStack〕movrax,VMMSTACKSIZE;addrdx,4000h;;堆栈向下增长,所以要增加,空间是0VMMSTACKSIZE所以要减1vmwrite,HOSTRSP,((ULONG64)vmStateVMMStackVMMSTACKSIZE1));;host的rsp必须使用自己申请的一块内存。如果还是使用guest退出时的rsp,一定会;导致guest中堆栈被破坏从而导致不可预知的结果learax,VMExitHandlervmwrite,HOSTRIP,addrVMExitHandler
某些处理函数没有给出,会在最后的源码中展示。
来自网络的图片:
图制作陶艺的好处你知道吗从女娲造人用泥土开始,人类对于泥土总是有着无限依恋,人们开始用土去制作各种器具,陶艺便是留下来的产物。从古至今,陶艺经历了历史的变迁,在时间的潮流中存留下来。作为中华民族……
男单2大种子被淘汰!直板名将23一轮游,世界冠军32韩国名将北京时间4月19日,国际乒联WTT澳门冠军赛正在进行。正在进行的是男单比赛,德国名将邱党对阵瑞典选手卡尔伯格。邱党也就是邱建新的儿子,直板打法,目前世界排名第九,也是澳门冠军赛……
AB型人家庭功能的配置特点3。功能的配置。家庭除了是遮风避雨起居生活的处所外,对许多人来讲还对家庭住所寄予了其它的功能的期望。比如一般的洗浴、做饭、招待客人、健身、娱乐、学习,甚至结合自己爱好的收……
图好看的软陶珠子你知道这些做法吗近年来各种diy手工,软陶受到人们越来越多的关注。它的各项优点,也是人们如此喜爱软陶的原因,它除了有各种颜色外,它的可塑性堪比橡皮泥,还可以通过烘烤保存下来。很多人刚开始……
绝佳方案?美媒建议湖人今夏4换1放弃比斯利,引进更靠谱的投手在今年的交易截止日之前,湖人引进了拉塞尔、范德比尔特以及比斯利,这三位新援的到来确实提升了球队的整体实力,但他们的短板依旧明显,那就是三分能力不足。近日就有美媒给湖人提供了一套……
月光石的鉴别方法nbsp3招教你辨真假月光石,一种很受人们喜爱的首饰品。佩戴它不仅仅是因为它好看,而且它还具有很多对我们人体有用的好处。但是大家知道怎么辨别其真假吗?下面跟着小编来学习一下吧!大自然是很神奇的……
图马克杯材质和陶瓷是不同原料教你选择适合自己茶具杯子是生活中不能缺少的生活用具,马克杯在生活中也是很受大家的欢迎。马克杯装上自己喜欢的茶饮,精致的马克杯,喝着自己喜欢的下午茶,有马克杯的生活会变得更加美好。生活的条件的……
图李自成为什么失败大顺政权为何覆灭明末时期,吏治腐败,作为下层农民的李自成的生活布满坎坷。后来,李自成带领农民军进行起义,农民军战力十足,一路杀至京城。可惜李自成帝位还没坐热,农民军就被剿灭。李自成是明朝……
小米回应被乌列入俄国际赞助商名单强烈反对声明小米集团是一家成立于北京的全球性企业,我们面向全球消费者提供高品质的民用智能手机和家用电器设备。我们坚信全球每个消费者都应该有获取通讯工具和互联网信息的权利。我们在全……
图创意手工作品制作废旧物品的华丽变身在很多手工达人的手里,任何材料都可以变成手工,他们用无限的想象力和一双巧手为生活增添了色彩,制作出了美观又实用的手工艺品,接下来跟着小编一起来欣赏一下吧!在我们看来,许多……
图杜甫是哪个朝代的诗人一代诗圣生平简介杜甫字子美,自号少陵野老,唐代伟大的现实主义诗人,与李白合称李杜。杜甫对我国古典诗歌创作影响非常深远,被后人称为诗圣,他的诗被称为诗史。唐朝在我国历史上是知名度很高的朝代……
全球糖供需缺口正在扩大近一段时间以来,全球食糖价格正开启狂飙模式。根据美国农业部(USDA)最新公布的供需数据,全球糖供需缺口将进一步扩大至593万吨,库存消费比预计进一步下调3。78,纽约期货交易……