用于多个PCIe主机通过标准主机驱动程序共享SR-IOV设备的系统的制作方法

摘要: 本公开涉及共享设备资源的电子设备,诸如计算机,并且更具体地,涉及用于多个外围组件互连快速(pcie)主机通过标准主机驱动程序共享单根输入/输出虚拟化(sr-io...
用于多个PCIe主机通过标准主机驱动程序共享SR-IOV设备的系统的制作方法

本公开涉及共享设备资源的电子设备,诸如计算机,并且更具体地,涉及用于多个外围组件互连快速(pcie)主机通过标准主机驱动程序共享单根输入/输出虚拟化(sr-iov)设备的系统。

背景技术:

1、对于共享sr-iov设备的多个pcie主机,一些解决方案可以使用在给定主机上运行的复杂虚拟中介软件,或者支持和管理多个pcie交换机和设备到多个主机的互连的复杂fabric模式交换机。

2、例如,一种解决方案是使用microchip switchtec pax advanced fabric pcie交换机。pax fabric交换机在一些应用中可能是功能过剩的并且成本过高,并且其涉及更多的计算资源,包括ram、转换表以及pcie事务的专有路由。

3、在另一示例中,可能存在在每个主机上运行的专用软件。该软件有时被称为虚拟中介(vi)。vi软件确保各种主机的处理器协同工作,并且一个主机不会干扰其他主机的操作。用于给定操作系统(os)的vi软件对于vi软件可以在其上运行的给定os是唯一的。因此,对于可能在共享sr-iov设备的各种主机中使用的每个os,可能需要vi软件的版本。由于行为是基于协作的,因此如果第一主机的一个处理器发生故障并写入第二主机的处理器的空间,则可能会出现问题。

4、本公开的示例可以解决这些问题中的一个或多个问题。

技术实现思路

1、根据本公开的方面,提供了一种装置。该装置包括:多个上游pcie端口,给定的上游pcie端口用于连接到多个主机中的给定主机。该装置包括:第一下游pcie端口,该第一下游pcie端口用于连接到单根i/o虚拟化(sr-iov)设备,该sr-iov设备由多个主机共享,该装置用于提供对sr-iov设备的与sr-iov设备的物理功能(pf)相关联的多个虚拟功能(vf)的访问。该装置包括控制电路,该控制电路被配置为在该装置内部的pcie分区中枚举sr-iov设备。控制电路被配置为将多个vf中的第一vf仿真为面向多个主机中的第一主机的第一单独pcie设备,第一主机通过上游pcie端口中的第一上游pcie端口连接到装置。控制电路被配置为将多个vf中的第二vf仿真为面向多个主机中的第二主机的第二单独pcie设备,第二主机通过上游pcie端口中的第二上游pcie端口连接到装置。控制电路被配置为实现多个主机与sr-iov设备的多个vf之间的pcie事务的域间桥接。

2、根据本公开的其他方面,该装置可以包括以下特征中的一个或多个特征。控制电路可被配置为配置并管理pf,并且提供对与sr-iov设备的pf相关联的vf的访问。控制电路可被配置为将第一vf和第二vf分别仿真为面向主机的第一单独pcie设备和第二单独pcie设备,以同时将sr-iov设备共享给主机。控制电路可将第一vf和第二vf分别仿真为面向主机的第一单独pcie设备和第二单独pcie设备,以同时将sr-iov设备共享给主机,同时向主机中的给定主机指示该给定主机对给定vf具有独占控制。控制电路可被配置为通过vf为多个主机提供对sr-iov设备的非透明访问。

3、第一主机可被配置为访问该装置的第一分区中的第一上游pcie端口。第二主机可被配置为访问该装置的第二分区中的第二上游pcie端口。控制电路可被配置为从装置的第三分区访问sr-iov设备,第三分区是pcie内部分区,其中装置的第一分区、第二分区和第三分区是分开的分区。第一主机可以被配置为访问装置的第一分区中的第二下游pcie端口以访问下游设备。控制电路可被配置为实现域间pcie桥,以通过第三分区在给定主机与相应给定vf之间路由pcie信号。控制电路可被配置为通过第三分区桥接或仿真来自给定主机的针对相应给定vf的配置访问请求。

4、控制电路可被配置为确定源自sr-iov设备的请求是来自pf还是来自多个vf中的一个vf。基于确定源自sr-iov设备的请求来自多个vf中的一个vf,控制电路可以将请求桥接到相应的主机。否则,基于确定源自sr-iov设备的请求来自pf,控制电路可以在第三分区内处理该请求。控制电路可以被配置为进行以下中的一者或多者:确定第一事务层分组(tlp)的第一请求方标识符和第一完成方标识符,以将配置访问请求从该多个主机中的给定主机桥接到第三分区中的相应vf;确定第二tlp的存储器地址、第二请求方标识符和第二完成方标识符,以将第一存储器访问、第一消息和第一完成从多个主机中的给定主机桥接到第三分区中的相应vf;确定第三tlp的第三请求方标识符,以在第三分区中将第二存储器访问和第二消息从相应vf桥接到多个主机中的给定主机;以及确定第四tlp的第四请求方标识符和第三完成方标识符,以在第三分区中将第二完成从相应vf桥接到多个主机中的给定主机。

5、控制电路可以通过以下方式处理来自给定主机的针对相应lvf的配置读取请求:基于配置读取请求中的配置寄存器地址,确定请求的配置数据是否基于来自本地存储装置、或pf、或相应vf中的一者或多者的输入;执行以下中的一者或多者:基于确定请求的配置数据需要来自本地存储装置的输入,从本地存储装置检索存储的配置仿真数据以用于在数据处理器中进行处理;基于确定请求的配置数据需要来自pf的输入,从pf检索pf配置数据以用于在数据处理器中进行处理;以及基于确定请求的配置数据需要来自相应vf的输入,从相应vf检索vf配置数据以用于在数据处理器中进行处理;以及在数据处理器中处理配置仿真数据、pf配置数据、vf配置数据中的一者或多者,并且通过相应lvf进行桥接,将经处理的配置数据返回给给定主机,以用于sr-iov设备的多主机仿真;以及更新ntb规则。

6、控制电路可以通过以下方式处理来自给定主机的针对相应lvf的配置写入请求:基于配置写入请求中的配置寄存器地址,基于来自本地存储装置、或pf、或相应vf中的一者或多者的输入来确定是否要写入配置数据;执行以下中的一者或多者:基于确定要写入的配置数据需要来自本地存储装置的输入,从本地存储装置检索存储的配置仿真数据以用于在数据处理器中进行处理;基于确定要写入的配置数据需要来自pf的输入,从pf检索pf配置数据以用于在数据处理器中进行处理;以及基于确定要写入的配置数据需要来自相应vf的输入,从相应vf检索vf配置数据以用于在数据处理器中进行处理;以及在数据处理器中处理配置仿真数据、pf配置数据、vf配置数据中的一者或多者以产生经处理的配置数据;如果配置寄存器地址寻址到由相应lvf支持的有效寄存器,则将经处理的配置数据写入本地存储装置、pf和相应vf中的一者或多者;以及通过相应lvf进行桥接,将经处理的配置数据用于sr-iov设备向给定主机的多主机仿真;通过相应lvf将完成状态返回给给定主机;以及更新ntb规则。

7、根据本公开的另一方面,提供了一种制品。该制品包括指令,这些指令在由处理器加载并执行时,使得处理器在装置内部的pcie分区中枚举单根i/o虚拟化(sr-iov)设备,该装置包括:多个上游pcie端口,给定的上游pcie端口用于连接到多个主机中的给定主机;以及第一下游pcie端口,该第一下游pcie端口用于连接到sr-iov设备,sr-iov设备由多个主机共享,该装置提供对sr-iov设备的与sr-iov设备的物理功能(pf)相关联的多个虚拟功能(vf)的访问。这些指令使得处理器将多个vf中的第一vf仿真为面向多个主机中的第一主机的第一单独pcie设备,第一主机通过上游pcie端口中的第一上游pcie端口连接到装置。这些指令使得处理器将多个vf中的第二vf仿真为面向多个主机中的第二主机的第二单独pcie设备,第二主机通过上游pcie端口中的第二上游pcie端口连接到装置。这些指令使得处理器对域间pcie桥接规则表进行编程,以通过vf在sr-iov设备与多个主机之间提供非透明访问。这些指令使得处理器通过第三分区将配置访问请求从给定主机桥接到相应的给定vf。这些指令使得处理器针对来自给定主机的配置访问请求仿真配置数据。这些指令使得处理器管理多个主机与sr-iov设备的vf之间的pcie事务的域间桥接。

8、根据本公开的其他方面,制品可以包括以下特征中的一个或多个特征。这些指令可以使得处理器配置并管理pf,并且提供对与sr-iov设备的pf相关联的vf的访问。这些指令可以使得处理器将第一vf和第二vf分别仿真为面向主机的第一单独pcie设备和第二单独pcie设备,以同时将sr-iov设备共享给主机。这些指令可以使得处理器将第一vf和第二vf分别仿真为面向主机的第一单独pcie设备和第二单独pcie设备,以同时将sr-iov设备共享给主机,同时向主机中的给定主机指示该给定主机对给定vf具有独占控制。这些指令可以使得处理器对域间pcie桥接规则表进行编程,以通过vf为多个主机提供对sr-iov设备的非透明访问。

9、第一主机可被配置为访问该装置的第一分区中的第一上游pcie端口。第二主机可被配置为访问该装置的第二分区中的第二上游pcie端口。这些指令可以使得处理器从装置的第三分区访问sr-iov设备,其中装置的第一分区、第二分区和第三分区是分开的分区。这些指令可以使得处理器对域间pcie桥进行编程和管理,以通过第三分区在给定主机与相应给定vf之间路由pcie信号。

10、这些指令可以使得处理器执行以下中的一者或多者:(a)确定源自sr-iov设备的请求是来自pf还是来自多个vf中的一个vf;基于确定源自sr-iov设备的请求来自多个vf中的一个vf,将请求桥接到相应的主机;并且否则,基于确定源自sr-iov设备的请求来自pf,在第三分区内处理请求;或者(b)确定第一事务层分组(tlp)的第一请求方标识符和第一完成方标识符,以将配置访问请求从该多个主机中的给定主机桥接到第三分区中的相应vf。

11、这些指令可以使得处理器通过以下方式来处理来自给定主机的针对相应lvf的配置读取请求:基于配置读取请求中的配置寄存器地址,确定请求的配置数据是否基于来自本地存储装置、或pf、或相应vf中的一者或多者的输入;执行以下中的一者或多者:基于确定请求的配置数据需要来自本地存储装置的输入,从本地存储装置检索存储的配置仿真数据以用于在数据处理器中进行处理;基于确定请求的配置数据需要来自pf的输入,从pf检索pf配置数据以用于在数据处理器中进行处理;以及基于确定请求的配置数据需要来自相应vf的输入,从相应vf检索vf配置数据以用于在数据处理器中进行处理;以及在数据处理器中处理配置仿真数据、pf配置数据、vf配置数据中的一者或多者,并且通过相应lvf进行桥接,将经处理的配置数据返回给给定主机,以用于sr-iov设备的多主机仿真;以及更新ntb规则。

12、这些指令可以使得处理器通过以下方式来处理来自给定主机的针对相应lvf的配置写入请求:基于配置写入请求中的配置寄存器地址,确定要写入的配置数据是否基于来自本地存储装置、或pf、或相应vf中的一者或多者的输入;执行以下中的一者或多者:基于确定要写入的配置数据需要来自本地存储装置的输入,从本地存储装置检索存储的配置仿真数据以用于在数据处理器中进行处理;基于确定要写入的配置数据需要来自pf的输入,从pf检索pf配置数据以用于在数据处理器中进行处理;以及基于确定要写入的配置数据需要来自相应vf的输入,从相应vf检索vf配置数据以用于在数据处理器中进行处理;以及在数据处理器中处理配置仿真数据、pf配置数据、vf配置数据中的一者或多者;如果配置寄存器地址寻址到由相应lvf支持的有效寄存器,则将经处理的配置数据写入本地存储装置、pf和相应vf中的一者或多者;以及通过相应lvf进行桥接,将经处理的配置数据用于sr-iov设备向给定主机的多主机仿真;通过相应lvf将完成状态返回给给定主机;以及更新ntb规则。

13、根据本公开的另一方面,提供了一种方法。该方法包括在pcie交换机处:在装置内部的pcie分区中枚举单根i/o虚拟化(sr-iov)设备,该装置包括:多个上游pcie端口,给定的上游pcie端口用于连接到多个主机中的给定主机;以及第一下游pcie端口,该第一下游pcie端口用于连接到sr-iov设备,sr-iov设备由多个主机共享,装置提供对sr-iov设备的与sr-iov设备的物理功能(pf)相关联的多个虚拟功能(vf)的访问。该方法包括将多个vf中的第一vf仿真为面向多个主机中的第一主机的第一单独pcie设备,第一主机通过上游pcie端口中的第一上游pcie端口连接到装置。该方法包括将多个vf中的第二vf仿真为面向多个主机中的第二主机的第二单独pcie设备,第二主机通过上游pcie端口中的第二上游pcie端口连接到装置。该方法包括在多个主机与单独pcie设备之间实现pcie事务的域间桥接。