CN113190487A - PCIe设备热拔方法及装置 - Google Patents
PCIe设备热拔方法及装置 Download PDFInfo
- Publication number
- CN113190487A CN113190487A CN202110414854.4A CN202110414854A CN113190487A CN 113190487 A CN113190487 A CN 113190487A CN 202110414854 A CN202110414854 A CN 202110414854A CN 113190487 A CN113190487 A CN 113190487A
- Authority
- CN
- China
- Prior art keywords
- pcie
- host
- hot
- current
- equipment
- 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
- 238000000034 method Methods 0.000 title claims abstract description 134
- 230000008569 process Effects 0.000 claims abstract description 89
- 230000004044 response Effects 0.000 claims abstract description 34
- 230000015556 catabolic process Effects 0.000 claims abstract description 16
- 238000006731 degradation reaction Methods 0.000 claims abstract description 16
- 230000002159 abnormal effect Effects 0.000 claims description 121
- 230000005856 abnormality Effects 0.000 claims description 56
- 238000001514 detection method Methods 0.000 claims description 26
- 230000003993 interaction Effects 0.000 claims description 20
- 238000011084 recovery Methods 0.000 claims description 18
- 230000001960 triggered effect Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 230000000873 masking effect Effects 0.000 description 6
- 230000000593 degrading effect Effects 0.000 description 5
- 238000009432 framing Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002547 anomalous effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4081—Live connection to bus, e.g. hot-plugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/221—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种PCIe设备热拔方法及装置,主机检测自身下挂的当前PCIe设备是否发生热拔,当确认有当前PCIe设备发生热拔时,直接触发设备驱动卸载流程,能够快速响应当前PCIe设备的热拔事件,实现主机和当前PCIe设备均支持暴力热拔。而且,主机内的应用程序检测到该PCIe业务对应的无效响应消息时,直接将处理该PCIe业务的业务进程退出,从而防止PCIe设备热拔过程中造成系统挂死的现象发生。此外,在PCIe设备主动检测自身异常的场景中,PCIe设备直接将自身与主机之间的数据层链路断开,这样,主机能够检测到断链事件,并触发Link中断,然后,执行设备驱动卸载流程。与此同时,主机检测到致命错误中断后进行屏蔽、降级处理,避免将该致命错误中断导致系统挂死的现象发生。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种PCIe设备热拔方法及装置。
背景技术
PCIe(peripheral component interconnect express)是一种高速串行计算机扩展总线标准。PCIe设备的热插拔(hot-plugging),就是允许用户在不关闭系统,不切断电源的情况下取出和更换主机下挂的PCIe设备,并不影响主机系统的运行,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等。
PCIe设备的热拔由实现热拔的固件控制器(硬件)和热拔驱动(软件)实现,热拔的硬件部分负责设备物理拔出的检测,并向热拔驱动上报热拔事件。热拔驱动负责处理上报的热拔事件,将对应的硬件从系统中移除。暴力热拔是指未从主机的PCIe设备驱动中触发热拔流程,而是直接拔出PCIe设备。暴力热拔过程中会出现异步事件,导致主机侧的处理器和操作系统异常,这也是导致主机不支持PCIe设备的暴力热拔的主要因素。
发明内容
有鉴于此,本发明的目的在于提供一种PCIe设备热拔方法及装置,消除主机不支持PCIe设备的暴力热拔因素,实现端到端解决PCIe设备热拔。
第一方面,本申请提供了一种PCIe设备热拔方法,应用于支持高速串行计算机扩展总线标准PCIe的主机中,包括:检测所述主机下挂的当前PCIe设备是否发生热拔;当确定所述当前PCIe设备发生热拔时,执行设备驱动卸载流程,所述设备驱动卸载流程包括:快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前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业务报文计时;当所述待发送PCIe业务报文的计时时长达到时间阈值时,确定所述主机的内部总线发生异常,触发Link中断,确定所述当前PCIe设备发生热拔。
本实现方式中,主机通过报文在报文队列中的时间是否超时确定内部总线是否异常,该检测方式简单,且正确率高。
在第一方面的一种可能的实现方式中,所述检测所述主机下挂的当前PCIe设备是否发生热拔,包括:检测是否存在插槽Presence中断,所述插槽Presence中断在检测到所述PCIe设备移除时产生;当存在所述插槽Presence中断时,确定所述当前PCIe设备发生热拔。
本实现方式中,当主机检测到插槽Presence中断,确定PCIe设备发生了热拔,当PCIe设备移除后,主机会检测到该插槽Presence中断。
在第一方面的另一种可能的实现方式中,所述方法还包括:当检测到致命错误中断时,屏蔽所述致命错误中断或对所述致命错误中断进行降级处理;丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
本实现方式中,主机检测到致命错误中断后,屏蔽该致命错误中断,或者,对该致命错误中断降级处理。同时,丢弃当前PCIe设备相关的异常报文,并向与当前PCIe设备相关业务对应的应用程序返回报文异常的响应消息,避免报文丢弃后系统挂死的现象发生。
第二方面,本申请还提供了另一种PCIe设备热拔方法,应用于PCIe设备中,包括:检测所述PCIe设备是否存在异常;当所述PCIe设备存在异常时,直接断开所述PCIe设备与主机之间的数据层链路,以使所述主机检测到所述数据层链路断开后触发Link中断,并使所述主机根据所述Link中断执行设备驱动卸载流程;其中,所述设备驱动卸载流程包括快速停止所述主机分配给所述PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互。
第二方面提供的PCIe设备热拔方法,由PCIe设备主动检测自身是否存在异常,当检测到自身存在异常后,直接断开自身与主机之间的数据层链路。这样,主机侧能够检测到该LinkDown事件,触发Link中断,进而根据该Link中断触发设备驱动Remove流程;与此同时,若主机检测到RC异常,则屏蔽由该RC异常产生的致命错误中断,并对致命错误中断进行降级;同时,触发CPU正确处理异常业务报文,从而实现完全避免PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死,提高了PCIe设备热拔过程中的数据及系统安全性。
在第二方面的一种可能的实现方式中,检测所述PCIe设备是否存在异常,包括:当检测到链路恢复标识信息时,确定所述PCIe设备存在异常,所述链路恢复标识信息包括报文符号错误信息和帧错误信息;或者,当检测到所述PCIe设备的内部逻辑异常时,确定所述PCIe设备存在异常;或者,当所述PCIe设备只有一个PCIe端口时,若检测到掉电中断,则确定所述PCIe设备存在异常;或者,当所述PCIe设备包含至少两个PCIe端口时,若检测到目标PCIe端口没有参考时钟,则确定所述目标PCIe端口异常。
在第二方面的另一种可能的实现方式中,所述方法还包括:当确定所述目标PCIe端口异常时,从所述PCIe设备侧移除所述目标PCIe端口。
第三方面,本申请还提供了一种PCIe设备热拔方法,应用于支持高速串行计算机扩展总线标准PCIe的主机中,包括:当检测到所述主机与当前PCIe设备之间的数据层链路断开时,触发Link中断,所述主机与所述当前PCIe设备之间的数据层链路由所述当前PCIe设备检测到自身异常后主动断开;根据所述Link中断,执行设备驱动卸载流程,所述设备驱动卸载流程包括快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互;当检测到致命错误中断时,屏蔽所述致命错误中断,并对所述致命错误中断降级处理得到非致命错误中断;以及,丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
第三方面提供的PCIe设备热拔方法,应用于主机中,当PCIe设备主动检测自身是否存在异常后,直接断开自身与主机之间的数据层链路。主机检测到LinkDown事件,触发Link中断,进而根据该Link中断触发设备驱动Remove流程;与此同时,若主机检测到RC异常,则屏蔽由该RC异常产生的致命错误中断,并对致命错误中断进行降级;同时,触发CPU正确处理异常业务报文,从而实现完全避免PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死。而且,利用该PCIe设备热拔方法,主机只移除主机侧发生异常的PCIe端口,不影响其它PCIe端口正常工作。
第四方面,本申请提供了一种PCIe设备热拔装置,应用于支持高速串行计算机扩展总线标准PCIe的主机,包括:检测模块,用于检测所述主机下挂的当前PCIe设备是否发生热拔;设备驱动卸载模块,用于当确定所述当前PCIe设备发生热拔时,执行设备驱动卸载流程,所述设备驱动卸载流程包括:快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互;业务退出模块,用于当接收到与所述当前PCIe设备对应业务的无效响应消息时,正确处理异常报文并退出处理所述当前PCIe设备对应业务的业务进程。
在第四方面的一种可能的实现方式中,所述检测模块具体用于:查找所述PCIe设备的设备标识;当查找不到所述PCIe设备的设备标识时,确定所述PCIe设备发生热拔。
在第四方面的另一种可能的实现方式中,具体用于:检测所述主机的内部总线是否异常;当确定所述内部总线异常时,确定所述当前PCIe设备发生热拔。
在第四方面的又一种可能的实现方式中,所述检测模块用于检测所述主机的内部总线是否异常时,具体用于:获取所述当前PCIe设备的待发送PCIe业务报文;将所述待发送PCIe业务报文存储到报文队列中,并开始为所述待发送PCIe业务报文计时;当所述待发送PCIe业务报文的计时时长达到时间阈值时,确定所述主机的内部总线发生异常,触发Link中断,确定所述当前PCIe设备发生热拔。
在第四方面的另一种可能的实现方式中,所述检测模块具体用于:检测是否存在插槽Presence中断,所述插槽Presence中断在检测到所述PCIe设备移除时产生;当存在所述插槽Presence中断时,确定所述PCIe设备发生热拔。
在第四方面的一种可能的实现方式中,所述装置还包括:中断屏蔽模块,用于当检测到致命错误中断时,屏蔽所述致命错误中断或对所述致命错误中断降级处理;报文丢弃模块,用于丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
第五方面,本申请还提供了另一种PCIe设备热拔装置,应用于PCIe设备中,包括:
检测模块,用于检测所述PCIe设备是否存在异常;断链处理模块,用于当所述PCIe设备存在异常时,直接断开所述PCIe设备与主机之间的数据层链路,以使所述主机检测到所述数据层链路断开后触发Link中断,并使所述主机根据所述Link中断执行设备驱动卸载流程;其中,所述设备驱动卸载流程包括快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互。
在第五方面的一种可能的实现方式中,所述检测模块具体用于:当检测到链路恢复标识信息时,确定所述PCIe设备存在异常,所述链路恢复标识信息包括报文符号错误信息和帧错误信息;或者,当检测到所述PCIe设备的内部逻辑异常时,确定所述PCIe设备存在异常;或者,当所述PCIe设备只有一个PCIe端口时,若检测到掉电中断,则确定所述PCIe设备存在异常;或者,当所述PCIe设备包含至少两个PCIe端口时,若检测到目标PCIe端口没有参考时钟,则确定所述目标PCIe端口异常。
在第五方面的另一种可能的实现方式中,所述装置还包括:PCIe端口移除模块,用于当确定所述目标PCIe端口异常时,从所述PCIe设备侧移除所述目标PCIe端口。
第六方面,本申请还提供一种PCIe设备热拔装置,应用于支持高速串行计算机扩展总线标准PCIe的主机中,包括:中断触发模块,用于当检测到所述主机与当前PCIe设备之间的数据层链路断开时,触发Link中断,所述主机与所述当前PCIe设备之间的数据层链路由所述当前PCIe设备检测到自身异常后主动断开;设备驱动卸载模块,用于根据所述Link中断,执行设备驱动卸载流程,所述设备驱动卸载流程包括快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互;错误中断处理模块,用于当检测到致命错误中断时,屏蔽所述致命错误中断,并对所述致命错误中断降级处理得到非致命错误中断;报文丢弃模块,用于丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
第七方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面或第三方面所述的方法。
第八方面,本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面或第三方面所述的方法。
附图说明
图1是本申请实施例一种PCIe设备热拔系统的示意图;
图2是本申请实施例一种PCIe设备热拔方法的流程图;
图3是本申请实施例另一种PCIe设备热拔方法的流程图;
图4是本申请实施例一种PCIe设备热拔装置的框图;
图5是本申请实施例另一种PCIe设备热拔装置的框图;
图6是本申请实施例一种主机设备的框图;
图7是本本申请实施例一种PCIe设备热拔装置的框图;
图8是本申请实施例一种PCIe终端设备的框图;
图9是本申请实施例另一种PCIe设备热拔装置的框图;
图10是本申请实施例另一种主机设备的框图。
具体实施方式
请参见图1,示出了本申请实施例提供的PCIe设备热拔系统的示意图,如图1所示,PCIe热拔系统包括主机和PCIe设备;其中,主机包括软件部分和硬件部分,软件部分包括应用程序(主要是进行业务处理的文件系统)、设备驱动(即,PCIe设备的驱动)、操作系统(Operating System,OS)自带的PCIe热插拔驱动和PCIe错误检测处理、基本输入/输出系统(Basic Input Output System,BIOS)、设备硬件驱动;硬件部分包括处理器芯片(CPU)、根复合体(Root Complex,RC)及内部总线。其中,本申请中的CPU包括CPU内核以及该CPU内核连接的外围控制芯片(例如,图1中的管理CPU)。PCIe设备也包括硬件部分和软件部分,PCIe设备的软件、硬件不再详细描述。
PCIe设备的暴力热拔处理流程基本包括以下步骤:
主机侧:设备驱动检测暴力热拔信号;然后,RC发起中断,进入RC的中断处理函数;RC运行中断处理函数,读取RC内部相关寄存器,确认热拔事件;操作系统依次卸载下挂的PCIe设备,即,停止与PCIe设备之间的业务交互、关闭该PCIe设备对应的收发队列,以及,清理分配给该PCIe设备的芯片资源。
PCIe设备侧:热拔PCIe设备的过程中PCIe设备会掉电,触发掉电中断并上报至PCIe设备的软件,软件接收到掉电中断后,会发起掉电处理流程,保证数据的一致性。
请参见图2,示出了本申请实施例一种PCIe设备热拔方法的流程图,本实施例中主机能够主动检测下挂的PCIe设备是否发生热拔。
如图2所示,该方法包括以下步骤:
S110,主机检测下挂的当前PCIe设备是否发生热拔;如果是,则执行S120;如果否,则返回执行S110。
在本申请的一个实施例中,主机中的设备驱动通过一个高频检测的守护进程,主动检测主机下挂的当前PCIe设备是否发生暴力热拔。守护进程通过查找当前PCIe设备的设备标识来判断当前PCIe设备是否发生热拔。例如,该守护进程每1秒进行一次巡检,或者,每次处理IO数据流的ACK后调度一下进程进行检测。
具体的,可以通过读取指定寄存器中的数值获取设备标识,该指定寄存器内存储有主机下挂的当前PCIe设备的设备ID,如果该指定寄存器内的数值全部是F(十六进制数值),则表明该指定寄存器中的数值不是当前PCIe设备的设备ID,进一步表明该当前PCIe设备不在槽位,即,该当前PCIe设备发生热拔。
在本申请的另一个实施例中,主机的硬件部分检测自身下挂的当前PCIe设备是否异常,如果检测到当前PCIe设备异常,则触发Link中断,并将Link中断上报至PCIe热插拔驱动,PCIe热插拔驱动接收到Link中断后,确定该当前PCIe设备发生热拔,并主动执行设备驱动remove流程。
主机检测当前PCIe设备是否异常包括以下三个方面:
(1)检测主机外部是否异常
当主机检测到PCIe插槽的PRSN2#信号为高电平时,确定该插槽中的当前PCIe设备不在插槽中,进而触发插槽Presence中断和Link中断并上报至PCIe热插拔驱动;当检测到插槽的PRSN2#信号为低电平时,确定该插槽中的当前PCIe设备在插槽中。
当主机检测到电源电压异常时,确定主机所下挂的当前PCIe设备发生异常,并触发Link中断上报至PCIe热插拔驱动。此处的电源电压异常包括主机自身的供电电压异常或当前PCIe设备的供电电压异常。
(2)检测主机接口是否异常
当主机接收到的PCIe报文中包含误码时,确定主机与主机下挂的当前PCIe设备之间的数据层链路发生异常,即,链路异常;此时,触发Link中断并上报至PCIe热插拔驱动。
(3)检测主机内部是否异常
当检测主机的内部总线异常或主机内部其它部件异常时,确定主机内部发生异常,此时触发Link中断,并将Link中断上报至PCIe热插拔驱动。
在本申请的一个实施例中,通过总线异常检测机制检测主机的内部总线是否异常,总线异常检测机制可以包括以下步骤:
步骤a,主机获取待发送PCIe业务报文,并将该待发送PCIe业务报文存储至报文队列中;
步骤b,对报文队列中的待发送PCIe业务报文进行计时。
步骤c,删除计时超过时间阈值的待发送PCIe业务报文。
当主机内部总线正常工作时,报文队列中的待发送PCIe业务报文及时通过总线发送出去;如果主机内部总线异常,无法将报文队列中的待发送PCIe业务报文及时发送出去,导致待发送PCIe业务报文长时间无法发送出去而滞留在报文队列中,进而导致待发送PCIe业务报文在报文队列中的时间超时。因此,当报文队列中的报文超时后,确定主机的内部总线发生异常。
由上述内容可知,本申请中的当前PCIe设备热拔并不特指当前PCIe设备从主机的插槽中移除的场景,当所述当前PCIe设备未移除但无法与主机进行业务交互的场景也属于本申请的当前PCIe设备热拔范畴。
S120,执行设备驱动卸载流程。
当确定当前PCIe设备发生热拔后,PCIe热插拔驱动主动执行设备驱动remove流程(即,设备驱动卸载流程),执行remove流程的过程包括:快速停止主机侧分配给发生热拔的当前PCIe设备的I/O接口,快速释放主机侧分配给发生热拔的当前PCIe设备的芯片资源,而且,执行设备驱动remove流程期间设备驱动不与处理器芯片进行交互。
与此同时,执行设备驱动remove流程的过程还包括关闭当前PCIe设备所在的插槽,例如,关闭当前PCIe设备对应的Bus Master位(即,关闭总线),关闭热拔当前PCIe设备的插槽电源。
S130,当主机内CPU检测到RC异常时,触发致命错误中断,并将该致命错误中断上报至BIOS。
S140,当BIOS接收到致命错误中断后,屏蔽该致命错误中断或对该致命错误中断降低处理。
将致命错误中断屏蔽或降级处理后,能够避免向设备驱动上报致命错误中断,进而避免系统挂死。
S150,触发主机CPU丢弃与当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
主机的CPU内有一个专门检测错误的机制,当检测到RC错误后,会触发致命错误中断,并将该致命错误中断上报至BIOS。BIOS会对该致命错误中断进行屏蔽,或者,将该致命错误中断进行降级处理,得到非致命错误中断;与此同时,触发CPU正确处理与当前PCIe设备相关的异常报文,并向主机内发送该报文的应用程序返回报文异常的响应消息。
S160,主机的应用程序接收到与所述当前PCIe设备对应业务的无效响应消息时,进行报文异常处理,并退出处理该PCIe业务的业务进程。
当主机的应用程序接收到响应消息的数值全部是F(十六进制数值)时,表明该响应消息是无效响应消息,该应用程序将与当前PCIe设备相关业务的异常报文丢掉,并将处理当前PCIe设备相关业务的业务进程退出,防止系统挂死。并返回执行S110。
需要说明的是,通常主机侧具有多个连接PCIe设备的PCIe端口,当检测到某一个PCIe端口连接的PCIe设备发生异常,主机只移除主机侧发生异常的端口,不影响其它PCIe端口正常工作。
本实施例提供的PCIe设备热拔方法,主机主动检测自身下挂的当前PCIe设备是否发生热拔,当确认有当前PCIe设备发生热拔时,直接触发设备驱动卸载流程,这种主动检测机制能够快速响应当前PCIe设备的热拔事件,实现主机和当前PCIe设备均支持暴力热拔。而且,主机内的应用程序检测到该PCIe业务对应的无效响应消息时,直接将处理该PCIe业务的业务进程退出,从而防止PCIe设备热拔过程中造成系统挂死的现象发生。而且,利用该PCIe设备热拔方法,主机只移除主机侧发生异常的PCIe端口,不影响其它PCIe端口正常工作。
请参见图3,示出了本申请实施例另一种PCIe设备热拔方法的流程图,本实施例中,由PCIe设备自己检测自身的异常。
如图3所示,该方法可以包括:
S210,PCIe设备检测自身是否发生异常,如果未发生异常,则返回执行S210;如果发生异常,则执行S220。
PCIe设备检测自身是否发生异常的过程与主机检测PCIe设备是否异常的过程类似,也是检测PCIe设备的内部异常、接口异常和外部异常;
(1)检测PCIe设备内部是否异常
当PCIe设备内部逻辑出现异常时,确定PCIe设备内部出现异常。
(2)检测PCIe设备接口是否异常
当PCIe设备检测到链路恢复标识信息时,确定该PCIe设备与主机之间的数据层链路发生异常,即,链路异常。其中,链路恢复标识信息(即,Link Recovery条件),LinkRecovery条件包括symbol unlock信息和Framing error信息;symbol unlock表示报文符号错误,Framing error表示帧错误。
(3)检测PCIe设备是否存在外部异常
在本申请的一个实施例中,PCIe设备只有一个PCIe端口,此种应用场景下,当检测到Power Down(掉电)中断后,确定PCIe设备存在外部异常。
在本申请的另一个实施例中,PCIe设备具有多个PCIe端口,此种应用场景下,检测某个PCIe端口是否异常;对于整个PCIe设备而言,如果某个PCIe端口异常,不会对整个PCIe设备下电,只是会丢弃该PCIe端口的参考时钟信号。因此,可以利用参考时钟检测电路检测PCIe端口的参考时钟,当检测到PCIe端口没有参考时钟时,确定该PCIe端口异常,并由PCIe设备内的固件(Firm Ware,FW)移除该PCIe端口,或者,由参考时钟检测电路移除该PCIe端口。
S220,PCIe设备直接断开自身与主机之间的数据层链路。
PCIe设备检测到自身异常后,直接进行LinkDown处理,即,断开数据层链路。PCIe设备检测到异常后直接断开数据层链路,使得PCIe设备快速退出异常状态。
S230,主机检测到主机与PCIe设备之间的数据层链路断开,触发Link中断并上报至PCIe热插拔驱动。
S240,主机侧的PCIe热插拔驱动接收到Link中断后,调用设备驱动卸载流程。
S250,当主机检测到设备驱动卸载流程被调用后,检测是否能读取当前热插拔PCIe设备的设备标识,如果不能读取到设备标识,则执行S260;如果能读取到设备标识,则执行S270。
当主机侧的设备驱动卸载流程被调用后,通过检测是否能读取当前PCIe设备的设备标识来确定当前PCIe设备是否发生暴力热拔,如果读取不到,则确认当前PCIe设备发生暴力热拔;如果能读取到设备标识,则确认当前PCIe设备未发生暴力热拔。
S260,主机执行设备驱动卸载流程。
主机执行设备驱动卸载流程与图2中的S120的过程相同,此处不再赘述。
S270,主机侧的设备驱动正常通知当前PCIe设备进行卸载处理。
主机侧在执行S230和S240的同时,主机侧检测到RC异常后,彻底处理该RC异常,避免主机CPU挂死。
S280,主机检测到RC异常后,屏蔽由所述RC异常引起的致命错误中断并对所述致命错误中断降级处理。
在本申请的一个实施例中,当主机的硬件侧检测到RC异常后,会触发致命错误中断并上报至BIOS,BIOS屏蔽该致命错误中断,然后对该致命错误中断降级处理得到非致命错误中断,从而避免将致命错误中断上报至设备驱动。
S290,触发主机CPU正确处理与当前热插拔的PCIe设备相关的异常报文。
在屏蔽致命错误中断并降级处理的同时,触发CPU正确处理与当前热插拔设备相关的业务报文。所谓正确处理与当前热插拔设备相关的业务报文是指CPU将与当前热插拔设备相关的异常业务报文,即,丢弃异常报文,并向应用程序返回报文异常的响应消息。从而,避免了PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死。
需要说明的是,通常主机侧具有多个连接PCIe设备的PCIe端口,当检测到某一个PCIe端口连接的PCIe设备发生异常,主机只移除主机侧发生异常的PCIe端口,不影响其它PCIe端口正常工作。
本实施例提供的PCIe设备热拔方法,由PCIe设备主动检测自身是否存在异常,当检测到自身存在异常后,直接断开自身与主机之间的数据层链路。这样,主机侧能够检测到该LinkDown事件,触发Link中断,进而根据该Link中断触发设备驱动Remove流程;与此同时,若主机检测到RC异常,则屏蔽由该RC异常产生的致命错误中断,并对致命错误中断进行降级;同时,触发CPU正确处理异常业务报文,从而实现完全避免PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死,提高了PCIe设备热拔过程中的数据及系统安全性。
相应于上述的PCIe设备热拔方法实施例,本申请还提供了PCIe设备热拔装置实施例。
请参见图4,示出了本申请实施例一种PCIe设备热拔装置的框图,该装置应用于支持PCIe协议的主机中,本实施例中,主机能够主动检测下挂的PCIe设备的异常。
如图4所示,该装置可以包括:检测模块110、设备驱动卸载模块120和业务退出模块130。
检测模块110,用于检测所述主机下挂的当前PCIe设备是否发生热拔。
在本申请的一个实施例中,主机中的设备驱动通过一个高频检测的守护进程,主动检测主机下挂的当前PCIe设备是否发生暴力热拔。守护进程通过查找当前PCIe设备的设备标识来判断当前PCIe设备是否发生热拔;若查找不到PCIe设备的设备标识,则确定PCIe设备发生热拔。
具体的,可以通过读取指定寄存器中的数值获取设备标识,该指定寄存器内存储有主机下挂的当前PCIe设备的设备ID,如果该指定寄存器内的数值全部是F(十六进制数值),则表明该指定寄存器中的数值不是当前PCIe设备的设备ID,进一步表明该当前PCIe设备不在槽位,即,该当前PCIe设备发生热拔。
在本申请的另一个实施例中,通过检测主机内部是否存在异常;所述检测模块110具体用于:检测所述主机的内部总线是否异常,当确定所述内部总线异常时,确定所述当前PCIe设备发生热拔。
其中,检测所述主机的内部总线是否异常的过程包括:获取所述当前PCIe设备的待发送PCIe业务报文;将所述待发送PCIe业务报文存储到报文队列中,并开始为所述待发送PCIe业务报文计时;当所述待发送PCIe业务报文的计时时长达到时间阈值时,确定所述主机的内部总线发生异常,触发Link中断,确定所述当前PCIe设备发生热拔。
在本申请的又一个实施例中,通过检测主机外部是否异常,检测是否存在插槽Presence中断,所述插槽Presence中断在检测到所述PCIe设备移除时产生;当存在所述插槽Presence中断时,确定所述PCIe设备发生热拔。
当主机检测到PCIe插槽的PRSN2#信号为高电平时,确定该插槽中的当前PCIe设备不在插槽中,进而触发插槽Presence中断和Link中断并上报至PCIe热插拔驱动;当检测到插槽的PRSN2#信号为低电平时,确定该插槽中的当前PCIe设备在插槽中。
另一方面,还可以通过检测主机的电源来检测主机外部是否异常,例如,当主机检测到电源电压异常时,确定主机所下挂的当前PCIe设备发生异常,并触发Link中断上报至PCIe热插拔驱动。此处的电源电压异常包括主机自身的供电电压异常或当前PCIe设备的供电电压异常。
在本申请的再一个实施例中,检测主机与PCIe设备之间的数据层链路是否异常,具体的,当主机接收到的PCIe报文中包含误码时,确定主机与主机下挂的当前PCIe设备之间的数据层链路发生异常,即,链路异常,此时,触发Link中断并上报至PCIe热插拔驱动。
设备驱动卸载模块120,用于当确定所述当前PCIe设备发生热拔时,执行设备驱动卸载流程。
所述设备驱动卸载流程包括:快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互。
与此同时,执行设备驱动remove流程的过程还包括关闭当前PCIe设备所在的插槽,例如,关闭当前PCIe设备对应的Bus Master位(即,关闭总线),关闭热拔当前PCIe设备的插槽电源。
业务退出模块130,用于当接收到与所述当前PCIe设备对应业务的无效响应消息时,正确处理异常报文并退出处理所述当前PCIe设备对应业务的业务进程。
当主机的应用程序接收到响应消息的数值全部是F(十六进制数值)时,表明该响应消息是无效响应消息,该应用程序将与当前PCIe设备相关业务的异常报文丢掉,并将处理当前PCIe设备相关业务的业务进程退出,防止系统挂死。
本实施例提供的PCIe设备热拔装置,主机主动检测自身下挂的当前PCIe设备是否发生热拔,当确认有当前PCIe设备发生热拔时,直接触发设备驱动卸载流程,这种主动检测机制能够快速响应当前PCIe设备的热拔事件,实现主机和当前PCIe设备均支持暴力热拔。而且,主机内的应用程序检测到该PCIe业务对应的无效响应消息时,直接将处理该PCIe业务的业务进程退出,从而防止PCIe设备热拔过程中造成系统挂死的现象发生。
请参见图5,示出了本申请实施例的另一种PCIe设备热拔装置,应用于主机中,本实施例在图4所示实施例的基础上还包括:中断屏蔽模块210和报文丢弃模块220。
中断屏蔽模块210,用于当检测到致命错误中断时,屏蔽所述致命错误中断或对所述致命错误中断降级处理。
报文丢弃模块220,用于丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
主机的CPU内有一个专门检测错误的机制,当检测到RC异常后,会触发致命错误中断,并将该致命错误中断上报至BIOS。BIOS会对该致命错误中断进行屏蔽,或者,将该致命错误中断进行降级处理,得到非致命错误中断;与此同时,触发CPU正确处理与当前PCIe设备相关的异常报文,并向主机内发送该报文的应用程序返回报文异常的响应消息。
本实施例提供的PCIe设备热拔装置,在检测到RC异常后,屏蔽由该RC异常触发的致命错误中断,或者,对RC异常触发的致命错误中断降级处理;同时,正确处理与该PCIe设备的业务相关的异常报文,避免致命性错误导致系统挂死的现象发生。
请参见图6,示出了本申请实施例一种主机设备的框图,该主机设备支持PCIe协议,该主机设备与图4-图5所示的PCIe设备热拔装置相对应。本实施例中,主机设备主动检测下挂的PCIe设备是否异常。
如图6所示,该主机设备包括:处理器310和存储器320,该存储器内存储有程序指令,所述处理器310通过执行存储器320中的存储指令实现以下功能步骤:
检测主机下挂的当前PCIe设备是否发生热拔;
当确定当前PCIe设备发生热拔时,执行设备驱动卸载流程,设备驱动卸载流程包括:快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互;
当接收到与所述当前PCIe设备对应业务的无效响应消息时,正确处理异常报文并退出处理所述当前PCIe设备对应业务的业务进程。
在本申请的一个实施例中,检测所述主机下挂的PCIe设备是否发生热拔,包括:查找所述PCIe设备的设备标识;当查找不到所述PCIe设备的设备标识时,确定所述PCIe设备发生热拔。
在本申请的另一个实施例中,所述检测所述主机下挂的当前PCIe设备是否发生热拔,包括:检测所述主机的内部总线是否异常;当确定所述内部总线异常时,确定所述当前PCIe设备发生热拔。
在本申请的又一个实施例中,检测所述主机的内部总线是否异常,包括:获取所述当前PCIe设备的待发送PCIe业务报文;将所述待发送PCIe业务报文存储到报文队列中,并开始为所述待发送PCIe业务报文计时;当所述待发送PCIe业务报文的计时时长达到时间阈值时,确定所述主机的内部总线发生异常,触发Link中断,确定所述当前PCIe设备发生热拔。
在本申请的再一个实施例中,所述检测所述主机下挂的PCIe设备是否发生热拔,包括:检测是否存在插槽Presence中断,所述插槽Presence中断在检测到所述PCIe设备移除时产生;当存在所述插槽Presence中断时,确定所述PCIe设备发生热拔。
在本申请的另一个实施例中,处理器执行存储器内的程序指令以实现以下功能步骤:当检测到致命错误中断时,屏蔽所述致命错误中断或对所述致命错误中断降级处理;丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
本实施例提供的主机设备,主动检测自身下挂的当前PCIe设备是否发生热拔,当确认有当前PCIe设备发生热拔时,直接触发设备驱动卸载流程,这种主动检测机制能够快速响应当前PCIe设备的热拔事件,实现主机和当前PCIe设备均支持暴力热拔。而且,主机内的应用程序检测到该PCIe业务对应的无效响应消息时,直接将处理该PCIe业务的业务进程退出,从而防止PCIe设备热拔过程中造成系统挂死的现象发生。
请参见图7,示出了本申请实施例一种PCIe设备热拔装置的框图,该装置应用于PCIe设备中,本实施例中,由PCIe设备检测自身的异常,主机被动触发Link中断。
如图7所示,该装置包括:检测模块410、断链处理模块420和PCIe端口移除模块430。
检测模块410,用于检测所述PCIe设备是否存在异常。
在本申请的一个实施例中,所述检测模块410具体用于:检测链路恢复标识信息,并在检测到链路恢复标识信息时,确定所述PCIe设备存在异常。
其中,链路恢复标识信息(即,Link Recovery条件),Link Recovery条件包括symbol unlock信息和Framing error信息;symbol unlock表示报文符号错误,Framingerror表示帧错误。
在本申请的另一个实施例中,当检测模块检测到所述PCIe设备的内部逻辑异常时,确定所述PCIe设备存在异常。
在本申请的又一个实施例中,PCIe设备只有一个PCIe端口,此种应用场景下,当检测模块检测到掉电中断(Power Down)后,确定PCIe设备存在异常。
在本申请的再一个实施例中,PCIe设备包含至少两个PCIe端口,此种应用场景下,当检测模块检测到目标PCIe端口没有参考时钟时,确定该目标PCIe端口异常。
此种应用场景下,PCIe设备热拔装置还包括:PCIe端口移除模块430,用于当确定所述目标PCIe端口异常时,从所述PCIe设备侧移除所述目标PCIe端口。
断链处理模块420,用于当所述PCIe设备存在异常时,直接断开所述PCIe设备与主机之间的数据层链路。
PCIe设备检测到自身异常后,直接进行LinkDown处理,即,断开数据层链路。PCIe设备检测到异常后直接断开数据层链路,使得PCIe设备快速退出异常状态。
主机检测到自身与PCIe设备间的数据层链路断开后触发Link中断,主机根据该Link中断后,执行设备驱动卸载流程。
其中,所述设备驱动卸载流程包括快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互。
本实施例提供的PCIe设备热拔装置,由PCIe设备主动检测自身是否存在异常,当检测到自身存在异常后,直接断开自身与主机之间的数据层链路。这样,主机侧能够检测到该LinkDown事件,触发Link中断,进而根据该Link中断触发设备驱动Remove流程;与此同时,若主机检测到RC异常,则屏蔽由该RC异常产生的致命错误中断,并对致命错误中断进行降级;同时,触发CPU正确处理异常业务报文,从而实现完全避免PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死,提高了PCIe设备热拔过程中的数据及系统安全性。
请参见图8,示出了本申请实施例一种PCIe终端设备的框图,该PCIe终端设备与图7所示的PCIe设备热拔装置相对应。
如图8所示,该终端设备包括处理器510和存储器520,该存储器内存储有程序指令,所述处理器510通过执行存储器520中的存储指令实现以下功能步骤:
检测所述PCIe设备是否存在异常;
当所述PCIe设备存在异常时,直接断开所述PCIe设备与主机之间的数据层链路,以使所述主机检测到所述数据层链路断开后触发Link中断,并使所述主机根据所述Link中断执行设备驱动卸载流程;
其中,所述设备驱动卸载流程包括快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互。
在本申请的一个实施例中,检测所述PCIe设备是否存在异常包括:当检测到链路恢复标识信息时,确定所述PCIe设备存在异常。所述链路恢复标识信息(即,Link Recovery条件)包括报文符号错误信息(symbol unlock)和帧错误信息(Framing error)。
在本申请的另一个实施例中,检测所述PCIe设备是否存在异常包括:当检测到所述PCIe设备的内部逻辑异常时,确定所述PCIe设备存在异常。
在本申请的另一个实施例中,检测所述PCIe设备是否存在异常包括:当所述PCIe设备只有一个PCIe端口时,若检测到掉电中断,则确定所述PCIe设备存在异常。
在本申请的另一个实施例中,当所述PCIe设备包含至少两个PCIe端口时,若检测到目标PCIe端口没有参考时钟,则确定所述目标PCIe端口异常。此种应用场景下,当确定所述目标PCIe端口异常时,从所述PCIe设备侧移除所述目标PCIe端口。
本实施例提供的PCIe终端设备,PCIe设备主动检测自身是否存在异常,当检测到自身存在异常后,直接断开自身与主机之间的数据层链路。这样,主机侧能够检测到该LinkDown事件,触发Link中断,进而根据该Link中断触发设备驱动Remove流程;与此同时,若主机检测到RC异常,则屏蔽由该RC异常产生的致命错误中断,并对致命错误中断进行降级;同时,触发CPU正确处理异常业务报文,从而实现完全避免PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死,提高了PCIe设备热拔过程中的数据及系统安全性。
请参见图9,示出了本申请实施例另一种PCIe设备热拔装置的框图,该装置应用于支持PCIe协议的主机中,本实施例中,PCIe设备主动检测自身的异常,主机被动触发Link中断。
如图9所示,该装置包括:中断触发模块610、设备驱动卸载模块620、错误中断处理模块630和报文丢弃模块640;
中断触发模块610,用于当检测到主机与当前PCIe设备之间的数据层链路断开时,触发Link中断。
主机与所述当前PCIe设备之间的数据层链路由所述当前PCIe设备检测到自身异常后主动断开。
设备驱动卸载模块620,用于根据Link中断,执行设备驱动卸载流程。
所述设备驱动卸载流程包括:快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互。
错误中断处理模块630,用于当检测到致命错误中断时,屏蔽致命错误中断,并对致命错误中断降级处理得到非致命错误中断。
报文丢弃模块640,用于丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
在屏蔽致命错误中断并降级处理的同时,触发CPU正确处理与当前热插拔设备相关的业务报文。所谓正确处理与当前热插拔设备相关的业务报文是指CPU将与当前热插拔设备相关的异常业务报文,即,丢弃异常报文,并向应用程序返回报文异常的响应消息。从而,避免了PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死。
本实施例提供的PCIe设备热拔装置,由PCIe设备主动检测自身是否存在异常,当检测到自身存在异常后,直接断开自身与主机之间的数据层链路。这样,主机侧能够检测到该LinkDown事件,触发Link中断,进而根据该Link中断触发设备驱动Remove流程;与此同时,若主机检测到RC异常,则屏蔽由该RC异常产生的致命错误中断,并对致命错误中断进行降级;同时,触发CPU正确处理异常业务报文,从而实现完全避免PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死,提高了PCIe设备热拔过程中的数据及系统安全性。
请参见图10,示出了本申请实施例另一种主机设备的框图,本实施例中,由PCIe设备主动检测自身是否有异常,主机设备被动触发Link中断。
如图10所示,该主机设备包括处理器710和存储器720,该存储器中存储有程序指令,处理器710执行存储器720中的程序指令实现以下功能步骤:
当检测到所述主机与当前PCIe设备之间的数据层链路断开时,触发Link中断,所述主机与所述当前PCIe设备之间的数据层链路由所述当前PCIe设备检测到自身异常后主动断开;
根据所述Link中断,执行设备驱动卸载流程,所述设备驱动卸载流程包括快速停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,快速释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止与所述主机内处理器之间的交互;
当检测到致命错误中断时,屏蔽所述致命错误中断,并对所述致命错误中断降级处理得到非致命错误中断;
以及,丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
本实施例提供的主机设备,由PCIe设备主动检测自身是否存在异常,当检测到自身存在异常后,直接断开自身与主机之间的数据层链路。这样,主机侧能够检测到该LinkDown事件,触发Link中断,进而根据该Link中断触发设备驱动Remove流程;与此同时,若主机检测到RC异常,则屏蔽由该RC异常产生的致命错误中断,并对致命错误中断进行降级;同时,触发CPU正确处理异常业务报文,从而实现完全避免PCIe设备热拔过程中的异常,防止报文丢失或报文异常导致的系统挂死,提高了PCIe设备热拔过程中的数据及系统安全性。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字用户线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者,半导体介质(例如,固态硬盘Solid State Disk(SSD))等。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (18)
1.一种PCIe设备热拔方法,应用于支持高速串行计算机扩展总线标准PCIe的主机中,其特征在于,包括:
检测所述主机下挂的当前PCIe设备是否发生热拔;
当确定所述当前PCIe设备发生热拔时,执行设备驱动卸载流程,所述设备驱动卸载流程包括:停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止所述当前PCIe设备与所述主机内处理器之间的交互;
当检测到致命错误中断时,屏蔽所述致命错误中断或对所述致命错误中断进行降级处理;
丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
2.根据权利要求1所述的方法,其特征在于,所述检测所述主机下挂的当前PCIe设备是否发生热拔,包括:
查找所述当前PCIe设备的设备标识;当查找不到所述当前PCIe设备的设备标识时,确定所述PCIe设备发生热拔。
3.根据权利要求1所述的方法,其特征在于,所述检测所述主机下挂的当前PCIe设备是否发生热拔,包括:
检测所述主机的内部总线是否异常;
当确定所述内部总线异常时,确定所述当前PCIe设备发生热拔。
4.根据权利要求3所述的方法,其特征在于,检测所述主机的内部总线是否异常,包括:
获取所述当前PCIe设备的待发送PCIe业务报文;
将所述待发送PCIe业务报文存储到报文队列中,并为所述待发送PCIe业务报文计时;
当所述待发送PCIe业务报文的计时时长达到时间阈值时,确定所述主机的内部总线发生异常,触发Link中断,确定所述当前PCIe设备发生热拔。
5.根据权利要求1所述的方法,其特征在于,所述检测所述主机下挂的当前PCIe设备是否发生热拔,包括:
检测是否存在插槽Presence中断,所述插槽Presence中断在检测到所述PCIe设备移除时产生;当存在所述插槽Presence中断时,确定所述当前PCIe设备发生热拔。
6.一种PCIe设备热拔方法,应用于PCIe设备中,其特征在于,包括:
检测所述PCIe设备是否存在异常;
当所述PCIe设备存在异常时,直接断开所述PCIe设备与主机之间的数据层链路,以使所述主机检测到所述数据层链路断开后触发Link中断,并使所述主机根据所述Link中断执行设备驱动卸载流程;
其中,所述设备驱动卸载流程包括停止所述主机分配给所述PCIe设备的输入输出I/O接口,释放所述主机的分配给所述PCIe设备的系统资源,以及停止所述PCIe设备与所述主机内处理器之间的交互。
7.根据权利要求6所述的方法,其特征在于,检测所述PCIe设备是否存在异常,包括:
当检测到链路恢复标识信息时,确定所述PCIe设备存在异常,所述链路恢复标识信息包括报文符号错误信息和帧错误信息;
或者,
当检测到所述PCIe设备的内部逻辑异常时,确定所述PCIe设备存在异常;
或者,
当所述PCIe设备只有一个PCIe端口时,若检测到掉电中断,则确定所述PCIe设备存在异常;
或者,
当所述PCIe设备包含至少两个PCIe端口时,若检测到目标PCIe端口没有参考时钟,则确定所述目标PCIe端口异常。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当确定所述目标PCIe端口异常时,从所述PCIe设备侧移除所述目标PCIe端口。
9.一种PCIe设备热拔方法,应用于支持高速串行计算机扩展总线标准PCIe的主机中,其特征在于,包括:
当检测到所述主机与当前PCIe设备之间的数据层链路断开时,触发Link中断,所述主机与所述当前PCIe设备之间的数据层链路由所述当前PCIe设备检测到自身异常后主动断开;
根据所述Link中断,执行设备驱动卸载流程,所述设备驱动卸载流程包括停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止所述当前PCIe设备与所述主机内处理器之间的交互;
当检测到致命错误中断时,屏蔽所述致命错误中断,并对所述致命错误中断降级处理得到非致命错误中断;
以及,丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
10.一种PCIe设备热拔装置,应用于支持高速串行计算机扩展总线标准PCIe的主机,其特征在于,包括:
检测模块,用于检测所述主机下挂的当前PCIe设备是否发生热拔;
设备驱动卸载模块,用于当确定所述当前PCIe设备发生热拔时,执行设备驱动卸载流程,所述设备驱动卸载流程包括:停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止所述当前PCIe设备与所述主机内处理器之间的交互;
中断屏蔽模块,用于当检测到致命错误中断时,屏蔽所述致命错误中断或对所述致命错误中断进行降级处理;
报文丢弃模块,用于丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
11.根据权利要求10所述的装置,其特征在于,所述检测模块,具体用于:
查找所述当前PCIe设备的设备标识;当查找不到所述当前PCIe设备的设备标识时,确定所述PCIe设备发生热拔。
12.根据权利要求10所述的装置,其特征在于,所述检测模块,具体用于:
检测所述主机的内部总线是否异常;当确定所述内部总线异常时,确定所述当前PCIe设备发生热拔。
13.根据权利要求12所述的装置,其特征在于,所述检测模块用于检测所述主机的内部总线是否异常时,具体用于:
获取所述当前PCIe设备的待发送PCIe业务报文;
将所述待发送PCIe业务报文存储到报文队列中,并为所述待发送PCIe业务报文计时;
当所述待发送PCIe业务报文的计时时长达到时间阈值时,确定所述主机的内部总线发生异常,触发Link中断,确定所述当前PCIe设备发生热拔。
14.根据权利要求10所述的装置,其特征在于,所述检测模块具体用于:
检测是否存在插槽Presence中断,所述插槽Presence中断在检测到所述PCIe设备移除时产生;当存在所述插槽Presence中断时,确定所述当前PCIe设备发生热拔。
15.一种PCIe设备热拔装置,应用于PCIe设备中,其特征在于,包括:
检测模块,用于检测所述PCIe设备是否存在异常;
断链处理模块,用于当所述PCIe设备存在异常时,直接断开所述PCIe设备与主机之间的数据层链路,以使所述主机检测到所述数据层链路断开后触发Link中断,并使所述主机根据所述Link中断执行设备驱动卸载流程;
其中,所述设备驱动卸载流程包括停止所述主机分配给所述PCIe设备的输入输出I/O接口,释放所述主机的分配给所述PCIe设备的系统资源,以及停止所述PCIe设备与所述主机内处理器之间的交互。
16.根据权利要求15所述的装置,其特征在于,所述检测模块具体用于:
当检测到链路恢复标识信息时,确定所述PCIe设备存在异常,所述链路恢复标识信息包括报文符号错误信息和帧错误信息;
或者,
当检测到所述PCIe设备的内部逻辑异常时,确定所述PCIe设备存在异常;
或者,
当所述PCIe设备只有一个PCIe端口时,若检测到掉电中断,则确定所述PCIe设备存在异常;
或者,
当所述PCIe设备包含至少两个PCIe端口时,若检测到目标PCIe端口没有参考时钟,则确定所述目标PCIe端口异常。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括:
PCIe端口移除模块,用于当确定所述目标PCIe端口异常时,从所述PCIe设备侧移除所述目标PCIe端口。
18.一种PCIe设备热拔装置,应用于支持高速串行计算机扩展总线标准PCIe的主机中,其特征在于,包括:
中断触发模块,用于当检测到所述主机与当前PCIe设备之间的数据层链路断开时,触发Link中断,所述主机与所述当前PCIe设备之间的数据层链路由所述当前PCIe设备检测到自身异常后主动断开;
设备驱动卸载模块,用于根据所述Link中断,执行设备驱动卸载流程,所述设备驱动卸载流程包括停止所述主机分配给所述当前PCIe设备的输入输出I/O接口,释放所述主机的分配给所述当前PCIe设备的系统资源,以及停止所述当前PCIe设备与所述主机内处理器之间的交互;
错误中断处理模块,用于当检测到致命错误中断时,屏蔽所述致命错误中断,并对所述致命错误中断降级处理得到非致命错误中断;
报文丢弃模块,用于丢弃与所述当前PCIe设备相关的异常报文,并返回报文异常的响应消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110414854.4A CN113190487B (zh) | 2017-09-15 | 2017-09-15 | PCIe设备热拔方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710833368.XA CN107678994B (zh) | 2017-09-15 | 2017-09-15 | PCIe设备热拔方法及装置 |
CN202110414854.4A CN113190487B (zh) | 2017-09-15 | 2017-09-15 | PCIe设备热拔方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710833368.XA Division CN107678994B (zh) | 2017-09-15 | 2017-09-15 | PCIe设备热拔方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190487A true CN113190487A (zh) | 2021-07-30 |
CN113190487B CN113190487B (zh) | 2024-03-15 |
Family
ID=61137055
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110414854.4A Active CN113190487B (zh) | 2017-09-15 | 2017-09-15 | PCIe设备热拔方法及装置 |
CN201710833368.XA Active CN107678994B (zh) | 2017-09-15 | 2017-09-15 | PCIe设备热拔方法及装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710833368.XA Active CN107678994B (zh) | 2017-09-15 | 2017-09-15 | PCIe设备热拔方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113190487B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968443B (zh) * | 2018-09-28 | 2023-04-11 | 阿里巴巴集团控股有限公司 | 设备异常的检测方法及装置 |
CN111147401B (zh) * | 2019-12-20 | 2022-03-22 | 苏州浪潮智能科技有限公司 | 一种phy卡热插拔方法与装置 |
CN113342592B (zh) * | 2020-03-03 | 2023-08-25 | 合肥杰发科技有限公司 | 热插拔设备的断开检测方法、装置及介质 |
CN111723116A (zh) * | 2020-06-30 | 2020-09-29 | 上海豫源电力科技有限公司 | 数据回填方法及装置、系统 |
CN112463446B (zh) * | 2020-11-19 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种PCIe设备恢复方法、系统及电子设备和存储介质 |
CN114356057A (zh) * | 2021-12-30 | 2022-04-15 | 浙江大华技术股份有限公司 | 控制PCIe卡散热的方法、装置、设备及存储介质 |
CN114564334B (zh) * | 2022-04-27 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种mrpc数据处理方法、系统及相关组件 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072633A1 (en) * | 2010-09-22 | 2012-03-22 | Wilocity, Ltd. | Hot Plug Process in a Distributed Interconnect Bus |
CN103797469A (zh) * | 2013-05-20 | 2014-05-14 | 华为技术有限公司 | 一种计算机系统、高速外围组件互联端点设备的访问方法和装置 |
CN105701051A (zh) * | 2016-01-15 | 2016-06-22 | 华为技术有限公司 | 一种热插拔方法、主机控制器、主机及PCIe桥设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017009783A (ja) * | 2015-06-22 | 2017-01-12 | Necディスプレイソリューションズ株式会社 | マルチ表示システム、映像表示機器、映像表示機器における表示不具合発生防止方法とプログラム |
CN107038137B (zh) * | 2016-02-04 | 2020-04-28 | 华为技术有限公司 | 一种热插拔的设备及方法 |
-
2017
- 2017-09-15 CN CN202110414854.4A patent/CN113190487B/zh active Active
- 2017-09-15 CN CN201710833368.XA patent/CN107678994B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072633A1 (en) * | 2010-09-22 | 2012-03-22 | Wilocity, Ltd. | Hot Plug Process in a Distributed Interconnect Bus |
CN103797469A (zh) * | 2013-05-20 | 2014-05-14 | 华为技术有限公司 | 一种计算机系统、高速外围组件互联端点设备的访问方法和装置 |
CN105701051A (zh) * | 2016-01-15 | 2016-06-22 | 华为技术有限公司 | 一种热插拔方法、主机控制器、主机及PCIe桥设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107678994A (zh) | 2018-02-09 |
CN113190487B (zh) | 2024-03-15 |
CN107678994B (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107678994B (zh) | PCIe设备热拔方法及装置 | |
US11360842B2 (en) | Fault processing method, related apparatus, and computer | |
CN108353082B (zh) | 用于处理虚拟网络驱动器的恶意活动的技术 | |
US8639980B2 (en) | Administering incident pools for event and alert analysis | |
US7240130B2 (en) | Method of transmitting data through an 12C router | |
JP5754508B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
CN102761439B (zh) | Pon接入系统中基于看门狗的异常检测记录装置及方法 | |
CN111273923B (zh) | 基于PCIe接口的FPGA升级方法 | |
JP2005004745A (ja) | 集積回路間バスルータ | |
US7630304B2 (en) | Method of overflow recovery of I2C packets on an I2C router | |
US8667337B2 (en) | Storage apparatus and method of controlling the same | |
CN106502814B (zh) | 一种记录pcie设备错误信息的方法及装置 | |
US10691576B1 (en) | Multiple reset types in a system | |
JP2005004746A (ja) | 集積回路間ルータに接続されたデバイスの存在検出およびリセット用システムならびに方法 | |
CN110740072A (zh) | 一种故障检测方法、装置和相关设备 | |
CN109828945B (zh) | 一种业务报文处理方法及系统 | |
US20160283305A1 (en) | Input/output control device, information processing apparatus, and control method of the input/output control device | |
CN115617550A (zh) | 处理设备、控制单元、电子设备、方法和计算机程序 | |
US20140298076A1 (en) | Processing apparatus, recording medium storing processing program, and processing method | |
CN110609762B (zh) | 一种防止先进高性能总线(ahb)死锁的方法及装置 | |
WO2012164418A1 (en) | Facilitating processing in a communications environment using stop signaling | |
CN113742113A (zh) | 一种嵌入式系统健康管理方法、设备及储存介质 | |
WO2017124918A1 (zh) | 一种设备热处理方法和装置 | |
EP3328009A1 (en) | Method, device, and apparatus for detecting message backpressure | |
CN114003461A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211222 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Applicant after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |