掌桥专利:专业的专利平台
掌桥专利
首页

高速串行计算机扩展总线设备故障的识别方法及装置

文献发布时间:2023-06-19 19:28:50


高速串行计算机扩展总线设备故障的识别方法及装置

技术领域

本发明涉及服务器技术领域,更为具体地,本发明能够提供一种高速串行计算机扩展总线设备故障的识别方法及装置。

背景技术

随着信息安全及网络技术的高速发展,各行各业对服务器的安全性和可维护性要求都日益增长。所以对于服务器厂商来说,在保证服务器稳定运行的同时还要尽可能避免服务器出现故障,即使服务器发生了故障,也应该满足高效且准确地上报故障的要求,并可提供恢复机制,保证服务器的可维护性。

目前,受限于服务器CPU(Central Processing Unit,中央处理器)的Root Port(根端口)的端口数量,则经常使用PCIe(Peripheral Component Interconnect express,高速串行计算机扩展总线)Switch(转接板)对端口数量进行扩展,以实现PCIe设备与CPU的高效互联。PCIe Switch作为连接CPU和PCIe设备之间的桥接设备,以用于扩展CPU的PCIeIO(Input Output,输入输出)资源。

相关技术中,对于CPU直连的PCIe设备和CPU通过Switch下挂PCIe设备,服务器对于PCIe设备故障的识别方法也存在一些差异。对于CPU直连的PCIe设备,CPU与PCIe设备之间的通信如果发生故障,则当前故障数据主要记录在CPU端,根据CPU端的寄存器信息判断出发生故障的PCIe设备的槽位,从而处理故障;对于CPU通过Switch下挂PCIe设备,CPU与Switch下挂的PCIe设备之间是非直连的,Switch用于转发CPU与PCIe设备之间的通信数据,在PCIe设备出现故障后,则CPU端只能确定Switch下挂的PCIe设备或Switch发生了故障,而无法具体确定Switch上哪个槽位的PCIe设备发生了故障。

发明内容

为解决Switch下挂PCIe设备情况下PCIe设备故障后无法确定Switch上哪个槽位的PCIe设备发生故障的问题,本发明提供了高速串行计算机扩展总线设备故障的识别方法及装置,以精准锁定发生故障的PCIe设备。

为实现上述技术目的,本发明能够提供一种高速串行计算机扩展总线设备故障的识别方法,所述识别方法应用于基板管理控制器,所述识别方法包括:接收通过基本输入输出系统上传的故障信息,所述故障信息包括转接板连接的高速串行计算机扩展总线设备的标识符信息;根据所述标识符信息,从设备描述文件中查找到与所述标识符信息相对应的设备槽位信息;所述设备描述文件中存储有多个标识符信息以及与所述多个标识符信息一一对应的多个设备槽位信息。

为实现上述技术目的,本发明还能够提供一种高速串行计算机扩展总线设备故障的识别装置,所述识别装置包括:信息接收模块,用于接收通过基本输入输出系统上传的故障信息,所述故障信息包括转接板连接的高速串行计算机扩展总线设备的标识符信息;信息查找模块,用于根据所述标识符信息,从设备描述文件中查找到与所述标识符信息相对应的设备槽位信息;所述设备描述文件中存储有多个标识符信息以及与所述多个标识符信息一一对应的多个设备槽位信息。

本发明的有益效果包括:根据基本输入输出系统上传的故障信息中的标识符信息,从设备描述文件中查找到与上述标识符信息对应的设备槽位信息,可见本发明的基板管理控制器可快速确定故障信息对应的设备槽位信息,实现在Switch下挂PCIe设备发生故障时能够精确地确定具体PCIe设备的槽位,以能够满足维护人员快速定位发生故障的PCIe设备的需求,即确定具体哪个PCIe设备发生了故障,可见本发明不仅能够有效地节省人力和物力,还能够有效地节省PCIe设备故障的识别过程花费的时间。

附图说明

图1示出了本发明一个或多个实施例中的高速串行计算机扩展总线设备故障的识别方法的一种流程示意图。

图2示出了本发明一个或多个实施例中根据标识符信息从设备描述文件中查找到与标识符信息相对应的设备槽位信息的流程示意图。

图3示出了本发明一个或多个实施例中的高速串行计算机扩展总线设备故障的识别方法的另一种流程示意图。

图4示出了本发明一个或多个实施例中服务器CPU通过转接板下挂n个PCIe设备的示意图。

图5示出了本发明一个或多个实施例中的高速串行计算机扩展总线设备故障的识别方法的再一种流程示意图。

图6示出了本发明一个或多个实施例中的高速串行计算机扩展总线设备故障的识别装置结构的示意图。

具体实施方式

下面结合说明书附图对本发明提供的高速串行计算机扩展总线设备故障的识别方法及装置进行详细的解释和说明。

相关技术中,对于CPU直连的PCIe设备发生故障时,例如不可纠正错误时,CPU会直接重启,并在重启后扫描根端口下的所有PCIe设备的高级错误报告寄存器,从而找到报错的具体PCIe设备;其中,CPU重启后与CPU直连的PCIe设备的寄存器仍然会保存出错时的状态值,所以与CPU直连的PCIe设备发生故障时可直接找到并上报具体故障设备信息。如果CPU通过Switch下挂的PCIe设备发生故障,例如,不可纠正错误,PCIe设备会将出现错误时产生的错误消息(error message)上报到根端口,根端口上报给CPU处理,随后CPU会直接触发重启,但是Switch发生重启后会清空所有相关寄存器,全部恢复为默认值(default),所以Switch及其下挂PCIe设备的相关寄存器均不能保存发生不可纠正错误时的高级错误报告寄存器的状态值,在CPU重启后无法从下挂的PCIe设备中获取错误的详细信息,导致无法确定具体的故障设备的槽位,所以只能将故障关联到Switch上,而无法确定具体的故障设备,存在很大的不确定性,即现有技术无法锁定到底哪个或哪些PCIe设备发生了故障,只能依赖维护人员手动地逐一进行查找;这种情况给PCIe设备维护人员和服务器厂商都造成了人力和物力浪费,特别在Switch下挂的PCIe设备较多情况下,维护人员手动地逐一进行排查的过程导致PCIe设备维护效率非常低。

鉴于此,本发明提供了一种高速串行计算机扩展总线设备故障的识别方法,包括但不限于如下的步骤:接收通过基本输入输出系统上传的故障信息,故障信息包括转接板连接的高速串行计算机扩展总线设备的标识符信息;根据标识符信息,从设备描述文件中查找到与标识符信息相对应的设备槽位信息;设备描述文件中存储有多个标识符信息以及与多个标识符信息一一对应的多个设备槽位信息。本发明实施例根据基本输入输出系统上传的故障信息中的标识符信息,从设备描述文件中查找到与上述标识符信息对应的设备槽位信息,可见本发明的基板管理控制器可快速确定故障信息对应的设备槽位信息,实现在Switch下挂PCIe设备发生故障时能够精确地确定具体PCIe设备的槽位,从而能够满足维护人员快速定位具体哪个PCIe设备发生了故障的需求,可见本发明不仅能够有效地节省人力和物力,还能够有效地节省PCIe设备故障的识别过程花费的时间。另外,由于本发明能够更快地锁定发生故障的PCIe设备,不仅避免了维护人员手动地逐一进行排查的过程,提升了PCIe设备维护效率,而且本发明还能够有助于明显降低由于PCIe设备故障产生的损失。

如图1所示,本发明一个或多个实施例能够提供一种高速串行计算机扩展总线设备故障的识别方法,高速串行计算机扩展总线设备故障的识别方法应用于基板管理控制器(BMC,Baseboard Management Controller)。

具体地,本实施例提供的识别方法可包括但不限于如下的步骤S100至步骤S200。

步骤S100,接收通过基本输入输出系统上传的故障信息,故障信息包括转接板连接的高速串行计算机扩展总线设备的标识符信息。

其中,基本输入输出系统将故障信息上报给基板管理控制器,实现了PCIe设备故障的上报。

本发明实施例中涉及的高速串行计算机扩展总线设备是指PCIe(PeripheralComponent Interconnect express)设备,基本输入输出系统是指服务器BIOS(BasicInput Output System),转接板是指服务器的PCIe Switch。另外,本发明至少一个实施例中的服务器例如可以是AMD服务器,当然并不限于此。

本实施例中的故障信息可以为PCIe设备故障的信息,PCIe设备故障例如为UCE(Uncorrectable Error,不可纠正错误),不可纠正错误发生之后将会影响PCIe设备性能,硬件不能自动恢复。不可纠正错误具体包括Fatal Error(致命错误)和NonFatal Error(非致命错误),致命错误将会影响PCIe link(链路);非致命错误将会影响PCIe设备功能,但是PCIe link链路还是稳定的。可理解的是,本发明另一些实施例中的PCIe设备故障也可为CE(Correctable Error,可纠正错误),可纠正错误发生之后硬件可以自动恢复。

本发明一个或多个实施例中,标识符信息包括总线号(Bus Number)信息、设备号(Device Number)信息及功能号(Function Number)信息,所以本发明涉及的标识符信息即BDF(Bus Number、Device Number、Function Number的简称)信息。本发明实施例BIOS具体可通过IPMI(Intelligent Platform Management Interface,智能平台管理接口)将BDF信息发送至基板管理控制器,BIOS上传的总线号信息、设备号信息以及功能号信息能够准确地描述发生故障的PCIe设备,为后续确定发生故障的PCIe设备槽位信息提供可靠的依据。

步骤S200,根据标识符信息,从设备描述文件中查找到与标识符信息相对应的设备槽位信息;设备描述文件中存储有多个标识符信息以及与多个标识符信息一一对应的多个设备槽位信息。

如图2所示,本发明至少一个较佳的实施例中,根据标识符信息,从设备描述文件中查找到与标识符信息相对应的设备槽位信息,包括但不限于步骤S201至步骤S202。

步骤S201,从设备描述文件中筛选出与标识符信息匹配的设备唯一标识信息,设备描述文件中还存储有与多个设备槽位信息一一对应的多个设备唯一标识信息。

具体实施时,本实施例对设备描述文件进行解析,并根据解析的结果从设备描述文件中筛选出与标识符信息匹配的设备唯一标识信息。

步骤S202,确定与标识符信息匹配的设备唯一标识信息相对应的设备槽位信息。

其中,标识符信息与设备唯一标识信息两者的表示方式往往相同,故本发明实施例先根据标识符信息锁定设备唯一标识信息,有助于提高执行效率,本实施例中相对应的设备唯一标识信息和设备槽位信息往往记录于设备描述文件中的相同位置,从而在确定唯一标识信息的情况下能够直接确定设备槽位信息。

如图3所示,并结合图2和图1,本发明实施例提供的高速串行计算机扩展总线设备故障的识别方法还可包括但不限于步骤S100。

步骤S100,在服务器开机之后,将转接板连接的所有高速串行计算机扩展总线设备的标识符信息、设备唯一标识信息及设备槽位信息均保存至设备描述文件中。

本发明实施例能够在服务器上电后,BIOS将服务器CPU通过Switch下挂PCIe设备的信息全部获取,以及将获取的信息发送给BMC,其中,获取的信息可包括但不限于所有高速串行计算机扩展总线设备的标识符信息、设备唯一标识信息、设备槽位信息、设备类型信息以及各个Switch与其下挂的PCIe设备的关联关系信息等;BMC将所有高速串行计算机扩展总线设备的标识符信息、设备唯一标识信息以及设备槽位信息、设备类型信息以及各个Switch与其下挂的PCIe设备的关联关系信息等均保存至设备描述文件中,本实施例中涉及的设备描述文件例如可以为json(javascript object notation,js对象简谱)文件。本实施例能够对所有Switch下挂PCIe设备的信息记录在设备描述文件上,从而为设备槽位信息的查找过程提供完整的数据支持,保证能够根据标识符信息从设备描述文件中查找到与标识符信息相对应的设备槽位信息。

如图4所示,服务器CPU与转接板上行端口(Upstream Port)连接,转接板下行端口(Downstream Port)与PCIe设备,其中,下行端口1与PCIe设备1连接,……,下行端口n与PCIe设备n连接,n≥2。本发明实施例在服务器开机后,BIOS能够将服务器CPU通过Switch下挂PCIe设备1至PCIe设备n的信息全部获取,具体可获取PCIe设备1至PCIe设备n的标识符信息、设备唯一标识信息、设备槽位信息以及设备类型信息等。

结合图5所示,本发明优选的实施例中,基本输入输出系统还用于在服务器开机之后关闭同步泛滥机制的运行。

