vmxnetドライバのバグ.

本業が上手くいかない.気分転換に年末にリリースされたlinux-2.6.10を試すことにする.で早速問題発生…orz.

VMware 5 beta の仮想NICのドライバ vmxnet.ko が動かない.調べてみると,linux-2.6.10からPCIバイスへのIRQの割り当て方法が変わったらしい.その影響で割り込みがドライバに入ってこない.

というわけで,久しぶりにドライバをhackすることに.

ちょろっとソースを眺めた結果,vmxnet.c ではPCI関連のリソースを確保する際に,pci_enable_device() をcallしていないことが判明.これだとIRQが正しく仮想NICにルーティングされない.というわけで,pci_enable_device()とpci_disable_device()を追加してあげると正常に動作するようになった.あっさり解決するとは,新年早々幸先が良い.

それにしてもvmxnetのソースはキタナすぎる.特にpci関連のリソース管理にはまだまだ何か別の問題がありそう.たとえばrmmod するとカーネルが落ちるとかとか色々ありそうな予感.