在支持虚拟适配器的物理适配器上的虚拟适配器解构的制作方法

文档序号:6566653阅读:253来源:国知局
专利名称:在支持虚拟适配器的物理适配器上的虚拟适配器解构的制作方法
技术领域
本发明总体来说涉及在主机和输入/输出(I/O)适配器之间的通信协议。更具体地说,本发明提供一种用于对在物理i/o适配器上的 资源进行虚拟化的技术实现。尤其,本发明提供一种机制,通过该机制,单个物理I/0适配器,例如,PCI、 PCI-X或者PCI-E适配器, 可以破坏与驻留在物理适配器内的一个或者多个虚拟适配器相关联的资源。
背景技术
虚拟化就是为真实资源产生替代物。替代物与其真实的对等物具 有相同的功能和外部接口,但是在诸如尺寸、性能和成本之类的属性 上不同。这些替代物是虚拟资源,而且它们的用户通常不知道替代物 的存在。服务器使用两种基本方法来对系统资源进行虚拟化分区和 逻辑分区(LPAR)管理器。分区产生虚拟服务器,作为物理服务器 资源的一部分,通常在粗粒的(例如,物理)分配单元(例如,整个 处理器及其关联内存和I/0适配器)。LPAR管理器是软件或者固件 元件,其能够将所有的服务器资源细粒度地(例如,以单个物理资源 的小部分)虚拟化。在常规数据处理系统中,支持虚拟化的服务器具有两种选择方案 用于处理I/O.第一种选择不允许在虚拟服务器之间共享单个物理I/O 适配器。第二种选择是在LPAR管理器或另 一个中介物中增加功能, 从而提供允许多个操作系统共享单个物理适配器所必要的隔离。第一种选择存在几个问题。 一个突出的问题是,昂贵的适配器不 能在虚拟服务器之间共享。如果虚拟服务器只需要使用昂贵的适配器 的一部分,那么整个适配器将专门用于这个服务器。随着在物理服务
器上的虚拟服务器的数目增加,这样导致适配器的利用不足,更重要 的是,导致更昂贵的解决方案,因为每个虚拟服务器需要专门用于其 上的物理适配器。对于支持许多虚拟服务器的物理服务器,这种选择 的另一个突出的问题是,其需要多个适配器插槽,其中,所有的附属 硬件(例如,芯片、连接器、线缆等)要求把这些适配器连接到物理 服务器。尽管第二种选择提供在虚拟服务器之间共享适配器的机制,但是该机制必须在每个I/O事务中被调用和执行。由LPAR管理器或其它 中介物在每个I/O事务中调用和执行所述共享机制会降低性能。还会 导致更昂贵的解决方案,因为客户必须购买更多的硬件,以便补偿用 来实现所述共享机制的周期,或者,如果共享机制卸栽到了中介物中, 则用来补偿所述中介物硬件.有益的是具有改进的方法、设备和计算机指令,用来直接破坏与 驻留于物理适配器(例如,PCI、 PCI-X或PCI-E适配器)中的一个 或多个虚拟适配器相关联的资源。此外,有益的是使所述机制应用于 下述器件以太网NIC (网络接口控制器)、FC (光纤通道)、HBA (主机总线适配器)、pSCSI(并行SCSI) 、 HBA、 InfiniBand、 TCP/IP 减负引擎、支持RDMA (远程直接内存访问)的NIC (网M口控制 器)、iSCSI适配器、iSER (用于RDMA的iSCSI扩展)以及支持 内存映射的1/0接口的任何其它类型的适配器。发明内容本发明提供用于直接破坏与驻留于物理适配器(例如,PCI、 PCI-X或者PCI-E适配器)内的一个或者多个虚拟适配器相关联的资 源的方法、计算机程序产品和分布数据处理系统。具体来说,本发明 涉及用于共享常规的PCI (外围部件互连)I/O适配器、PCI-X I/O适 配器、PCI-Express I/O适配器、以及( 一般来说)使用内存映射I/O接口用于主机与适配器通信的任何i/o适配器。提供一机制,以便直接破坏与驻留于物理适配器(例如,PCI、 PCI-X或PCI-E适配器)
中的一个或者多个虚拟适配器相关联的资源。另外,每一个虚拟适配 器具有一组相关的主机侧资源(例如,内存地址和中断等级)和适配 器侧资源(例如,适配器内存地址和处理队列),并且每一个虚拟适 配器隔离访问属于另一虚拟适配器或者物理适配器的主机侧资源和 适配器资源。


