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

一种主机状态确认方法、装置、设备及存储介质

文献发布时间:2024-04-18 20:01:55


一种主机状态确认方法、装置、设备及存储介质

技术领域

本申请实施例涉及计算机技术领域,具体而言,涉及一种主机状态确认方法、装置、设备及存储介质。

背景技术

在操作系统底层引导程序启动的过程中,需要通知BMC(基板控制管理器)host当前处于什么运行状态,BMC根据host所处的状态确定后续两者信息交互的逻辑。相关技术中,host通过预先定制的协议向BMC发送消息,BMC获取到消息之后,根据消息内容,判断host所处的运行状态。

相关技术中,通过预先定制的协议进行交互的方式需要依赖与协议栈的正常运行,若协议栈任何一个环节出现问题,BMC就无法正常获取到host的状态,进而无法进行正常的逻辑交互,另外通过协议栈发送消息,会增加协议栈传输数据的压力,增加整个系统的功耗。

发明内容

本申请实施例提供一种主机状态确认方法、装置、设备及存储介质,旨在实现BMC快速确认host状态。

本申请实施例第一方面提供一种主机状态确认方法,所述方法包括:

在主机进入快速重启阶段的情况下,host将使能位寄存器的有效位的值设置为第一预设值;

在所述使能位寄存器的有效位的值设置为第一预设值的情况下,所述host根据当前运行状态,对数据位寄存器的有效位的值进行设置;

BMC获取所述使能位寄存器的值;

在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值;

根据所述数据位寄存器的有效位的值,确定所述host当前所处的运行状态。

可选地,在host将使能位寄存器的有效位的值设置为第一预设值之前,所述方法还包括:

所述host向所述主机发出快速重启请求;

所述主机根据所述快速重启请求,进入快速重启阶段。

可选地,所述host将使能位寄存器的有效位的值设置为第一预设值,包括:

获取所述使能位寄存器中的原始值;

在所述使能位寄存器中的原始值中,将所述使能位寄存器的有效位的修改为所述第一预设值;

将修改后的所述使能位寄存器中的值写入所述使能位寄存器。

可选地,所述host根据当前运行状态,对数据位寄存器的有效位的值进行设置,包括:

从所述数据位寄存器中,获取所述数据位寄存器的原始值;

根据当前运行状态,对所述数据位寄存器的有效位的值进行修改;

将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

可选地,所述根据当前运行状态,对所述数据位寄存器的有效位的值进行修改,包括:

在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值;

在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

可选地,所述根据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态,包括:

在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态;

在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

可选地,所述方法还包括:

在所述host运行至petiboot阶段的情况下,所述host通过预先获取的数值修改工具,将所述使能位寄存器的有效位的值设置为所述第一预设值,所述数值修改工具包括数值获取工具与数值存储工具;

在所述使能位寄存器的有效位的值设置为所述第一预设值的情况下,所述host通过所述数值修改工具,将所述数据位寄存器的有效位的值修改为当前运行状态对应的值;

所述BMC获取所述使能位寄存器的值;

在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值;

根据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态。

可选地,在所述host通过预先获取的数值修改工具,将所述使能位寄存器的有效位的值设置为所述第一预设值之前,所述方法还包括:

在所述host进入镜像编译阶段的情况下,获取所述数值修改工具;

将所述数值修改工具写入所述主机的镜像文件中;

对所述镜像文件进行刷新;

响应于所述镜像文件刷新完毕,进入开机启动阶段。

可选地,所述获取所述数值修改工具,包括:

读取skiboot源代码;

从所述skiboot源代码中获取所述数值修改工具对应的源代码,所述数值修改工具对应的源代码包括所述数值获取工具对应的源代码与所述数值存储工具对应的源代码;

对所述数值修改工具对应的源代码进行编译,得到所述数值修改工具。

可选地,所述host通过预先获取的数值修改工具,将所述使能位寄存器的有效位的值设置为所述第一预设值,包括:

通过所述数值获取工具,获取所述使能位寄存器的原始值;

将所述使能位寄存器的有效位的值修改为所述第一预设值;

通过所述数值存储工具,将修改后的所述使能位寄存器的值写入所述使能位寄存器。

可选地,所述host通过所述数值修改工具,将所述数据位寄存器的有效位的值修改为当前运行状态对应的值,包括:

通过所述数值获取工具,从所述数据位寄存器中获取所述数据位寄存器的原始值;

根据当前运行状态,对所述数据位寄存器的有效位的值进行修改;

通过所述数值存储工具,将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

可选地,所述根据当前运行状态,对所述数据位寄存器的有效位的值进行修改,包括:

在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值;

在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

可选地,所述host根据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态,包括:

在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态;

在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

本申请实施例第二方面提供一种主机状态确认装置,所述装置包括:

第一数值修改模块,用于在主机进入快速重启阶段的情况下,host将使能位寄存器的有效位的值设置为第一预设值;

第二数值修改模块,用于在所述使能位寄存器的有效位的值设置为第一预设值的情况下,所述host根据当前运行状态,对数据位寄存器的有效位的值进行设置;

第一数值获取模块,用于BMC获取所述使能位寄存器的值;

第二数值获取模块,用于在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值;

第一状态确认模块,用于根据所述数据位寄存器的有效位的值,确定所述host当前所处的运行状态。

可选地,所述装置还包括:

重启请求发送模块,用于所述host向所述主机发出快速重启请求;

快速重启模块,用于所述主机根据所述快速重启请求,进入快速重启阶段。

可选地,所述第一数值修改模块包括:

第一原始值获取子模块,用于获取所述使能位寄存器中的原始值;

第一数值修改子模块,用于在所述使能位寄存器中的原始值中,将所述使能位寄存器的有效位的修改为所述第一预设值;

第一数值写入子模块,用于将修改后的所述使能位寄存器中的值写入所述使能位寄存器。

可选地,所述第二数值修改模块包括:

第二原始值获取子模块,用于从所述数据位寄存器中,获取所述数据位寄存器的原始值;

第二数值修改子模块,用于根据当前运行状态,对所述数据位寄存器的有效位的值进行修改;

第二数值写入子模块,用于将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

可选地,所述第二数值修改子模块包括:

第三数值修改子模块,用于在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值;

第四数值修改子模块,用于在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

可选地,所述第一状态确认模块包括:

第一状态确认子模块,用于在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态;

第二状态确认子模块,用于在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

可选地,所述装置还包括:

第三数值修改模块,用于在所述host运行至petiboot阶段的情况下,所述host通过预先获取的数值修改工具,将所述使能位寄存器的有效位的值设置为所述第一预设值,所述数值修改工具包括数值获取工具与数值存储工具;

第四数值修改模块,用于在所述使能位寄存器的有效位的值设置为所述第一预设值的情况下,所述host通过所述数值修改工具,将所述数据位寄存器的有效位的值修改为当前运行状态对应的值;

第三数值获取模块,用于所述BMC获取所述使能位寄存器的值;

第四数值获取模块,用于在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值;

第二状态确认模块,用于根据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态。

可选地,所述装置还包括:

数值修改工具获取模块,用于在所述host进入镜像编译阶段的情况下,获取所述数值修改工具;

工具写入模块,用于将所述数值修改工具写入所述主机的镜像文件中;

文件刷新模块,用于对所述镜像文件进行刷新;

开机启动模块,用于响应于所述镜像文件刷新完毕,进入开机启动阶段。

可选地,所述数值修改工具获取模块包括:

代码读取子模块,用于读取skiboot源代码;

工具代码获取子模块,用于从所述skiboot源代码中获取所述数值修改工具对应的源代码,所述数值修改工具对应的源代码包括所述数值获取工具对应的源代码与所述数值存储工具对应的源代码;

代码编译子模块,用于对所述数值修改工具对应的源代码进行编译,得到所述数值修改工具。

可选地,所述第三数值修改模块包括:

第三原始值获取子模块,用于通过所述数值获取工具,获取所述使能位寄存器的原始值;

第五数值修改子模块,用于将所述使能位寄存器的有效位的值修改为所述第一预设值;

第三数值写入子模块,用于通过所述数值存储工具,将修改后的所述使能位寄存器的值写入所述使能位寄存器。

可选地,所述第四数值修改模块包括:

第四原始值获取子模块,用于通过所述数值获取工具,从所述数据位寄存器中获取所述数据位寄存器的原始值;

第六数值修改子模块,用于根据当前运行状态,对所述数据位寄存器的有效位的值进行修改;

第四数值写入子模块,用于通过所述数值存储工具,将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

可选地,所述第五数值修改模块包括:

第七数值修改子模块,用于在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值;

第八数值修改子模块,用于在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

可选地,所述第二状态确认模块包括:

第三状态确认子模块,用于在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态;

第四状态确认子模块,用于在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

本申请实施例第三方面提供一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请第一方面所述的方法中的步骤。

本申请实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本申请第一方面所述的方法的步骤。

采用本申请提供的主机状态确认方法,在主机进入快速重启阶段的情况下,host将使能位寄存器的有效位的值设置为第一预设值;在所述使能位寄存器的有效位的值设置为第一预设值的情况下,所述host根据当前运行状态,对数据位寄存器的有效位的值进行设置;BMC获取所述使能位寄存器的值;在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值;根据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态。本方法中,在主机进入快速重启阶段的情况下,host首先将使能位寄存器的有效位的值设置为第一预设值,再根据主机当前的运行状态,对数据位寄存器的有效位的值进行修改,BMC首先获取使能位寄存器的值,在使能位寄存器的有效位的值为第一预设值的情况下,获取数据位寄存器的值,根据数据位寄存器的有效位的值,确定主机当前的运行状态,BMC只需要根据数据位寄存器的有效位的值,就可以确定主机的状态,这种方式十分方便快捷,不需要依赖任何协议,提升了主机的运行效率,提升了BMC的运行速度。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一实施例提出的主机状态确认方法的流程图;

图2是本申请一实施例提出的快速重启阶段状态确认流程图;

图3是相关技术中的快速重启阶段状态确认流程图;

图4是本申请一实施例提出的petiboot阶段状态确认流程图;

图5是相关技术中petiboot阶段主机状态确认方法的流程图;

图6是本申请一实施例提出的主机状态确认装置的示意图;

图7是本申请一实施例提出的主机状态确认设备的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

首先,对本申请实施例中出现的名词做出如下解释:

host:操作系统底层的引导程序(系统固件)主要包括SBE、Hostboot、skiboot等部分。

skiboot:host的一部分,是整个引导程序很重要的一个阶段。

hostboot:host的一部分,是整个引导程序很重要的一个阶段。

BMC:(Baseboard Management Controller,基板管理控制器),监视和控制系统硬件。比如通过监视系统的温度,电压,风扇、电源等等,并做相应的调节工作,以保证系统处于健康的状态。系统出现故障,对系统进行复位,负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。

PLDM:(Platfrom Level Data Model),一种应用层的数据传输协议。

IPMI:(Intelligent Platform Management Interface)一个完整地包括服务器和其他系统(如存储设备、网络和通信设备)的硬件管理规范。

MCTP:(Management Component Transport Protocol,管理组件传输协议)是一种独立于物理介质的协议,用于计算机系统中各部件之间的信息交互。此协议独立于底层物理总线,是一种独立于总线的“数据链路层”协议。MCTP协议由DMTF PMCI(DistributedManagement Task Force Platform Management Component Intercommunications,分布式管理任务和平台管理组件互联组)工作组定义,该协议为平台管理子系统的监控&管理功能提供访问接口,进而可通过DMTF CIM(Common Information Model,数据模型)实现对平台可管理功能的访问、传输和配置。

GPIO:General-purpose input/output,通用型之输入输出的简称。

Post finish:表示host的运行状态,完成post finish表示host已经完成了开机的过程,未完成post finish,表示host还没有完成开机。

参考图1,图1是本申请一实施例提出的主机状态确认方法的流程图。如图1所示,该方法包括以下步骤:

S11:在主机进入快速重启阶段的情况下,host将使能位寄存器的有效位的值设置为第一预设值。

本实施例中,快速重启阶段是计算机在运行时对系统进行重启的阶段,不需要将整个计算机掉电重启,只重启计算机的底层操作系统。host是操作系统底层的引导程序(系统固件)。使能位寄存器存储使能位数据的寄存器,使能位寄存器中有多个引脚,每个引脚对应数值中的一位。

本实施例中,如图2所示,图2是本申请一实施例提出的快速重启阶段状态确认流程图,在主机进入快速重启阶段的情况下,host获取使能位寄存器的值,将使能位寄存器的有效位的值设置为第一预设值,就是将使能位寄存器中对应的引脚设置为高电平。

示例地,第一预设值为1。

本实施例中,述host将使能位寄存器的有效位的值设置为第一预设值,包括:

S11-1:获取所述使能位寄存器中的原始值。

本实施例中,如图2所示,host首先获取使能位寄存器中的原始值,host读取使能位寄存器中的数据,获取到使能位寄存器中的原始值。

S11-2:在所述使能位寄存器中的原始值中,将所述使能位寄存器的有效位的修改为所述第一预设值。

本实施例中,host在使能位寄存器的原始值中,将使能位寄存器的有效位的值修改为第一预设值,就是将使能位寄存器的对应的引脚拉起为高电平。

S11-3:将修改后的所述使能位寄存器中的值写入所述使能位寄存器。

本实施例中,host将修改后的使能位寄存器中的值写入使能位寄存器中。完成对使能位寄存器的有效位的值的修改。

S12:在所述使能位寄存器的有效位的值设置为第一预设值的情况下,所述host根据当前运行状态,对数据位寄存器的有效位的值进行设置。

本实施例中,数据位寄存器的有效位的值表征了host当前所处的运行状态。

本实施例中,预先约定好了数据为寄存器中的有效位的值所对应的host的运行状态,对数据位寄存器的有效位的值进行设置,预先约定,当host的运行状态为开机状态时,数据位寄存器的有效位的值为第一预设值,当host的运行状态为开机完成状态时,数据寄存器的有效位的值为第二预设值。

本实施例中,所述host根据当前运行状态,对数据位寄存器的有效位的值进行设置的具体步骤包括:

S12-1:从所述数据位寄存器中,获取所述数据位寄存器的原始值。

本实施例中,在使能位寄存器的有效位的值设置为第一预设值的情况下,从数据位寄存器中,获取数据位寄存器的原始值,数据位寄存器中原本存储的值就是数据位寄存器的原始值,数据位寄存器的原始值的每一位都没有修改过。

S12-2:根据当前运行状态,对所述数据位寄存器的有效位的值进行修改。

本实施例中,host根据当前的运行状态,对数据位寄存器的有效位的值进行修改,具体步骤为:

S12-2-1:在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值。

本实施例中,在host处于开机状态(unpost -finish)时,将数据位寄存器的有效位的值修改为第一预设值。对数据为寄存器的有效位的值进行修改时,从数据位寄存器中提取出的值中确定对应的有效位,该有效位表征了当前host的状态,将该有效位的值修改为第一预设值。

S12-2-2:在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

本实施例中,当host处于开机完成状态(post-finish)时,将数据位寄存器的有效位的值修改为第二预设值。对数据位寄存器的有效位的值进行修改时,从数据位寄存器中提取出的值中确定对应的有效位,该有效位表征了当前host的状态,将该有效位的值修改为第二预设值。

示例地,第二预设值为0。

S12-3:将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

本实施例中,host在对获取的数据位寄存器的值进行修改之后,将修改后的数据位寄存器的值写入数据位寄存器中。

S13:BMC获取所述使能位寄存器的值。

本实施例中,BMC(Baseboard Management Controller,基板管理控制器)是主机上连接的一个设备,可以对主机的各个状态进行管理,可以与host进行交互。

本实施例中,BMC需要获取到hsot的当前状态,进而决定后续执行的步骤。在BMC需要确定host的当前状态时,对读取使能位寄存器进行读取,获取使能位寄存器的值。

S14:在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值。

本实施例中,如图2所示,BMC在使能位寄存器的有效位的值为第一预设值的情况下,获取数据位寄存器的有效位的值。若是使能位寄存器的有效位的值不是第一预设值,则不获取数据位寄存器的值。

S15:根据所述数据位寄存器的有效位的值,确定所述host当前所处的运行状态。

本实施例中,BMC根据数据位寄存器的有效位的值,确定host当前所处的运行状态。

本实施例中,根据所述数据位寄存器的有效位的值,确定所述host当前所处的运行状态的具体步骤包括:

S15-1:在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态。

本实施例中,BMC读取数据位寄存器的值,根据预先约定的有效位,确定该有效位的值,当读取到数据位寄存器的有效位的值为第一预设值的情况下,确定host的状态为开机状态。

S15-2:在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

本实施例中,BMC读取数据位寄存器的值,当读取到数据位寄存器的有效值为第二预设值时,确定host的状态为开机完成状态。

参考图3,图3是相关技术中的快速重启阶段状态确认流程图,如图3所示,在相关技术中,快速重启阶段中,host状态的确认是基于PLDM协议实现,当机器请求快速启动时,host通过PLMD协议和MCTP协议相结合的方式,向BMC发送PLDM消息,BMC接收到PLMD消息后,获取到host当前的状态为unpost-finish(开机状态),对于power架构的机器来说,主要是通过PLMD、MCTP、IPMI协议向BMC发送消息,这种方式依赖于PLMD、MCTP以及IPMI协议,在协议栈出现问题时,无法保证BMC确认host的状态。

本实施例中,host与BMC预先约定了以电平的高低来表征host在主机快速启动时的状态,host根据自身的状态,对使能位寄存器以及数据位位寄存器的有效位的值进行设置,BMC在需要确定host的状态时,读取使能位寄存器的值以及数据位寄存器的值,根据数据位寄存器的值,确定host当前的状态,不需要依赖任何协议来进行数据传输,只需要通过电平的高低来确认host的状态,实现了BMC快速简单的确认host的状态,提升了系统整体的运行速率和系统的稳定性。

在本申请的另一个实施例中,在host将使能位寄存器的有效位的值设置为第一预设值之前,所述方法还包括:

S21:所述host向所述主机发出快速重启请求。

本实施例中,快速重启请求用于请求主机进行快速重启。

本实施例中,在主机运行时,host在需要进行快速重启时,向主机发出快速重启请求。

本实施例中,外部可以随时在host中进行设置,设置主机进行快速重启,当host检测到该设置时,向主机发出快速重启请求。

S22:所述主机根据所述快速重启请求,进入快速重启阶段。

本实施例中,主机在接收到快速重启请求之后,进入快速重启阶段。

本实施例中,在快速重启阶段中,主机不掉电,对操作系统进行重启,重新加载操作系统。

在本申请的另一个实施例中,所述方法还包括:

S31:在所述host运行至petiboot阶段的情况下,所述host通过预先获取的数值修改工具,将所述使能位寄存器的有效位的值设置为所述第一预设值,所述数值修改工具包括数值获取工具与数值存储工具。

本实施例中,petiboot(引导镜像运行阶段)是host在开机启动时要经历的一个阶段,在该阶段中,BMC需要确认host的运行状态,进而决定后续与host进行的数据交互。数据修改工具包括了数据获取工具以及数值存储工具,数值获取工具用于获取使能位寄存器中的值以及数据位寄存器中的值,数值存储工具由于将修改后的值存储至寄存器中,在petiboot阶段,因为系统已经稳定运行,故此无法直接通过代码实现数值的获取和修改,因此需要数值修改工具对数值进行修改。

本实施例中,在host运行至petiboot的情况下,host通过预先获取的数值修改工具,将使能位寄存器的有效位的值设置为第一预设值,具体的步骤包括:

