CN101452424A - 用于管理输入/输出虚拟化的方法和数据处理系统 - Google Patents

用于管理输入/输出虚拟化的方法和数据处理系统 Download PDF

Info

Publication number
CN101452424A
CN101452424A CNA2008101781332A CN200810178133A CN101452424A CN 101452424 A CN101452424 A CN 101452424A CN A2008101781332 A CNA2008101781332 A CN A2008101781332A CN 200810178133 A CN200810178133 A CN 200810178133A CN 101452424 A CN101452424 A CN 101452424A
Authority
CN
China
Prior art keywords
imp
client partitions
end points
virtual functions
iov
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.)
Granted
Application number
CNA2008101781332A
Other languages
English (en)
Other versions
CN101452424B (zh
Inventor
A·C·布朗
D·M·弗赖穆斯
R·J·雷西欧
S·M·瑟伯
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101452424A publication Critical patent/CN101452424A/zh
Application granted granted Critical
Publication of CN101452424B publication Critical patent/CN101452424B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种系统和方法,其中由多于一个逻辑分区(LPAR)共享输入/输出(I/O)架构,每个LPAR能与其他LPAR共享I/O适配器(IOA)。向每个LPAR分配其所拥有的单独的地址空间来访问被分配给它的虚拟功能(VF),使得每个LPAR的感知在于其具有其自身的独立的IOA。可在多个LPAR之间共享每个VF。通过将PF分配给I/O虚拟化管理分区(IMP),经由IOA的物理功能(PF),提供了管理IOA的共享资源的便利。运行于IMP中的代码为了充分地管理VF错误处理、VF复位和配置操作,而向多个VF充当虚拟中介。IMP也充当用于访问公共VF功能的对PF的接口。而且,由此IMP实现相对于VF和使用那些VF的客户分区的资源分配和管理的功能,所述资源分配和管理的功能通常由像系统管理器的实体完成。

Description

用于管理输入/输出虚拟化的方法和数据处理系统
技术领域
本发明大体上涉及改进的数据处理系统和方法。更具体地,本发明旨在用于通过在输入/输出虚拟化(IOV)管理分区中的虚拟中介而管理输入/输出虚拟化(IOV)适配器的系统和方法,所述输入/输出虚拟化(IOV)适配器诸如外围组件互连(PCI)IOV适配器。
背景技术
大多数现代计算设备使用利用了最初由Intel在20世纪90年代所创造的外围组件互连标准的一些版本或实现的输入/输出(I/O)适配器和总线。外围组件互连(PCI)标准规定了用于将外围设备附加到计算机主板上的计算机总线。PCI Express或PCIe是使用已有的PCI编程概念的PCI计算机总线的实现,但是使计算机总线基于完全不同而且更快速的串行物理层通信协议。该物理层不是由可在多个设备之间共享的双向总线构成,而是由恰好连接两个设备的单一单向链路构成。
图1是示出了结合有根据PCIe规范的PCI Express(PCIe)架构拓扑的系统的示例性示图。如图1所示,系统100包括耦合到根联合体(root complex)130的主处理器(CPU)110和存储器120,根联合体130接着耦合到一个或多个PCIe端点140(在PCIe规范中,使用术语“端点”来指代支持PCIe的I/O适配器)、PCI express-PCI桥150以及一个或多个互连交换机160。根联合体130表示将CPU/存储器连接到I/O适配器的I/O层级的根。根联合体130包括主桥(host bridge)、零个或更多根联合体集成端点、零个或更多根联合体事件收集器以及一个或多个根端口。每个根端口支持单独的I/O层级。I/O层级可包括根联合体130、零个或更多互连交换机160和/或桥150(其包括交换机或PCIe架构)以及诸如端点140、170和182-188的一个或多个端点。关于PCI和PCIe的更多信息,参见在www.pcisig.com的外围组件互连特别兴趣组(PCI-SIG)的网站上可获得的PCI和PCIe规范。
除了PCI和PCIe规范,PCI-SIG也已经定义了用于如何设计可由若干逻辑分区(LPAR)共享的I/O适配器(IOA)的输入/输出虚拟化(IOV)标准。LPAR是将计算机的处理器、存储器和存储设备划分为多个资源组,这样可将每个资源组用其自身的操作系统实例和应用独立地操作。可创建的逻辑分区的数量依赖于系统的处理器模型和可用的资源。典型地,将分区用于诸如数据库操作、客户/服务器操作的不同目的,以便隔离测试环境和生产环境等。每个分区能够与其他分区通信,如同其他分区位于单独的机器上。在支持LPAR的现代系统中,可在LPAR之间共享一些资源。如上文所提到的,在PCI和PCIe规范中,一种可共享的此类资源是使用I/O虚拟化机制的I/O适配器。
虽然PCI-SIG提供了用于定义如何设计可由若干LPAR共享的IOA的标准,但是此规范没有定义如何将IOA连接到主系统。而且,该标准没有规定如何管理利用了I/O虚拟化的IOA的共享的功能。这是由于PCI-SIG规范所关注的是建立用于在根联合体之下的PCIe架构的操作的标准。换句话说,PCI-SIG没有提供对用于根联合体以及其上的标准的任何定义,这是因为,将跟联合体以及其上考虑作系统室(system houses)的领域。即,例如Intel平台、IBM 平台和Sparc平台的每个可具有在PCI-SIG标准中未列出的不同的系统实现需求。
发明内容
说明性的实施方式提供了用于通过在IOV管理分区中的虚拟中介而管理输入/输出虚拟化(IOV)适配器的系统和方法。说明性的实施方式的机制解决这样的情况,其中由多于一个的逻辑分区(LPAR)共享的输入/输出(I/O)架构,以及其中每个LPAR能够潜在地与其他多个LPAR共享I/O适配器(IOA)。
特别地,利用说明性的实施方式的机制,向每个LPAR分配其自身的单独的地址空间来访问分配给它的虚拟功能(VF),以及直接接收来自被分配给它的VF的中断,使得每个LPAR的感知在于,为了常规的I/O操作的目的,其具有其自身的独立的IOA。可在多个LPAR间共享诸如PCI Express(PCIe)I/O虚拟(IOV)适配器的IOA的每个VF。通过将整个IOV适配器分配给I/O虚拟化管理分区(IMP),经由IOV适配器的物理功能(PF),说明性的实施方式的机制提供了管理IOV适配器的共享资源的便利。更特别地,运行于IMP中的代码为了充分地管理VF错误处理、VF复位和配置操作的目的而对VF充当虚拟中介(VI)。此外,为了访问公共VF功能(例如,对于网络适配器而言,用于VF的网络地址)的目的,IMP充当到PF的接口,此处将其称为适配器南侧管理。
而且,由此IMP实现相对于VF和使用那些VF的客户分区的资源分配和管理的功能,这些功能通常可由诸如系统管理器的虚拟化平台完成。此处资源分配意味着对像存储器映射I/O(MMIO)地址空间、DMA地址空间、中断等的设施的向在系统中的客户分区的分配,这些设施原本被作为资源池而与适配器的VF一起向IMP分配。
在说明性的实施方式中,提供了用于管理输入/输出(I/O)虚拟化的方法。该方法包括在数据处理系统中创建一个或多个客户分区,每个客户分区具有与数据处理系统的资源的相关联的部分,以及在数据处理系统中创建I/O虚拟化管理分区(IMP)。该方法可进一步包括由IMP标识与数据处理系统相关联的一个或多个支持I/O虚拟化(IOV)的I/O端点,由IMP将一个或多个支持IOV的I/O端点的虚拟功能分配给一个或多个客户分区,以及通过数据处理系统的系统管理器基于一个或多个客户分区的虚拟功能的分配来创建用于在IMP和一个或多个客户分区之间通信的至少一个通信结构。该方法可进一步包括,一个或多个客户分区的至少一个客户分区使用至少一个通信结构来利用一个或多个支持IOV的I/O端点的一个或者多个虚拟功能执行虚拟功能配置操作。
该方法可进一步包括:通过数据处理系统的系统管理器向IMP分配数据处理系统的资源的一部分以用于由IMP管理,以及由IMP确定分配给一个或多个客户分区的虚拟资源所需要的资源的数量。而且,该方法可包括:确定将在数据处理系统中实现的虚拟功能的数量,以及将每个虚拟功能分配给一个或多个客户分区的哪些,以及执行从一个或多个被分配了虚拟功能的客户分区到系统管理器的一个或多个调用,以便将来自资源的部分的资源分配给一个或多个客户分区。
确定将在数据处理系统中实现的虚拟功能的数量,以及将每个虚拟功能分配给一个或多个客户分区中的哪些客户分区可以包括:确定由每个所标识的支持IOV的I/O端点所支持的虚拟功能的数量,以及向用户呈现描述标识的支持IOV的I/O端点和由每个标识的支持IOV的I/O端点所支持的虚拟功能的数量的信息。确定将在数据处理系统中实现的虚拟功能的数量,以及将每个虚拟功能分配给一个或多个客户分区中的哪些客户分区,可进一步包括:接收指示了将在数据处理系统中实现的虚拟功能的数量,以及将每个虚拟功能分配给一个或多个客户分区中的哪些客户分区的用户输入。
该方法可进一步包括:由IMP请求系统管理器发起向被分配了虚拟功能的一个或多个客户分区的资源传输,在IMP中,响应于请求,接收来自系统管理器的一个或多个令牌,以及从IMP经由通信结构向一个或多个客户分区发送令牌。一个或多个客户分区可使用一个或多个令牌来从系统管理器获得资源。
可仅向IMP提供对用于在一个或多个支持IOV的I/O端点中的被分配给IMP的物理功能的配置空间、以及属于被分配给IMP的物理功能的虚拟功能的配置空间的访问。一个或多个客户分区可能无法直接访问在一个或多个支持IOV的I/O端点中的被分配给一个或多个客户分区的虚拟功能的配置空间,以及仅可使用至少一个通信结构经由IMP而访问被分配给一个或多个客户分区的虚拟功能的配置空间。IMP可允许由客户分区来访问在一个或多个支持IOV的I/O端点中被分配给客户分区的虚拟功能的配置空间,以及可阻止由客户分区访问在一个或多个支持IOV的I/O端点中的没有被分配给客户分区的虚拟功能的配置空间。
该方法可进一步包括接收来自硬件管理控制台(HMC)的输入,其指引虚拟功能对一个或多个客户分区的分配,以及指引I/O虚拟化管理操作的执行。来自HMC的输入可以是发起用于将新的支持IOV的I/O端点添加到数据处理系统的热插式操作的命令。在此情况下,执行I/O虚拟化管理操作可包括向IMP分配新的支持IOV的I/O端点,基于对新的支持IOV的I/O端点的添加而配置IMP,以及向在一个或多个客户分区中的至少一个客户分区中动态地添加新的支持IOV的I/O端点的至少一个虚拟功能。执行I/O虚拟化管理操作可进一步包括:基于对新的支持IOV的I/O端点的至少一个虚拟功能的动态添加,向在一个或多个客户分区中的至少一个客户分区分派资源,以及使用至少一个通信结构、经由IMP而配置新的支持IOV的I/O端点的至少一个虚拟功能。
来自HMC的输入可以是发起用于将已有的支持IOV的I/O端点从数据处理系统移除的热插式操作的命令。在此情况下,执行I/O虚拟化管理操作可包括标识具有将被移除的与支持IOV的I/O端点的虚拟功能相关联的资源的在一个或多个客户分区中的至少一个客户分区,从由至少一个客户分区的使用中移除虚拟功能以及与该虚拟功能相关联的资源,从由IMP的使用中移除物理功能和与物理功能相关联的资源,以及使将被移除的支持IOV的I/O端点断电。
来自HMC的输入可以是动态地重新配置数据处理系统的命令。在此情况下,执行I/O虚拟化管理操作可包括:接收对支持IOV的I/O端点的虚拟功能的选择,来向在一个或多个客户分区中的所选择的客户分区添加,创建至少一个通信结构用于在IMP中的所选择的虚拟功能以及所选择的客户分区,以及从IMP向系统管理器发送请求,来请求到所选择的客户分区传输资源。执行I/O虚拟化管理操作可进一步包括:响应于请求而在IMP中接收来自系统管理器的至少一个令牌,向所选择的客户分区提供至少一个令牌,设置用于在所选择的客户分区中所选择的虚拟功能的资源,通过所选择的客户分区使用至少一个令牌来从系统管理器获得资源,以及加载在所选择的客户分区中的所选择的虚拟功能的设备驱动。
来自HMC的输入可以是动态地重新配置数据处理系统的命令。在此情况下,执行I/O虚拟化管理操作可包括:接收对要从在一个或多个客户分区中选择的客户分区中移除的I/O端点的虚拟功能的选择,从由所选择的客户分区的进一步使用中移除所选择的虚拟功能,以及移除针对在所选择的客户分区中的所选择的虚拟功能的资源。
在其他说明性的实施方式中,提供了一种包括具有计算机可读程序的计算机可用或可读介质的计算机程序产品。当在计算设备上执行时,计算机可读程序引起计算设备来执行上文关于方法的说明性实施方式而概述的多种操作及其组合。
在另一个说明性实施方式中,提供了一种系统/装置。该系统/装置可包括一个或多个处理器以及耦合到所述一个或多个处理器的存储器。存储器可包括指令,当由一个或多个处理器执行时,所述指令引起所述一个或多个处理器执行上文关于方法的说明性实施方式而概述的多种操作及其组合。
在一个说明性的实施方式中,提供一种数据处理系统,其包括:一个或多个客户分区,每个客户分区具有数据处理系统的资源的相关联的部分,与一个或多个客户分区通信的I/O虚拟化管理分区(IMP),与IMP通信的一个或多个I/O端点,以及与IMP和一个或多个客户分区相关联地提供的至少一个通信结构。IMP可标识与数据处理系统相关联的一个或多个支持I/O虚拟化(IOV)的I/O端点。而且,IMP可将一个或多个支持IOV的I/O端点的虚拟功能分配给一个或多个客户分区。进一步地,一个或多个客户分区的至少一个客户分区使用至少一个通信结构来利用一个或多个支持IOV的I/O端点的一个或多个虚拟功能执行虚拟功能配置操作。
在下文的对本发明的示例性实施方式的详细描述中,描述了本发明的这些以及其他特征和优点,或者考虑到在下文的对本发明的示例性实施方式的详细描述,本发明的这些以及其他特征和优点将对所属领域普通技术人员变为显而易见。
附图说明
当结合附图阅读时,通过参考下文对说明性的实施方式的详细描述,将更好地理解本发明以及优选的使用模式和其进一步的目的和优点,附图包括:
图1是示出了在所属领域中周知的合并有PCIe架构拓扑的系统的示例图;
图2是示出了在所属领域中周知的系统虚拟化的示例图;
图3是示出了用于使用虚拟化层来使PCI根联合体的I/O虚拟化的第一方式的示例图;
图4是示出了用于使用本地共享PCI I/O适配器来使PCI根联合体的I/O虚拟化的第二方式的示例图;
图5是支持PCIe I/O虚拟化端点的示例图;
图6是系统结构的示例图,在该系统结构中根据一个说明性实施方式而利用了支持IOV的端点或适配器;
图7是示出了根据一个说明性的实施方式的命令/响应队列(CRQ)结构的示例性实现的细节的示例图;
图8A是示出了根据一个说明性实施方式的对示例性CRQ系统管理器事件的集合的定义的示例图;
图8B是示出了根据一个说明性实施方式的对一组CRQ客户请求连同所期待的对应响应的定义的示例图;
图8C是示出了根据一个说明性实施方式的对一组CRQ IMP请求连同所期待的对应响应的定义的示例图;
图9是示出了根据一个说明性的实施方式的一组示例性逻辑分区(LPAR)对平台固件调用的定义的示例图;
图10是示出了根据一个说明性的实施方式的一组示例性硬件管理控制台(HMC)对平台请求和响应的定义的示例图;
图11A-11B是概述了根据一个说明性实施方式的用于具有I/O虚拟化(IOV)适配器的系统的示例性“启动(bring up)”操作的流程图;
图12A-12C是根据一个说明性实施方式的概述了用于将IOV适配器添加到系统的示例性热插式操作的流程图;
图13是根据一个说明性实施方式的概述了用于将IOV适配器从系统移除的示例性热插式操作的流程图;
图14是根据一个说明性实施方式的概述了用于将虚拟功能(VF)动态地添加到逻辑分区(LPAR)的示例性操作的流程图;
图15是根据一个说明性实施方式的概述了用于将VF动态地从LPAR移除的示例性操作的流程图;
图16是根据一个说明性实施方式的概述了用于从由VF所引发的错误中恢复的示例性操作的流程图;
图17是根据一个说明性实施方式的概述了用于改变在网络适配器上的网络地址的示例性IOA南侧管理操作的流程图;
图18是根据一个说明性实施方式的概述了用于客户分区终止的示例性操作的流程图;以及
图19是根据一个说明性实施方式的概述了用于IMP分区终止的示例性操作的流程图。
具体实施方式
说明性的实施方式提供了用于通过在IOV管理分区中的虚拟中介和资源管理器而管理输入/输出虚拟化(IOV)适配器的系统和方法。因而,为了理解说明性的实施方式的机制,重要的是,首先理解在利用了系统管理器或者其他虚拟化平台的系统中如何可以实现I/O虚拟化。应当意识到,虽然关于外围组件互连快递(PCIe,Peripheral Component Interconnect Express)适配器或端点而描述说明性的实施方式,但是,本发明不限于此。而是,可以将说明性的实施方式的机制实现在支持在I/O适配器内的I/O虚拟化的任何I/O架构之内。而且,应当意识到,虽然根据利用了系统管理器的实现而描述了说明性的实施方式,但是,本发明不限于此。相反地,可使用除系统管理器之外的其他类型的虚拟化平台,而无论其是当前已知或稍后开发的以软件、硬件或软件和硬件的任何组合实现,这并不脱离本发明的精神和范围。
图2是示出了在所属领域中周知的系统虚拟化的示例图。系统虚拟化是对物理系统的处理器、存储器、I/O适配器、存储器以及其他资源的划分,其中每组资源利用其自身的系统镜像实例和应用而独立操作。在此系统虚拟化中,虚拟资源由物理资源组成,以及作为物理资源的代理,物理资源例如存储器、磁盘设备以及具有架构化的接口/功能的其他硬件组件,虚拟资源具有相同外部接口和功能。系统虚拟化典型地利用虚拟化层,该虚拟化层创建虚拟资源并将其映射到物理资源,借以提供虚拟资源之间的隔离。典型地将虚拟化层提供为软件、固件和硬件机制之一,或者软件、固件和硬件机制的组合。
如图2中所示,典型地在虚拟化系统中,应用210与系统镜像(SI)220通信,系统镜像220是诸如一般或专用操作系统的软件组件,并利用其分配特定的虚拟和物理资源。系统镜像220与虚拟系统230相关联,其包括为运行单个SI实例所必需的物理或虚拟资源,例如,虚拟化处理器、存储器、I/O适配器、存储设备等。
通过使用虚拟系统230,系统镜像220借助于虚拟化层240访问物理系统资源250。虚拟化层240管理对SI的资源分配,以及将分配给SI的资源与来自其他SI的访问隔离。通常基于由虚拟化层240执行的资源映射,以及由虚拟化层240维护的一种或多种资源映射数据结构来执行此分配和隔离。
可使用此类虚拟化来允许对I/O操作和I/O资源的虚拟化。即,关于I/O虚拟化(IOV),可由使用虚拟化层240的超过一个的SI共享单个物理的I/O单元,可将虚拟化层240部分地或完全地以系统管理器实现。系统管理器可以是软件、固件或其类似,使用其来通过干涉例如来自SI的配置、I/O和存储器操作以及去往SI的直接存储器访问(DMA)、完成和中断操作的一个或多个而支持IOV。
图3是示出了用于使用虚拟化层来使PCI根联合体的I/O虚拟化的第一方式的示例图。如图3所示,可以是芯片处理器、主板、刀片(blade)或者类似的一个或多个的主处理器组310,其可支持多个系统镜像320-330,应用(未示出)通过所述多个系统镜像320-330可访问诸如PCIe端点370-390的系统资源。系统镜像经由虚拟化层340、PCIe根联合体、以及一个或多个PCIe交换机360、和/或其他PCIe架构单元而与虚拟化的资源通信。
利用图3示出的方式,可以部分地或者完全地实现为系统管理器或者其他类型的虚拟化平台的虚拟化层340会涉及所有I/O事务,以及执行所有I/O虚拟化功能。例如,虚拟化层340将来自多种SI的I/O队列的I/O请求多路复用到PCIe端点370-390中的单个队列上。因而,虚拟化层340充当在SI320-330和物理PCIe端点370-390之间的代理。
图4是示出了用于使用本地共享PCI I/O适配器来使PCI根联合体的I/O虚拟化的第二方式的示例图。如图4所示,可以是芯片、主板、刀片或者类似的一个或多个的处理器的主处理器组410,其可支持多个系统镜像420-430,应用(未示出)通过多个系统镜像420-430可访问诸如PCIe I/O虚拟化(IOV)端点470-490的系统资源。系统镜像420-430经由PCIe根联合体440、以及一个或多个PCIe交换机460、和/或其他PCIe架构单元而与虚拟化的资源通信。
PCIe根联合体440包括促进了与支持IOV的端点470-490的I/O操作的虚拟化的根联合体虚拟化使能者(RCVE,root complexvirtualization enabler)442,其可包括一个或多个地址转换和保护表数据结构、中断表数据结构及其类似。可由PCIe根联合体440使用地址转换和保护表数据结构,来执行在虚拟地址和实际地址之间的地址转换,用于例如虚拟化的资源、基于虚拟化的资源到多个SI的映射对虚拟资源的访问控制、以及其他虚拟化操作。例如,这些根联合体中断表数据结构是通过PCIe存储器地址空间可访问的,以及用来将中断映射到与多个SI相关联的恰当的中断处理程序。
如同在图3中示出的方式,也在图4的虚拟化结构中提供虚拟化层450。连同可被耦合到PCIe交换机460的不支持IOV的PCIe端点而使用虚拟化层450。即,由于这些PCIe端点不具有对I/O虚拟化(IOV)的本地(即,在端点内部)支持,以与先前上文关于图3而描述的类似方式,由PCIe端点而利用可以部分地或完全地实现为系统管理器或者其他虚拟化平台的虚拟化层450。
对于支持IOV的PCIe端点470-490,主要使用虚拟化层450来用于配置事务的目的,以及虚拟化层450不涉及存储器地址空间操作,诸如从SI发起的存储器映射输入/输出(MMIO)操作,或者从PCIe端点470-490发起的直接存储器访问(DMA)操作。相反,在SI420-430以及端点470-490之间直接执行数据传输,而无需虚拟化层450的干涉。借助于多个RCVE 442以及支持IOV的PCIe端点470-490的内建的例如物理和虚拟功能的I/O虚拟化逻辑,使得在SI420-430和端点470-490之间的直接I/O操作成为可能。执行直接I/O操作的能力显著地增加了执行I/O操作的速度,但其需要PCIe端点470-490支持I/O虚拟化。
图5是支持PCIe I/O虚拟化(IOV)端点的示例图。如图5所示,PCIe IOV端点500包括PCIe端口510,通过PCIe端口510,可执行与PCIe架构的PCIe交换器及其类似的通信。内部路由器520对配置管理功能530和多个虚拟功能(VF)540-560提供了通信通路。配置管理功能530可以是与虚拟功能540-560相对的物理功能(PF)。作为在PCI规范中使用的术语,物理“功能(function)”是由单个配置空间所代表的逻辑组。换句话说,物理“功能”是电路逻辑,其可基于存储在存储器中的功能的相关联的配置空间的数据而被配置,使得其例如可在不可分的资源570中提供。
可使用配制管理功能530来配置虚拟功能540-560。在支持I/O虚拟化的端点内,虚拟功能是共享一个或多个例如链路的物理端点资源的功能,以及可在例如PCIe IOV端点500的可共享资源池580中用另一个功能来提供该功能。无需来自系统管理器的运行时干预,虚拟功能可以直接作为用于来自系统镜像的I/O和存储器操作的接收器,以及作为直接存储器访问(DMA)、完成以及对系统镜像(SI)的中断操作的源。
关于由PCIe端点支持的“功能”,PCIe端点可以具有许多不同类型的配置。例如,端点可支持单个物理功能(PF)、多个独立的PF、或者甚至多个相依赖的PF。在支持本地I/O虚拟化的端点中,端点支持的每个PF可与一个或多个虚拟功能(VF)相关联,其自身可依赖于与其他PF相关联的多个VF。
说明性的实施方式提供了用于使用IOV管理分区而管理诸如在图5中示出的支持IOV的PCIe端点500的输入/输出虚拟化(IOV)适配器的系统和方法。说明性的实施方式的机制尝试解决这样的情况,其中由主系统的多于一个的逻辑分区(LPAR)来共享可包括诸如在图4中的PCIe交换机460的一个或多个PCIe交换机的输入/输出(I/O)架构,以及其中每个LPAR能够潜在地与其他LPAR共享例如图4中的PCIe端点470-490的I/O适配器(IOA)。
特别地,利用说明性的实施方式的机制,向每个LPAR分配其所拥有的单独的地址空间,来访问分配给它的虚拟功能(VF),以及来直接接收来自被分配给它的VF的中断,使得每个LPAR的感知在于,为了常规的I/O操作的目的,其具有其自身的独立的IOA或I/O端点。可在多个LPAR间共享诸如PCI Express(PCIe)I/O虚拟(IOV)适配器或端点的IOA的每个VF。通过将PF分配给I/O虚拟化管理分区(IMP),经由IOV适配器/端点(后文中仅将其称为I/O端点)的物理功能(PF),说明性实施方式的机制为管理IOV适配器/端点的共享资源提供了便利。更特别地,运行于IMP中的代码为了充分地管理VF错误处理、VF复位和配置操作的目的,而向多个VF充当虚拟中介(VI)。此外,为了访问公共VF功能(例如,对于网络适配器而言,用于VF的网络地址)的目的,IMP充当到PF的接口,此处将其称为I/O端点南侧管理。
图6是系统结构的示例图,其中根据一个说明性的实施方式而利用了支持IOV的端点或适配器。可以结合在图4中示出的机制而实现在图6中示出的机制。例如,可以连同在图4中的系统镜像1420而提供在图6中示出的IMP 603,而同时可连同在图4中的系统镜像2430而提供在图6中示出的客户分区604。类似地,图6的I/O架构611可包括在图4中的PCIe交换机460,IOV端点614可类似于在图4中的PCIe端点470-490的任何一个,以及端点615和616可以或者是支持IOV的端点,或者是不支持IOV的端点,诸如在图3中的端点370-390。
如图6所示,系统601包括主系统626、I/O架构611以及一个或多个I/O端点614-616,所述主系统626可以是例如服务器、客户计算设备或其类似的任何数据处理设备,所述I/O架构611可以包括一个或多个通信链路以及一个或多个交换机,所述I/O端点614-616在一个说明性的实施方式中可以是具有作为支持IOV的端点的I/O端点614的PCIe I/O端点,而其他端点615-616可以是支持IOV或不支持IOV的端点。主系统626包括作为数据处理设备的底层硬件的平台硬件610、系统管理器625、逻辑分区(LPAR)603和604,以及对应的分区固件(PFW)623和624。虽然此处关于使用系统管理器625而描述了说明性实施方式,但是应当意识到,可利用其他类型的虚拟化平台而不脱离先前在上文提到的本发明的精神和范围。
在一个说明性的实施方式中,系统管理器625可以是在平台硬件610上执行的代码,以及是平台固件的部分。类似的,分区固件(PFW)623-624也可以是平台固件的部分,但由于在逻辑上将其考虑为在LPAR内执行的LPAR的代码的部分,因而被示出为与LPAR603和604相关联。
LPAR 603和604已经被分派了资源以及在LPAR内执行的操作系统镜像或实例。此外,LPAR 603和604可在LPAR内执行其他应用、软件、代码或者类似。例如,关于说明性的实施方式的特定重要性,例如LPAR 603的多个LPAR之一执行引起LPAR 603来作为IOV管理分区(IMP)603而操作的代码。其他LPAR604可作为客户分区而操作。为了IOV资源分配和功能管理的目的,经由命令/响应队列(CRQ)机制607-608允许IMP 603和客户分区604彼此通信,在后文中将更详细地对其进行介绍。虽然在图6中仅示出了一个IMP 603和一个客户分区604,应当意识到,在主系统626中可提供多于一个IMP 603和客户分区604,而不脱离示说明性的实施方式的精神和范围。
系统管理器625能够访问IOV端点614的配置空间619、621,以及访问I/O架构611的配置空间617。在这里所使用的术语“配置空间”指代来自存储器映射I/O(MMIO)地址空间的不相交的地址空间,分派该存储器映射I/O(MMIO)地址空间用于在存储用于系统601的特定组件的配置数据中使用。进一步地,当将多个物理功能(PF)612分配给IMP 603时,IMP的操作系统631和设备驱动605能够访问用于多个物理功能(PF)612的配置空间619,以及能够访问属于被分配给IMP 603的PF的多个虚拟功能(VF)的配置空间621。客户分区操作系统632和设备驱动606不能够直接访问被分配给它们的多个VF的任何配置空间621,以及因此,必须通过CRQ机制607-608以及IMP 603来访问这些配置空间621。通过阻止客户分区对VF配置空间621的访问,在IMP 603中的软件充当中介,或者更特别地,充当虚拟中介(VI)来确保允许客户分区604访问配置空间621。通过该方式,IMP 603向客户分区604提供对为恰当地操作它们的VF 613所需要的配置空间621的访问,但不向客户分区603提供对将引起有关其他客户分区的问题的配置空间的访问。即,客户分区604仅访问被分派给其VF 613的配置空间。
在硬件管理控制台(HMC)609上的管理应用640以及HMC 609自身,通过到IMP 603和客户分区604的远程管理命令(RMC)接口602,以及通过到系统管理器625的相同类型的接口620进行通信,硬件管理控制台(HMC)609可驻留于主系统626上或(如所示的)在单独的数据处理设备中。管理应用640(在下文中,将其连同HMC609而一并简单地用HMC 609指代)充当指挥者(orchestrator)来控制在系统601中的多种组件中的功能性,并向人们提供用户接口642来查看系统配置,以及来输入有关他们希望将何种资源分配给哪些LPAR 603-604的信息。管理应用640可提供可由用户根据下文更详细的描述而调用的许多不同功能。可选地,响应于触发了对此类功能的发起的事件或输入,可自动调用这些功能而无需用户干预。
如同上文所提到的,客户分区604必须与IMP 603通信,以便访问它们的在支持IOV的端点614中的虚拟功能(VF)613的配置空间621。为了提供用于此类通信的接口,利用了命令/响应队列(CRQ)机制607和608。这些CRQ机制607和608包括发送和接收队列,通过它们发布(post)和接收命令/响应(C/R)请求。
图7是示出了根据一个说明性的实施方式的命令/响应队列(CRQ)结构的示例性实现的细节的示例图。存在许多可以实现CRQ结构的方式,而图7仅呈现出此类结构的一种说明性实施方式。可利用在图6中的系统管理器625连同向IMP 603和客户分区604二者提供的系统管理器接口(未示出)而实现CRQ 701,以允许将在LPAR 603-604之间的请求排入队列。
如图7所示,并且继续参看图6,由接收队列704-705以及可能的发送队列702-703组成CRQ 701,向每个通信方向(即,从IMP 603到客户分区604,以及从客户分区604到IMP 603)的给出接收队列704-705的一个,发送队列702-703用于每个通信方向。IMP 603可通过向IMP关联的发送队列702发布C/R请求706,来向客户分区604发送C/R请求。此外,系统管理器625可发布涉及在接收队列704上的发送队列操作的事件713,接收队列704与特定客户分区604相关联。当在接收队列704上排队了事件713或C/R请求706,并且先前队列为空时,向客户分区604发送中断707。当经由客户分区604的CRQ接口而接收了中断707时,客户分区604可以通过利用由系统管理器625提供的客户获得命令/响应接口708读出所有的条目(引起中断的条目,以及任何接下来被添加的条目)。
类似地,在相反的方向上,客户分区604可在CRQ结构701中向与客户分区604相关联的发送队列703发布C/R请求709。系统管理器625也可以向与IMP 603相关联的接收队列705发布事件712。当在接收队列705上排队了事件712或C/R请求709,并且队列先前为空时,将中断710发送给IMP 603。响应于中断710,IMP 603可使用系统管理器625接口的客户获得命令/响应接口715而从接收队列705取回其C/R请求。
应当指出,客户和IMP“获得(get)”接口是用于接收队列而不用于发送队列。将发送队列向发送接口呈现。根据由从发送队列到接收队列的箭头所指出的,将由一端向发送队列所发布的一些数据传送到在另一端的接收队列。发送队列是可选的,因为系统管理器可获得请求,并将它们直接推入接收队列,而替代使用实现发送队列的中间步骤。
图8A是示出了根据一个说明性实施方式的一组对示例性CRQ系统管理器事件的定义的示例图。图8B是示出了根据一个说明性实施方式的对一组CRQ客户请求连同所期待的对应响应的定义的示例图。因而,图8A-8B提供了事件和客户请求的类型的例子,可将其向在图7中的CRQ结构701的发送和接收队列发布。由于可向与接收队列相关联的客户或IMP发布CRQ事件,因而CRQ事件涉及“合作者(partners)”。“合作者”是在IMP和客户分区之间的经由CRQ结构的连接中的另一方,其不是与接收队列相关联的被向其发布事件的一方。
如图8A所示,“合作者分区连接”事件802是一种通知方式:例如在图6中的系统管理器625的系统管理器通知例如在图6中的IMP603的IMP以及在图6中的客户分区604的客户分区,在IMP 603和客户分区604之间的连接的两端已经准备好。应当意识到,当在系统管理器625中初始化CRQ结构时,在IMP 603和客户604之间建立“连接”。响应于事件802,客户分区604将IMP的状态改变到“连接”状态,以及对于初始连接,客户分区604可加载设备驱动用于在CRQ和IMP之间的通信,以及潜在地用于获得VF资源。IMP 603也响应于事件802,来将在IMP 603的存储器中的客户分区604的状态改变为“连接”状态,以及对于初始连接,可向客户分区604传送可用资源。
“合作者分区失效”事件804通知接收此事件804的IMP 603或客户分区604:连接的另一端或另一侧不再可用,并且必须恢复,例如连接的另一侧已经崩溃且正处于重新引导过程中。在此情况下,期待合作者返回,以及期待在其接收队列中所接收事件804的分区(即,IMP 603或客户分区604)等待合作者分区连接事件802,以及接着重新建立通信链路。响应于“合作者分区失效”事件804,客户分区604通过将IMP 603的状态改变为“未连接”状态来进行响应。VF613可由客户分区604继续使用,直到为了例如访问VF配置空间621而需要CRQ链接。如果在需要CRQ链接时,IMP 603的状态是“未连接”,即在同时没有接收到“合作者分区连接”事件802,那么进入错误恢复状态。通过将客户分区604的状态改变为“未连接”状态,IMP 603做出响应。
“合作者分区终止连接”事件806通知连接的一侧或一端:由于一些原因,连接的另一侧或另一端已经故意地关闭了该连接,或者系统管理器625已经检测到崩溃并且没有期待的重新引导。在任一种情况下,对“合作者分区终止连接”事件806的接收方将不期待合作者会返回。响应于此事件806,客户分区604终止VF使用,并向其错误日志发布错误事件。IMP 603通过请求系统管理器625废除已经针对VF而分配给客户分区的资源,而做出响应。
现在移向图8B,如果所做出的任何请求是无效的,那么在图8B中的客户端到IMP的请求,包括来自IMP 603的错误响应812。例如,如果存在创建了无效请求或者包括诸如无效地址的用于请求的无效参数的编程错误,则这可能发生。
在图8B中的客户到IMP请求进一步包括配置请求814,由客户分区604使用该配置请求814,来使与客户分区604相关联的IMP 603代表客户分区604来执行在支持IOV的适配器/端点614的VF和PF的配置空间上的配置读操作。类似地,客户到IMP请求进一步包括配置写请求816,由客户分区604使用该配置写请求816来使与客户分区604相关联的IMP 603代表客户分区604,来执行对支持IOV的端点614的VF和PF的配置空间的配置写操作。利用这些请求814和816,IMP 603充当用于配置请求的中介,以及如果访问支持IOV的适配器/端点614的VF和PF的配置空间将危及其他客户分区(例如,VF和PF与被发送请求的客户分区604并无关联),则不允许这样做。将关联的恰当范围作为初始配置操作的部分,其中系统管理器625将与每个CRQ 607和608相关联的I/O配置结构传送到IMP603,该范围描述了对于每个CRQ 607、608,哪些是有效的配置地址范围等。如果访问将危及其他客户分区的安全,则由IMP 603返回错误结果。如果访问不会危及其他客户分区的安全,那么执行读/写操作,以及从IMP 603向客户分区604返回结果。
客户分区604可以进一步地发出复位VF请求818,来使用例如功能级复位(FLR,Function Level Reset)而使IMP 603复位与客户分区604相关联的VF。
客户分区也有一组其可以做出的错误处理请求。“查询VF的错误状态”请求820请求IMP 603通知客户分区604是否VF遭遇了错误。IMP 603响应是将返回错误状态,或者如果诸如由于不允许客户分区604访问VF的配置空间而无法返回错误状态信息,则将向客户分区604返回错误响应。
“允许对VF的加载/存储”请求822请求IMP 603允许解除阻止对VF的MMIO加载和存储操作,如当VF处于错误状态时。这允许设备驱动606在错误之后能够向其VF发出MMIO加载操作,来尝试收集来自VF的关于可能发生了什么的信息、以及标识了哪些操作可以重启而哪些操作不能被重启的信息。IMP 603响应是将从MMIO错误状态移除VF,以及返回成功响应,或者如果诸如由于不允许客户分区604来访问VF的配置空间而无法从MMIO错误状态移除VF,则返回错误响应。
“获得I/O架构错误信息”请求824请求IMP 603允许客户分区604从其VF中不仅获得错误信息,还允许其捕获调试数据或将允许用于更好的故障隔离的数据。假定允许客户分区604来访问此数据,则IMP 603响应是收集架构错误寄存器数据并向客户分区604返回该数据。如果不允许客户分区604来访问此类数据,那么返回错误响应。
HMC 609也可以组织(orchestrate)从客户分区604动态移除VF。“由于动态移除命令造成VF操作终止”请求826是用于适度地终止客户分区到IMP的通信的方式。响应于来自客户分区604的请求826,IMP 603确认请求826,请求系统管理器625废除其先前请求系统管理器625分配给客户分区604的资源,以及停止使用CRQ608与客户分区604通信。
最后,可能有需要从客户分区的设备驱动606向在IMP 603中的设备驱动605传送的独特的设备驱动信息,客户分区的设备驱动606与VF相关联,因而被称为“VF驱动”,而在IMP 603中的设备驱动605与PF相关联,因而被称为“PF驱动”。VF驱动到PF驱动通信的请求828允许其以对平台固件和系统管理器625透明的方式发生。
如果做出的任何请求是无效的,那么在图8C中的IMP 603到客户分区604请求包括来自客户分区604的错误响应852。例如,如果有创建了无效请求或者包括诸如无效地址的用于请求的无效参数的请求的编程错误,这可能发生。可由IMP 603使用资源可用请求854来从IMP 603向客户分区604传送对资源的控制。例如,当将VF从IMP的控制下重新分配为受客户分区的控制时,IMP 603可向客户分区604传送对用于VF的MMIO地址空间、用于VF的DMA地址空间、用于VF的中断等等的控制。IMP 603通过使用资源可用请求854来向代表此资源的客户分区604传送一个或多个令牌来实现这一点。根据后文将描述的,例如,通过IMP 603向系统管理器625请求代表该资源的令牌,可以获得令牌。客户分区604对资源可用请求854的响应是保存所传递的令牌用于将来的使用,以及调用系统管理器625而将令牌传送给系统管理器625,使得系统管理器625可以从IMP的资源到客户分区的资源而重新映射资源。而且,在接收资源可用请求854之后,接着,客户分区604可以经由CRQ机制608而查询与CRQ 608相关联的VF配置空间,以及加载用于VF的例如设备驱动606的设备驱动。
当IMP 603需要将其已经重新分派给客户分区604的资源放回其自身的资源池时(例如,用于支持IOV的适配器/端点615的热插式操作),IMP 603可向客户分区604发送返回资源请求856。客户分区的响应是停止使用VF,通过CRQ机制608请求对VF的复位,移除用于VF的例如设备驱动606的设备驱动,从OS的架构配置中移除VF,以及调用固件来从客户分区604中移除VF。
再一次地,可由系统管理器625发布在图8A中的事件800来接收在IMP 603和客户分区604中的CRQ结构607和608的队列。可由客户分区604在其CRQ结构608的发送队列中发布图8B的客户请求810,以便被经由其CRQ结构607的接收队列而向IMP 603发送。可由IMP分区603在其CRQ结构607的发送队列中发布图8C的IMP请求850,以便被经由其CRQ结构608的接收队列而向客户分区604发送。后文将详细地描述这些CRQ系统管理器事件800、CRQ客户命令810和CRQ IMP请求850的使用的例子。
图9是示出了根据一个说明性的实施方式的一组示例性逻辑分区(LPAR)对平台固件调用的定义的示例图。特别地,图9示出了可用于实现说明性的实施方式的多个方面的示例性平台固件调用900,以及示出了这些调用应用于哪些分区(客户或IMP)。例如,可由分区603或604来执行对在图6中的相关联的平台固件623或624的这些调用。后文在对图11A-19中的多个附图的描述中,将给出这些LPAR对平台固件调用900的使用的例子。
如图9所示,对合作者LPAR的CRQ的添加命令(请求)或响应的调用902是用于在CRQ 607或608上发送命令/请求或响应的调用。可由客户分区604或IMP 603使用此调用。从CRQ获取命令(请求)或响应的调用904是用于使下一个排队的命令/请求或响应离开CRQ 607或608的队列的调用。
调用906-916的组是由IMP 603为了访问对客户分区604并非直接可用的设施的目的而使用的。因而,如图9所示,客户分区604无法使用这些调用,而IMP 603可使用这些调用。在IMP 603中的代码内使用这些调用906-916,其确保在CRQ 607上排队的请求来自于客户分区604,或者在通常的PF控制和恢复中使用这些调用906-916。由IMP 603使用读/写I/O配置空间调用906,来代表客户分区604执行对VF的配置空间的读或写操作。例如,响应于从具有访问目标VF的许可的客户分区604接收在图8B中的请求814或816,可由IMP 603做出此类调用。
复位PF调用908是可由IMP 603做出的多个PF专用调用之一。此调用使PF复位,以及作为结果,也使与该PF相关联的所有VF复位。当做出此调用时,IMP 603必须首先使用禁用VF调用910,来禁用与该PF相关联的所有VF,使该PF复位,以及继而,将所有的VF配置恢复到它们在PF复位之前的样子。
禁用VF调用910通知平台固件来禁用对VF的任何进一步的MMIO操作,以及防止来自VF的直接存储器访问(DMA)和中断到达客户分区604。存在大量方式来实现这一点,以确保数据完整性问题不会发生。在一个说明性的实施方式中,可这样设计硬件,使得如果客户分区604尝试执行来自其VF的MMIO加载操作,则客户分区604可如同VF不存在那样接收到所返回的全1的数据。当不期望全1的数据时,期待设备驱动606来检查全1的数据,以及期待设备驱动606来使用对于VF CRQ的查询错误状态的请求820,来验证全1是否代表错误状态。如同在上文描述的,以及后文进一步描述的,期待在错误恢复情况下主要地使用禁用VF调用910,以及因而,禁用VF调用910可调用例如设备驱动606的VF驱动,来进入其自身的恢复。
查询PF和VF错误状态调用912是对平台固件的调用,其允许IMP 603获得为满足对于VF CRQ的查询错误状态的客户请求820所必需的信息。调用912也允许例如设备驱动605的PF驱动,来用对VF可用的PF完成等同的错误恢复。
为了获得用于错误恢复的平台错误数据,提供了用于加载和存储操作的使能PF和VF的调用914和查询I/O架构错误信息调用916。提供前者用于实现对VF CRQ的使能加载/存储客户请求822,以及后者用来实现获得I/O架构错误信息CRQ客户请求824。而且,可由IMP 603使用它们来用于PF错误恢复。
在所有中断上使用查询中断源调用918来得到中断源,以便虚拟化中断控制器。因而,如图9所示,可由客户分区604和IMP 603二者使用查询中断源调用918。
使用建立DMA转换调用920来建立用于将I/O地址转换为系统地址的转换机制。此地址转换机制是为I/O虚拟化所需要的。由于PF一般无需做出到IMP 603的DMA操作,因此可由客户分区604而非通常的IMP 603使用建立DMA转换调用920。
可由IMP 603而非客户分区604使用从LPAR使用中添加/移除适配器调用922。不允许客户分区604以任何方式改变IOV适配器/端点,以及因而,客户分区604无法使用从LPAR使用中添加/移除适配器的调用922,这是因为允许客户分区604这样做可能造成对于与PF相关联的其他客户分区相关联的VF的安全性问题。
调用924-932的组是由IMP 603和客户分区604为了在IMP 603和客户分区604之间来回地传送资源的目的而使用的调用。如在900中指出的,仅有一个或其他分区可使用这些调用924-932的每个。由IMP 603使用准许逻辑资源调用924来将资源传送给将被重新分配给客户分区604的系统管理器,以及接下来,系统管理器625传回诸如数字的被称为令牌的标识符。继而,例如,通过经由资源可用CRQ IMP请求854传送令牌,IMP 603将此令牌传送到将接收资源的客户分区604。继而,客户分区604使用接受逻辑资源926调用来将所接收的令牌传送给将来自IMP 603的资源重新分配给客户分区604的系统管理器625。
例如,在后文中将详述的VF移除操作,返回逻辑资源调用928允许客户分区604放弃其不再需要的资源。废除逻辑资源(普通)930和废除逻辑资源(强制的)调用932,允许IMP 603来收回它起初送交给客户分区604的资源。使用普通调用930来收回客户分区已经经由返回逻辑资源调用928而返回的资源。在错误状况下使用强制调用932,错误状况是客户分区604或者例如通过编程错误而拒绝放弃控制,或者处于像客户分区崩溃的情况中。强制调用932告知系统管理器625来从客户分区使用中移除资源,而不顾对客户分区604造成的后果。例如,强制调用932可能导致客户分区604崩溃。因而,仅在不寻常的情况下使用强制调用932。
图10是示出了根据一个说明性的实施方式的一组示例性硬件管理控制台(HMC)到平台请求和响应的定义的示例图。特别地,图10示出了示例性的HMC到平台固件的请求/响应1000,以及标识了在系统中期待向哪个组件做出此请求,以及所期待的组件的响应。例如,可通过在图6中的HMC 609,经由接口602和620中的一个或多个而做出这些调用。例如,如果HMC 609做出目标为IMP 603或者客户分区604的调用,那么HMC 609可经由RMC接口602做出调用。如果HMC 609正在做出目标为系统管理器625的调用,那么,可经由接口620做出调用。后文将关于图11A-19中的多个附图而更详细地提供这些HMC到平台请求/响应1000的使用的例子。
如图10中所示,通过使用查询I/O架构配置(系统管理器)请求1002,可就I/O架构配置而查询系统管理器625。由HMC 609,例如,在初始系统启动(bring up)时,可使用此请求1002来获得所有可用的I/O设备,这样可将其向用户呈现用于选择和对用户希望配置的多种LPAR的分配。
可通过使用查询I/O架构配置(IMP)请求1004而就I/O架构配置来查询IMP 603。在例如向IMP 603分配了IOV适配器614,以及IMP 603有时间来确定IOV适配器614上的IOV能力之后,可由HMC609使用此查询I/O架构配置(IMP)请求1004,来获得在IOV适配器614之上的所有可能的I/O PF和VF,这样可将其向用户呈现用于选择以及将VF对用户希望配置的多个LPAR的分配。
由HMC 609使用设置LPAR I/O配置请求1006,来通知系统管理器625在HMC 609的用户已经决定配置什么。此配置不仅包括I/O配置,而且包括LPAR配置特性,诸如在系统中被分配给多种LPAR的存储器的数量以及被分配的CPU的数量。
由HMC 609使用对客户分区分配设置初始VF的请求1008,来通知IMP 603在HMC 609的用户已经决定配置什么。此配置包括对当前为IMP 603所拥有的VF资源向多种客户分区604的重新分配。响应于此,IMP 603使IOV适配器614的IOV能力有效,以及执行操作来与特定客户分区604共享VF资源。
当对I/O适配器或端点加电或断电时,也可以由HMC 609通知系统管理器625或IMP 603。通过对IOA加电/断电的请求1010可实现这一点。
存在HMC到平台的多种请求1012-1016,由HMC使用这些HMC到平台请求1012-1016来指引IOV适配器614到系统601的动态添加,或者VF到客户分区604的动态添加,即,动态添加在系统正在操作时并且在初始配置之后。由HMC 609来使用对IOV适配器的动态分配的请求1012,来通知系统管理器625来向IMP 603分派IOV适配器614以及为操作该适配器所必需的系统资源(例如,MMIO地址空间、DMA地址空间和中断)。
一旦系统管理器625已经完成了对IOV适配器请求1012的动态添加,则可就任何添加通知IMP 603。向IMP动态添加IOV适配器的请求1014向IMP 603通知新的IOV适配器614将被添加。如同后文将讨论的,当例如将I/O适配器或端点热插式地添加到系统时,这可能发生。此请求1014通知IMP 603来将IOV适配器添加到其架构配置,初始化PF配置空间,以及加载PF设备驱动。
向IMP 603动态添加/移除VF的请求1016,就存在可用的VF将被添加或者到了移除先前被分配给客户分区604的VF的时间,而通知IMP 603:添加或移除用于VF的资源(例如,CRQ机制以及为支持特定VF所必需的任何支持结构),以及开始或终止经由CRQ机制的与客户分区604的通信。
存在HMC到平台的若干请求1018-1020,由HMC 609使用所述请求1018-1020来指示从系统中动态移除IOV适配器(即,当系统运行的时候,并且在初始配置之后)。由HMC 609使用动态移除IOV适配器(系统管理器)的请求1018,来通知系统管理器625从IMP中移除用于IOV适配器的资源,例如,所分配的MMIO地址空间、DMA地址空间和中断。
动态移除IOV适配器(IMP)的请求1020通知IMP 603 IOV适配器将被移除。如上所述,在发出此请求之前,HMC 609必须从使用中的客户分区604移除与PF相关联的所有VF。例如,当从系统中热插式地移除I/O适配器或端点时,可能发生移除IOV适配器。此请求1020通知IMP 603来停止使用PF,通过复位调用908来请求对PF的复位,移除设备驱动,以及从OS的架构配置中移除PF。
IMP 603的重要功能是提供对I/O适配器或端点的资源的安全访问,所述I/O适配器或端点或者在使用与PF相关联的多个VF的多个LPAR之间共享,或者对于VF是唯一的,但针对由PF进行的改变,该VF应该是不可访问的。网络I/O适配器或端点的此类资源的一个例子是与由多个VF共享的PF相关联的网络地址,或者对于VF而言唯一的网络地址。此处将对这些设备专用资源的管理称作对I/O适配器或端点的“南侧”管理。由I/O适配器(IOA)或端点、南侧管理请求1022通过HMC 609实现这一点,并且所有此类管理通过在HMC 609上的安全应用(例如登录应用或者其他认证应用)得到保护。当IMP603接收用于IOA的IOA南侧管理请求1022时,IMP603向用于PF的设备驱动605传送请求,以及设备驱动605通过PF接口向IOA做出设备特定请求,以便实现此请求。
通过使用查询先前的命令完成和状态请求1024来向原始请求的目标做出所有的HMC到平台请求1000的当前状态。这允许HMC 609来协调一系列的HMC请求,以及通过HMC接口就先前请求的状态指示用户。由于完成一些操作是相当慢的,因而可做出此类请求,并且希望能够访问此类请求的当前状态。
现在,当前的描述转向对上文在图8A-10中示出的多种请求和调用的使用的更详细的解释。图11A-19是概述了说明性的实施方式机制的多种操作的流程图。可由例如在图6中描绘的HMC、系统管理器、CRQ结构、IMP、客户分区、平台固件/硬件、I/O端点及其类似等的多种机制实现在图11A-19中概述的操作。因而,适当的时候将对图6的单元进行参考,以作为说明性的实施方式的机制的一个例子,该实施方式可参与在图11A-19中概述的操作的执行。
应当理解,可由计算机程序指令实现流程图示的每个方块、以及在流程图示的多个方块的组合。可向处理器或其他可编程数据处理设备提供这些计算机程序指令来产生机器,使得在处理器或其他可编程数据处理装备上执行的指令创建用于实现在一个或者多个流程方块中描述的功能的装置。也可在计算机可读存储器或存储介质上存储这些计算机程序指令,所述计算机程序指令能够指引处理器或其他可编程数据处理设备来以特定方式工作,使得存储在计算机可读存储器或存储介质中的指令产生包括实现在一个或者多个流程方块中描述的功能的指令装置的制品。
因而,流程图示的多个方块支持用于执行特定功能的装置的组合、用于执行特定功能的步骤的组合、以及用于执行特定功能的程序指令装置。也应当理解,通过执行特定功能或步骤的基于专用硬件的计算机系统,或者通过专用硬件和计算机指令的组合可以实现流程图示的每个方块,以及在流程图示中的方块的组合。
进一步地,提供流程图来示出在说明性的实施方式中执行的操作。流程图并不意味着声明或暗示关于特定操作或更具体地操作的顺序的限制。可调整流程图的操作来适应特定实现,而不脱离本发明的精神和范围。
图11A-11B是概述了根据一个说明性实施方式的用于具有I/O虚拟化(IOV)适配器的系统的示例性“启动(bring up)”操作的流程图。如图11A所示,初始的I/O架构启动操作1100开始于对被执行的I/O架构加电(步骤1102)。响应于对I/O架构的加电,系统管理器625可通过诸如探查I/O架构611的配置空间来发现耦合到I/O架构611的所有I/O适配器614-616(步骤1104),以及其中通过诸如检测IOV配置空间所发现的适配器是IOV适配器614(步骤1106)。
继而,系统管理器625可向HMC 609报告其已经从探查I/O配置空间而收集的所有信息(步骤1108),用于诸如向用户呈现。继而,用户可向多个LPAR分配资源,或者向自由资源的可用池分配资源。所报告的信息可包括例如用户为做出关于在I/O架构和端点中有什么的决策所需要的信息,包括诸如卖主ID和设备ID的项。
现在轮到在HMC 609的用户来确定他们希望如何分派所有的系统资源。注意,也可通过运行在HMC 609中的自动化脚本或者用于向系统601的逻辑分区分配或分派系统资源的任何其他自动化机制而不是人工机制来完成这一点。因而,在示例性的实施方式中,HMC609向用户呈现所收集的I/O架构和端点信息(步骤1110),以及用户指定将如何分派这些资源(1112)。此分派不仅包括I/O,而且也包括诸如处理器和存储器的其他系统资源。一旦用户已经做出对资源的分配,将向系统管理器625报告这一情况(步骤1114)。
继而,系统管理器625可设置每个分区的资源,包括MMIO寻址、DMA寻址、中断及其他资源(步骤1116)。系统管理器625无需例如通过彻底地探查将被分配给分区的适配器而事先知道适配器将需要多少资源,以及因而系统管理器625可仅向每个适配器分配足以覆盖特定系统所关心的所有适配器的资源,所述资源可称作资源“块(clump)”。由于IOV适配器一般比非IOV适配器需要更多的资源,上文做出的适配器是否是IOV适配器的确定,可确定将向适配器分配多少资源。若资源可用,则每个LPAR必须尝试处理向被分配给它们的适配器给出的那些资源,以及基于向获得了分配的IOV适配器614所分配的资源的数量,IMP 603不会处于异常。系统管理器625未向LPAR分配足够的资源用于所分配的适配器,其结果可导致LPAR无法使用被分配的适配器中的一些。
系统管理器625引导用于(多个)IMP 603的分区固件,以及向(多个)IMP 603传送关于向每个IMP 603分配(多个)IOV IOA中的哪个(哪些)的信息,以及继而引导用于每个IMP 603的OS(步骤1118)。IMP OS发现多个IOV IOA、为每个IOV IOA所支持的PF和VF的数量、为所有VF所需要的资源、以及任何系统资源限制,例如,可用的MMIO地址空间、可用的DMA地址空间、或者可用的中断的数量(步骤1120)。
对于所有的适配器,IMP 603向HMC报告HMC或在HMC的用户所需要的信息,来确定如何配置IOV适配器,例如卖主ID、设备ID、可支持的PF的数量以及可支持的VF的数量(步骤1122)。例如,通过查询I/O架构配置(IMP)请求1004而向HMC报告此信息。关于可支持的数量的信息可受适配器可用的资源的限制,类似于地址空间限制或可用的中断的数量。
HMC向正在配置系统的用户呈现此信息,以及用户确定有多少VF将被使用,以及哪些VF被分配给哪些客户分区(步骤1124)。HMC将来自用户的IOV信息向系统管理器呈现,继而系统管理器创建为从(多个)IMP到(多个)客户分区的链接所必需的CRQ数据结构(步骤1126)。例如,由设置LPAR I/O配置请求1006来完成此呈现。
在图11B中此过程继续,其中HMC将来自用户的信息向(多个)IMP呈现,继而其用恰当的VF数量配置它们的IOV适配器,以及初始化将被使用的CRQ以便与将接收VF的客户分区通信(步骤1128)。例如,由对客户分区分配设置初始VF的请求1008来完成此呈现。
继而,系统管理器625可引导用于(多个)客户分区604的分区固件624,以及可向(多个)客户分区604传送I/O配置结构用于由在那些LPAR中的OS使用(步骤1130)。当向(多个)客户分区604分配(多个)VF613时,系统管理器625可阻止从(多个)客户分区604到它们的(多个)VF 613的任何I/O配置访问(步骤1132)。
继而,可加载用于(多个)客户分区604的OS(步骤1134)。(多个)客户分区604可加载用于它们的(多个)CRQ 608的设备驱动606,以及发起同与CRQ相关联的IMP的通信(步骤1136)。在客户分区604已经发起了经由CRQ到IMP 604的通信之后,IMP请求系统管理器发起到客户分区的资源传输,传输例如MMIO地址空间、也被称为DMA窗口的DMA地址空间、中断到接收VF的客户分区(步骤1138)。例如,由准许逻辑资源调用924完成这一步骤。此调用向IMP 603返回来自系统管理器625的令牌,IMP 603呈现将被传输的资源。在此时刻,没有将这些资源实际地传输到客户分区604。
IMP 603经由相关联的(多个)CRQ,向客户分区604发送在上一步骤获得的资源令牌以及VF的卖主ID和设备ID(步骤1140)。客户分区经由CRQ使用从IMP所传送的令牌,以及调用系统管理器625来将被传送的相关联的资源分配给它们(步骤1142)。例如,通过使用接受逻辑资源调用926和传送在上一步骤中所获得的令牌而实现这一步骤。代表资源的此令牌,向系统管理器提供了为映射因使用所必需的对应资源而必需的信息,以便使用被分配的VF。
客户分区604使用经由CRQ而传送给它的卖主ID和设备ID,加载用于VF的设备驱动606(步骤1144),以及例如经由配置读CRQ请求814和配置写CRQ请求816通过CRQ机制经来请求配置访问以便配置其VF 613(步骤1146)。继而,设备驱动606可开始使用其VF 613。继而操作终止。
一旦系统启动且可运行,希望能够向系统动态地添加新的I/O适配器或端点。图12A-12C是根据一个说明性实施方式概述了用于将IOV适配器添加到系统的示例性热插式操作的流程图。如图12A-12C所示,热插式添加操作1200开始于在HMC控制台609的用户开始热插式应用(步骤1204),热插式应用提供用户接口来指引用户完成热插式操作。从热插式应用中,用户或应用可选择在I/O架构611中的空I/O插槽,来向该空I/O插槽插入新的I/O适配器或端点,例如I/O端点614(步骤1206)。继而,用户可插入新的I/O适配器(IOA)或端点(步骤1208),以及HMC 609报告IOA已经被插入(步骤1210)。所属领域技术人员意识到,通过将新的IOA插入到未使用的插槽中,以及使系统自动地调用热插式应用,能够自动地调用用于诸如PCIe的I/O总线的热插式应用。HMC 609继而可向系统管理器625发送消息来对IOA加电,以及可获得其配置信息(步骤1212),以及操作继续到图12B中的步骤1214。
以类似的方式,系统管理器625在初始的架构启动操作1100中收集信息,系统管理器625可发现IOA(步骤1214),以及可向HMC609报告IOA配置信息(步骤1216)。
HMC 609可向用户呈现配置信息(步骤1218)。用户可指定将所添加的IOV适配器分配给哪个IMP(步骤1220),以及HMC 609可向系统管理器625报告此资源分派(步骤1222),以及系统管理器625可创建用于新的IMP 603的分区,以及可建立IMP资源,例如MMIO寻址、DMA寻址和中断(步骤1224)。
由于在上文描述的初始情况中,系统管理器625无需例如通过彻底地探查将被分配给IMP 603的IOV适配器而事先知道IOV适配器将需要多少资源。因此,系统管理器625可仅向每个IOV适配器分派足以覆盖特定系统所感兴趣的所有的IOV适配器的资源,即,资源的部分或“块(clump)”。当资源可用时,IMP 603必需尝试处理向被分配给它们的适配器给出的那些资源。系统管理器625未向IMP 603分配足够的资源用于所分配的适配器,其结果可导致LPAR无法使用被分配的适配器。
系统管理器625引导用于IMP 603的分区固件,以及向IMP 603传送关于将哪个IOV IOA分配给它的信息,以及继而引导用于每个IMP 603的OS(步骤1226)。IMP OS发现多个IOV IOA、为每个IOV IOA所支持的PF和VF的数量、为所有VF所需要的资源、以及任何系统资源限制,例如,可用的MMIO地址空间、可用的DMA地址空间、或者可用的中断的数量(步骤1228)。
对于新的IOV适配器,IMP 603向HMC 609报告为HMC 609或在HMC 609的用户所需要的信息,来确定如何配置IOV适配器,例如,卖主ID、设备ID、所支持的PF的数量以及所支持的VF的数量(步骤1230)。例如,通过查询I/O架构配置(IMP)请求1004而向HMC 609报告此信息。关于可支持的数量的信息可由对适配器可用的资源所限制,类似于地址空间限制或可用中断的数量。
HMC 609向正在配置系统的用户呈现此信息,以及用户确定有多少VF将被使用,以及使哪些VF被分配给哪些客户分区(步骤1232)。HMC 609将来自用户的IOV信息向系统管理器625呈现,继而系统管理器创建为从IMP 603到(多个)客户分区的链接所必需的CRQ数据结构(步骤1234)。例如通过设置LPAR I/O配置请求1006而完成此呈现。
在图12C中,该过程继续,在此处HMC向IMP 603呈现来自用户的信息,IMP 603继而用恰当数量的VF配置IOV适配器,以及初始化将被使用的CRQ来与将接收VF的客户分区通信(步骤1236)。例如,通过对客户分区分配设置初始VF的请求1008来完成此呈现。
现在,HMC 609可向(多个)客户分区604发出动态添加VF的请求1016,该(多个)客户分区604将从新的IOA 614接收VF 613。这开始了客户分区604处理来添加(多个)VF(步骤1238)。(多个)客户分区604可加载用于它们的(多个)CRQ 608的设备驱动606,以及发起同与(多个)CRQ 608相关联的IMP 603的通信(步骤1240)。在客户分区604已经经由CRQ发起了到IMP 603的通信之后,IMP 603请求系统管理器625发起到客户分区604的资源传输,例如,传输MMIO地址空间、也被称为DMA窗口的DMA地址空间、以及中断到接收VF的客户分区(步骤1242)。例如,由准许逻辑资源调用924完成这一步骤。此调用向IMP 603返回来自系统管理器625的展现将被传输的资源的令牌。在此时刻,尚未将这些资源实际地传输到客户分区604。
IMP 603经由相关联的(多个)CRQ,向客户分区604发送在上一步骤获得的资源令牌以及VF的卖主ID和设备ID(步骤1244)。客户分区604使用经由CRQ而被从IMP传送的令牌,以及调用系统管理器625来将被传送的相关联的资源分配给它们(步骤1246)。例如,通过使用接受逻辑资源调用926和传送在上一步骤中所获得的令牌而实现这一步骤。展现资源的此令牌向系统管理器提供了为映射因使用所必需的对应资源而必需的信息,以使用被分配的VF。
客户分区604,使用经由CRQ而被传送给它的卖主ID和设备ID,而加载用于VF的设备驱动606(步骤1248)。用于(多个)VF 613的(多个)设备驱动606可经由例如在图8中的配置读CRQ请求814和配置写CRQ请求816,通过它们自身的到IMP 603的CRQ 608来配置它们的(多个)VF 613,以及可以开始使用它们的新配置的(多个)VF 613。继而,操作终止。
除了向说明性的实施方式的系统601的I/O架构611动态地添加I/O适配器或端点,允许能够将I/O适配器或端点从I/O架构611动态地移除是有益的。图13是根据一个说明性的实施方式概述了用于从系统中移除I/O适配器的示例性热插式操作的流程图。如图13所示,热插式移除操作1300开始于在HMC控制台609处的用户开始热插式应用(步骤1302)。用户可选择移除诸如I/O端点614的I/O适配器(IOA)或端点(步骤1304)。
HMC 609确定哪些分区(如果有的话)包含来自将被移除的IOA的PF 612和VF 613资源(步骤1306)。HMC 609可向IMP 603发信号来通过使用例如动态移除IOV适配器(IMP)请求1020而移除IOV适配器(步骤1308)。继而,IMP 603可经由例如返回资源CRQ IMP请求856而向包含在IOA上的VF 613的每个客户分区604发送请求,来从使用中移除VF(步骤1310)。(多个)客户分区604可停止使用它们的(多个)VF 613(步骤1312),通过例如返回逻辑资源调用928而就所返回的资源向系统管理器625发信号,以及可经由例如由于动态移除而被终止的VF操作CRQ请求826而就该终止向IMP 603发信号(步骤1314)。
IMP分区603可经由例如废除逻辑资源(普通)调用930而向分区固件623发信号来从(多个)客户分区604的使用中移除(多个)VF 613(步骤1316)。当VF移除正在完成,现在IMP 603可完成从IMP 603移除I/O适配器的过程。继而,IMP 603可通过使用例如从LPAR移除适配器使用922来从它们的分区中移除相关联的I/O适配器612资源(步骤1318)。
继而,IMP 603可向HMC 609报告I/O适配器的移除(步骤1320)。现在不再使用IOA 614,以及HMC 609可向IMP 603发送消息,例如经由加电/断电IOA请求1010而关闭到IOA 614的电源(步骤1322)。继而,IMP 603可对IOA 614断电,可从IMP 603中移除IOA 614资源,以及向HMC 609报告完成(步骤1324)。现在,通过使用例如动态移除IOV适配器(系统管理器)1018而向系统管理器625发信号来移除对IMP 603的IOA分配,以及继而,HMC609可向用户报告完成(步骤1328),而如果需要的话,用户继而可以拔出IOA 614,以及操作完成。
I/O虚拟化和多个VF的实现的一个有用的特征是,当为用于负载均衡所需要时,在系统中具有足够的资源来动态地替换那些相关资源的能力。通过拥有一个可用资源池,从该可用资源池中能选择VF用于添加到LPAR,或者通过从不需要很好地利用VF的资源的LPAR中移除VF,并向能够更好地使用VF资源的LPAR中添加VF,来实现这一特征。图14是根据一个说明性实施方式概述了用于将虚拟功能(VF)动态地添加到逻辑分区(LPAR)的示例性操作的流程图。例如,当需要优化系统601的操作时,可使用在图14中概述的操作来从一个LPAR向另一个替换VF资源。
如图14所示,VF添加操作1400开始于在HMC 609处的用户开始动态重新配置(DR)应用(步骤1402)。用户可从多个VF 613的可用列表中选择来添加,以及可指定向哪个客户分区添加VF 613(步骤1404)。HMC 609可例如经由设置LPAR I/O配置请求1006而向系统管理器625呈现此信息(步骤1406)。系统管理器625也可创建用于IMP 603和客户分区604的CRQ 607和608,以及创建在客户CRQ 608和恰当的IMP CRQ 607之间的链接(步骤1408)。
系统管理器625可通过发送所请求的操作已完成的信号而就操作已就绪用于继续进行而通知HMC 609(步骤1410)。接下来,HMC609可请求IMP 603动态地添加CRQ 607,并将经由例如动态添加VF的请求1016而传送关于哪个分区正获得VF的信息。接下来,HMC 609可请求客户分区604来经由动态添加VF的请求1016而动态地添加VF 613(步骤1414)。客户分区604可检测新的CRQ 608,以及可加载用于新的CRQ 608的设备驱动606(步骤1416)。
在客户分区604已经经由CRQ而发起到IMP 603的通信(步骤1418)之后,IMP 603请求系统管理器625发起到客户分区604的资源传输,例如,传输MMIO地址空间、也被称为DMA窗口的DMA地址空间、以及中断到接收VF的客户分区604(步骤1420)。例如,由准许逻辑资源调用924完成这一步骤。此调用向IMP 603返回来自系统管理器625的呈现将被传输资源的令牌。在此时刻,尚未将这些资源实际地传输到客户分区604。
IMP 603经由相关联的(多个)CRQ,向客户分区604发送在上一个步骤获得的资源令牌以及VF的卖主ID和设备ID(步骤1422)。客户分区使用经由CRQ被从IMP 603传送的令牌,以及调用系统管理器625来将相关联的资源分配给它们(步骤1424)。例如,通过使用接受逻辑资源调用926和传送在上一步骤中所获得的令牌而实现这一点。展现资源的此令牌,向系统管理器625提供了为映射因使用所必需的对应资源而必需的信息,以使用被分配的VF。
现在,可加载用于VF 613的设备驱动606,并经由例如配置读CRQ请求814和配置写CRQ请求816而通过到IMP 603的CRQ 608配置其VF 613(步骤1426)。最后,HMC 609可就操作824的完成而通知用户,以及操作被完成(步骤1428)。
图15是根据一个说明性实施方式概述了用于将VF从LPAR动态地移除的示例性操作的流程图。在图15中的动态移除VF的操作1500是将在系统601的多个LPAR之间的I/O资源移动的能力的其他部分。即,可使用在图15示出的操作将VF从其与一个LPAR的关联中移除,以及继而使用在上文的图14中概述出的VF添加操作而将VF添加到另一个LPAR。
如图15所示,VF移除操作1500开始于在HMC 609处的用户开始DR应用(步骤1504)。用户可以选择将被移除的VF,诸如VF 613(步骤1506),以及HMC 609可向拥有VF的系统管理器603发送例如动态移除VF的请求1016来开始VF移除过程(步骤1508)。IMP 603向客户分区604发信号来停止使用VF,并通过使用例如返回资源CRQ IMP请求856而返回VF资源(步骤1510)。客户分区604可接收此请求,并根据指示而停止使用VF 613(步骤1512)。
客户分区604可例如经由由于动态移除CRQ而终止VF操作的消息826而可经由CRQ 608就由于动态移除而终止来向IMP 603发信号,由于动态移除CRQ而停止VF操作的消息826引起动态移除IMP 603处的CRQ 607的操作。客户分区604可经由例如返回逻辑资源调用928,而向系统管理器625发信号来从分区的使用中移除用于VF 613的资源。继而,系统管理器625以及OS 632可从客户分区604中移除相关联的VF 613资源(步骤1516)。IMP 603可向HMC 609报告VF的移除(步骤1518)。HMC 609可就操作的完成而通知用户(步骤1520),以及操作终止。
除了动态地添加和移除I/O适配器或端点、以及能够在多个LPAR之间替换多个VF及其相关联的资源,在虚拟化系统中,能够从错误中恢复对于错误处理的鲁棒性是有用的。说明性的实施方式提供了一种机制,该机制能够通过取回错误信息、登记错误信息、复位和重新配置多个VF、以及继而尝试重新启动未完成的I/O操作而从错误中恢复。如同后文描述的,在图16中概述了此操作。
图16是根据一个说明性实施方式概述了用于从由VF所引发的错误中进行错误恢复的示例性操作的流程图。在图16中概述的操作使用了停止所有到VF的DMA和MMIO直到设备驱动能够意识到错误存在,以及能够适度地恢复的已有技术。然而,图16的操作利用说明性实施方式的机制来补充此已有技术,以便利用CRQ机制以控制用于多个VF的错误恢复过程。
如图16所示,VF错误恢复操作1600开始于发生了将VF引入到MMIO停止状态和DMA停止状态的错误之后。在此状态中,没有来自VF的DMA操作会完成,同时在MMIO停止状态中将丢弃MMIO存储操作,以及MMIO加载操作将得到全1的返回数据。错误恢复过程开始于例如设备驱动606的设备驱动接收从MMIO加载操作返回的全1数据(步骤1604)。不期待返回全1数据的(或者不确定其是否应该期待)设备驱动606可以使用用于VF613的例如用于VF的CRQ查询错误状的CRQ请求820,来得到VF状态信息(步骤1606)。由于在此点上,VF 613处于错误状态,因而IMP 603可以以VF 613处于MMIO停止和DMA停止错误状态来响应于查询(步骤1608)。设备驱动606可使用例如获得I/O架构错误信息CRQ请求824,来获得关于在I/O架构611中的错误寄存器的信息,用于稍后的问题确定(步骤1610)。IMP 603可利用错误信息响应于查询(步骤1612),以及设备驱动606可将信息登记在错误日志中用于以后的分析(步骤1614)。
现在,设备驱动606准备就绪以复位其VF,并尝试重新启动操作。设备驱动606可使用例如复位VF CRQ 818,来复位VF 613(步骤1616),以及IMP 603可利用完成响应来响应于请求(步骤1618)。继而,设备驱动606可使用CRQ机制,以及特别地例如配置读CRQ请求814和配置写CRQ请求816来配置其VF 613(步骤1620)。设备驱动606尝试重新启动未完成的I/O操作(步骤1622),以及操作终止。
如前所述,IMP 603的重要功能是提供对IOA或端点的资源的安全访问,IOA或端点或者在使用与PF相关联的多个VF的多个LPAR之间共享,或者对于VF是唯一的,但针对由PF进行的改变,VF应该是不可访问的。网络I/O适配器(IOA)或端点的此类资源的一个例子是与由多个VF共享的PF相关联的网络地址,或者对于VF而言唯一的网络地址。将对这些设备专用资源的管理称作对I/O适配器或端点的IOA“南侧”管理。图17是根据一个说明性实施方式概述了用于改变在网络适配器上的网络地址的示例性IOA南侧管理操作的流程图。应当意识到,虽然图17具体地指示了改变在网络适配器上的网络地址,针对在使用与PF相关联的多个VF的多个LPAR之间共享或者对VF而言是唯一的其他资源,可执行类似的操作。
如图17所示,操作开始于在HMC控制台609处的用户开始应用来改变用于VF 613的网络地址(步骤1704)。用户可选择VF 613和地址(或者,应用可基于操作的上下文而提供地址)(步骤1706)。HMC 609可确定PF 612和控制VF 613的IMP 603,以及可向IMP 603发送IOA南侧管理请求1022,并在IOA南侧管理请求1022中传送VF 613和地址信息(步骤1708)。IMP 603可向PF设备驱动605传送信息,以及PF设备驱动605将其传送到PF 612用于处理(步骤1710)。HMC 609可就命令完成而查询IMP 603,以及当完成时,可通知用户操作完成(步骤1712),以及操作终止。
应当意识到,当系统601可操作时,在系统601中的客户分区604可终止操作。存在客户分区604可能终止的许多不同的原因,诸如在客户分区中的软件中的不可恢复的错误,或者仅影响分配了硬件的分区的不可恢复的该硬件的错误。图18是根据一个说明性实施方式概述了用于客户分区终止的示例性操作的流程图。在图18中概述的操作1800指示了一种情况,其中客户分区终止,并且或者重新引导或者永久终止。
如图18所示,当客户分区604由于某些原因而终止时,操作开始(步骤1802)。能够检测客户分区何时终止的系统管理器625,例如由于不可恢复的软件错误、或者由于当不可恢复的硬件错误时来自硬件的机器检查中断所造成的从分区到系统管理器的恐慌性调用中,可检测到客户分区604已经终止(步骤1804)。继而,例如,根据从初始建立分区的部分中设置的用户的重新启动策略中确定的,系统管理器625可确定客户分区604是否为重新引导而被设置(步骤1806)。
如果客户分区604没有为重新引导而被设置,则系统管理器625可在与在失效的客户分区604中的VF 613相关联的所有CRQ 607和608中发布例如合作者分区终止CRQ事件806(步骤1808)。在稍后的任何时间不将重新引导失效的客户分区604的事实是一种终止机制,以及因而,(多个)IMP 603移除与终止消息相关联的CRQ607,以及通过例如使用废除逻辑资源(强制的)932调用,而请求系统管理器废除对先前分派的资源的使用(步骤1810),以及操作终止。
如果做出客户分区604将被重新引导的确定(步骤1806),那么系统管理器625可在同与在失效的客户分区604中的所有VF 613相关联的PF 612相关联的所有的CRQ 607中发布例如合作者分区失效CRQ事件804,其通知所涉及的(多个)IMP 603将重新引导客户分区604,以及会立即返回(步骤1814)。在此情况下,(多个)IMP 603等待例如合作者分区连接的CRQ事件802,以及在那一点上,可以重新建立到客户分区604的通信。继而,操作终止。
应当意识到,在系统601的操作期间,IMP 603也可能失效。如果IMP 603失效,期待总是设置重新引导IMP 603,因为IMP 603作为在许多客户分区604中的潜在的许多VF 813的服务器而活动。图19是根据一个说明性的实施方式概述了用于IMP分区终止的示例性操作1900的流程图。如图19所示,随着IMP分区终止,操作1900开始(步骤1902)。例如通过由于不可恢复的软件错误、或者由于当不可恢复的硬件错误时来自硬件的机器检查中断所造成的从分区到系统管理器的恐慌性调用中,系统管理器625能够检测IMP 604分区终止,以及发起对IMP 604的重新引导(步骤1904)。
系统管理器625可在用于与正在被重新引导的IMP 603中的(多个)PF 612相关联的所有VF 613的客户分区的CRQ 608中发布例如合作者分区失效的CRQ事件804(步骤1906)。客户分区604可注意到CRQ 608的临时性的不可用状态,但是如果当正在重新引导IMP 603时不需要CRQ 608,则它们可以忽略合作者分区失效CRQ事件消息804。否则,客户分区604如在与VF 613相关联的CRQ 608中接收例如合作者分区连接的CRQ事件802所指示,而等待对CRQ连接的重新建立,以便继续与CRQ的操作(步骤1908)。继而,操作终止。
因而,说明性实施方式提供了允许用于配置、错误管理和南侧适配器专用管理的管理软件在单独的管理分区中而不是系统管理器中执行的机制。希望将I/O相关的代码保持在系统管理器之外,来防止对系统管理器的性能影响。而且,希望将I/O相关的代码放在单独的管理分区中,以便将由于频繁更新所造成的系统管理器代码的不稳定性最小化,例如,频繁更新是由于对不同的适配器唯一的南侧管理和错误恢复软件的代码进行更新的必要性。因而,示出性实施方式的机制在最小化不稳定性的同时提供了对系统管理器的更有效的操作。
应当意识到,说明性实施方式可采用全部硬件实施方式、全部软件实施方式或包含硬件和软件单元两种的实施方式的形式。在一个示例性实施方式中,以软件实现说明性的实施方式的机制,软件包括但不限于固件、常驻软件、微码等。
进一步地,说明性的实施方式可采取从计算机可用或计算机可读介质可访问的计算机程序产品的形式,计算机可用或计算机可读介质提供了用于由计算机或任何指令执行系统使用或结合计算机或任何指令执行系统而使用的程序代码。为了描述的目的,计算机可用或者计算机可读介质,可以是能够包含、存储、通信、传播或传送程序的任何装置,其中所述程序用于通过指令执行系统、装置或设备使用,或者连同指令执行系统、装置或设备而使用。
介质可以是电的、磁的、光的、电磁的、红外的或半导体系统(或装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移除计算机盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前例子包括压缩盘-只读存储器(CD-ROM)、压缩盘读/写(CD-R/W)和DVD。
适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接地耦合到存储器单元的至少一个处理器。存储器单元可包括在程序代码的实际执行期间被利用的本地存储器、大容量存储设备和高速缓冲存储器,其提供对至少一些程序代码的临时存储,以便降低在执行期间必须从大容量存储设备重新取得代码的次数的数量。
可以直接地或通过居间的I/O控制器而将输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)耦合到系统。也可将网络适配器耦合到系统,来允许数据处理系统通过居间的私有或公共网络而耦合到其他数据处理系统、或远程打印机、或存储设备。调制解调器、电缆调制解调器和以太网卡仅为一些当前可用的网络适配器类型。
已经为了示出和描述的目的而呈现了对本发明的描述,并且不旨在以所公开的形式穷尽或限制本发明。对所属领域技术人员,许多调整和变化是显而易见的。选择并描述实施方式,以便最佳地解释本发明的原则、实际应用,以及允许所属领域其他技术人员来理解本发明,用于具有适合于特定使用预期的多种调整的多种实施方式。

Claims (13)

1.一种用于在数据处理系统中管理输入/输出(I/O)虚拟化的方法,包括:
在所述数据处理系统中创建一个或多个客户分区,每个客户分区具有所述数据处理系统的资源的相关联的部分;
在所述数据处理系统中,创建I/O虚拟化管理分区(IMP);
由所述IMP标识与所述数据处理系统相关联的一个或多个支持I/O虚拟化(IOV)的I/O端点;
由所述IMP将所述一个或多个支持IOV的I/O端点的虚拟功能分配给所述一个或多个客户分区;
所述数据处理系统的系统管理器基于所述一个或多个客户分区的虚拟功能的分配来创建至少一个通信结构,所述至少一个通信结构用于在所述IMP和所述一个或多个客户分区之间通信;以及
所述一个或多个客户分区的至少一个客户分区使用所述至少一个通信结构,利用的所述一个或多个支持IOV的I/O端点的一个或多个虚拟功能,来执行虚拟功能配置操作。
2.根据权利要求1所述的方法,进一步包括:
由所述数据处理系统的所述系统管理器将所述数据处理系统的资源的部分分配给所述IMP用于由所述IMP管理;
由所述IMP确定分配给所述一个或多个客户分区的所述虚拟功能所必需的多种资源;
确定将在所述数据处理系统中实现的多种虚拟功能,以及将每个虚拟功能分配给所述一个或多个客户分区的哪些客户分区;以及
执行来自被分配了虚拟功能的所述一个或多个客户分区的到所述系统管理器的一个或多个调用,以将来自所述资源的部分的资源分配给所述一个或多个客户分区。
3.根据权利要求2所述的方法,其中确定将在所述数据处理系统中实现的多种虚拟功能,并且将每个虚拟功能分配给所述一个或多个客户分区的哪些客户分区包括:
确定由每个所标识的支持IOV的I/O端点所支持的多种虚拟功能;
向用户呈现描述了所述所标识的支持IOV的I/O端点以及由每个所标识的支持IOV的I/O端点所支持的多种虚拟功能的信息;以及
接收指示了将在所述数据处理系统中实现的多种虚拟功能,以及将每个虚拟功能分配给所述一个或多个客户分区的哪些客户分区的用户输入。
4.根据权利要求2所述的方法,进一步包括:
由所述IMP请求所述系统管理器发起到被分配了虚拟功能的所述一个或多个客户分区的资源传输;
响应于所述请求,在所述IMP中接收来自所述系统管理器的一个或多个令牌;以及
从所述IMP经由所述通信结构向所述一个或多个客户分区发送所述令牌,其中所述一个或多个客户分区使用所述一个或多个令牌来从所述系统管理器获得资源。
5.根据权利要求1所述的方法,其中向所述IMP提供对仅用于在所述一个或多个支持IOV的I/O端点中的被分配给所述IMP的物理功能的配置空间,以及属于被分配给所述IMP的物理功能的虚拟功能的配置空间的访问。
6.根据权利要求1所述的方法,其中所述一个或多个客户分区不直接访问在所述一个或多个支持IOV的I/O端点中的被分配给所述一个或多个客户分区的虚拟功能的配置空间,以及仅可使用所述至少一个通信结构经由IMP访问被分配给所述一个或多个客户分区的虚拟功能的配置空间。
7.根据权利要求6所述的方法,其中所述IMP允许由客户分区来访问在所述一个或多个支持IOV的I/O端点中被分配给所述客户分区的虚拟功能的配置空间,以及阻止由所述客户分区访问在所述一个或多个支持IOV的I/O端点中的没有被分配给所述客户分区的虚拟功能的配置空间。
8.根据权利要求1所述的方法,进一步包括接收来自硬件管理控制台(HMC)的输入,其指引对所述一个或多个客户分区分配所述虚拟功能,以及指引所述I/O虚拟化管理操作的执行。
9.根据权利要求8所述的方法,其中来自所述HMC的所述输入是发起用于将新的支持IOV的I/O端点添加到数据处理系统的热插式操作的命令,以及其中执行I/O虚拟化管理操作包括:
将所述新的支持IOV的I/O端点分配给所述IMP;
基于所述新的支持IOV的I/O端点的所述添加,配置所述IMP;
向所述一个或多个客户分区中的至少一个客户分区动态地添加所述新的支持IOV的I/O端点的至少一个虚拟功能;
基于所述新的支持IOV的I/O端点的所述至少一个虚拟功能的所述动态添加,向在所述一个或多个客户分区中的所述至少一个客户分区分派资源;以及
使用所述至少一个通信结构经由所述IMP来配置所述新的支持IOV的I/O端点的所述至少一个虚拟功能。
10.根据权利要求8所述的方法,其中来自所述HMC的所述输入是发起用于从所述数据处理系统中移除已有的支持IOV的I/O端点的热插式操作的命令,以及其中执行所述I/O虚拟化管理操作包括:
在具有与将被移除的所述支持IOV的I/O端点的虚拟功能相关联的资源的所述一个或多个客户分区中,标识至少一个客户分区;
从由所述至少一个客户分区的使用中移除所述虚拟功能和与所述虚拟功能相关联的资源;
从由所述IMP的使用中,移除物理功能以及与所述物理功能相关联的资源;以及
使将被移除的支持IOV的I/O端点断电。
11.根据权利要求8所述的方法,其中来自所述HMC的所述输入是动态地重新配置所述数据处理系统的命令,以及其中执行所述I/O虚拟化管理操作包括:
接收支持IOV的I/O端点的虚拟功能的选择,以便添加到在所述一个或多个客户分区中所选择的客户分区;
创建至少一个通信结构用于在所述IMP和所述所选择的客户分区中的所述所选择的虚拟功能;
从所述IMP向所述系统管理器发送请求,请求到所述所选择的客户分区的资源传输;
响应于所述请求,在所述IMP中接收来自所述系统管理器的至少一个令牌;
向所述所选择的客户分区提供所述至少一个令牌;
建立用于在所述所选择的客户分区中的所选择的虚拟功能的资源;
由所述所选择的客户分区使用所述至少一个令牌来从所述系统管理器获得资源;以及
加载用于在所述所选择的客户分区中的所述所选择的虚拟功能的设备驱动。
12.根据权利要求8所述的方法,其中来自所述HMC的所述输入是动态地重新配置所述数据处理系统的命令,以及其中执行所述I/O虚拟化管理操作包括:
接收对要从在所述一个或多个客户分区中所选择的客户分区移除的I/O端点的虚拟功能的选择;
从由所述所选择的客户分区的进一步使用中,移除所述所选择的虚拟功能;以及
移除用于在所述所选择的客户分区中的所选择的虚拟功能的资源。
13.一种数据处理系统,包括:
一个或多个客户分区,每个客户分区具有所述数据处理系统的资源的相关联的部分;
与所述一个或多个客户分区通信的I/O虚拟化管理分区(IMP);
与所述IMP通信的一个或多个I/O端点;以及
与所述IMP和所述一个或多个客户分区相关联地提供的至少一个通信结构,其中:
所述IMP标识与所述数据处理系统相关联的一个或多个支持I/O虚拟化(IOV)的I/O端点,
所述IMP将所述一个或多个支持IOV的I/O端点的虚拟功能分配给所述一个或多个客户分区;以及
所述一个或多个客户分区的至少一个客户分区使用所述至少一个通信结构,来利用所述一个或多个支持IOV的I/O端点的一个或多个虚拟功能执行虚拟功能配置操作。
CN2008101781332A 2007-12-03 2008-11-24 用于管理输入/输出虚拟化的方法和数据处理系统 Active CN101452424B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/949,419 US8141094B2 (en) 2007-12-03 2007-12-03 Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US11/949,419 2007-12-03

Publications (2)

Publication Number Publication Date
CN101452424A true CN101452424A (zh) 2009-06-10
CN101452424B CN101452424B (zh) 2011-09-07

Family

ID=40677110

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101781332A Active CN101452424B (zh) 2007-12-03 2008-11-24 用于管理输入/输出虚拟化的方法和数据处理系统

Country Status (3)

Country Link
US (1) US8141094B2 (zh)
JP (1) JP5305866B2 (zh)
CN (1) CN101452424B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011009406A1 (zh) * 2009-07-22 2011-01-27 成都市华为赛门铁克科技有限公司 数据处理系统和方法
CN105814864A (zh) * 2014-11-21 2016-07-27 华为技术有限公司 一种输入输出io请求处理方法及文件服务器
CN111176829A (zh) * 2018-11-13 2020-05-19 凯为有限责任公司 虚拟化处理系统中的物理功能和虚拟功能的灵活资源分配
CN113254160A (zh) * 2021-06-28 2021-08-13 北京大禹智芯科技有限公司 一种io资源请求方法和装置

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8141092B2 (en) 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
US8141093B2 (en) * 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in an IOV management partition
US8359415B2 (en) * 2008-05-05 2013-01-22 International Business Machines Corporation Multi-root I/O virtualization using separate management facilities of multiple logical partitions
JP5645014B2 (ja) * 2008-05-28 2014-12-24 日本電気株式会社 I/o接続システム、方法及びプログラム
JP2010009396A (ja) * 2008-06-27 2010-01-14 Toshiba Corp 計算機システム、および計算機システムのデバイス制御方法
US7913024B2 (en) * 2008-12-09 2011-03-22 International Business Machines Corporation Differentiating traffic types in a multi-root PCI express environment
US8144582B2 (en) * 2008-12-30 2012-03-27 International Business Machines Corporation Differentiating blade destination and traffic types in a multi-root PCIe environment
US8914684B2 (en) * 2009-05-26 2014-12-16 Vmware, Inc. Method and system for throttling log messages for multiple entities
EP2513876A1 (en) * 2009-12-18 2012-10-24 Nxp B.V. Protected mode for global platform compliant smart cards
US8327055B2 (en) 2010-04-12 2012-12-04 International Business Machines Corporation Translating a requester identifier to a chip identifier
US8364879B2 (en) 2010-04-12 2013-01-29 International Business Machines Corporation Hierarchical to physical memory mapped input/output translation
US8316169B2 (en) 2010-04-12 2012-11-20 International Business Machines Corporation Physical to hierarchical bus translation
US8606984B2 (en) 2010-04-12 2013-12-10 International Busines Machines Corporation Hierarchical to physical bus translation
US8429323B2 (en) 2010-05-05 2013-04-23 International Business Machines Corporation Memory mapped input/output bus address range translation
US8650349B2 (en) 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8671287B2 (en) 2010-06-23 2014-03-11 International Business Machines Corporation Redundant power supply configuration for a data center
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US8650337B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8416834B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Spread spectrum wireless communication code for data center environments
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
US8271710B2 (en) 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US9396000B2 (en) * 2010-06-25 2016-07-19 Intel Corporation Methods and systems to permit multiple virtual machines to separately configure and access a physical device
US8261128B2 (en) * 2010-08-04 2012-09-04 International Business Machines Corporation Selection of a domain of a configuration access
US8832345B2 (en) * 2010-08-24 2014-09-09 Belkin International, Inc. System for communicating between two electrical devices and method therefore
WO2012053031A1 (en) * 2010-10-19 2012-04-26 Hitachi, Ltd. Storage apparatus and virtual port migration method for storage apparatus
US9135044B2 (en) * 2010-10-26 2015-09-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Virtual function boot in multi-root I/O virtualization environments to enable multiple servers to share virtual functions of a storage adapter through a MR-IOV switch
US8561064B2 (en) * 2010-10-26 2013-10-15 International Business Machines Corporation Retaining ownership of a virtual function while an adapter is replaced
US8484654B2 (en) * 2010-11-23 2013-07-09 International Business Machines Corporation Determining suitable network interface for partition deployment/re-deployment in a cloud environment
US8839240B2 (en) * 2010-11-29 2014-09-16 International Business Machines Corporation Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device
US8447891B2 (en) 2011-01-11 2013-05-21 International Business Machines Corporation Dynamically assigning virtual functions to client applications
US8364871B2 (en) * 2011-01-25 2013-01-29 International Business Machines Corporation Providing virtual functions after an input/output adapter is moved from a first location to a second location
US8726276B2 (en) * 2011-01-26 2014-05-13 International Business Machines Corporation Resetting a virtual function that is hosted by an input/output adapter
JP5585844B2 (ja) * 2011-03-25 2014-09-10 株式会社日立製作所 仮想計算機の制御方法及び計算機
JP5548647B2 (ja) * 2011-04-25 2014-07-16 株式会社日立製作所 計算機システムでの部分障害処理方法
US9218195B2 (en) 2011-05-17 2015-12-22 International Business Machines Corporation Vendor-independent resource configuration interface for self-virtualizing input/output device
JP5846836B2 (ja) * 2011-10-11 2016-01-20 株式会社日立製作所 仮想計算機、仮想計算機システム、及び仮想計算機制御方法
US8645600B2 (en) 2011-11-10 2014-02-04 International Business Machines Corporation Configuring expansion component interconnect (‘ECI’) physical functions on an ECI device in a computing system
US9311127B2 (en) 2011-12-16 2016-04-12 International Business Machines Corporation Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies
US9411654B2 (en) 2011-12-16 2016-08-09 International Business Machines Corporation Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation
US9626207B2 (en) 2011-12-16 2017-04-18 International Business Machines Corporation Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies
US8880766B2 (en) * 2012-04-05 2014-11-04 Dell Products L.P. Methods and systems for removal of information handling resources in a shared input/output infrastructure
JP5930046B2 (ja) * 2012-08-17 2016-06-08 富士通株式会社 情報処理装置、及び情報処理装置の制御方法
JP5874879B2 (ja) * 2012-11-26 2016-03-02 株式会社日立製作所 I/oデバイスの制御方法及び仮想計算機システム
US9047208B1 (en) * 2012-12-10 2015-06-02 Qlogic, Corporation Method and system of configuring virtual function in peripheral devices
US9342249B2 (en) 2013-01-02 2016-05-17 International Business Machines Corporation Controlling partner partitions in a clustered storage system
US20140245300A1 (en) * 2013-02-27 2014-08-28 Lsi Corporation Dynamically Balanced Credit for Virtual Functions in Single Root Input/Output Virtualization
US9135101B2 (en) 2013-03-01 2015-09-15 Avago Technologies General Ip (Singapore) Pte Ltd Virtual function timeout for single root input/output virtualization controllers
ES2687609T3 (es) * 2013-05-02 2018-10-26 Huawei Technologies Co., Ltd. Sistema informático, método para acceder a un terminal de interconexión de componentes periféricos exprés y equipo
US9304849B2 (en) 2013-06-12 2016-04-05 International Business Machines Corporation Implementing enhanced error handling of a shared adapter in a virtualized system
US9720775B2 (en) * 2013-06-12 2017-08-01 International Business Machines Corporation Implementing concurrent adapter firmware update for an SRIOV adapter in a virtualized system
US9323620B2 (en) 2013-06-12 2016-04-26 International Business Machines Corporation Implementing shared adapter configuration updates concurrent with maintenance actions in a virtualized system
US9317317B2 (en) 2013-06-12 2016-04-19 International Business Machines Corporation Implementing concurrent device driver maintenance and recovery for an SRIOV adapter in a virtualized system
WO2015033384A1 (ja) 2013-09-03 2015-03-12 株式会社アキブシステムズ I/oデバイスの仮想化のためのコンピュータシステム及びその運用方法並びにhub装置
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
US9639478B2 (en) * 2014-01-17 2017-05-02 International Business Machines Corporation Controlling direct memory access page mappings
US9870335B2 (en) 2014-04-03 2018-01-16 International Business Machines Corporation Implementing sideband control structure for PCIE cable cards and IO expansion enclosures
CN105743808B (zh) * 2014-12-08 2017-09-19 华为技术有限公司 一种适配QoS的方法和装置
US9720720B2 (en) * 2015-02-25 2017-08-01 Red Hat Israel, Ltd. Dynamic management of assignment and number of virtual functions on SR-IOV capable hypervisors
US10114675B2 (en) 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
CN106155764A (zh) * 2015-04-23 2016-11-23 阿里巴巴集团控股有限公司 调度虚拟机输入输出资源的方法及装置
WO2016171876A1 (en) * 2015-04-23 2016-10-27 Alibaba Group Holding Limited Method and system for scheduling input/output resources of a virtual machine
CN106201839B (zh) 2015-04-30 2020-02-14 阿里巴巴集团控股有限公司 一种业务对象的信息加载方法和装置
CN106209741B (zh) 2015-05-06 2020-01-03 阿里巴巴集团控股有限公司 一种虚拟主机及隔离方法、资源访问请求处理方法及装置
CN106708819A (zh) 2015-07-17 2017-05-24 阿里巴巴集团控股有限公司 一种数据缓存的预热方法及其装置
KR102473665B1 (ko) * 2015-07-28 2022-12-02 삼성전자주식회사 스토리지 디바이스 및 스토리지 가상화 시스템
CN106487708B (zh) 2015-08-25 2020-03-13 阿里巴巴集团控股有限公司 网络访问请求控制方法和装置
US10067900B2 (en) * 2015-08-25 2018-09-04 Oracle International Corporation Virtualized I/O device sharing within a distributed processing node system
CN106886429B (zh) * 2015-12-16 2020-11-06 华为技术有限公司 一种加载驱动程序的方法和服务器
US20170206091A1 (en) * 2016-01-20 2017-07-20 International Business Machines Corporation Sharing ownership of an input/output device with an existing partition
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
CN107515775B (zh) * 2016-06-15 2021-11-19 华为技术有限公司 一种数据传输方法及装置
US10545771B2 (en) * 2016-12-02 2020-01-28 International Business Machines Corporation Concurrent maintenance of an input/output adapter backing a virtual network interface controller
US10606487B2 (en) * 2017-03-17 2020-03-31 International Business Machines Corporation Partitioned memory with locally aggregated copy pools
US10387188B2 (en) * 2017-11-09 2019-08-20 International Business Machines Corporation Virtual machine scoping of data on a hypervisor
US11204796B2 (en) 2019-04-11 2021-12-21 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
CN110427246B (zh) * 2019-06-29 2023-06-20 西南电子技术研究所(中国电子科技集团公司第十研究所) 多核虚拟分区重构系统
US11194611B2 (en) 2019-07-29 2021-12-07 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
US20210382737A1 (en) * 2020-06-03 2021-12-09 Baidu Usa Llc Data protection with dynamic resource isolation for data processing accelerators

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US114989A (en) * 1871-05-16 Improvement in pumps
US940357A (en) * 1907-10-21 1909-11-16 Edward Posson Car-frame.
US940360A (en) * 1909-03-18 1909-11-16 Jerre T Richards Bar-bender.
US6247080B1 (en) * 1997-05-13 2001-06-12 Micron Electronics, Inc. Method for the hot add of devices
US5941972A (en) 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US20030005068A1 (en) * 2000-12-28 2003-01-02 Nickel Ronald H. System and method for creating a virtual supercomputer using computers working collaboratively in parallel and uses for the same
US6842857B2 (en) * 2001-04-12 2005-01-11 International Business Machines Corporation Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine
US6880002B2 (en) * 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US7565398B2 (en) * 2002-06-27 2009-07-21 International Business Machines Corporation Procedure for dynamic reconfiguration of resources of logical partitions
US7836211B2 (en) * 2003-01-21 2010-11-16 Emulex Design And Manufacturing Corporation Shared input/output load-store architecture
US20040158834A1 (en) * 2003-02-06 2004-08-12 International Business Machines Corporation Apparatus and method for dynamically allocating resources of a dead logical partition
US7073002B2 (en) 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
US7085862B2 (en) * 2003-03-13 2006-08-01 International Business Machines Corporation Apparatus and method for controlling resource transfers in a logically partitioned computer system by placing a resource in a power on reset state when transferring the resource to a logical partition
US7134052B2 (en) * 2003-05-15 2006-11-07 International Business Machines Corporation Autonomic recovery from hardware errors in an input/output fabric
US8301809B2 (en) * 2003-07-02 2012-10-30 Infortrend Technology, Inc. Storage virtualization computer system and external controller thereof
US7237139B2 (en) * 2003-08-07 2007-06-26 International Business Machines Corporation Services heuristics for computer adapter placement in logical partitioning operations
US7502842B2 (en) * 2003-09-25 2009-03-10 International Business Machines Corporation Auto-configuration of an internal VLAN network interface
US7254652B2 (en) * 2003-09-30 2007-08-07 International Business Machines Corporation Autonomic configuration of port speeds of components connected to an interconnection cable
US7171417B2 (en) * 2003-09-30 2007-01-30 International Business Machines Corporation Method and apparatus for improving performance and scalability of an object manager
US7111102B2 (en) 2003-10-06 2006-09-19 Cisco Technology, Inc. Port adapter for high-bandwidth bus
JP2007510198A (ja) * 2003-10-08 2007-04-19 ユニシス コーポレーション ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化
US20070061441A1 (en) * 2003-10-08 2007-03-15 Landis John A Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions
US20070067366A1 (en) * 2003-10-08 2007-03-22 Landis John A Scalable partition memory mapping system
US7234037B2 (en) * 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US7660322B2 (en) 2003-12-11 2010-02-09 International Business Machines Corporation Shared adapter
US7487258B2 (en) 2004-01-30 2009-02-03 International Business Machines Corporation Arbitration in a computing utility system
US8782024B2 (en) * 2004-02-12 2014-07-15 International Business Machines Corporation Managing the sharing of logical resources among separate partitions of a logically partitioned computer system
CN1661561A (zh) * 2004-02-25 2005-08-31 英特维数位科技股份有限公司 具省电特性的操作系统共享应用程序的架构及其方法
US7530071B2 (en) * 2004-04-22 2009-05-05 International Business Machines Corporation Facilitating access to input/output resources via an I/O partition shared by multiple consumer partitions
US20050246453A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US7240177B2 (en) 2004-05-27 2007-07-03 International Business Machines Corporation System and method for improving performance of dynamic memory removals by reducing file cache size
US7249208B2 (en) 2004-05-27 2007-07-24 International Business Machines Corporation System and method for extending the cross-memory descriptor to describe another partition's memory
IL163314A (en) * 2004-08-02 2010-06-16 Lsi Technologies Israel Ltd Booting from a storage area network
JP2006113767A (ja) 2004-10-14 2006-04-27 Sony Corp 情報処理システム、および、情報処理方法、並びに、プログラム
US20060123111A1 (en) * 2004-12-02 2006-06-08 Frank Dea Method, system and computer program product for transitioning network traffic between logical partitions in one or more data processing systems
JP4733399B2 (ja) * 2005-01-28 2011-07-27 株式会社日立製作所 計算機システム、計算機、ストレージ装置及び管理端末
US7694047B1 (en) * 2005-02-17 2010-04-06 Qlogic, Corporation Method and system for sharing input/output devices
US20060195663A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Virtualized I/O adapter for a multi-processor data processing system
US7543305B2 (en) * 2005-03-24 2009-06-02 International Business Machines Corporation Selective event registration
US20060236063A1 (en) 2005-03-30 2006-10-19 Neteffect, Inc. RDMA enabled I/O adapter performing efficient memory management
US7415034B2 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Virtualized partitionable shared network interface
US20060250945A1 (en) * 2005-04-07 2006-11-09 International Business Machines Corporation Method and apparatus for automatically activating standby shared Ethernet adapter in a Virtual I/O server of a logically-partitioned data processing system
WO2006110991A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited Method and system for controlling software version updates
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
US8223745B2 (en) 2005-04-22 2012-07-17 Oracle America, Inc. Adding packet routing information without ECRC recalculation
US7949766B2 (en) * 2005-06-22 2011-05-24 Cisco Technology, Inc. Offload stack for network, block and file input and output
US8521912B2 (en) * 2006-01-12 2013-08-27 Broadcom Corporation Method and system for direct device access
US20070165596A1 (en) * 2006-01-18 2007-07-19 Boyd William T Creation and management of routing table for PCI bus address based routing with integrated DID
US8230153B2 (en) * 2006-01-20 2012-07-24 Broadcom Corporation Method and system for HBA assisted storage virtualization
US20070192518A1 (en) 2006-02-14 2007-08-16 Aarohi Communications, Inc., A California Corporation Apparatus for performing I/O sharing & virtualization
US7613749B2 (en) * 2006-04-12 2009-11-03 International Business Machines Corporation System and method for application fault tolerance and recovery using topologically remotely located computing devices
US8677034B2 (en) * 2006-04-28 2014-03-18 Hewlett-Packard Development Company, L.P. System for controlling I/O devices in a multi-partition computer system
US7613847B2 (en) * 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
JP5068056B2 (ja) * 2006-10-11 2012-11-07 株式会社日立製作所 障害回復方法、計算機システム及び管理サーバ
US9098347B2 (en) * 2006-12-21 2015-08-04 Vmware Implementation of virtual machine operations using storage system functionality
US7734859B2 (en) * 2007-04-20 2010-06-08 Nuon, Inc Virtualization of a host computer's native I/O system architecture via the internet and LANs
US8464260B2 (en) * 2007-10-31 2013-06-11 Hewlett-Packard Development Company, L.P. Configuration and association of a supervisory virtual device function to a privileged entity
US7945436B2 (en) * 2007-11-06 2011-05-17 Vmware, Inc. Pass-through and emulation in a virtual machine environment
US8141093B2 (en) 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in an IOV management partition
US8141092B2 (en) 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
US8359415B2 (en) 2008-05-05 2013-01-22 International Business Machines Corporation Multi-root I/O virtualization using separate management facilities of multiple logical partitions
US7913024B2 (en) 2008-12-09 2011-03-22 International Business Machines Corporation Differentiating traffic types in a multi-root PCI express environment
US8144582B2 (en) 2008-12-30 2012-03-27 International Business Machines Corporation Differentiating blade destination and traffic types in a multi-root PCIe environment

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011009406A1 (zh) * 2009-07-22 2011-01-27 成都市华为赛门铁克科技有限公司 数据处理系统和方法
CN105814864A (zh) * 2014-11-21 2016-07-27 华为技术有限公司 一种输入输出io请求处理方法及文件服务器
CN105814864B (zh) * 2014-11-21 2019-06-07 华为技术有限公司 一种输入输出io请求处理方法及文件服务器
CN111176829A (zh) * 2018-11-13 2020-05-19 凯为有限责任公司 虚拟化处理系统中的物理功能和虚拟功能的灵活资源分配
CN113254160A (zh) * 2021-06-28 2021-08-13 北京大禹智芯科技有限公司 一种io资源请求方法和装置
CN113254160B (zh) * 2021-06-28 2022-04-08 北京大禹智芯科技有限公司 一种io资源请求方法和装置

Also Published As

Publication number Publication date
US20090144731A1 (en) 2009-06-04
JP2009151767A (ja) 2009-07-09
US8141094B2 (en) 2012-03-20
CN101452424B (zh) 2011-09-07
JP5305866B2 (ja) 2013-10-02

Similar Documents

Publication Publication Date Title
CN101452424B (zh) 用于管理输入/输出虚拟化的方法和数据处理系统
CN101436165B (zh) 用于iov适配器管理的系统和方法
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
US8141093B2 (en) Management of an IOV adapter through a virtual intermediary in an IOV management partition
CN101076782B (zh) 提供虚拟刀片服务器的方法和装置
US9582221B2 (en) Virtualization-aware data locality in distributed data processing
US10275322B2 (en) Systems and methods for maintaining virtual component checkpoints on an offload device
CN100583046C (zh) 用于单根无状态虚拟功能迁移的系统和方法
CN101206633B (zh) 用事务协议和共享存储器在主机系统间通信的系统和方法
CN101206632B (zh) 用套接字连接和共享存储器在主机系统间通信的系统和方法
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
US9311127B2 (en) Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies
US9411654B2 (en) Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation
CN101206634B (zh) 用于初始化共享存储器的系统和方法
CN101206629B (zh) 在运行的PCIe架构中热插/拔新组件的系统和方法
US8359415B2 (en) Multi-root I/O virtualization using separate management facilities of multiple logical partitions
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
CN101120315A (zh) 在支持虚拟适配器的物理适配器上的虚拟适配器解构
JP2000259502A (ja) データ・ストレージとデータ処理システムにおける書き込みキャッシュデータの転送方法及びその装置
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20160077847A1 (en) Synchronization of physical functions and virtual functions within a fabric
CN109062580B (zh) 一种虚拟化环境部署方法和部署装置
Johansen Availability and performance aspects for mainframe consolidated servers
Irving et al. Partitioning Implementations for IBM E-server P5 Servers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant