一种ARM64架构下基于jailhouse隔离PCIe网卡的方法技术

技术编号:37769169 阅读:20 留言:0更新日期:2023-06-06 13:32
本发明专利技术提供一种ARM64架构下基于jailhouse隔离PCIe网卡的方法,删除主机使用的设备树文件中的gic

【技术实现步骤摘要】
一种ARM64架构下基于jailhouse隔离PCIe网卡的方法


[0001]本专利技术涉及一种计算机PCIe网卡隔离,尤其涉及一种ARM64架构下基于jailhouse隔离PCIe网卡的方法。

技术介绍

[0002]Jailhouse是一个针对创建工业级应用程序的小型Hypervisor,Jailhouse在现有Linux之上启用非对称多处理方式,并将系统拆分成称为cell的独立分区。主机首先运行的是root cell,加载host os,新的cell为non root cell,加载的是guest os,每个 cell 运行一个OS 并拥有一组完全控制的分配资源(CPU、内存区域、PCI设备)。
[0003]但是当前开源的jailhouse程序在ARM64架构的机器上还没有实现物理PCIe设备的隔离,例如无法将一个PCIe网卡隔离给guest os使用。
[0004]因此如何提供一种在ARM64架构下将物理PCIe网卡隔离给guest os的方法是本领域技术人员亟需解决的问题。

技术实现思路

[0005]针对上述问题,本专利技术提供一种ARM64架构下基于jailhouse隔离PCIe网卡的方法;通过修改主机的设备树,去掉设备树中的gic

its节点、PCIe节点,并将这两个节点添加到jailhouse的non root cell的设备树文件中,则non root cell中的guest os可以拥有完整的gic

its设备和PCIe主桥设备,从而PCIe网卡也被隔离到guest os中;然后将gic redistributor的内存地址和内存大小分别添加到root cell和non root cell的配置文件中,则non root cell运行的guest os可以访问gic中的redistributor硬件,这样non root cell中的guest os可以正确配置PCIe网卡的IP地址,正常上网。
[0006]为实现上述目的,本专利技术公开了一种ARM64架构下基于jailhouse隔离PCIe网卡的方法,包括以下步骤:S1、删除主机使用的设备树文件中的gic

its节点和PCIe节点;S2、将S1中的gic

its节点和PCIe节点添加至jailhouse non root cell的设备树文件中;S3、通过主机使用的设备树文件中的inteerupt

controller节点中的reg属性,获取gic redistributor的内存地址和内存大小;S4、将gic redistributor的内存地址和内存大小添加到root cell和non root cell的配置文件中;S5、运行jailhouse,non root cell中的guest os正常使用PCIe网卡。
[0007]进一步的,所述S1具体为:删除主机使用的设备树文件ft2004

devboard.dts中的gic

its节点和PCIe节点,从而将中断翻译服务和PCIe网卡设备从主机中移除。
[0008]进一步的,所述S3具体为:通过主机使用的设备树ft2004

devboard.dts,获取interrupt

controller节点中的reg属性,从而获取reg属性中的第六个元素的值
0x29980000,第八个元素的值0x80000,其分别表示gic redistributor的内存地址和内存大小。
[0009]进一步的,所述步骤S4具体为:修改root cell的配置文件main.c,在mem_regions数组中添加如下内容,使得jailhouse root cell对gic redistributor的地址可进行读写:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.phys_start=0x29980000,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.virt_start=0x29980000,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.size=0x80000,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.flags=JAILHOUSE_MEM_READ|JAILHOUSE_MEM_WRITE|JAILHOUSE_MEM_IO
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
};修改non root cell的配置文件inmate.c,在mem_regions数组中添加如下内容,使得jailhouse non root cell对gic redistributor的地址可进行读写:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.phys_start=0x29980000,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.virt_start=0x29980000,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.size=0x80000,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
.flags=JAILHOUSE_MEM_READ|JAILHOUSE_MEM_WRITE|JAILHOUSE_MEM_IO|JAILHOUSE_MEM_ROOTSHARED
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}。
[0010]本专利技术的一种ARM64架构下基于jailhouse隔离PCIe网卡的方法的有益效果为:gic redistributor的内存地址和内存大小分别添加到root cell和non root cell的配置文件中,则non root cell运行的guest os可以访问gic中的redistributor硬件,这样non root cell中的guest os可以正确配置PCIe网卡的IP地址,正常上网,从而实现一种在ARM64架构下将物理PCIe网卡隔离给guest os。
附图说明
[0011]下面结合附图和具体实施方式对本专利技术作进一步详细的说明。
[0012]图1是本专利技术的隔离PCIe网卡的整体流程示意图。
具体实施方式
[0013]下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是本专利技术还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本专利技术内涵的情况下做类似推广,因此本专利技术不受下面公开的具体实施例的限制。
[0014]本申请的实施例公开了一种ARM64架构下基于jailhouse隔离PCIe网卡的方法,包括以下步骤:S1、删除主机使用的设备树本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ARM64架构下基于jailhouse隔离PCIe网卡的方法,其特征在于,包括以下步骤:S1、删除主机使用的设备树文件中的gic

its节点和PCIe节点;S2、将S1中的gic

its节点和PCIe节点添加至jailhouse non root cell的设备树文件中;S3、通过主机使用的设备树文件中的inteerupt

controller节点中的reg属性,获取gic redistributor的内存地址和内存大小;S4、将gic redistributor的内存地址和内存大小添加到root cell和non root cell的配置文件中;S5、运行jailhouse,non root cell中的guest os正常使用PCIe网卡。2.基于权利要求1所述的一种ARM64架构下基于jailhouse隔离PCIe网卡的方法,其特征在于,所述S1具体为:删除主机使用的设备树文件ft2004

devboard.dts中的gic

its节点和PCIe节点,从而将中断翻译服务和PCIe网卡设备从主机中移除。3.基于权利要求1所述的一种ARM64架构下基于jailhouse隔离PCIe网卡的方法,其特征在于:所述S3具体为:通过主机使用的设备树ft2004

devboard.dts,获取interrupt

controller节点中的reg属性,从而获取reg属性中的第六个元素的值0x29980000,第八个元素的值0x80000,其分别表示gic redistributor的内存地址和内存大小。4.基于权利要求1所述的一种ARM64架构下基于jailhouse隔离PCIe网卡的方法,其特征在于:所述步骤S4具体为:修改root cell的配置文件main.c,在mem_regions数组中添...

【专利技术属性】
技术研发人员:陈阳平黄磊崔彦召崔建英齐璇战茅
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

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

1