范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Intel处理器虚拟化技术浅析2VMCS初始化

  VMCS区域:guest 区域,从真实系统进入虚拟系统时,CPU需要加载的数据,包括很多CPU内部的 寄存器,通用寄存器,控制寄存器,调试寄存器之类。host区域,就是从虚拟系统返回真实系统时CPU需要加载的寄存器。控制区域进入虚拟系统后,处理器的行为由这个区域的字段控制。虚拟机退出时的控制区域。控制怎样进入虚拟机。控制CPU以什么样的方式退出到真实系统。从虚拟机退出到真实系统时,虚拟系统退出的原因,或者失败时的错误代码。
  上一节提过VMCS区域需要专门的汇编指令才能读取,下面我们填充VMCS区域。
  我们看下64位系统段选择子的描述:_SEGMENT_SELECTOR record Limit:32,  SEGMENT_GPA:4,SEGMENT_attr_G:1,SEGMENT_attr_D_B:1,SEGMENT_attr_L:1,  SEGMENT_attr_AVL:1,SEGMENT_attr_P:1, SEGMENT_attr_DPL:2,SEGMENT_attr_S:1,SEGMENT_attr_Type_code_or_data:1,SEGMENT_attr_Type_CRA:3,selector_index:13,selector_TI:1,selector_RPL:2
  ;selector_TI (Table Indicator)描述符表索引位,当TI=0时从GDT查找 =1时从LDT查找。RPL: 权限级别0-3
  vmx_vmwrite_seg proc _value_HOST_XX_SELECTOR:qword,_SELECTOR_name:qword mov rax,_SELECTOR_name movzx eax,ax and eax,0f8h ;清低3位,RPL= 0 从GDT(全局描述符表)加载段描述符 cdqe mov rcx,_value_HOST_XX_SELECTOR vmwrite rcx, rax ret vmx_vmwrite_seg endp invoke vmx_vmwrite_seg,HOST_ES_SELECTOR,ES invoke vmx_vmwrite_seg,HOST_CS_SELECTOR,CS invoke vmx_vmwrite_seg,HOST_SS_SELECTOR,SS invoke vmx_vmwrite_seg,HOST_DS_SELECTOR,DS invoke vmx_vmwrite_seg,HOST_FS_SELECTOR,FS invoke vmx_vmwrite_seg,HOST_GS_SELECTOR,GS
  任务寄存器需要单独操作:str rax invoke vmx_vmwrite_seg,HOST_TR_SELECTOR,RAX mov rcx,MSR_IA32_EFER
  使能Extended Feature Enable Register;rdmsr shl rdx, 20h or rax, rdx mov rbx,rax invoke vmx_vmwrite,HOST_EFER,rbx
  cr0 与cr4的固定位:
  MSR_IA32_VMX_CR0_FIXED0、MSR_IA32_VMX_CR0_FIXED1 字段里规定了guest里cr0控制寄存器的数值要求。mov rcx,MSR_IA32_VMX_CR0_FIXED1 rdmsr shl rdx, 20h or rax, rdx mov rbx,cr0 and rbx,rax mov rcx,MSR_IA32_VMX_CR0_FIXED0 rdmsr shl rdx, 20h or rax, rdx or rbx,rax vmwrite,HOST_CR0, rbx vmwrite,HOST_CR3, cr3 mov rcx,MSR_IA32_VMX_CR4_FIXED1 rdmsr shl rdx, 20h or rax, rdx mov rbx,cr4 and rbx,rax mov rcx,MSR_IA32_VMX_CR4_FIXED0 rdmsr shl rdx, 20h or rax, rdx or rbx,rax vmwrite,HOST_CR3, rbx
  从全局描述符表查找任务寄存器的基址:sgdt @gdtbase lea rdi,@gdtbase mov rbx,[rdi+2];路过Limit str rdx;tss invoke GetSegmentDescriptor,addr @_SEGMENT_SELECTOR,rdx,rbx vmwrite,HOST_TR_BASE, @_SEGMENT_SELECTOR.BASE
  填充fs寄存器字段:(64位系统下fs基本是兼容32个应用程序而保留)mov ecx, MSR_FS_BASE rdmsr shl rdx, 20h or rax, rdx vmwrite,HOST_FS_BASE,rax
  填充gs寄存器字段:(64位系统非常重要的寄存器,相当于32个系统里的fs寄存器)mov ecx, MSR_GS_BASE rdmsr shl rdx, 20h or rax, rdx vmwrite,HOST_GS_BASE, rax
  填充全局描述符表字段:sgdt @gdtbase lea rdi,@gdtbase mov rbx,[rdi+2] vmwrite,HOST_GDTR_BASE,rbx
  填充中断描述符表字段:sidt @idtbase lea rdi,@idtbase mov rbx,[rdi+2] vmwrite,HOST_IDTR_BASE,rbx vmwrite,VMCS_LINK_POINTER,-1;不启用SMM双重监控处理机制 vmwrite,EXCEPTION_BITMAP,0
  填充guest 段选择子、段限、访问权限、段基址。sgdt tbyte ptr @gdtbase lea rdi,@gdtbase mov rbx,[rdi+2] invoke FillGuestSelectorData,rbx,0,es invoke FillGuestSelectorData,rbx,1,cs invoke FillGuestSelectorData,rbx,2,ss invoke FillGuestSelectorData,rbx,3,ds invoke FillGuestSelectorData,rbx,4,fs invoke FillGuestSelectorData,rbx,5,gs sldt rax invoke FillGuestSelectorData,rbx,6,rax str rax invoke FillGuestSelectorData,rbx,7,rax
  填充fs寄存器字段:mov ecx, MSR_FS_BASE rdmsr shl rdx, 20h or rax, rdx vmwrite,GUEST_FS_BASE,rax
  填充gs寄存器字段:mov ecx, MSR_GS_BASE rdmsr shl rdx, 20h or rax, rdx vmwrite,GUEST_GS_BASE,rax
  填充控制字段:mov ecx, MSR_IA32_VMX_TRUE_PROCBASED_CTLS Rdmsr ;eax存入的是允许为零的位 "允许为零的位"已经被标0(其余的位必须为1)edx存入的是允 许为1的位"允许为1的位"已经被标1(其余的位必须为0) Mov ecx,CPU_BASED_ACTIVATE_MSR_BITMAP+ CPU_BASED_ACTIVATE_SECONDARY_CONTROLS mov rbx,rcx or ecx,eax and ecx,edx vmwrite,CPU_BASED_VM_EXEC_CONTROL,rcx mov ecx, MSR_IA32_VMX_PROCBASED_CTLS2 rdmsr mov rcx,CPU_BASED_CTL2_RDTSCP ; RDTSCP这个指令的用途,它是RDTSC的升级版,在一些比较新的处理器中用于获 ;得CPU时间计数器。 ;SECONDARY_EXEC_ENABLE_RDTSCP | SECONDARY_EXEC_ENABLE_INVPCID | ;SECONDARY_EXEC_XSAVES; ;如果不设置 rdtsc exiting 和 use tsc offsetting 的话,那么 rdtscp 会正常执行,因此这 ;里其实可以只设置 SECONDARY_EXEC_ENABLE_RDTSCP ,其他不设置。 ;这样的话 rdtscp 指令的执行并不会导致vm-exit事件的发生。这里我尝试了只将 ;SECONDARY_EXEC_ENABLE_RDTSCP 控制位置位,其他位不动,发现完全不会进入到 ;vm-exit事件中。 ;因此如果图省事的话其实可以只将 SECONDARY_EXEC_ENABLE_RDTSCP 置位,其他位不 ;进行操作即可。 or rcx,CPU_BASED_CTL2_ENABLE_INVPCID ;如果 invlpg exiting 没有被设置,那么也不会导致vm-exit事件的发生。因此这里其实 ;也可以只设置 SECONDARY_EXEC_ENABLE_INVPCID ,不设置 invlpg exiting 。这样可以 ;让其正常执行,不用在vm-exit处理函数中对其进行复杂的处理。  or rcx,CPU_BASED_CTL2_ENABLE_XSAVE_XRSTORS  or rcx,CPU_BASED_CTL2_ENABLE_EPT  or rcx,CPU_BASED_CTL2_ENABLE_VPID  mov rbx,rcx or ecx,eax and ecx,edx and ebx,edx or ebx,eax  vmwrite,SECONDARY_VM_EXEC_CONTROL,rcx vmwrite,PIN_BASED_VM_EXEC_CONTROL,0 mov ecx, MSR_IA32_VMX_TRUE_EXIT_CTLS Rdmsr mov rcx,VM_EXIT_IA32E_MODE + VM_EXIT_ACK_INTR_ON_EXIT ;On processors that support Intel 64 architecture, this control determines whether a logical ;processor is in 64-bit mode after the next VM exit. Its value is loaded into CS.L, and ecx,edx or ecx,eax vmwrite,VM_EXIT_CONTROLS,rcx mov ecx, MSR_IA32_VMX_TRUE_EXIT_CTLS rdmsr mov rcx,VM_EXIT_IA32E_MODE + VM_EXIT_ACK_INTR_ON_EXIT ;On processors that ;support Intel 64 architecture, this control determines whether a logical ;processor is in 64-bit mode after the next VM exit. Its value is loaded into CS.L, and ecx,edx or ecx,eax vmwrite,VM_EXIT_CONTROLS,rcx
  ;. 配置vm-entry控制域mov ecx, MSR_IA32_VMX_TRUE_ENTRY_CTLS rdmsr mov rcx,VM_ENTRY_IA32E_MODE ;64系统必须填, 参考【处理器虚拟化技术】(第212页) and ecx,edx or ecx,eax vmwrite,VM_ENTRY_CONTROLS,rcx ;
  以下为填充guest区域和填充host区域基本相同mov rcx,MSR_IA32_EFER rdmsr shl rdx, 20h or rax, rdx mov rbx,rax vmwrite,GUEST_EFER,rbx  mov rcx,MSR_IA32_VMX_CR0_FIXED1 rdmsr shl rdx, 20h or rax, rdx mov rbx,cr0 and rbx,rax  mov rcx,MSR_IA32_VMX_CR0_FIXED0 rdmsr shl rdx, 20h or rax, rdx or rbx,rax vmwrite,GUEST_CR0,rbx  mov rcx,MSR_IA32_VMX_CR4_FIXED1 rdmsr shl rdx, 20h or rax, rdx mov rbx,cr4 and rbx,rax  mov rcx,MSR_IA32_VMX_CR4_FIXED0 rdmsr shl rdx, 20h or rax, rdx  or rbx,rax  vmwrite,GUEST_CR4,rbx   vmwrite,GUEST_CR3,cr3 invoke vmx_vmwrite,GUEST_DR7, 0400h  sgdt @gdtbase lea rdi,@gdtbase mov rbx,[rdi+2] vmwrite,GUEST_GDTR_BASE,rbx;Get_GDT_Base()); movzx eax, word ptr [rdi] vmwrite,GUEST_GDTR_LIMIT, rax;Get_GDT_Limit()); sidt @idtbase lea rdi,@idtbase mov rbx,[rdi+2] vmwrite,GUEST_IDTR_BASE,rbx;Get_IDT_Base()); movzx eax,word ptr [rdi]  vmwrite,GUEST_IDTR_LIMIT,rax; Get_IDT_Limit()); pushfq pop rax vmwrite,GUEST_RFLAGS, rax;  mov rsi,_current_vmState mov rdx,[rsi+VirtualMachineState.MSRBitMapPhysical]  vmwrite,MSR_BITMAP, rdx;vmState->MSRBitMapPhysical);MSR Bitmap的某位为0时访问 ;该位所对应的MSR不会产生VM-exit vmwrite,GUEST_RSP, _GuestStack;(ULONG64)GuestStack); //setup guest sp mov rax,[rsi+VirtualMachineState.VmxGuestRip] vmwrite,GUEST_RIP, rax;addr VMXRestoreState; //setup guest ip  mov rsi,_current_vmState mov rdx,[rsi+VirtualMachineState.VMM_Stack]  mov rax,VMM_STACK_SIZE; add rdx,4000h;;堆栈向下增长,所以要增加,空间是0-VMM_STACK_SIZE 所以 要减1 vmwrite,HOST_RSP, rdx;((ULONG64)vmState->VMM_Stack + VMM_STACK_SIZE - 1)); ;host的rsp必须使用自己申请的一块内存。如果还是使用guest退出时的rsp,一定会 ;导致guest中堆栈被破坏从而导致不可预知的结果 lea rax,VMExitHandler vmwrite,HOST_RIP, rax;addr VMExitHandler
  某些处理函数没有给出,会在最后的源码中展示。
  来自网络的图片:

发挥资源优势发展乡村旅游来源人民日报葡萄牙新城堡村的历史古迹。联合国世界旅游组织供图在摩洛哥艾尔霍巴特村,当地妇女艾莎正在头巾上刺绣。纳吉姆卡利勒摄墨西哥奇瓦瓦州克雷尔镇居民制作的手工艺品。联合国世界旅游红星耀齐鲁东阿巧用党建绘就乡村旅游新画卷走好乡村旅游之路,党建引领是根本。近年来,东阿县牛角店镇以党建引领乡村振兴,秉持农业是根文化是魂旅游是路的理念,积极探索党建乡村旅游模式,统筹农业文化旅游产业发展,促进农文旅互动互旅游业招工需求居各职业之首,酒店民宿求职人数涨近7成南都记者日前从多个招聘平台获悉,伴随旅游出行市场进入持续复苏态势,旅游业招工需求量增大,促进相应岗位招聘需求激增。例如,智联招聘数据显示,春节后第一周,客货运司机乘务招聘职位数同比高荡村民族风情重绽乡村旅游升温来源安顺日报掌上安顺村子里又热闹起来了,客人回来了,村里老百姓的精气神儿都跟以前不一样了,大家摩拳擦掌,都准备大干一场。看着人头攒动的文化广场,镇宁自治县高荡村村支书伍承松开心地说春节结束了,为什么多景区依旧爆满?兔年旅游消费呈现长尾效应尽管春节假期早已结束,但是旅游消费仍在升温。记者采访获悉,受到民俗活动丰富学生还在放假多重政策利好等因素影响,市民的消费需求得到稳步释放,人们的旅游热情得到空前释放。可以说,旅游出让手机应用软件更清爽人民时评近年来,应用软件产业发展迅猛,为广大消费者提供了丰富多彩的互联网应用,便利了人民群众的生产生活。与此同时,预置应用软件过多且无法卸载等新情况,也令人不胜其烦。查看一下手机等移动智能今天涨了,明天接着涨吗?今天A股缩量回调沪市上涨收出小阳线,两市成交量只有8457亿,但是个股方面3379家上涨,1504家下跌,回血效应明显。昨天热门的ChatGPT出现分化,但是人工智能和新能源热度不新一轮芯片战来了?阿里野心暴露,外媒ARM惹众怒自从老美修改了芯片市场规则后,全球芯片行业就迎来了大洗牌,华为等中企被打压的同时,美企也出现了内讧。近日,芯片行业又传出老美将会进一步打压华为的消息,不出意外的话,新一轮的芯片战要注意缩小战线一连板高标汉王科技7板中航电测4板华锋股份捷荣技术东港股份天娱数科3板2板4只二进攻主线开盘没什么超预期的地方按照昨天人工智能的强度汉王科技今天的单子是低于预期的,川大智胜昨天的反彭继先睿鹰制药诞生于菏泽发展于菏泽,理应承担起发展的责任鲁网2月8日讯(记者靳昕)在菏泽市委市政府举行的菏泽市企业家队伍建设暨菏泽市杰出企业家颁奖大会上,山东睿鹰制药集团首席科学家总裁彭继先被授予杰出企业家称号并记个人二等功一次。近日,北交所蓄力向上突破兔年开市,北京证券交易所北证50指数最高涨幅超7,日成交额连续站上20亿元大关,新上市的多只新股均实现了开门红。但也要看到,行情缺乏持续性交易量还不稳定等问题依然存在,北交所改革发
在明天的世乒赛女单决赛中孙颖莎王曼昱谁获得冠军的可能性大?最有意思的是孙颖莎和王曼昱女单决赛前,要合作双打和日本伊藤早田组合爭夺女双冠军。如果取胜,双打冠军再拆开争夺女单冠军。王曼昱获胜双冠落袋,孙颖莎获胜就更了不得,一人集女单,女双,混黑人运动员那么敏捷,为什么在足球领域不出好门将呢?这个现象还是比较有意思的,当今足坛,前锋中场后防各个位置都有黑人球员的身影,而且顶级球员也不在少数。唯独在门将这个位置上,黑人球员冒尖的还真不多。其实从硬件条件来看,黑人的身体素质河北小伙20元中1668万大奖,石家庄实施封闭管理,咋领奖?2021伊始,我省石家庄市邢台市陆续出现新增本土新冠肺炎病例,为防止疫情扩散,石家庄市实施封闭式管理。那么,疫情期间如果购彩者中奖后是否能来石家庄兑付彩票?中奖彩票超过60个自然兑奇怪!为何全世界好像只有中美韩在卖手机,其他国家的手机呢?现如今,智能手机已经成为了我们生活中必不可少的一部分,不管是移动支付还是电商网购,我们都需要使用到手机。也是在生活当中,各大手机厂商逐渐崛起,并且成为了行业巨头,比如大家熟悉的华为实况足球手游如何变大神?我是实况足球Sir我来回答首先,实况足球手游是一款操作类足球游戏,比Fifa手游操作要求要高,不是大力按键球就能进球。所以玩家得具备一定的操作技巧及熟练度。其二,你要熟悉球员,熟悉国足冲击世界杯又宣布告吹,我71岁,有生之年还能梦想成真吗?别灰心,2026年世界杯扩军,亚州有8。5个额,中国队现在亚州第9名。正踩附加赛的边线,说不定就进入了世界杯,你连5年也不能等吗?我有一位同事,也是位足球迷,从八十年代初就开始关注中国足球的职业化道路该如何走?说个不中听的话,中国足球根本上就够不上职业化,因为本土球员的职业素质根本就不够格!他们与欧美球员相比相差十万八千里,不伦是拿球停球也好,还是跑位射门也好根本就不在一个频道,更谈不上中国足球到底差在哪?缺钱?缺体力?缺顶级教练?还是缺挨骂?最根本的问题并不是缺什么,而是多了一个恒大,中国足球与国际接轨很重要,日本和韩国足球都没有恒大,法国足球和阿根廷足球也没有恒心大,也都能经常看到他们在世界杯的赛场上,所以与国际接轨谁能是中国足球的救世主?从来就没有救世主,要救中国足球,只能靠顶层设计,外加监督监察机制。不信,就在足球界来一次专项整顿,倒查二十年甚至三十年,足球界定会风清气正,大有长进!个人认为是青训的质量!青训是祖国家不允许个人微信支付宝营业收款,那支付宝跑腿还可以做吗?谢谢邀请!国家不允许个人微信支付宝商用?那支付宝跑腿还可以?有许多人都是认为以后微信支付宝没有用吗?已经有正规媒体报道说这是误读。是从三月一号开始,净态码不能用了。动态码还是可以商用酒精擦手机屏幕消杀,会降低触屏的灵敏度吗?用酒精擦手机屏幕,不会降低屏幕的灵敏度,也不会让手机变得迟钝,但有一些后果需要了解一下,那就是酒精对手机的危害。首先可以肯定的是,酒精有一定的杀菌作用,还有一定的清洁作用,用酒精擦