很多正在投入使用的服务器上都配置有同步泛滥机制,服务器例如为AMD服务器,同步泛滥机制即Sync Flood(其英文解释为Ahardware-initiated event used for errorcontainment,表示设备遇到一些错误无法自动恢复时提供的一种服务器重启机制)。本实施例能够在服务器开机之后进入BIOS流程,通过关闭Sync Flood的方式,可在PCIe设备发生严重故障(例如Fatal Error)时阻止服务器重启,即使在配置有同步泛滥机制的AMD服务器CPU通过Switch下挂PCIe设备的情况下,如果PCIe设备发生严重故障,本发明实施例仍能够通过阻止服务器重启的方式可靠地将故障信息发送给BMC,该方式明显提高了本发明的适用范围。

如图5所示,基本输入输出系统还用于对多个目标寄存器进行遍历;本发明一些实施例中,基本输入输出系统还用于根据发生故障的高速串行计算机扩展总线设备触发的中断信号对多个目标寄存器进行遍历。可见本实施例基本输入输出系统能够在收到中断信号后才启动对目标寄存器的遍历,避免未发生故障情况下进行目标寄存器遍历导致的资源浪费问题。

具体地,本实施例先将Sync Flood流关闭,防止CPU收到中断信号后直接触发重启操作。在Switch下挂PCIe设备发生故障时,PCIe设备触发SMI(System ManagementInterrupt,系统管理中断)信号并发送给BIOS,BIOS可在收到SMI信号后强行遍历目标寄存器,包括强行遍历Switch和其下挂设备的寄存器信息,以从目标寄存器中获取故障信息,遍历目标寄存器的过程包括检测故障设备的AER(Advanced Error Reporting,高级错误报告,用于报告PCIe设备错误信息)寄存器的值。本发明实施例涉及的目标寄存器包括Switch及其下挂PCIe设备的寄存器,寄存器可包括UCE寄存器、CE寄存器以及AER寄存器中的一种或多种。本实施例接收通过基本输入输出系统上传的故障信息,包括:接收通过基本输入输出系统对多个目标寄存器进行遍历后得到并上传的故障信息。具体实施时,本实施例的基本输入输出系统能够在检测到AER错误后上传故障信息,即发现PCIe设备错误后上传故障信息。

如图5所示,本发明优选的实施例中,该故障信息还包括寄存器信息,识别方法还包括:根据寄存器信息确定高速串行计算机扩展总线设备故障的类型。BIOS具体可通过IPMI(Intelligent Platform Management Interface,智能平台管理接口)将故障设备的BDF信息、故障类型以及寄存器信息发送至基板管理控制器,该寄存器信息具体可为寄存器的状态值。

因此,本发明还能够将寄存器的状态值上报给CPU,寄存器的状态值能够用于精准地表示PCIe设备故障的类型。

其中,寄存器信息中包含的AER信息(AER寄存器的状态值)用于报告PCIe设备错误,说明PCIe设备发生了故障。并通过解析UCE信息(UCE寄存器的状态值)、CE信息(CE寄存器的状态值)的方式确定PCIe设备错误等级和PCIe设备错误类型等,例如判断发生的错误类型是不可纠正错误还是可纠正错误以及根据寄存器的状态值确定具体的错误类型等,所以本发明还具有准确描述PCIe设备故障内容的功能。

具体实施时,本发明查找到与标识符信息相对应的设备槽位(Slot)信息后,对与标识符信息相匹配的设备槽位信息进行记录。而且,本发明还可能够对PCIe设备故障的类型进行记录。本发明实施例可通过日志或文件等方式对发生故障的PCIe设备的设备槽位信息以及PCIe设备故障的类型进行记录,并可上报给服务器CPU以及呈现给用户,例如,Switch下挂PCIe设备发生UCE错误。另外,在本实施例的基础上还可根据预置的规则向用户提供故障处理建议,以达到协助用户快速定位并恢复服务器正常运行环境等目的。

本发明至少一个实施例的高速串行计算机扩展总线设备故障的识别方法还能够包括:将与标识符信息相匹配的设备槽位信息进行展示。

