CN117389790B - 可恢复故障的固件检测系统、方法、存储介质及服务器 - Google Patents

可恢复故障的固件检测系统、方法、存储介质及服务器 Download PDF

Info

Publication number
CN117389790B
CN117389790B CN202311709048.5A CN202311709048A CN117389790B CN 117389790 B CN117389790 B CN 117389790B CN 202311709048 A CN202311709048 A CN 202311709048A CN 117389790 B CN117389790 B CN 117389790B
Authority
CN
China
Prior art keywords
fault
target
fault information
bmc
baseboard management
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
CN202311709048.5A
Other languages
English (en)
Other versions
CN117389790A (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.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology 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 Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311709048.5A priority Critical patent/CN117389790B/zh
Publication of CN117389790A publication Critical patent/CN117389790A/zh
Application granted granted Critical
Publication of CN117389790B publication Critical patent/CN117389790B/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/079Root cause analysis, i.e. error or fault diagnosis
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请提供一种可恢复故障的固件检测系统、方法、存储介质及服务器,涉及计算机技术领域,该方法包括:获取故障寄存器内存储的目标故障信息,并将目标故障信息发送至BMC;BMC在接收到BIOS发送的目标故障信息后,对目标故障信息进行解析,判断故障类型;BMC在目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向服务器操作系统发送目标心跳请求,并接收服务器操作系统基于目标心跳请求反馈的响应数据;并根据响应数据来判断服务器操作系统是否宕机。本申请提供的可恢复故障的固件检测系统,用于准确的检测出可恢复故障导致操作系统宕机的情况,并在操作系统宕机时及时提醒用户进行处理。

Description

可恢复故障的固件检测系统、方法、存储介质及服务器
技术领域
本申请涉及计算机技术领域,尤其涉及一种可恢复故障的固件检测系统、方法、存储介质及服务器。
背景技术
RAS架构的服务器对灾难性故障与致命性故障均有成熟可靠的检测手段,服务器上的固件可以监测相应的故障个人身份识别码(Personal identification number,PIN)信号状态,即可判定当前服务器系统发生了何种类型的故障。
然而,即使服务器支持对应的PIN信号来表征可恢复故障的发生,但可恢复故障是否会导致服务器操作系统宕机,具有很强的不确定性。若可恢复故障造成宕机,且固件未监测到,则会导致故障漏报;若可恢复故障未造成宕机、但固件进行了故障上报,则会出现故障误报。
基于此,急需一种可恢复故障的固件检测方法,来准确的检测出可恢复故障是否会导致操作系统宕机,并在操作系统宕机时及时提醒用户进行处理。
发明内容
本申请的目的是提供一种可恢复故障的固件检测系统、方法、存储介质及服务器,用于准确的检测出可恢复故障导致操作系统宕机的情况,并在操作系统宕机时及时提醒用户进行处理。
第一方面,本申请提供一种可恢复故障的固件检测方法,包括:
所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;所述基板管理控制器BMC在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
可选地,所述故障寄存器包括:UNCERRSTS 寄存器,DEVSTS寄存器, STATUS寄存器;所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,包括:所述基本输入输出系统BIOS按照预设检测周期检测所述DEVSTS寄存器中生成的故障信息,和/或,所述STATUS寄存器中生成的故障信息,和/或,所述UNCERRSTS寄存器中生成的故障信息。
可选地,所述目标故障信息为内存出现故障时生成的故障信息;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型,包括:所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,否则确定所述目标故障信息的故障类型为不可恢复故障。
可选地,所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,包括:所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息指示所述STATUS寄存器中记录了故障、且所述目标故障信息中包含了预设字段的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述目标故障信息为PCIe设备出现故障时生成的故障信息;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型,包括:所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,包括:所述基板管理控制器BMC在所述UNCERRSTS寄存器中记录了不可修复故障、且所述DEVSTS寄存器中记录了非致命故障的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述系统还包括:平台路径控制器PCH;所述基板管理控制器BMC控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据,包括:所述基板管理控制器BMC控制所述虚拟外接设备按照所述预设发送周期向所述平台路径控制器PCH发送所述目标心跳请求,并接收所述平台路径控制器PCH基于所述目标心跳请求反馈的响应数据。
可选地,所述目标心跳请求为使用bmRequest字段构建的HID_GET_REPORT请求;所述基板管理控制器BMC控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,包括:所述基板管理控制器BMC执行初始化操作,并在初始化操作完成后,创建宕机状态探测任务进程;所述初始化操作包括:初始化相关库函数,配置系统时钟;所述基板管理控制器BMC执行所述宕机状态探测任务进程,调用USBD_LL_SetupStage函数处理所述虚拟外接设备的SETUP阶段,调用USBD_LL_DataInStage函数处理所述虚拟外接设备的IN阶段,调用USBD_LL_DataOutStage函数处理所述虚拟外接设备的OUT阶段;所述基板管理控制器BMC在确定所述虚拟外接设备配置成功的情况下,构建HID_GET_REPORT请求的相关参数;所述基板管理控制器BMC在完成所述HID_GET_REPORT请求的构造之后,调用usb_control_msg函数发送所述HID_GET_REPORT请求;所述基板管理控制器BMC在外设中断处理函数中调用USBD_HID_GetReport函数接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据。
可选地,所述基板管理控制器BMC根据所述目标故障信息确定所述服务器中的故障部件,包括:所述基板管理控制器BMC在确定所述服务器操作系统宕机的情况下,对所述目标故障信息进行分析,确定故障部件,并将本次宕机事件以及所述故障部件记录到系统环境日志SEL中,以提示用户诊断出的故障部件。
第二方面,本申请还提供一种可恢复故障的固件检测系统,包括:
基本输入输出系统BIOS,服务器操作系统,设置于中央处理器CPU中的故障寄存器,基板管理控制器BMC,内存以及高速串行计算机扩展总线标准PCIe设备;所述基本输入输出系统BIOS,用于获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC,用于在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;所述基板管理控制器BMC,还用于在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;所述基板管理控制器BMC,还用于在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
可选地,所述故障寄存器包括:UNCERRSTS 寄存器,DEVSTS寄存器, STATUS寄存器;所述基本输入输出系统BIOS,具体用于按照预设检测周期检测所述DEVSTS寄存器中生成的故障信息,和/或,所述STATUS寄存器中生成的故障信息,和/或,所述UNCERRSTS寄存器中生成的故障信息。
可选地,所述目标故障信息为内存出现故障时生成的故障信息;所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,否则确定所述目标故障信息的故障类型为不可恢复故障。
可选地,所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息指示所述STATUS寄存器中记录了故障、且所述目标故障信息中包含了预设字段的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述目标故障信息为PCIe设备出现故障时生成的故障信息;所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述基板管理控制器BMC,具体用于在所述目标故障信息指示所述UNCERRSTS寄存器中记录了不可修复故障、且所述DEVSTS寄存器中记录了非致命故障的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述系统还包括:平台路径控制器PCH;所述基板管理控制器BMC,具体用于控制所述虚拟外接设备按照所述预设发送周期向所述平台路径控制器PCH发送所述目标心跳请求,并接收所述平台路径控制器PCH基于所述目标心跳请求反馈的响应数据。
可选地,所述目标心跳请求为使用bmRequest字段构建的HID_GET_REPORT请求;所述基板管理控制器BMC,具体用于执行初始化操作,并在初始化操作完成后,创建宕机状态探测任务进程;所述初始化操作包括:初始化相关库函数,配置系统时钟;所述基板管理控制器BMC,具体还用于执行所述宕机状态探测任务进程,调用USBD_LL_SetupStage函数处理所述虚拟外接设备的SETUP阶段,调用USBD_LL_DataInStage函数处理所述虚拟外接设备的IN阶段,调用USBD_LL_DataOutStage函数处理所述虚拟外接设备的OUT阶段;所述基板管理控制器BMC,具体还用于在确定所述虚拟外接设备配置成功的情况下,构建HID_GET_REPORT请求的相关参数;所述基板管理控制器BMC,具体还用于在完成所述HID_GET_REPORT请求的构造之后,调用usb_control_msg函数发送所述HID_GET_REPORT请求;所述基板管理控制器BMC,具体还用于在外设中断处理函数中调用USBD_HID_GetReport函数接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据。
可选地,所述基板管理控制器BMC,具体用于在确定所述服务器操作系统宕机的情况下,对所述目标故障信息进行分析,确定故障部件,并将本次宕机事件以及所述故障部件记录到系统环境日志SEL中,以提示用户诊断出的故障部件。
第三方面,本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述可恢复故障的固件检测方法的步骤。
第四方面,本申请还提供一种服务器,其上设置有上述第二方面中任一项所述的可恢复故障的固件检测系统。
第五方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一种所述可恢复故障的固件检测方法的步骤。
本申请提供的可恢复故障的固件检测系统、方法、存储介质及服务器,首先,所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;之后,所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;最后,所述基板管理控制器BMC在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。如此,可以准确的检测出可恢复故障导致操作系统宕机的情况,并在操作系统宕机时及时提醒用户进行处理。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的可恢复故障的固件检测系统的结构示意图;
图2是本申请提供的可恢复故障的固件检测方法的流程示意图;
图3是本申请提供的宕机状态探测任务程序流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
以下针对本申请实施例所涉及的专业术语进行描述:
RAS:是Reliability,Availability,Serviceability的缩写,是对一台服务器可以被可靠使用的要求。RAS架构是指为了满足这种要求而设计的系统架构。RAS架构通常包括以下几个方面:可靠性(Reliability):指系统必须尽可能长期可靠的运行而不停机,减少系统downtime。可用性(Availability):指系统必须能够提供输出的能力,即使某些小的错误也能够自修复,对于无法自修复的错误也尽可能进行隔离,保障系统其余部分正常运转。服务性(Serviceability):指系统必须提供硬件检测上报机制,以便在硬件错误引起数据丢失或宕机之前能够通知管理员及时更换硬件;提供硬件错误恢复机制,并尽可能纠正错误,使系统可持续可靠的运行。RAS架构的设计目标是提高系统的可靠性、可用性和服务性,从而提高系统的稳定性和安全性。
基本输入输出系统(Basic Input Output System,BIOS):是一种业界标准的固件接口,BIOS是计算机启动时加载的第一个软件。其实,它是一组固化到计算机内主板上一个只读存储器(Read-Only Memory,ROM)芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从互补金属氧化物半导体(Complementary Metal Oxide Semiconductor,CMOS)中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。
基板管理控制器(Baseboard Management Controller,BMC):是一种用于部署、诊断和管理服务器的核心部件。BMC负责管理系统管理软件和平台管理硬件之间的接口,提供自主监控、事件记录、恢复控制等功能。BMC还可以用于采集服务器上所有硬件、操作系统层面的信息并交互管理,将这些信息提供给上层运维网管软件。
高速串行计算机扩展总线标准(Peripheral Component Interconnect Express,PCIe):是一种用于连接高速组件的接口标准。每个计算机主板上都有多个PCIe插槽,可以使用这些插槽添加图形处理器(Graphics Processing Unit,GPU)、磁盘阵列(RedundantArrays of Independent Disks,RAID)卡、Wi-Fi卡或固态硬盘(Solid State Disk或SolidState Drive,SSD)扩展卡等,这些设备统称为PCIe设备。
平台路径控制器(Platform Controller Hub,PCH):是主板芯片组中的一个重要组成部分,一般位于主板上离CPU插槽较远的下方,PCI插槽的前面。其主要作用包括:控制各种外围设备和主板之间的通信,如PCI总线、USB、串行ATA(Serial Advanced TechnologyAttachment,SATA)、音频控制器、键盘控制器、实时时钟控制器、高级电源管理等。管理电脑输入输出接口,例如USB、音频、网卡等。通过SATA接口提供硬盘控制、存储数据传输等功能。管理主板上的BIOS芯片,确保系统能够正常启动和工作。
UNCERRSTS寄存器:是一种用于记录PCIe总线错误信息的寄存器。如果PCIe总线发生错误,例如数据传输错误、协议错误、数据校验错误等,那么UNCERRSTS寄存器会记录相应的错误标志位,以便于检测和处理错误。
DEVSTS寄存器:是一种用于记录CPU状态的寄存器。它是Intel x86架构中的一种寄存器,用于记录设备状态信息。在Intel x86架构中,DEVSTS寄存器通常用于记录设备的状态信息,如设备是否处于中断状态、是否发生了异常等。如果DEVSTS寄存器记录了故障,那么说明设备在执行指令时遇到了错误,可能会导致系统崩溃或出现其他问题。需要进一步排查故障原因并进行修复。
STATUS寄存器:是一种用于记录CPU状态的寄存器,它可以记录各种状态信息,如CPU是否处于中断状态、是否发生了异常、是否有进位、是否有溢出、结果是否为零、结果是否为负等。不同的CPU架构可能有不同的STATUS寄存器,例如RISC-V、ARM、x86等。STATUS寄存器的内容可以用于控制程序的流程,例如根据条件码进行跳转或分支。
人体学输入设备(Human Interface Device,HID):是一种计算机设备的标准,通常用于人类操作和控制计算机系统。HID设备包括键盘、鼠标、游戏手柄、摄像头、触摸屏等。HID标准使得这些设备可以与任何操作系统和应用程序兼容,无需额外的软件或驱动程序。HID标准最常见的是指USB HID规范,它定义了一种用于传输HID设备的数据和命令的协议。
bmRequest请求:是USB协议中的一种请求类型,用于向USB设备发送控制命令。bmRequest请求通常由SETUP数据包中的bmRequestType和bmRequest字段指定。其中,bmRequestType字段指定了请求的类型,如请求类型、接收者类型、传输方向等;bmRequest字段指定了具体的请求类型,如获取设备描述符、设置端点等。
HID_GET_REPORT请求:是USB协议中的一种请求类型,用于从HID设备获取报告。HID设备是一种人机交互设备,如键盘、鼠标、游戏手柄等。HID_GET_REPORT请求通常由GET_DESCRIPTOR请求返回的HID描述符中的REPORT描述符指定。REPORT描述符包含了HID设备的输入、输出和特性报告的信息,其中输入报告用于向主机发送数据,输出报告用于从主机接收数据,特性报告用于读取或设置设备的状态信息。如果主机向HID设备发送HID_GET_REPORT请求,那么HID设备会返回指定类型的报告数据。
针对相关技术中存在的上述技术问题,本申请实施例提供了一种能够通过固件进行检测的可恢复故障的固件检测系统。如图1所示为本申请实施例提供的一种可恢复故障的固件检测系统,该系统包括:基本输入输出系统BIOS,服务器操作系统,设置于中央处理器CPU中的故障寄存器,基板管理控制器BMC,内存以及高速串行计算机扩展总线标准PCIe设备。
基于图1所示的系统,本申请实施例提供的可恢复故障的固件检测方法包括:1、使用BMC芯片进行HID通信检测:通过使用BMC芯片提供的功能,实现与服务器操作系统的HID通信检测。2、服务器系统故障处理中断:当服务器系统发生可恢复故障时,BIOS进入故障处理中断,收集故障寄存器信息并传递给BMC。3、解析故障信息:BMC接收到故障寄存器信息后,解析出故障类型和故障部件。4、宕机状态探测任务:BMC启动宕机状态探测任务进程,通过间断使用BMC芯片虚拟的USB键盘或鼠标设备向服务器操作系统发送bmRequest请求,探测系统是否能够正常响应,进而判断服务器操作系统是否宕机。
示例性地,本申请实施例中,故障信息可以为服务器中的内存以及PCIe设备出现故障时生成的,不同来源的故障信息的数据格式不同。
示例性地,内存的故障类型可分为三类:不可修复故障无需修复动作(Uncorrected NO Action Required,UCNA)、可以软件修复需要立刻执行 (SoftwareRecoverable Action Required,SRAR)、可以软件修复是否执行可选(SoftwareRecoverable Action Optional,SRAO)。
举例说明,在如下所示的故障信息中:CPU0 Core17 Bank1即DCU bank的STATUS寄存器记录到了故障,“Bit(61)UC Valid”代表发生了不可修复故障,"MCi_ADDR"地址解析指向内存CPU0_Channel2_Dimm1,即该内存的该地址发了UCE故障,但由于"Bit(56)SignalsValid"与"Bit(55)AR Valid"同时置位,表征发生了SRAR类型故障,操作系统层面若该故障成功修复(包括:丢弃故障地址数据、关掉发生该故障的程序等)该故障则不会导致宕机,若操作系统修复失败,该故障会继续导致宕机发生。
"CPU": 0,
"Core": 17,
"Module": "Bank1_MC1(DCU)",
"Register": {
"MCi_CTL": "0x0000000000000001",
"MCi_CTL2": "0x0000000540000001",
"MCi_STATUS": "0xbd80000000100134",
"MCi_ADDR": "0x0000000034db8480 Memory: CPU0_Channel2_Dimm1",
}
"Register Decode ": {
"ErrorType": "SRAR",
"Mci_Status": [
"Bit(61)UC Valid","Bit(56)Signals Valid","Bit(55)ARValid"],
}
示例性地,PCIe设备的可恢复故障与致命故障(Fatal)相对应,通常记录为非致命(Non-Fatal)故障,在如下所示的故障信息中:设备端UNCERRSTS 寄存器记录发生了不可修复故障Completion time out error,表征存在数据传输超时故障,但在设备端的 DEVSTS寄存器同时记录了 Non-Fatal Error detected,设备端得以向操作系统Host端重新传输该笔超时数据进行故障的修复。若重新传输数据仍未修复该故障,进一步的操作系统会因此发生宕机。
"CPU": 0,
"Module": "PCIe Device",
"Location": "0x24:0x0:0x0 CPU0_PE1 ",
"Register": {
"PCISTS": "0x4010",
"DEVSTS": "0x000b",
"UNCERRSTS": "0x00004000",
"CORERRSTS": "0x00002000",
}
"Register Decode": {
"DEVSTS": ["Unsupported request detected(bit3)",
"Non-Fatal Error detected(bit1)",
"Correctable Error detected(bit0)"],
"PCISTS": ["Signaled System Error(bit14)"],
"UNCERRSTS": ["Completion time out error (bit14)"],
"CORERRSTS": ["Advisory non-fatal error (bit13)"]
}
示例性地,由于PCIe设备与内存的可恢复故障在操作系统层面是否能够修复成功,固件层均无法感知,因此,可以按照本申请实施例提供的可恢复故障的固件检测方法来判断操作系统是否在可恢复故障发生后出现了宕机。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的可恢复故障的固件检测方法进行详细地说明。
基于图1,如图2所示,为本申请实施例提供的可恢复故障的固件检测方法,该方法包括以下步骤201至步骤204:
步骤201、所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC。
其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的。
示例性地,上述故障寄存器可以包括:UNCERRSTS 寄存器,DEVSTS寄存器, STATUS寄存器;各个寄存器的作用在上述内容中已经进行了详细的介绍,在此不再赘述。
示例性地,当内存或者PCIe设备出现故障之后,会生成故障信息,并存储到上述故障寄存器中。基本输入输出系统BIOS可以在服务器系统发生故障之后,执行故障处理中断,从上述故障寄存器中获取故障信息,并将获取到的故障信息发送至基板管理控制器BMC,有基板管理控制器BMC对故障信息进行解析。
具体地,上述步骤201,可以包括以下步骤201a:
步骤201a、所述基本输入输出系统BIOS按照预设检测周期检测所述DEVSTS寄存器中生成的故障信息,和/或,所述STATUS寄存器中生成的故障信息,和/或,所述UNCERRSTS寄存器中生成的故障信息。
示例性地,上述目标故障信息为基本输入输出系统BIOS从上述三种寄存器中的任一寄存器中获取到的故障信息。需要说明的是,本申请实施例中的故障寄存器,还可以包括其他能够存储故障信息的寄存器。
步骤202、所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型。
示例性地,基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息之后,便可以对目标故障信息进行解析,判断该目标故障信息的故障类型。
具体地,针对目标故障信息为内存出现故障时生成的故障信息的情况,上述步骤202,可以包括以下步骤202a:
步骤202a、所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,否则确定所述目标故障信息的故障类型为不可恢复故障。
示例性地,上述第一预设规则用于在目标故障信息为内存出现故障时生成的故障信息的情况下,判断目标故障信息的故障类型是否为可恢复故障。
具体地,上述步骤202a,还可以包括以下步骤202a1:
步骤202a1、所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息指示所述STATUS寄存器中记录了故障、且所述目标故障信息中包含了预设字段的情况下,确定所述目标故障信息的故障类型为可恢复故障。
示例性地,上述步骤202a1中的预设字段可以为上述示例中的"Bit(56)SignalsValid"与"Bit(55)AR Valid"字段。
可以理解的是,基于上述示例中针对故障信息的判断可知,故障信息中记录了属于不可修复故障的字段并不代表该故障信息的故障类型为不可恢复故障,需要根据故障信息中记录的其他字段来进行综合判断。
具体地,针对目标故障信息为PCIe设备出现故障时生成的故障信息的情况,上述步骤202,可以包括以下步骤202b:
步骤202b、所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障。
示例性地,与上述第一预设规则相似,上述第二预设规则用于在目标故障信息为PCIe设备出现故障时生成的故障信息的情况下,判断目标故障信息的故障类型是否为可恢复故障。
具体地,基于上述针对PCIe设备的可恢复故障的示例所描述的内容,上述步骤202b,还可以包括以下步骤202b1:
步骤202b1、所述基板管理控制器BMC在所述UNCERRSTS寄存器中记录了不可修复故障、且所述DEVSTS寄存器中记录了非致命故障的情况下,确定所述目标故障信息的故障类型为可恢复故障。
步骤203、所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据。
其中,所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
示例性地,当基板管理控制器BMC确定所述目标故障信息的故障类型为可恢复故障时,便可以启动宕机状态探测任务进程对服务器操作系统的状态进行监测。
示例性地,上述目标心跳请求为使用bmRequest字段构建的HID_GET_REPORT请求。
具体地,上述步骤203中基板管理控制器BMC控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求的步骤,可以包括以下步骤203a1至步骤203a5:
步骤203a1、所述基板管理控制器BMC执行初始化操作,并在初始化操作完成后,创建宕机状态探测任务进程。
其中,所述初始化操作包括:初始化相关库函数,配置系统时钟。
步骤203a2、所述基板管理控制器BMC执行所述宕机状态探测任务进程,调用USBD_LL_SetupStage函数处理所述虚拟外接设备的SETUP阶段,调用USBD_LL_DataInStage函数处理所述虚拟外接设备的IN阶段,调用USBD_LL_DataOutStage函数处理所述虚拟外接设备的OUT阶段。
步骤203a3、所述基板管理控制器BMC在确定所述虚拟外接设备配置成功的情况下,构建HID_GET_REPORT请求的相关参数。
步骤203a4、所述基板管理控制器BMC在完成所述HID_GET_REPORT请求的构造之后,调用usb_control_msg函数发送所述HID_GET_REPORT请求。
步骤203a5、所述基板管理控制器BMC在外设中断处理函数中调用USBD_HID_GetReport函数接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据。
示例性地,上述虚拟外接设备为BMC基板管理控制器BMC虚拟出来的USB设备。
需要说明的是,在USB通信中,HID设备使用控制传输来与主机进行通信和交互。在HID设备的控制传输中,bmRequest是一个8位的字段,用于指定传输类型和请求类型。它位于USB请求的bmRequestType字段中的低字节。bmRequest的高2位表示传输类型,其二进制取值包括:00、01、10。其中00表示标准传输,用于标准的USB请求;01表示类传输,用于与设备类别相关的请求;10表示厂商传输,用于与特定厂商相关的请求。bmRequest的低6位表示请求类型,具体取值取决于传输类型的不同。对于标准传输和类传输,请求类型的取值是由USB规范定义的。对于厂商传输,请求类型的取值由设备厂商自行定义。
举例说明,上述控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求的代码如下所示:
int main(void)
{
HAL_Init();
/ 配置系统时钟等 />/
USBD_Init(&USBD_Device,&HID_Desc, 0);
USBD_RegisterClass(&USBD_Device, USBD_HID_CLASS);
USBD_Start(&USBD_Device);
while (1)
{
/ 处理USB事件 />/
USBD_LL_SetupStage(&USBD_Device);
USBD_LL_DataInStage(&USBD_Device, 0x00);
USBD_LL_DataOutStage(&USBD_Device, 0x00);
/ 发送HID_GET_REPORT请求 />/
if (USBD_Device.dev_state==USBD_STATE_CONFIGURED)
{
uint8_t report[64]; //假设报告长度为64字节
// 构造HID_GET_REPORT请求
uint8_t bmRequestType=USB_REQ_TYPE_CLASS|USB_REQ_RECIPIENT_INTERFACE;
uint8_t bRequest=HID_GET_REPORT;
uint16_t wValue=0;
uint16_t wIndex=0;
uint16_t wLength=sizeof(report);
uint8_t data=report;
// 发送HID_GET_REPORT请求
usb_control_msg(&USBD_Device, bmRequestType, bRequest,wValue, wIndex, data, wLength);
}
}
}
void USBD_HID_GetReport(uint8_t report, uint16_t len)
{
/ 在这里处理HID_GET_REPORT请求 />/
/ 可以使用usb_control_msg函数向电脑端发送数据 />/
}
其中, VENDOR_ID和PRODUCT_ID可以替换为要操作的USB设备的实际厂商ID和产品ID。此代码将使用HID bmRequest字段向服务器操作系统发送一个HID_GET_REPORT请求,以接收来自服务器操作系统反馈的数据包。并通过对服务器操作系统反馈的数据包的监测来判断服务器操作系统是否出现了宕机。
示例性地,上述代码的实现逻辑包括:1、初始化BMC芯片的USB和HID库,并配置系统时钟等。2、启动USB设备。3、创建一个进程,建立一个无限循环,用于处理USB事件。4、在进程循环中,首先调用USBD_LL_SetupStage函数处理USB设备的SETUP阶段。5、然后调用USBD_LL_DataInStage函数处理USB设备的IN阶段。6、接着调用USBD_LL_DataOutStage函数处理USB设备的OUT阶段。7、检查USB设备的状态是否已经配置成功。8、如果USB设备已经配置成功,则构造HID_GET_REPORT请求的相关参数。9、调用usb_control_msg函数发送HID_GET_REPORT请求。10、在BMC芯片的外设中断处理函数中调用USBD_HID_GetReport函数中处理系统返回数据。11、重复上述步骤4到步骤10,持续发送HID_GET_REPORT请求并检测系统是否有数据返回。
在一种可能的实现方式中,所述系统还包括:平台路径控制器PCH,上述步骤203,还可以包括以下步骤203b:
步骤203b、所述基板管理控制器BMC控制所述虚拟外接设备按照所述预设发送周期向所述平台路径控制器PCH发送所述目标心跳请求,并接收所述平台路径控制器PCH基于所述目标心跳请求反馈的响应数据。
示例性地,如图1所示,上述基板管理控制器BMC无法直接与服务器操作系统进行通信,而是需要借助平台路径控制器PCH实现服务器操作系统状态的监测。
需要说明的是,服务器操作系统重启虽然可以一定程度表征系统产生了宕机,但系统重启的触发源除了系统收到致命故障或未成功恢复的可修复故障外,还有可能是开关机按键物理触发、带内OS正常reboot命令执行、BMC收到带外reboot指令等不稳定因素;另外虚拟机操作系统存在收到故障后保持宕机不重启的现象。所以使用可信通道探测操作系统是否在正常运行状态是较为可靠的方案。
步骤204、所述基板管理控制器BMC在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件。
示例性地,宕机状态探测任务会按照预设发送周期(例如间隔50ms)控制基板管理控制器BMC芯片虚拟的USB键盘或鼠标设备向服务器操作系统发送 bmRequest 请求,探测系统是否还能够正常响应。若在可恢复故障发生的预设时长(例如1分钟)内服务器系统经历了从 bmRequest有相应到无响应的转变,或者基板管理控制器BMC监测到服务器操作系统进行了重启,则可以准确的表明该次可恢复故障造成了系统宕机,可以直接记录到系统环境日志(System Event Log,SEL)中,以便提示用户更换诊断出的故障部件。
在一种可能的实现方式中,上述步骤204中,可以根据接收服务器操作系统反馈的响应数据的累计失败次数,来判断操作系统反馈的响应数据是否出现中断。即当累计失败次数超过预设阈值时,确定操作系统反馈的响应数据是否出现中断。
具体地,上述步骤204,还可以包括以下步骤204a:
步骤204a、所述基板管理控制器BMC在确定所述服务器操作系统宕机的情况下,对所述目标故障信息进行分析,确定故障部件,并将本次宕机事件以及所述故障部件记录到系统环境日志SEL中,以提示用户诊断出的故障部件。
举例说明,如图3所示,为本申请实施例提供的宕机状态探测任务程序流程示意图,在执行循环探测故障状态的情况下,若检测到可恢复故障发生,则开始计时,并间隔50ms向服务器操作系统HOST请求心跳,并接收服务器操作系统反馈的心跳数据;若计时达到1分钟,且未出现接收服务器操作系统反馈的心跳数据中断的情况,则可以确定可恢复故障被修复成功;若在计时的1分钟内,出现了接收服务器操作系统反馈的心跳数据中断、且累计心跳失败次数大于10的情况,则可以确定可恢复故障被修复失败。
本申请实施例提供的可恢复故障的固件检测系统,首先,所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;之后,所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;最后,所述基板管理控制器BMC在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。如此,可以准确的检测出可恢复故障导致操作系统宕机的情况,并在操作系统宕机时及时提醒用户进行处理。
需要说明的是,本申请实施例提供的可恢复故障的固件检测方法,执行主体可以为可恢复故障的固件检测系统,或者该可恢复故障的固件检测装置中的用于执行可恢复故障的固件检测系统中的各个部件。本申请实施例中以可恢复故障的固件检测系统执行可恢复故障的固件检测方法为例,说明本申请实施例提供的可恢复故障的固件检测方法。
需要说明的是,本申请实施例中,上述各个方法附图所示的。可恢复故障的固件检测方法均是以结合本申请实施例中的一个附图为例示例性的说明的。具体实现时,上述各个方法附图所示的可恢复故障的固件检测方法还可以结合上述实施例中示意的其它可以结合的任意附图实现,此处不再赘述。
下面对本申请提供的可恢复故障的固件检测系统进行描述,下文描述的与上文描述的可恢复故障的固件检测方法可相互对应参照。
基于图1所示的可恢复故障的固件检测系统的结构示意图,本申请实施例提供的可恢复故障的固件检测系统,包括:基本输入输出系统BIOS,服务器操作系统,设置于中央处理器CPU中的故障寄存器,基板管理控制器BMC,内存以及高速串行计算机扩展总线标准PCIe设备;所述基本输入输出系统BIOS,用于获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC,用于在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;所述基板管理控制器BMC,还用于在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;所述基板管理控制器BMC,还用于在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
可选地,所述故障寄存器包括:UNCERRSTS 寄存器,DEVSTS寄存器, STATUS寄存器;所述基本输入输出系统BIOS,具体用于按照预设检测周期检测所述DEVSTS寄存器中生成的故障信息,和/或,所述STATUS寄存器中生成的故障信息,和/或,所述UNCERRSTS寄存器中生成的故障信息。
可选地,所述目标故障信息为内存出现故障时生成的故障信息;所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,否则确定所述目标故障信息的故障类型为不可恢复故障。
可选地,所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息指示所述STATUS寄存器中记录了故障、且所述目标故障信息中包含了预设字段的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述目标故障信息为PCIe设备出现故障时生成的故障信息;所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述基板管理控制器BMC,具体用于在所述目标故障信息指示所述UNCERRSTS寄存器中记录了不可修复故障、且所述DEVSTS寄存器中记录了非致命故障的情况下,确定所述目标故障信息的故障类型为可恢复故障。
可选地,所述系统还包括:平台路径控制器PCH;所述基板管理控制器BMC,具体用于控制所述虚拟外接设备按照所述预设发送周期向所述平台路径控制器PCH发送所述目标心跳请求,并接收所述平台路径控制器PCH基于所述目标心跳请求反馈的响应数据。
可选地,所述目标心跳请求为使用bmRequest字段构建的HID_GET_REPORT请求;所述基板管理控制器BMC,具体用于执行初始化操作,并在初始化操作完成后,创建宕机状态探测任务进程;所述初始化操作包括:初始化相关库函数,配置系统时钟;所述基板管理控制器BMC,具体还用于执行所述宕机状态探测任务进程,调用USBD_LL_SetupStage函数处理所述虚拟外接设备的SETUP阶段,调用USBD_LL_DataInStage函数处理所述虚拟外接设备的IN阶段,调用USBD_LL_DataOutStage函数处理所述虚拟外接设备的OUT阶段;所述基板管理控制器BMC,具体还用于在确定所述虚拟外接设备配置成功的情况下,构建HID_GET_REPORT请求的相关参数;所述基板管理控制器BMC,具体还用于在完成所述HID_GET_REPORT请求的构造之后,调用usb_control_msg函数发送所述HID_GET_REPORT请求;所述基板管理控制器BMC,具体还用于在外设中断处理函数中调用USBD_HID_GetReport函数接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据。
可选地,所述基板管理控制器BMC,具体用于在确定所述服务器操作系统宕机的情况下,对所述目标故障信息进行分析,确定故障部件,并将本次宕机事件以及所述故障部件记录到系统环境日志SEL中,以提示用户诊断出的故障部件。
本申请提供的可恢复故障的固件检测方法,首先,所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;之后,所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;最后,所述基板管理控制器BMC在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。如此,可以准确的检测出可恢复故障导致操作系统宕机的情况,并在操作系统宕机时及时提醒用户进行处理。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的可恢复故障的固件检测方法,该方法包括:所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;所述基板管理控制器BMC在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
又一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的可恢复故障的固件检测方法,该方法包括:所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;所述基板管理控制器BMC在所述基板管理控制器向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定所述服务器中的故障部件;其中,所述目标故障信息为所述服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (20)

1.一种可恢复故障的固件检测系统,其特征在于,所述系统包括:基本输入输出系统BIOS,服务器操作系统,设置于中央处理器CPU中的故障寄存器,基板管理控制器BMC,内存以及高速串行计算机扩展总线标准PCIe设备;
所述基本输入输出系统BIOS,用于获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;
所述基板管理控制器BMC,用于在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;
所述基板管理控制器BMC,还用于在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;
所述基板管理控制器BMC,还用于在所述虚拟外接设备向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述服务器操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定服务器中的故障部件;
其中,所述目标故障信息为服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
2.根据权利要求1所述的系统,其特征在于,所述故障寄存器包括:UNCERRSTS 寄存器,DEVSTS寄存器, STATUS寄存器;
所述基本输入输出系统BIOS,具体用于按照预设检测周期检测所述DEVSTS寄存器中生成的故障信息,和/或,所述STATUS寄存器中生成的故障信息,和/或,所述UNCERRSTS寄存器中生成的故障信息。
3.根据权利要求2所述的系统,其特征在于,所述目标故障信息为内存出现故障时生成的故障信息;
所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,否则确定所述目标故障信息的故障类型为不可恢复故障;
其中,所述第一预设规则用于判断所述目标故障信息中是否包含了预设字段。
4.根据权利要求3所述的系统,其特征在于,
所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息指示所述STATUS寄存器中记录了故障、且所述目标故障信息中包含了预设字段的情况下,确定所述目标故障信息的故障类型为可恢复故障。
5.根据权利要求2所述的系统,其特征在于,所述目标故障信息为PCIe设备出现故障时生成的故障信息;
所述基板管理控制器BMC,具体用于对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障。
6.根据权利要求5所述的系统,其特征在于,
所述基板管理控制器BMC,具体用于在所述目标故障信息指示所述UNCERRSTS寄存器中记录了不可修复故障、且所述DEVSTS寄存器中记录了非致命故障的情况下,确定所述目标故障信息的故障类型为可恢复故障。
7.根据权利要求1所述的系统,其特征在于,所述系统还包括:平台路径控制器PCH;
所述基板管理控制器BMC,具体用于控制所述虚拟外接设备按照所述预设发送周期向所述平台路径控制器PCH发送所述目标心跳请求,并接收所述平台路径控制器PCH基于所述目标心跳请求反馈的响应数据。
8.根据权利要求1或7所述的系统,其特征在于,所述目标心跳请求为使用bmRequest字段构建的HID_GET_REPORT请求;
所述基板管理控制器BMC,具体用于执行初始化操作,并在初始化操作完成后,创建宕机状态探测任务进程;所述初始化操作包括:初始化相关库函数,配置系统时钟;
所述基板管理控制器BMC,具体还用于执行所述宕机状态探测任务进程,调用USBD_LL_SetupStage函数处理所述虚拟外接设备的SETUP阶段,调用USBD_LL_DataInStage函数处理所述虚拟外接设备的IN阶段,调用USBD_LL_DataOutStage函数处理所述虚拟外接设备的OUT阶段;
所述基板管理控制器BMC,具体还用于在确定所述虚拟外接设备配置成功的情况下,构建HID_GET_REPORT请求的相关参数;
所述基板管理控制器BMC,具体还用于在完成所述HID_GET_REPORT请求的构造之后,调用usb_control_msg函数发送所述HID_GET_REPORT请求;
所述基板管理控制器BMC,具体还用于在外设中断处理函数中调用USBD_HID_GetReport函数接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据。
9.根据权利要求1所述的系统,其特征在于,
所述基板管理控制器BMC,具体用于在确定所述服务器操作系统宕机的情况下,对所述目标故障信息进行分析,确定故障部件,并将本次宕机事件以及所述故障部件记录到系统环境日志SEL中,以提示用户诊断出的故障部件。
10.一种可恢复故障的固件检测方法,其特征在于,应用于可恢复故障的固件检测系统,所述系统包括:基本输入输出系统BIOS,服务器操作系统,设置于中央处理器CPU中的故障寄存器,基板管理控制器BMC,内存以及高速串行计算机扩展总线标准PCIe设备;
所述方法包括:
所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,并将所述目标故障信息发送至所述基板管理控制器BMC;
所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型;
所述基板管理控制器BMC在所述目标故障信息的故障类型为可恢复故障的情况下,控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据;
所述基板管理控制器BMC在所述虚拟外接设备向所述服务器操作系统发送所述目标心跳请求的预设时长内,若检测到所述服务器操作系统反馈的响应数据出现中断的情况,则确定所述服务器操作系统宕机,并根据所述目标故障信息确定服务器中的故障部件;
其中,所述目标故障信息为服务器中的内存以及PCIe设备出现故障时生成的;所述虚拟外接设备为所述基板管理控制器BMC虚拟出的通用串行总线USB设备。
11.根据权利要求10所述的方法,其特征在于,所述故障寄存器包括:UNCERRSTS 寄存器,DEVSTS寄存器, STATUS寄存器;
所述基本输入输出系统BIOS获取所述故障寄存器内存储的目标故障信息,包括:
所述基本输入输出系统BIOS按照预设检测周期检测所述DEVSTS寄存器中生成的故障信息,和/或,所述STATUS寄存器中生成的故障信息,和/或,所述UNCERRSTS寄存器中生成的故障信息。
12.根据权利要求11所述的方法,其特征在于,所述目标故障信息为内存出现故障时生成的故障信息;
所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型,包括:
所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,否则确定所述目标故障信息的故障类型为不可恢复故障。
13.根据权利要求12所述的方法,其特征在于,所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第一预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,包括:
所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息指示所述STATUS寄存器中记录了故障、且所述目标故障信息中包含了预设字段的情况下,确定所述目标故障信息的故障类型为可恢复故障。
14.根据权利要求11所述的方法,其特征在于,所述目标故障信息为PCIe设备出现故障时生成的故障信息;
所述基板管理控制器BMC在接收到所述基本输入输出系统BIOS发送的所述目标故障信息的情况下,对所述目标故障信息进行解析,判断所述目标故障信息的故障类型,包括:
所述基板管理控制器BMC对所述目标故障信息进行解析,在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障。
15.根据权利要求14所述的方法,其特征在于,所述在所述目标故障信息包含的字段满足第二预设规则的情况下,确定所述目标故障信息的故障类型为可恢复故障,包括:
所述基板管理控制器BMC在所述UNCERRSTS寄存器中记录了不可修复故障、且所述DEVSTS寄存器中记录了非致命故障的情况下,确定所述目标故障信息的故障类型为可恢复故障。
16.根据权利要求10所述的方法,其特征在于,所述系统还包括:平台路径控制器PCH;
所述基板管理控制器BMC控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,并接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据,包括:
所述基板管理控制器BMC控制所述虚拟外接设备按照所述预设发送周期向所述平台路径控制器PCH发送所述目标心跳请求,并接收所述平台路径控制器PCH基于所述目标心跳请求反馈的响应数据。
17.根据权利要求10或16所述的方法,其特征在于,所述目标心跳请求为使用bmRequest字段构建的HID_GET_REPORT请求;
所述基板管理控制器BMC控制虚拟外接设备按照预设发送周期向所述服务器操作系统发送目标心跳请求,包括:
所述基板管理控制器BMC执行初始化操作,并在初始化操作完成后,创建宕机状态探测任务进程;所述初始化操作包括:初始化相关库函数,配置系统时钟;
所述基板管理控制器BMC执行所述宕机状态探测任务进程,调用USBD_LL_SetupStage函数处理所述虚拟外接设备的SETUP阶段,调用USBD_LL_DataInStage函数处理所述虚拟外接设备的IN阶段,调用USBD_LL_DataOutStage函数处理所述虚拟外接设备的OUT阶段;
所述基板管理控制器BMC在确定所述虚拟外接设备配置成功的情况下,构建HID_GET_REPORT请求的相关参数;
所述基板管理控制器BMC在完成所述HID_GET_REPORT请求的构造之后,调用usb_control_msg函数发送所述HID_GET_REPORT请求;
所述基板管理控制器BMC在外设中断处理函数中调用USBD_HID_GetReport函数接收所述服务器操作系统基于所述目标心跳请求反馈的响应数据。
18.根据权利要求10所述的方法,其特征在于,所述基板管理控制器BMC根据所述目标故障信息确定所述服务器中的故障部件,包括:
所述基板管理控制器BMC在确定所述服务器操作系统宕机的情况下,对所述目标故障信息进行分析,确定故障部件,并将本次宕机事件以及所述故障部件记录到系统环境日志SEL中,以提示用户诊断出的故障部件。
19.一种服务器,其特征在于,其上设置有如权利要求1至9中任一项所述的可恢复故障的固件检测系统。
20.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求10至18中任一项所述可恢复故障的固件检测方法的步骤。
CN202311709048.5A 2023-12-13 2023-12-13 可恢复故障的固件检测系统、方法、存储介质及服务器 Active CN117389790B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311709048.5A CN117389790B (zh) 2023-12-13 2023-12-13 可恢复故障的固件检测系统、方法、存储介质及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311709048.5A CN117389790B (zh) 2023-12-13 2023-12-13 可恢复故障的固件检测系统、方法、存储介质及服务器

Publications (2)

Publication Number Publication Date
CN117389790A CN117389790A (zh) 2024-01-12
CN117389790B true CN117389790B (zh) 2024-02-23

Family

ID=89439630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311709048.5A Active CN117389790B (zh) 2023-12-13 2023-12-13 可恢复故障的固件检测系统、方法、存储介质及服务器

Country Status (1)

Country Link
CN (1) CN117389790B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120272091A1 (en) * 2011-04-25 2012-10-25 Hitachi, Ltd. Partial fault processing method in computer system
US20140059389A1 (en) * 2012-08-24 2014-02-27 Hitachi, Ltd. Computer and memory inspection method
CN112463492A (zh) * 2020-12-04 2021-03-09 苏州浪潮智能科技有限公司 一种内存可纠正错误处理方法、系统、设备以及介质
CN115033409A (zh) * 2022-05-19 2022-09-09 苏州浪潮智能科技有限公司 一种内存可修复错误上报方法、装置、设备及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120272091A1 (en) * 2011-04-25 2012-10-25 Hitachi, Ltd. Partial fault processing method in computer system
US20140059389A1 (en) * 2012-08-24 2014-02-27 Hitachi, Ltd. Computer and memory inspection method
CN112463492A (zh) * 2020-12-04 2021-03-09 苏州浪潮智能科技有限公司 一种内存可纠正错误处理方法、系统、设备以及介质
CN115033409A (zh) * 2022-05-19 2022-09-09 苏州浪潮智能科技有限公司 一种内存可修复错误上报方法、装置、设备及介质

Also Published As

Publication number Publication date
CN117389790A (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
JP6333410B2 (ja) 障害処理方法、関連装置、およびコンピュータ
US8839032B2 (en) Managing errors in a data processing system
US8713350B2 (en) Handling errors in a data processing system
CN109783262B (zh) 故障数据处理方法、装置、服务器及计算机可读存储介质
CN101126995B (zh) 处理严重硬件错误的方法及设备
TWI446161B (zh) 處理一多處理器資訊處理系統之一故障處理器的裝置及方法
US20070234123A1 (en) Method for detecting switching failure
CN111414268B (zh) 故障处理方法、装置及服务器
CN112015599B (zh) 错误恢复的方法和装置
US20080140895A1 (en) Systems and Arrangements for Interrupt Management in a Processing Environment
CN111324192A (zh) 一种系统板卡电源检测方法、装置、设备及存储介质
US20140122421A1 (en) Information processing apparatus, information processing method and computer-readable storage medium
WO2020096865A1 (en) System for configurable error handling
US8421614B2 (en) Reliable redundant data communication through alternating current power distribution system
CN110781053A (zh) 一种检测内存降级错误的方法和装置
US20080288828A1 (en) structures for interrupt management in a processing environment
US10416913B2 (en) Information processing device that monitors operation of storage utilizing specific device being connected to storage
CN110704228A (zh) 一种固态硬盘异常处理方法及系统
CN117389790B (zh) 可恢复故障的固件检测系统、方法、存储介质及服务器
US10664339B2 (en) Information processing apparatus, information processing system, and information processing apparatus control method
CN112988442B (zh) 一种服务器运行阶段传送故障信息的方法和设备
CN114003416B (zh) 内存错误动态处理方法、系统、终端及存储介质
CN113342593B (zh) 用以进行全快闪存储器阵列伺服器的高可用性管理的方法与设备
US7415632B1 (en) Detection and repair of corrupted critical data structures without operational interruption
US9639438B2 (en) Methods and systems of managing an interconnection

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