NMI, FIQ 与arm构架那点事-(2)

微信公众号 mindshare思享

以下内容会谈到:

1.   NMI的使用场景。

2.   在arm上怎么模拟NMI

a.   通过GIC的中断优先级模拟

b.   通过SDEI接口模拟

NMI的使用场景

 

首先我们来说一下NMI的使用场景。

在x86上,很久以前就使用NMI来作为调试手段:

  • 早期的PC 用它来报如内存出错这样的硬件问题

  • 现代的服务器在前面板上有一个物理的NMI按钮

  • 看门狗中断可以发送到NMI, 进而得到系统出现问题(比如hard lock,检测在中断禁止情况下的deadlock)的现场信息,而不是仅仅重启。

  •  performance counter 可以直接挂到local APIC上。

Hard lockup detector使用一个周期性的NMI来检测中断被长时间关闭而导致严重的问题(hard lockup)。

NMI中断周期性产生,这个中断会调用函数就是watchdog_overflow_callback,

这个函数主要就是调用is_hardlockup。

而这个函数主要就是查看hrtimer_interrupts变量在时钟中断处理函数里有没有被更新。

假如没有更新,就意味着中断出了问题,可能被错误代码长时间的关中断了。

如果有问题的话,触发show_regs和CPU backtrace来调试hardlockup问题。

猜你喜欢

转载自blog.csdn.net/weixin_39366778/article/details/82662725