执行不可屏蔽中断的方法和装置的制造方法

文档序号:9524057阅读:531来源:国知局
执行不可屏蔽中断的方法和装置的制造方法
【技术领域】
[0001]本发明实施例涉及服务器领域,并且更具体地,涉及一种执行不可屏蔽中断的方法和装置。
【背景技术】
[0002]服务器一般对系统稳定性有着极高的要求。在系统正常运行时候能够定时保存系统的状态,同时也需要在系统异常的时候能够保存一些关键数据,为定位系统出错原因提供数据支撑。因为系统正常运行时,可以有多种方法和手段来保存系统数据,但是系统异常时一一最严重的就是死机时,所有常规方法和手段已经不可行,所有中断也无法响应。此时需要不可屏蔽中断(Non Maskable Interrupt, NMI)机制来保存数据。
[0003]NMI即中央处理器(Central Processing Unit,CPU)不能屏蔽的中断,无论状态寄存器中的中断标识(Interrupt Flag,IF)位的状态如何,CPU收到有效的匪I必须进行响应。匪I通常用于故障处理,例如协处理器运算出错、存储器校验出错、输入/输出(Input/Output,I/O)端口校验出错等,用于保存操作系统(Operating System, OS)的错误状态和异常信息等。因此NMI是当前服务器领域非常重要的问题定位手段,对产品本身来说,也是非常重要的特性。
[0004]当前的X86和单字长定点指令平均执行速度(Mill1n Instruct1ns PerSecond, MIPS)等架构都有对应的NMI实现机制。主要是定时触发或由硬件故障触发一个中断,该中断无法被屏蔽,即使系统已经发生死锁,也能响应中断。X86和MIPS等架构通过硬件手段使得系统在非安全模式中执行匪I涉及的数据保存,以及书写系统日志和喂狗等用户定义处理。但是在进阶精简指令集机器(Advanced RISC Machine,ARM)架构中,没有对应的硬件使得可以在非安全模式中来实现匪I。并且现有的arm-v8规范和软件解决方案也没有提供对匪I机制的支持。因此需要在没有硬件支持的情况下提供一种方法来实现匪I机制。

【发明内容】

