虚拟机同时支持PCIe虚拟设备和物理设备的方法技术

技术编号:38821444 阅读:21 留言:0更新日期:2023-09-15 20:00
本发明专利技术涉及一种虚拟机同时支持PCIe虚拟设备和物理设备的方法,本发明专利技术通过在Linux设备树中添加两个PCIe控制器,一个PCIe控制器节点设置虚拟PCIe的ECAM地址空间,另一个PCIe控制器节点设置和host主机上一致的PCIe ECAM地址空间,使客户机Linux识别到两个PCI域。并在hypervisor中通过模拟MMIO方式,控制客户机通过PCIe ECAM地址访问不同的PCI域,每个PCI域有对应的ECAM地址空间,通ECAM地址空间基地址加上PCIe设备偏移就可以访问不同域的PCIe设备的配置空间。从而实现在armv8架构下,通过分区虚拟化工具,使客户机既支持PCIe虚拟设备,又支持PCIe物理设备。又支持PCIe物理设备。又支持PCIe物理设备。

【技术实现步骤摘要】
虚拟机同时支持PCIe虚拟设备和物理设备的方法


[0001]本专利技术涉及PCIe设备,具体涉及一种虚拟机同时支持PCIe虚拟设备和物理设备的方法。

技术介绍

[0002]随着集成电路制造工艺的发展,越来越多的计算单元被集成到单一芯片上。如何更有效地使用单芯片上的资源从而获得良好的系统伸缩性成为摆在系统软件设计者面前的重要问题。目前多核系统上部署虚拟机监控器(hypervisor)是解决该问题的一种有效的解决方式。hypervisor的虚拟化和隔离功能可以实现多个客户机操作系统运行在同一个硬件平台之上。根据不同客户机应用需求,给不同客户机配置不同的硬件资源,更加有效的利用硬件资源。
[0003]但同一客户机上根据不同应用的需求,有些应用需要尽可能的利用外部设备,比如利用PCIe物理网卡向远端传输大量数据;而有些应用同时又需要尽可能少利用外部设备,减少对外部设备产生干扰,比如利用PCIe虚拟设备实现共享内存与其它客户机传输大量数据。这样,就需要客户机既要支持PCIe虚拟设备,又要支持PCIe物理设备,充分利用系统资源,使系统性能最大化。
[0004]目前分区虚拟化工具jailhouse在armv8架构下,无法实现客户机既支持PCIe虚拟设备,又支持PCIe物理设备。这样就大大限制了分区虚拟化的应用,无法更加有效的利用硬件资源。

技术实现思路

[0005]本专利技术的主要目的是提供一种虚拟机同时支持PCIe虚拟设备和物理设备的方法,在armv8架构下,使用分区虚拟化工具jialhouse实现客户机既支持PCIe虚拟设备,又支持PCIe物理设备。
[0006]为了完成上述目的,本专利技术提供了一种虚拟机同时支持PCIe虚拟设备和物理设备的方法,该方法应用于armv8硬件平台,包括以下步骤:S1:在Linux系统上安装Jailhouse分区虚拟化工具;S2:启动Jailhouse分区虚拟化工具,将主机系统分隔为分别运行Linux系统的root客户机和none root客户机;S3:隔离root客户机,通过主机的Linux系统获取虚拟PCIe控制器的ECAM空间和物理PCIe控制器的ECAM空间,并分别将其基地址录入root客户机配置文件中;S4:在root客户机配置文件增加PCIe设备描述,并将其填加在虚拟PCIe控制器下的总线上;S5:启动root客户机,使得root客户机的Linux系统访问虚拟PCIe设备,在root客户机的Linux系统中能够直接访问物理PCIe设备;S6:隔离none root客户机,修改none root客户机上运行的Linux系统的设备树文
件,使得none root客户机的Linux系统启动时按照修改后的设备树文件枚举PCIe设备;S7:在hypervisor中增加ECAM空间地址转换表,以便将none root客户机Linux访问的第一个PCIe设备的ECAM地址转换成主机上真实的PCIe设备的ECAM地址;S8:修改网卡驱动,使得网卡工作在INTx中断模式,并将修改后的网卡驱动放入none root客户机Linux系统的文件系统中;S9:将主机的Linux系统的设备树文件中的INTx中断的INTA中断号配置信息配置到none root客户机配置文件中;S10:将none root客户机的Linux系统的设备树文件中配置的虚拟PCIe控制器使用的INTx中断的INTA中断号配置信息配置到none root客户机配置文件中;将虚拟PCIe设备中的INTx中断配置信息隔离到none root客户机中;S11:通过“1:1”的方式将主机预留的物理内存映射到none root客户机,作为none root客户机系统内存;S12:启动none root客户机将主机上的PCIe网卡隔离到none root客户机上。
[0007]优选的,步骤S3是通过以下步骤实现的:S31:主机的Linux系统上通过cat /proc/iomem命令获取主机内存地址空间,利用内存地址空间中的部分空闲地址空间作为虚拟PCIe控制器的ECAM空间,将虚拟PCIe控制器的ECAM空间的基地址写到root客户机的配置文件中的pci_mmconfig_base配置项中;S32:在主机的Linux系统上通过cat /proc/iomem命令获取主机的物理PCIe控制器的ECAM地址空间,在root客户机的配置文件中的增加一个配置项pci_mmconfig_base_physical,将物理PCIe控制器的ECAM地址空间的基地址记录其中。
[0008]更进一步优选的,步骤S4是通过以下方法实现的:在root客户机的配置文件中增加一个类型为JAILHOUSE_PCI_TYPE_IVSHMEM的PCIe设备,用来描述共享内存的PCIe设备。
[0009]更进一步优选的,步骤S5中还包括以下步骤:S51:在root客户机的Linux系统驱动中,根据配置的虚拟PCIe控制器的ECAM地址空间,通过Linux设备树添加一个虚拟PCIe控制器,并将配置的共享内存的PCIe设备添加到虚拟PCIe控制器下的总线上;S52:物理PCIe ECAM地址空间映射到hypervisor中,并通过模拟MMIO的方式控制root客户机访问虚拟PCIe ECAM地址空间。
[0010]更进一步优选的,步骤S6还包括以下步骤:S61:在none root客户机上运行的Linux系统的设备树文件上增加两个PCIe控制器节点,其中一个PCIe控制器节点设置虚拟PCIe的ECAM地址空间,另一个PCIe控制器节点设置与host主机上一致的PCIe ECAM地址空间;S62:通过模拟MMIO方式控制none root客户机访问虚拟PCIe和物理PCIe ECAM地址空间;S63:在none root客户机配置文件中增加两个设备描述:类型为JAILHOUSE_PCI_TYPE_IVSHMEM的PCIe设备,用来描述共享内存的PCIe设备;类型为JAILHOUSE_PCI_TYPE_DEVICE的PCIe设备,来描述要从host主机上隔离的
PCIe网卡设备。
[0011]本专利技术的有益效果为:本专利技术通过在Linux设备树中添加两个PCIe控制器,一个PCIe控制器节点设置虚拟PCIe的ECAM地址空间,另一个PCIe控制器节点设置和host 主机上一致的PCIe ECAM地址空间,使客户机Linux识别到两个PCI域。并在hypervisor中通过模拟MMIO方式,控制客户机通过PCIe ECAM地址访问不同的PCI域,每个PCI域有对应的ECAM地址空间,通ECAM地址空间基地址加上PCIe设备偏移就可以访问不同域的PCIe设备的配置空间。从而实现在armv8架构下,通过分区虚拟化工具,使客户机既支持PCIe虚拟设备,又支持PCIe物理设备。
[0012]本专利技术实现虚拟客户机既支持PCIe虚拟设备,又支持PCIe物理设备,既可以利用PCIe物理设备与外界交互数据,又可利用PCIe虚拟设备与其它客户机交互数据,充分利本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.虚拟机同时支持PCIe虚拟设备和物理设备的方法,该方法应用于armv8硬件平台,其特征在于,包括以下步骤:S1:在Linux系统上安装Jailhouse分区虚拟化工具;S2:启动Jailhouse分区虚拟化工具,将主机系统分隔为分别运行Linux系统的root客户机和none root客户机;S3:隔离root客户机,通过主机的Linux系统获取虚拟PCIe控制器的ECAM空间和物理PCIe控制器的ECAM空间,并分别将其基地址录入root客户机配置文件中;S4:在root客户机配置文件增加PCIe设备描述,并将其填加在虚拟PCIe控制器下的总线上;S5:启动root客户机,使得root客户机的Linux系统访问虚拟PCIe设备,在root客户机的Linux系统中能够直接访问物理PCIe设备;S6:隔离none root客户机,修改none root客户机上运行的Linux系统的设备树文件,使得none root客户机的Linux系统启动时按照修改后的设备树文件枚举PCIe设备;S7:在hypervisor中增加ECAM空间地址转换表,以便将none root客户机Linux访问的第一个PCIe设备的ECAM地址转换成主机上真实的PCIe设备的ECAM地址;S8:修改网卡驱动,使得网卡工作在INTx中断模式,并将修改后的网卡驱动放入none root客户机Linux系统的文件系统中;S9:将主机的Linux系统的设备树文件中的INTx中断的INTA中断号配置信息配置到none root客户机配置文件中;S10:将none root客户机的Linux系统的设备树文件中配置的虚拟PCIe控制器使用的INTx中断的INTA中断号配置信息配置到none root客户机配置文件中;将虚拟PCIe设备中的INTx中断配置信息隔离到none root客户机中;S11:通过“1:1”的方式将主机预留的物理内存映射到none root客户机,作为none root客户机系统内存;S12:启动none root客户机将主机上的PCIe网卡隔离到none root客户机上。2.根据权利要求1所述的虚拟机同时支持PCIe虚拟设备和物理设备的方法,其特征在于,步骤S3是通过以下步骤实现的:S31:主机的Linux系统上通过cat /proc/iomem命令获取...

【专利技术属性】
技术研发人员:崔建英申利飞张云飞黄磊
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

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

1