1. 程式人生 > >NMI, FIQ 與arm構架那點事-(2)

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問題。