一种Hypervisor中半虚拟化驱动设备发现及绑定的方法及系统技术方案

技术编号:36110450 阅读:9 留言:0更新日期:2022-12-28 14:12
本发明专利技术涉及一种Hypervisor中半虚拟化驱动设备发现及绑定的方法及系统,包括:在Hypervisor中配置多条设备总线,所述设备总线与Hypervisor挂载的Guest VM一一对应,每一设备总线上配置有设备列表、驱动列表;Host VM向目标Guest VM对应的设备总线上的设备列表中添加设备对象;Guest VM向其对应的设备总线上的驱动列表中添加驱动对象;在设备对象添加后遍历同一设备总线上的驱动列表进行匹配检查,在驱动对象添加后遍历同一设备总线上的设备列表进行匹配检查,实现驱动设备的发现及绑定。定。定。

【技术实现步骤摘要】
一种Hypervisor中半虚拟化驱动设备发现及绑定的方法及系统


[0001]本专利技术涉及计算机应有
,具体涉及一种Hypervisor中半虚拟化驱动设备发现及绑定的方法。

技术介绍

[0002]在Hypervisor虚拟化系统中,为了在多个虚拟机(VM)中共享外设硬件,一般是通过半虚拟化的前后端驱动来实现,而半虚拟驱动一般是基于Virtio标准来实现的,但在Virtio标准中基于MMIO的Virtio设备没有提供通用的设备发现机制,即没有通用的前端驱动与后端驱动动态发现、绑定机制,而一般只是通过设备树(Device Tree)静态的对设备进行配置及前后端驱动的绑定,但在像Xen Hypervisor中通过dom0less支持VM并行启动的情况,多个VM中OS启动的顺序可能不确定,使用设备树的静态配置前端驱动已开始初始化,而后端驱动还没准备好的情况,同时也不支持后端驱动设备动态插拔(Hot Plug)。
[0003]在Xen Hypervisor中PV驱动没有采用标准的vitio机制,而是采用基于Grant Table的共享内存及Event Channel建立数据通道进行前后端通信,并通过XenStore进行前后端驱动的简单信息交互,实现设备的状态检测、设备的配置信息获取以及建立通信通道前的信息交互,XenStore虽然可以很好的实现设备的动态发现及前后端驱动的绑定,但XenStore整体机制实现上相对比较庞大,需要在Dom0的用户空间启动xenstored服务进程,还需要内核提供调用hypercall的驱动接口及相关的辅助库等,这就增加了代码移植的难度,同时对于在Dom0中运行裸机程序或对代码大小敏感及对功能安全要求较高的场合,比如用于车载智能座舱系统的仪表系统,一方面增加了内存占用,而另一方面也增加了实现功能安全的难度。
[0004]所以目前需要一种轻量化的前后端驱动发现及绑定机制,以满足Hypervisor在对代码大小敏感、对功能安全要求较高使用场合的需求,同时要易于移植于多种Guest OS系统。

技术实现思路

[0005]本专利技术提供一种Hypervisor中半虚拟化驱动设备发现及绑定的方法及系统,通过在Hypervisor中增加基于设备总线的设备发现及驱动绑定机制,来解决基于MMIO的virtio驱动缺少设备发现机制的问题,同时整个机制核心代码都直接在Hypervisor中实现,并且代码量较小,Xen Hypervisor中实现的核心代码不足400行,且整套机制比较通用,很容易移植到其他Hypervisor中,较适合用于VM中运行裸机程序、对代码大小敏感或对功能安全要求较高的场合。
[0006]本专利技术解决上述技术问题的技术方案如下:
[0007]一方面,本专利技术提供一种Hypervisor中半虚拟化驱动设备发现及绑定的方法,包括:
[0008]在Hypervisor中配置多条设备总线,所述设备总线与Hypervisor挂载的Guest VM一一对应,每一设备总线上配置有设备列表、驱动列表;
[0009]Host VM向目标Guest VM对应的设备总线上的设备列表中添加设备对象;Guest VM向其对应的设备总线上的驱动列表中添加驱动对象;
[0010]在设备对象添加后遍历同一设备总线上的驱动列表进行匹配检查,在驱动对象添加后遍历同一设备总线上的设备列表进行匹配检查,实现驱动设备的发现及绑定。
[0011]进一步的,所述设备总线上还配置有事件列表;在匹配检查后,若匹配成功向同一设备总线上的事件列表中添加事件信息,并向设备总线对应的Guest VM发送事件通知。
[0012]进一步的,所述设备列表、驱动列表、事件列表采用链表或队列结构实现。
[0013]进一步的,所述设备对象包括设备名称、设备基址或中断号,所述驱动对象包括驱动名称或驱动类型。
[0014]进一步的,所述的Host VM向目标Guest VM对应的设备总线上的设备列表中添加设备对象,Guest VM向其对应的设备总线上的驱动列表中添加驱动对象,包括:
[0015]Host VM通过注册设备hypercall接口向目标Guest VM对应的设备总线上的设备列表中添加设备对象,Guest VM通过注册驱动hypercall接口向其对应的设备总线上的驱动列表中添加驱动对象。
[0016]进一步的,所述的在设备对象添加后遍历同一设备总线上的驱动列表进行匹配检查,在驱动对象添加后遍历同一设备总线上的设备列表进行匹配检查,包括:
[0017]设备hypercall接口对应的处理函数将设备对象初始化并添加到设备列表后,并遍历统一设备总线上驱动列表中所有已注册驱动查找匹配的驱动对象;
[0018]驱动hypercall接口对应的处理函数将驱动对象添加到驱动列表后,遍历同一设备总线上的所有设备列表进行匹配检查;
[0019]若找到与设备对象匹配的驱动对象或与驱动驱动匹配的设备驱动,则将设备驱动与驱动驱动进行绑定,将设备对象中的驱动指针指向匹配的驱动对象,并把该设备对象添加到相匹配驱动对象的设备表中。
[0020]进一步的,该方法还包括:
[0021]响应Host VM删除设备对象的请求,调用对应处理函数检查该设备对象是否已有匹配的驱动对象,若有,则将设备对象与匹配的驱动对象进行解绑,将该设备对象从设备总线的设备列表中移除,并释放相关资源,同时向事件列表中添加设备对象移除的事件,并向Guest VM发送事件通知;若设备对象未匹配驱动对象,则直接从设备列表中移除该设备对象并释放相关资源;
[0022]响应Guest VM注销驱动对象当前请求,调用对应处理函数检查该驱动对象是否已有匹配的设备对象,若有,则将驱动对象与匹配的设备对象进行解绑,将该驱动对象从设备总线的驱动列表中移除,并释放相关资源;若驱动对象未匹配设备对象,则直接从驱动列表中移除驱动对象并释放相关资源。
[0023]进一步的,所述的匹配检查包括对设备对象和驱动对象的名称、设备类型、ID进行匹配。
[0024]进一步的,所述事件信息包括设备信息、设备添加或设备移除的事件类型,所述的事件通知通过向VM注入中断的方式实现。
[0025]第二方面,本专利技术提供一种半虚拟化驱动设备发现及绑定系统,包括:Hypervisor、运行后端驱动的Host VM及运行前端驱动的Guest VM;
[0026]所述Hypervisor中配置有多条设备总线,所述设备总线与Hypervisor挂载的Guest VM一一对应,每一设备总线上配置有设备列表、驱动列表;
[0027]所述Host VM向目标Guest VM对应的设备总线上的设备列表中添加设备对象;
[0028]所述Guest VM向其对应的设备总线上的驱动列表中添加驱动对象;
[0029]所述Hypervisor在设备对象添加后遍历同一设备总线上的驱动列表进行匹配检查,在驱动对象添本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Hypervisor中半虚拟化驱动设备发现及绑定的方法,其特征在于,包括:在Hypervisor中配置多条设备总线,所述设备总线与Hypervisor挂载的Guest VM一一对应,每一设备总线上配置有设备列表、驱动列表;Host VM向目标Guest VM对应的设备总线上的设备列表中添加设备对象;Guest VM向其对应的设备总线上的驱动列表中添加驱动对象;在设备对象添加后遍历同一设备总线上的驱动列表进行匹配检查,在驱动对象添加后遍历同一设备总线上的设备列表进行匹配检查,实现驱动设备的发现及绑定。2.根据权利要求1所述的方法,其特征在于,所述设备总线上还配置有事件列表;在匹配检查后,若匹配成功向同一设备总线上的事件列表中添加事件信息,并向设备总线对应的Guest VM发送事件通知。3.根据权利要求2所述的方法,其特征在于,所述设备列表、驱动列表、事件列表采用链表或队列结构实现。4.根据权利要求1所述的方法,其特征在于,所述设备对象包括设备名称、设备基址或中断号,所述驱动对象包括驱动名称或驱动类型。5.根据权利要求1所述的方法,其特征在于,所述的Host VM向目标Guest VM对应的设备总线上的设备列表中添加设备对象,Guest VM向其对应的设备总线上的驱动列表中添加驱动对象,包括:Host VM通过注册设备hypercall接口向目标Guest VM对应的设备总线上的设备列表中添加设备对象,Guest VM通过注册驱动hypercall接口向其对应的设备总线上的驱动列表中添加驱动对象。6.根据权利要求5所述的方法,其特征在于,所述的在设备对象添加后遍历同一设备总线上的驱动列表进行匹配检查,在驱动对象添加后遍历同一设备总线上的设备列表进行匹配检查,包括:设备hypercall接口对应的处理函数将设备对象初始化并添加到设备列表后,并遍历统一设备总线上驱动列表中所有已注册驱动查找匹配的驱动对象;驱动hypercall接口对应的处理函数将驱动对象添加到驱动列表后,遍历同一设备总线上的所有设备列表进行...

【专利技术属性】
技术研发人员:李森林李燕青谢宏江
申请(专利权)人:武汉光庭信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1