S31-1:通过所述数值获取工具,获取所述使能位寄存器的原始值。

本实施例中,如图4所示,图4是本申请一实施例提出的petiboot阶段状态确认流程图。在host运行至petiboot阶段时,依次进入hostboot、skiboot、petiboot阶段,在进入petiboot阶段时,通过预设的数值获取工具(getscom)获取使能位寄存器的原始值。

S31-2:将所述使能位寄存器的有效位的值修改为所述第一预设值。

本实施例中,在获取到使能位寄存器的值之后,将使能位寄存器的有效位的值修改为第一预设值。

S31-3:通过所述数值存储工具,将修改后的所述使能位寄存器的值写入所述使能位寄存器。

本实施例中,如图4所示,在将使能位寄存器的值修改之后,通过数值存储工具(putscom),将修改后的使能位寄存器的值写入使能位寄存器中。

S32:在所述使能位寄存器的有效位的值设置为所述第一预设值的情况下,所述host通过所述数值修改工具,将所述数据位寄存器的有效位的值修改为当前运行状态对应的值。

本实施例中,如图4所示,在使能位寄存器的有效位的值设置为第一预设值的情况下,host通过数据修改工具,将数据位寄存器的有效位的值修改为当前运行状态对应的值,具体的步骤包括:

S32-1:通过所述数值获取工具,从所述数据位寄存器中获取所述数据位寄存器的原始值。

本实施例中,通过数值获取工具,从数据位寄存器中获取数据位寄存器的原始值。

S32-2:根据当前运行状态,对所述数据位寄存器的有效位的值进行修改。

本实施例中,host根据当前运行状态,对数据位寄存器的有效位的值进行修改,具体的步骤包括:

S32-2-1:在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值。

本实施例中,在host处于开机状态时,将数据位寄存器的有效位的值修改为第一预设值,将对应的引脚设置为高电平。

S32-2-2:在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

本实施例中,在host处于开机完成状态时,将数据位寄存器的有效位的值修改为第二预设值,将对应的引脚设置为低电平。

本实施例中,因为BMC对于开机完成状态的功能是低电平有效,在主机运行到petiboot阶段时,host需要向BMC发送当前host处于开机完成状态,即postfinish阶段,因此,在图4中把数据位寄存器中的数值的有效位置0,即第二预设值,通过BMC,host当前状态为开机完成状态。

S32-3:通过所述数值存储工具,将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

本实施例中,在对数据位寄存器的值进行修改之后,使用数值存储工具,将修改后的数据位寄存器的值写入数据位寄存器中。

S33:所述BMC获取所述使能位寄存器的值。

本实施例中,如图4所示,BMC首先获取使能位寄存器的值,根据使能位寄存器的值,就可以确定使能位寄存器对应引脚的电平。

S34:在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值。

本实施例中,BMC在使能位寄存器的有效位的值为第一预设值的情况下,也是使能位寄存器的引脚为高电平的情况下,获取数据位寄存器的值。

S35:根据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态。

本实施例中,在BMC获取到数据位寄存器的值之后,确定数据位寄存器的有效位的值,根据数据位寄存器的有效位的值,确定主机当前所处的运行状态。

本实施例中,据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态的具体步骤包括:

S35-1:在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态。

本实施例中,如图4所示,根据预先约定的规则,BMC在数据位寄存器的有效位的值为第一预设值的情况下,确定host的状态为开机状态。

S35-2:在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

本实施例中,如图4所示,根据预先约定的规则,BMC在数据位寄存器的有效位的值为第二预设值的情况下,确定host的状态为开机完成状态。

本实施例中,BMC在确定host的状态为开机完成状态之后,开始与host进行后续的数据交互。

在本申请的另一个实施例中,在所述host通过预先获取的数值修改工具,将所述使能位寄存器的有效位的值设置为所述第一预设值之前,所述方法还包括:

S41:在所述host进入镜像编译阶段的情况下,获取所述数值修改工具.

