CN116431293B - 一种在jailhouse实现PCIE设备隔离的方法 - Google Patents

一种在jailhouse实现PCIE设备隔离的方法 Download PDF

Info

Publication number
CN116431293B
CN116431293B CN202310701490.7A CN202310701490A CN116431293B CN 116431293 B CN116431293 B CN 116431293B CN 202310701490 A CN202310701490 A CN 202310701490A CN 116431293 B CN116431293 B CN 116431293B
Authority
CN
China
Prior art keywords
pcie
jailhouse
rights
access
resources
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310701490.7A
Other languages
English (en)
Other versions
CN116431293A (zh
Inventor
崔彦召
杨晓骅
黄磊
陈阳平
张云飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202310701490.7A priority Critical patent/CN116431293B/zh
Publication of CN116431293A publication Critical patent/CN116431293A/zh
Application granted granted Critical
Publication of CN116431293B publication Critical patent/CN116431293B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种在jailhouse实现PCIE设备隔离的方法,方法包括:修改Host OS设备树文件,防止Host OS初始化PCIE总线和gic‑its;修改Host OS在jailhouse中的配置文件,在jailhouse hypervisor层会对PCIE和gic‑its进行资源分配,以供Guest OS来使用;修改Guest OS设备树文件,使得所有PCIE和gic‑its相关的初始化过程都由Guest OS来完成;修改Guest OS在jailhouse中的配置文件,以便jailhouse初始化Guest OS资源;在jailhouse hypervisor层增加对GICR_PENDBASER寄存器访问权限,用以保证Guest OS中的避免PCIE设备的msi/msix中断能够频繁访问到GICR_PENDBASER寄存器资源。

Description

一种在jailhouse实现PCIE设备隔离的方法
技术领域
本发明涉及PCIe设备领域,具体涉及一种在jailhouse实现PCIE设备隔离的方法。
背景技术
Jailhouse是用于实现设备隔离的虚拟化软件,是一个基于Hypervisor虚拟化技术的Linux静态分区管理程序,其可以运行linux、裸机程序或RTOS程序。Jailhouse使用Cell单元节点来配置CPU和设备硬件平台的虚拟化功能,且各个节点分配的资源互不干扰。Host OS作为root cell,Guest OS作为inmate cell,一旦Jailhouse被启动,在Inmate空间就会运行相应的程序,也就是说在Linux端分配了相关的硬件资源给Inmate,它完全可以独立控制硬件且不再需要外部系统的支持。
PCI Express(PCIe)标准的出现是为了满足网络设备对更高带宽、更大灵活性和更好性能的需求。PCIe在首次亮相后已经得到充分开发并广泛应用于许多网络设备。PCIe卡是指一种具有PCIe接口的网络适配器,在主板级连接中用作扩展卡接口。PCI-E与 PCI-X、PCI是具有不同设计和拓扑的三个版本的网络适配器,最新的PCIe卡已经进行了改进,成为选择网卡时的必然趋势。
Jailhouse可以对PCIE设备进行物理隔离,也就是说可以把PCIE设备当作一种资源分配给各个虚拟机使用。现有的jailhouse设计框架决定了在ARM或ARM64架构CPU隔离PCIE设备不可行,主要存在的问题是PCIE总线初始化和GIC初始化在jailhouse root cell完成,在jailhouse inmate cell拿不到PCIE总线和GIC资源,hypervisor(管理程序)无法把msi、msix中断注入到相应inmate cell。
发明内容
本发明的主要目的是针对基于jailhouse现有框架无法把PCIE设备隔离给ARM/ARM64架构CPU inmate cell这一问题,提出一种把PCIE root complex隔离给inmate cell的方法,从而实现PCIE设备的隔离。
为了完成上述目的,本发明提供了一种在jailhouse实现PCIE设备隔离的方法,方法包括:
修改Host OS设备树文件,防止Host OS初始化PCIE总线和gic-its;
修改Host OS在jailhouse中的配置文件,在jailhouse hypervisor层会对PCIE和gic-its进行资源分配,以供Guest OS来使用;
修改Guest OS设备树文件,使得所有PCIE和gic-its相关的初始化过程都由GuestOS来完成;
修改Guest OS在jailhouse中的配置文件,以便jailhouse初始化Guest OS资源;
在jailhouse hypervisor层增加对GICR_PENDBASER寄存器访问权限,用以保证Guest OS中的避免PCIE设备的msi/msix中断能够频繁访问到GICR_PENDBASER寄存器资源。
优选的,方法包括:
修改Host OS设备树文件,去除PCIE总线描述节点和gic-its描述节点;
修改Host OS在jailhouse中的配置文件,增加PCIE和gic-its相关内存段的描述;
修改Guest OS设备树文件,增加PCIE总线描述节点和gic-its描述节点;
修改Guest OS在jailhouse中的配置文件,增加PCIE和gic-its相关内存段;
在jailhouse hypervisor层增加对GICR_PENDBASER寄存器访问权限,用以保证Guest OS中的PCIE设备msi/msix中断能够访问到GICR_PENDBASER寄存器资源。
进一步优选的,Host OS中的gic-its在jailhouse中的资源包括GIC ITS地址空间大小、jailhouse访问gic-its内存的权限、gic-its的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问gic-its内存的权限包括读权限、写权限和输入输出权限。
更进一步优选的,Host OS中的PCIE在jailhouse中的资源包括:
PCIE ECAM资源、PCIE IO资源、PCIE mem32资源和PCIE mem64资源,其中,
PCIE ECAM资源包括PCIE ECAM地址空间大小、jailhouse访问PCIE ECAM的权限、PCIE ECAM的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE ECAM的权限包括读权限、写权限和输入输出权限;
PCIE IO资源包括PCIE IO地址空间大小、jailhouse访问PCIE ECAM的权限、PCIEIO的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE IO的权限包括读权限、写权限和输入输出权限;
PCIE mem32资源包括PCIE mem32地址空间大小、jailhouse访问PCIE mem32的权限、PCIE mem32的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem32的权限包括读权限、写权限和输入输出权限;
PCIE mem64资源包括PCIE mem64地址空间大小、jailhouse访问PCIE mem64的权限、PCIE mem64的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem64的权限包括读权限、写权限和输入输出权限。
更进一步优选的,Guest OS中的PCIE在jailhouse中的资源包括:
PCIE ECAM资源、PCIE IO资源、PCIE mem32资源和PCIE mem64资源,其中,
PCIE ECAM资源包括PCIE ECAM地址空间大小、jailhouse访问PCIE ECAM的权限、PCIE ECAM的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE ECAM的权限包括读权限、写权限和输入输出权限;
PCIE IO资源包括PCIE IO地址空间大小、jailhouse访问PCIE ECAM的权限、PCIEIO的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE IO的权限包括读权限、写权限和输入输出权限;
PCIE mem32资源包括PCIE mem32地址空间大小、jailhouse访问PCIE mem32的权限、PCIE mem32的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem32的权限包括读权限、写权限和输入输出权限;
PCIE mem64资源包括PCIE mem64地址空间大小、jailhouse访问PCIE mem64的权限、PCIE mem64的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem64的权限包括读权限、写权限和输入输出权限。
更进一步优选的,PCIE总线描述节点和gic-its描述节点均为linux设备树源文件中的标准格式代码。
本发明的有益效果为:
本发明通过把PCIE root complex隔离给Guest OS的方法,解决了jailhousehypervisor不能把msi/msix中断注入给Guest OS的问题。
具体实施方式
下面结合本发明的实施例,对本发明实施例中的技术方案进行清楚、完整地描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
实施例一
本实施例提供了一种在jailhouse实现PCIE设备隔离的方法,具体包括:
修改Host OS设备树文件,防止Host OS初始化PCIE总线和gic-its,在本实施例中,通过去除PCIE总线描述节点和gic-its描述节点实现的;
修改Host OS在jailhouse中的配置文件,在jailhouse hypervisor层会对PCIE和gic-its进行资源分配,以供Guest OS来使用,在本实施例中,通过增加PCIE和gic-its相关内存段的描述实现的;
修改Guest OS设备树文件,使得所有PCIE和gic-its相关的初始化过程都由GuestOS来完成,在本实施例中,通过增加PCIE和gic-its相关内存段实现的;
修改Guest OS在jailhouse中的配置文件,以便jailhouse初始化Guest OS资源,在本实施例中,通过增加PCIE总线描述节点和gic-its描述节点实现的;
在jailhouse hypervisor层增加对GICR_PENDBASER寄存器访问权限,避免PCIE设备的msi/msix中断频繁访问GICR_PENDBASER寄存器。
在本实施例中,Host OS中的gic-its在jailhouse中的资源包括GIC ITS地址空间大小、jailhouse访问gic-its内存的权限、gic-its的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问gic-its内存的权限包括读权限、写权限和输入输出权限。
在本实施例中,Host OS中的PCIE在jailhouse中的资源包括:
PCIE ECAM资源、PCIE IO资源、PCIE mem32资源和PCIE mem64资源,其中,
PCIE ECAM资源包括PCIE ECAM地址空间大小、jailhouse访问PCIE ECAM的权限、PCIE ECAM的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE ECAM的权限包括读权限、写权限和输入输出权限;
PCIE IO资源包括PCIE IO地址空间大小、jailhouse访问PCIE ECAM的权限、PCIEIO的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE IO的权限包括读权限、写权限和输入输出权限;
PCIE mem32资源包括PCIE mem32地址空间大小、jailhouse访问PCIE mem32的权限、PCIE mem32的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem32的权限包括读权限、写权限和输入输出权限;
PCIE mem64资源包括PCIE mem64地址空间大小、jailhouse访问PCIE mem64的权限、PCIE mem64的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem64的权限包括读权限、写权限和输入输出权限。
在本实施例中,修改Guest OS设备树文件,增加PCIE总线描述节点和gic-its描述节点。
在本实施例中,Guest OS中的PCIE在jailhouse中的资源包括(这部分增加的内存段与Host OS中的PCIE在jailhouse中的资源完全相同,因此,不再详细赘述代码内容。):
PCIE ECAM资源、PCIE IO资源、PCIE mem32资源和PCIE mem64资源,其中,
PCIE ECAM资源包括PCIE ECAM地址空间大小、jailhouse访问PCIE ECAM的权限、PCIE ECAM的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE ECAM的权限包括读权限、写权限和输入输出权限;
PCIE IO资源包括PCIE IO地址空间大小、jailhouse访问PCIE ECAM的权限、PCIEIO的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE IO的权限包括读权限、写权限和输入输出权限;
PCIE mem32资源包括PCIE mem32地址空间大小、jailhouse访问PCIE mem32的权限、PCIE mem32的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem32的权限包括读权限、写权限和输入输出权限;
PCIE mem64资源包括PCIE mem64地址空间大小、jailhouse访问PCIE mem64的权限、PCIE mem64的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem64的权限包括读权限、写权限和输入输出权限。
在本实施例中,在jailhouse hypervisor层增加对GICR_PENDBASER寄存器访问权限,因为PCIE设备的msi/msix中断会频繁访问GICR_PENDBASER寄存器。
实施例二
本实施例在实施例一的基础上进行运行的。
本实施例提供了一种在jailhouse实现PCIE设备隔离的方法,具体包括:
1、修改Host OS设备树文件,去除PCIE总线描述节点和gic-its描述节点,目的是不让Host OS初始化PCIE总线和gic-its。
2、修改Host OS在jailhouse中的配置文件,增加PCIE和gic-its相关内存段的描述。这是因为,在jailhouse hypervisor层会对PCIE和gic-its进行资源分配,以供GuestOS来使用。
/* GIC ITS */
{
.phys_start = 0x29920000,
.virt_start = 0x29920000,
.size = 0x20000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_IO,
},
(以上代码表示把GIC ITS作为资源划分给hypervisor。其中.phys_start和.virt_start字段表征的是GIC ITS的物理地址和虚拟地址,在jailhouse中采取线性映射,所以这里物理地址和虚拟地址相等。字段.size表征GIC ITS地址空间大小。字段.flags表征jailhouse访问此段内存的权限,JAILHOUSE_MEM_READ表示读权限,JAILHOUSE_MEM_WRITE表示写权限,JAILHOUSE_MEM_IO表示输入输出权限。)
/* PCIe ECAM */
{
.phys_start = 0x40000000,
.virt_start = 0x40000000,
.size = 0x10000000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_IO,
},
(以上代码表示把PCIE ECAM作为资源分配给hypervisor,并设置访问权限为读、写和输入输出。)
/* PCIe IO */
{
.phys_start = 0x50000000,
.virt_start = 0x50000000,
.size = 0x8000000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_IO,
},
(以上表示把PCIE IO空间地址资源分配给hypervisor,并设置访问权限为读、写和输入输出。)
/* PCIe Mem32 */
{
.phys_start = 0x58000000,
.virt_start = 0x58000000,
.size = 0x28000000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_IO,
},
(以上表示把PCIE mem32空间地址资源分配给hypervisor,并设置访问权限为读、写和输入输出。)
/* PCIe Mem64 */
{
.phys_start = 0x1000000000,
.virt_start = 0x1000000000,
.size = 0x1000000000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_IO,
},
(以上表示把PCIE mem64空间地址资源分配给hypervisor,并设置访问权限为读、写和输入输出。)
3、修改Guest OS设备树文件,增加PCIE总线描述节点和gic-its描述节点。所有PCIE和gic-its相关的初始化过程都由Guest OS来完成。
pcie {
compatible = "pci-host-ecam-generic";
device_type = "pci";
#address-cells = <0x03>;
#size-cells = <0x02>;
#interrupt-cells = <0x01>;
reg = <0x00 0x40000000 0x00 0x10000000>;
msi-parent = <0x04>;
bus-range = <0x00 0xff>;
interrupt-map-mask = <0x00 0x00 0x00 0x07>;
interrupt-map = <0x00 0x00 0x00 0x01 0x01 0x00 0x000x00 0x1c 0x04 0x00 0x00 0x00 0x02 0x01 0x00 0x00 0x00 0x1d 0x04 0x00 0x000x00 0x03 0x01 0x00 0x00 0x00 0x1e 0x04 0x00 0x00 0x00 0x04 0x01 0x00 0x000x00 0x1f 0x04>;
ranges = <0x1000000 0x00 0x00 0x00 0x50000000 0x000xf00000 0x2000000 0x00 0x58000000 0x00 0x58000000 0x00 0x28000000 0x30000000x10 0x00 0x10 0x00 0x10 0x00>;
};
(以上代码是linux设备树源文件标准格式代码,表征的是pcie总线资源。这会在linux kernel加载pcie设备驱动的时候用到。)
interrupt-controller@29900000 {
compatible = "arm,gic-v3";
#interrupt-cells = <0x03>;
#address-cells = <0x02>;
#size-cells = <0x02>;
ranges;
interrupt-controller;
reg = <0x00 0x29900000 0x00 0x20000 0x00 0x29980000 0x000x80000 0x00 0x29c00000 0x00 0x10000 0x00 0x29c10000 0x00 0x10000 0x000x29c20000 0x00 0x10000>;
interrupts = <0x01 0x09 0x04>;
phandle = <0x01>;
gic-its@29920000 {
compatible = "arm,gic-v3-its";
msi-controller;
reg = <0x00 0x29920000 0x00 0x20000>;
phandle = <0x05>;
};
};
(以上表示linux设备树源文件对GIC的描述。其中节点gic-its描述是GIC中的ITS模块,这在Linux kernel启动过程中初始化GIC的后会用到。)
4、修改Guest OS在jailhouse中的配置文件,增加PCIE和gic-its相关内存段。这些内存段在jailhouse初始化Guest OS资源的时候会用到。这部分增加的内存段和步骤2中的完全相同,因此,不再详述。
5、在jailhouse hypervisor层增加对GICR_PENDBASER寄存器访问权限,因为PCIE设备的msi/msix中断会频繁访问GICR_PENDBASER寄存器。
static enum mmio_result gicv3_handle_redist_access(void *arg,
struct mmio_access *mmio)
{
……
switch (mmio->address) {
case GICR_TYPER:
mmio_perform_access(cpu_public->gicr.base, mmio);
if (cpu_public->cpu_id == last_gicr)
mmio->value |= GICR_TYPER_Last;
return MMIO_HANDLED;
case GICR_TYPER + 4:
mmio_perform_access(cpu_public->gicr.base, mmio);
return MMIO_HANDLED;
……
case GICR_PENDBASER:
mmio_perform_access(cpu_public->gicr.base, mmio);
return MMIO_HANDLED;
……
}
上面代码中, case GICR_PENDBASER之后的代码,含义是在hypervisor访问GICR相关寄存器时增加对GICR_PENDBASER寄存器访问权限。当访问GICR_PENDBASER寄存器的时候,hypervisor会进行拦截,进而执行到gicv3_handle_redist_access函数,进一步的会调用mmio_perform_access来执行对GICR_PENDBASER寄存器的读、写或者输入输出操作。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

Claims (3)

1.一种在jailhouse实现PCIE设备隔离的方法,其特征在于,所述方法包括:
修改Host OS设备树文件,去除PCIE总线描述节点和gic-its描述节点;
修改Host OS在jailhouse中的配置文件,增加PCIE和gic-its相关内存段的描述;
修改Guest OS设备树文件,增加PCIE总线描述节点和gic-its描述节点;
修改Guest OS在jailhouse中的配置文件,增加PCIE和gic-its相关内存段;
在jailhouse hypervisor层增加对GICR_PENDBASER寄存器访问权限,用以保证GuestOS中的PCIE设备的msi/msix中断能够频繁访问到GICR_PENDBASER寄存器资源;
其中,PCIE总线描述节点和gic-its描述节点均为linux设备树源文件中的标准格式代码;
Guest OS中的PCIE在jailhouse中的资源包括:
PCIE ECAM资源、PCIE IO资源、PCIE mem32资源和PCIE mem64资源,其中,
PCIE ECAM资源包括PCIE ECAM地址空间大小、jailhouse访问PCIE ECAM的权限、PCIEECAM的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE ECAM的权限包括读权限、写权限和输入输出权限;
PCIE IO资源包括PCIE IO地址空间大小、jailhouse访问PCIE ECAM的权限、PCIE IO的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE IO的权限包括读权限、写权限和输入输出权限;
PCIE mem32资源包括PCIE mem32地址空间大小、jailhouse访问PCIE mem32的权限、PCIE mem32的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem32的权限包括读权限、写权限和输入输出权限;
PCIE mem64资源包括PCIE mem64地址空间大小、jailhouse访问PCIE mem64的权限、PCIE mem64的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem64的权限包括读权限、写权限和输入输出权限;
当访问GICR_PENDBASER寄存器的时候,hypervisor会进行拦截,进而执行到gicv3_handle_redist_access函数,进一步的会调用mmio_perform_access来执行对GICR_PENDBASER寄存器的读、写或者输入输出操作。
2.根据权利要求1所述的一种在jailhouse实现PCIE设备隔离的方法,其特征在于,Host OS中的gic-its在jailhouse中的资源包括GIC ITS地址空间大小、jailhouse访问gic-its内存的权限、gic-its的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问gic-its内存的权限包括读权限、写权限和输入输出权限。
3.根据权利要求2所述的一种在jailhouse实现PCIE设备隔离的方法,其特征在于,Host OS中的PCIE在jailhouse中的资源包括:
PCIE ECAM资源、PCIE IO资源、PCIE mem32资源和PCIE mem64资源,其中,
PCIE ECAM资源包括PCIE ECAM地址空间大小、jailhouse访问PCIE ECAM的权限、PCIEECAM的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE ECAM的权限包括读权限、写权限和输入输出权限;
PCIE IO资源包括PCIE IO地址空间大小、jailhouse访问PCIE ECAM的权限、PCIE IO的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE IO的权限包括读权限、写权限和输入输出权限;
PCIE mem32资源包括PCIE mem32地址空间大小、jailhouse访问PCIE mem32的权限、PCIE mem32的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem32的权限包括读权限、写权限和输入输出权限;
PCIE mem64资源包括PCIE mem64地址空间大小、jailhouse访问PCIE mem64的权限、PCIE mem64的物理地址和虚拟地址,其中,物理地址和虚拟地址两者在jailhouse中采取线性映射;jailhouse访问PCIE mem64的权限包括读权限、写权限和输入输出权限。
CN202310701490.7A 2023-06-14 2023-06-14 一种在jailhouse实现PCIE设备隔离的方法 Active CN116431293B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310701490.7A CN116431293B (zh) 2023-06-14 2023-06-14 一种在jailhouse实现PCIE设备隔离的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310701490.7A CN116431293B (zh) 2023-06-14 2023-06-14 一种在jailhouse实现PCIE设备隔离的方法

Publications (2)

Publication Number Publication Date
CN116431293A CN116431293A (zh) 2023-07-14
CN116431293B true CN116431293B (zh) 2023-09-26

Family

ID=87085918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310701490.7A Active CN116431293B (zh) 2023-06-14 2023-06-14 一种在jailhouse实现PCIE设备隔离的方法

Country Status (1)

Country Link
CN (1) CN116431293B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719613B (zh) * 2023-08-10 2023-10-31 麒麟软件有限公司 基于虚拟监控器实现Linux下PCIe物理设备隔离的方法
CN116954830B (zh) * 2023-09-18 2023-12-26 麒麟软件有限公司 jailhouse下使虚拟机实现msi/x中断的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984591A (zh) * 2014-05-15 2014-08-13 中国人民解放军国防科学技术大学 计算机虚拟化系统的PCI设备INTx中断投递方法
CN107783913A (zh) * 2016-08-31 2018-03-09 华为技术有限公司 一种应用于计算机的资源访问方法和计算机
CN107861763A (zh) * 2017-12-01 2018-03-30 天津麒麟信息技术有限公司 一种面向飞腾处理器休眠过程的中断路由环境恢复方法
CN108875360A (zh) * 2017-05-12 2018-11-23 南京大学 基于kvm虚拟化的网络服务隔离设计
CN113918311A (zh) * 2021-12-10 2022-01-11 北京智芯微电子科技有限公司 多核系统的软中断路由方法及响应软中断的方法和芯片
CN115269057A (zh) * 2022-09-23 2022-11-01 麒麟软件有限公司 基于设备树的隔离系统生成配置文件的方法
CN116204933A (zh) * 2023-05-05 2023-06-02 麒麟软件有限公司 一种ARM64架构下基于jailhouse隔离PCIe网卡的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996420B2 (en) * 2003-11-21 2015-03-31 Intel Corporation System and method for caching data
US11269992B2 (en) * 2018-03-22 2022-03-08 Trulyprotect Oy Systems and methods for hypervisor-based protection of code

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984591A (zh) * 2014-05-15 2014-08-13 中国人民解放军国防科学技术大学 计算机虚拟化系统的PCI设备INTx中断投递方法
CN107783913A (zh) * 2016-08-31 2018-03-09 华为技术有限公司 一种应用于计算机的资源访问方法和计算机
CN108875360A (zh) * 2017-05-12 2018-11-23 南京大学 基于kvm虚拟化的网络服务隔离设计
CN107861763A (zh) * 2017-12-01 2018-03-30 天津麒麟信息技术有限公司 一种面向飞腾处理器休眠过程的中断路由环境恢复方法
CN113918311A (zh) * 2021-12-10 2022-01-11 北京智芯微电子科技有限公司 多核系统的软中断路由方法及响应软中断的方法和芯片
CN115269057A (zh) * 2022-09-23 2022-11-01 麒麟软件有限公司 基于设备树的隔离系统生成配置文件的方法
CN116204933A (zh) * 2023-05-05 2023-06-02 麒麟软件有限公司 一种ARM64架构下基于jailhouse隔离PCIe网卡的方法

Also Published As

Publication number Publication date
CN116431293A (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN116431293B (zh) 一种在jailhouse实现PCIE设备隔离的方法
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
US9940291B2 (en) Assigning processors to memory mapped configuration
US5953516A (en) Method and apparatus for emulating a peripheral device to allow device driver development before availability of the peripheral device
EP2409234B1 (en) Inter operating system memory hotswap to support memory growth in a non-virtualized system
US7526578B2 (en) Option ROM characterization
US20040205755A1 (en) Operating systems
US9423958B2 (en) System and method for managing expansion read-only memory and management host thereof
US20100262722A1 (en) Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
US20150026678A1 (en) Control method for computer, and computer
US10620963B2 (en) Providing fallback drivers for IO devices in a computing system
EP4220394A1 (en) Chip system, method for processing virtual interrupt, and corresponding device
CN111857840A (zh) 基本输入输出系统bios启动方法及装置
CN114417373A (zh) 一种NVMe-oF用户态客户端的数据访问方法和装置
CN113312141A (zh) 用于虚拟机的虚拟串行端口
EP2761483B1 (en) Protocol neutral fabric
US10534732B2 (en) Exposing memory-mapped IO devices to drivers by emulating PCI bus and PCI device configuration space
US7484083B1 (en) Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment
EP1573526A2 (en) Device representation apparatus and methods
WO2020177567A1 (zh) 一种迁移数据的方法、装置及系统
CN109408407B (zh) 显示内存的分配方法和装置
CA2521748A1 (en) Operating systems
CN112559120A (zh) 定制化pcie总线io虚拟化支撑方法
CN109408193B (zh) 虚拟机实现方法、装置及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant