本发明涉及pcie物理设备,具体涉及一种基于虚拟监控器实现linux下pcie物理设备隔离的方法。
背景技术:
1、随着集成电路制造工艺的发展,越来越多的计算单元被集成到单一芯片上。如何更有效地使用单芯片上的资源从而获得良好的系统伸缩性成为摆在系统软件设计者面前的重要问题。目前多核系统上部署虚拟机监控器(hypervisor)是解决该问题的一种有效的解决方式。hypervisor的虚拟化和隔离功能可以实现多个客户机操作系统运行在同一个硬件平台之上。根据不同客户机应用需求,给不同客户机配置不同的硬件资源,更加有效的利用硬件资源。
2、其中,pcie设备是硬件平台使用最多的硬件设备,比如网卡、显卡等,都是通过pcie总线连接硬件平台上。如何将pcie设备进行隔离,才能更加有效的利用硬件资源。pcie设备隔离需要隔离pcie中断和内存。pcie设备支持intx、msi、msi-x三种中断:intx中断,是传统中断,通过改变中断请求线电平的方式向处理器提交中断请求;msi(message signalinterrupt)/msi-x中断,是pcie设备通过写一个特定消息到特定地址,从而触发一个cpu中断。
3、目前多数pcie设备默认使用msi/msi-x中断,而分区虚拟化工具(如jailhouse)在armv8架构下,无法实现msi/msi-x中断隔离,因此无法实现pcie物理设备的隔离。这样就大大限制了分区虚拟化的应用,无法更加有效的利用硬件资源。
技术实现思路
1、本发明的主要目的是提供一种一种基于虚拟监控器实现linux下pcie物理设备隔离的方法,可以实现在armv8架构下,使用分区虚拟化工具(如jialhouse)隔离pcie物理设备。
2、为了完成上述目的,本发明提供了一种基于虚拟监控器实现linux下pcie物理设备隔离的方法,该方法应用于armv8架构下,包括以下步骤:
3、s1:在linux系统上安装jailhouse分区虚拟化工具;
4、s2:启动jailhouse分区虚拟化工具,将主机系统分隔为分别运行linux系统的root客户机和none root客户机;
5、s3:隔离root客户机,主机linux系统获取pcie ecam地址空间,并将pcie ecam地址空间的基地址写到root客户机的配置文件中,以便生成新的root客户机的配置文件;
6、s4:根据步骤s3中生成的新的root客户机的配置文件启动root客户机,将root客户机的pcie ecam地址空间映射到hypervisor中,并通过模拟mmio中断的方式控制noneroot客户机pcie ecam地址空间的访问;
7、s5:隔离none root客户机,修改none root客户机上运行的linux系统的设备树文件,增加一条pcie总线描述,使得pcie总线具备与主机上一致的pcie ecam地址空间,生成新的none root客户机的配置文件;
8、s6:在新的none root客户机的配置文件中增加pcie设备描述,以便描述从主机上隔离的pcie网卡设备;
9、s7:在hypervisor中增加ecam空间地址转换表,以便将none root客户机linux访问的第一个pcie设备的ecam地址转换成主机上真实的pcie设备的ecam地址;
10、s8:修改网卡驱动,使得网卡工作在intx中断模式,并将修改后的网卡驱动放入none root客户机linux系统的pcie设备驱动中;
11、s9:启动none root客户机。
12、优选的,在步骤s3中,主机linux系统是通过cat /proc/iomem命令获取pcie ecam地址空间的,并将pcie ecam地址空间的基地址写到root客户机配置文件中的pci_mmconfig_base配置项中。
13、优选的,在步骤s6中,pcie设备描述中包括要隔离的pcie网卡设备的唯一标识bdf。
14、更进一步优选的,pcie网卡设备的唯一标识bdf是从主机linux系统上通过lspci命令获取的。
15、更进一步优选的,新的none root客户机的配置文件中还包括通过“1:1”的方式将主机预留的物理内存映射给none root客户机。
16、本发明的有益效果为:
17、本发明在hypervisor中通过模拟mmio(memroy-mapped input/output)方式,控制none root 客户机pcie ecam地址空间访问;并在hypervisor实现一个ecam空间地址转换表,将none root客户机bus 0上ecam地址转换成host主机上真实的pcie设备的ecam地址。实现none root客户机linux在bus 0上扫描到要隔离的pcie设备。通过让pcie设备工作在intx中断模式下,使用armv8中断虚拟化机制,通过注入虚拟中断的方式,实现pcie设备的中断隔离。从而,实现在armv8架构下,使用分区虚拟化工具,隔离pcie物理设备。
1.基于虚拟监控器实现linux下pcie物理设备隔离的方法,其特征在于,该方法应用于armv8架构下,包括以下步骤:
2.根据权利要求1所述的基于虚拟监控器实现linux下pcie物理设备隔离的方法,其特征在于,在步骤s3中,主机linux系统是通过cat /proc/iomem命令获取pcie ecam地址空间的,并将pcie ecam地址空间的基地址写到root客户机配置文件中的pci_mmconfig_base配置项中。
3.根据权利要求1所述的基于虚拟监控器实现linux下pcie物理设备隔离的方法,其特征在于,在步骤s6中,pcie设备描述中包括要隔离的pcie网卡设备的唯一标识bdf。
4.根据权利要求3所述的基于虚拟监控器实现linux下pcie物理设备隔离的方法,其特征在于,pcie网卡设备的唯一标识bdf是从主机linux系统上通过lspci命令获取的。
5.根据权利要求3所述的基于虚拟监控器实现linux下pcie物理设备隔离的方法,其特征在于,新的none root客户机的配置文件中还包括通过“1:1”的方式将主机预留的物理内存映射给none root客户机。