S41-1:读取skiboot源代码。

本实施例中,skiboot源代码是host中的一部分,其中存储有数据修改工具对应的源代码。

本实施例中,如图4所示,在host引导镜像编译阶段,首先读取skiboot源代码。

S41-2:从所述skiboot源代码中获取所述数值修改工具对应的源代码,所述数值修改工具对应的源代码包括所述数值获取工具对应的源代码与所述数值存储工具对应的源代码。

本实施例中,在读取了skiboot源代码后,从中获取数值修改工具对应的源代码,数值修改工具对应的源代码包括数据获取工具对应的源代码和数据存储工具对应的源代码。

S41-3:对所述数值修改工具对应的源代码进行编译,得到所述数值修改工具。

本实施例中,在获取到数值修改工具对应的源代码后,对数据修改工具对应的源代码进行编译,得到对应的数值修改工具。

S42:将所述数值修改工具写入所述主机的镜像文件中。

本实施例中,如图4所示,在获取到数值修改工具(getscom和pputscom)后,将其放入petiboot中,即写入主机的镜像文件中。

S43:对所述镜像文件进行刷新。

本实施例中,如图4所示,在将数值修改工具写入镜像文件中后,对镜像文件进行刷新,使得数值修改工具可以正常运行在host中。

S44:响应于所述镜像文件刷新完毕,进入开机启动阶段。

本实施例中,在镜像文件刷新完毕,即getcom工具和putscom工具可以正常运行时,host进入引镜像运行阶段,即开机启动阶段。

参考图5,图5是相关技术中petiboot阶段主机状态确认方法的流程图,如图5所示,在开始运行之后,host首先进入hostboot阶段,再进入skiboot阶段,再进入petiboot阶段,当host运行到petiboot阶段时,host通过IPMI协议,向BMC发送IPMI消息,以通知BMC,host处于unpost-finish(开机状态),BMC接收IPMI消息,BMC获取到IPMI消息后,根据host的运行状态决定其他事项的交互逻辑。这种方式依赖于IPMI协议,在协议栈出现故障时,同样无法保证BMC确定host的状态,并且增加了整个系统的功耗。

本申请上述实施例中,基于GPIO上的引脚的高低电平表征host的状态,BMC只需要根据数据位寄存器的有效位的值就可以确定host当前的状态,实现方案不依赖任何协议,host和BMC的通信更加简单,能够使BMC稳定的获取host所处的运行状态,保证后续流程的正常交互,同时这种基于GPIO的交互方式功耗更低,也减少了通信协议栈的压力,增加了整个系统的稳定性。

基于同一发明构思,本申请一实施例提供一种主机状态确认装置。参考图6,图6是本申请一实施例提出的主机状态确认装置600的示意图。如图6所示,该装置包括:

第一数值修改模块601,用于在主机进入快速重启阶段的情况下,host将使能位寄存器的有效位的值设置为第一预设值;

第二数值修改模块602,用于在所述使能位寄存器的有效位的值设置为第一预设值的情况下,所述host根据当前运行状态,对数据位寄存器的有效位的值进行设置;

第一数值获取模块603,用于BMC获取所述使能位寄存器的值;

第二数值获取模块604,用于在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值;

第一状态确认模块605,用于根据所述数据位寄存器的有效位的值,确定所述host当前所处的运行状态。

可选地,所述装置还包括:

重启请求发送模块,用于所述host向所述主机发出快速重启请求;

快速重启模块,用于所述主机根据所述快速重启请求,进入快速重启阶段。

可选地,所述第一数值修改模块包括:

第一原始值获取子模块,用于获取所述使能位寄存器中的原始值;

第一数值修改子模块,用于在所述使能位寄存器中的原始值中,将所述使能位寄存器的有效位的修改为所述第一预设值;

第一数值写入子模块,用于将修改后的所述使能位寄存器中的值写入所述使能位寄存器。

可选地,所述第二数值修改模块包括:

第二原始值获取子模块,用于从所述数据位寄存器中,获取所述数据位寄存器的原始值;

第二数值修改子模块,用于根据当前运行状态,对所述数据位寄存器的有效位的值进行修改;

第二数值写入子模块,用于将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

可选地,所述第二数值修改子模块包括:

第三数值修改子模块,用于在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值;

第四数值修改子模块,用于在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

可选地,所述第一状态确认模块包括:

第一状态确认子模块,用于在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态;

第二状态确认子模块,用于在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

可选地,所述装置还包括:

第三数值修改模块,用于在所述host运行至petiboot阶段的情况下,所述host通过预先获取的数值修改工具,将所述使能位寄存器的有效位的值设置为所述第一预设值,所述数值修改工具包括数值获取工具与数值存储工具;

第四数值修改模块,用于在所述使能位寄存器的有效位的值设置为所述第一预设值的情况下,所述host通过所述数值修改工具,将所述数据位寄存器的有效位的值修改为当前运行状态对应的值;

第三数值获取模块,用于所述BMC获取所述使能位寄存器的值;

第四数值获取模块,用于在所述使能位寄存器的有效位的值为所述第一预设值的情况下,获取所述数据位寄存器的值;

第二状态确认模块,用于根据所述数据位寄存器的有效位的值,确定所述主机当前所处的运行状态。

可选地,所述装置还包括:

数值修改工具获取模块,用于在所述host进入镜像编译阶段的情况下,获取所述数值修改工具;

工具写入模块,用于将所述数值修改工具写入所述主机的镜像文件中;

文件刷新模块,用于对所述镜像文件进行刷新;

开机启动模块,用于响应于所述镜像文件刷新完毕,进入开机启动阶段。

可选地,所述数值修改工具获取模块包括:

代码读取子模块,用于读取skiboot源代码;

工具代码获取子模块,用于从所述skiboot源代码中获取所述数值修改工具对应的源代码,所述数值修改工具对应的源代码包括所述数值获取工具对应的源代码与所述数值存储工具对应的源代码;

代码编译子模块,用于对所述数值修改工具对应的源代码进行编译,得到所述数值修改工具。

可选地,所述第三数值修改模块包括:

第三原始值获取子模块,用于通过所述数值获取工具,获取所述使能位寄存器的原始值;

第五数值修改子模块,用于将所述使能位寄存器的有效位的值修改为所述第一预设值;

第三数值写入子模块,用于通过所述数值存储工具,将修改后的所述使能位寄存器的值写入所述使能位寄存器。

可选地,所述第四数值修改模块包括:

第四原始值获取子模块,用于通过所述数值获取工具,从所述数据位寄存器中获取所述数据位寄存器的原始值;

第六数值修改子模块,用于根据当前运行状态,对所述数据位寄存器的有效位的值进行修改;

第四数值写入子模块,用于通过所述数值存储工具,将修改后的所述数据位寄存器的值写入所述数据位寄存器中。

可选地,所述第五数值修改模块包括:

第七数值修改子模块,用于在所述host处于开机状态时,将所述数据位寄存器的有效位的值修改为所述第一预设值;

第八数值修改子模块,用于在所述host处于开机完成状态时,将所述数据位寄存器的有效位的值修改为第二预设值。

可选地,所述第二状态确认模块包括:

第三状态确认子模块,用于在所述数据位寄存器的有效位的值为所述第一预设值的情况下,确定所述host的状态为开机状态;

第四状态确认子模块,用于在所述数据位寄存器的有效位的值为第二预设值的情况下,确定所述host的状态为开机完成状态。

基于同一发明构思,本申请另一实施例提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的主机状态确认方法中的步骤。

基于同一发明构思,本申请另一实施例提供一种电子设备700,包括存储器702、处理器701及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的主机状态确认方法中的步骤。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本申请所提供的主机状态确认方法、装置、设备及存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 图像的颜色校正方法、拍摄设备、图像的颜色校正系统
  • 颜色处理程序、颜色处理方法、色彩感觉检查系统、输出系统、色觉校正图像处理系统及色觉模拟图像处理系统
技术分类

06120116566675