专利申请类型:发明专利;
源自:北京高价值专利检索信息库;
专利名称:一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置
专利类型:发明专利
专利申请号:CN202310778942.1
专利申请(专利权)人:北京大禹智芯科技有限公司
权利人地址:北京市朝阳区来广营西路5号院5号楼13层1305
专利发明(设计)人:王可恩
专利摘要:本发明提供一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置,Qemu虚拟环境模拟一具有PCIe总线的计算机系统,其特征在于,所述方法提供一PCIe Switch模拟器,PCIe Switch模拟器提供:一上行接口,用以连接PCIe的根复合体;复数个下行接口,用以对应连接复数个PCIe设备;一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息。本发明有利于扩展虚拟PCIe设备,尤其是在其他独立程序中扩展设备,还有助于降低Qemu硬件资源需求,且便于业务平台进行设备管理、热插拔、迁移和性能监控等。
主权利要求:一种基于Qemu虚拟环境的PCIeSwitch模拟器的实现方法和
装置
技术领域
[0001] 本发明属于云计算和设备虚拟化等技术领域,尤其涉及一种基于Qemu虚拟环境的PCIeSwitch模拟器的实现方法和装置。
背景技术
[0002] 设备虚拟化技术一直是云计算领域的最重要的基础技术之一。云平台通常基于虚拟化技术来实现资源的共享、管理和调度。常见的虚拟设备包括虚拟磁盘、虚拟网络适配器等。Qemu(QuickEmulator)是一款基于虚拟化技术的开源模拟器和虚拟机管理器,广泛应用于laaS(Infrastructure‑as‑a‑Service,基础设施即服务)层级的云服务中。在虚拟化领域中,Qemu与KVM(Kernel‑basedVirtualMachine,基于内核的虚拟机)相结合,形成了Linux平台上的事实标准。
[0003] 不同的计算机组件和设备差别非常大,从工作原理到使用方式都不相同,因此模拟物理设备也是非常复杂的工作。Qemu利用设备抽象模型QOM(QemuObjectModel,Qemu对象模型)来模拟各种设备。Qemu负责虚拟设备的创建、管理和销毁。运行期间每个Qemu进程代表一个客户操作系统(GuestOS),对虚拟设备的模拟操作也运行在同一个Qemu进程中,Qemu进程之外不能获取虚拟设备的内部状态。此外模拟设备还需要消耗额外的内存和CPU资源,因此对宿主机具有一定性能要求。
[0004] PCI总线标准最初由Intel公司推出,后来经过多次更新和改进,目前已经发展出多个标准。PCI总线标准被广泛应用于PC、服务器、工控设备等领域,成为计算机领域最重要的接口之一。Qemu模拟了多种计算机系统总线和设备,其中包括跟复合体(RC,RootComplex的简写)、PCI总线、PCIe总线、PCI桥(PCIBridge)、PCIeSwitch、网络适配器和磁盘设备等。Qemu实现的PCIe相关设备结构如图1所示。
[0005] 但Qemu模拟设备时存在以下问题:
[0006] 设备扩展困难,扩展一种Qemu模拟设备需要熟悉Qemu项目代码和QOM设备模型;
[0007] 无法获取虚拟设备的内部状态;虚拟设备的配置寄存器、BAR(BaseAddressRegister,基址寄存器)空间等数据都在Qemu进程中,外部系统无法对设备进行精细管理和控制。
[0008] 因此,本领域迫切需要可以摆脱虚拟设备对Qemu的依赖,还能够实时获得下游的PCIe设备内部状态的技术方案。
发明内容
[0009] 针对现有技术中Qemu模拟设备扩展困难且无法获取虚拟设备的内部状态的技术问题,现提供一种基于Qemu虚拟环境的PCIeSwitch模拟器的实现方法和装置。
[0010] 在本发明的较佳实施方式中,本申请实施例提供了基于Qemu虚拟环境的PCIeSwitch模拟器的实现方法,所述Qemu虚拟环境模拟一具有PCIe总线的计算机系统,其特征在于,提供一PCIeSwitch模拟器,所述PCIeSwitch模拟器提供:
[0011] 一上行接口,用以连接PCIe的根复合体;
[0012] 复数个下行接口,用以对应连接复数个PCIe设备;
[0013] 一第一拦截单元,用于拦截并代理系统自所述上行接口对复数个所述PCIe设备的访问;
[0014] 一第二拦截单元,用以拦截并代理复数个所述PCIe设备向所述系统转发的配置请求或中断信息。
[0015] 进一步,所述第一拦截单元拦截所述系统自所述上行接口对复数个所述PCIe设备的访问的方法包括以下步骤:
[0016] 步骤S1、查找对应需访问的所述PCIe设备对应的虚拟对象;
[0017] 步骤S2、判断所述虚拟对象对应的所述PCIe设备的上游设备是否为所述PCIeSwitch模拟器;
[0018] 步骤S3、如否,则通过所述Qemu虚拟环境提供的访问机制进行访问,并退出;
[0019] 步骤S4、如是,则拦截所述系统对对应的所述PCIe设备的访问。
[0020] 进一步,所述第二拦截单元拦截复数个所述PCIe设备向所述系统转发的所述配置请求或所述中断信息的方法包括以下步骤:
[0021] 步骤T1、查找产生所述配置请求或所述中断信息的所述PCIe设备对应的虚拟对象;
[0022] 步骤T2、判断所述虚拟对象对应的所述PCIe设备的上游设备是否为所述PCIeSwitch模拟器;
[0023] 步骤T3、如否,则通过所述Qemu虚拟环境提供的转发机制进行所述配置请求或所述中断信息的转发,并退出;
[0024] 步骤T4、如是,则拦截所述PCIe设备向所述系统发送的所述配置请求或所述中断信息。
[0025] 进一步,所述方法还包括提供一PCIe配置空间读写单元,用以代理系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写。
[0026] 进一步,所述PCIe配置空间读写单元代理所述系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写的方法包括;
[0027] 步骤A1、所述第一拦截单元拦截所述系统对对应的所述PCIe设备的访问;
[0028] 步骤A2、通过对应的所述PCIe设备的上游设备的所述PCIe配置空间读写单元对所述PCIe配置空间进行读写。
[0029] 进一步,所述复数个PCIe设备包括PCIe桥(PCIebridge),级联的PCIeSwitch以及PCIe终端设备。
[0030] 进一步,所述方法还包括提供一基址寄存器空间配置单元,用以根据所述配置请求,配置对应的所述PCIe设备的基址寄存器空间。
[0031] 进一步,所述基址寄存器空间配置单元配置对应的所述PCIe设备的基址寄存器空间的方法包括以下步骤:
[0032] 步骤B1、所述第二拦截单元拦截所述PCIe设备向所述系统发送的所述配置请求;
[0033] 步骤B2、所述基址寄存器空间配置单元根据对应的所述PCIe设备的请求向所述Qemu虚拟环境注册对应的储存区域,并维护对应的所述PCIe设备的基址寄存器空间与所述储存区域的映射关系。
[0034] 进一步,所述方法还包括提供一中断转发单元,用以向所述系统转发对应的所述PCIe设备产生的所述中断信息。
[0035] 进一步,所述中断转发单元向所述系统转发对应的所述PCIe设备产生的所述中断信息的方法包括以下步骤:
[0036] 步骤C1、所述第二拦截单元拦截所述PCIe设备向所述系统发送的所述中断信息;
[0037] 步骤C2、所述中断转发单元将所述中断信息写入所述Qemu虚拟环境的客户操作系统的中断信息处理区域。
[0038] 在本发明的较佳实施方式中,本申请实施例提供了一种基于Qemu虚拟环境的PCIeSwitch模拟器装置,包括:
[0039] 一上行接口,用以连接PCIe的根复合体;
[0040] 复数个下行接口,用以对应连接复数个PCIe设备;
[0041] 一第一拦截单元,连接所述上行接口,用以拦截并代理系统自所述上行接口对复数个所述PCIe设备的访问;
[0042] 一第二拦截单元,连接复数个所述下行接口,用以拦截并代理复数个所述PCIe设备向所述系统转发的配置请求或中断信息。
[0043] 进一步,所述装置还包括一PCIe配置空间读写单元,连接所述第一拦截单元,用以代理所述系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写。
[0044] 进一步,所述装置还包括一基址寄存器空间配置单元,连接所述第二拦截单元,用以根据所述配置请求,配置对应的所述PCIe设备的基址寄存器空间。
[0045] 进一步,所述装置还包括一中断转发单元,连接所述第二拦截单元,用以向所述系统转发对应的所述PCIe设备产生的所述中断信息。
[0046] 本发明能够带来以下有益效果:
[0047] 1、有利于扩展虚拟PCIe设备,尤其是在其他独立程序中扩展设备;
[0048] 2、PCIeSwitch模拟器下游的PCIe设备独立运行在其他程序中,有助于降低Qemu硬件资源需求;
[0049] 3、PCIeSwitch模拟器下游的PCIe设备独立运行在其他程序中,外界程序能获取到虚拟设备的配置空间、基址寄存器空间和中断操作;便于业务平台进行设备管理、热插拔、迁移和性能监控等。
附图说明
[0050] 下面将以明确易懂的方式,结合附图说明优选实施方式,对上述特性、技术特征、优点及其实现方式予以进一步说明。
[0051] 图1示出了现有技术中Qemu实现PCIe设备的结构示意图。
[0052] 图2示出了本发明的一个实施方式中PCIeSwitch模拟器装置的模块组成图。
[0053] 图3示出了本发明的一个实施方式的拦截对下游的PCIe设备的访问的方法的步骤流程图。
[0054] 图4示出了本发明的一个实施方式的拦截下游的PCIe设备的配置请求或中断信息的方法的步骤流程图。
[0055] 图5示出了本发明的一个实施方式的读写下游的PCIe设备的PCIe配置空间的方法的步骤流程图。
[0056] 图6示出了本发明的一个实施方式的配置下游的PCIe设备的基址寄存器空间的方法的步骤流程图。
[0057] 图7示出了本发明的一个实施方式的转发下游的PCIe设备中断信息的方法的步骤流程图。
[0058] 图8示出了本发明的一个实施方式的PCIeSwitch模拟器装置的结构示意图。
[0059] 图9示出了本发明的一个实施方式中配置下游的PCIe设备的基址寄存器空间的结构示意图。
[0060] 图10示出了本发明的一个实施方式中转发下游的PCIe设备中断信息的结构示意图。
[0061] 图11示出了本发明的另一个实施方式中PCIeSwitch模拟器装置的模块组成图。
具体实施方式
[0062] 以下对本发明的各个方面进行进一步详述。
[0063] 除非另有定义或说明,本文中所使用的所有专业与科学用语与本领域技术熟练人员所熟悉的意义相同。此外任何与所记载内容相似或均等的方法及材料皆可应用于本发明方法中。
[0064] 以下对术语进行说明。
[0065] 除非另有明确的规定和限定,本发明中所述的“或”,包含了“和”的关系。所述“和”相当于布尔逻辑运算符“AND”,所述“或”相当于布尔逻辑运算符“OR”,而“AND”是“OR”的子集。
[0066] 可以理解到,尽管术语“第一”、“第二”等等可以在此用来说明不同的元件,但是这些元件不应被这些术语限制。这些术语仅仅用来将一个元件与另一个元件区分开。因此,第一元件可以被称为第二元件,而不背离本发明构思的教导。
[0067] 本发明中,术语“含有”、“包含”或“包括”表示各种成分可一起应用于本发明的混合物或组合物中。因此,术语“主要由...组成”包含在术语“含有”、“包含”或“包括”中。
[0068] 除非另有明确的规定和限定,本发明的术语“相连”、“连通”、“连接”应作广义理解,例如,可以是固定连接,也可以是通过中介媒介间相连,可以是两个元件内部的连通或者两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
[0069] 例如,如果一个元件(或部件)被称为在另一个元件上、与另一个元件耦合或者与另一个元件连接,那么所述一个元件可以直接地在所述另一个元件上形成、与之耦合或者与之连接,或者在它们之间可以有一个或多个介于中间的元件。相反,如果在此使用表述“直接在......上”、“直接与......耦合”和“直接与......连接”,那么表示没有介于中间的元件。用来说明元件之间的关系的其他词语应该被类似地解释,例如“在......之间”和“直接在......之间”、“附着”和“直接附着”、“相邻”和“直接相邻”等等。
[0070] 另外需要说明的是,下面描述中使用的词语“前”、“后”、“左”、“右”、“上”和“下”指的是附图中的方向。使用的词语“内”和“外”分别指的是朝向或远离特定部件几何中心的方向。可以理解到,在此,这些术语用来描述如在附图中所示的一个元件、层或区域相对于另一个元件、层或区域的关系。除了在附图中描述的取向之外,这些术语应该也包含装置的其他取向。
[0071] 本发明的其它方面由于本文的公开内容,对本领域的技术人员而言是显而易见的。
[0072] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0073] 还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。例如,在附图中的元件的厚度可以为了清楚性起见而被夸张。
[0074] 本发明提供了一种基于Qemu虚拟环境的PCIeSwitch模拟器的实现方法,Qemu虚拟环境模拟一具有PCIe总线的计算机系统,方法提供一PCIeSwitch模拟器,如图2所示,PCIeSwitch模拟器提供:
[0075] 一上行接口,用以连接PCIe的根复合体;
[0076] 复数个下行接口,用以对应连接复数个PCIe设备;
[0077] 一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;
[0078] 一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息。
[0079] 上述技术方案,除了实现标准的PCIeSwitch功能之外,还代理所有下游PCIe设备的PCIe操作;通过本发明的PCIeSwitch模拟器装置,不但可以摆脱虚拟设备对Qemu的依赖,还能够实时获得下游的PCIe设备内部状态。
[0080] 作为优选的实施方式,如图3所示,第一拦截单元拦截系统自上行接口对复数个PCIe设备的访问的方法包括以下步骤:
[0081] 步骤S1、查找对应需访问的PCIe设备对应的虚拟对象;
[0082] 步骤S2、判断虚拟对象对应的PCIe设备的上游设备是否为PCIeSwitch模拟器;
[0083] 步骤S3、如否,则通过Qemu虚拟环境提供的访问机制进行访问,并退出;
[0084] 步骤S4、如是,则拦截系统对对应的PCIe设备的访问。
[0085] 作为优选的实施方式,如图4所示,第二拦截单元拦截复数个PCIe设备向系统转发的配置请求或中断信息的方法包括以下步骤:
[0086] 步骤T1、查找产生配置请求或中断信息的PCIe设备对应的虚拟对象;
[0087] 步骤T2、判断虚拟对象对应的PCIe设备的上游设备是否为PCIeSwitch模拟器;
[0088] 步骤T3、如否,则通过Qemu虚拟环境提供的转发机制进行配置请求或中断信息的转发,并退出;
[0089] 步骤T4、如是,则拦截PCIe设备向系统发送的配置请求或中断信息。
[0090] 进一步优选的,方法还提供一PCIe配置空间读写单元,用以代理系统对复数个PCIe设备对应的PCIe配置空间进行读写。
[0091] 作为优选的实施方式,如图5所示,PCIe配置空间读写单元代理系统对复数个PCIe设备对应的PCIe配置空间进行读写的方法包括;
[0092] 步骤A1、第一拦截单元拦截系统对对应的PCIe设备的访问;
[0093] 步骤A2、通过对应的PCIe设备的上游设备的PCIe配置空间读写单元对PCIe配置空间进行读写。
[0094] 进一步优选的,复数个PCIe设备包括PCIe桥(PCIebridge),级联的PCIeSwitch以及PCIe终端设备。
[0095] 进一步优选的,方法还包括提供一基址寄存器空间配置单元,用以根据配置请求,配置对应的PCIe设备的基址寄存器空间。
[0096] 作为优选的实施方式,如图6所示,基址寄存器空间配置单元配置对应的PCIe设备的基址寄存器空间的方法包括以下步骤:
[0097] 步骤B1、第二拦截单元拦截PCIe设备向系统发送的配置请求;
[0098] 步骤B2、基址寄存器空间配置单元根据对应的PCIe设备的请求向Qemu虚拟环境注册对应的储存区域,并维护对应的PCIe设备的基址寄存器空间与储存区域的映射关系。
[0099] 进一步优选的,方法还包括提供一中断转发单元,用以向系统转发对应的PCIe设备产生的中断信息。
[0100] 作为优选的实施方式,如图7所示,中断转发单元向系统转发对应的PCIe设备产生的中断信息的方法包括以下步骤:
[0101] 步骤C1、第二拦截单元拦截PCIe设备向系统发送的中断信息;
[0102] 步骤C2、中断转发单元将中断信息写入Qemu虚拟环境的客户操作系统的中断信息处理区域。实施例1
[0103] 从功能逻辑上看,PCIeSwitch由一个上游端口(upstreamport)和多个下游端口(downstreamport)组成,每个下游端口延伸一条独立的PCIe总线。根据PCIe点对点特性,每一条PCIe总线可以连接一个PCIe设备。PCIe组件之间通过TCP(TransmissionControlProtocol,传输控制协议)事务进行管理和数据读写。由PCIe设备连接拓扑结构可知,下游设备的事务数据包总会通过上游设备。但是Qemu并没有模拟PCIe事务层,而是保存所有虚拟设备的QOM对象地址,通过QOM的回调函数直接进行虚拟设备管理。
[0104] 根据本发明示例性实施例提出的基于Qemu虚拟环境的PCIeSwitch模拟器,Qemu虚拟环境模拟一具有PCIe总线的计算机系统,提供一PCIeSwitch模拟器,该PCIeSwitch模拟器可以直接连接PCIeRC,也可以用级连其他Switch或者bridge的方式连接到系统,且该PCIeSwitch模拟器会拦截系统对Switch所有下游的PCIe设备和级联设备的访问。除此之外,该虚拟上游端口还需要向系统转发下游的PCIe设备的中断信息。请参阅附图8,PCIeSwitch模拟器通过拦截系统的PCIe操作,可以不依赖Qemu添加其他任意PCIe设备,并且添加的设备独立于Qemu虚拟环境。
[0105] 为了拦截下游的PCIe设备的PCIe配置空间读写操作,PCIeSwitch模拟器上面增加了一对配置空间读写函数passthrough_read和passthrough_write用于此目的。系统中只有本发明中提及的PCIeSwitch模拟器才实现这组函数。
[0106] PCIe规范要求PCIeSwitch由一个上游端口、多个下游端口和一个内部PCIe总线组成。根据PCIe规范,上游端口必须实现PCIExpressCapability且类型为“UpstreamPortofPCIExpressSwitch”;下游端口必须实现PCIExpressCapability且类型为“DownstreamPortofPCIExpressSwitch”和“SlotImplemented"。这部分功能通过使用Qemu内部函数完成。
[0107] 区别于常规PCIeSwitch,为了实现PCIe拦截和中断代理功能,本发明的PCIeSwitch模拟器在常规PCIeSwitch之上还实现了下游的PCIe设备配置空间读写、下游的PCIe设备BAR空间读写和下游的PCIe设备中断处理等,具体地,PCIeSwitch模拟器提供:
[0108] 一上行接口,用以连接PCIe的根复合体;
[0109] 复数个下行接口,用以对应连接复数个PCIe设备,复数个PCIe设备包括PCIe桥(PCIebridge),级联的PCIeSwitch以及PCIe终端设备(Endpoint设备);
[0110] 一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;具体地,根据总线(BUS)号、设备号和功能号查找对应需访问的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIeSwitch模拟器,通过Qemu虚拟环境提供的访问机制按照常规流程对设备QOM对象进行配置空间读写,并退出;若是,则上游设备是PCIeSwitch模拟器,拦截系统对对应的PCIe设备的访问;其中,第一拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;PCIe配置空间常规读写流程如下:1.根据BUS号、设备号和功能号查找设备QOM对象;2.调用QOM的配置空间读写函数。
[0111] 一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息;具体地,根据总线(BUS)号、设备号和功能号查找产生配置请求或中断信息的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIeSwitch模拟器,则通过Qemu虚拟环境提供的转发机制进行配置请求或中断信息的转发,并退出;若是,则上游设备是PCIeSwitch模拟器,拦截PCIe设备向系统发送的配置请求或中断信息;其中,第二拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;
[0112] 一PCIe配置空间读写单元,用以代理系统对复数个PCIe设备对应的PCIe配置空间进行读写;具体地,第一拦截单元拦截系统对对应的PCIe设备的访问;通过对应的PCIe设备的上游设备的PCIe配置空间读写单元对PCIe配置空间进行读写;
[0113] 一基址寄存器(BAR)空间配置单元,用以根据配置请求,配置对应的PCIe设备的基址寄存器空间;具体地,每个PCIe设备最多会有6段BAR空间,Qemu使用一种叫做MemoryRegion的数据结构管理PCIeBAR空间,每个BAR空间对应一个MemoryRegion;本发明中的PCIeSwitch模拟器充当下游的PCIe设备和系统之间代理的角色。请参阅附图9,PCIe设备配置BAR空间时,向PCIeSwitch模拟器申请BAR空间,第二拦截单元拦截PCIe设备向系统发送的配置请求,基址寄存器空间配置单元根据对应的PCIe设备的请求再利用Qemu虚拟环境机制注册对应的储存区域(MemoryRegion);并维护着BAR空间与MemoryRegion的映射关系;
[0114] 一中断转发单元,用以向系统转发对应的PCIe设备产生的中断信息;与BAR空间读写类似,请参阅附图10,PCIeSwitch模拟器也代理了下游的PCIe设备向系统发起中断,具体如下:PCIe设备向PCIeSwitch模拟器发起中断请求;第二拦截单元拦截PCIe设备向系统发送的中断请求信息;中断转发单元根据中断请求信息将中断写入Qemu虚拟环境的GuestOS的中断信息处理区域。
[0115] 通过PCIeSwitch模拟器的拦截和代理技术方式,下游的PCIe设备按照PCIe规范实现自身的配置空间、BAR空间和中断处理机制。下游的PCIe设备摆脱了Qemu的限制,方便进行更深层次的平台业务扩展。实施例2
[0116] 如图11所示,作为示例的基于Qemu虚拟环境的PCIeSwitch模拟器装置,包括:
[0117] 一上行接口,用以连接PCIe的根复合体;
[0118] 复数个下行接口,用以对应连接复数个PCIe设备,复数个PCIe设备包括PCIe桥(PCIebridge),级联的PCIeSwitch以及PCIe终端设备(Endpoint设备);
[0119] 一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;具体地,根据总线(BUS)号、设备号和功能号查找对应需访问的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIeSwitch模拟器,通过Qemu虚拟环境提供的访问机制按照常规流程对设备QOM对象进行配置空间读写,并退出;若是,则上游设备是PCIeSwitch模拟器,拦截系统对对应的PCIe设备的访问;其中,第一拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;PCIe配置空间常规读写流程如下:1.根据BUS号、设备号和功能号查找设备QOM对象;2.调用QOM的配置空间读写函数。
[0120] 一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息;具体地,根据总线(BUS)号、设备号和功能号查找产生配置请求或中断信息的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIeSwitch模拟器,则通过Qemu虚拟环境提供的转发机制进行配置请求或中断信息的转发,并退出;若是,则上游设备是PCIeSwitch模拟器,拦截PCIe设备向系统发送的配置请求或中断信息;其中,第二拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;
[0121] 一PCIe配置空间读写单元,用以代理系统对复数个PCIe设备对应的PCIe配置空间进行读写;具体地,第一拦截单元拦截系统对对应的PCIe设备的访问;通过对应的PCIe设备的上游设备的PCIe配置空间读写单元对PCIe配置空间进行读写;
[0122] 一基址寄存器(BAR)空间配置单元,用以根据配置请求,配置对应的PCIe设备的基址寄存器空间;具体地,每个PCIe设备最多会有6段BAR空间,Qemu使用一种叫做MemoryRegion的数据结构管理PCIeBAR空间,每个BAR空间对应一个MemoryRegion;本发明中的PCIeSwitch模拟器充当下游的PCIe设备和系统之间代理的角色。请参阅附图9,PCIe设备配置BAR空间时,向PCIeSwitch模拟器申请BAR空间,第二拦截单元拦截PCIe设备向系统发送的配置请求,基址寄存器空间配置单元根据对应的PCIe设备的请求再利用Qemu虚拟环境机制注册对应的储存区域(MemoryRegion);并维护着BAR空间与MemoryRegion的映射关系;
[0123] 一中断转发单元,用以向系统转发对应的PCIe设备产生的中断信息;与BAR空间读写类似,请参阅附图10,PCIeSwitch模拟器也代理了下游的PCIe设备向系统发起中断,具体如下:PCIe设备向PCIeSwitch模拟器发起中断请求;第二拦截单元拦截PCIe设备向系统发送的中断请求信息;中断转发单元根据中断请求信息将中断写入Qemu虚拟环境的GuestOS的中断信息处理区域。
[0124] 综上,如上述所示的本发明的具体实施方式获得了如下效果:
[0125] 有利于扩展虚拟PCIe设备,尤其是在其他独立程序中扩展设备。
[0126] PCIeSwitch模拟器下游的PCIe设备独立运行在其他程序中,有助于降低Qemu硬件资源需求。
[0127] PCIeSwitch模拟器下游的PCIe设备独立运行在其他程序中,外界程序能获取到虚拟设备的配置空间、BAR空间和中断操作;便于业务平台进行设备管理、热插拔、迁移、性能监控等。
[0128] 基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
[0129] 本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0130] 应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
[0131] 在本发明提及的所有文献都在本申请中引用作为参考,就如同每一篇文献被单独引用作为参考那样。此外应理解,在阅读了本发明的上述内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
专利地区:北京
专利申请日期:2023-06-29
专利公开日期:2023-09-22
专利公告号:CN116521596B
以上信息来自国家知识产权局,如信息有误请联系我方更正!
该专利所有权非本平台所有,我方无法提供专利权所有者联系方式,请勿联系我方。