NIC - ドライバインターフェースの悩み

EDS1275さんが、Vmware用にNICドライバを書いてくれているのですが悩んでいます。
誰か詳しい人がいたらアドバイスをいただけると助かります。

前提 - Monaの割り込みインターフェース

割り込みが発生すると、カーネルは事前に登録のあったプロセスに割り込みがあったことをメッセージで知らせます。
つまりドライバの割り込みハンドラが直接Callされることはありません。
この仕組みで

  • フロッピィディスクコントローラ
  • IDE
  • NE2000(NIC)

の3つのドライバはうまく動いています。

Am79C970における問題点

Am79C970はどうやらレベルトリガらしく、ドライバ側の割り込み処理が終了するまでがんがん割り込まれまくる。
すると大量に割り込みメッセージ送信が優先度高めで実行されまくってほかの処理ができなくなる。

どうするか?

何通りか方法があると思っていて

  • エッジトリガにならないか試みる⇒情報もとむ
  • メッセージ機構をあきらめてexport/callにする⇒もう少し踏ん張ろうよ
  • 今EDS1275さんがやっているように、カーネル側で割り込みマスクしてドライバが解除する

あたりかな。
お気づきの点がありましたらぜひお寄せください。