现在仅仅以举例的方式参照附图描述本发明,其中图l是根据本发明的优选实施例示出的分布计算机系统的视图;图2是根据本发明的优选实施例的小主机处理器节点的功能框图;图3是根据本发明的优选实施例的小集成主机处理器节点的功能框图;图4是根据本发明的优选实施例的大主机处理器节点的功能框图;图5是根据本发明的优选实施例示出并行外围计算机接口 ( PC1) 总线协议的元件的视图;图6是根据本发明的优选实施例示出串联PCI总线协议 (PCI-Express或者PCI-E)的元件的视图;图7是根据本发明的优选实施例示出为了提供虚拟主机访问隔 离而设置在主机处理器节点中的I/O虚拟化功能的视图;图8是根据本发明的优选实施例示出用于PCI总线事务以识别 虚拟适配器或者系统映像的控制场的视图;图9是示出根据本发明的优选实施例必须被虚拟化的适配器资 源的视图,以允许适配器直接访问虚拟主机资源;虚拟主机直接访 问适配器资源;以及适配器上的非PCI端口访问适配器或者主机上的 资源;图10是根据本发明的优选实施例示出支持I/O虚拟化的用于管 理PCI系列适配器的三个访问控制等级的形成的视图11是示出根据本发明的优选实施例如何通过逻辑分区管理器 使与系统映像相关联的虚拟适配器可以使用与系统映像相关联的主机内存的视图12是示出根据本发明的优选实施例PCI系列适配器如何允 许逻辑分区管理器将PCI适配器中的内存和系统映像及其关联虚拟 适配器相关联的视图13是才艮据本发明的优选实施例示出用于确定与输入内存地址 相关联的虚拟适配器的一种选择方案的视图14是根据本发明的优选实施例示出用于确定与PCI-X或者 PCI-E总线事务相关联的虚拟适配器的一种选择方案的视图15是根据本发明的优选实施例示出用于对适配器资源进行虚 拟化的虚拟适配器管理方法的视图;以及
图16是概述根据本发明的优选实施例的通过图15所述的虚拟适 配器管理方法解构现有的虚拟适配器的范例操作的流程图.
具体实施例方式
本发明适用于使用PCI系列I/O适配器直接连接存储装置或者 连接网络的任何普通或者特殊的目的主机,其中,网络由终端节点、 交换机、路由器和互连这些部件的链路组成。网络链路可以是,例如, 光纤通道、以太网、InfiniBand、先进交换互连、或者使用专用协议 或者标准协议的专用链路,虽然本发明的实施例示出和描述为利用外 围部件互连(PCI)系列适配器,但是,本发明的实施方式并不局限 于这种结构,如本领域技术人员所显而易见的那样。本发明的教导可 以在支持内存映射输入/输出(MMIO)接口 (例如,但不限于, HyperTransport、 Rapid I/O、专用MMIO接口 )的任何物理适配器 或者现在已知的或稍后开发的具有MMIO接口的其他适配器上实施。 为了帮助理解本发明的范例目的,提供利用PCI系列适配器的本发明 的实施方式。
现在参照附图,尤其,参照图l,根据本发明的优选实施例示出分布计算机系统的视图。图1所示的分布计算机系统采用网络例如网络120的形式,并且仅仅为了范例的目的,提供该分布计算机系统, 可以在很多其它类型和结构的计算机系统上实施下面所述的本发明的实施例。两个交换机(或者路由器),即,交换机116和交换机140, 示出在网络120内。交换机116通过端口 112连接小主机节点100。 小主机节点IOO也包含第二类端口 104,该第二类端口连接直接连接 存储子系统,例如,直接连接存储器108。网络120也可以通过端口 136连接大主机节点124,该端口 136 连接交换机140,大主机节点124也可以包含第二类端口 128,该第 二类端口 128连接直接连接存储子系统,例如,直接连接存储器132。网络120也可以连接小集成主机节点144,该小集成主机节点144 通过连接交换机140的端口 148连接网络120。小集成主机节点144 也可以包含第二类端口 152,该第二类端口 152连接直接连接存储子 系统,例如,直接连接存储器156,现在转到图2,根据本发明的优选实施例示出小主机节点的功能 框图。小主机节点202是主机处理器节点的例子,例如,图l所示的 小主机节点100。在该例子中,图2所示的小主机节点202包括通过链路201互连 的两个处理器I/O层次,例如,处理器I/O层次200和203.在图2 的范例例子中,处理器I/0层次200包括处理器芯片207,该处理器 芯片207包括一个或者多个处理器及其相关高速緩冲器,处理器芯片 207通过链路208连接存储器212,在处理器芯片上的一个链路(例 如,链路220 )连接PCI系列I/O桥228. PCI系列I/O桥228具有 一个或者多个PCI系列(PCI、 PCI-X、 PCI-Express或者任何下一代 PCI)链路,用来通过PCI链路(例如,链路232、 236和240)连接 其它PCI系列1/0桥或者PC1系列1/0适配器,例如,PCI系列适配 器244和PCI系列适配器245。 PCI系列适配器245也可以用来通过 经由交换机或者路由器(例如,交换机或者路由器260)的链路与网 络(例如,网络264)连接。PCI系列适配器244可以用来通过链路248与直接连接存储器连接,例如,直接连接存储器252。可以用与 就处理器I/O层次200所示出和描述的方式相似的方式构造处理器 I/O层次203。现在参照图3,根据本发明的优选实施例示出小集成主机节点的 功能框图。小集成主机节点302是主机处理器节点的例子,例如,图 1所述的小集成主机节点144。在该实例中,小集成主机节点302包括两个处理器I/0层次300 和303,这两个处理器I/O层次300和303通过链路301互连。在所 图示的实例中,处理器I/0层次300包括处理器芯片304,该处理器 芯片304代表一个或者多个处理器和关联高速緩冲器。处理器芯片304 通过链路308连接存储器312。在处理器芯片上的一个链路,例如链 路330,连接PCI系列适配器,例如,PCI系列适配器345。处理器 芯片304具有一个或者多个PCI系列(即,PCI、 PCI-X、 PCI-Express 或者任何下一代PCI)链路,其用来通过PCI链路(例如,链路316、 330和324 )连接PCI系列I/O桥或者PCI系列I/O适配器,例如, PCI系列适配器344和PCI系列适配器345。 PCI系列适配器345也 可以用来通过经由交换机或者路由器(例如,交换机或者路由器360 ) 的链路与网络(例如,网络364)连接。PCI系列适配器344可以用 来通过链路348与直接连接存储器352连接。现在转到图4,根据本发明的优选实施例示出大主机节点的功能 框图,大主机节点402是主机处理器节点的例子,例如,图l所示的 大主机节点124。在该实例中,大集成主机节点402包括两个处理器I/0层次400 和403,这两个处理器I/O层次400和403通过链路401互连,在图 4所示的实例中,处理器I/O层次400包括处理器芯片404,该处理 器芯片404代表一个或者多个处理器和关联高速緩冲器。处理器芯片 404通过链路408连接存储器412。在处理器芯片上的一个链路,例 如链路440,连接PCI系列I/O集线器,例如,PCI系列I/O集线器 441。PCI系列I/O集线器使用网络442连接PCI系列1/0桥448。即,PCI系列I/O桥448通过链路432连接交换机或者路由器436,并且, 交换机或者路由器436通过链路443连接PCI系列I/O集线器441。 网络442允许PCI系列I/O集线器和PCI系列I/O桥置于不同的封装 中。PCI系列I/O桥448具有一个或者多个PCI系列(即,PCI、PCI-X、 PCI-Express或者任何下一代PCI)链路,其用来通过PCI链路(例 如,链路444、 446和452 )连接其它的PCI系列I/O桥或者PCI系 列I/O适配器,例如,PCI系列适配器456和PCI系列适配器457。 PCI系列适配器456可以用来通过链路460与直接连接存储器476连 接。PCI系列适配器457也可以用来通过经由例如交换机或者路由器 472的链路468与网络464连接,接下来转到图5,根据本发明的优选实施例示出对包含在PCI 总线事务500和PCI-X总线事务520中的各阶段的图例.PCI总线事 务500描述形成通过用于常规PCI的PCI结构传输的信息单元的常 规PCI总线事务。PCI-X总线事务520描述形成通过用于PCI-X的 PCI结构传输的信息单元的PCI-X总线事务。PCI总线事务500显示三个阶段地址阶段508;数据阶段512; 以及周转循环516。此外所示出的是对下一个传输504的仲裁,其可 以与地址阶段、数据阶段和周转阶段同时发生。对于PCI,使用包含 在地址阶段中的地址来将总线事务从适配器发送到主机以及从主机 发送到适配器。PCI-X事务520显示五个阶段地址阶段528;属性阶段532; 响应阶段560;数据阶段564和周转循环566。此外所示出的是对下 一个传输524的仲裁,其可以与地址阶段、属性阶段、响应阶段、数 据阶段和周转循环阶段同时发生。与常规PCI相似,PCI-X使用包含 在地址阶段中的地址来将总线事务从适配器发送到主机以及从主机 发送到适配器。但是,PCI-X增加属性阶段532,该属性阶段532包 含限定总线事务请求者的三个字段,即请求者总线号544、请求者 装置号548和请求者功能号552 (在本文总称为BDF).总线事务还 包含标记540,该标记相对于在请求者和响应者之间未完成的其它总
线事务唯一地识别该特定总线事务。字节计数556包含对正发送的字 节的数目的计数。现在转到图6,根据本发明的优选实施例示出包含在 PCI-Express总线事务中的各个阶段的图例。PCI-E总线事务600形 成通过用于PCI-E的PCI结构传输的信息单元。PCI-E总线事务600显示六个阶段帧阶段608;序列号612; 报头664;数据阶段668;循环冗余检查(CRC )672;以及帧阶段680。 PCI-E报头664包含在PCI-Express规格中定义的一组字段。请求者 标识符(ID)字段628包含限定总线事务请求者的三个字段,即请 求者总线号684、请求者装置号688和请求者功能号692。 PCI-E报 头还包含标记652,该标记相对于在请求者和响应者之间未完成的其 它总线事务唯一地识别该特定总线事务。长度字段644包含对正发送 的字节的数目的计数。现在参照图7,根据本发明的优选实施例示出PCI适配器(例如, PCI系列适配器736)以及在主机硬件(例如,可以具有I/O集线器 或者I/O桥的处理器)(例如,主机硬件700 )上运行的固件和软件。图7还示出在主机硬件700上运行的逻辑分区(LPAR)管理器 708。 LPAR管理器708可以实施为由美国纽约市的International Business Machines, Inc. of Armonk制造的Hypervisor。 LPAR管理器 708可以在固件、软件或者二者的组合上运行。LPAR管理器708宿 主两个系统映像(SI)分区,例如,系统映像712和系统映像724 (示 例性地指定系统映像1和系统映像2).该系统映像分区可以是在软 件上运行的各自操作系统、在软件上运行的特殊目的映像(例如,存 储块服务器或者存储文件服务器映像)、或者在固件上运行的特殊目 的映像。在这些系统映像上可以运行应用程序,例如,应用程序716、 720、 728和732 (示例性地指定应用程序IA、应用程序2、应用程序 1B和应用程序3).应用程序716和728代表公共应用程序的单独的 例子,因此,用相应的标号"IA"和"IB"示例性地指定.在所图示的实 例中,应用程序716和720在系统映像712上运行,应用程序728和 732在系统映像724上运行。如本文所指,虚拟主机包括系统映像(例 如,系统映像712)或者在系统映像中运行的系统映像和应用程序的 组合。因此,在图7中示出两个虚拟主机。PCI系列适配器736包含一组物理适配器配置资源740和物理适 配器内存资源744。物理适配器配置资源740和物理适配器内存资源 744包含描述PCI系列适配器736可以支持的虚拟适配器的数目和分 配给每一个虚拟适配器的物理资源的信息。如本文所指,虚拟适配器 是与逻辑分区(例如,系统映像712和在系统映像712上运行的应用 程序716及720)相关联的物理适配器资源的子集(例如,物理适配 器资源和物理适配器内存的子集)的分配。给LPAR管理器708提供 物理配置资源接口 738和物理内存配置接口 742,以在适配器的初始 配置和重配置期间读入和写入物理适配器配置资源和内存空间。通过 物理配置资源接口 738和物理配置内存接口 742, LPAR管理器708 创建虚拟适配器,并且分配物理资源^ :一个虚拟适配器。LPAR管 理器708可以使用一个系统映像(例如,特殊软件或者固件分区)作 为主机分区,该主机分区使用物理配置资源接口 738和物理配置内存 接口 742,以执行虚拟适配器初始配置和重配置功能的一部分或者甚 至全部。图7示出配置有两个虚拟适配器的PCI系列适配器736的配置。 笫一虛拟适配器(指定的虚拟适配器1)包括通过与系统映像712 (指 定的系统映像l)相关联的LPAR管理器708分配的虚拟适配器资源 748和虚拟适配器内存752.类似地,第二虚拟适配器(指定的虚拟 适配器2 )包括通过LPAR管理器708分配给虚拟适配器2并与另一 系统映像724 (指定的系统映像2)相关联的虚拟适配器756和虚拟 适配器内存760.关于用于连接一个直接连接存储器(例如,图l所 示的直接连接存储器108、 132或者156)的适配器,虚拟适配器资源 的例子可以包括 一关联物理盘列表、 一关联逻辑单元号列表和一关 联适配器功能列表(例如,不昂贵磁盘冗余阵列(RAID)级别). 关于用于连接网络(例如,图1的网络120)的适配器,虚拟适配器
资源的例子可以包括 一关联链路级别标识符列表、 一关联网络级别 标识符列表、 一关联虚拟结构标识符列表(例如,用于以太网结构的 虚拟LAN ID、用于光纤通道结构的N-端口 ID和用于InfiniBand结 构的区分键)、和一关联网络层功能列表(例如,网络卸载服务)。在LPAR管理器708配置PCI系列适配器736之后,允许每一 个系统映4象仅仅与通过LPAR管理器708同该系统映4象相关联的虚拟 适配器通信。如图7 (实线)所示,允许系统映像712与虚拟适配器 1的虚拟适配器资源748和虚拟适配器内存752直接通信。不允许系 统映像712与如图7的虚线所示的虚拟适配器2的虚拟适配器资源756 和虚拟适配器内存760直接通信。类似地,允许系统映像724与虚拟 适配器2的虚拟适配器资源756和虚拟适配器内存760直接通信,不 允许系统映像724与虚拟适配器1的虚拟适配器资源748和虚拟适配 器内存752直接通信。现在参照图8,根据本发明的优选实施例示出在主机节点(例如, 图1所示的小主机节点100、大主机节点124或者小集成的主机节点 144)内的部件(例如,处理器、1/0集线器或者1/0桥800)的图例, 所述主机节点通过PCI-X或者PCI-E链路(例如,PCI-X或者PCI-E 链路808)连接PCI系列适配器,例如,PCI系列适配器804。图8示出在系统映像(例如,系统映像712或者724 )或者LPAR 管理器708执行PCI-X或者PCI-E总线事务(例如,主机至适配器 PCI-X或者PCI-E总线亊务812)时,处理器、1/0集线器、或者连 接PCI-X或者PCI-E链路808的I/O桥800填入总线号、装置号和在 PCI-X或者PCI-E总线事务中的功能号字段,所述链路发送主机至适 配器PCI-X或者PCI-E总线亊务812。处理器、I/O集线器、或者I/O 桥具有两个选择方案用于如何填入这三个字段对于使用处理器、I/O 集线器、或者i/o桥的所有软件部件,可以使用相同的总线号、装置 号和功能号;或者,对于使用处理器、1/0集线器、或者I/0桥的每 一个软件部件,可以使用不同的总线号、装置号和功能号。该亊务的 发起者可以是软件部件,例如,系统映像712或者系统映像724 (或
者,在系统映像上运行的应用程序),或者可以是LPAR管理器708。 如果对于所有的事务发起者,处理器、I/O集线器或者I/O桥800 使用相同的总线号、装置号和功能号,则在软件部件发起PCI-X或者 PCI-E总线事务(例如,主机至适配器PCI-X或者PCI-E总线事务 812)时,处理器、1/O集线器或者I/O桥800将处理器、1/0集线器 或者I/O桥的总线号置于PCI-X或者PCI-E总线事务的请求者总线 号字段820 (例如,图5所示的PCI-X事务的请求者总线号544字段 或者图6所示的PCI-E事务的请求者总线号684字段)中。类似地, 处理器、I/O集线器或者I/O桥800将处理器、I/O集线器或者I/O桥 的装置号置于PCI-E总线事务的请求者装置号824字段,例如,图5 所述的请求者装置号548字段或者图6所示的请求者装置号688字段。 最后,处理器、1/O集线器或者I/O桥800将处理器、1/0集线器或者 I/O桥的功能号置于PCI-X或者PCI-E总线事务的请求者功能号828 字段,例如,图5所示的请求者功能号552字段或者图6所示的请求 者功能号692字段。处理器、I/O集线器或者I/O桥800也将所述PCI-X 或者PCI-E总线事务所作为目标的物理适配器或者虚拟适配器内存 地址置于PCI-X或者PCI-E总线事务中,如图8中的适配器资源或 者地址816字段所示。如果对于每一个事务发起者,处理器、I/O集线器或者I/O桥800 使用不同的总线号、装置号和功能号,则处理器、1/0集线器或者I/0 桥800分配总线号、装置号和功能号给事务发起者.当软件部件发起 PCI-X或者PCI-E总线亊务(例如,主机至适配器PCI-X或者PCI-E 总线亊务812 )时,处理器、I/O集线器或者I/O桥800将软件部件的 总线号置于PCI-X或者PCI-E总线事务的请求者总线号820字段, 例如,图5所示的请求者总线号544字段或者图6所示的请求者总线 号684字段。类似地,处理器、1/O集线器或者I/O桥800将软件部 件的装置号置于PCI-X或者PCI-E总线事务的请求者装置号824字 段,例如,图5所示的请求者装置号548字段或者图6所示的请求者 装置号688。最后,处理器、1/O集线器或者I/O桥800将软件部件的
功能号置于PCI-X或者PCI-E总线事务的功能号828字段,例如, 图5所示的请求者功能号552字段或者图6所示的请求者功能号692 字段。处理器、1/0集线器或者I/O桥800也将所述PCI-X或者PCI-E 总线事务所作为目标的物理适配器或者虚拟适配器内存地址置于 PCI-X或者PCI-E总线事务中,如图8中的适配器资源或者地址816 字段所示。图8还示出,当物理适配器或者虚拟适配器806执行PCI-X或 者PCI-E总线事务(例如,适配器至主机PCI-X或者PCI-E总线亊 务832 )时,连接PCI-X或者PCI-E链路808的PCI系列适配器(例 如,物理系列适配器804)将与发起总线事务的物理适配器或者虚拟 适配器相关联的总线号、装置号和功能号置于请求者总线号、装置号 和功能号836, 840和844字段。显著地,为了支持一个以上的总线 号或者装置号,PCI系列适配器804必须支持一个或者多个内部总线 (对于PCI-X适配器,参见PCI-X附录至PCI局部总线规格l.O或 者1.0a版;对于PCI-E适配器,参见PCI-Express基础规格1.0或 者l.Oa版,其细节以引用方式并入本文中)。为了执行该功能,LPAR 管理器708通过分配总线号、装置号和功能号给物理适配器或者虚拟 适配器来将每一个物理适配器或者虚拟适配器与软件部件相关联。当 物理适配器或者虚拟适配器发起适配器至主机PCI-X或者PCI-E总 线事务时,PCI系列适配器804将物理适配器或者虚拟适配器的总线 号放置在PCI-X或者PCI-E总线亊务的请求者总线号836字段,例 如,图5所示的请求者总线号544字段或者图6所述的请求者总线号 684 (在图8中示出为适配器总线号836)。类似地,PCI系列适配器 804将物理适配器和虚拟适配器的装置号置于PCI-X或者PCI-E总线 事务的请求者装置号840字段,例如,图5所示的请求者装置号548 字段或者图6所述的请求者装置号688字段(在图8中示出为适配器 装置号840) . PCI系列适配器804将物理适配器或者虚拟适配器的 功能号置于PCI-X或者PCI-E总线事务的请求者功能号844字段, 例如,图5所述的请求者功能号552字段或者图6所示的请求者功能
号692字段(在图8中示出为适配器功能号844)。最后,PCI系列 适配器804也将通过物理适配器或者虚拟适配器所关联并作为目标的 软件部件的内存地址置于PCI-X或者PCI-E总线事务中的主机资源 或者地址848字段。现在参照图9,示出根据本发明的优选实施例描述的具有两个虚 拟适配器的PCI适配器的功能框图。范例的PCI系列适配器900配 置有两个虚拟适配器916和920 (示例性地指定虚拟适配器1和虚拟 适配器2) . PCI系列适配器900可以包含一个(或者多个)PCI系 列适配器端口 (在本文中也称为上游端口 ),例如,PCI-X或者PCI-E 适配器端口 912。 PCI系列适配器900也可以包含一个(或者多个) 装置或者网络端口 (在本文中也称为下游端口 ),例如,物理端口 904 和物理端口 908。图9也示出在PCI适配器上可以虚拟化的资源类型。可以虚拟 化的PCI系列适配器900的资源包括处理队列、地址和配置内存、PCI 端口、主机内存管理资源和装置或者网络端口。在所图示的实例中, 分配给虚拟适配器916的PCI系列适配器900的虚拟化资源包括,例 如,处理队列924、地址和配置内存928、 PCI虚拟端口 936、主机内 存管理资源984 (例如,InfiniBand或者iWARP上的内存区域注册 和内存窗粘结资源)和虚拟装置或者网络端口,例如,虚拟外部端口 932和虚拟外部端口 934 (更通常称为虚拟端口 )。类似地,分配给 虚拟适配器920的PCI系列适配器900的虚拟化资源包括,例如,处 理队列940、地址和配置内存944、 PCI虚拟端口 952、主机内存管理 资源980和虚拟装置或者网络端口,例如,虚拟外部端口 948和虚拟 外部端口 950。接下来转到图10,根据本发明的优选实施例示出在PCI系列适 配器(例如,图9所示的PCI系列适配器900)上的访问控制等级的 功能框图。三个访问等级是超特权物理资源分配等级IOOO、特权虚拟 资源分配等级1008和非特权等级1016。在超特权物理资源分配等级IOOO上执行的功能包括,但不限于
PCI系列适配器询问;创建、修改和删除虚拟适配器;提交和检索工 作;复位和恢复物理适配器;分配物理资源给虚拟适配器实例。PCI 系列适配器询问用来确定(例如)物理适配器类型(例如,光纤通道、 以太网、iSCSI、并行SCSI)、在物理适配器上支持的功能和被PCI 系列适配器支持的虚拟适配器的数目。LPAR管理器,例如,图7所 示的LPAR管理器708,执行与超特权物理资源分配等级1000相关 联的物理适配器资源管理1004功能。但是,LPAR管理器可以使用 系统映〗象,例如,1/0主机分区,以执行物理适配器资源管理1004功 能。在特权虚拟资源分配等级1008上执行的功能包括,例如,虚拟 适配器询问;分配和初始化虚拟适配器资源;通过虚拟适配器资源提 交和检索工作;以及,对于支持卸栽服务的虚拟适配器,分配和指定 虚拟适配器资源给中间件处理和线程实例。虚拟适配器询问用来确 定虚拟适配器类型(例如,光纤通道、以太网、iSCSI、并行SCSI) 和在虚拟适配器上支持的功能。系统映像,例如图7所示的系统映像 712,执行与虚拟资源分配等级1008相关联的特权虚拟适配器资源管 理1012功能.最后,在非特权等级1016上执行的功能包括,例如,询问已指 定给在非特权等级1016上运行的软件的虚拟适配器资源;以及通过 已指定给在非特权等级1016上运行的软件的虚拟适配器资源提交和 检索工作.应用程序,例如图7所示的应用程序716,执行与非特权 等级1016相关联的虚拟适配器访问库1020功能.接下来转到图11,根据本发明的优选实施例示出对PCI系列适 配器可用的主机内存地址的功能框图,PCI系列适配器1101是如上 面图9所述的可以虚拟化资源的PCI系列适配器900的例子。图ll描述四种不同的机制,通过这些机制,LPAR管理器708 可以将主机内存与系统映像和虚拟适配器相关联。 一旦主机内存与系 统映像和虚拟适配器相关联,虚拟适配器就可以执行DMA直接写入 和读入主机内存的操作。系统映像1108和1116是系统映像的例子,
例如上面就图7所述的系统映像712和724,分别与虚拟适配器1104 和1112相关联。虚拟适配器1104和1112是虚拟适配器的例子,例 如上面就图9所述的虚拟适配器916和920,包括虚拟适配器资源和 虚拟适配器内存的各自分配。第一种范例机制,即,LPAR管理器708可以用来使主机内存与 系统映像和一个或者多个虚拟适配器相关联、并使主机内存可用于系 统映像和一个或者多个虚拟适配器,将系统映像关联列表1122写入 虚拟适配器的资源。虚拟适配器资源1120包含一 PCI总线地址列表, 其中,在该列表中的每一个PCI总线地址通过硬件平台与系统映像 (SI)页(例如,分配给系统映像1108的SI 1第1页1128到SI 1 第N页1136)的起始地址相关联.虚拟适配器资源1120也包含页尺 寸,对于该列表中的所有页,页尺寸相等。在起初配置时,并且,在 重配置的期间,LPAR管理器708将系统映像关联列表1122装入虚 拟适配器资源1120。系统映像关联列表1122限定虚拟适配器1104可 以用于DMA读写操作的地址集。在创建系统映像关联列表1122之后, 虚拟适配器1104必须验证,通过系统映像1108请求的每一个DMA 写或者DMA读被包含在系统映像关联列表1122中的页内。如果通过 系统映像1108请求的DMA写或者DMA读被包含在系统映像关联列 表1122中的页内,则虚拟适配器1104可以执行操作。否则,禁止虚 拟适配器1104执行操作。或者,PCI系列适配器1101可以使用特殊 的LPAR管理器式虚拟适配器(而不是虚拟适配器1104 )执行检测, 以确定通过系统映像1108请求的DMA写或者DMA读是否被包含在 系统映像关联列表1122中的页内。以相似的方式,与系统映像1116 相关联的虚拟适配器1112验证通过系统映像1116提交的DMA写或 读请求。具体来说,虚拟适配器1112通过确定DMA写或读请求是否 在与系统映像1116的系统映像页相关联的系统映像关联列表(以与 系统映像关联列表1122相似的方式配置)中的页内来对来自系统映 像1116的DMA写读请求提供验证。第二种范例机制,即,LPAR管理器708可以用来使主机内存与
系统映像和一个或者多个虚拟适配器相关联、并使主机内存可用于系 统映像和一个或者多个虚拟适配器,将起始页地址和页尺寸写入虚拟适配器资源中的系统映像关联列表1122中。例如,虚拟适配器资源 1120可以包含单个PCI总线地址,该PCI总线地址通过硬件平台与 系统映像页(例如,SI 1第1页1128)的起始地址相关联。在虚拟 适配器资源1120中的映像关联列表1122也包含页尺寸。在起初配置 时,并且,在重配置期间,LPAR管理器708将页尺寸和起始页地址 装入虚拟适配器资源1120中的映像关联列表1122中。映像关联列表 1122限虚拟适配器1104可以用于DMA读写操作的地址集。在创建 映像关联列表1122之后,虚拟适配器1104验证通过系统映像1108 请求的每一个DMA写或者DMA读是否被包含在系统映像关联列表 1122中的页内。如果通过系统映像1108请求的每一个DMA写或者 DMA读是被包含在系统映像关联列表1122中的页内,则虚拟适配器 1104可以执行操作《否则,禁止虚拟适配器执行操作.或者,PCI系 列适配器1101可以使用特殊的LPAR管理器式虚拟适配器(而不是 虚拟适配器1104)执行检测,以确定通过系统映像1108请求的DMA 写或者DMA读是否被包含在系统映像关联列表1122中的页内。以相 似的方式,与系统映像1116相关联的虚拟适配器1112可以验证通过 系统映像1116提交的DMA写或读请求。具体来说,与系统映像关联 列表1122相关联的系统映像管理列表可以与虚拟适配器1112相关 联.与虚拟适配器1112相关联的系统映像关联列表装入与虚拟适配 器1112相关联的系统映像1116的系统映像页的页尺寸和起始页地 址。因此,与虚拟适配器1112相关联的系统映像关联列表提供这样 的机制,通过确定DMA写或者读请求是否在与系统映像1116的系统 映像页相关联的系统映像关联列表中的页内,验证来自系统映像1116 的DMA读写请求。第三种范例机制,即,LPAR管理器708可以用来使主机内存与 系统映像和一个或者多个虚拟适配器相关联、并使主机内存可用于系 统映像和一个或者多个虚拟适配器,将系统映像緩冲器关联列表1154
写入虚拟适配器的资源中。在图11中,虚拟适配器资源1150包含一 PCI总线地址对列表(起始地址和结束地址),其中,通过硬件平台, 将该列表中的每一对PCI总线地址与系统映像緩冲器的地址对(起始 地址和结束地址)相关联,例如,分配给系统映像1116的SI 2第1 緩沖器1166到SI1第N緩沖器1180。在起初配置时,并且,在重 配置期间,LPAR管理器708将系统映像緩沖器关联列表1154装入 虚拟适配器资源1150。该系统映像緩冲器关联列表1154限定虚拟适 配器1112可以用于DMA读写操作的地址集。在创建系统映像緩冲器 关联列表1154之后,虚拟适配器1112验证通过系统映像1116请求 的每一个DMA写或者DMA读被包含在系统映像緩冲器关联列表 1154的緩冲器内。如果通过系统映像1116请求的DMA写或者DMA 读被包含在系统映像緩冲器关联列表1154的緩冲器内,则虚拟适配 器1112可以执行操作,否则,禁止虚拟适配器1112执行操作。或者, PCI系列适配器1101可以使用特殊的LPAR管理器式虚拟适配器(而 不是虚拟适配器1112)执行检测,以确定通过系统映像1116请求的 DMA写操作或者DMA读操作是否被包含在系统映像緩冲器关联列 表1154的緩冲器内。以相似的方式,与系统映像1108相关联的虚拟 适配器1104可以验证通过系统映像1108提交的DMA写或者读请求。 具体来说,以与上面对系统映像1116和虚拟适配器1112所述的方式 相似的方式,虚拟适配器1104通过确定通过系统映像1108请求的 DMZ写或者读被包含在緩冲器管理列表的緩冲器内,对来自系统映 像1108的DMA读写请求提供验证,所述緩冲器关联列表包含与分配 给系统映像1108的緩冲器的系统映像緩冲器起始和结束地址对相关 联的PCI总线起始和结束地址对。笫四种范例机制,即,LPAR管理器708可以用来使主机内存与 系统映像和一个或者多个虚拟适配器相关联、并使主机内存可用于系 统映像和一个或者多个虚拟适配器,将系统映像緩冲器关联列表1154 中的单个起始和结束地址写入虚拟适配器的资源中。在图11中,虚拟适配器资源1150包含单对PCI总线起始和结束地址,该单对PCI
总线起始和结束地址通过硬件平台与同系统映像緩沖器(例如,SI 2 第1緩沖器1166)相关联的地址对(起始和结束地址)相关联。在起 初配置时,并且,在重配置期间,LPAR管理器708将SI2第l緩沖 器1166的起始和结束地址装入虚拟适配器资源1150中的系统映像緩 冲器关联列表1154中。然后,系统映像緩冲器关联列表1154限定虚 拟适配器1112可以用于DMA读写操作的地址集。在创建系统映像緩 冲器关联列表1154之后,虚拟适配器1112确认通过系统映像1116 请求的每一个DMA写或者DMA读是否被包含在系统映像緩冲器关 联列表1154内。如果通过系统映像1116请求的DMA写或者DMA 读被包含在系统映像緩冲器关联列表1154内,则虚拟适配器1112可 以执行操作。否则,禁止虚拟适配器1112执行操作。或者,PCI系 列适配器1101可以使用特殊的、LPAR管理器式虚拟适配器(而不 是虚拟适配器1150浙行检测,以确定通过系统映像1116请求的DMA 写或者DMA读是否被包含在页系统映像緩冲器关联列表1154内。以 相似的方式,与系统映像1108相关联的虚拟适配器1104可以验证通 过系统映像1108提交的DMA写或者读请求。具体来说,以与上面对 系统映像1116和虚拟适配器1112描述的方式相似的方式,虚拟适配 器1104通过确定通过系统映像1108请求的DMA写或者读是否被包 含在緩冲器关联列表中的緩冲器内来对来自系统映像1108的DMA读 写请求提供验证,所述緩冲器关联列表包含与分配给系统映像1108 的系统映像緩冲器起始和结束地址相关联的单个PCI总线起始和结 束地址.接着转到图12,根据本发明的优选实施例示出对系统映像可用 的配置有内存地址的PCI系列适配器的功能框图.图12示出四种不同的机制,通过这些机制,LPAR管理器可以 将PCI系列适配器内存与虚拟适配器(例如,虚拟适配器1204)和 系统映像(例如,系统映像1208)相关联。 一旦PCI系列适配器与 系统映像和虚拟适配器相关联,然后系统映像就可以执行直接到PCI系列适配器内存的内存映射i/o读写操作(即,存储和装入)。
在图ll和图12所示的系统映像和虚拟适配器配置之间存在明显 的不同之处。在图ll所示的配置中,PCI系列适配器1101仅仅保持 一主机地址列表,所述主机地址不具有与它们相关联的任何局部内 存。如果PCI系列适配器支持直通通信,则到达外部端口的数据可以 直接流过PCI系列适配器,并且通过DMA写直接传输到这些主机地 址。类似地,如果PCI系列适配器支持直通通信,则来自这些主机地 址可以直接流过PCI系列适配器,并且从外部端口传输出去。因此, 图11所示的PCI系列适配器1101不包含局部适配器内存,因此,不 能发起DMA操作。另一方面,图12所示的PCI系列适配器1201具 有与所述主机内存地址列表相关联的局部适配器内存。PCI系列适配 器1201可以发起(例如)从其局部内存到主机内存的DMA写或者从 主机内存到其局部内存的DMA读。类似地,主机可以发起(例如) 从其局部内存到PCI系列适配器内存的内存映射I/O写或者从PCI 系列适配器内存到主机局部内存的内存映射1/0读。第一种机制和第二种机制,即,LPAR管理器708可以用来使 PCI系列适配器内存与系统映像和虚拟适配器相关联、并使PCI系列 适配器内存可用于系统映像和虚拟适配器,将页尺寸和一页(第一种 机制)或者多页(第二种机制)的起始地址写入PCI系列适配器的物 理适配器内存转换表格1290中。在这种情况下,所有的页都具有相 同的尺寸。例如,图12示出页集,所述页在系统映像1208和虚拟适 配器1204之间映射,具体来说,将系统映像1208的SI1第1页1224 至SI1第N页1242映射(通过互连箭头示例性地示出)到物理适配 器1201局部内存的虚拟适配器内存页1224-1232.对于系统映像1208, 在该列表中的所有页1224-1242具有相同的尺寸.在起初配置时,在 重配置期间,LPAR管理器708用页尺寸和一页或者多页的起始地址 装入PCI系列适配器的物理适配器内存转换表格1290。然后,物理 适配器内存转换表格1290可以限定虚拟适配器1204可以用于DMA 读写操作的地址集。在创建物理适配器内存转换表格1290之后,PCI 系列适配器1201 (或者虚拟适配器1204 )验证通过系统映像1208请
求的每一个DMA写或者DMA读是否被包含在物理适配器内存转换 表格1290中并与虚拟适配器1204相关联。如果系统映像1208请求 的DMA写或者DMA读被包含在物理适配器内存转换表格1290中并 与虚拟适配器1204相关联,则虚拟适配器1204可以执行操作。否则, 禁止虚拟适配器1204执行操作。物理适配器内存转换表格1290也限 定系统映像1208可以用于内存映射I/0( MMIO )读写操作的地址集。 在创建物理适配器内存转换表格1290之后,PCI系列适配器1201(或 者虚拟适配器1204)验证通过系统映4象1208请求的内存映射I/O写 或者读是否被包含在物理适配器内存转换表格1290中并与虚拟适配 器1204相关联。如果通过系统映像1208请求的MMIO写或者MMIO 读被包含在物理适配器内存转换表格1290中并与虚拟适配器1204相 关联,则虚拟适配器1204可以执行操作。否则,禁止虚拟适配器1204 执行操作。应该理解,以与PCI系列适配器1201 (或者虚拟适配器 1212)验证通过系统映像1216请求的DMA操作和MMIO操作的方 式相似的方式,配置其它系统映像和关联虚拟适配器,例如,系统映 像1216和虚拟适配器1212。第三种机制和第四种机制,即,LPAR管理器708可以用来使 PCI系列适配器内存与系统映像和虚拟适配器相关联、并使PCI系列 适配器内存可用于系统映像和虚拟适配器,将一个(第三种机制)或 者多个(第四种机制)緩冲器起始和结束地址(或者,起始地址和长 度)写入PCI系列适配器的物理适配器内存转换表格1290中。在这 种情况下,緩冲器可以具有不同的尺寸.例如,图12示出不同尺寸 的一组緩冲器,所述緩冲器在系统映像1216和虚拟适配器1212之间 映射。具体来说,系统映像1216的SI 2第1緩冲器1244至SI 2第N 緩冲器1248映射到虚拟适配器1212的虚拟适配器緩冲器1258-1274。 关于系统映像1216,在该列表中的緩冲器具有不同的尺寸。在起初配 置时,并且,在重配置期间,LPAR管理器708将一页或者多页的起 始和结束地址(或者起始地址和长度)装入PCI系列适配器的物理适 配器内存转换表格1290。然后,物理适配器内存转换表格1290限定
虚拟适配器1212可以用于DMA读写操作的地址集。在创建物理适配 器内存转换表格1290之后,PCI系列适配器1201(虚拟适配器1212) 验证通过系统映像1216请求的每一个DMA写或者DMA读是否被包 含在物理适配器内存转换表格1290中并与虚拟适配器1212相关联。 如果通过系统映像1216请求的DMA写或者DMA读被包含在物理适 配器内存转换表格1290中并与虚拟适配器1212相关联,则虚拟适配 器1212执行操作。否则,禁止虚拟适配器1212执行操作。物理适配 器内存转换表格1290也限定系统映像1216可以用于内存映射I/O (MMIO)读写操作的地址集。在创建物理适配器内存转换表格1290 之后,PCI系列适配器1201 (虚拟适配器1212)验证通过系统映像 1216请求的MMIO写或者读是否被包含在物理适配器内存转换表格 12卯中并与虚拟适配器1212相关联。如果通过系统映像1216请求的 MMIO写或者读被包含在物理适配器内存转换表格1290中并与虚拟 适配器1212相关联,则虚拟适配器1212可以执行操作。否则,禁止 虚拟适配器1212执行操作。应该理解,以与PCI系列适配器1201(或 者虚拟适配器1204)發征通过系统映像1216请求的DMA操作和 MMIO操作的方式相似的方式,配置其它系统映像和关联虚拟适配 器,例如,系统映像1208和关联虚拟适配器1204。接下来,转到图13,根据本发明的优选实施例示出PCI系列适 配器和物理地址内存转换表格(例如,緩冲器表格或者页表格)的功 能框图.困13也示出如何可以使用在输入PCI总线亊务1304中引用的 地址来查询与内存地址相关联的虚拟适配器资源(包括映射到主机地 址的局部PCI系列适配器内存地址)(例如,虚拟适配器资源1398 或者虚拟适配器1394资源)的四种机制.第一机制是,将输入PCI总线事务1304的内存地址与緩冲器表 格1390中的高地址1316和低地址1320中的每一行比较.如果输入 PCI总线事务1304具有低于高地址1316单元的内容并高于低地址 1320单元的内容的地址,则输入PCI总线事务1304在与相应的虚拟 适配器相关联的高地址和低地址单元之内。在这种情况下,允许输入PCI总线事务1304在匹配的虚拟适配器上执行。或者,如果输入PCI 总线事务1304具有不在高地址1316单元的内容和低地址1320单元 的内容之间的地址,则禁止完成或者处理输入PCI总线事务1304。 第二种机制仅仅允许在每一个虚拟适配器的緩冲器表格1390中的单 个输入。第三种机制是,将输入PCI总线事务1304的内存地址与每一行 页起始地址1322和每一行页起始地址1332加上页表格1392中的页 尺寸比较。如果输入PCI总线事务1304具有高于或者等于页起始地 址1322单元的内容并低于页起始地址1322单元加上页尺寸的地址, 则输入PCI总线事务1304在与虚拟适配器相关联的页内。因此,允 许输入PCI总线事务1304在匹配的虚拟适配器上执行。或者,如果 输入PCI总线事务1304具有不在页起始地址1322单元的内容和页起 始地址1322单元加上页尺寸之内的地址,则禁止完成输入PCI总线 事务1304。第四种机制仅仅允许在每一个虚拟适配器的页表格1392 中的单个输入。接下来,参照图14,根据本发明的优选实施例示出PCI系列适 配器和物理地址内存转换表格(例如,緩冲器表格、页表格或者间接 局部地址表格)的功能框图.图14也示出如何使用在输入PCI总线事务1404中引用的请求 者总线号(例如,主机总线号1408)、请求者装置号(例如,主机装 置号1412)和请求者功能号(例如,主机功能号1416)来给緩冲器 表格1498、页表格1494或者间接局部地址表格1464编索引的几种机 制。緩冲器表格1498代表图13所示的緩冲器表格1390。页表格1490 代表图13所示的页表格1392。局部地址表格1464包含局部PCI系 列适配器内存地址,局部PCI系列适配器内存地址引用緩冲器表格 (例如,緩沖器表格1438)或者页表格(例如,页表格1434),所 述表格仅仅包含映射到同一虚拟适配器上的主机内存地址.在输入PCI总线事务1404中引用的请求这总线号(例如,主机 总线号1408)、请求者装置号(例如,主机装置号1412)和请求者 功能号(例如,主机功能号1416)提供由主机LPAR管理器建立的 内存地址映射之外的附加检查。接下来,转到图15,根据本发明的优选实施例示出虚拟适配器 等级管理方法。在该方法中,物理或者虛拟主机创建一个或者多个虚 拟适配器(例如,虚拟适配器1514),每一个包含在物理适配器(例 如,PCI适配器1532)的范围内的资源集。每一个虚拟适配器与主机 侧系统映像相关联。虚拟适配器包含物理适配器的资源集(或者虚拟 化的或者分区的)。通过限定虚拟适配器实体,通过指导对相应的虚 拟适配器的操作,可以联合地操作与系统映像相关联的所有虚拟资 源。例如,通过执行将相应的虚拟适配器作为目标的功能,可以创建、 破坏和修改虚拟适配器(以及,所有包含的虚拟资源)。另外,虚拟 适配器管理方法允许虚拟适配器的所有资源用与虚拟适配器相关联 的单个标识符(例如,总线号、装置号和功能号)识别。与虚拟适配 器1514相关联的资源集可以包括,例如处理队列和关联资源1504; 用于在PCI物理适配器1532上包含的一个或者多个适配器PCI端口 1528的适配器PCI端口 1528;与在适配器PCI端口 1528上的一个 可能的地址相关联的PCI虚拟端口 1506;用于每一个下游物理端口 的一个或者多个下游物理端口 1518和1522;与在物理端口 1518和 1522上的一个可能的地址相关联的下游虚拟端口 1508和1510;以及 一个或者多个地址转换和保护表格(ATPT) 1512。如本文所指的虚 拟端口包括帮助从输入/输出适配器的一个或者多个资源接收数据、并 发送数据给输入/输出适配器的一个或者多个资源的软件实体.虚拟端 口与在输入/输出适配器上部署的端口相关联或者被映射到其上.例 如,虚拟端口可以与适配器PCI端口相关联,通过该适配器PCI端 口所述输入/输出适配器与连接到外围或者网络的适配器上的主机或 者物理端口连接。虚拟端口具有关联标识符(例如,地址、指针)或 者用于引用所述虚拟适配器的另一合适的标识符.单个端口,例如, 在输入/输出适配器上的PCI端口或者物理端口可 关联的虚拟端口。另外,虚拟端口优选配置成表现其所映射的物理端 口的一种或者多种特性。在实体(例如,系统映像或者应用程序)使用虚拟适配器执行输 入/输出操作时,随后该虚拟适配器可以被破坏,以防止残余数据在系 统分区之间迁移,例如,从一个系统映像到另一个系统映像。例如, 假设在输入/输出事务期间以及在该事务完成之后第 一 系统映像访问 虚拟适配器,然后,在该虚拟适配器被破坏时该系统映像终止。虚拟 适配器的解构包括解除分配给该虚拟适配器的资源。然后,所解除的 资源可以稍后分配给随后初始化的虚拟适配器。为了防止数据在系统 分区之间迁移,在虚拟适配器破坏操作期间,被虚拟适配器资源维持 的任何数据从其清除。有利地,在创建虚拟适配器的过程中促进了系 统映像数据隔离,该虚拟适配器的创建使用先前分配给后来被破坏的 接着,参照图16,根据本发明的优选实施例示出分配给物理适 配器的一个或者多个虚拟适配器的范例虚拟适配器破坏操作的流程 图。所述的范例虚拟适配器破坏操作在使用上面图15所述的虚拟适 配器管理技术的物理适配器上执行。通过用户管理接口或者自动的脚本/工作流,调用破坏一个或者 所有的虚拟适配器的请求。在破坏请求中所引用的虚拟适配器可以通 过各种属性或者标识符中的任何一个限定。表A总结可用于引用破坏 请求中的一个或者多个虚拟适配器的范例属性。
表A属性类型描述下游虚拟ID可选的与被复位的虚拟适配器相关联的下游网络 ID: -对于光纤通道,N-端口 ID; -对于以太网,MAC地址; -对于以太网VLAN, VLANID; -对于IP, IP地址; -对于SCSI主机,发起者ID; -对于SCSI目标,目标ID,虚拟适配器的总 线/装置/功能号可选的仅仅用于PCI-X和PCI-E适配器。与被复 位的虚拟适配器相关联的PCI总线号、装置 号和功能号(总线/装置/功能号#)用于虚拟适配器 的MSI等级可选的对于能够支持消息信号中断(MSI)的适配 器,与被复位的虚拟适配器相关联的消息信 令中断。虚拟适配器ID可选的与被复位的虚拟适配器相关联的虚拟适配 器ID。LPAR管理器使用物理适配器的内存管理接口 (即,用于虚拟适 配器配置管理的内存映射I/O地址)来请求物理适配器破坏一个或者 多个虚拟适配器(步骤1602)。该请求可以直接从LPAR管理器传 送,或者,另一可选的方式是,可以通过代表LPAR管理的中介物(例 如,系统映像)发送。表A所述的一个或者多个属性或者合适的替代 物可以被包含在传送给所述物理适配器的请求中,以引用要破坏的虚 拟适配器。所述物理适配器进行检查,以知道所述请求是否用于解构所有的 虚拟适配器(步骤1604 ).即,所迷物理适配器进行检查,以确定破 坏请求是否是用于物理破坏的请求。如果所述请求是物理破坏请求, 物理适配器破坏所有的虚拟适配器(步骤1606)。例如,物理适配器 可以复位所有的虚拟适配器,并且通过释放与虚拟适配器相关联的所 有资源而破坏它们。虚拟适配器破坏操作然后返回所述操作结果到 LPAR管理器,即如果虚拟适配器成功地被破坏,确定虚拟适配器 破坏;或者,另一可选的方式是,如果由于一定原因而虚拟适配器不 能被破坏,出错代码(步骤1616)。
再次返回到步骤1604,在虚拟适配器破坏请求不是物理破坏请 求的情况,虚拟适配器破坏操作继续确定所述破坏请求是否是正常的 虚拟适配器虚拟破坏请求(步骤1608 )。正常的虚拟适配器破坏是在 虚拟适配器上执行的破坏操作,其允许在虚拟适配器上未完成的操作 在解构虚拟适配器之前完成。异常的或者强迫的虚拟适配器破坏是这 样的虚拟适配器破坏操作,其不管在虚拟资源上是否有未完成的工作 或者未执行或未决,该虚拟适配器操作也执行虚拟适配器解构。在由 于错误条件而没有成功地执行正常的破坏请求时,可以(例如)执行 异常的破坏请求。如果虚拟适配器破坏请求不是正常的破坏请求,则 虚拟适配器破坏操作进行破坏现有的虚拟适配器(步骤1612 ),例如, 通过立即释放与在虚拟适配器破坏请求中所引用的虚拟适配器相关 联的所有资源。
再次返回到步骤1608,在虚拟适配器破坏请求被识别为正常的 虚拟适配器破坏请求的情况,物理适配器评价对于在虚拟适配器破坏 请求中引用的虚拟适配器任何I/0事务是否未完成的(步骤1610)。 如果确定没有I/O事务用于所述破坏请求所引用的虚拟适配器,则物 理适配器进行破坏在根据步骤1612的破坏请求中引用的虚拟适配器。
再次返回到步骤1610,如果确定任何未完成的I/O事务用于所 述虚拟适配器,则所述虚拟适配器破坏操作等待所确定的未完成的 I/O事务直到成功完成或者超时(步骤1614)。然后,根据步骤1612, 虚拟适配器破坏操作进行破坏现有的虚拟适配器.在所述物理适配器 破坏所述虚拟适配器并释放与所破坏的虚拟适配器相关联的资源之 后,根据步骤1616,所述物理适配器将操作的结果返回到LPAR管 理器。
权利要求
1.一种破坏在逻辑分区数据处理系统中的虚拟适配器的方法,该方法包括下述步骤调用一请求以破坏分配给物理适配器的至少一个虚拟适配器;传送所述请求给所述物理适配器;以及响应于通过所述物理适配器接收所述请求,释放分配给所述物理适配器上的所述虚拟适配器的资源,其中在释放所述资源时清除所述资源中的任何数据。
2. 根据权利要求1所述的方法,其中通过与逻辑分区管理器相 连接的用户管理接口执行所述调用步骤。
3. 根据权利要求l所述的方法,其中所述调用步骤还包括 通过与所述物理适配器连接的逻辑分区管理器,请求所述物理适配器通过所述物理适配器的内存管理接口破坏所述至少一个虚拟适 配器。
4. 根据权利要求1所述的方法,其中所述物理适配器包括外围 部件互连系列适配器。
5. 根据权利要求1所述的方法,其中所述至少一个虚拟适配器 包括多个虚拟适配器,该方法还包括识别所述请求作为物理虚拟适配器破坏请求,其中释放所述资源 包括释放所述多个虚拟适配器中的每一个的相应资源。
6. 根据权利要求1所述的方法,其中所述至少一个虚拟适配器 包括第一虚拟适配器,该方法还包括识别所述请求作为虚拟破坏请求,其中释放所述资源包括释放所 述第一虚拟适配器的资源。
7. 根据权利要求1所述的方法,其中所述请求包括识别所要破 坏的所述至少一个虚拟适配器之一的属性。
8. 根据权利要求1所述的方法,其中所述资源包括虚拟适配器 资源和虚拟适配器内存,以及其中所述虚拟适配器内存从所述物理适 配器的配置内存中被分配。
9. 一种用于破坏在逻辑分区数据处理系统中的虚拟适配器的计 算机程序产品,该计算机程序产品包括第一指令,其用于接收破坏分配在物理适配器上的至少一个虚拟适配器的请求;第二指令,其传送所述请求给所迷物理适配器;以及 第三指令,其响应于通过所述物理适配器接收所述请求而释放分配所述至少一个虚拟适配器的资源,其中在释放所述资源时清除在所述资源中保持的任何数据。
10. 根据权利要求9所述的计算机程序产品,还包括 笫四指令,其通过与逻辑分区管理器相连接的用户管理接口调用所述请求;
11. 根据权利要求9所述的计算机程序产品,其中所述至少一个 虚拟适配器包括多个虚拟适配器,所述计算机程序产品还包括笫四指令,其识别所述请求作为物理虚拟适配器破坏请求,其中释放所述资源包括释放所述多个虚拟适配器中的每一个的相应资源.
12. 根据权利要求9所述的计算机程序产品,其中所述至少一个 虚拟适配器包括第一虚拟适配器,所述计算机程序产品还包括 第四指令,其识别所述请求作为虚拟破坏请求,其中释放所述资 源包括释放所述第一虚拟适配器的资源。
13. 根据权利要求9所述的计算机程序产品,其中所述请求包括 识别所要破坏的所述至少 一 个虚拟适配器的属性。
14. 根据权利要求9所述的计算机程序产品,其中所述资源包括 虚拟适配器资源和虚拟适配器内存,其中所述虚拟适配器内存从所述 物理适配器的配置内存中被分配。
15. —种逻辑分区数据处理系统,包括 物理适配器,其具有多个被分配的虚拟适配器;内存,其包含多个系统映像,每一个系统映像分别与所述多个虚 拟适配器之一相关联;存储器,其包含作为一组指令集的逻辑分区管理器;以及 处理器,响应于所述指令的执行,该处理器产生一个请求以破坏 分配在所述物理适配器上的多个虚拟适配器的至少一个虚拟适配器, 并且传输所述请求给所述物理适配器,其中所述物理适配器释放分配 给所述虚拟适配器的资源,其中在释放所述资源时清除所述资源中的 任何数据.
16. 根据权利要求15所述的数据处理系统,其中所述存储器包 括系统固件。
17. 根据权利要求15所述的数据处理系统,其中所述物理适配 器包括外围部件互连系列适配器。
18. 根据权利要求15所述的数据处理系统,其中所述物理适配 器识别所述请求为物理虚拟适配器破坏请求,并且释放所述多个虚拟适配器中的每一个的相应资源。
19.根据权利要求15所述的数据处理系统,其中所述物理适配 器识别所述请求为虚拟破坏请求,并且释放与在所述虚拟破坏请求中 引用的虚拟适配器相关联的资源。20根据权利要求19所述的数据处理系统,其中,所述物理适配 器识别用于所述虚拟适配器的未完成的输入/输出事务,并且其中在完 成所述未完成的输入/输出事务或所述未完成的输入/输出事务超时之 后,所述物理适配器释放所述资源。
全文摘要
提供用于直接破坏与驻留在物理适配器中的一个或者多个虚拟适配器相关联的资源的方法、计算机程序产品和分布数据处理系统。提供用于直接破坏与驻留于物理适配器(例如,PCI、PCI-X或者PCI-E适配器)中的一个或者多个虚拟适配器相关联的资源的机制。
文档编号G06F9/455GK101120315SQ200680005123
公开日2008年2月6日 申请日期2006年2月22日 优先权日2005年2月25日
发明者利赫·沙利夫, 加亚·斯里克里什南, 吉奥拉·比兰, 哈维·G.·基埃尔, 理查德·L.·阿恩德特, 瓦蒂姆·马克赫尔瓦克斯, 雷纳多·J.·雷西奥 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1