首页> 中国专利> 面向多虚拟域可定制的PICe外设设备树生成方法

面向多虚拟域可定制的PICe外设设备树生成方法

摘要

本发明公开了一种面向多虚拟域可定制的PICe外设设备树生成方法,其实施步骤如下:1)配置设备访问权限,指定服务虚拟域;2)服务虚拟域执行步骤3);普通虚拟域当VMM中存在设备树数据时执行步骤6);3)服务虚拟域扫描生成设备树;4)服务虚拟域把设备树数据写入VMM;5)服务虚拟域删除不属于服务虚拟域的设备树节点并启动操作系统;6)普通虚拟域根据设备访问权限生成设备树节点并加载驱动;7)普通虚拟域启动操作系统。本发明能够支持多虚拟域定制硬件视图、保证硬件底层配置的一致性、避免多个虚拟域同时对硬件设备的扫描/访问导致的冲突、固件层对虚拟化提供支持对上层操作系统透明、增加飞腾服务器的兼容性和安全性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-05-14

    授权

    授权

  • 2013-09-11

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20130507

    实质审查的生效

  • 2013-08-14

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,具体涉及一种面向多虚拟域可定制的PICe外设设备树生成方法。

背景技术

飞腾服务器是国防科学技术大学研制、基于飞腾处理器FT1000的计算机平台,其中FT1000处理器是国防科学技术大学研制、兼容sparc指令集的通用64位处理器,每个芯片包含8个计算核心,支持多达64个硬件线程。对于外设而言,在硬件上飞腾服务器通过FT1000处理器上集成的PCI-Express Unit(实现了PCIe总线中的root complex)从而扩展出PCIe总线,PCI-Express Unit与PCIe交换单元(PCIe switch)相连,PCIe switch后面则连有PCIe插槽或者具体的PCIe设备。在软件方面,飞腾平台同其它平台最大的区别是飞腾平台采用固件(而不是操作系统)扫描和配置PCIe总线。固件完成PCIe总线设备的扫描之后,会把所有外设的层次结构表示成一个树形结构,称之为设备树。飞腾服务器操作系统在启动过程中从固件获得设备树,从而获得PCIe总线的信息,进而加载设备驱动。通过这个机制避免了操作系统扫描和配置PCIe总线的开销。

为了有效利用FT1000处理器的计算资源,飞腾服务器支持系统虚拟化,即在一个FT1000处理器上同时运行多个操作系统。飞腾服务器的系统软件层次有三层,虚拟化层、固件层和操作系统层。其中,虚拟化层支持在同一个处理器上运行多个虚拟域,在每个虚拟域内运行各自的固件和操作系统。由于所有的虚拟域共享飞腾服务器的全部外设资源,如果多个虚拟域同时访问外设资源会造成设备冲突。

解决这一问题的方法是把外设资源按照虚拟域为单位进行划分,这样每个虚拟域只会访问各自被分配的外设,从而避免冲突,此外这种方式也不会引入额外的性能开销。但是,这存在两个方面的技术挑战。首先,在飞腾服务器中,操作系统是按照从固件获得的设备树来获得外设信息的,因此需要固件按照不同的虚拟域的设备视图生成不同的设备树,即设备树是可定制的。其次,要求设备的配置在各个虚拟域中必须是统一的和一致的,因为所有外设在同一个硬件平台上,配置不一致会导致访问冲突。然而,现有的设备树生成方法是通过固件对PCIe总线进行扫描获得设备树的,这种方法无法满足上述需求。首先,这样生成的设备树是完整的设备树,无法实现对不同虚拟域的外设视图控制。这样把全部设备暴露给操作系统会导致潜在的访问冲突和安全风险。更为严重的是,由于各个虚拟域的固件独立扫描和操作PCIe总线,而在扫描过程中必须对总线上每个设备配置进行修改(比如在获得bar的大小信息时),这种修改必然影响到其它虚拟域对该外设的访问,造成外设访问故障。

发明内容

本发明要解决的技术问题是提供一种能够支持多虚拟域定制硬件视图、保证硬件底层配置的一致性、避免多个虚拟域同时对硬件设备的扫描/访问导致的冲突、固件层对虚拟化提供支持可以对上层操作系统透明、增加飞腾服务器的兼容性和安全性的面向多虚拟域可定制的PICe外设设备树生成方法。

