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

技术编号:12787736 阅读:62 留言:0更新日期:2016-01-28 16:17
本发明专利技术公开了一种执行不可屏蔽中断的方法和装置,该方法包括:在非安全模式下获取安全中断请求,并中断操作系统OS的操作,该安全中断请求不可被屏蔽;通过所述安全中断请求进入安全模式,在所述安全模式下保存所述OS的操作中断时OS状态的中断上下文;返回所述非安全模式执行用户定义处理;在所述用户定义处理完成后,再次进入所述安全模式,在该安全模式下根据所述中断上下文恢复所述OS状态;再次返回所述非安全模式,继续执行所述OS的操作。本发明专利技术实施例的执行不可屏蔽中断的方法和装置,可以不依赖于硬件简单地实现NMI。

【技术实现步骤摘要】

本专利技术实施例涉及服务器领域,并且更具体地,涉及一种执行不可屏蔽中断的方法和装置
技术介绍
服务器一般对系统稳定性有着极高的要求。在系统正常运行时候能够定时保存系统的状态,同时也需要在系统异常的时候能够保存一些关键数据,为定位系统出错原因提供数据支撑。因为系统正常运行时,可以有多种方法和手段来保存系统数据,但是系统异常时一一最严重的就是死机时,所有常规方法和手段已经不可行,所有中断也无法响应。此时需要不可屏蔽中断(Non Maskable Interrupt, NMI)机制来保存数据。NMI即中央处理器(Central Processing Unit,CPU)不能屏蔽的中断,无论状态寄存器中的中断标识(Interrupt Flag,IF)位的状态如何,CPU收到有效的匪I必须进行响应。匪I通常用于故障处理,例如协处理器运算出错、存储器校验出错、输入/输出(Input/Output,I/O)端口校验出错等,用于保存操作系统(Operating System, OS)的错误状态和异常信息等。因此NMI是当前服务器领域非常重要的问题定位手段,对产品本身来说,也是非常重要的特性。当前的X86和单字长定点指令平均执行速度(Mill1n Instruct1ns PerSecond, MIPS)等架构都有对应的NMI实现机制。主要是定时触发或由硬件故障触发一个中断,该中断无法被屏蔽,即使系统已经发生死锁,也能响应中断。X86和MIPS等架构通过硬件手段使得系统在非安全模式中执行匪I涉及的数据保存,以及书写系统日志和喂狗等用户定义处理。但是在进阶精简指令集机器(Advanced RISC Machine,ARM)架构中,没有对应的硬件使得可以在非安全模式中来实现匪I。并且现有的arm-v8规范和软件解决方案也没有提供对匪I机制的支持。因此需要在没有硬件支持的情况下提供一种方法来实现匪I机制。
技术实现思路
本专利技术实施例提供一种执行不可屏蔽中断的方法和装置,能够在ARM架构中不依赖于硬件简单地实现匪I机制。第一方面,本专利技术提供了一种执行不可屏蔽中断的方法,包括:在非安全模式下获取安全中断请求,并中断操作系统0S的操作,所述安全中断请求不可被屏蔽;通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文;返回所述非安全模式执行用户定义处理;在所述用户定义处理完成后,再次进入所述安全模式,在所述安全模式下根据所述中断上下文恢复所述0S状态;再次返回所述非安全模式,继续执行所述0S的操作。其中,在执行该方法之前,可以对相应的寄存器和异常向量表进行预配置,使得在获取安全中断请求后能够执行不可屏蔽中断流程。例如,在ARM架构中,预配置SCR_EL3寄存器的FIQ位为1,使得当获取安全中断请求FIQ时,系统能够知道应执行不可屏蔽中断,从而转向异常向量表查找应路由至的模式。对异常向量表的预配置则可以将地址初始化为VBAR_EL3,使得系统在执行不可屏蔽中断时进入非安全模式。基于上述技术方案,本专利技术实施例的执行不可屏蔽中断的方法通过安全中断请求进入安全模式保存中断时0S状态的中断上下文,返回非安全模式执行用户定义处理后再次进入安全模式恢复0S状态,恢复0S状态后再次返回非安全模式继续执行0S的操作,从而可以不依赖于硬件简单地实现NMI流程。结合第一方面,在第一方面的一种实现方式中,返回所述非安全模式执行用户定义处理,包括:在所述安全模式下完成所述中断上下文的保存后,根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理。结合第一方面或其上述相应的实现方式的任一种,在第一方面的另一种实现方式中,在所述根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理之前,所述方法还包括:在所述非安全模式的内核kernel启动时调用接口函数,所述接口函数通过安全监控呼叫SMC指令在所述安全模式将所述用户定义函数的地址记录在所述异常返回地址中。结合第一方面或其上述相应的实现方式的任一种,在第一方面的另一种实现方式中,所述方法还包括:在所述安全模式的异常向量表中预配置保存函数的地址,所述保存函数用于保存所述0S的操作中断时0S状态的所述中断上下文;所述通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文,包括:当产生所述安全中断请求时,所述安全中断请求不可被屏蔽,根据所述保存函数的地址进入安全模式执行所述保存函数。结合第一方面或其上述相应的实现方式的任一种,在第一方面的另一种实现方式中,所述通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文,可以包括:通过所述安全模式中运行的安全监测Secure Monitor软件捕获所述安全中断请求以进入安全模式,通过所述Secure Monitor软件在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文。第二方面,本专利技术提供了一种执行不可屏蔽中断的装置,包括中断模块、保存模块、第一执行模块、恢复模块和第二执行模块,以用于执行第一方面及其相应的实现方式的执行不可屏蔽中断的方法。其中,中断模块,用于在非安全模式下获取安全中断请求,并中断操作系统0S的操作;保存模块,用于通过所述安全中断请求进入安全模式,在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文;第一执行模块,用于返回所述非安全模式执行用户定义处理;恢复模块,用于在所述用户定义处理完成后,再次进入所述安全模式根据所述中断上下文恢复所述0S状态;第二执行模块,用于返回所述非安全模式,继续执行所述0S的操作。其中,第二方面中所指的执行不可屏蔽中断的装置可以是中央处理器CPU。结合第二方面,在第二方面的一种实现方式中,所述第一执行模块具体用于:在所述安全模式下完成所述中断上下文的保存后,根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理。结合第二方面或其上述相应的实现方式的任一种,在第二方面的另一种实现方式中,所述装置还包括:接口调用模块,用于在所述第一执行模块根据所述安全模式的异常返回地址返回所述非安全模式,执行用户定义函数以完成所述用户定义处理之前,在所述非安全模式的内核kernel启动时调用接口函数,所述接口函数通过安全监控呼叫SMC指令在所述安全模式将所述用户定义函数的地址记录在所述安全模式的所述异常返回地址中。结合第二方面或其上述相应的实现方式的任一种,在第二方面的另一种实现方式中,所述保存模块具体用于:通过所述安全模式中运行的安全监测Secure Monitor软件捕获所述安全中断请求以进入安全模式,通过所述Secure Monitor软件在所述安全模式下保存所述0S的操作中断时0S状态的中断上下文。结合第二方面或其上述相应的实现方式的任一种,在第二方面的另一种实现方式中,所述装置还包括:预配置模块,用于在所述安全模式的异常向量表中预配置保存函数的地址,所述保存函数用于保存所述0S的操作中断时0S状态的所述中断上下文;所述保存模块具体用于:当产生所述安全中断请求时,所述安全中断请求不可被屏蔽本文档来自技高网
...

【技术保护点】
一种执行不可屏蔽中断的方法,其特征在于,包括:在非安全模式下获取安全中断请求,并中断操作系统OS的操作,所述安全中断请求不可被屏蔽;通过所述安全中断请求进入安全模式,在所述安全模式下保存所述OS的操作中断时OS状态的中断上下文;返回所述非安全模式执行用户定义处理;在所述用户定义处理完成后,再次进入所述安全模式,在所述安全模式下根据所述中断上下文恢复所述OS状态;再次返回所述非安全模式,继续执行所述OS的操作。

【技术特征摘要】

【专利技术属性】
技术研发人员:马军丁天虹童肇哲
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1