CN115061558A - 一种pcie设备的热复位方法、装置、存储介质及pcie设备 - Google Patents
一种pcie设备的热复位方法、装置、存储介质及pcie设备 Download PDFInfo
- Publication number
- CN115061558A CN115061558A CN202210695017.8A CN202210695017A CN115061558A CN 115061558 A CN115061558 A CN 115061558A CN 202210695017 A CN202210695017 A CN 202210695017A CN 115061558 A CN115061558 A CN 115061558A
- Authority
- CN
- China
- Prior art keywords
- value
- link
- pcie
- starting
- reset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种PCIE设备的热复位方法、装置、存储介质及PCIE设备,所述方法包括:获取PCIE设备的系统启动类型,启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动;根据启动类型确定PCIE设备的链路能力值的获取方式,并根据获取方式获取链路能力值,以及,获取PCIE设备的链路状态值;将链路状态值与链路能力值进行比较;当链路状态值未达到链路能力值时,通过配置PCIE设备的桥控制寄存器的二级总线复位位,对PCIE设备进行热复位。本发明实施例能够有效解决PCIE设备链路不稳定造成的掉速度、掉带宽等问题,利用软件控制实现热复位,无需硬件干涉,也无需对整个系统进行重启,效率更高,同时对于终端类设备产品在启动、睡眠和休眠恢复时也有很好的效果。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种PCIE设备的热复位方法、装置、计算机可读存储介质及PCIE设备。
背景技术
PCIE(Peripheral Component Interconnect Express,总线和接口标准)是一种高速串行计算机扩展总线标准,随着PCIE技术的发展与设备的更新,各种设备稳定性能参差不齐,从而不可避免的会出现稳定性问题,例如PCIE设备的链路不稳定,导致出现掉速度、掉带宽等问题。
目前对于此类问题主要有三种方案:第一种是发现掉速度、掉带宽后,人工去检查设备,看是什么问题,该方案需人工干预,效率和成效无法保证;第二种是掉速度、掉带宽后,对设备进行硬件重启,看能否恢复,该方案需重启所有硬件,时效被拉长,且对其他正常设备造成的影响不可预知;第三种是掉速度、掉带宽后,对设备中的软件进行重新训练,但重新训练效果不是很理想,有时候需训练很多次才能成功,效率较低,且该方案主要是用在服务器领域,对于终端类设备产品的使用场景无法完全覆盖。
发明内容
本发明实施例的目的在于,提供一种PCIE设备的热复位方法、装置、计算机可读存储介质及PCIE设备,能够有效解决PCIE设备链路不稳定造成的掉速度、掉带宽等问题,并且利用软件控制实现热复位,无需硬件干涉,也无需对整个系统进行重启,效率更高,同时对于终端类设备产品在启动、睡眠恢复和休眠恢复时也有很好的效果。
为了实现上述目的,本发明实施例提供了一种PCIE设备的热复位方法,包括:
获取PCIE设备的系统启动类型,所述启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动;
根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,以及,获取所述PCIE设备的链路状态值;
将所述链路状态值与所述链路能力值进行比较;
当所述链路状态值未达到所述链路能力值时,通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位。
进一步地,所述根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,具体包括:
当所述启动类型为正常启动时,在UEFI启动流程的DXE阶段通过读取所述PCIE设备的配置空间的链路能力寄存器的值获得所述链路能力值;
当所述启动类型为睡眠唤醒启动时,通过读取所述PCIE设备的存储器中预先存储的值获得所述链路能力值;
当所述启动类型为休眠唤醒启动时,在所述DXE阶段通过读取所述链路能力寄存器的值,或者,通过读取所述存储器中预先存储的值,获得所述链路能力值。
进一步地,所述方法还包括:
在所述DXE阶段通过读取所述链路能力寄存器的值获得所述链路能力值之后,将所述链路能力值保存在所述存储器中。
进一步地,所述获取所述PCIE设备的链路状态值,具体包括:
通过读取PCIE控制器监控的链路状态寄存器的值获得所述链路状态值。
进一步地,所述通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位,具体包括:
将所述二级总线复位位配置为1,经过第一预设时间之后,将所述二级总线复位位配置为0,实现对所述PCIE设备进行热复位。
进一步地,所述将所述二级总线复位位配置为1,经过第一预设时间之后,将所述二级总线复位位配置为0,具体包括:
读取所述桥控制寄存器的原始值;
通过对所述原始值进行或运算,将所述二级总线复位位配置为1;
经过第一预设时间之后,通过对所述原始值进行与运算,或者,读取所述桥控制寄存器的当前值,通过对所述当前值进行与运算,将所述二级总线复位位配置为0。
进一步地,所述方法还包括:
在对所述PCIE设备进行热复位,并经过第二预设时间之后,获取所述PCIE设备的当前链路状态值;
将所述当前链路状态值与所述链路能力值进行比较;
当所述当前链路状态值未达到所述链路能力值时,再次对所述PCIE设备进行热复位。
为了实现上述目的,本发明实施例还提供了一种PCIE设备的热复位装置,用于实现上述任一项所述的PCIE设备的热复位方法,所述装置包括:
启动类型确定模块,用于获取PCIE设备的系统启动类型,所述启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动;
链路能力及链路状态获取模块,用于根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,以及,获取所述PCIE设备的链路状态值;
链路能力及链路状态比较模块,用于将所述链路状态值与所述链路能力值进行比较;
总线复位模块,用于当所述链路状态值未达到所述链路能力值时,通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述任一项所述的PCIE设备的热复位方法。
本发明实施例还提供了一种PCIE设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现上述任一项所述的PCIE设备的热复位方法。
与现有技术相比,本发明实施例提供了一种PCIE设备的热复位方法、装置、计算机可读存储介质及PCIE设备,先获取PCIE设备的系统启动类型,所述启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动,以根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,以及,获取所述PCIE设备的链路状态值,再将所述链路状态值与所述链路能力值进行比较,当所述链路状态值未达到所述链路能力值时,通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位,从而能够有效解决PCIE设备链路不稳定造成的掉速度、掉带宽等问题,并且利用软件控制实现热复位,无需硬件干涉,也无需对整个系统进行重启,效率更高,同时对于终端类设备产品在启动、睡眠恢复和休眠恢复时也有很好的效果。
附图说明
图1是本发明提供的一种PCIE设备的热复位方法的一个优选实施例的流程图;
图2是本发明提供的一种PCIE设备的热复位装置的一个优选实施例的结构框图;
图3是本发明提供的一种PCIE设备的一个优选实施例的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种PCIE设备的热复位方法,参见图1所示,是本发明提供的一种PCIE设备的热复位方法的一个优选实施例的流程图,所述方法包括步骤S11至步骤S14:
步骤S11、获取PCIE设备的系统启动类型,所述启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动;
步骤S12、根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,以及,获取所述PCIE设备的链路状态值;
步骤S13、将所述链路状态值与所述链路能力值进行比较;
步骤S14、当所述链路状态值未达到所述链路能力值时,通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位。
具体的,在PCIE设备的系统启动时,先区分系统的启动类型,即判断系统是正常启动、睡眠唤醒启动还是休眠唤醒启动,以根据系统的启动类型确定PCIE设备的链路能力值LnkCap的获取方式(不同的启动类型对应不同的LnkCap获取方式),并根据确定的获取方式对应获取PCIE设备的链路能力值LnkCap,以及,还实时获取PCIE设备的链路状态值LnkSta,再将获得的PCIE设备的链路状态值LnkSta与链路能力值LnkCap进行比较,以判断链路状态值LnkSta是否达到了链路能力值LnkCap,当判定PCIE设备的链路状态值LnkSta未达到链路能力值LnkCap时,认为PCIE设备发生了掉速度或掉带宽问题,此时需要对PCIE设备进行热复位操作,则通过配置PCIE设备的桥控制寄存器(Bridge Control Register)的二级总线复位位,实现对PCIE设备进行热复位;相应的,当判定PCIE设备的链路状态值LnkSta达到了链路能力值LnkCap时,无需对PCIE设备进行热复位操作,正常进入OS(Operating System,操作系统)。
需要说明的是,系统的启动类型包括正常启动、睡眠唤醒启动和休眠唤醒启动,其中,正常启动时BIOS(Basic Input Output System,基本输入输出系统)会经历完整的UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)启动流程,该UEFI启动流程具体包括以下七个阶段:SEC(Security,安全验证)→PEI(Pre EFI InitializationEnvironment,EFI前期初始化)→DXE(Driver Execution Environment,驱动执行环境)→BDS(Boot Device Selection,启动设备选择)→TSL(Transient System Load,操作系统加载前期)→RT(Run Time,运行时服务)→进入OS;睡眠是电源状态之一,在此状态下,所有工作状态数据挂起到内存,睡眠唤醒启动时BIOS只会经历SEC阶段和PEI阶段然后直接进入OS;休眠也是电源状态之一,在此状态下,所有工作状态数据保存到硬盘,休眠唤醒启动时BIOS同样会运行完整的UEFI启动流程。
PCIE设备的系统启动后,可以通过读取板级电源管理芯片的睡眠标志位来判断是不是睡眠唤醒,如果是睡眠唤醒,则系统在运行SEC阶段和PEI阶段后直接进入OS;如果不是睡眠唤醒,则直接走完整的UEFI启动流程。这里需要注意的是,由于休眠唤醒只在进系统内核之后做区分,BIOS是不区分正常启动和休眠唤醒的,所以休眠唤醒和正常启动一样会经历完整的UEFI启动流程。
本发明实施例所提供的一种PCIE设备的热复位方法,先获取PCIE设备的系统启动类型,以根据启动类型确定PCIE设备的链路能力值的获取方式,并根据确定的获取方式获取PCIE设备的链路能力值,以及,获取PCIE设备的链路状态值,再将获得的链路状态值与链路能力值进行比较,当链路状态值未达到链路能力值时,通过配置PCIE设备的桥控制寄存器的二级总线复位位,对PCIE设备进行热复位,从而能够有效解决PCIE设备链路不稳定造成的掉速度、掉带宽等问题,并且利用软件控制实现热复位,无需硬件干涉,也无需对整个系统进行重启,效率更高,同时对于终端类设备产品在启动、睡眠恢复和休眠恢复时也有很好的效果。
可以理解的,本发明实施例主要应用于终端产品如笔记本、台式机、一体机等场景,在终端产品开机启动、重启、睡眠恢复、休眠恢复时处理PCIE设备发生掉速度、掉带宽导致性能下降的问题。
在另一个优选实施例中,所述根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,具体包括:
当所述启动类型为正常启动时,在UEFI启动流程的DXE阶段通过读取所述PCIE设备的配置空间的链路能力寄存器的值获得所述链路能力值;
当所述启动类型为睡眠唤醒启动时,通过读取所述PCIE设备的存储器中预先存储的值获得所述链路能力值;
当所述启动类型为休眠唤醒启动时,在所述DXE阶段通过读取所述链路能力寄存器的值,或者,通过读取所述存储器中预先存储的值,获得所述链路能力值。
需要说明的是,链路能力值LnkCap的获取方式主要包括两种,第一种是通过设备信息扫描读取PCIE设备的配置空间的链路能力寄存器(Link Capabilities Register)的值,相应获得链路能力值LnkCap,第二种是通过读取PCIE设备的存储器中预先存储的LnkCap值,相应获得链路能力值LnkCap。
具体的,结合上述实施例,当判定系统的启动类型是正常启动时,由于正常启动时系统会运行完整的UEFI启动流程,因此,可以采用上述第一种获取方式,即,可以在UEFI启动流程的DXE阶段,通过读取链路能力寄存器的值,相应获得PCIE设备的链路能力值LnkCap;当判定系统的启动类型是睡眠唤醒启动时,由于睡眠唤醒启动时系统只会经历SEC阶段和PEI阶段然后直接进入OS,无法在DXE阶段获取链路能力值LnkCap,因此,可以采用上述第二种获取方式,即,可以通过读取存储器中预先存储的LnkCap值,相应获得PCIE设备的链路能力值LnkCap;当判定系统的启动类型是休眠唤醒启动时,由于休眠唤醒启动时系统同样会运行完整的UEFI启动流程,因此,可以采用上述第一种获取方式,即,可以在UEFI启动流程的DXE阶段,通过读取链路能力寄存器的值,相应获得PCIE设备的链路能力值LnkCap,或者,休眠唤醒启动时也可以采用上述第二种获取方式,即,也可以通过读取存储器中预先存储的LnkCap值,相应获得PCIE设备的链路能力值LnkCap。
需要说明的是,由于在正常启动之前可以对PCIE设备进行修改更换等操作,导致LnkCap会随着设备的变化而变化,因此,正常启动时不能通过上述第二种获取方式来获取LnkCap,只能采用上述第一种获取方式获取LnkCap。
示例性的,在具体实施上述第一种获取方式时,可以通过设备枚举获取相关设备的LnkCap,设备枚举具体是指CPU扫描PCIE总线来识别总线下的PCIE设备,并且为每个PCIE设备分配总线号,在设备枚举后,通过读取PCIE配置空间的链路能力寄存器(以下简称“LnkCap寄存器”)的值来获得PCIE设备的链路能力值LnkCap,其中,LnkCap寄存器为PCIE3.0规范中的PCI Express Capability Structure能力寄存器结构体的LinkCapabilities Register(Offset 0Ch),LnkCap寄存器主要指示设备链接的最大速度、最大带宽、电源管理级别等链路能力,LnkCap寄存器的bit[0:3]代表设备的最大链接速度,bit[4:9]代表设备最大链接带宽。
作为上述方案的改进,所述方法还包括:
在所述DXE阶段通过读取所述链路能力寄存器的值获得所述链路能力值之后,将所述链路能力值保存在所述存储器中。
具体的,结合上述实施例,在UEFI启动流程的DXE阶段,通过设备信息扫描读取设备配置空间的LnkCap寄存器的值,相应获得PCIE设备的链路能力值LnkCap之后,可以将获得的链路能力值LnkCap保存在存储器中,以便后续在睡眠唤醒启动、休眠唤醒启动状态下,从存储器中读取LnkCap值。
需要说明的是,存储器可以是eeprom(Electrically Erasable ProgrammableRead-Only Memory,电可擦编程只读存储器)、闪存等存储设备,本发明实施例不作具体限定。
在又一个优选实施例中,所述获取所述PCIE设备的链路状态值,具体包括:
通过读取PCIE控制器监控的链路状态寄存器的值获得所述链路状态值。
具体的,结合上述实施例,在获取PCIE设备的链路状态值LnkSta时,可以通过读取PCIE控制器监控的链路状态寄存器(Link Status Register)的值,相应获得链路状态值LnkSta。
需要说明的是,LnkSta可以从PCIE控制器端获取,PCIE控制器与PCIE设备握手完成之后,会实时监控链路状态寄存器(例如PEU链路状态寄存器)的状态,则相应可以通过PCIE控制器获得当前的LnkSta,并且链路状态寄存器的具体值根据PCIE控制器IP的不同而不同,因为PCIE控制器可以知道当前的握手速率(非固定不变),而无法知道设备最大可支持的握手速率。
此外,PCIE设备的配置空间中的链路状态寄存器(以下简称“LnkSta寄存器”)的值,是在握手完成之后,由PCIE设备上报PCIE控制器,使得CPU获知的,其中,LnkSta寄存器为PCIE 3.0规范中的PCI Express Capability Structure能力寄存器结构体的LinkStatus Register(Offset 12h),LnkSta寄存器主要指示当前链接速度与带宽、时钟配置、状态机状态等,LnkSta寄存器的bit[0:3]代表设备的当前链接速度,bit[4:9]代表设备当前链接带宽。
在又一个优选实施例中,所述通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位,具体包括:
将所述二级总线复位位配置为1,经过第一预设时间之后,将所述二级总线复位位配置为0,实现对所述PCIE设备进行热复位。
具体的,结合上述实施例,在对PCIE设备进行热复位时,可以通过配置PCIE设备的桥控制寄存器(Bridge Control Register)的二级总线复位位,先将二级总线复位位的值配置为1,延时第一预设时间(可根据PCI local bus specification规定设置第一预设时间)之后,再将二级总线复位位的值配置为0,从而实现对PCIE设备进行热复位。
需要说明的是,本发明实施例涉及的总线复位寄存器为PCIE 3.0规范中的Type1Configuration Space Header(PCIE配置空间头)的Bridge Control Register(偏移3Eh)寄存器,Bridge Control Register寄存器主要用来管理PCI桥的二级总线(SecondaryBus),其包含奇偶校验错误响应位(Parity Error Response Enable)、主中止模式位(Master Abort Mode)、二级总线复位位(Secondary Bus Reset)等功能位,本发明实施例中使用的就是Secondary Bus Reset,Secondary Bus Reset位于Bridge ControlRegister寄存器的bit6,通过向该位写1,延时一段时间后再写0来完成复位操作,写1后会发出热复位消息给设备,设备端收到热复位消息后就进行相应的热复位操作,写0后则释放热复位。
示例性的,如果软件将Bridge Control Register寄存器的Secondary Bus Reset位置为1,则桥片将会对二级总线上的PCI/PCIE设备通过TS1序列(training sequence 1,PCIE链路训练使用的字符序列1)和TS2序列(training sequence 2,PCIE链路训练使用的字符序列2)进行Hot Reset(热复位),热复位是通过在TS1序列和TS2序列中包含的一个HotReset位,当下游设备收到一个TS1序列和TS2序列,而且Hot Reset位为1时,下游设备将使用Hot Reset方式进行复位操作。
作为上述方案的改进,所述将所述二级总线复位位配置为1,经过第一预设时间之后,将所述二级总线复位位配置为0,具体包括:
读取所述桥控制寄存器的原始值;
通过对所述原始值进行或运算,将所述二级总线复位位配置为1;
经过第一预设时间之后,通过对所述原始值进行与运算,或者,读取所述桥控制寄存器的当前值,通过对所述当前值进行与运算,将所述二级总线复位位配置为0。
具体的,结合上述实施例,在将二级总线复位位的值配置为1时,可以读取桥控制寄存器的原始值,通过对桥控制寄存器的原始值进行或运算,将二级总线复位位配置为1;在将二级总线复位位的值配置为0时,可以通过对桥控制寄存器的原始值进行与运算,将二级总线复位位的值配置为0,或者,也可以重新读取桥控制寄存器的当前值,通过对桥控制寄存器的当前值进行与运算,将二级总线复位位的值配置为0。
在又一个优选实施例中,所述方法还包括:
在对所述PCIE设备进行热复位,并经过第二预设时间之后,获取所述PCIE设备的当前链路状态值;
将所述当前链路状态值与所述链路能力值进行比较;
当所述当前链路状态值未达到所述链路能力值时,再次对所述PCIE设备进行热复位。
具体的,结合上述实施例,在完成对PCIE设备进行热复位之后,延时第二预设时间,可以重新获取PCIE设备的当前链路状态值,并将实时获得的当前链路状态值与已经获得的链路能力值进行比较,以判断链路状态是否恢复正常,当判定PCIE设备的当前链路状态值未达到链路能力值LnkCap时,认为没有恢复正常,此时可以再次对PCIE设备进行热复位操作;其中,当前链路状态值的获取方式以及对PCIE设备进行的热复位操作均与上述实施例相同,这里不再赘述。
需要说明的是,理论上只需执行一次热复位操作即可恢复正常,如果出现未恢复正常的情况可考虑重新执行热复位操作,但是,热复位次数应该有限,且达到上限值后可以做重启操作或直接进系统,在实际应用中,更倾向于直接进系统,因为如果热复位多次都无法恢复正常的话,可能是设备本身就存在问题,重启也不一定能恢复正常。
下面结合上述实施例,以NVMe(non-volatile memory express,非易失性高速传输总线)设备出现掉速度、掉带宽问题为例对本发明实施例的工作流程进行说明:
1、系统正常启动过程中会在设备枚举时扫描所有PCIE设备并为其分配memory地址空间、I/O地址空间和配置空间,可以通过读取配置空间来获取其LnkCap(链路能力值),通过读取PCIE控制器监控的链路状态寄存器的值来获取其LnkSta(链路状态值),同时,将LnkCap值存入eeprom等存储设备内,用于睡眠、休眠恢复时做对比使用;
2、在本次启动中,将LnkCap与LnkSta进行对比,看当前的LnkSta是否达到LnkCap,若是,则正常进入OS;若否,则开始Secondary Bus Reset热复位;
3、Secondary Bus Reset热复位流程如下:
3.1确定相应PCIE设备端口的Bridge Control Register寄存器
首先需确认设备的总线号、设备号和功能号,这里NVMe设备的总线号和功能号均为0,设备号为01。根据PCIE的配置空间规则,0x000_40000000~0x000_4FFFFFFF共256MB为设备配置空间,而当地址位于配置空间时,将按照如下表格内容进行解析,因此,对于设备号为01的设备,对应port的Bridge Control Register寄存器为0x40000000+0x8000(设备号bit[19:15]为01,总线号和功能号均为0)+0x3E=0x4000803E,而寄存器操作通常是32bit对齐的,所以实际操作该寄存器的寄存器值应为0x4000803C;
地址范围 | 含义 |
27:20 | 总线号,0~255 |
19:15 | 设备号,0~31 |
14:12 | 功能号,0~7 |
11:0 | 4KB配置空间内偏移 |
3.2将Bridge Control Register寄存器bit6写1再写0
操作前先将该寄存器的原始值读出来后使用或运算将bit6写1,之后延时一段时间,再通过与运算将bit6写0(与运算之前也可以再读下该寄存器的值再进行与运算);
4、复位完成后延时一段时间重新获取LnkSta,看link状态是否恢复正常(即LnkSta是否等于LnkCap),若未恢复可再次进行第3步骤操作;
5、对于睡眠、休眠而言,在睡眠、休眠恢复时可以从eeprom等读取LnkCap,并与LnkSta做对比,看LnkSta是否达到LnkCap,如未达到,则进行第3步骤操作;
6、特别的,对于休眠而言,由于休眠唤醒过程会执行整个UEFI启动流程,因此,对于休眠唤醒可以选择通过设备信息扫描或从存储器读取两种获取方式来获取LnkCap,然后再确定要不要执行第3步骤操作。
为了验证本发明实施例提供的技术方案是否有效,本技术方案形成后先后经过了前期验证、小批量测试、导入正式版BIOS、大批量验证等一系列测试阶段,具体如下:
在前期验证时选择了一台比较容易出现掉带宽的设备做了重启测试,测试了500次重启,分别在第213轮和第305轮出现掉带宽的现象,并分别通过实施本技术方案进行一次热复位,成功恢复设备目标带宽;
之后开始进行小批量测试:使用3台台式机样机,重启压测各2000轮通过,睡眠压测各2000轮通过;使用7台笔记本样机,重启压测各2000轮通过,睡眠压测各2000轮通过;使用1台一体机样机,重启压测5000轮通过,睡眠压测各2000轮通过;
小批量测试验证通过后,将本技术方案导入正式版BIOS,并导入工厂进行大批量验证,最终验证通过。
本发明实施例还提供了一种PCIE设备的热复位装置,用于实现上述任一实施例所述的PCIE设备的热复位方法,参见图2所示,是本发明提供的一种PCIE设备的热复位装置的一个优选实施例的结构框图,所述装置包括:
启动类型确定模块11,用于获取PCIE设备的系统启动类型,所述启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动;
链路能力及链路状态获取模块12,用于根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,以及,获取所述PCIE设备的链路状态值;
链路能力及链路状态比较模块13,用于将所述链路状态值与所述链路能力值进行比较;
总线复位模块14,用于当所述链路状态值未达到所述链路能力值时,通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位。
优选地,所述链路能力及链路状态获取模块12具体包括链路能力获取单元,用于:
当所述启动类型为正常启动时,在UEFI启动流程的DXE阶段通过读取所述PCIE设备的配置空间的链路能力寄存器的值获得所述链路能力值;
当所述启动类型为睡眠唤醒启动时,通过读取所述PCIE设备的存储器中预先存储的值获得所述链路能力值;
当所述启动类型为休眠唤醒启动时,在所述DXE阶段通过读取所述链路能力寄存器的值,或者,通过读取所述存储器中预先存储的值,获得所述链路能力值。
优选地,所述装置还包括链路能力存储模块,用于:
在所述DXE阶段通过读取所述链路能力寄存器的值获得所述链路能力值之后,将所述链路能力值保存在所述存储器中。
优选地,所述链路能力及链路状态获取模块12还包括链路状态获取单元,用于:
通过读取PCIE控制器监控的链路状态寄存器的值获得所述链路状态值。
优选地,所述总线复位模块14具体包括二级总线复位位配置单元,用于:
将所述二级总线复位位配置为1,经过第一预设时间之后,将所述二级总线复位位配置为0,实现对所述PCIE设备进行热复位。
优选地,所述二级总线复位位配置单元具体用于:
读取所述桥控制寄存器的原始值;
通过对所述原始值进行或运算,将所述二级总线复位位配置为1;
经过第一预设时间之后,通过对所述原始值进行与运算,或者,读取所述桥控制寄存器的当前值,通过对所述当前值进行与运算,将所述二级总线复位位配置为0。
优选地,所述装置还包括总线复位验证模块,用于:
在对所述PCIE设备进行热复位,并经过第二预设时间之后,获取所述PCIE设备的当前链路状态值;
将所述当前链路状态值与所述链路能力值进行比较;
当所述当前链路状态值未达到所述链路能力值时,再次对所述PCIE设备进行热复位。
需要说明的是,本发明实施例所提供的一种PCIE设备的热复位装置,能够实现上述任一实施例所述的PCIE设备的热复位方法的所有流程,装置中的各个模块、单元的作用以及实现的技术效果分别与上述实施例所述的PCIE设备的热复位方法的作用以及实现的技术效果对应相同,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述任一实施例所述的PCIE设备的热复位方法。
本发明实施例还提供了一种PCIE设备,参见图3所示,是本发明提供的一种PCIE设备的一个优选实施例的结构框图,所述PCIE设备包括处理器10、存储器20以及存储在所述存储器20中且被配置为由所述处理器10执行的计算机程序,所述处理器10在执行所述计算机程序时实现上述任一实施例所述的PCIE设备的热复位方法。
优选地,所述计算机程序可以被分割成一个或多个模块/单元(如计算机程序1、计算机程序2、······),所述一个或者多个模块/单元被存储在所述存储器20中,并由所述处理器10执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述PCIE设备中的执行过程。
所述处理器10可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器,或者所述处理器10也可以是任何常规的处理器,所述处理器10是所述PCIE设备的控制中心,利用各种接口和线路连接所述PCIE设备的各个部分。
所述存储器20主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序等,数据存储区可存储相关数据等。此外,所述存储器20可以是高速随机存取存储器,还可以是非易失性存储器,例如插接式硬盘,智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡和闪存卡(Flash Card)等,或所述存储器20也可以是其他易失性固态存储器件。
需要说明的是,上述PCIE设备可包括,但不仅限于,处理器、存储器,本领域技术人员可以理解,图3结构框图仅仅是上述PCIE设备的示例,并不构成对PCIE设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
综上,本发明实施例所提供的一种PCIE设备的热复位方法、装置、计算机可读存储介质及PCIE设备,先获取PCIE设备的系统启动类型,以根据启动类型确定PCIE设备的链路能力值的获取方式,并根据确定的获取方式获取PCIE设备的链路能力值,以及,获取PCIE设备的链路状态值,再将获得的链路状态值与链路能力值进行比较,当链路状态值未达到链路能力值时,通过配置PCIE设备的桥控制寄存器的二级总线复位位,对PCIE设备进行热复位,从而能够有效解决PCIE设备链路不稳定造成的掉速度、掉带宽等问题,并且利用软件控制实现热复位,无需硬件干涉,也无需对整个系统进行重启,效率更高,同时对于终端类设备产品在启动、睡眠恢复和休眠恢复时也有很好的效果。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种PCIE设备的热复位方法,其特征在于,包括:
获取PCIE设备的系统启动类型,所述启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动;
根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,以及,获取所述PCIE设备的链路状态值;
将所述链路状态值与所述链路能力值进行比较;
当所述链路状态值未达到所述链路能力值时,通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位。
2.如权利要求1所述的PCIE设备的热复位方法,其特征在于,所述根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,具体包括:
当所述启动类型为正常启动时,在UEFI启动流程的DXE阶段通过读取所述PCIE设备的配置空间的链路能力寄存器的值获得所述链路能力值;
当所述启动类型为睡眠唤醒启动时,通过读取所述PCIE设备的存储器中预先存储的值获得所述链路能力值;
当所述启动类型为休眠唤醒启动时,在所述DXE阶段通过读取所述链路能力寄存器的值,或者,通过读取所述存储器中预先存储的值,获得所述链路能力值。
3.如权利要求2所述的PCIE设备的热复位方法,其特征在于,所述方法还包括:
在所述DXE阶段通过读取所述链路能力寄存器的值获得所述链路能力值之后,将所述链路能力值保存在所述存储器中。
4.如权利要求1所述的PCIE设备的热复位方法,其特征在于,所述获取所述PCIE设备的链路状态值,具体包括:
通过读取PCIE控制器监控的链路状态寄存器的值获得所述链路状态值。
5.如权利要求1所述的PCIE设备的热复位方法,其特征在于,所述通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位,具体包括:
将所述二级总线复位位配置为1,经过第一预设时间之后,将所述二级总线复位位配置为0,实现对所述PCIE设备进行热复位。
6.如权利要求5所述的PCIE设备的热复位方法,其特征在于,所述将所述二级总线复位位配置为1,经过第一预设时间之后,将所述二级总线复位位配置为0,具体包括:
读取所述桥控制寄存器的原始值;
通过对所述原始值进行或运算,将所述二级总线复位位配置为1;
经过第一预设时间之后,通过对所述原始值进行与运算,或者,读取所述桥控制寄存器的当前值,通过对所述当前值进行与运算,将所述二级总线复位位配置为0。
7.如权利要求1~6中任一项所述的PCIE设备的热复位方法,其特征在于,所述方法还包括:
在对所述PCIE设备进行热复位,并经过第二预设时间之后,获取所述PCIE设备的当前链路状态值;
将所述当前链路状态值与所述链路能力值进行比较;
当所述当前链路状态值未达到所述链路能力值时,再次对所述PCIE设备进行热复位。
8.一种PCIE设备的热复位装置,其特征在于,用于实现如权利要求1~7中任一项所述的PCIE设备的热复位方法,所述装置包括:
启动类型确定模块,用于获取PCIE设备的系统启动类型,所述启动类型包括正常启动、睡眠唤醒启动或休眠唤醒启动;
链路能力及链路状态获取模块,用于根据所述启动类型确定所述PCIE设备的链路能力值的获取方式,并根据所述获取方式获取所述链路能力值,以及,获取所述PCIE设备的链路状态值;
链路能力及链路状态比较模块,用于将所述链路状态值与所述链路能力值进行比较;
总线复位模块,用于当所述链路状态值未达到所述链路能力值时,通过配置所述PCIE设备的桥控制寄存器的二级总线复位位,对所述PCIE设备进行热复位。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1~7中任一项所述的PCIE设备的热复位方法。
10.一种PCIE设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如权利要求1~7中任一项所述的PCIE设备的热复位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210695017.8A CN115061558B (zh) | 2022-06-16 | 2022-06-16 | 一种pcie设备的热复位方法、装置、存储介质及pcie设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210695017.8A CN115061558B (zh) | 2022-06-16 | 2022-06-16 | 一种pcie设备的热复位方法、装置、存储介质及pcie设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115061558A true CN115061558A (zh) | 2022-09-16 |
CN115061558B CN115061558B (zh) | 2023-08-15 |
Family
ID=83201889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210695017.8A Active CN115061558B (zh) | 2022-06-16 | 2022-06-16 | 一种pcie设备的热复位方法、装置、存储介质及pcie设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115061558B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104412224A (zh) * | 2012-05-30 | 2015-03-11 | 先进微装置公司 | 在从低电力状态恢复时处理系统从易失性存储器的重新初始化 |
US20170116085A1 (en) * | 2015-10-26 | 2017-04-27 | International Business Machines Corporation | Multiple reset modes for a pci host bridge |
US20190340092A1 (en) * | 2018-05-01 | 2019-11-07 | Dell Products L.P. | Link downgrade detection system |
JP2021018731A (ja) * | 2019-07-23 | 2021-02-15 | 株式会社Pfu | コンピュータ装置及び再起動方法 |
CN112948310A (zh) * | 2021-03-25 | 2021-06-11 | 山东英信计算机技术有限公司 | 一种资源分配方法、装置、设备及计算机可读存储介质 |
CN113359968A (zh) * | 2021-05-14 | 2021-09-07 | 山东英信计算机技术有限公司 | 一种基于arm平台复位pcie设备的方法、系统、设备及介质 |
CN113590511A (zh) * | 2021-10-08 | 2021-11-02 | 苏州浪潮智能科技有限公司 | 一种带宽降速修复方法、装置及电子设备 |
CN113688087A (zh) * | 2021-10-25 | 2021-11-23 | 苏州浪潮智能科技有限公司 | 一种pcie设备枚举方法、系统、存储介质及设备 |
CN113835944A (zh) * | 2021-09-28 | 2021-12-24 | 深圳忆联信息系统有限公司 | 快速判断固态硬盘链路速率的测试方法、装置及计算机设备 |
US11226919B1 (en) * | 2020-06-23 | 2022-01-18 | Amazon Technologies, Inc. | Communication link recovery |
-
2022
- 2022-06-16 CN CN202210695017.8A patent/CN115061558B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104412224A (zh) * | 2012-05-30 | 2015-03-11 | 先进微装置公司 | 在从低电力状态恢复时处理系统从易失性存储器的重新初始化 |
US20170116085A1 (en) * | 2015-10-26 | 2017-04-27 | International Business Machines Corporation | Multiple reset modes for a pci host bridge |
US20190340092A1 (en) * | 2018-05-01 | 2019-11-07 | Dell Products L.P. | Link downgrade detection system |
JP2021018731A (ja) * | 2019-07-23 | 2021-02-15 | 株式会社Pfu | コンピュータ装置及び再起動方法 |
US11226919B1 (en) * | 2020-06-23 | 2022-01-18 | Amazon Technologies, Inc. | Communication link recovery |
CN112948310A (zh) * | 2021-03-25 | 2021-06-11 | 山东英信计算机技术有限公司 | 一种资源分配方法、装置、设备及计算机可读存储介质 |
CN113359968A (zh) * | 2021-05-14 | 2021-09-07 | 山东英信计算机技术有限公司 | 一种基于arm平台复位pcie设备的方法、系统、设备及介质 |
CN113835944A (zh) * | 2021-09-28 | 2021-12-24 | 深圳忆联信息系统有限公司 | 快速判断固态硬盘链路速率的测试方法、装置及计算机设备 |
CN113590511A (zh) * | 2021-10-08 | 2021-11-02 | 苏州浪潮智能科技有限公司 | 一种带宽降速修复方法、装置及电子设备 |
CN113688087A (zh) * | 2021-10-25 | 2021-11-23 | 苏州浪潮智能科技有限公司 | 一种pcie设备枚举方法、系统、存储介质及设备 |
Non-Patent Citations (1)
Title |
---|
刘勇等: "PCIExpress物理层链路训练一致性测试状态设计", vol. 16, no. 09 * |
Also Published As
Publication number | Publication date |
---|---|
CN115061558B (zh) | 2023-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2402804C2 (ru) | Способ загрузки хостового устройства из устройства mmc/sd, хостовое устройство, загружаемое из устройства mmc/sd, и устройство mmc/sd, из которого может быть загружено хостовое устройство | |
US7111202B2 (en) | Autonomous boot failure detection and recovery | |
US7430662B2 (en) | Techniques for initializing a device on an expansion card | |
US20170090896A1 (en) | Automatic system software installation on boot | |
TWI537748B (zh) | 用於網路基本輸入輸出系統管理之設備、方法與非暫態電腦可讀取媒體 | |
US10656676B2 (en) | Docking device, electrical device, and MAC address cloning method | |
US20140082346A1 (en) | Method and System for Managing Basic Input/Output System (BIOS) Configuration Data of BIOS | |
CN103823769A (zh) | 计算机系统及数据回复方法 | |
CN109408122A (zh) | 一种设备启动方法、电子设备和计算机存储介质 | |
CN114116378A (zh) | 获取PCIe设备温度的方法、系统、终端及存储介质 | |
CN110119623A (zh) | 一种利用tpcm实现固件主动度量的可信主板实现方法 | |
CN110297726B (zh) | 具有串行存在检测数据的计算机系统及内存模块控制方法 | |
CN110688235B (zh) | Uefi固件与os间共享无线连接信息的系统及方法 | |
CN112912743B (zh) | 算力的控制方法、装置、设备及存储介质 | |
WO2023138101A1 (zh) | 网络唤醒开机方法及计算机设备 | |
CN108958837B (zh) | 一种动态配置me固件的方法、系统及介质 | |
CN115061558A (zh) | 一种pcie设备的热复位方法、装置、存储介质及pcie设备 | |
CN110119625A (zh) | 一种可信计算方法 | |
CN112667544A (zh) | 一种控制主板插槽使能的方法、装置、系统及介质 | |
CN110119624A (zh) | 一种安全度量方法 | |
CN115586981B (zh) | 一种防止sio信号丢失的方法、系统、计算机和存储介质 | |
CN116450224A (zh) | 基于清除cmos的数据的恢复方法及装置、系统 | |
WO2024113884A1 (zh) | 外接设备的资源分配方法、装置、服务器及存储介质 | |
KR20050035659A (ko) | 네트워크 어댑터 메모리 데이터를 복구하는 컴퓨터 시스템및 방법 | |
CN112148201A (zh) | 数据写入方法、装置及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |