CN114168196A - 寄存器控制方法、系统、装置、计算机设备和存储介质 - Google Patents
寄存器控制方法、系统、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114168196A CN114168196A CN202111375350.2A CN202111375350A CN114168196A CN 114168196 A CN114168196 A CN 114168196A CN 202111375350 A CN202111375350 A CN 202111375350A CN 114168196 A CN114168196 A CN 114168196A
- Authority
- CN
- China
- Prior art keywords
- register
- target
- bmc
- bios
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
Abstract
本申请涉及一种寄存器控制方法、系统、装置、计算机设备和存储介质。该方法包括:BMC接收寄存器的操作指令,其中,寄存器操作指令中携带目标寄存器的标识,在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM,在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。在本方案中,BMC通过控制引脚电平来触发服务器进入系统管理模式SMM,从而在SMM模式下,实现对普通寄存器和/或MCA寄存器的直接修改,对所有寄存器的控制比较灵活,且,不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种寄存器控制方法、系统、装置、计算机设备和存储介质。
背景技术
在服务器硬件中有大量的寄存器,按照类型大致分为CPU内部寄存器和外设寄存器,这些寄存器用于控制硬件的行为。CPU内部寄存器存放在CPU内部,可以分为机器错误检查架构(Machine Check Architecture,MCA)寄存器和CPU其他寄存器。服务器默认开启支持平台优先错误处理(Platform First Error Handling,PFEH)功能,在这个功能下,MCA寄存器只能由基本输入输入系统(Basic Input Output System,BIOS)在系统管理模式(System Management Mode,SMM)模式下访问,而SMM对于操作系统不可见,因此在SMM模式下,操作系统(Operating System,OS)无法访问MCA寄存器。而CPU其他寄存器和外设寄存器不需要进入SMM模式也能访问,所以BIOS和OS都可以访问。
上述MCA寄存器的访问限制,以及MCA寄存器与CPU其他寄存器、外设寄存器的访问权限不一致的情况,在进行寄存器修改的场景下,会造成很多问题。例如,若想要修改MCA寄存器,则需要在服务器开机过程中,BIOS主动触发系统管理中断(System ManagementInterrupt,SMI)来进入SMM模式,实现对MCA寄存器的修改,若服务器开机完成,进入OS之后,则无法对MCA寄存器进行修改;或者,又如,若想要修改外设寄存器或CPU其他寄存器,则需要等待服务器完全开机进入OS之后,才可以通过OS中对应的工具对其进行修改。
现有技术中的不同寄存器的访问机制,造成了服务器对不同寄存器访问不够灵活方便,从而影响了服务器对寄存器的修改、控制的效率。
发明内容
基于此,有必要针对上述技术问题,提供一种灵活访问不同类型的寄存器的寄存器控制方法、系统、装置、计算机设备和存储介质。
第一方面,提供一种寄存器控制方法,该方法包括:
BMC接收寄存器的操作指令;寄存器操作指令中携带目标寄存器的标识;
在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM;
在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。
在本实施例中,BMC通过控制引脚电平来触发服务器进入系统管理模式SMM,从而在SMM模式下,可以实现对无论是对普通寄存器还是MCA寄存器的直接修改,使得对所有寄存器的控制比较灵活,且,对寄存器的控制不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
在其中一个可选的实施例中,在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM,包括:
BMC将与CPU连接的目标引脚的电平设置为预设电平以开启SMM;目标引脚与BMC的引脚连接。
在本实施例中,通过将BMC的指定引脚与CPU的目标引脚连接,使得BMC可以控制CPU的目标引脚的电平状态,由于BIOS可以预先设置好CPU的目标引脚通过电平状态来触发开启SMM,因此,可以实现BMC通过控制CPU的目标引脚的电平状态来开启SMM,从而在SMM模式下实现对所以寄存器的访问,使得对寄存器的访问更加灵活。
在其中一个可选的实施例中,若修改指令包括目标寄存器的目标值,该方法还包括:
根据目标寄存器的标识和目标值,更新BMC中寄存器信息表中目标寄存器的当前值,得到更新后的寄存器信息表。
在本实施例中,BMC可以基于寄存器信息表实现寄存器信息的本地修改和读取,优化寄存器的控制操作。
在其中一个可选的实施例中,该方法还包括:
根据目标寄存器的标识,将BMC中寄存器标志表中目标寄存器的更新标志位设置为第一值,得到更新后的寄存器标志表;第一值用于表示寄存器处于可修改状态。
在本实施例中,基于寄存器标志表来表示寄存器是否可修改的状态,可以集中便捷地表示所有寄存器的当前状态,优化寄存器的控制过程,减少BIOS与BMC的交互资源。
在其中一个可选的实施例中,在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作,包括:
在处于SMM的情况下,BMC向BIOS发送寄存器修改指令;
响应于BIOS接收到寄存器修改指令之后发送的第一获取请求,向BIOS发送寄存器标志表,以使BIOS根据寄存器标志表确定目标寄存器;
响应于BIOS确定目标寄存器之后发送的第二获取请求,向BIOS发送目标寄存器的目标值,以使BIOS根据目标值对目标寄存器进行修改并得到目标寄存器的实际值;
接收BIOS返回的目标寄存器的实际值,并根据实际值,更新寄存器信息表中目标寄存器的当前值;
向BIOS返回完成寄存器修改响应。
在本实施例中,在进入SMM模式之后,BMC可以独立与操作系统OS与BIOS进行交互,实现通过BIOS对寄存器修改操作,使得对所有寄存器的访问更加灵活。
在其中一个可选的实施例中,该方法还包括:
响应于BIOS接收到完成寄存器修改响应所发送的寄存器标志复位请求,将寄存器标志表中所有的更新标志位设置为第二值,第二值表示寄存器处于不可修改状态。
在本实施例中,在BIOS对寄存器进行修改之后,及时将BMC中的寄存器标志表中更新标志位都复位,可以及时确定当前寄存器修改操作已完成,以释放相应的控制资源和存储空间。
在其中一个可选的实施例中,该方法还包括:
在操作指令为读取指令的情况下,根据读取指令中目标寄存器的标识,从寄存器信息表中获取目标寄存器对应的当前值;
将目标寄存器的当前值展示在用户界面。
在本实施例中,BMC可以基于寄存器信息表实现寄存器信息的本地修改和读取,优化寄存器的控制操作。
在其中一个可选的实施例中,该方法还包括:
接收BIOS发送的预设类型的寄存器的实际值;
根据各寄存器的实际值和各寄存器的标识,构建寄存器信息表。
在本实施例中,BMC可以根据BIOS发送的各个寄存器的实际值构建寄存器信息表,用于在进行本地信息修改时使用,提升了寄存器修改的便利性。
第二方面,提供一种寄存器控制方法,该方法包括:
BIOS接收BMC发送的寄存器修改指令;寄存器修改指令为BMC在接收到寄存器的操作指令之后,确定操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态开启系统管理模式SMM下发送的指令;
BIOS根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作。
在本实施例中,BMC通过控制引脚电平来触发服务器进入系统管理模式SMM,从而在SMM模式下,BMC可以与BIOS进行交互,从而实现对无论是对普通寄存器还是MCA寄存器的直接修改,使得对所有寄存器的控制比较灵活,且,对寄存器的控制不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
在其中一个可选的实施例中,在BIOS接收BMC发送的寄存器修改指令之后,该方法还包括:
若BIOS确定处于预设电平的引脚为CPU的目标引脚,则执行根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作的步骤。
在本实施例中,BIOS对处于预设电平的引脚进行二次验证,进一步确认是目标引脚处于预设电平状态,从而触发与BMC交互来实现寄存器修改的操作,提高了寄存器控制的准确性。
在其中一个可选的实施例中,BIOS根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作,包括:
响应于寄存器修改指令,BIOS向BMC发送获取寄存器标志表请求;
接收BMC响应于获取寄存器标志表请求所返回的寄存器标志表,并根据寄存器标志表确定目标寄存器;
向BMC发送的携带目标寄存器的标识的获取目标值请求;
接收BMC响应于获取目标值请求所返回的目标值,并根据预设的寄存器映射表对目标寄存器进行修改,得到目标寄存器修改后的实际值;预设的寄存器映射表为根据寄存器的实际值、预设的寄存器的访问地址、预设的寄存器的访问方式构建的。
在本实施例中,在进入SMM模式之后,BMC可以独立与操作系统OS与BIOS进行交互,实现通过BIOS对寄存器修改操作,使得对所有寄存器的访问更加灵活。
在其中一个可选的实施例中,该方法还包括:
获取目标寄存器的实际值,并将实际值发送至BMC。
在本实施例中,BIOS可以在多种场景下读取寄存器的实际值发送给BMC,BMC可以根据获取到的寄存器的实际值更新本地存储空间中的寄存器的值,优化了BMC的寄存器的控制流程,使得对寄存器的访问更加灵活。
在其中一个可选的实施例中,根据寄存器标志表确定目标寄存器,包括:
遍历寄存器标志表,确定寄存器标志表中更新标志位为第一值的寄存器为目标寄存器;第一值表示寄存器处于可修改状态。
在本实施例中,BIOS通过遍历寄存器标志表确定目标寄存器,可以快速确定需要修改的寄存器的数量和编号,从而基于确定的目标寄存器获取其对应的目标值,可以实现快速对寄存器的访问修改。
在其中一个可选的实施例中,该方法还包括:
接收BMC在根据实际值对寄存器信息表修改之后发送的完成寄存器修改响应;
向BMC发送寄存器标志复位请求,以使BMC将BMC中的寄存器标志表中所有的更新标志位设置为第二值;第二值表示寄存器处于不可修改状态。
在本实施例中,在BIOS对寄存器进行修改之后,及时将BMC中的寄存器标志表中更新标志位都复位,可以及时确定当前寄存器修改操作已完成,以释放相应的控制资源和存储空间。
在其中一个可选的实施例中,该方法还包括:
在向BMC发送寄存器标志复位请求之后,退出SMM。
在本实施例中,在BIOS向BMCBMC发送寄存器标志复位请求之后,确定当前并无需要修改的寄存器时,及时退出SMM,可以释放相应的寄存器控制资源和计算资源。
在其中一个可选的实施例中,该方法还包括:
将与BMC连接的CPU的目标引脚设置为处于预设电平时触发开启系统管理模式SMM。
在本实施例中,BIOS将CPU的目标引脚设置为预设电平时触发开启SMM,使得BMC可以通过控制CPU的目标引脚的电平状态来触发服务器进入SMM,从而实现对所有类型的寄存器的访问,使得对寄存器的访问不再受到局限,更加灵活。
第三方面,提供一种寄存器控制系统,应用于服务器中,该系统包括CPU和BMC;
CPU的第一目标引脚作为输入端;BMC的第二目标引脚作为输出端;第一目标引脚与第二目标引脚连接;第一目标引脚在预设电平下触发服务器开启系统管理模式SMM。
第四方面,提供一种寄存器控制装置,该装置包括:
接收模块,用于接收寄存器的操作指令;寄存器操作指令中携带目标寄存器的标识;
控制模块,用于在操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM;
发送模块,用于在处于SMM的情况下,向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。
第五方面,提供一种寄存器控制装置,该装置包括:
接收模块,用于接收BMC发送的寄存器修改指令;寄存器修改指令为BMC在接收到寄存器的操作指令之后,确定操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态开启系统管理模式SMM下发送的指令;
处理模块,用于根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作。
第六方面,提供一种计算机设备,包括基本输入输入系统BIOS、基板管理控制器BMC、中央处理器CPU和存储器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现上述第一方面、第二方面任一所述的方法。
第七方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面、第二方面任一所述的方法。
上述寄存器控制方法、装置、计算机设备和存储介质,BMC接收寄存器的操作指令,其中,寄存器操作指令中携带目标寄存器的标识,在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM,在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。在本方案中,BMC通过控制引脚电平来触发服务器进入系统管理模式SMM,从而在SMM模式下,BMC可以与BIOS进行交互,从而实现对无论是对普通寄存器还是MCA寄存器的直接修改,使得对所有寄存器的控制比较灵活,且,对寄存器的控制不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
附图说明
图1为一个实施例中寄存器控制方法的应用环境图;
图2为另一个实施例中寄存器控制方法的流程示意图;
图3为另一个实施例中寄存器控制方法的流程示意图;
图4为另一个实施例中寄存器控制方法的流程示意图;
图5为另一个实施例中寄存器控制方法的流程示意图;
图6为另一个实施例中寄存器控制方法的流程示意图;
图7为另一个实施例中寄存器控制方法中BIOS与BMC的交互流程示意图;
图8为一个实施例中寄存器控制系统的流程示意图;
图9为另一个实施例中寄存器控制装置的结构框图;
图10为另一个实施例中寄存器控制装置的结构框图;
图11为另一个实施例中寄存器控制装置的结构框图;
图12为另一个实施例中寄存器控制装置的结构框图;
图13为另一个实施例中寄存器控制装置的结构框图;
图14为另一个实施例中寄存器控制装置的结构框图;
图15为另一个实施例中寄存器控制装置的结构框图;
图16为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的寄存器控制方法,可以应用于如图1所示的应用环境中。其中,基本输入输入系统(Basic Input Output System,BIOS)通过(Keyboard Controller Style,KCS)接口协议与基板管理控制器(Baseboard Management Controller,BMC)进行通信。BIOS是计算机系统启动后的第一道程式,负责计算机系统自检(Power On Self Test,POST),并初始化CPU、内存、高速串行计算机扩展总线标准(Peripheral ComponentInterconnect Express,PCIE)、硬盘等设备。BIOS可以收集服务器的资产信息,包括CPU、内存、PCIE、硬盘等设备的详细型号参数。BMC是一个集成在主板上的专用芯片,BMC固件运行在BMC芯片之上,是独立于服务器系统之外的小型操作系统。服务器使用BMC进行大规模无人值守操作,包括服务器的远程管理、监控、安装、重启等。BMC通常会支持可视化WEB UI,在WEB UI上可以向用户展示服务器的资产信息,包括CPU,内存,PCIE,硬盘等设备的详细型号参数。用户通过查看WEB UI,可以方便地了解服务器的配置情况。其中,BIOS和BMC通过IPMI接口进行交互,由BIOS来收集服务器的资产信息数据,然后通过IPMI接口发送资产信息数据给BMC。
本申请从上述技术背景出发提供本寄存器控制方法,首先,设置BMC的第一引脚与CPU的特定引脚GPIO Pin连接。其中,BMC的第一引脚指的是BMC的众多GPIO Pin中指定的一个引脚,基于该指定的引脚实现与CPU的特定引脚GPIO Pin的连接。当服务器开机进入操作系统(Operating System,OS)以后,如果需要修改硬件寄存器,就通过调试主机发送命令给BMC,BMC收到命令后将CPU的一个特定GPIO Pin短暂拉低,从而触发系统管理中断(SystemManagement Interrupt,SMI),在系统管理模式(System Management Mode,SMM)中由SMI中断处理程序SMI Handler负责对指定寄存器进行修改,实现在服务器保持开机的情况下,可以对所有的寄存器进行修改。
下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。需要说明的是,本申请图2-图5实施例提供的寄存器控制方法,其执行主体为BMC,也可以是寄存器控制装置,该寄存器控制装置可以通过软件、硬件或者软硬件结合的方式成为BMC的部分或全部。下述方法实施例中,均以执行主体是BMC为例来进行说明。
在一个实施例中,如图2所示,提供了一种寄存器控制方法,包括以下步骤:
S201、BMC接收寄存器的操作指令;寄存器操作指令中携带目标寄存器的标识。
其中,寄存器的操作指令可以为调试主机发送至BMC的,也可以为BMC接收到的用户基于调试主机的显示界面触发的操作指令。其中操作指令可以为寄存器的读指令,也可以为寄存器的写指令,写指令就包括写入指令、修改指令、删除指令等。
在本实施例中,寄存器的操作指令中携带了目标寄存器的标识,例如,BMC接收到寄存器的读取指令,BMC可以根据目标寄存器的标识读取目标寄存器的值,并将该值反馈至用户或者调试主机;可选地,操作指令还可以为寄存器的修改指令,BMC可以根据目标寄存器的标识修改目标寄存器的值,从而完成寄存器修改的操作,本实施例对此不做限定。
S202、在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM。
其中,修改指令指的是需要对目标寄存器中的值进行修改。在执行寄存器控制方法之前,需要将BMC中的一个引脚与CPU中的目标引脚进行连接,其中CPU的目标引脚可以为指定的通用输入输出接口引脚(General Purpose Input/Output Pin,GPIO Pin),CPU的目标引脚可以在某一种电平状态下开启服务器的系统管理模式SMM,并触发系统管理中断(System Management Interrupt,SMI)机制。
在本实施例中,在BMC接收到寄存器的修改指令的情况下,BMC可以通过控制BMC与CPU之间的连接引脚,也即控制CPU的目标引脚的电平状态,来开启服务器的系统管理模式SMM。可选地,BMC控制CPU的目标引脚的电平状态来,从而使得CPU触发SMI,将服务器从保护模式切换到SMM模式,从而使得BIOS执行到预设的修改脚本SMI Handler。例如,若预先设置目标引脚在低电平下开启SMM模式,那么BMC这里会将CPU的目标引脚的电平拉低,CPU在目标引脚为低电平时触发SMI,将服务器从保护模式切换到SMM模式;若预先设置目标引脚在高电平下开启SMM模式,那么BMC这里会将CPU的目标引脚的电平拉高,CPU在目标引脚为高电平时触发SMI,将服务器从保护模式切换到SMM模式,本实施例对此不做限定。
进一步地,BMC在确定接收到的指令为修改指令的情况下,也即调试主机通过IPMITool向BMC发送了修改指令,可选地,IPMI Tool的指令中可以包括修改寄存器请求SetRegister Command、发送方ID、目标寄存器编号、以及目标寄存器对应的目标值value中至少一个。其中,目标寄存器编号以及目标值可以为一个或多个,从而BMC根据目标寄存器的目标值修改本地寄存器信息表对应的寄存器的值,可选地,BMC根据发送方ID确定是调试主机发送获取寄存器值的请求Get Register Command,BMC还需要根据目标寄存器的目标值修改寄存器标志表中目标寄存器的更新标志位的值。
S203、在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。
其中,BMC向BIOS发送的寄存器修改指令,是用于指示BIOS对目标寄存器的值进行修改的指令。在本实施例中,在服务器处于SMM的情况下,通过BIOS执行修改脚本SMIHandler来实现BMC与BIOS交互修改目标寄存器的目的。在SMI Handler中,BMC会响应于BIOS发送的获取请求,向BIOS发送携带目标寄存器的标识的寄存器修改指令,BIOS在接收到寄存器修改指令之后,根据该指令向BMC获取目标寄存器的标识,从而根据对目标寄存器的值进行修改,并将修改后的值返回给BMC,本实施例对此不做限定。
上述寄存器控制方法中,BMC接收寄存器的操作指令,其中,寄存器操作指令中携带目标寄存器的标识,在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM,在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。在本方案中,BMC通过控制引脚电平来触发服务器进入系统管理模式SMM,从而在SMM模式下,可以实现对无论是对普通寄存器还是MCA寄存器的直接修改,使得对所有寄存器的控制比较灵活,且,对寄存器的控制不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
BMC控制引脚电平状态从而触发SMM模式,在其中一个可选的实施例中,在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM,包括:
BMC将与CPU连接的目标引脚的电平设置为预设电平以开启SMM;目标引脚与BMC的引脚连接。
其中,预设电平可以为高电平,也可以为低电平。在本实施例中,CPU的目标电平以预设电平状态来触发开启SMM的机制可以为BIOS在初始化阶段设置好的,从而BMC通过控制CPU的目标引脚的电平状态,实现触发开启SMM的目的。例如,预设电平为低电平,BMC只需要将CPU的目标引脚的电平拉低,便可以触发开始SMM。若预设电平为高电平,BMC需要将CPU的目标引脚电平拉高,便可以触发SMM。
在本实施例中,通过将BMC的指定引脚与CPU的目标引脚连接,使得BMC可以控制CPU的目标引脚的电平状态,由于BIOS可以预先设置好CPU的目标引脚通过电平状态来触发开启SMM,因此,可以实现BMC通过控制CPU的目标引脚的电平状态来开启SMM,从而在SMM模式下实现对所以寄存器的访问,使得对寄存器的访问更加灵活。
BMC在接收到寄存器修改指令之后,可以根据寄存器的目标值对本地存储的寄存器信息表中的当前值进行修改,在其中一个可选的实施例中,若修改指令包括目标寄存器的目标值,该方法还包括:
根据目标寄存器的标识和目标值,更新BMC中寄存器信息表中目标寄存器的当前值,得到更新后的寄存器信息表。
可选地,在一个实施例中,寄存器信息表的构建方式包括:
接收BIOS发送的预设类型的寄存器的实际值,根据各寄存器的实际值和各寄存器的标识,构建寄存器信息表。
在本实施例中,BMC根据BIOS发送的各寄存器的实际值和各个寄存器的编号来构建寄存器信息表,示例性地,寄存器信息表中可以包括寄存器标识与其对应的寄存器的值两种类型的字段,其中,寄存器信息表的格式可以参考如下表1所示:
表1
寄存器标识1 | 值 | 寄存器标识2 | 值 | 寄存器标识3 | 值 | ... |
在本实施例中,BMC在构建好寄存器信息表之后,可以将该寄存器信息表存储至本地存储空间中,在接收到寄存器修改指令之后,根据该指令中携带的目标寄存器的目标值,对应修改该寄存器信息表中目标寄存器的当前值,来更新该寄存器信息表。
可选地,在BMC接收到寄存器的读取指令的情况下,如图3所示,在其中一个可选的实施例中,该方法还包括:
S301、在操作指令为读取指令的情况下,根据读取指令中目标寄存器的标识,从寄存器信息表中获取目标寄存器对应的当前值。
其中,在BMC接收到寄存器的读取指令的情况下,BMC可以根据目标寄存器的标识,从本地存储空间中的寄存器信息表中获取目标寄存器对应的当前值。可选地,用户可以在调试主机上通过IPMI Tool发送获取寄存器值的请求Get Register Command命令给BMC,BMC根据目标寄存器的标识从寄存器信息表中获取对应的值。其中,Get Register Command请求中可以携带目标寄存器的标识,示例性的,标识可以为编号。
可选地,BMC可以接收来自调试主机的Get Register Command请求,向调试主机返回相应的目标寄存器的值;BMC也可以接收来自BIOS的Get RegisterCommand请求,并响应该请求,向BIOS返回相应的目标寄存器的值。示例性的,BMC的响应指令中可以携带用于表征操作是否成功的标识Completion Code,和目标标寄存器的值。
S302、将目标寄存器的当前值展示在用户界面。
在本实施例中,BMC获取到目标寄存器对应的值之后,将该值返回给调试主机,用于展示在用户界面中。
在本实施例中,BMC可以基于寄存器信息表实现寄存器信息的本地修改和读取,优化寄存器的控制操作。
BMC在确定需要修改的目标寄存器之后,还需要根据目标寄存器更新寄存器标志表,在其中一个可选的实施例中,该方法还包括:
根据目标寄存器的标识,将BMC中寄存器标志表中目标寄存器的更新标志位设置为第一值,得到更新后的寄存器标志表;第一值用于表示寄存器处于可修改状态。
其中,寄存器标志表指的是在初始化阶段,BMC构建的用于存储寄存器的编号以及寄存器是否可修改状态的表。示例性的,寄存器标志表中包括各个寄存器标识、以及与各个寄存器对应的更新标志位,寄存器标志表可以参考如下表2所示:
表2
编号1 | 编号2 | 编号3 | 编号4 | 编号5 | ... | |
0 | 1 | 0 | 0 | 1 | ... |
在寄存器标志表中,与各个寄存器标识(编号)对应的是各个寄存器的更新标志位,其中,各个标志位可以设定为第一值或者第二值,其中第一值可以为1,用来表示该标志位对应的寄存器处于可修改状态,或者说,处于需要修改的状态。第二值可以为0,用来表示该标志位对应的寄存器处于不可修改状态,或者说,处于不需要修改的状态。可选地,寄存器标志表中也可以不包括寄存器标识,在一种可实现的方式下,按照寄存器标志表中的字节顺序,形成各个寄存器编号与字节的对应关系,从而得到各个字节下更新标志位与各个字节下寄存器的对应关系,示例性地,寄存器标志表中第一个字节的bit0-7中的值分别对应寄存器编号为0-7的寄存器的更新标志位,第二个字节的bit0-7中的值分别对应寄存器编号为8-15的寄存器的更新标志位,以此类推,本实施例对标志位的具体值不做限定。
在本实施例中,BMC根据目标寄存器对寄存器信息表中的值进行修改之后,根据目标寄存器的标识,对寄存器标志表中对应的标志位的值修改为第一值,来表示该目标寄存器需要进行修改,本实施例对此不做限定。
在本实施例中,基于寄存器标志表来表示寄存器是否可修改的状态,可以集中便捷地表示所有寄存器的当前状态,优化寄存器的控制过程,减少BIOS与BMC的交互资源。
在修改寄存器的过程中,BMC与BIOS的交互如图4所示,在其中一个可选的实施例中,在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作,包括:
S401、在处于SMM的情况下,BMC向BIOS发送寄存器修改指令;
S402、响应于BIOS接收到寄存器修改指令之后发送的第一获取请求,向BIOS发送寄存器标志表,以使BIOS根据寄存器标志表确定目标寄存器;
S403、响应于BIOS确定目标寄存器之后发送的第二获取请求,向BIOS发送目标寄存器的目标值,以使BIOS根据目标值对目标寄存器进行修改并得到目标寄存器的实际值;
S404、接收BIOS返回的目标寄存器的实际值,并根据实际值,更新寄存器信息表中目标寄存器的当前值;
S305、向BIOS返回完成寄存器修改响应。
在本实施例中,在开启SMM模式下,BMC触发BIOS执行脚本SMI Handler,并向BIOS发送寄存器修改指令,BIOS响应于接收到寄存器修改指令之后向BMC发送第一获取请求,也即BMC接收BIOS发送的获取寄存器标志表的第一获取请求Get Update Flag Command,并向BIOS返回寄存器标志表。
BMC响应BIOS的获取请求,向BIOS返回的应答指令,可选的,该应答指令中可以携带用于表示操作是否成功的响应标识Completion Code和寄存器标志表中各个寄存器的更新标志位。
BIOS根据寄存器标志表确定目标寄存器,从而向BMC发送获取目标寄存器的值的第二获取请求,其中,第二获取请求的数据可参考表2中内容,BMC根据第二获取请求,将目标寄存器的值返回给BIOS,以使BIOS进行修改并得到目标寄存器的实际值,从而BMC根据实际值,更新寄存器信息表中目标寄存器的当前值,并向BIOS返回完成寄存器修改响应,本实施例对此不做限定。
在本实施例中,在进入SMM模式之后,BMC可以独立于操作系统OS与BIOS进行交互,实现通过BIOS对寄存器修改操作,使得对所有寄存器的访问更加灵活。
在完成对寄存器的修改之后,在其中一个可选的实施例中,该方法还包括:
响应于BIOS接收到完成寄存器修改响应所发送的寄存器标志复位请求,将寄存器标志表中所有的更新标志位设置为第二值,第二值表示寄存器处于不可修改状态。
其中,当所有需要修改的寄存器都修改完毕后,BIOS向BMC发送寄存器标志复位请求Set Update Flag Command,BMC在接收寄存器标志复位请求之后,根据寄存器标志复位请求将寄存器标志表中所有的更新标志位设置为第二值,这里,第二值可以为0,也可以为1。
在本实施例中,在BIOS对寄存器进行修改之后,及时将BMC中的寄存器标志表中更新标志位都复位,可以及时确定当前寄存器修改操作已完成,以释放相应的控制资源和存储空间。
下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。需要说明的是,本申请图5-图6实施例提供的寄存器控制方法,其执行主体为BIOS,也可以是寄存器控制装置,该寄存器控制装置可以通过软件、硬件或者软硬件结合的方式成为BIOS的部分或全部。下述方法实施例中,均以执行主体是BIOS为例来进行说明。
在一个实施例中,如图5所示,提供一种寄存器控制方法,包括以下几个步骤:
S501、BIOS接收BMC发送的寄存器修改指令。
其中,寄存器修改指令为BMC在接收到寄存器的操作指令之后,确定操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态开启系统管理模式SMM下发送的指令。
其中,BIOS接收BMC发送的寄存器修改指令,其中,寄存器修改指令是BMC在接收到用户发送的寄存器操作指令之后进行处理产生的指令,其中具体可参考上述图2实施例,本实施例不做赘述。
可选的,BIOS在接收BMC发送的寄存器修改指令之前,还包括对服务器的初始化阶段。在一个实施例中,BIOS可以将与BMC连接的CPU的目标引脚设置为处于预设电平时触发开启系统管理模式SMM。
其中,BIOS在开机过程中可以将与BMC指定引脚连接的CPU的目标引脚设置为预设电平下触发开启SMM,目标引脚可以为CPU中任意一个可以触发执行脚本SMI Handler的引脚,预设电平可以为低电平或高电平。进一步地,BIOS还可以注册一个与目标引脚相关联的执行脚本SMI Handler,当目标引脚被拉低时,会触发执行脚本SMI Handler。
S502、BIOS根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作。
其中,目标寄存器为需要修改的寄存器。在本实施例中,BIOS在接收到BMC发送的寄存器修改指令之后,可选地,可以向BMC获取目标寄存器的目标值,从而根据目标值对寄存器进行修改。或者,BIOS还可以向BMC获取寄存器标志表,从而根据寄存器标志表中寄存器的更新标志位确定需要修改的目标寄存器,进而向BMC获取目标寄存器的目标值,对目标寄存器进行修改,本实施例对此不做限定。
上述寄存器控制方法中,BMC通过控制引脚电平来触发服务器进入系统管理模式SMM,从而在SMM模式下,BMC可以与BIOS进行交互,从而实现对无论是对普通寄存器还是MCA寄存器的直接修改,使得对所有寄存器的控制比较灵活,且,对寄存器的控制不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
在上述根据引脚电平状态触发SMM之后,BIOS还可以对处于预设电平的引脚做二次验证,在其中一个可选的实施例中,在BIOS接收BMC发送的寄存器修改指令之后,该方法还包括:
若BIOS确定处于预设电平的引脚为CPU的目标引脚,则执行根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作的步骤。
在本实施例中,例如预设电平为低电平,在处于SMM的情况下,BIOS执行脚本SMIHandler,获取拉低电平的引脚标识,确定该引脚是否为目标引脚,在确定拉低电平的引脚为目标引脚的条件下,根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作。
在本实施例中,BIOS对处于预设电平的引脚进行二次验证,进一步确认是目标引脚处于预设电平状态,从而触发与BMC交互来实现寄存器修改的操作,提高了寄存器控制的准确性。
BIOS在接收到寄存器修改指令之后,如图6所示,在其中一个可选的实施例中,BIOS根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作,包括:
S601、响应于寄存器修改指令,BIOS向BMC发送获取寄存器标志表请求;
S602、接收BMC响应于获取寄存器标志表请求所返回的寄存器标志表,并根据寄存器标志表确定目标寄存器;
S603、向BMC发送的携带目标寄存器的标识的获取目标值请求;
S604、接收BMC响应于获取目标值请求所返回的目标值,并根据预设的寄存器映射表对目标寄存器进行修改,得到目标寄存器修改后的实际值。
其中,预设的寄存器映射表为根据所述寄存器的实际值、预设的所述寄存器的访问地址、预设的所述寄存器的访问方式构建的。
在本实施例中,在开启SMM模式下,BIOS执行脚本SMI Handler,接收BMC发送的寄存器修改指令,BIOS响应于接收到寄存器修改指令之后向BMC发送获取寄存器标志表请求Get Update Flag Command。
BMC在接收到寄存器标志表之后,可选地,在一个实施例中,遍历寄存器标志表,确定寄存器标志表中更新标志位为第一值的寄存器为目标寄存器;第一值表示寄存器处于可修改状态。
其中,BIOS通过遍历寄存器标志表,确定更新标志位标识可修改的寄存器为目标寄存器,目标寄存器可以为一个或多个。可选地,第一值可以为1也可以为0,本实施例对此不做限定。
在确定目标寄存器之后,可以根据目标寄存器向BMC发送获取寄存器值的请求GetRegister Command,其中,获取目标值请求中携带目标寄存器的标识。
BIOS接收BMC根据获取目标值请求返回的目标寄存器的目标值,根据目标值和寄存器映射表中目标寄存器的访问方式、访问地址对目标寄存器的值进行修改,可选地,BIOS在对目标寄存器修改完之后,可以获取目标寄存器的实际值,并将实际值存储至指定的存储空间中,本实施例对此不做限定。
可选地,BIOS可以获取各个寄存器的当前值,根据各个寄存器的当前值、寄存器的访问地址、寄存器的访问方式,构建并存储寄存器映射表。
在本实施例中,BIOS可以在服务器初始化阶段获取所有寄存器的值,并根据预设类型或者指定的寄存器的值、编号、以及其访问地址和访问方式构建寄存器映射表,在对目标寄存器进行修改的过程中,可以直接根据寄存器映射表中的访问地址或访问方式、以及接收到的目标寄存器的目标值对目标寄存器进行修改。
其中,寄存器映射表可参考下表所示:
表3
寄存器 | 编号 | 功能描述 | 建议值 |
寄存器A | 0 | 用于控制CPU频率 | |
寄存器B | 1 | 用于控制某个指定外设的使能 | |
寄存器C | 2 | 用于控制MCA的Threshold Count | |
...... | ... | ...... |
在本实施例中,寄存器映射表中定义好了接口数据格式,用户只需要指定需要修改的寄存器的编号和值,然后发送命令给BMC即可,BMC向BIOS发送修改指令,BIOS根据寄存器映射表可以实现相应寄存器的修改,提升了便利性。
在本实施例中,在进入SMM模式之后,BIOS可以与BMC可以独立于操作系统进行交互,实现通过BIOS对寄存器修改操作,使得对所有寄存器的访问更加灵活。
在BIOS修改完寄存器的值之后,在其中一个可选的实施例中,该方法还包括:
获取目标寄存器的实际值,并将实际值发送至BMC。
在本实施例中,BIOS在修改完目标寄存器的值之后,可以将获取到的目标寄存器的实际值发送至BMC,示例性地,BIOS可以向BMC发送修改寄存器请求Set RegisterCommand,该请求中携带目标寄存器标识、目标寄存器的值和发送方ID中至少一种信息。这里,发送方ID可以为BIOS的ID或者BIOS的其他标识,与步骤202中类似的,BMC在接收到修改寄存器值的请求,根据发送方ID确定是BIOS发送的修改指令之后,只需要根据SetRegister Command请求中携带的目标寄存器的实际值,修改本地寄存器信息表中对应的寄存器的值就可以,这里与步骤202中的区别在于,BMC在确定发送方是BIOS的情况下,不修改寄存器标标志表中的更新标志位的值。
可选地,BIOS除了在修改完目标寄存器的值之后向BMC发送目标寄存器的实际值,BIOS还会在初始化阶段,也即服务器的开机阶段,获取到所有寄存器的值,将寄存器的值发送至BMC,以使BMC根据寄存器的值构建寄存器映射表或者对寄存器的值进行存储、读取等操作,本实施例对此不做限定。
在本实施例中,BIOS可以在多种场景下读取寄存器的实际值发送给BMC,BMC可以根据获取到的寄存器的实际值更新本地存储空间中的寄存器的值,优化了BMC的寄存器的控制流程,使得对寄存器的访问更加灵活。
BIOS在向BMC发送修改后的寄存器的实际值之后,在其中一个可选的实施例中,该方法还包括:
接收BMC在根据实际值对寄存器信息表修改之后发送的完成寄存器修改响应;
向BMC发送寄存器标志复位请求,以使BMC将BMC中的寄存器标志表中所有的更新标志位设置为第二值;第二值表示寄存器处于不可修改状态。
在本实施例中,当BIOS接收到BMC发送的完成寄存器修改响应之后,也即确定当前所有需要修改的寄存器都已修改完毕后,在这种情况下,BIOS可以向BMC发送寄存器标志复位请求Set Update Flag Command,以使BMC将寄存器标志表中所有的更新标志位置位第二值,也即将所有标志位都复位,可选地,这里第二值可以为0也可以为1。
可选地,BIOS在初始化阶段,也即在服务器的开机过程中,在向BMC发送完所有的寄存器的当前值之后,也可以向BMC发送寄存器标志复位请求Set Update Flag Command,以使BMC将寄存器标志表中所有的更新标志位均置位第二值。
在本实施例中,在BIOS对寄存器进行修改之后,及时将BMC中的寄存器标志表中更新标志位都复位,可以及时确定当前寄存器修改操作已完成,以释放相应的控制资源和存储空间。
在实现寄存器更新标志表的复位更新之后,在其中一个可选的实施例中,该方法还包括:
在向BMC发送寄存器标志复位请求之后,退出SMM。
在本实施例中,BIOS向BMC发送寄存器标志复位请求之后,结束脚本的执行,确定当前并无需要修改的寄存器时,及时退出SMM,可以释放相应的寄存器控制资源和计算资源。
为了更好的说明上述方法,如图7所示,本实施例提供一种BIOS与BMC交互的寄存器控制方法,具体包括:
S101、BIOS获取预设类型的寄存器的实际值;
S102、BIOS将寄存器的实际值发送至BMC,以使BMC根据寄存器的实际值构建寄存器信息表;
S103、BIOS根据寄存器的实际值、寄存器的访问地址、寄存器的访问方式,构建并存储寄存器映射表;
S104、BIOS将与BMC连接的CPU的目标引脚设置为处于预设电平时触发开启系统管理模式SMM;
S105、BIOS向BMC发送寄存器标志复位请求,以使BMC将BMC中的寄存器标志表中所有的更新标志位清零;
S106、BMC接收寄存器的操作指令;
S107、若操作指令为读取指令,则BMC根据读取指令中目标寄存器的标识,从寄存器信息表中获取目标寄存器对应的当前值;
S108、若操作指令为修改指令,则BMC将与CPU连接的目标引脚的电平设置为预设电平以开启SMM;
S109、在SMM下,触发BIOS执行脚本SMI Handler;
S110、在BIOS确定处于预设电平的引脚为CPU的目标引脚的情况下,向BMC发送获取寄存器标志表请求;
S111、BMC响应获取寄存器标志表请求,向BIOS发送寄存器标志表;
S112、BIOS接收BMC返回的寄存器标志表,并根据寄存器标志表确定目标寄存器;
S113、BIOS向BMC发送的携带目标寄存器的标识的获取目标值请求;
S114、BMC响应获取目标值请求,向BIOS发送目标寄存器的目标值;
S115、BIOS接收BMC响应于获取目标值请求所返回的目标值,并基于寄存器映射表对目标寄存器进行修改,得到目标寄存器修改后的实际值;
S116、BIOS将实际值发送至BMC;
S117、BMC根据实际值,更新寄存器信息表中目标寄存器的当前值;
S118、BMC向BIOS返回完成寄存器修改响应;
S119、BIOS向BMC发送寄存器标志复位请求;
S120、BMC响应于BIOS发送的寄存器标志复位请求,将寄存器标志表中所有的更新标志位清零;
S121、BIOS在向BMC发送寄存器标志复位请求之后,结束脚本SMI Handler运行,退出SMM。
在本实施例中,BMC通过控制引脚电平来触发BIOS运行脚本SMI Handler并使得服务器的CPU进入系统管理模式SMM,从而在SMM模式下,BMC可以与BIOS进行交互,从而实现对无论是对普通寄存器还是MCA寄存器的直接修改,使得对所有寄存器的控制比较灵活,且,对寄存器的控制不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
上述实施例提供的寄存器控制方法,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
应该理解的是,虽然图2-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供一种寄存器控制系统,应用于服务器中,该系统包括CPU和BMC;
CPU的第一目标引脚作为输入端;BMC的第二目标引脚作为输出端;第一目标引脚与第二目标引脚连接;第一目标引脚在预设电平下触发服务器开启系统管理模式SMM。
其中,CPU的以目标引脚可以为GPIO引脚,BMC的第二目标引脚可以为指定的任意一个引脚,可选地,GPIO引脚为可以在高电平或低电平下触发服务器进入SMM模式执行脚本SMI Handler的引脚。在本实施例中,BMC与BIOS的交互过程可参考图9给出的实施例,本实施例不做赘述。
在本实施例中,BMC通过控制引脚电平来触发服务器进入系统管理模式SMM,从而在SMM模式下,BMC可以与BIOS进行交互,从而实现对无论是对普通寄存器还是MCA寄存器的直接修改,使得对所有寄存器的控制比较灵活,且,对寄存器的控制不依赖操作系统OS,这样可以保证OS出现异常无法登陆的情况下,还可以实现对寄存器的访问。
在一个实施例中,如图9所示,提供了一种寄存器控制装置,包括:
接收模块01,用于接收寄存器的操作指令;寄存器操作指令中携带目标寄存器的标识;
控制模块02,用于在操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM;
发送模块03,用于在处于SMM的情况下,向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。
在其中一个可选的实施例中,控制模块02,用于将与CPU连接的目标引脚的电平设置为预设电平以开启SMM;目标引脚与BMC的引脚连接。
在其中一个可选的实施例中,若修改指令包括目标寄存器的目标值,如图10所示,该装置还包括更新模块04,用于根据目标寄存器的标识和目标值,更新BMC中寄存器信息表中目标寄存器的当前值,得到更新后的寄存器信息表。
在其中一个可选的实施例中,更新模块04,还用于根据目标寄存器的标识,将BMC中寄存器标志表中目标寄存器的更新标志位设置为第一值,得到更新后的寄存器标志表;第一值用于表示寄存器处于可修改状态。
在其中一个可选的实施例中,发送模块03,用于在处于SMM的情况下,向BIOS发送寄存器修改指令;响应于BIOS接收到寄存器修改指令之后发送的第一获取请求,向BIOS发送寄存器标志表,以使BIOS根据寄存器标志表确定目标寄存器;响应于BIOS确定目标寄存器之后发送的第二获取请求,向BIOS发送目标寄存器的目标值,以使BIOS根据目标值对目标寄存器进行修改并得到目标寄存器的实际值;接收BIOS返回的目标寄存器的实际值,并根据实际值,更新寄存器信息表中目标寄存器的当前值;向BIOS返回完成寄存器修改响应。
在其中一个可选的实施例中,更新模块04,还用于响应于BIOS接收到完成寄存器修改响应所发送的寄存器标志复位请求,将寄存器标志表中所有的更新标志位设置为第二值,第二值表示寄存器处于不可修改状态。
在其中一个可选的实施例中,如图11所示,该装置还包括获取模块05,用于在操作指令为读取指令的情况下,根据读取指令中目标寄存器的标识,从寄存器信息表中获取目标寄存器对应的当前值;展示模块06,用于将目标寄存器的当前值展示在用户界面。
在其中一个可选的实施例中,如图12所示,该装置还包括构建模块07;
接收模块01,还用于接收BIOS发送的预设类型的寄存器的实际值;
构建模块07,用于根据各寄存器的实际值和各寄存器的标识,构建寄存器信息表。
在一个实施例中,如图13所示,提供了一种寄存器控制装置,包括:
接收模块11,用于接收BMC发送的寄存器修改指令;寄存器修改指令为BMC在接收到寄存器的操作指令之后,确定操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态开启系统管理模式SMM下发送的指令;
处理模块12,用于根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作。
在其中一个可选的实施例中,在BIOS接收BMC发送的寄存器修改指令之后,处理模块12,用于在确定处于预设电平的引脚为CPU的目标引脚,执行根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作的步骤。
在其中一个可选的实施例中,处理模块12,用于响应于寄存器修改指令,向BMC发送获取寄存器标志表请求;接收BMC响应于获取寄存器标志表请求所返回的寄存器标志表,并根据寄存器标志表确定目标寄存器;向BMC发送的携带目标寄存器的标识的获取目标值请求;接收BMC响应于获取目标值请求所返回的目标值,并根据预设的寄存器映射表对目标寄存器进行修改,得到目标寄存器修改后的实际值;预设的寄存器映射表为根据寄存器的实际值、预设的寄存器的访问地址、预设的寄存器的访问方式构建的。
在其中一个可选的实施例中,如图14所示,该装置还包括发送模块13,用于获取目标寄存器的实际值,并将实际值发送至BMC。
在其中一个可选的实施例中,处理模块12,用于遍历寄存器标志表,确定寄存器标志表中更新标志位为第一值的寄存器为目标寄存器;第一值表示寄存器处于可修改状态。
在其中一个可选的实施例中,接收模块11,还用于接收BMC在根据实际值对寄存器信息表修改之后发送的完成寄存器修改响应;发送模块13,还用于向BMC发送寄存器标志复位请求,以使BMC将BMC中的寄存器标志表中所有的更新标志位设置为第二值;第二值表示寄存器处于不可修改状态。
在其中一个可选的实施例中,处理模块12,还用于向BMC发送寄存器标志复位请求之后,退出SMM。
在其中一个可选的实施例中,如图15所示,该装置还包括设置模块14,用于将与BMC连接的CPU的目标引脚设置为处于预设电平时触发开启系统管理模式SMM。
关于寄存器控制装置的具体限定可以参见上文中对于寄存器控制方法的限定,在此不再赘述。上述寄存器控制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,也可以是终端,其内部结构图可以如图16所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种寄存器控制方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
BMC接收寄存器的操作指令;寄存器操作指令中携带目标寄存器的标识;
在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM;
在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。
上述实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
BIOS接收BMC发送的寄存器修改指令;寄存器修改指令为BMC在接收到寄存器的操作指令之后,确定操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态开启系统管理模式SMM下发送的指令;
BIOS根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作。
上述实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
BMC接收寄存器的操作指令;寄存器操作指令中携带目标寄存器的标识;
在操作指令为修改指令的情况下,BMC通过控制BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM;
在处于SMM的情况下,BMC向BIOS发送携带目标寄存器的标识的寄存器修改指令,以使BIOS根据目标寄存器的标识对目标寄存器执行相应的修改操作。
上述实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
BIOS接收BMC发送的寄存器修改指令;寄存器修改指令为BMC在接收到寄存器的操作指令之后,确定操作指令为修改指令的情况下,通过控制BMC与CPU之间的连接引脚的电平状态开启系统管理模式SMM下发送的指令;
BIOS根据寄存器修改指令,确定目标寄存器,并对目标寄存器进行修改操作。
上述实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种寄存器控制方法,其特征在于,所述方法包括:
BMC接收寄存器的操作指令;所述寄存器操作指令中携带目标寄存器的标识;
在所述操作指令为修改指令的情况下,所述BMC通过控制所述BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM;
在处于所述SMM的情况下,所述BMC向所述BIOS发送携带所述目标寄存器的标识的寄存器修改指令,以使所述BIOS根据所述目标寄存器的标识对所述目标寄存器执行相应的修改操作。
2.根据权利要求1所述的方法,其特征在于,所述在所述操作指令为修改指令的情况下,所述BMC通过控制所述BMC与CPU之间的连接引脚的电平状态以开启系统管理模式SMM,包括:
所述BMC将与CPU连接的目标引脚的电平设置为预设电平以开启所述SMM;所述目标引脚与所述BMC的引脚连接。
3.根据权利要求2所述的方法,其特征在于,若所述修改指令包括所述目标寄存器的目标值,所述方法还包括:
根据所述目标寄存器的标识和所述目标值,更新所述BMC中寄存器信息表中所述目标寄存器的当前值,得到更新后的寄存器信息表。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述目标寄存器的标识,将所述BMC中寄存器标志表中所述目标寄存器的更新标志位设置为第一值,得到更新后的寄存器标志表;所述第一值用于表示寄存器处于可修改状态。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述在处于所述SMM的情况下,所述BMC向所述BIOS发送携带所述目标寄存器的标识的寄存器修改指令,以使所述BIOS根据所述目标寄存器的标识对所述目标寄存器执行相应的修改操作,包括:
在处于所述SMM的情况下,所述BMC向所述BIOS发送所述寄存器修改指令;
响应于所述BIOS接收到所述寄存器修改指令之后发送的第一获取请求,向所述BIOS发送寄存器标志表,以使所述BIOS根据所述寄存器标志表确定所述目标寄存器;
响应于所述BIOS确定所述目标寄存器之后发送的第二获取请求,向所述BIOS发送所述目标寄存器的目标值,以使所述BIOS根据所述目标值对所述目标寄存器进行修改并得到所述目标寄存器的实际值;
接收所述BIOS返回的所述目标寄存器的实际值,并根据所述实际值,更新寄存器信息表中所述目标寄存器的当前值;
向所述BIOS返回完成寄存器修改响应。
6.一种寄存器控制方法,其特征在于,所述方法包括:
BIOS接收BMC发送的寄存器修改指令;所述寄存器修改指令为所述BMC在接收到寄存器的操作指令之后,确定所述操作指令为修改指令的情况下,通过控制所述BMC与CPU之间的连接引脚的电平状态开启系统管理模式SMM下发送的指令;
所述BIOS根据所述寄存器修改指令,确定目标寄存器,并对所述目标寄存器进行修改操作。
7.根据权利要求6所述的方法,其特征在于,在所述BIOS接收BMC发送的寄存器修改指令之后,所述方法还包括:
若所述BIOS确定处于所述预设电平的引脚为所述CPU的目标引脚,则执行所述根据所述寄存器修改指令,确定目标寄存器,并对所述目标寄存器进行修改操作的步骤。
8.根据权利要求6所述的方法,其特征在于,所述BIOS根据所述寄存器修改指令,确定目标寄存器,并对所述目标寄存器进行修改操作,包括:
响应于所述寄存器修改指令,所述BIOS向所述BMC发送获取寄存器标志表请求;
接收所述BMC响应于所述获取寄存器标志表请求所返回的寄存器标志表,并根据所述寄存器标志表确定目标寄存器;
向所述BMC发送的携带所述目标寄存器的标识的获取目标值请求;
接收所述BMC响应于所述获取目标值请求所返回的目标值,并根据预设的寄存器映射表对所述目标寄存器进行修改,得到所述目标寄存器修改后的实际值;所述预设的寄存器映射表为根据所述寄存器的实际值、预设的所述寄存器的访问地址、预设的所述寄存器的访问方式构建的。
9.根据权利要求6-8中任一项所述的方法,其特征在于,所述方法还包括:
将与所述BMC连接的所述CPU的目标引脚设置为处于预设电平时触发开启系统管理模式SMM。
10.一种寄存器控制系统,其特征在于,应用于服务器中,所述系统包括CPU和BMC;
所述CPU的第一目标引脚作为输入端;所述BMC的第二目标引脚作为输出端;所述第一目标引脚与所述第二目标引脚连接;所述第一目标引脚在预设电平下触发所述服务器开启系统管理模式SMM。
11.一种计算机设备,包括基本输入输入系统BIOS、基板管理控制器BMC、中央处理器CPU和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9中任一项所述的方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111375350.2A CN114168196A (zh) | 2021-11-19 | 2021-11-19 | 寄存器控制方法、系统、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111375350.2A CN114168196A (zh) | 2021-11-19 | 2021-11-19 | 寄存器控制方法、系统、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168196A true CN114168196A (zh) | 2022-03-11 |
Family
ID=80479735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111375350.2A Pending CN114168196A (zh) | 2021-11-19 | 2021-11-19 | 寄存器控制方法、系统、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168196A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579189A (zh) * | 2022-05-05 | 2022-06-03 | 深圳云豹智能有限公司 | 单核以及多核访问寄存器数据的方法、处理器和系统 |
CN115543055A (zh) * | 2022-11-28 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 电源管理的控制权移交方法、装置、设备和存储介质 |
US11829480B2 (en) | 2022-04-20 | 2023-11-28 | Quanta Computer Inc. | Remote access of system register configuration |
-
2021
- 2021-11-19 CN CN202111375350.2A patent/CN114168196A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11829480B2 (en) | 2022-04-20 | 2023-11-28 | Quanta Computer Inc. | Remote access of system register configuration |
TWI824558B (zh) * | 2022-04-20 | 2023-12-01 | 廣達電腦股份有限公司 | 用以存取資料之方法 |
CN114579189A (zh) * | 2022-05-05 | 2022-06-03 | 深圳云豹智能有限公司 | 单核以及多核访问寄存器数据的方法、处理器和系统 |
CN114579189B (zh) * | 2022-05-05 | 2022-09-09 | 深圳云豹智能有限公司 | 单核以及多核访问寄存器数据的方法、处理器和系统 |
CN115543055A (zh) * | 2022-11-28 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 电源管理的控制权移交方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114168196A (zh) | 寄存器控制方法、系统、装置、计算机设备和存储介质 | |
US10019253B2 (en) | Systems and methods of updating hot-pluggable devices | |
KR101766695B1 (ko) | 복수의 중앙 처리 장치를 구비한 컴퓨터 시스템을 위한 부팅 방법 | |
KR20100066576A (ko) | 펌웨어 이미지 갱신 및 관리 | |
US20130086571A1 (en) | Dynamically Updating Firmware In A Computing System | |
US20150154029A1 (en) | Electronic apparatus and operational method thereof | |
US20230229423A1 (en) | Pushing a firmware update patch to a computing device via an out-of-band path | |
US11860718B2 (en) | Register reading method and apparatus, device, and medium | |
US20230222080A1 (en) | System and method for distributed subscription management | |
TW201117094A (en) | Basic input/output system capable of supporting multi-platforms and constructing method thereof | |
CN111949529A (zh) | 系统调试方法、装置、计算机设备和存储介质 | |
CN115145381A (zh) | 一种远程重置bmc芯片的方法、系统、存储介质及设备 | |
CN107688479B (zh) | Android系统网络集群及其搭建的方法、Android系统网络集群数据处理的方法和系统 | |
JP5557612B2 (ja) | 計算機及び転送プログラム | |
CN114968386A (zh) | 一种电子设备的设备信息管理方法、装置及设备 | |
JPWO2018020630A1 (ja) | 計算機システム、処理方法、およびドライバプログラム | |
US9858085B2 (en) | Information processing including BIOS apparatus, information processing method thereof, and storage medium | |
JP2023544001A (ja) | アクセラレータカードのセキュリティモードの静的構成 | |
CN114168403A (zh) | 信息管理方法、装置、计算机设备和存储介质 | |
CN117667465B (zh) | 代码共享方法、装置、交换机、多主机系统、设备和介质 | |
TWI748241B (zh) | 基本輸入輸出系統的除錯訊息自動提供方法 | |
CN112558999B (zh) | 基于bmc的海量节点固件版本管理及网络加载方法 | |
JP7318799B2 (ja) | 情報処理装置、操作制御方法および操作制御プログラム | |
JP6821509B2 (ja) | 情報処理装置並びにその制御方法及び制御プログラム | |
JPH03138753A (ja) | マルチプロセッサシステムのブートロード装置 |
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 |