相比常规技术,本发明基板管理控制器记录的设备槽位信息可上报给CPU,并可展示给维护人员。当然,本发明除了向用户展示设备槽位信息信息外,还可向用户展示用于表征PCIe设备故障的类型的寄存器信息等。

结合图5所示,本发明一些实施例中,基本输入输出系统在发送故障信息给基板管理控制器的同时或之后,还包括:基本输入输出系统向服务器OS(Operation System,操作系统)发送NMI(Non Maskable Interrupt,不可屏蔽中断)信号的步骤,例如通过写服务器OS寄存器的方法向服务器OS发送NMI中断,并可随后清除错误状态寄存器,本实施例的错误状态寄存器可包括本发明上述的UCE寄存器、CE寄存器以及AER寄存器。因此,在PCIe设备故障发生后,本发明还能够满足服务器OS对其进行正常处理的需求。服务器OS对PCIe设备故障进行正常处理的过程可包括:监测到Kernel Panic(内核错误)并触发重启,并在dmesg日志(显示内核信息的日志)下记录详细的hardware error(硬件错误)信息。

如图6所示,与本发明高速串行计算机扩展总线设备故障的识别方法基于同一发明技术构思,本发明至少一个实施例还能够提供一种高速串行计算机扩展总线设备故障的识别装置。

上述高速串行计算机扩展总线设备故障的识别装置能够集成于基板管理控制器上,上述高速串行计算机扩展总线设备故障的识别装置包括但不限于信息接收模块和信息查找模块。

信息接收模块,用于接收通过基本输入输出系统上传的故障信息,该故障信息包括转接板连接的高速串行计算机扩展总线设备的标识符信息。

信息查找模块,用于根据标识符信息,从设备描述文件中查找到与标识符信息相对应的设备槽位信息;设备描述文件中存储有多个标识符信息以及与多个标识符信息一一对应的多个设备槽位信息。

可选地,信息查找模块,用于从设备描述文件中筛选出与标识符信息匹配的设备唯一标识信息,设备描述文件中还存储有与多个设备槽位信息一一对应的多个设备唯一标识信息;信息查找模块,用于确定与标识符信息匹配的设备唯一标识信息相对应的设备槽位信息。

可选地,高速串行计算机扩展总线设备故障的识别装置还包括:信息保存模块,用于在服务器开机之后将转接板连接的所有高速串行计算机扩展总线设备的标识符信息、设备唯一标识信息及设备槽位信息均保存至设备描述文件中。

可选地,高速串行计算机扩展总线设备故障的识别装置还包括:故障展示模块,用于将与标识符信息相匹配的设备槽位信息进行展示。

可选地,标识符信息包括总线号信息、设备号信息及功能号信息。

可选地,基本输入输出系统还用于对多个目标寄存器进行遍历;信息接收模块,用于接收通过基本输入输出系统对多个目标寄存器进行遍历后得到并上传的故障信息。

可选地,故障信息还包括寄存器信息,高速串行计算机扩展总线设备故障的识别装置还包括故障确定模块;故障确定模块,还用于根据寄存器信息确定高速串行计算机扩展总线设备故障的类型。

本发明具体实施时,高速串行计算机扩展总线设备故障的识别装置还包括信息记录模块。信息记录模块,用于对与标识符信息相匹配的设备槽位信息进行记录。

可选地,信息记录模块,还用于对故障信息中包含的寄存器信息进行记录。

可选地,本实施例的基本输入输出系统还用于根据发生故障的高速串行计算机扩展总线设备触发的中断信号对多个目标寄存器进行遍历。

可选地,本实施例的基本输入输出系统还用于在服务器开机之后关闭同步泛滥机制的运行。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读存储介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读存储介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM,Random Access Memory),只读存储器(ROM,Read-Only Memory),可擦除可编辑只读存储器(EPROM,Erasable Programmable Read-Only Memory,或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM,Compact Disc Read-Only Memory)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA,Programmable Gate Array),现场可编程门阵列(FPGA,Field Programmable Gate Array)等。

在本说明书的描述中,参考术语“本实施例”、“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。

相关技术
  • 物品识别方法、装置及设备、存储介质、电子装置
  • 一种高速铁路列车的车号识别方法及装置
  • 高速串行计算机扩展总线事务排序规则测试方法及装置
  • 高速串行计算机扩展总线测试方法及装置
技术分类

06120115926602