17

次のメッセージの意味を理解しようとしています。

irq N:nobody cared (try booting with the "irqpoll" option)

これは、IRQハンドラーが割り込みを受け取っても応答を処理しないことを意味しますか?または、スケジューラーがirqハンドラーを呼び出せなかったということですか?

これはどのような状態で起こっていますか?

4

5 に答える 5

10

これは、そのirqにハンドラーが登録されていないか、共有割り込みの場合にirqが(彼がサポートしているハードウェアから)彼のためではなかったことを示すステータスが返されるハンドラーが、おそらく障害のあるHW/FWまたはバグのあるドライバーであることを意味します

于 2012-12-13T14:27:49.803 に答える
9

理想的には、上記のメッセージの後にスタックトレースが続く必要があります。これは、問題の原因となっているサブシステムを特定するのに役立ちます。このメッセージは、オーバーヘッドが原因で割り込みハンドラがスタックし、戻ってこなかったため、システムがIRQ#Xを無効にしたことを意味します。これは、バグのあるファームウェアの場合に見られます。

このirqpollオプションをgrub.confに追加する必要があります。つまり、割り込みが処理されない場合は、既知のすべての割り込みハンドラーで適切なハンドラーを検索し、各タイマー割り込みのすべてのハンドラーをチェックします。これは、ファームウェアが壊れているシステムを実行する場合に役立つことがあります。grub.confのカーネルコマンドラインは次のようになります。

カーネル/vmlinuz-バージョンroroot= / dev/sda1静かなirqpoll

于 2014-11-19T02:21:31.823 に答える
7

最小限の実行可能なQEMUの例

QEMUには、edu割り込みを生成するという教育用デバイスがあり、これを探索するのに最適です。

まず、割り込みを正しく処理する最小限のLinuxPCIデバイスドライバーを作成しました。

これで、コメントアウトしてコードからエラーを簡単に生成できrequest_irqますfree_irq

次に、IRQを生成するユーザーランドプログラムを実行すると、次のようになります。

irq 11: nobody cared (try booting with the "irqpoll" option)

スタックトレースが続きます。

他の人が述べたように:未処理のIRQ。

于 2017-06-24T09:03:40.937 に答える
1

私の場合、ネットワークカードに短期間に数十億のエラーが発生したため、ドライバをリロードした後です。

modprobe -r ixgbe && modprobe ixgbe 

lspciは、「カード」が使用されていた未知のデバイスを示しました

再起動後、カードは消え、二度と表示されなくなりました。

そのため、エラーはハードウェアの障害も示している可能性があります。

于 2013-08-26T10:20:29.363 に答える
-7

ここを参照してください:

static inline int bad_action_ret(irqreturn_t action_ret)
{
    if (likely(action_ret <= (IRQ_HANDLED | IRQ_WAKE_THREAD)))
        return 0;
    return 1;
}
于 2017-05-29T14:51:59.953 に答える