Oops: timer tick before it's due (itc=itc_value,itm=itm_value)
カーネルの修正情報を確認して同様の問題が修正されていないかを確認する。
設定しておいたタイミングになる前にインターバルタイマが動作した状態(ITC<=ITM)となっている。 (ITCの値:itc_value, ITMの値: itm_value)
IA-64プロセッサは、クロック入力に対応してカウントアップされるITCの値が、あらかじめITMに設定された値に達するとインターバルタイマ割り込みを発生させる。このインターバルタイマ割り込みの延長で呼ばれるハンドラ関数 (timer_interrupt())は、その内部でプロセッサから現在のITCを取得してITMの値と比較する。ここでインターバルタイマ割り込みの発生時点ではITC>=ITMが成立しているはずであり、その後ハンドラ関数内でいくつかの命令を実行したあとに実行される上記の比較時点では ITCの値が増大しているのでITC>ITMが成立すべきであるが、これが成立していない(ITC<=ITM)場合に本メッセージが出力される。
本メッセージが出力されるのは「設定したタイミング(ITC==ITM)に達していない時点(ITC<ITM)でインターバルタイマ割り込みが発生してハンドラ関数が呼ばれた」ような状態であり、これはカーネルが想定していない事態であるためメッセージテキストに”Oops”という文字列が含まれるが、一般のkernel oopsとは異なりpanicすることはない。本メッセージが出力されてもインターバルタイマは動作を継続するが、カーネルのインターバルタイマ処理に問題(*1)が発生していることが疑われる状態であり、原因を究明して対処しない限り、インターバルタイマの延長で動作するカーネルの各種処理が、正しいタイミングで期待どおりに実行されないおそれがある。
- (*1) たとえばITCの値がITMに設定された値に達してからハンドラ関数が呼ばれるまでの合間にカーネルがITC/ITMの値を不正に書き換える等