[0005]本发明实施例提供一种执行不可屏蔽中断的方法和装置,能够在ARM架构中不依赖于硬件简单地实现匪I机制。
[0006]第一方面,本发明提供了一种执行不可屏蔽中断的方法,包括:在非安全模式下获取安全中断请求,并中断操作系统0S的操作,所述安全中断请求不可被屏蔽;通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文;返回所述非安全模式执行用户定义处理;在所述用户定义处理完成后,再次进入所述安全模式,在所述安全模式下根据所述中断上下文恢复所述0S状态;再次返回所述非安全模式,继续执行所述0S的操作。
[0007]其中,在执行该方法之前,可以对相应的寄存器和异常向量表进行预配置,使得在获取安全中断请求后能够执行不可屏蔽中断流程。
[0008]例如,在ARM架构中,预配置SCR_EL3寄存器的FIQ位为1,使得当获取安全中断请求FIQ时,系统能够知道应执行不可屏蔽中断,从而转向异常向量表查找应路由至的模式。对异常向量表的预配置则可以将地址初始化为VBAR_EL3,使得系统在执行不可屏蔽中断时进入非安全模式。
[0009]基于上述技术方案,本发明实施例的执行不可屏蔽中断的方法通过安全中断请求进入安全模式保存中断时0S状态的中断上下文,返回非安全模式执行用户定义处理后再次进入安全模式恢复0S状态,恢复0S状态后再次返回非安全模式继续执行0S的操作,从而可以不依赖于硬件简单地实现NMI流程。
[0010]结合第一方面,在第一方面的一种实现方式中,返回所述非安全模式执行用户定义处理,包括:在所述安全模式下完成所述中断上下文的保存后,根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理。
[0011]结合第一方面或其上述相应的实现方式的任一种,在第一方面的另一种实现方式中,在所述根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理之前,所述方法还包括:在所述非安全模式的内核kernel启动时调用接口函数,所述接口函数通过安全监控呼叫SMC指令在所述安全模式将所述用户定义函数的地址记录在所述异常返回地址中。
[0012]结合第一方面或其上述相应的实现方式的任一种,在第一方面的另一种实现方式中,所述方法还包括:在所述安全模式的异常向量表中预配置保存函数的地址,所述保存函数用于保存所述0S的操作中断时0S状态的所述中断上下文;所述通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文,包括:当产生所述安全中断请求时,所述安全中断请求不可被屏蔽,根据所述保存函数的地址进入安全模式执行所述保存函数。
[0013]结合第一方面或其上述相应的实现方式的任一种,在第一方面的另一种实现方式中,所述通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文,可以包括:通过所述安全模式中运行的安全监测Secure Monitor软件捕获所述安全中断请求以进入安全模式,通过所述Secure Monitor软件在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文。
[0014]第二方面,本发明提供了一种执行不可屏蔽中断的装置,包括中断模块、保存模块、第一执行模块、恢复模块和第二执行模块,以用于执行第一方面及其相应的实现方式的执行不可屏蔽中断的方法。其中,中断模块,用于在非安全模式下获取安全中断请求,并中断操作系统0S的操作;保存模块,用于通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文;第一执行模块,用于返回所述非安全模式执行用户定义处理;恢复模块,用于在所述用户定义处理完成后,再次进入所述安全模式根据所述中断上下文恢复所述0S状态;第二执行模块,用于返回所述非安全模式,继续执行所述0S的操作。
[0015]其中,第二方面中所指的执行不可屏蔽中断的装置可以是中央处理器CPU。
[0016]结合第二方面,在第二方面的一种实现方式中,所述第一执行模块具体用于:在所述安全模式下完成所述中断上下文的保存后,根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理。
[0017]结合第二方面或其上述相应的实现方式的任一种,在第二方面的另一种实现方式中,所述装置还包括:接口调用模块,用于在所述第一执行模块根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理之前,在所述非安全模式的内核kernel启动时调用接口函数,所述接口函数通过安全监控呼叫SMC指令在所述安全模式将所述用户定义函数的地址记录在所述安全模式的所述异常返回地址中。
[0018]结合第二方面或其上述相应的实现方式的任一种,在第二方面的另一种实现方式中,所述保存模块具体用于:通过所述安全模式中运行的安全监测Secure Monitor软件捕获所述安全中断请求以进入安全模式,通过所述Secure Monitor软件在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文。
[0019]结合第二方面或其上述相应的实现方式的任一种,在第二方面的另一种实现方式中,所述装置还包括:预配置模块,用于在所述安全模式的异常向量表中预配置保存函数的地址,所述保存函数用于保存所述0S的操作中断时0S状态的所述中断上下文;所述保存模块具体用于:当产生所述安全中断请求时,所述安全中断请求不可被屏蔽,根据根据所述预配置模块预配置的所述保存函数的地址直接进入安全模式执行所述保存函数。
[0020]第三方面,本发明提供了一种执行不可屏蔽中断的装置,包括处理器、存储器和收发器,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,以控制收发器进行信号的接收和发送,当处理器执行所述存储器存储的指令时,以用于执行第一方面及其相应的实现方式的方法。
[0021]其中,在第三方面的执行不可屏蔽中断的装置中,收发器可以为一个接口,用于接收硬件向CPU发送的安全中断请求。
[0022]在第一方面至第三方面及相应的实现方式中,所述安全中断请求为快速中断请求FIQ。
[0023]在第一方面至第三方面及相应的实现方式中,用户定义处理可以是用户定义的,能够在不可屏蔽流程中的非安全模式下执行的指令。所述用户定义处理可以包括:保存系统日志、上报0S的状态和喂狗中的至少一种。
[0024]在第一方面至第三方面及相应的实现方式中,所述非安全模式包括进阶精简指令集机器ARM架构的异常等级EL0和ELI中的至少一种,所述安全模式包括所述ARM架构的EL3。
[0025]在第一方面至第三方面及相应的实现方式中,所述安全中断请求是所述OS定时触发看门狗生成的,或者是由于硬件故障触发看门狗生成的。
[0026]本发明实施例的执行不可屏蔽中断的方法和装置,对安全中断请求进行相应的预配置,在获取安全中断请求时能够不受到硬件(例如MASK)的屏蔽,直接进入安全模式执行中断流程的中断上下文保存,继而通过安全模式的安全监测软件在安全模式与非安全模式下切换,实现后续的用户定义处理、0S状态恢复以及继续执行0S的操作等处理,因而可以不依赖于硬
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1