CN104756081B - 一种故障处理的方法、计算机系统和装置 - Google Patents

一种故障处理的方法、计算机系统和装置 Download PDF

Info

Publication number
CN104756081B
CN104756081B CN201380001454.4A CN201380001454A CN104756081B CN 104756081 B CN104756081 B CN 104756081B CN 201380001454 A CN201380001454 A CN 201380001454A CN 104756081 B CN104756081 B CN 104756081B
Authority
CN
China
Prior art keywords
endpoint device
memory address
state
endpoint
access request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380001454.4A
Other languages
English (en)
Other versions
CN104756081A (zh
Inventor
林沐晖
王俊捷
王瑞玲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN104756081A publication Critical patent/CN104756081A/zh
Application granted granted Critical
Publication of CN104756081B publication Critical patent/CN104756081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

本发明实施例涉及一种故障隔离的方法、计算机系统和装置,能够对所述扩展域的第二端点设备的状态进行监控,并根据所述第二端点设备的状态建立设备状态记录,在接收到所述第二端点设备与所述主域之间的访问请求后,根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态,若所述第二端点设备的状态为故障状态,丢弃所述访问请求,从而阻止所述故障的第二端点设备与所述主域之间的通信,防止故障扩散到主域,保障了系统的可靠性。

Description

一种故障处理的方法、计算机系统和装置
技术领域
本发明实施例涉及计算机技术,特别是一种故障处理的方法、计算机系统和装置。
背景技术
高速外围组件互联(Peripheral Component Interconnect Express,PCIe)总线技术是用来互联CPU和外围设备的高性能总线技术。PCIe作为新一代的总线和接口标准,采用了串行互联方式,以点对点的形式进行数据传输,大大提高了传输速率,而且也为更高的频率提升创造了条件,广泛使用于工业服务器、PC、嵌入式计算/通信和工作站等,逐步取代了PCI,AGP等总线。目前,PCIe设备故障占据了系统所有故障的很大的一部分。实时地监控系统,识别出错误的发生,对系统故障进行检测和处理,可以有效避免系统运行的全面中断,是保证系统持续可用的一项RAS(Reliability、Availability、Serviceability)特性。
现有技术中,PCIe设备发生故障时可能产生错误报文,该错误报文从故障设备路由到根复合体,根复合体在获取到错误报文后将产生系统中断,向操作系统报告所述错误报文,操作系统根据所述错误报文进行错误处理。现有技术中,从故障设备产生错误报文到操作系统处理该错误报文,存在一个时间窗口,在这个时间窗口内,CPU或者其它PCIe端点设备与该故障设备仍然能够继续相互访问,无法有效隔离该故障设备,可能导致故障的扩散,影响了系统的可靠性。
发明内容
本发明实施例提出了一种故障处理的方法、计算机系统和装置,能够隔离故障设备,防止故障的扩散,提高系统的可靠性。
第一方面,本发明实施例提出了一种故障隔离的方法,用于PCIe互连的计算机系统,该计算机系统包括主域和扩展域,所述主域包括根复合体、第一端点设备与根复合体端点设备,所述扩展域包括所述根复合体端点设备与第二端点设备,所述方法包括:
监控所述扩展域的第二端点设备的状态;
根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系;
接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求;
根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态;
若所述第二端点设备的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
结合第一方面,在第一种可能的实现方式中,所述监控所述扩展域的第二端点设备的状态,包括:接收所述第二端点设备发送的错误消息,或者接收用于指示所述第二端点设备是否存在的设备探测响应消息;根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第二端点设备的标识信息包括所述第二端点设备的第一内存地址,所述第一内存地址为所述第二端点设备在所述主域的内存地址;所述根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系,包括:获取所述错误消息或者设备探测响应消息中携带的所述第二端点设备的总线/设备/功能BDF标识或第二内存地址,其中,所述第二内存地址为所述第二端点设备在所述扩展域的内存地址;根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址;在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址,包括:根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址;或者,根据保存的所述第二端点设备的BDF标识与第二内存地址之间的映射关系,获取所述第二端点设备的第二内存地址,根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址。
结合第一方面的第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,所述第二端点设备的第一内存地址包括配置空间访问的第一内存地址、消息信号中断访问的第一内存地址、内存映射输入输出访问的第一内存地址和直接内存存取访问的第一内存地址;则,所述在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系包括:在所述设备状态记录中记录所述第二端点设备的每种第一内存地址与所述第二端点设备的状态的对应关系。
第二方面,本发明实施例提出了一种故障隔离的装置,用于PCIe互连的计算机系统,该计算机系统包括主域和扩展域,所述主域包括根复合体、第一端点设备与根复合体端点设备,所述扩展域包括所述根复合体端点设备与第二端点设备,所述装置包括:
监控单元,用于监控所述扩展域的第二端点设备的状态;
记录单元,用于根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系;
接收单元,用于接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求;
确定单元,用于根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态;
处理单元,在所述第二端点设备的状态为故障状态时,用于丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
结合第二方面,在第一种可能的实现方式中,所述监控单元具体用于:接收所述第二端点设备发送的错误消息,或者接收用于指示所述第二端点设备是否存在的设备探测响应消息,根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第二端点设备的标识信息包括所述第二端点设备的第一内存地址,所述第一内存地址为所述第二端点设备在所述主域的内存地址;
所述记录单元具体包括:
地址转换模块子单元,用于在所述监控单元确定所述第二端点设备的故障状态时,获取所述错误消息或者所述设备探测响应消息中携带的所述第二端点设备的BDF标识或第二内存地址,根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址,其中,所述第二内存地址为所述第二端点设备在所述扩展域的内存地址;
状态记录子单元,用于在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述地址转换模块子单元还用于保存所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,以及保存所述第二端点设备的BDF标识与第二内存地址之间的映射关系;所述地址转换模块子单元具体用于根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址;或者,根据保存的所述第二端点设备的BDF标识与第二内存地址之间的映射关系,获取所述第二端点设备的第二内存地址,根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址。
结合第二方面的第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,所述第二端点设备的第一内存地址包括配置空间访问的第一内存地址、消息信号中断访问的第一内存地址、内存映射输入输出访问的第一内存地址和DMA访问的第一内存地址;所述地址转换模块子单元具体用于记录所述第二端点设备的每种第一内存地址与所述第二端点设备的对应关系。
在本发明实施例中,由于能够对扩展域的第二端点设备的状态进行监控,并根据所述第二端点设备的状态建立设备状态记录,在接收到所述第二端点设备与所述主域之间的访问请求后,根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态,若所述第二端点设备的状态为故障状态,丢弃所述访问请求,从而阻止所述故障的第二端点设备与所述主域之间的通信,防止故障扩散到主域,保障了系统的可靠性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种包含PCIe主域和扩展域的计算机系统的系统框图;
图2(a)为图1所示的计算机系统的主域和扩展域的端点设备的内存地址分配图;
图2(b)为图1所示的计算机系统的主域的内存地址与扩展域的内存地址的映射关系;
图3为本发明实施例一提供的故障隔离方法流程图;
图4为本发明实施例二提供的故障隔离方法流程图;
图5为本发明实施例三提供的故障隔离方法流程图;
图6为本发明实施例四提供的故障隔离方法流程图;
图7为本发明实施提供的一种故障隔离装置的组成图;
图8为本发明实施提供的一种故障隔离装置的组成图;
图9为本发明实施提供的一种故障隔离系统的组成图;
图10为本发明实施提供的一种故障隔离装置的组成图。
具体实施方式
本发明实施例提出了一种故障隔离的方法、计算机系统和装置,用于包含PCIe主域和扩展域的计算机系统,所述扩展域的根复合体端点设备为所述主域的端点设备,当所述扩展域的端点设备发生故障时,本发明实施例能够阻止所述主域与所述扩展域的端点设备之间的相互访问,避免了故障的扩散,保障了系统的可用性。
如图1所示为一种包含PCIe主域和扩展域的计算机系统的系统框图,所述计算机系统包括主域100和扩展域118,该计算机系统通过根复合体端点设备(RootComplex Endpoint,RCEP)106进行PCIe域的扩展,所述主域100包含根复合体(Root Complex,RC)102、交换器(Switch)104和至少一个PCIe端点设备107,所述根复合体102通过根端口103与交换器104的上游端口104A相连,所述交换器的104的下游端口104B与PCIe端点设备107相连,使得所述根复合体102通过所述交换器104与所述PCIe端点设备107相连,所述根复合体102可以集成在主CPU101上,上图中所述主域100以一个交换器为例,在其它的实施例中,所述主域100还可以包括多个交换器,每个交换器可以与一个或多个PCIe端点设备相连。
所述根复合体102用于处理和转发主CPU101与PCIe端点设备107之间的请求,所述交换器104用于将请求向下游路由给与下游端口104B相连接的PCIe端点设备,以及从每个独立的下游端口将请求向上游路由至单一的根复合体,还可以用于从一个下游端口向另一个下游端口路由请求,所述PCIe端点设备107具有发起请求和完成PCIe事物处理的功能,所述PCIe端点设备107可以是存储设备、网卡、声卡等。
所述主域100中的PCIe端点设备107中包括所述RCEP106,该RCEP106不仅能够发起请求和完成PCIe事物处理,而且由于其增加了与根复合体相同功能的硬件模块和设备驱动,可以实现扩展域118与主域100之间的连接,管理和转发扩展域118与主域100之间的请求。如图1所示,所述扩展域118包括:作为扩展域根复合体的RCEP106、交换器112和第二端点设备114和116(所述第二端点设备可以为多个,也可以为一个,本发明实施例以两个第二端点设备为例),通过交换器112,第二端点设备114和116分别与RCEP106相连,所述第二端点设备114和116可以是存储设备、网卡、声卡等,所述扩展域118还可以有多个根端口和多个交换器,每个交换器下可以连接多个端点设备。
图2为所述图1所示的计算机系统中主域和扩展域的端点设备的内存地址分配图,主CPU101的64位物理地址202(具体可以是内存映射输入输出MemoryMapped Input/Output,MMIO地址)可以被划分为所述主域的内存地址203和所述扩展域的内存地址204。
在图1所述的计算机系统中,系统加载所述主域的端点设备的驱动时,为每个主域的端点设备分配内存地址,例如为RCEP106和第一端点设备108分配内存地址,如图2(a)所示,MMIO地址202的一部分被分配给所述RCEP106,即所述RCEP106的内存地址205,MMIO地址202的另一部分被分配给所述第一端点设备108,即所述第一端点设备108的内存地址210,由于所述RCEP106和所述第一端点设备108都是所述主域的端点设备,因此所述内存地址205和内存地址210共同组成了主域的内存地址203。
在系统加载所述RCEP106的驱动时,所述系统检测到所述扩展域的所有第二端点设备114和116的驱动,触发对整个扩展域的所有第二端点设备进行扫描,为所述扩展域的每一个第二端点设备分配内存地址,具体地,所述MMIO地址202中的一部分被分配给所述扩展域的第二端点设备,即为所述第二端点设备分配第二内存地址(所述第二内存地址为所述第二端点设备在所述扩展域的内存地址,用于在扩展域中代表所述第二端点设备),例如图2(a)所示的第二端点设备114和116的第二内存地址206和207,其中,有多少个第二端点设备就有多少个第二端点设备的第二内存地址,本实施例中,以两个第二端点设备为例,则分配出第二端点设备的第二内存地址206和207。另外,除了为所述第二端点设备分配第二内存地址之外,还需要为所述第二端点设备分配第一内存地址(所述第一内存地址为所述第二端点设备在所述主域的内存地址,用于在主域中代表所述第二端点设备)。具体地,所述第二端点设备的第一内存地址主要为所述RCEP的内存地址的全部或者一部分,根据所述扩展域的第二端点设备的个数将所述RCEP的内存地址205进行分割,若所述第二端点设备为n个,则所述RCEP的内存地址205被分割成n个部分,每一部分内存地址对应于一个第二端点设备,如图2(a)所示的所述RCEP的内存地址205被划分为208和209两部分,其中208与第二端点设备114的内存地址206对应,为所述第二端点设备114的第一内存地址,209与第二端点设备116的内存地址207对应,为所述第二端点设备114的第一内存地址。
由于所述扩展域的第二端点设备114和116与所述主域之间进行消息交互时可以采用4种访问方式,具体为配置空间访问、消息信号中断(Message SignaledInterrupts,MSI)访问、内存映射输入输出MMIO访问和直接内存存取(DirectMemory Access,DMA)访问,所述系统为所述第二端点设备分配的第二内存地址206和第一内存地址208实际上分别可以为4种内存地址,如图2(b)主域的第一内存地址与扩展域的第二内存地址的映射关系所示,第二端点设备114的第二内存地址206可以被划分为:206a、206b、206c和206d,分别用于对所述第二端点设备114进行配置空间访问、MSI访问、MMIO访问和DMA访问时使用。所述系统为所述第二端点设备114分配该4种内存地址时,相应地还将所述RCEP的内存地址中的对应于所述第二端点设备114的第一内存地址208切割为4部分,具体为:配置空间地址208a、MSI地址208b、MMIO地址208c和DMA地址208d,所述第二端点设备的第一内存地址208a、208b、208c和208d分别与所述第二端点设备114的第二内存地址206a、206b、206c和206d存在映射关系,具体地,该映射关系可以通过地址偏移关系来体现,例如208a与206a之间存在第一地址偏移关系,208b与206b之间存在第二地址偏移关系,208c与206c之间存在第三地址偏移关系,208d与206d之间存在第四地址偏移关系。所述第二端点设备的第一内存地址与所述第二端点设备的第二内存地址之间的映射关系可以保存在所述RCEP106,例如保存在所述RCEP106的地址转换模块,所述地址转换模块保存了所述地址偏移关系,所述地址转换模块可以根据保存的第二内存地址与第一内存地址之间的映射关系进行地址转换。
系统对整个扩展域的第二端点设备进行扫描的过程中,除了为所述扩展域的每一个第二端点设备分配第二内存地址外,还为所述扩展域的每一个第二端点设备分配了总线/设备/功能(Bus/Device/Function,BDF)标识,所述第二端点设备的BDF标识与所述第二端点设备的第二内存地址之间存在映射关系,所述RCEP可以保存所述映射关系,例如,所述RCEP106的地址转换模块保存了所述第二端点设备114的BDF标识与第二内存地址之间的映射关系,使得所述RCEP106根据保存的所述第二端点设备114的BDF标识与第二内存地址的映射关系,进行该第二端点设备114的BDF标识与第二内存地址之间的相互转换。
若所述第二端点设备114发生故障,由于从所述第二端点设备114产生中断消息到操作系统处理该中断消息,存在一个时间窗口,在这个时间窗口内,所述扩展域的故障的第二端点设备114仍然可能与其它端点设备进行相互访问,例如所述第二端点设备114对主域中的端点设备或通过主域的CPU对其它设备进行通信,或者,所述CPU或主域的其它端点设备也可以对所述第二端点设备114进行访问,然而,与故障的第二端点设备114相关的访问或者通信将可能导致其它设备产生故障,例如导致所述第一端点设备108产生故障,或者导致CPU进行不必要的重复的错误消息处理,使系统性能受到影响,严重影响了系统的可靠性。
一种故障隔离的方法
本发明实施例一
本发明实施例提供一种故障隔离方法,用于在扩展域的端点设备发生故障时,阻止所述主域与所述扩展域端点设备之间的相互访问,防止故障扩散到主域。
如图3所示,为本发明实施例提供的故障隔离方法的流程图,用于PCIe互联的计算机系统,所述计算机系统包括主域和扩展域,所述主域由根复合体、第一端点设备与RCEP形成,所述扩展域由所述RCEP与第二端点设备形成,所述方法包括:
101:监控所述扩展域的第二端点设备的状态。
所述第二端点设备的状态可以包括故障状态和非故障状态,故障状态表明所述第二端点设备发生故障,无法进行正常工作,非故障状态表明所述扩展域的第二端点设备可以正常工作,所述RCEP对所述扩展域的第二端点设备的状态进行监控,可以是接收所述第二端点设备发送的错误消息,或者接收用于指示所述第二端点设备是否存在的设备探测响应消息,根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态。
102:根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系。
所述RCEP可以根据所述第二端点设备的状态,建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系,使得所述RCEP可以根据所述第二端点设备的标识信息,确定所述第二端点设备的状态。
103:接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求。
所述扩展域的第二端点设备通过所述访问请求对所述主域进行访问时,或者所述主域通过所述访问请求对所述第二端点设备进行访问时,所述访问请求被路由到所述RCEP,所述RCEP接收所述访问请求。
104:根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态。
所述访问请求携带所述第二端点设备的标识信息,所述RCEP可以查询所述设备状态记录中的所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态。
105:若所述第二端点设备的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
若确定所述第二端点设备的状态为故障状态,则丢弃所述访问请求以阻止所述RCEP将所述访问请求进行转发,从而阻止所述第二端点设备与所述主域之间的通信。
在本发明实施例中,对所述扩展域的第二端点设备的状态进行监控,并根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系,在接收到所述第二端点设备与所述主域之间的访问请求后,根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态,若所述第二端点设备的状态为故障状态,丢弃所述访问请求,从而阻止所述故障的第二端点设备与所述主域之间的通信,防止故障扩散到主域,保障了系统的可靠性。
本发明实施例二
如图4所示,为本发明实施例提供的故障隔离方法的流程图,用于PCIe互连的计算机系统,所述计算机系统包括主域和扩展域,所述主域由根复合体、第一端点设备与RCEP形成,所述扩展域由所述RCEP与第二端点设备形成,所述第二端点设备通过所述RCEP与所述主域中的根复合体或第一端点设备进行通信交互,所述方法可以包括:
201:监控所述扩展域的第二端点设备的状态。
所述第二端点设备的状态包括故障状态和非故障状态,故障状态表明所述第二端点设备发生故障,无法进行正常工作,非故障状态表明所述扩展域的第二端点设备可以正常工作,所述RCEP对所述扩展域的第二端点设备的状态进行监控包括:接收所述第二端点设备发送的错误消息,或者接收用于指示所述第二端点设备是否存在的设备探测响应消息;根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态。
具体地,所述RCEP可以发送设备探测消息到所述第二端点设备的配置空间寄存器,获取所述第二端点设备返回的设备探测响应消息,如果所述设备探测响应消息指示所述第二端点设备不存在,表明该第二端点设备由于故障以至于无法探测到,确定所述第二端点设备的状态为故障状态,否则,确定所述第二端点设备的状态为非故障状态;或者,
所述RCEP接收来自所述第二端点设备的错误消息,根据所述错误消息,确定所述错误消息的类型,若所述错误消息的类型是不可纠正的错误消息(Uncorrectable error)类型,则确定所述第二端点设备的状态为故障状态,否则,确定所述第二端点设备的状态为非故障状态。
优选地,在接收来自所述第二端点设备的错误消息,确定所述第二端点设备的状态为故障状态之后,所述RCEP还可以进一步确定所述错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,表明所述第二端点设备已经发送了错误消息给主域进行相应的错误处理,则丢弃所述错误消息,避免CPU进行不必要的重复的错误消息处理,保障了系统的可靠性,如果不属于重复发送的错误消息,表明所述错误消息为所述第二端点设备第一次发送的错误消息,所述RCEP将所述错误消息发送给CPU,使得CPU对所述第二端点设备进行错误处理。
所述确定所述错误消息是否为重复发送的错误消息具体包括:
获取所述错误消息携带的所述第二端点设备的BDF标识或第二内存地址;
查询所述设备状态记录中记录的所述第二端点设备的第二内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,或者,查询所述设备状态记录中记录的所述第二端点设备的BDF标识与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,或者,根据所述访问请求中的所述第二端点设备的第二内存地址或者BDF标识,确定所述第二端点设备的第一内存地址,通过查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态;
如果确定所述第二端点设备的状态为故障状态,确定所述错误消息属于重复发送的错误消息,如果确定所述第二端点设备的状态为非故障状态,确定所述错误消息属于不属于重复发送的错误消息。
其中,所述第一内存地址为所述第二端点设备在所述主域的内存地址,用于在主域中代表所述第二端点设备,所述第二内存地址为所述第二端点设备在所述扩展域的内存地址,用于在扩展域中代表所述第二端点设备。
202:根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系。
所述RCEP根据所述第二端点设备的状态,建立设备状态记录,所述设备状态记录包括所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,使得所述RCEP根据所述第二端点设备的第一内存地址,可以确定所述第二端点设备的状态。
所述根据所述第二端点设备的状态,建立设备状态记录,具体可以包括:
获取所述错误消息或者设备探测响应消息中携带的所述第二端点设备的BDF标识或第二内存地址;
根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址,可以是:
所述RCEP根据所述保存的第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址;或者,所述RCEP根据保存的第二端点设备的BDF标识与第二内存地址之间的映射关系,先获取所述第二端点设备的第二内存地址,再根据保存的第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址;
在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,使得所述RCEP可以根据所述第二端点设备的第一内存地址,确定所述第二端点设备的状态;
进一步,还可以在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,或者所述第二端点设备的BDF标识与所述第二端点设备的状态的对应关系,使得所述RCEP还可以根据所述第二端点设备的第一内存地址或者BDF标识,确定所述第二端点设备的状态。
具体地,由于所述第二端点设备的第一内存地址包括配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址,所述第二端点设备的第二内存地址包括配置空间访问的第二内存地址、MSI访问的第二内存地址、MMIO访问的第二内存地址和DMA访问的第二内存地址,所述RCEP可以根据保存的所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址;
或者,所述RCEP可以根据第二端点设备的BDF标识与每种第二内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第二内存地址、MSI访问的第二内存地址、MMIO访问的第二内存地址和DMA访问的第二内存地址,再根据保存的所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址;
则,所述在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系具体是指:记录所述第二端点设备的每种第一内存地址与所述第二端点设备的状态的对应关系;所述在所述设备状态记录中记录所述第二端点设备的第二内存地址与所述第二端点设备的状态的对应关系具体是指:记录所述第二端点设备的每种第二内存地址与所述第二端点设备的状态的对应关系。
203:接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求。
所述第一端点设备与所述主域之间通过所述访问请求进行消息交互时,所述访问请求可以是扩展域的第二端点设备对主域进行访问的访问请求,还可以是主域的根复合体或者所述主域的第一端点设备对所述第二端点设备进行访问的访问请求,当所述访问请求来自所述主域时,所述访问请求携带所述第二端点设备的第一内存地址,当所述访问请求来自所述扩展域时,所述访问请求携带所述第二端点设备的第二内存地址或者所述第二端点设备的BDF标识。
204:根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态。
所述第二端点设备的标识信息包括以下信息之一或其组合:所述第二端点设备的第一内存地址,所述第二端点的第二内存地址。
当所述访问请求来自所述主域时,根据所述访问请求中的所述第二端点设备的第一内存地址,查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,例如,当采用MMIO的访问方式时,所述访问请求携带所述第二端点设备的MMIO访问的第一内存地址,所述设备状态记录中记录了所述第二端点设备的每种第一内存地址与所述第二端点设备的状态的对应关系,所述RCEP可以利用所述访问请求中的第二端点设备的MMIO访问的第一内存地址,查询所述设备状态记录,确定所述第二端点设备的状态。
当所述访问请求来自所述扩展域时,所述RCEP根据所述访问请求中的所述第二端点设备的第二内存地址或者BDF标识,查询所述设备状态记录,若所述设备状态记录中没有记录所述第二端点设备的第二内存地址或者BDF标识与所述第二端点设备的状态的对应关系,则根据所述第二内存地址或者BDF标识获取所述第二端点设备的第一内存地址,通过查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,若所述设备状态记录中记录了所述第二端点设备的第二内存地址或者BDF标识与所述第二端点设备的状态的对应关系,则直接查询所述设备状态记录中记录的所述第二端点设备的第二内存地址或者BDF标识与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,避免了将所述第二端点设备的第二内存地址或者BDF标识转换为所述第二端点设备的第一内存地址,加速了确定设备的状态的过程。
205:若所述第二端点设备的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
若确定所述第二端点设备的状态为故障状态,则丢弃所述访问请求以阻止所述RCEP将所述访问请求进行转发,从而阻止所述第二端点设备与所述主域之间的通信。
进一步,所述方法还可以包括:
206:若所述第二端点设备的状态为故障状态,发送故障隔离消息到CPU,所述故障隔离消息用于指示所述主域中的CPU停止对所述扩展域的第二端点设备的访问,所述故障隔离消息携带所述第二端点设备的第一内存地址。
若所述第二端点设备的状态为故障状态,所述RCEP可以发送故障隔离消息给主域的CPU,使得所述主域中的CPU停止对所述扩展域的第二端点设备的访问,例如可以卸载故障的所述第二端点设备的驱动,或者隔离访问故障的所述第二端点设备的I/O路径。
进一步,若所述访问请求为来自所述主域的对所述第二端点设备进行访问的访问请求,所述方法还可以包括:
206’:若所述访问请求为主域发送的访问请求,向所述主域返回所述访问请求的模拟响应报文。
具体地,当所述主域对所述第二端点设备进行访问的访问请求为Non-post类型的访问请求时,需要为所述访问请求返回响应消息,否则所述主域可能产生返回报文超时错误而导致该计算机系统重启,然而所述第二端点设备发生故障后,所述访问请求可能无法到达所述第二端点设备,或者虽然到达所述第二端点设备,所述第二端点设备由于故障无法产生正常的响应消息,所述RCEP可以为所述访问请求生成模拟响应报文,并返回给所述主域,避免产生返回报文超时错误而导致该计算机系统重启,所述模拟响应报文可以为可以是Unsupported Request(UR)报文或者Completion Abort(CA)报文。
其中,所述步骤206与206’为两个可选步骤,两者并非必须同时执行的步骤。
在本发明实施例中,对所述扩展域的第二端点设备的状态进行监控,并根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录中包括所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,在接收到所述第二端点设备与所述主域之间的访问请求后,获取所述访问请求中的所述第二端点设备的第一内存地址,或者根据所述访问请求中的所述第二端点设备的BDF标识或者第二内存地址,获取所述第二端点设备的第一内存地址,查询所述设备状态记录中的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,若所述第二端点设备的状态为故障状态,丢弃所述访问请求,从而阻止所述故障的第二端点设备与所述主域之间的通信,并且还可以发送故障隔离消息到CPU,指示CPU停止对所述扩展域的第二端点设备的访问,防止故障扩散到主域。
进一步,在本发明实施例中,所述设备状态记录中还可以记录所述第二端点设备的BDF标识或者第二内存地址与所述第二端点设备的状态的对应关系,使得直接根据所述访问请求中的所述第二端点设备的BDF标识或者第二内存地址或者第一内存地址,查询所述设备状态记录,就能够确定所述第二端点设备的状态,避免了将所述第二端点设备的第二内存地址或者BDF标识转换为所述第二端点设备的第一内存地址,加速了确定所述第二端点设备的状态的过程。
此外,在本发明实施例中,对所述第二端点设备的状态进行监控时,在接收到所述第二端点设备发送的错误消息,通过所述错误消息的类型,确定所述第二端点设备的状态位故障状态之后,还可以进一步确定所述第二端点设备发送的错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,则丢弃所述错误消息,以阻止所述错误消息到达主域,防止了错误的扩散,避免CPU进行不必要的重复的错误消息处理,保障了系统的可靠性。
本发明实施例三
结合图1所示的计算机系统,本发明实施例提供的故障隔离方法如图5所示,所述扩展域的第二端点设备116为故障设备,利用DMA的访问方式,所述主域的第一端点设备108发送Non-post类型的访问请求对所述故障的第二端点设备116进行访问,所述访问请求先被路由到所述RCEP106,由于所述第二端点设备发生故障时,所述访问请求可能已经越过所述RCEP106的边界,即可能已经经过所述RCEP106的转发,还可能还未越过所述RCEP106的边界,即还未经过所述RCEP106的转发,所述方法具体可以包括:
301:所述RCEP106监控所述扩展域的所有第二端点设备的状态。
所述设备的状态包括故障状态和非故障状态,所述RCEP106对所述扩展域的第二端点设备114和所述第二端点设备116的状态进行监控,具体包括:接收所述第二端点设备114或116发送的错误消息,或者接收用于指示所述第二端点设备114或116是否存在的设备探测响应消息;根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备114或116的状态。
302:根据所述扩展域的所有第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述扩展域的第二端点设备的第一内存地址与该设备的状态的对应关系。
例如,所述第二端点设备116发送的错误消息中包括所述第二端点设备116的BDF标识,所述RCEP106获取所述第二端点设备116的BDF标识;根据第二端点设备116的BDF标识与每种第二内存地址之间的映射关系,获取所述第二端点设备116的配置空间访问的第二内存地址、MSI访问的第二内存地址、MMIO访问的第二内存地址和DMA访问的第二内存地址,根据保存的所述第二端点设备116的每种第二内存地址与每种第一内存地址之间的映射关系,获取所述第二端点设备116的配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址;在所述设备状态记录中记录所述第二端点设备116的每种第一内存地址与所述第二端点设备116的状态的对应关系,例如将所述第二端点设备116的每种第一内存地址都标记为故障。
同理,若述第二端点设备114故障,在所述设备状态记录中记录所述第二端点设备114的每种第一内存地址与所述第二端点设备114的状态的对应关系,例如将所述第二端点设备116的每种第一内存地址都标记为故障。
303:接收所述第一端点设备108对所述第二端点设备116进行访问的访问请求,所述访问请求携带所述第二端点设备116的DMA访问的第一内存地址。
所述第一端点设备108对所述第二端点设备116进行DMA访问时,所述访问请求通过地址路由发送到所述RCEP106,所述RCEP获取所述访问请求携带的所述第二端点设备116的DMA访问的第一内存地址。
304:根据所述访问请求中的所述第二端点设备116的DMA访问的第一内存地址,确定所述第二端点设备116的状态。
根据所述访问请求中的所述第二端点设备116的DMA访问的第一内存地址,查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备116的状态。
具体地,当所述第二端点设备116发生故障时,如果所述访问请求未越过所述RCEP的边界,则所述设备状态记录中记录的所述第二端点设备的状态为故障状态,根据查询所述设备状态记录中记录的所述第二端点设备116的DMA访问的第一内存地址与所述第二端点设备116的状态的关系,将确定的所述第二端点设备116的状态为故障状态;当所述第二端点设备116发生故障时,如果所述访问请求已经越过所述RCEP的边界,则此时所述设备状态记录中记录的所述第二端点设备的状态为非故障状态,查询所述设备状态记录中记录的所述第二端点设备116的DMA访问的第一内存地址与所述第二端点设备的状态的对应关系,将确定的所述第二端点设备116的状态为非故障状态。
305:若所述第二端点设备116的状态为故障状态,丢弃所述访问请求以阻止所述第一端点设备108与对所述第二端点设备116的访问,然后执行步骤306。
当所述第二端点设备116发生故障时,如果所述访问请求未越过所述RCEP106的边界,则所述RCEP接收到所述访问请求后,确定所述被访问的第二端点设备116的状态为故障状态,丢弃所述访问请求,以阻止所述第一端点设备108对所述第二端点设备116的访问,避免了故障扩散到所述主域。
306:向所述第一端点设备108返回所述访问请求的模拟响应报文。
由于所述访问请求为Non-post类型的访问请求,为所述访问请求生成模拟响应报文,将所述生成的模拟响应报文返回给所述第一端点设备108,避免所述主域的CPU产生返回报文超时错误而导致该计算机系统重启。
在本发明实施例中,所述RCEP116对所述所述扩展域的所有第二端点设备的状态进行监控,并根据所述扩展域的所有第二端点设备的状态建立设备状态记录,所述主域的第一端点设备108发送访问请求对所述扩展域的第二端点设备116进行访问时,所述RCEP接收所述访问请求,并根据所述访问请求中的DMA访问的第一内存地址,查询所述设备状态记录,确定所述第二端点设备的状态,如果所述第二端点设备116发生故障时,所述访问请求还未越过所述RCEP106的边界,则步骤304确定所述第二端点设备116的状态为故障状态,此时所述RCEP丢弃所述访问请求,以阻止所述第一端点设备108对所述第二端点设备116的访问,避免了故障扩散到所述主域,并且所述RCEP还可以向所述第一端点设备108返回所述访问请求的模拟响应报文,避免所述主域的CPU产生返回报文超时错误而导致该计算机系统重启。
进一步,如果所述第二端点设备116发生故障时,所述访问请求已经越过所述RCEP106的边界,则步骤304将确定所述第二端点设备116的状态为非故障状态,所述RCEP106按照正常的工作流程,将所述访问请求发送给所述第二端点设备116,所述故障的第二端点设备116接收到所述访问请求之后,可能受到所述访问请求的触发,向所述RCEP106发送错误消息,所述故障的第二端点设备116还可能主动向所述RCEP发送错误消息以上报故障,所述RCEP接收来自所述第二端点设备的错误消息,对所述第二端点设备的状态进行监控,如果所述错误消息的类型是不可纠正的错误消息(Uncorrectable error)类型,则确定所述第二端点设备的状态为故障状态,所述RCEP可以进一步查询所述设备状态记录,确定所述错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,则丢弃所述重复发送的错误消息,避免CPU进行不必要的重复的错误消息处理,保障了系统的可靠性。
本发明的实施例四
结合图1所示的计算机系统,本发明实施例提供的故障隔离方法如图6所示,所述扩展域的第二端点设备116为故障设备,利用MMIO的访问方式,所述故障的第二端点设备108发送Non-post类型的访问请求对所述主域的主CPU101进行访问,所述访问请求先被路由到所述RCEP106,由于所述第二端点设备发生故障时,所述访问请求可能已经越过所述RCEP106的边界,即可能已经经过所述RCEP106的转发,还可能还未越过所述RCEP106的边界,即还未经过所述RCEP106的转发,所述方法具体可以包括:
401:所述RCEP106监控所述扩展域的所有第二端点设备的状态。
所述设备的状态包括故障状态和非故障状态,所述RCEP106对所述扩展域的第二端点设备114和所述第二端点设备116的状态进行监控,具体包括:接收所述第二端点设备114或116发送的错误消息,或者接收用于指示所述第二端点设备114或116是否存在的设备探测响应消息;根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备114或116的状态。
402:根据所述扩展域的所有第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述扩展域的第二端点设备的第一内存地址与该设备的状态的对应关系。
例如,所述第二端点设备116发送的错误消息中包括所述第二端点设备116的BDF标识,所述RCEP106获取所述第二端点设备116的BDF标识;根据第二端点设备116的BDF标识与第二内存地址之间的映射关系,获取所述第二端点设备116的配置空间访问的第二内存地址、MSI访问的第二内存地址、MMIO访问的第二内存地址和DMA访问的第二内存地址,根据保存的所述第二端点设备116的第二内存地址与第一内存地址之间的映射关系,获取所述第二端点设备116的配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址;在所述设备状态记录中记录所述第二端点设备116的每种第一内存地址与所述第二端点设备116的状态的对应关系,例如将所述第二端点设备116的每种第二内存地址都标记为故障。
同理,若述第二端点设备114故障,在所述设备状态记录中记录所述第二端点设备114的每种第一内存地址与所述第二端点设备114的状态的对应关系,以及所述第二端点设备114的BDF标识与所述第二端点设备114的状态的对应关系。
403:接收所述第二端点设备116对所述主CPU101进行访问的访问请求,所述访问请求携带所述第二端点设备116的MMIO访问的第二内存地址。
所述第二端点设备116对所述主CPU101进行MMIO访问时,所述访问请求通过地址路由发送到所述RCEP106,所述RCEP获取所述访问请求携带的所述第二端点设备116的MMIO访问的第二内存地址。
404:根据所述访问请求中的所述第二端点设备116的MMIO访问的第二内存地址,确定所述第二端点设备116的状态。
根据所述访问请求中的所述第二端点设备116的MMIO访问的第二内存地址,利用所述保存的所述第二端点设备的每种第一内存地址与每种第二内存地址的映射关系,获取所述第二端点设备116的MMIO访问的第一内存地址,查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备116的状态。
具体地,当所述第二端点设备116发生故障时,如果所述访问请求未越过所述RCEP的边界,则根据查询所述设备状态记录中记录的所述第二端点设备116的DMA访问的第一内存地址与所述第二端点设备116的状态的关系,将确定的所述第二端点设备116的状态为故障状态;当所述第二端点设备116发生故障时,如果所述访问请求已经越过所述RCEP的边界,则此时查询所述设备状态记录中记录的所述第二端点设备116的DMA访问的第一内存地址与所述第二端点设备116的状态的关系,将确定的所述第二端点设备116的状态为非故障状态。
405:若所述第二端点设备116的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备116与对所述主CPU101的访问。
当所述第二端点设备116发生故障时,如果所述访问请求未越过所述RCEP106的边界,则所述RCEP接收到所述访问请求后,确定所述被访问的第二端点设备116的状态为故障状态,丢弃所述访问请求,以阻止所述第二端点设备116对所述主CPU101的访问,避免了故障扩散到所述主域。
在本发明实施例中,所述RCEP116对所述扩展域的所有第二端点设备的状态进行监控,并根据所述扩展域的所有第二端点设备的状态建立设备状态记录,所述主域的第二端点设备116发送访问请求对所述主域的主CPU101进行访问时,所述RCEP接收所述访问请求,并根据所述访问请求中的MMIO访问的第二内存地址,获取所述第二端点设备的MMIO访问的第一内存地址,查询所述设备状态记录,确定所述第二端点设备的状态,如果所述第二端点设备116发生故障时,所述访问请求还未越过所述RCEP106的边界,则步骤404确定所述第二端点设备116的状态为故障状态,此时所述RCEP丢弃所述访问请求,以阻止所述第二端点设备116对所述主CPU101的访问,避免了故障扩散到所述主域。
进一步,如果所述第二端点设备116发生故障时,所述访问请求已经越过所述RCEP106的边界,则步骤404将确定所述第二端点设备116的状态为非故障状态,所述RCEP106按照正常的工作流程,将所述访问请求发送给所述主CPU101,所述主CPU101接收到所述访问请求之后,为所述访问请求返回响应报文,所述返回的响应报文先到达所述RCEP,由于所述第二端点设备已经发生故障,此时将所述返回的响应报文发送给所述故障的第二端点设备116已经没有意义,并可能触发所述故障的第二端点设备116重复发送错误消息,因此,所述RCEP可以将所述返回的响应报文丢弃。
此外,所述故障的第二端点设备116可能主动向所述RCEP发送错误消息以上报故障,所述RCEP接收来自所述第二端点设备的错误消息,对所述第二端点设备的状态进行监控,如果所述错误消息的类型是不可纠正的错误消息(Uncorrectable error)类型,则确定所述第二端点设备的状态为故障状态,所述RCEP可以进一步查询所述设备状态记录,确定所述错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,则丢弃所述重复发送的错误消息,防止了故障的扩散,
本发明实施例的装置
本发明实施例提供了一种故障隔离装置,用于在扩展域的端点设备发生故障时,阻止所述主域与所述扩展域端点设备之间的相互访问,防止故障扩散到主域。
如图7所示,为本发明实施例提供的故障隔离装置的组成图,用于PCIe互连的计算机系统,所述计算机系统包括主域和扩展域,所述主域由根复合体、第一端点设备与RCEP形成,所述扩展域由所述RCEP与第二端点设备形成,所述装置包括:
监控单元701,用于监控所述扩展域的第二端点设备的状态。
记录单元702,用于根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系。
接收单元703,用于接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求。
确定单元704,用于根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态。
处理单元705,在所述第二端点设备的状态为故障状态时,用于丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
具体地,所述第二端点设备的状态包括故障状态和非故障状态,所述监控单元701可以接收所述第二端点设备发送的错误消息或者接收用于指示所述第二端点设备是否存在的设备探测响应消息,根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态,所述记录单元702根据所述监控单元701中的所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系,所述接收单元703接收所述第二端点设备与所述主域之间的访问请求之后,所述确定单元704根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态,所述处理单元705在所述确定单元704确定第二端点设备的状态为故障状态时,用于丢弃所述访问请求,从而阻止所述故障的第二端点设备与所述主域之间的通信,防止故障扩散到主域,保障了系统的可靠性。
如图8所示,为本发明实施例提供的故障隔离装置的组成图,用于PCIe互连的计算机系统,所述计算机系统包括主域和扩展域,所述主域由根复合体、第一端点设备与RCEP形成,所述扩展域由所述RCEP与第二端点设备形成,所述第二端点设备通过所述RCEP与所述主域中的根复合体或第一端点设备进行通信交互,所述装置可以包括:监控单元801、记录单元802、接收单元803、确定单元804、处理单元805,所述故障隔离装置可以为所述RCEP。
所述监控单元801用于监控所述扩展域的第二端点设备的状态,所述第二端点设备的状态包括故障状态和非故障状态,故障状态表明所述第二端点设备发生故障,无法进行正常工作,非故障状态表明所述扩展域的第二端点设备可以正常工作,所述监控单元801对所述扩展域的第二端点设备的状态进行监控包括:接收所述第二端点设备发送的错误消息,或者接收用于指示所述第二端点设备是否存在的设备探测响应消息,根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态,具体地,所述监控单元801可以发送设备探测消息到所述第二端点设备的配置空间寄存器,获取所述第二端点设备返回的设备探测响应消息,如果所述设备探测响应消息指示所述第二端点设备不存在,表明该第二端点设备由于故障以至于无法探测到,确定所述第二端点设备的状态为故障状态,否则,确定所述第二端点设备的状态为非故障状态;或者,所述监控单元801接收来自所述第二端点设备的错误消息,根据所述错误消息,确定所述错误消息的类型,若所述错误消息的类型是不可纠正的错误消息(Uncorrectable error)类型,则确定所述第二端点设备的状态为故障状态,否则,确定所述第二端点设备的状态为非故障状态。
记录单元802,用于根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,其中,所述第一内存地址为所述第二端点设备在所述主域的内存地址,用于在主域中代表所述第二端点设备。
所述记录单元802具体包括:地址转换模块子单元802a和状态记录子单元802b,所述地址转换模块子单元802a用于获取所述错误消息或者设备探测响应消息中携带的所述第二端点设备的BDF标识或第二内存地址,根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址;所述地址转换模块子单元802a保存了第二端点设备的第二内存地址与第一内存地址之间的映射关系,以及第二端点设备的BDF标识与第二内存地址之间的映射关系,根据所述保存的第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址,或者,根据保存的第二端点设备的BDF标识与第二内存地址之间的映射关系,获取所述第二端点设备的第二内存地址,根据保存的第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址;所述状态记录子单元802b用于在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,使得所述RCEP可以根据所述第二端点设备的第一内存地址,确定所述第二端点设备的状态,其中,所述第二端点设备的第二内存地址为所述第二端点设备在所述扩展域的内存地址,用于在扩展域中代表所述第二端点设备。
进一步,所述状态记录子单元802b还可以用于在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,或者所述第二端点设备的BDF标识与所述第二端点设备的状态的对应关系,使得所述确定单元803还可以根据所述第二端点设备的第一内存地址或者BDF标识,确定所述第二端点设备的状态。
具体地,由于所述第二端点设备的第一内存地址包括配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址,所述第二端点设备的第二内存地址包括配置空间访问的第二内存地址、MSI访问的第二内存地址、MMIO访问的第二内存地址和DMA访问的第二内存地址,所述地址转换模块子单元802a具体用于保存所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系,以及所述第二端点设备的BDF标识与每种第二内存地址之间的映射关系;根据所述保存的所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址,或者先根据第二端点设备的BDF标识与每种第二内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第二内存地址、MSI访问的第二内存地址、MMIO访问的第二内存地址和DMA访问的第二内存地址,再根据保存的所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第一内存地址、MSI访问的第一内存地址、MMIO访问的第一内存地址和DMA访问的第一内存地址;所述记录子单元802b具体用于记录所述第二端点设备的每种第一内存地址与所述第二端点设备的状态的对应关系,或者还用于记录所述第二端点设备的每种第二内存地址与所述第二端点设备的状态的对应关系,或者还用于记录所述第二端点设备的BDF标识与所述第二端点设备的状态的对应关系。
所述接收单元803用于接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求,当所述访问请求来自所述主域时,所述访问请求携带所述第二端点设备的第一内存地址,当所述访问请求来自所述扩展域时,所述访问请求携带所述第二端点设备的第二内存地址或者所述第二端点设备的BDF标识。
所述确定单元804用于根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态,其中,所述第二端点设备的标识信息包括以下信息之一或其组合:所述第二端点设备的第一内存地址,所述第二端点的第二内存地址,所述第二端点设备的BDF标识,具体地,当所述访问请求来自所述主域时,所述确定单元804根据所述访问请求中的所述第二端点设备的第一内存地址,查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,例如,当采用MMIO的访问方式,所述访问请求携带所述第二端点设备的MMIO访问的第一内存地址,所述设备状态记录中记录了所述第二端点设备的每种第一内存地址与所述第二端点设备的状态的对应关系,所述确定单元804可以利用所述访问请求中的第二端点设备的MMIO访问的第一内存地址,查询所述设备状态记录,确定所述第二端点设备的状态;当所述访问请求来自所述扩展域时,所述确定单元804根据所述访问请求中的所述第二端点设备的第二内存地址或者BDF标识,查询所述设备状态记录,若所述设备状态记录中没有记录所述第二端点设备的第二内存地址或者BDF标识与所述第二端点设备的状态的对应关系,则根据所述第二内存地址或者BDF标识获取所述第二端点设备的第一内存地址,通过查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,若所述设备状态记录中记录了所述第二端点设备的第二内存地址或者BDF标识与所述第二端点设备的状态的对应关系,则直接查询所述设备状态记录中记录的所述第二端点设备的第二内存地址或者BDF标识与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,避免了将所述第二端点设备的第二内存地址或者BDF标识转换为所述第二端点设备的第一内存地址,加速了确定设备的状态的过程。
所述处理单元805在所述确定单元804确定所述第二端点设备的状态为故障状态时,用于丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
所述处理单元805在所述确定单元804确定所述第二端点设备的状态为故障状态时,还用于发送故障隔离消息到CPU,使得所述主域中的CPU停止对所述扩展域的第二端点设备的访问,例如可以卸载故障的所述第二端点设备的驱动,或者隔离访问故障的所述第二端点设备的I/O路径,所述故障隔离消息携带所述第二端点设备的第一内存地址。
所述处理单元805,在所述访问请求所述访问请求为主域发送的访问请求时,还用于向所述主域返回所述访问请求的模拟响应报文,具体地,当所述主域对所述第二端点设备进行访问的访问请求为Non-post类型的访问请求时,需要为所述访问请求返回响应消息,否则所述主域可能产生返回报文超时错误而导致该计算机系统重启,然而所述第二端点设备发生故障后,所述访问请求可能无法到达所述第二端点设备,或者虽然到达所述第二端点设备,所述第二端点设备由于故障无法产生正常的响应消息,所述处理单元805可以为所述访问请求生成模拟响应报文,并返回给所述主域,避免产生返回报文超时错误而导致该计算机系统重启,所述模拟响应报文可以为可以是Unsupported Request(UR)报文或者CompletionAbort(CA)报文。
优选地,所述监控单元801在通过接收的错误消息确定所述第二端点设备的状态为故障状态之后,还用于确定所述错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,表明所述第二端点设备已经发送过错误消息给主域进行相应的错误处理,则丢弃所述错误消息,避免CPU进行不必要的重复的错误消息处理,保障了系统的可靠性,如果不属于重复发送的错误消息,表明所述错误消息为所述第二端点设备第一次发送的错误消息,所述RCEP将所述错误消息发送给CPU,使得CPU对所述第二端点设备进行错误处理,所述确定所述错误消息是否为重复发送的错误消息具体包括:
获取所述错误消息携带的所述第二端点设备的BDF标识或第二内存地址;查询所述设备状态记录中记录的所述第二端点设备的第二内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,或者,查询所述设备状态记录中记录的所述第二端点设备的BDF标识与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,或者,根据所述访问请求中的所述第二端点设备的第二内存地址或者BDF标识,确定所述第二端点设备的第一内存地址,通过查询所述设备状态记录中记录的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态;如果确定所述第二端点设备的状态为故障状态,确定所述错误消息属于重复发送的错误消息,如果确定所述第二端点设备的状态为非故障状态,确定所述错误消息属于不属于重复发送的错误消息。
在本发明实施例中,所述监控单元801对所述扩展域的第二端点设备的状态进行监控,所述记录单元802根据所述监控单元801确定的所述第二端点设备的状态建立设备状态记录,所述设备状态记录中包括所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,所述确定单元804在所述接收单元803接收到所述第二端点设备与所述主域之间的访问请求后,获取所述访问请求中的所述第二端点设备的第一内存地址,或者根据所述访问请求中的所述第二端点设备的BDF标识或者第二内存地址,获取所述第二端点设备的第一内存地址,查询所述设备状态记录中的所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系,确定所述第二端点设备的状态,所述处于单元805在所述确定单元804确定所述第二端点设备的状态为故障状态时,丢弃所述访问请求从而阻止所述故障的第二端点设备与所述主域之间的通信,并且还可以发送故障隔离消息到CPU,指示CPU停止对所述扩展域的第二端点设备的访问,防止故障扩散到主域。
进一步,在本发明实施例中,所述记录单元802还可以在所述设备状态记录中记录所述第二端点设备的BDF标识或者第二内存地址与所述第二端点设备的状态的对应关系,使得所述确定单元804直接根据所述访问请求中的所述第二端点设备的BDF标识或者第二内存地址或者第一内存地址,查询所述设备状态记录,就能够确定所述第二端点设备的状态,避免了将所述第二端点设备的第二内存地址或者BDF标识转换为所述第二端点设备的第一内存地址,加速了确定所述第二端点设备的状态的过程。
此外,在本发明实施例中,所述监控单元801对所述第二端点设备的状态进行监控时,在接收到所述第二端点设备发送的错误消息,通过所述错误消息的类型,确定所述第二端点设备的状态为故障状态之后,还可以进一步确定所述第二端点设备发送的错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,则丢弃所述错误消息,以阻止所述错误消息到达主域,避免CPU进行不必要的重复的错误消息处理,保障了系统的可靠性。
如图9为本发明实施例提供的故障隔离系统900,所述系统900包括PCIe主域910和扩展域920,所述主域包括根复合体911、第一端点设备912与根复合体端点设备913,所述扩展域920包括所述根复合体端点设备913和第二端点设备921,所述根复合体端点设备913用于监控所述扩展域的第二端点设备921的状态,根据所述第二端点设备921的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备921的标识信息与所述第二端点设备921的状态的对应关系,接收访问请求,所述访问请求包括所述第二端点设备921对所述主域910的访问请求或者所述主域910对所述第二端点设备921的访问请求,根据所述访问请求中的所述第二端点设备921的标识信息,查询所述设备状态记录,确定所述第二端点设备921的状态,若所述第二端点设备921的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备921与所述主域910之间的通信。
在本发明实施例中,对所述扩展域的第二端点设备的状态进行监控,并根据所述第二端点设备的状态建立设备状态记录,在接收到所述第二端点设备与所述主域之间的访问请求后,根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态,若所述第二端点设备的状态为故障状态,丢弃所述访问请求,从而阻止所述故障的第二端点设备与所述主域之间的通信,防止故障扩散到主域,保障了系统的可靠性。
如图10,为本发明实施例提供的故障隔离装置的结构组成示意图。本发明实施例提供的故障隔离装置用于PCIe互连的计算机系统,该计算机系统包括主域和扩展域,所述主域由根复合体、第一端点设备与根复合体端点设备形成,所述扩展域由所述根复合体端点设备与第二端点设备形成;
该故障隔离装置可包括:
处理器1001、存储器1002、系统总线1004和通信接口1005。处理器1001、存储器1002和通信接口1005之间通过系统总线1004连接并完成相互间的通信。
处理器1001可能为单核或多核中央处理单元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成电路。
存储器1002可以为高速RAM存储器,也可以为非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
存储器1002用于计算机执行指令1003。具体的,计算机执行指令1003中可以包括程序代码。
当所述故障隔离装置运行时,处理器1001运行计算机执行指令1003,可以执行如下方法:
监控所述扩展域的第二端点设备的状态;
根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系;
接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求;
根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态;
若所述第二端点设备的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
所述方法具体还可以包括:
监控所述扩展域的第二端点设备的状态;
根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系;
接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求;
根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态;
若所述第二端点设备的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信;
若所述第二端点设备的状态为故障状态,发送故障隔离消息到CPU,所述故障隔离消息用于指示所述主域中的CPU停止对所述扩展域的第二端点设备的访问,所述故障隔离消息携带所述第二端点设备的第一内存地址;
若所述访问请求为主域发送的访问请求,向所述主域返回所述访问请求的模拟响应报文。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (25)

1.一种故障隔离的方法,其特征在于,用于高速外围组件互联PCIe互连的计算机系统,该计算机系统包括主域和扩展域,所述主域包括根复合体、第一端点设备与根复合体端点设备,所述扩展域包括所述根复合体端点设备与第二端点设备,所述方法包括:
监控所述扩展域的第二端点设备的状态;
根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系;
接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求;
根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态;
若所述第二端点设备的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
2.根据权利要求1所述的方法,其特征在于,所述监控所述扩展域的第二端点设备的状态,包括:
接收所述第二端点设备发送的错误消息,或者接收用于指示所述第二端点设备是否存在的设备探测响应消息;
根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态。
3.根据权利要求2所述的方法,其特征在于,所述第二端点设备的标识信息包括所述第二端点设备的第一内存地址,所述第一内存地址为所述第二端点设备在所述主域的内存地址;
所述根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系,包括:
获取所述错误消息或者设备探测响应消息中携带的所述第二端点设备的总线/设备/功能BDF标识或第二内存地址,其中,所述第二内存地址为所述第二端点设备在所述扩展域的内存地址;
根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址;
在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系。
4.根据权利要求3所述的方法,其特征在于,所述第二端点设备的标识信息还包括所述第二端点设备的第二内存地址;
所述在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系之后,还包括:在所述设备状态记录中记录所述第二端点设备的第二内存地址与所述第二端点设备的状态的对应关系。
5.根据权利要求3或4所述的方法,其特征在于,所述第二端点设备的标识信息还包括所述第二端点设备的BDF标识;
所述在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系之后,还包括:在所述设备状态记录中记录所述第二端点设备的BDF标识与所述第二端点设备的状态的对应关系。
6.根据权利要求3所述的方法,其特征在于,所述根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址,包括:
根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址;或者,
根据保存的所述第二端点设备的BDF标识与第二内存地址之间的映射关系,获取所述第二端点设备的第二内存地址,根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址。
7.根据权利要求3或6所述的方法,其特征在于,所述第二端点设备的第一内存地址包括配置空间访问的第一内存地址、消息信号中断访问的第一内存地址、内存映射输入输出访问的第一内存地址和DMA访问的第一内存地址;
则,所述在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系包括:
在所述设备状态记录中记录所述第二端点设备的每种第一内存地址与所述第二端点设备的状态的对应关系。
8.根据权利要求7所述的方法,其特征在于,所述第二端点设备的第二内存地址包括配置空间访问的第二内存地址、消息信号中断访问的第二内存地址、内存映射输入输出访问的第二内存地址和DMA访问的第二内存地址;
所述第二端点设备的第二内存地址与第一内存地址之间的映射关系包括所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系;
根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址,包括:根据保存的所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第一内存地址、消息信号中断访问的第一内存地址、内存映射输入输出访问的第一内存地址和DMA访问的第一内存地址。
9.根据权利要求3所述的方法,所述方法还包括:
发送故障隔离消息到CPU,所述故障隔离消息用于指示所述主域中的CPU停止对所述扩展域的第二端点设备的访问,所述故障隔离消息携带所述第二端点设备的第一内存地址。
10.根据权利要求3所述的方法,若所述访问请求为所述主域对所述第二端点设备的访问请求,所述方法还包括:
向所述主域返回所述访问请求的模拟响应报文。
11.根据权利要求2所述的方法,在接收所述第二端点设备发送的错误消息之后,还包括:
确定所述错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,则丢弃所述错误消息。
12.一种故障隔离的装置,其特征在于,用于高速外围组件互联PCIe互连的计算机系统,该计算机系统包括主域和扩展域,所述主域包括根复合体、第一端点设备与根复合体端点设备,所述扩展域包括所述根复合体端点设备与第二端点设备,所述装置包括:
监控单元,用于监控所述扩展域的第二端点设备的状态;
记录单元,用于根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系;
接收单元,用于接收访问请求,所述访问请求包括所述第二端点设备对所述主域的访问请求或者所述主域对所述第二端点设备的访问请求;
确定单元,用于根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态;
处理单元,在所述第二端点设备的状态为故障状态时,用于丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
13.根据权利要求12所述的装置,其特征在于,所述监控单元具体用于:
接收所述第二端点设备发送的错误消息,或者接收用于指示所述第二端点设备是否存在的设备探测响应消息,根据所述错误消息或所述设备探测响应消息,确定所述第二端点设备的状态。
14.根据权利要求13所述的装置,其特征在于,所述第二端点设备的标识信息包括所述第二端点设备的第一内存地址,所述第一内存地址为所述第二端点设备在所述主域的内存地址;
所述记录单元具体包括:
地址转换模块子单元,用于在所述监控单元确定所述第二端点设备的故障状态时,获取所述错误消息或者所述设备探测响应消息中携带的所述第二端点设备的BDF标识或第二内存地址,根据所述BDF标识或第二内存地址,获取所述第二端点设备的第一内存地址,其中,所述第二内存地址为所述第二端点设备在所述扩展域的内存地址;
状态记录子单元,用于在所述设备状态记录中记录所述第二端点设备的第一内存地址与所述第二端点设备的状态的对应关系。
15.根据权利要求14所述的装置,其特征在于,所述第二端点设备的标识信息还包括所述第二端点设备的第二内存地址;
所述状态记录子单元还用于在所述设备状态记录中记录所述第二端点设备的第二内存地址与所述第二端点设备的状态的对应关系。
16.根据权利要求14或15所述的装置,其特征在于,所述第二端点设备的标识信息还包括所述第二端点设备的BDF标识;
所述状态记录子单元还用于在所述设备状态记录中记录所述第二端点设备的BDF标识与所述第二端点设备的状态的对应关系。
17.根据权利要求14所述的装置,其特征在于,所述地址转换模块子单元还用于保存所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,以及保存所述第二端点设备的BDF标识与第二内存地址之间的映射关系;
所述地址转换模块子单元具体用于根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址;或者,
根据保存的所述第二端点设备的BDF标识与第二内存地址之间的映射关系,获取所述第二端点设备的第二内存地址,根据保存的所述第二端点设备的第二内存地址与第一内存地址之间的映射关系,将所述第二内存地址转换为所述第二端点设备的第一内存地址。
18.根据权利要求14或17所述的装置,其特征在于,所述第二端点设备的第一内存地址包括配置空间访问的第一内存地址、消息信号中断访问的第一内存地址、内存映射输入输出访问的第一内存地址和DMA访问的第一内存地址;
所述地址转换模块子单元具体用于记录所述第二端点设备的每种第一内存地址与所述第二端点设备的对应关系。
19.根据权利要求18所述的装置,其特征在于,所述第二端点设备的第二内存地址包括配置空间访问的第二内存地址、消息信号中断访问的第二内存地址、内存映射输入输出访问的第二内存地址和DMA访问的第二内存地址;
所述地址转换模块子单元具体用于保存所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系;根据保存的所述第二端点设备的每种第二内存地址与每种第一内存地址之间的映射关系,获取所述第二端点设备的配置空间访问的第一内存地址、消息信号中断访问的第一内存地址、内存映射输入输出访问的第一内存地址和DMA访问的第一内存地址。
20.根据权利要求14所述的装置,所述处理单元还用于发送故障隔离消息到CPU,所述故障隔离消息用于指示所述主域中的CPU停止对所述扩展域的第二端点设备的访问,所述故障隔离消息携带所述第二端点设备的第一内存地址。
21.根据权利要求14所述的装置,其特征在于,所述处理单元还用于:在所述访问请求为所述主域对所述第二端点设备的访问请求时,向所述主域返回所述访问请求的模拟响应报文。
22.根据权利要求13所述的装置,其特征在于,所述监控单元还用于,在接收所述第二端点设备发送的错误消息之后,确定所述错误消息是否属于重复发送的错误消息,如果属于重复发送的错误消息,则丢弃所述错误消息。
23.根据权利要求12所述的装置,其特征在于,所述故障隔离装置为所述根复合体端点设备。
24.一种故障隔离系统,所述系统包括高速外围组件互联PCIe主域和扩展域,所述主域包括根复合体、第一端点设备与根复合体端点设备,所述扩展域包括所述根复合体端点设备和第二端点设备,所述根复合体端点设备用于:
监控所述扩展域的第二端点设备的状态,根据所述第二端点设备的状态建立设备状态记录,所述设备状态记录包括所述第二端点设备的标识信息与所述第二端点设备的状态的对应关系,接收所述第二端点设备发送的访问请求,或者所述主域对所述第二端点设备的访问请求,根据所述访问请求中的所述第二端点设备的标识信息,查询所述设备状态记录,确定所述第二端点设备的状态,若所述第二端点设备的状态为故障状态,丢弃所述访问请求以阻止所述第二端点设备与所述主域之间的通信。
25.一种故障隔离装置,其特征在于,用于高速外围组件互联PCIe互连的计算机系统,该计算机系统包括主域和扩展域,所述主域包括根复合体、第一端点设备与根复合体端点设备,所述扩展域包括所述根复合体端点设备与第二端点设备;
所述装置包括处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述故障隔离装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述故障隔离装置执行如权利要求1-11中任一所述的故障隔离方法。
CN201380001454.4A 2013-09-11 2013-09-11 一种故障处理的方法、计算机系统和装置 Active CN104756081B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/083325 WO2015035574A1 (zh) 2013-09-11 2013-09-11 一种故障处理的方法、计算机系统和装置

Publications (2)

Publication Number Publication Date
CN104756081A CN104756081A (zh) 2015-07-01
CN104756081B true CN104756081B (zh) 2016-08-17

Family

ID=52664929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380001454.4A Active CN104756081B (zh) 2013-09-11 2013-09-11 一种故障处理的方法、计算机系统和装置

Country Status (5)

Country Link
US (1) US9678826B2 (zh)
EP (1) EP2869201B1 (zh)
CN (1) CN104756081B (zh)
ES (1) ES2656464T3 (zh)
WO (1) WO2015035574A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021017503A1 (zh) * 2019-07-30 2021-02-04 华为技术有限公司 一种端点设备的管理方法、装置及系统

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2640452T3 (es) * 2013-12-31 2017-11-03 Huawei Technologies Co., Ltd. Método y aparato para extender el dominio de bus PCIE
US9804942B2 (en) * 2014-06-10 2017-10-31 Analog Devices, Inc. Safety node in interconnect data buses
US10114688B2 (en) * 2015-02-16 2018-10-30 Dell Products L.P. System and method for peripheral bus device failure management
WO2017049433A1 (zh) * 2015-09-21 2017-03-30 华为技术有限公司 计算机系统和计算机系统中端点设备访问的方法
US20170091013A1 (en) * 2015-09-28 2017-03-30 Netapp, Inc. Pcie error reporting and throttling
US9384086B1 (en) 2015-11-30 2016-07-05 International Business Machines Corporation I/O operation-level error checking
US9354967B1 (en) 2015-11-30 2016-05-31 International Business Machines Corporation I/O operation-level error-handling
CN105824622B (zh) * 2016-03-11 2020-04-24 联想(北京)有限公司 数据处理方法及电子设备
CN108259212B (zh) * 2017-05-25 2019-09-17 新华三技术有限公司 报文处理方法及装置
CN108228374B (zh) * 2017-12-28 2021-08-20 华为技术有限公司 一种设备的故障处理方法、装置及系统
CN108762962A (zh) * 2018-05-18 2018-11-06 网易宝有限公司 防止应用异常的方法和装置、存储介质及电子设备
US11614986B2 (en) * 2018-08-07 2023-03-28 Marvell Asia Pte Ltd Non-volatile memory switch with host isolation
US11544000B2 (en) 2018-08-08 2023-01-03 Marvell Asia Pte Ltd. Managed switching between one or more hosts and solid state drives (SSDs) based on the NVMe protocol to provide host storage services
CN109815043B (zh) * 2019-01-25 2022-04-05 华为云计算技术有限公司 故障处理方法、相关设备及计算机存储介质
WO2020236972A2 (en) 2019-05-20 2020-11-26 The Broad Institute, Inc. Non-class i multi-component nucleic acid targeting systems
CN111767242B (zh) * 2020-05-28 2022-04-15 西安广和通无线软件有限公司 Pcie设备控制方法、装置、计算机设备和存储介质
WO2023196818A1 (en) 2022-04-04 2023-10-12 The Regents Of The University Of California Genetic complementation compositions and methods

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1197954A (zh) * 1997-03-31 1998-11-04 国际商业机器公司 Pci总线差错的故障隔离方法和隔离系统
CN1547706A (zh) * 2001-08-24 2004-11-17 ض� 提供同步信道的通用输入/输出体系结构、协议和方法
CN102906707A (zh) * 2010-06-23 2013-01-30 国际商业机器公司 管理与硬件事件关联的处理

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134052B2 (en) * 2003-05-15 2006-11-07 International Business Machines Corporation Autonomic recovery from hardware errors in an input/output fabric
JP2006195821A (ja) * 2005-01-14 2006-07-27 Fujitsu Ltd 情報処理システムの制御方法、情報処理システム、ダイレクトメモリアクセス制御装置、プログラム
US7660917B2 (en) * 2006-03-02 2010-02-09 International Business Machines Corporation System and method of implementing multiple internal virtual channels based on a single external virtual channel
US20090063894A1 (en) * 2007-08-29 2009-03-05 Billau Ronald L Autonomic PCI Express Hardware Detection and Failover Mechanism
US7752346B2 (en) * 2007-12-21 2010-07-06 Aprius, Inc. Universal routing in PCI-Express fabrics
US7929919B2 (en) 2008-05-15 2011-04-19 Hewlett-Packard Development Company, L.P. Systems and methods for a PLL-adjusted reference clock
US7992058B2 (en) 2008-12-16 2011-08-02 Hewlett-Packard Development Company, L.P. Method and apparatus for loopback self testing
US7873068B2 (en) * 2009-03-31 2011-01-18 Intel Corporation Flexibly integrating endpoint logic into varied platforms
US8645767B2 (en) * 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8930609B2 (en) * 2010-08-18 2015-01-06 Intel Corporation Method, apparatus, and system for manageability and secure routing and endpoint access
US8751713B2 (en) * 2011-05-06 2014-06-10 International Business Machines Corporation Executing virtual functions using memory-based data in a PCI express SR-IOV and MR-IOV environment
CN103248737B (zh) * 2012-02-10 2016-08-17 联想(北京)有限公司 一种界面显示控制方法、装置和通信终端
CN102662788A (zh) * 2012-04-28 2012-09-12 浪潮电子信息产业股份有限公司 一种计算机系统故障诊断决策及处理方法
US8806098B1 (en) * 2013-03-15 2014-08-12 Avalanche Technology, Inc. Multi root shared peripheral component interconnect express (PCIe) end point
US9286258B2 (en) * 2013-06-14 2016-03-15 National Instruments Corporation Opaque bridge for peripheral component interconnect express bus systems
US9135200B2 (en) * 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1197954A (zh) * 1997-03-31 1998-11-04 国际商业机器公司 Pci总线差错的故障隔离方法和隔离系统
CN1547706A (zh) * 2001-08-24 2004-11-17 ض� 提供同步信道的通用输入/输出体系结构、协议和方法
CN102906707A (zh) * 2010-06-23 2013-01-30 国际商业机器公司 管理与硬件事件关联的处理

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021017503A1 (zh) * 2019-07-30 2021-02-04 华为技术有限公司 一种端点设备的管理方法、装置及系统

Also Published As

Publication number Publication date
EP2869201A4 (en) 2015-11-18
EP2869201A1 (en) 2015-05-06
WO2015035574A1 (zh) 2015-03-19
CN104756081A (zh) 2015-07-01
EP2869201B1 (en) 2017-12-06
US9678826B2 (en) 2017-06-13
US20150082080A1 (en) 2015-03-19
ES2656464T3 (es) 2018-02-27

Similar Documents

Publication Publication Date Title
CN104756081B (zh) 一种故障处理的方法、计算机系统和装置
CN103677927B (zh) 软件升级的方法及装置
CN104239161B (zh) 在虚拟化系统中实现用于共享适配器的增强错误处理
CN101202764B (zh) 确定虚拟以太网适配器的链路状态的方法和系统
TWI229796B (en) Method and system to implement a system event log for system manageability
US7631050B2 (en) Method for confirming identity of a master node selected to control I/O fabric configuration in a multi-host environment
CN102318275B (zh) 基于cc-numa的报文处理方法、装置和系统
CN101196840B (zh) 配置数据镜像的系统和方法
US20070097949A1 (en) Method using a master node to control I/O fabric configuration in a multi-host environment
US20070165520A1 (en) Port trunking between switches
CN100375960C (zh) 用于调试输入/输出故障的方法和系统
CN102346707B (zh) 服务器系统与其操作方法
CN105874442B (zh) 计算机系统和计算机系统中端点设备访问的方法
CN113067875B (zh) 基于微服务网关动态流控的访问方法和装置以及设备
CN109976959A (zh) 一种用于服务器故障检测的便携式设备及方法
JP2014203294A (ja) 障害対応システムおよび障害対応方法
CN109753391A (zh) 处理器的一个或多个结构的功能测试的系统、装置和方法
CN108429656A (zh) 一种监控物理机网卡连接状态的方法
CN105897623A (zh) 一种数据的传输方法和装置
CN107430391B (zh) 管理系统
US10268630B1 (en) Noncoherent interprocessor communication remapping node controller
CN105677589A (zh) 一种访问控制方法、装置及系统
CN104956346B (zh) 控制由于分布式计算系统的计算节点中的故障而导致的错误传播
CN112131196A (zh) 一种分布式日志处理方法、装置、终端设备及存储介质
WO2016101177A1 (zh) 计算机设备内存的检测方法和计算机设备

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