为了解决上述技术问题,本发明采用的技术方案为:

一种面向多虚拟域可定制的PICe外设设备树生成方法,其实施步骤如下:

1)为各个虚拟域统一配置设备访问权限,通过虚拟域ID指定服务虚拟域,虚拟域完成固件初始化后跳转执行下一步;

2)各个虚拟域根据虚拟域ID判断是否为服务虚拟域,如果当前虚拟域是服务虚拟域则跳转执行步骤3);否则,判定当前虚拟域为普通虚拟域,循环检查等待服务虚拟域把包含所有设备配置信息的设备树数据写入虚拟机管理器中,当虚拟机管理器中存在设备树数据时跳转执行步骤6);

3)服务虚拟域扫描PCIe总线的所有设备,针对每一个设备进行配置设备并生成设备树节点,如果该设备属于服务虚拟域时则服务虚拟域加载该设备的驱动,最终生成包含所有设备配置信息的设备树;

4)服务虚拟域遍历所述设备树,把设备树中的设备配置信息写入虚拟机管理器;

5)服务虚拟域根据所述设备访问权限裁剪所述设备树,删除不属于服务虚拟域的设备树节点,服务虚拟域设备扫描结束,服务虚拟域启动操作系统;

6)普通虚拟域扫描PCIe总线的所有设备,根据所述设备访问权限对当前设备进行判断,如果当前设备属于本虚拟域,则不配置当前设备而是通过虚拟机管理器中存在设备树数据为当前设备生成设备树节点并加载驱动;

7)普通虚拟域扫描结束,普通虚拟域启动操作系统。

作为本发明上述技术方案的进一步改进:

所述步骤3)之前服务虚拟域还包括检测启动类型的步骤,所述服务虚拟域检测启动类型的步骤的详细步骤如下:

a)服务虚拟域根据虚拟机管理器中是否有设备树数据判断启动类型,如果虚拟机管理器中没有设备树数据则判定启动类型为首次启动,跳转执行步骤b);如果虚拟机管理器中有设备树数据则判定启动类型为重启,跳转执行步骤3);

b)服务虚拟域扫描PCIe总线的所有设备,根据所述设备访问权限对当前设备进行判断,如果当前设备属于本虚拟域,则不配置当前设备而是通过虚拟机管理器中存在设备树数据为当前设备生成设备树节点并加载驱动,当PCIe总线的所有设备扫描结束后,服务虚拟域启动操作系统。

本发明具有下述优点:

1、本发明通过为各个虚拟域统一配置设备访问权限,按照用户需求对同一硬件平台的外设进行划分,通过指定的服务虚拟域生成包含所有设备配置信息的设备树,任意虚拟域都根据所有设备配置信息的设备树和设备访问权限生成可定制的设备树,从而让不同的虚拟域有不同的外设视图,能够支持多虚拟域定制硬件视图,实现了面向多虚拟域可定制的设备树生成,同时保证各个虚拟域之间的硬件配置的一致性,避免多个虚拟域同时对硬件设备的扫描/访问导致的冲突。

2、本发明各个虚拟域根据所有设备配置信息的设备树和设备访问权限生成可定制的设备树,通过固件层对虚拟化提供可定制的设备树支持,能够实现对上层操作系统透明,而且能够增加飞腾服务器的兼容性和安全性。

3、考虑到服务虚拟域重启动时可能有其它的普通虚拟域还在运行,本发明进一步通过步骤a)和b)使得服务虚拟域重启时也需要按照其它虚拟域的设备配置流程从虚拟机管理器获得配置信息,而不再扫描和配置PCIe总线,不需要重新生成虚拟机管理器中的设备树数据,能够有效加快服务虚拟域重启的速度,减少服务虚拟域重启的等待时间,而且还能够避免多虚拟域系统启动、运行、重启动过程中由于操作同一硬件而导致的外设访问冲突。

附图说明

图1为本发明实施例的方法流程示意图。

具体实施方式

如图1所示,本实施例面向多虚拟域可定制的PICe外设设备树生成方法的实施步骤如下:

1)为各个虚拟域统一配置设备访问权限,通过虚拟域ID指定服务虚拟域,虚拟域完成固件初始化后跳转执行下一步; 

2)各个虚拟域根据虚拟域ID判断是否为服务虚拟域,如果当前虚拟域是服务虚拟域则跳转执行步骤3);否则,判定当前虚拟域为普通虚拟域,循环检查等待服务虚拟域把包含所有设备配置信息的设备树数据写入虚拟机管理器(简称VMM)中,当VMM中存在设备树数据时跳转执行步骤6);

3)服务虚拟域扫描PCIe总线的所有设备,针对每一个设备进行配置设备并生成设备树节点,如果该设备属于服务虚拟域时则服务虚拟域加载该设备的驱动,最终生成包含所有设备配置信息的设备树;

4)服务虚拟域遍历设备树,把设备树中的设备配置信息写入VMM;

5)服务虚拟域根据设备访问权限裁剪设备树,删除不属于服务虚拟域的设备树节点,服务虚拟域设备扫描结束,服务虚拟域启动操作系统;

6)普通虚拟域扫描PCIe总线的所有设备,根据设备访问权限对当前设备进行判断,如果当前设备属于本虚拟域,则不配置当前设备而是通过VMM中存在设备树数据(HV数据)为当前设备生成设备树节点并加载驱动;

7)普通虚拟域扫描结束,普通虚拟域启动操作系统。

上述步骤3)和步骤4)为服务虚拟域通过设备配置构建设备树的分支步骤;步骤5)为服务虚拟域实现可定制的设备树生成的步骤;步骤6)~步骤7)为普通虚拟域实现可定制的设备树生成的步骤,只要系统没有物理断电,每个普通虚拟域启动/重启动都走这个分支步骤。

本实施例中指定虚拟域ID为0的虚拟域为服务虚拟域,由该服务虚拟域统一配置全部的设备,一旦服务虚拟域配置完成,任何虚拟域(包含服务虚拟域和普通虚拟域)将只能操作分配给本虚拟域的设备而不能操作分配给其它虚拟域设备,避免出现访问冲突,在服务虚拟域完成设备配置后,会把设备配置信息写入VMM,普通虚拟域通过VMM调用接口可以获得服务虚拟域的配置信息,利用这些信息,普通虚拟域可以边扫描总线边生成设备树,从而避免了扫描过程中对设备的竞争访问。因此,本实施例支持多虚拟域具有不同的硬件视图,保证了硬件底层配置的一致性,通过扫描-查询方式避免了多个虚拟域同时对硬件设备的扫描/访问导致的冲突,而且固件层对虚拟化提供支持可以对上层操作系统透明,增加了飞腾服务器的兼容性和安全性。

本实施例中,步骤3)之前服务虚拟域还包括检测启动类型的步骤,服务虚拟域检测启动类型的步骤的详细步骤如下:

a)服务虚拟域根据VMM中是否有设备树数据判断启动类型,如果VMM中没有设备树数据则判定启动类型为首次启动,跳转执行步骤b);如果VMM中有设备树数据则判定启动类型为重启,跳转执行步骤3);

b)服务虚拟域扫描PCIe总线的所有设备,根据设备访问权限对当前设备进行判断,如果当前设备属于本虚拟域,则不配置当前设备而是通过VMM中存在设备树数据为当前设备生成设备树节点并加载驱动,当PCIe总线的所有设备扫描结束后,服务虚拟域启动操作系统。

考虑到服务虚拟域重启动时可能有其它的普通虚拟域还在运行,因此本实施例中通过上述步骤a)和b)使得服务虚拟域重启时也需要按照其它虚拟域的设备配置流程从VMM获得配置信息,而不再扫描和配置PCIe总线,不需要重新生成VMM中的设备树数据,步骤3)和步骤4)只要不物理断电则只需要执行一次,从而能有效加快服务虚拟域重启的速度,减少服务虚拟域重启的等待时间,而且还能够避免多虚拟域系统启动、运行、重启动过程中由于操作同一硬件而导致的外设访问冲突。

本实施例分别应用在飞腾服务器的nanga平台和meili平台(皆为平台代号)进行验证,成功在同一台飞腾服务器上启动了多个虚拟域并分别独立启动操作系统,验证发现,每个虚拟域的操作系统只能看到分配给该虚拟域的外设资源。并且,在虚拟域的系统启动、运行和重启动整个过程中,不引起外设访问冲突,服务虚拟域重启速度非常快。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号