CN115794456A - PCIe链路修复方法、装置及计算设备 - Google Patents
PCIe链路修复方法、装置及计算设备 Download PDFInfo
- Publication number
- CN115794456A CN115794456A CN202211291418.3A CN202211291418A CN115794456A CN 115794456 A CN115794456 A CN 115794456A CN 202211291418 A CN202211291418 A CN 202211291418A CN 115794456 A CN115794456 A CN 115794456A
- Authority
- CN
- China
- Prior art keywords
- link
- pcie
- state
- processor
- training
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请涉及计算设备技术领域,具体涉及一种PCIe链路修复方法、装置及计算设备。该方法应用于计算设备,所述计算设备包括处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路;在所述计算设备的基本输入输出系统BIOS启动阶段,检测所述PCIe链路的状态;当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练;在所述链路训练结束后,启动所述计算设备的操作系统。该方法可以避免或减少PCIe设备无法被操作系统识别的情况的发生。
Description
技术领域
本申请涉及计算设备技术领域,且特别涉及一种PCIe链路修复方法、装置及计算设备。
背景技术
外围组件快速互连(peripheral component interconnect express,PCIe)总线是计算设备的处理器连接外围设备的常用高速总线。其中,通过PCIe总线和处理器进行连接的设备可以称为PCIe设备。
不难理解,PCIe设备作为计算设备的外围设备,需要被计算设备的操作系统识别,才能正常工作。由于计算设备上PCIe设备的数量以及种类较多,可能会发生一个或多个PCIe设备无法被操作系统识别的情况,这不但使得这些PCIe设备无法正常工作,还可能导致计算设备宕机。因此,需要一种能够避免或减少PCIe设备无法被操作系统识别的情况发生的方案。
发明内容
本申请实施例提供了一种PCIe链路修复方法、装置及计算设备,可以避免或减少PCIe设备无法被操作系统识别的情况的发生。
第一方面,提供了一种PCIe链路修复方法,应用于计算设备,所述计算设备包括处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路;在所述计算设备的基本输入输出系统BIOS启动阶段,检测所述PCIe链路的状态;当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练;在所述链路训练结束后,启动所述计算设备的操作系统。
在该方法中,在启动计算设备的操作系统之前,可以先检测处理器和PCIe设备之间的PCIe链路,并在PCIe链路处于异常状态的情况下,对PCIe链路进行链路训练,以修复PCIe链路,从而避免或减少了因为PCIe链路异常而导致操作系统无法识别PCIe设备的情况的发生。
在一种可能的实施方式中,所述对所述PCIe链路进行链路训练包括:指示所述处理器和所述PCIe设备进入链路训练机制中的恢复recovery状态,以更新所述PCIe链路的配置参数;检测所述更新后的所述PCIe链路;当所述更新后的所述PCIe链路仍处于异常状态,指示所述处理器和所述PCIe设备进入到链路训练机制中的发现detect状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路。
在该实施方式中,可以先进入链路训练机制中的recovery状态,通过recovery状态来更新PCIe链路的配置参数,以期能够修复PCIe链路。若经过配置参数更新后的PCIe链路仍处于异常状态,则指示处理器和PCIe设备进入到链路训练机制中的detect状态,通过detect状态来重新建立处理器和PCIe设备之间的PCIe链路,以期能够修复PCIe链路。
在一种可能的实施方式中,所述对所述PCIe链路进行链路训练包括:指示所述处理器和所述PCIe设备进入链路训练机制中的恢复recovery状态,以更新所述PCIe链路的配置参数;或者,指示所述处理器和所述PCIe设备进入到链路训练机制中的发现detect状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路。
在一种可能的实施方式中,所述链路训练包括多种链路训练模式,其中,不同的链路训练模式对应不同的异常类型;所述当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练包括:基于所述异常状态所属的异常类型,从所述多种链路训练模式中确定第一链路训练模式;按照所述第一链路训练模式,对所述PCIe链路进行链路训练。
在该实现方式中,可以按照异常状态所属的异常类型,选择链路训练模式来对PCIe链路,提高了链路训练的针对性,从而提高了链路修复的效率。
在一种可能的实施方式中,当所述异常状态所属的异常类型为PCIe链路建链失败时,所述第一链路训练模式包括:指示所述处理器和所述PCIe设备进入到链路训练机制中的发现状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路;或者,当所述异常状态所属的异常类型为PCIe链路的通信能力小于PCIe设备的最大通信能力时,所述第一链路训练模式包括:指示所述处理器和所述PCIe设备进入链路训练机制中的恢复状态,以更新所述PCIe链路的配置参数。
在一种可能的实施方式中,所述在所述链路训练结束后,启动所述计算设备的操作系统包括:在所述链路训练结束后,检测所述PCIe链路的状态,并在所述PCIe链路的状态脱离所述异常状态的情况下,启动所述计算设备的操作系统。
在该实施方式中,在确认PCIe链路脱离异常状态后,再启动计算设备的操作系统,从而避免或减少了因为PCIe链路异常而导致操作系统无法识别PCIe设备的情况的发生。
在一种可能的实施方式中,所述方法还包括:当经过所述链路训练后的PCIe链路的仍处于所述异常状态时,重启所述计算设备。
在该实施方式中,若经过链路训练,PCIe链路的仍处于异常状态,可以重启计算设备,以通过重启计算设备,使得处理器和PCIe设备重新初始化,以前能够修复PCIe链路。
在一种可能的实施方式中,所述在所述链路训练结束后,启动所述计算设备的操作系统包括:在所述链路训练结束后,获取所述计算设备连续重启次数,并在所述连续重启次数大于或等于阈值时,启动所述计算设备的操作系统,所述连续重启为所述异常状态导致的连续重启。
在该实施方式中,在连续重启次数大于或等于阈值时,无论PCIe链路是否脱离了异常状态,均启动计算设备的操作系统,从而避免了PCIe链路无法修复还导致的计算设备的操作系统无法启动。
在一种可能的实施方式中,所述阈值是由所述异常状态所属的异常类型确定的;其中,所述异常类型为:PCIe链路建链失败、PCIe链路的通信能力小于PCIe设备的最大通信能力、PCIe链路的CE错误、PCIe链路的UCE错误中的任一种。
第二方面,提供了一种PCIe链路修复装置,配置于计算设备,所述计算设备包括处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路;所述装置包括:检测模块,用于在所述计算设备的基本输入输出系统BIOS启动阶段,检测所述PCIe链路的状态;修复模块,用于当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练;启动模块,用于在所述链路训练结束后,启动所述计算设备的操作系统。
第三方面,提供了一种计算设备,其特征在于,所述计算设备包括PCIe链路修复装置、处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路;所述PCIe链路修复装置用于执行第一方面提供的方法。
第四方面,提供了一种计算机可读存储介质,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行第一方面提供的方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品存储有指令,所述指令在由计算机执行时,使得所述计算机执行第一方面提供的方法。
附图说明
图1是本申请实施例提供一种计算设备的结构示意图;
图2是本申请实施例提供的一种修复装置的结构示意图;
图3是本申请实施例提供的一种链路修复方案的流程图;
图4是本申请实施例提供的一种链路修复方法的流程图;
图5是本申请实施例提供的一种链路修复装置的结构示意图;
图6是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。
在本申请实施例的描述中“一个实施例”或“一些实施例”等意味着在本申请实施例的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本申请实施例中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。
其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联物体的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
在本申请实施例的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
PCIe是一种高速串行计算机扩展总线,已广泛应用在服务器等计算设备中。计算设备可以设置有多个用于插置PCIe设备的PCIe插槽。一般而言,PCIe的插槽位于计算设备的主板上。其中,常见的PCIe设备有网卡、图形处理器(graphics processing unit,GPU)、固态硬盘(solid state disk,SSD)等。PCIe设备和处理器之间具有基于PCIe的链路,该链路可以简称为PCIe链路。当PCIe设备初次插置到计算设备的PCIe的插槽上时,PCIe设备和计算设备的处理器(例如,中央处理器(central processing unit,CPU))通过链路训练建立PCIe链路。其中,链路训练是指在发送端和接收端建立PCIe链路,并使该PCIe链路进入正常状态的过程。
其中,PCIe链路的正常工作状态是指运行操作系统的处理器能够通过PCIe链路识别PCIe设备,并与PCIe设备进行信息交互。与正常工作状态相对的是异常工作状态,即PCIe链路的状态分为正常工作状态和异常工作状态,异常工作状态为正常工作状态之外的状态。PCIe链路的异常状态可以分为情况A1、情况A2、情况A3等多种情况。其中,情况A1为:不能使得运行操作系统的处理器通过该PCIe链路识别PCIe设备,例如,PCI2链路的建链失败。其中,不能识别PCIe设备可以是指虽然在物理层(physical layer)建链了PCIe链路,单子在数据链路层(data link layer)不能识别PCIe设备。情况A2为:可使得运行操作系统的处理器可以通过该PCIe链路识别PCIe设备,但不能使得处理器和PCIe设备进行信息交互,例如可纠错错误(corrected error,CE)和不可纠错错误(uncorrected error,UCE)等。其中,此处的信息交互可以是指应用层或事物层(transaction layer)的数据交互。情况A3为:PCIe链路的通信能力小于PCIe设备的最大通信能力。通信能力是指传输数据的能力。其中,通信能力越大,传输数据的能力越强。在一个示例中,通信能力具体是指数据传输速率。在另一个示例中,通信能力具体是指带宽。在一个例子中,带宽的大小可以通过通道(lane)数量来表示。
在本申请实施例中,正常工作状态也可以简称为正常状态,异常工作状态也可以简称为异常状态。
虽然通过链路训练,可使得PCIe链路进行正常工作状态。但在PCIe链路工作过程中可能会发生异常,使得操作系统无法识别PCIe设备,从而导致处理器和PCIe设备之间无法进行信息交互。
在一种方案中,当操作系统无法识别PCIe设备时,计算设备会重启操作系统。若操作系统重启后,操作系统仍无法识别PCIe设备,会继续重启操作系统。操作系统的重启次数达到预定次数,操作系统会认定PCIe设备故障,不再利用该PCIe设备执行相关业务。
在该方案中,通过重启操作系统,来尝试让操作系统重新识别PCIe设备。而在很多情况下,PCIe设备无法被操作系统识别,并非操作系统的问题。因此,重启操作系统,往往并不能使得操作系统重新识别PCIe设备。并且,操作系统的不断重启会影响操作系统执行业务的连续性,用户体验较差。
本申请实施例提供了一种链路修复方案。该方案可以在计算设备启动时,检测PCIe设备和处理器之间的PCIe链路的状态,并且,PCIe链路处于异常状态时,对PCIe链路进行训练,以对PCIe链路进行修复,然后,启动操作系统。从而避免因为PCIe链路的故障而导致操作系统无法识别PCIe设备的情况的发生。
接下来,对本申请实施例提供的链路修复方案进行介绍。
本申请实施例提供的一种计算设备100。其中,计算设备100为具有数据处理能力的装置、设备或平台。在一个例子中,计算设备100可以为服务器。
如图1所示,计算设备100包括处理器110和PCIe设备120。示例性的,处理器110可以为中央处理器。示例性的,PCIe设备120可以为网卡、GPU、硬盘等设备。
处理器110和PCIe设备120之间具有PCIe链路121。处于正常状态的PCIe链路121可以用于运行操作系统的处理器110识别PCIe设备120,并和PCIe设备120进行信息交互,以利用PCIe设备120执行相关业务。以PCIe设备120为网卡为例,PCIe设备120可以接入网络。处理器110可以通过PCIe链路121向PCIe设备120发送数据,以通过PCIe设备120将数据发送至网络。即计算设备100或者说处理器110利用PCIe设备120执行数据传输业务。
当PCIe链路121处于异常状态时,处理器110可能无法通过PCIe链路121识别PCIe设备120,从而影响相关业务的执行。
继续参阅图1,计算设备100还可以包括用于修复处理器110和PCIe设备120之间PCIe链路(即PCIe链路121)的修复装置130。修复装置130与处理器110通信连接,也与PCIe设备120通信连接,使得修复装置130可以指示处理器110和PCIe设备120执行相关操作,以修复PCIe链路121。
其中,修复装置130可以在计算设备100上电后、启动操作系统之前开始工作,以能够在操作系统启动之前,对PCIe链路121进行修复。换言之,计算设备100的启动过程可以分为三个阶段,依次是:上电阶段、PCIe链路修复阶段、操作系统启动阶段。由此,可以避免操作系统启动后,因为PCIe链路121处于异常状态而使得操作系统无法识别PCIe设备120的情况发生,从而避免了因操作系统无法识别PCIe设备120而导致的计算设备100的重启。
在一些实施例中,修复装置130可以通过软件方式实现。示例性的,修复装置130具体可以实现为固件(firmware),从而可以在启动操作系统之前,就可以启动修复装置130。在一个例子中,修复装置130可以为计算设备100的BIOS中的功能模块,由此,可以在计算设备100的BIOS启动时,启动修复装置130,实现在操作系统启动之前,启动修复装置130。
在一些实施例中,修复装置130还可通过硬件方式实现。例如,修复装置130可以实现为计算设备100基板管理控制器(baseboard management controller,BMC)中的一个或多个硬件模块。或者,计算设备100的BMC可以充当修复装置130。
在一些实施例中,如图2所示,修复装置130可以包括故障检测模块131、自愈模块132以及操作系统启动模块134。其中,故障检测模块131在计算设备100上电后,可以检测PCIe链路121是否处于异常状态。
若故障检测模块131的检测结果显示PCIe链路121处于异常状态,故障检测模块131可以通知自愈模块132对PCIe链路121进行修复。在修复完成后,自愈模块132可以通知操作系统启动模块134启动操作系统或者触发操作系统启动。
若故障检测模块131的检测结果显示PCIe链路121处于正常状态,故障检测模块131可以通知操作系统启动模块134启动操作系统或者触发操作系统启动。
在一些实施例中,如图2所示,修复装置130还可以包括状态检测模块133。状态检测模块133用于在自愈模块132对PCIe链路121进行修复的期间,检测PCIe链路121的状态。若状态检测模块133的检测结果显示PCIe链路121仍处于异常状态,则状态检测模块133可以通知自愈模块132继续修复PCIe链路121。若状态检测模块133的检测结果显示PCIe链路121仍处于异常状态,状态检测模块133可以通知操作系统启动模块134启动操作系统或者触发操作系统启动。
在一些实施例中,如图2所示,在自愈模块132完成对PCIe链路121的修复后,若仍从状态检测模块133接收到用于表示PCIe链路121处于异常状态的通知,则自愈模块132可以触发计算设备100重启,以尝试通过处理器110和设备120重新初始化,来修复PCIe链路121。其中,此处的计算设备100的重启发生在操作系统启动之后,即此处的重启无需重启操作系统,因此,重启占用时间断,可以较快完成。
示例性的,自愈模块132可以记录自愈模块132因链路121的异常状态而触发的计算设备100重启的次数。若最近因链路121的异常状态而发生的连续重启的次数达到设定阈值C1,则自愈模块132不再触发计算设备100的重启,而是通知操作系统启动模块134触发操作系统启动,从而避免计算设备100的反复重启,而影响计算设备100的运行。特别是,当PCIe链路121的异常状态属于情况A2时,该示例的方案可以减少对计算设备100执行其他业务的影响。其中,其他业务是指计算设备100无需通过或借助PCIe设备120就可执行的业务。
其中,此处的连续重启可以是指自愈模块132因链路121的异常状态而触发的BIOS的连续重启。或者说,此处的连续重启是因链路121未能脱离出异常状态而导致的连续重启。其中,链路121的异常状态是指在步骤301所检测出的异常状态。
具体而言,自愈模块132因链路121的异常状态而触发了一次BIOS重启,并在该BIOS启动阶段,又检测到链路121处于该异常状态,并且又因该异常状态触发了一次BIOS重启。那么这两次重启可以称为连续的两次重启。
阈值C1为大于1的整数。示例性的,阈值C1可以为预设值,例如3、5、7等。示例性的,阈值C1可以由PCIe链路的异常状态所属的异常类型确定。其中,异常类型可以分为PCIe链路建链失败、PCIe链路的通信能力小于PCIe设备的最大通信能力、PCIe链路的CE错误、PCIe链路的UCE错误等。可以针对不同的异常类型,设置不同的大小的阈值C1。例如,对于PCIe链路建链失败这一异常类型,阈值C1可以被设定7。对于PCIe链路的通信能力小于PCIe设备的最大通信能力这一异常类型,阈值C1可以被设定为3。等等,此处不再一一列举。
上文示例介绍了修复装置130的各功能模块的功能。接下来,结合修复装置130的各功能模块,示例介绍本申请实施例提供的链路修复方案的流程。另外,在下文描述中,PCIe链路121也可以简称为链路121。PCIe设备120也可以简称为设备120。
参阅图3,计算设备100上电,之后故障检测模块131可以执行步骤301,检测链路121的状态,以及执行步骤302,判断链路121是否处于异常状态。
在一些实施例中,故障检测模块131可以查询设备120的寄存器中的在位状态标志位。该在位状态标注位用于表示设备120是否存在。示例性的,若该在位状态标注位上的比特值为比特值B1,则表示设备120存在。若该在位标注位上的比特值为比特值B2,则表示设备120不存在。其中,比特值B1为0、1中的一个,比特值B2为0、1中的另一个。
在检测到设备120存在后,故障检测模块131可以查询设备120的寄存器中的建链成功标志位。若建链成功标志位处于链路可正常使用(datalink layer link active,DL_Acitve)状态,则表示链路121处于正常状态。若建链成功标志位不处于DL_Acitve状态,则表示链路121处于建链失败这一异常状态。
若链路121处于建链失败这一异常状态,则故障检测模块可以执行步骤303b,向自愈模块132发送修复指示。
在一些实施例中,检测链路121的通信能力,并判断链路121的通信能力是否小于设备120的最大通信能力。在一个示例中,通信能力具体是指数据传输速率。在另一个示例中,通信能力具体是指带宽。在一个例子中,带宽的大小可以通过通道(lane)数量来表示。示例性的,设备120的寄存器中存储了设备120的最大通信能力以及链路121的通信能力。故障检测模块131可以在设备120的寄存器中查询设备120的最大通信能力以及链路121的通信能力,并比较设备120的最大通信能力以及链路121的通信能力,从而可以得到链路121的通信能力是否小于设备120的最大通信能力。其中,当链路121的通信能力不小于设备120的最大通信能力时,故障检测模块131可以执行步骤303a,向操作系统启动模块134发送启动指示。当链路121的通信能力小于设备120的最大通信能力时,即链路121处于链路通信能力小于设备最大通信能力这一异常状态时,故障检测模块可以执行步骤303b,向自愈模块132发送修复指示。
在一些实施例中,故障检测模块131还可以检测链路121是否处于CE或UCE等故障状态。具体而言,故障检测模块131可以在设备120的寄存器的相关标志位,并根据标志位所标识的情况,判断链路121是否处于CE或UCE等故障状态。并当链路121处于CE或UCE等故障状态时,故障检测模块可以执行步骤303b,向自愈模块132发送修复指示。
继续参阅图3,自愈模块132可以响应该修复指示,执行步骤304,修复链路121。其中,自愈模块132可以通过对链路121进行链路训练,来修复链路121。接下来,介绍链路训练机制。
在此,PCIe链路的链路训练由链路训练状态机(link training and statusstate machine,LTSSM)完成。其中,LTSSM是BIOS中的功能模块。LTSSM可以按照链路训练机制对PCIe链路进行链路训练。其中,链路训练机制包括发现(detect)状态、轮询(polling)状态、配置(configuration)状态、L0状态、恢复(recovery)状态等多种状态。其中,对PCIe链路进行链路训练是指使PCIe链路进入多种状态中的不同状态。
其中,detect状态是链路训练的起始状态。在detect状态,发送端检测接收端是否存在,且判断接收端是否可以正常工作。如果接收端存在且可以正常工作,可以建立PCIe链路,并进入到后续状态。在detect状态的后续状态,可以配置PCIe链路的参数,例如进行位锁定(bit lock)、字符锁定(symbol lock)、块锁定(block lock),确定链路宽度(linkwidth)、通道位置翻转(lane reversal)、信号极性翻转(polarity inversion),以及确定链路的数据率(data rate)和通道对齐(lane-to-lane de-skew)等。具体可以参考现有技术的介绍,在此不再赘述。
Recovery状态也可以称为重新训练状态。在recovery状态,可以更新已建立的PCIe链路的配置参数,例如,重新进行位锁定(bit lock)、字符锁定(symbol lock)、块锁定(block lock),重新确定链路宽度(link width)、通道位置翻转(lane reversal)、信号极性翻转(polarity inversion),以及重新确定链路的数据率(data rate)和通道对齐(lane-to-lane de-skew)等。
在步骤304中,自愈模块132可以具有LTSSM的功能,或者调用LTSSM来训练链路121。
在一些实施例中,在步骤304中可以通过方式1来实现链路121的链路训练。方向1为:自愈模块132自身或者调用LTSSM,指示链路121进入链路训练机制的recovery状态。具体而言,自愈模块132自身或者调用LTSSM,指示处理器110和设备120进入链路训练机制的recovery状态。示例性的,自愈模块132自身或调用LTSSM,向处理器110和设备120分别发送传输流(transport stream),该传输流可以执行处理器110和设备120进入到recovery状态。处于recovery状态的处理器110和设备120可以重新协商链路121的配置参数,从而更新链路121的配置参数。具体可以参考上文介绍,在此不再赘述。
若链路121的配置参数更新后,链路121脱离了异常状态,则可以触发计算设备100的操作系统启动。
若链路121的配置参数更新后,链路121仍处于异常状态,则可以触发计算设备100重启。其中,计算设备100重启可以强制处理器110和设备120重新初始化。处理器110和设备120重新初始化,有可能实现链路121的修复,使得链路121进入正常状态或者提升链路121的通信能力。
在一些实施例中,自愈模块132可以记录自愈模块132因为链路121的异常状态而触发的计算设备100重启的重启次数。在链路121仍处于异常状态的情况下,自愈模块132可以执行步骤309,判断重启次数是否小于阈值C1。
当最近因链路121的异常状态而发生的连续重启的次数大于或等于阈值C1时,即不小于阈值C1时,无论链路121处于何种状态,自愈模块132均执行步骤311,向操作系统启动模块134发送启动指示,以触发计算设备100的操作系统启动。即当最近因链路121的异常状态而发生的连续重启次数大于或等于阈值C1时,即使链路121处于链路失败,或者链路121的通信能力小于设备120的最大通信能力,或者CE,或者UCE等异常状态,自愈模块132触发计算设备100的操作系统启动。
当最近因链路121的异常状态而发生的连续重启的次数小于阈值C1时,自愈模块132可以执行步骤310,向计算设备100的重启装置发送重启指示,以指示计算设备100重启。其中,重启装置为计算设备100中用于控制计算设备100重启的装置。重启装置可以响应重启指示,而控制计算设备100进行重启。
其中,当计算设备100重启上电后,修复装置300可以再次执行图4所示方案,再次不再一一赘述。
在一些实施例中,在步骤304中可以通过方式2来实现链路121的链路训练。方式2为:愈模块132自身或者调用LTSSM,指示链路121进入链路训练机制的detect状态,以重新建立链路121。具体而言,自愈模块132自身或者调用LTSSM,指示处理器110和设备120进入链路训练机制的detect状态。示例性的,自愈模块132自身或者调用LTSSM,指示处理器110断开处理器110和设备120之间的PCIe链路(即链路121),或者指示设备120断开设备120和处理器110之间的PCIe链路(即链路121),从而强制处理器110和设备120进入detect状态。detect状态处理器110和设备120可以开始完整的重新建立PCIe链路的过程,从而在处理器110和设备120之间重新建立PCIe链路。处理器110和设备120之间重新建立的PCIe链路也可以称为链路121,具体为新的链路121。
若新的链路121脱离了异常状态,则可以触发计算设备100的操作系统启动。
若新的链路121处于异常状态,则可以触发计算设备100重启。重启的方案具体可以参考上文介绍,在此不再赘述。
在一些实施例中,在步骤304中,可以通过方向1和方式2来实现链路121的链路训练。具体而言,可以先通过方式1来实现链路121的链路训练。若方式1的链路训练的结果为链路121仍处于异常状态,则可以触发计算设备100的操作系统启动。若方式1的链路训练的结果为链路121仍处于异常状态,则在通过方式2再次对链路121进行链路训练。若方式2的链路训练结果为新的链路121脱离了异常状态,则可以触发计算设备100的操作系统启动。若方式2的链路训练结果为新的链路121处于异常状态,则可以触发计算设备100重启。重启的方案具体可以参考上文介绍,在此不再赘述。
在一些实施例中,可以根据链路121的异常状态所属的异常类型,选择方式1和/或方式2,进行链路训练。例如,当链路121的异常状态为建链失败时,可以通过方式2来进行链路121的链路训练。当链路121的异常状态为链路121的通信能力不小于设备120的最大通信能力时,可以通过方式1来进行链路121的链路训练。等等,此处不再一一列举。
在一些实施例中,如图3所示,状态检测模块133检测步骤304对链路121的修复结果。具体而言,可以通过步骤305,获取链路121的状态。示例性的,状态检测模块133可以按照预设周期或者说每间隔预设的时间段,获取一次链路121的状态。示例性的,步骤304可以查询设备120的寄存器中的建链成功标志位,以查询链路121的状态。示例性的,状态检测模块133可以在设备120的寄存器中查询设备120的最大通信能力以及链路121的通信能力,以判断链路121的通信能力是否小于设备120的最大通信能力。然后,状态检测模块133可以执行步骤306,判断链路121是否处于异常状态。若链路121不处于异常状态,即链路121处于正常状态,则执行步骤307,向操作系统启动模块134发送启动指示,以触发计算设备100的操作系统启动。若链路121不处于异常状态,则执行步骤308,向自愈模块132发送异常状态指示,以指示自愈模块132继续对链路121进行链路训练。特别是,在步骤304通过方向1和方式2来实现链路121的链路训练的情况下,状态检测模块133可以检测方式1的链路训练结果。若方式1的链路训练的结果为链路121仍处于异常状态,则状态检测模块133可以执行步骤308,以通知自愈模块132采用方式2再次对链路121进行链路训练。
继续参阅图3,若链路121脱离了异常状态,即链路121处于正常状态,则故障检测模块131可以执行步骤303a,向操作系统启动模块134发生启动指示。该启动指示可以指示操作系统启动模块134启动计算设备100的操作系统或者触发计算设备100的操作系统启动。
本申请实施例提供的链路修复方案,可以在启动操作系统之前,检测PCIe链路是否故障,并在PCIe故障的情况下,通过链路训练对PCIe链路进行修复,从而避免因为PCIe链路的故障而导致操作系统无法识别PCIe设备的情况的发生,提高了计算设备运行的稳定性。另外,本申请实施例提供的方案,还可以在PCIe链路的通信能力达不到设定要求的情况下,对PCIe链路进行修复,以提高PCIe链路的通信能力,从而提高计算设备的性能。
基于上文描述的链路修复方案,本申请实施例还提供了一种PCIe链路修复方法。可以理解,该方法是上述链路修复方案的另一种表达形式,该方法的具体实现过程可以参考上文对链路修复方案的介绍。该方法可以应用于计算设备,所述计算设备包括处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路。如图4所示,该方法包括如下步骤。
步骤401,在所述计算设备的基本输入输出系统BIOS启动阶段,检测所述PCIe链路的状态。具体可以参考上文对图3中步骤301的介绍实现,在此不再赘述。
步骤402,当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练。具体可以参考上文对图3中步骤302-步骤304的介绍实现,在此不再赘述。
步骤403,在所述链路训练结束后,启动所述计算设备的操作系统。具体可以参考上文对图3中步骤307、步骤311的介绍实现,在此不再赘述。
在一些实施例中,所述对所述PCIe链路进行链路训练包括:指示所述处理器和所述PCIe设备进入链路训练机制中的恢复recovery状态,以更新所述PCIe链路的配置参数;检测所述更新后的所述PCIe链路;当所述更新后的所述PCIe链路仍处于异常状态,指示所述处理器和所述PCIe设备进入到链路训练机制中的发现detect状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路。具体可以参考上文对图3中步骤304的介绍实现,在此不再赘述。
在一些实施例中,所述对所述PCIe链路进行链路训练包括:指示所述处理器和所述PCIe设备进入链路训练机制中的恢复recovery状态,以更新所述PCIe链路的配置参数;或者,指示所述处理器和所述PCIe设备进入到链路训练机制中的发现detect状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路。具体可以参考上文对图3中步骤304的介绍实现,在此不再赘述。
在一些实施例中,所述链路训练包括多种链路训练模式,其中,不同的链路训练模式对应不同的异常类型;所述当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练包括:基于所述异常状态所属的异常类型,从所述多种链路训练模式中确定第一链路训练模式;按照所述第一链路训练模式,对所述PCIe链路进行链路训练。
在一些实施例中,当所述异常状态所属的异常类型为PCIe链路建链失败时,所述第一链路训练模式包括:指示所述处理器和所述PCIe设备进入到链路训练机制中的发现状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路;或者,当所述异常状态所属的异常类型为PCIe链路的通信能力小于PCIe设备的最大通信能力时,所述第一链路训练模式包括:指示所述处理器和所述PCIe设备进入链路训练机制中的恢复状态,以更新所述PCIe链路的配置参数。
在一些实施例中,所述在所述链路训练结束后,启动所述计算设备的操作系统包括:在所述链路训练结束后,检测所述PCIe链路的状态,并在所述PCIe链路的状态脱离所述异常状态的情况下,启动所述计算设备的操作系统。具体可以参考上文对图3中步骤306、步骤307的介绍实现,在此不再赘述。
在一些实施例中,所述方法还包括:当经过所述链路训练后的PCIe链路的仍处于所述异常状态时,重启所述计算设备。具体可以参考上文对图3中步骤309、步骤310的介绍实现,在此不再赘述。
在该实施例的一个示例中,所述在所述链路训练结束后,启动所述计算设备的操作系统包括:在所述链路训练结束后,获取所述计算设备连续重启次数,并在所述连续重启次数大于或等于阈值时,启动所述计算设备的操作系统,所述连续重启为所述异常状态导致的连续重启。具体可以参考上文对图3中步骤309、步骤311的介绍实现,在此不再赘述。
在该示例的一个例子中,所述阈值是由所述异常状态所属的异常类型确定的;其中,所述异常类型为:PCIe链路建链失败、PCIe链路的通信能力小于PCIe设备的最大通信能力、PCIe链路的CE错误、PCIe链路的UCE错误中的任一种。
本申请实施例提供的链路修复方案,可以在启动操作系统之前,检测PCIe链路是否故障,并在PCIe故障的情况下,通过链路训练对PCIe链路进行修复,从而避免因为PCIe链路的故障而导致操作系统无法识别PCIe设备的情况的发生,提高了计算设备运行的稳定性。
本申请实施例还提供了一种PCIe链路修复装置500。装置500可配置于计算设备,所述计算设备包括处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路。如图5所示,所述装置500包括:
检测模块510,用于在所述计算设备的基本输入输出系统BIOS启动阶段,检测所述PCIe链路的状态;
修复模块520,用于当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练;
启动模块530,用于在所述链路训练结束后,启动所述计算设备的操作系统。
装置500的各功能模块的功能可以参考上文对图3或图4所示方法实施例的介绍实现,在此不再赘述。
在一些实施例中,装置500可以通过软件方式实现,例如,装置500可以为包含在BIOS中的一组应用程序。
在一些实施例中,装置500可以通过硬件方式实现。例如,装置500可以为主板上一个或多个芯片,该一个或多个芯片存储有计算机程序,并可以执行该计算机程序,以实现图3或图4所示方法实施例。
本申请实施例提供了一种计算设备600。如图6所示,计算设备600包括PCIe链路修复装置500、处理器610和PCIe设备620,其中,所述处理器610和所述PCIe设备620之间具有PCIe链路;所述PCIe链路修复装置600用于执行图4所示方法或图3中修复装置200所执行的操作。
本申请实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述图4所示的方法。
本申请实施例中还提供了一种计算机程序产品,所述计算机程序产品存储有指令,所述指令在由计算机执行时,使得所述计算机实施上述图4所示的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
此外,本申请实施例的各个方面或特征可以实现成方法、装置或使用标准编程和/或工程技术的制品。本申请中使用的术语“制品”涵盖可从任何计算机可读器件、载体或介质访问的计算机程序。例如,计算机可读介质可以包括,但不限于:磁存储器件(例如,硬盘、软盘或磁带等),光盘(例如,压缩盘(compact disc,CD)、数字通用盘(digital versatiledisc,DVD)等),智能卡和闪存器件(例如,可擦写可编程只读存储器(erasableprogrammable read-only memory,EPROM)、卡、棒或钥匙驱动器等)。另外,本文描述的各种存储介质可代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可包括但不限于,无线信道和能够存储、包含和/或承载指令和/或数据的各种其它介质。
在上述实施例中,计算装置可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digitalvideo disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
应当理解的是,在本申请实施例的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者接入网设备等)执行本申请实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
Claims (11)
1.一种PCIe链路修复方法,其特征在于,应用于计算设备,所述计算设备包括处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路;
在所述计算设备的基本输入输出系统BIOS启动阶段,检测所述PCIe链路的状态;
当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练;
在所述链路训练结束后,启动所述计算设备的操作系统。
2.根据权利要求1所述的方法,其特征在于,所述对所述PCIe链路进行链路训练包括:
指示所述处理器和所述PCIe设备进入链路训练机制中的恢复recovery状态,以更新所述PCIe链路的配置参数;
检测所述更新后的所述PCIe链路;
当所述更新后的所述PCIe链路仍处于异常状态,指示所述处理器和所述PCIe设备进入到链路训练机制中的发现detect状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路。
3.根据权利要求1所述的方法,其特征在于,所述对所述PCIe链路进行链路训练包括:
指示所述处理器和所述PCIe设备进入链路训练机制中的恢复recovery状态,以更新所述PCIe链路的配置参数;或者,
指示所述处理器和所述PCIe设备进入到链路训练机制中的发现detect状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路。
4.根据权利要求1所述的方法,其特征在于,所述链路训练包括多种链路训练模式,其中,不同的链路训练模式对应不同的异常类型;所述当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练包括:
基于所述异常状态所属的异常类型,从所述多种链路训练模式中确定第一链路训练模式;
按照所述第一链路训练模式,对所述PCIe链路进行链路训练。
5.根据权利要求4所述的方法,其特征在于,
当所述异常状态所属的异常类型为PCIe链路建链失败时,所述第一链路训练模式包括:指示所述处理器和所述PCIe设备进入到链路训练机制中的发现状态,以在所述处理器和所述PCIe设备之间重新建立PCIe链路;
或者,当所述异常状态所属的异常类型为PCIe链路的通信能力小于PCIe设备的最大通信能力时,所述第一链路训练模式包括:指示所述处理器和所述PCIe设备进入链路训练机制中的恢复状态,以更新所述PCIe链路的配置参数。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述在所述链路训练结束后,启动所述计算设备的操作系统包括:
在所述链路训练结束后,检测所述PCIe链路的状态,并在所述PCIe链路的状态脱离所述异常状态的情况下,启动所述计算设备的操作系统。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
当经过所述链路训练后的PCIe链路的仍处于所述异常状态时,重启所述计算设备。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述在所述链路训练结束后,启动所述计算设备的操作系统包括:
在所述链路训练结束后,获取所述计算设备连续重启次数,并在所述连续重启次数大于或等于阈值时,启动所述计算设备的操作系统,所述连续重启为所述异常状态导致的连续重启。
9.根据权利要求8所述的方法,其特征在于,所述阈值是由所述异常状态所属的异常类型确定的;其中,所述异常类型为:PCIe链路建链失败、PCIe链路的通信能力小于PCIe设备的最大通信能力、PCIe链路的CE错误、PCIe链路的UCE错误中的任一种。
10.一种PCIe链路修复装置,其特征在于,配置于计算设备,所述计算设备包括处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路;所述装置包括:
检测模块,用于在所述计算设备的基本输入输出系统BIOS启动阶段,检测所述PCIe链路的状态;
修复模块,用于当所述PCIe链路处于异常状态时,对所述PCIe链路进行链路训练;
启动模块,用于在所述链路训练结束后,启动所述计算设备的操作系统。
11.一种计算设备,其特征在于,所述计算设备包括PCIe链路修复装置、处理器和PCIe设备,其中,所述处理器和所述PCIe设备之间具有PCIe链路;所述PCIe链路修复装置用于执行权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211291418.3A CN115794456A (zh) | 2022-10-19 | 2022-10-19 | PCIe链路修复方法、装置及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211291418.3A CN115794456A (zh) | 2022-10-19 | 2022-10-19 | PCIe链路修复方法、装置及计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794456A true CN115794456A (zh) | 2023-03-14 |
Family
ID=85433407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211291418.3A Pending CN115794456A (zh) | 2022-10-19 | 2022-10-19 | PCIe链路修复方法、装置及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794456A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117440088A (zh) * | 2023-12-20 | 2024-01-23 | 荣耀终端有限公司 | 通话方法及相关设备 |
-
2022
- 2022-10-19 CN CN202211291418.3A patent/CN115794456A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117440088A (zh) * | 2023-12-20 | 2024-01-23 | 荣耀终端有限公司 | 通话方法及相关设备 |
CN117440088B (zh) * | 2023-12-20 | 2024-05-14 | 荣耀终端有限公司 | 通话方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815043B (zh) | 故障处理方法、相关设备及计算机存储介质 | |
US8898517B2 (en) | Handling a failed processor of a multiprocessor information handling system | |
KR100968641B1 (ko) | 점-대-점 링크 협의 방법, 디바이스, 집적 회로 및 전자시스템 | |
WO2018095107A1 (zh) | 一种bios程序的异常处理方法及装置 | |
CN102244669B (zh) | 一种堆叠设备中软件升级的方法和堆叠设备 | |
RU2614569C2 (ru) | Стойка с функцией автоматического восстановления и способ автоматического восстановления для этой стойки | |
CN105426275A (zh) | 双活集群系统中容灾的方法及装置 | |
US20180210783A1 (en) | Information processing apparatus, control method of the same, and storage medium | |
US20210240831A1 (en) | Systems and methods for integrity verification of secondary firmware while minimizing boot time | |
CN115794456A (zh) | PCIe链路修复方法、装置及计算设备 | |
CN114116280A (zh) | 交互式bmc自恢复方法、系统、终端及存储介质 | |
CN109976886B (zh) | 内核远程切换方法及装置 | |
US7747893B2 (en) | Method and system for managing resources during system initialization and startup | |
CN102770851B (zh) | 恢复不稳定总线的稳定性 | |
CN110740066B (zh) | 一种席位不变的跨机故障迁移方法和系统 | |
CN111090537B (zh) | 集群启动方法、装置、电子设备及可读存储介质 | |
CN113412480B (zh) | 挂载处理方法、装置、电子设备及计算机可读取存储介质 | |
CN115904773A (zh) | 一种内存故障信息收集方法、装置及存储介质 | |
WO2020102940A1 (zh) | 一种异常处理方法、终端设备及存储介质 | |
CN108664361B (zh) | Pcie非透明通道修复方法及装置 | |
WO2017124918A1 (zh) | 一种设备热处理方法和装置 | |
CN115168146A (zh) | 一种异常检测方法和装置 | |
CN114296995A (zh) | 一种服务器自主修复bmc的方法、系统、设备及存储介质 | |
CN112463446B (zh) | 一种PCIe设备恢复方法、系统及电子设备和存储介质 | |
US20210064108A1 (en) | Information processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |