QEMU-0.8.0デバッグ中

実況中継気味。

現象

QEMU-0.8.0(with vlan, tapパッチ)でMonaを実行するとNE2000が見つからない。

検証1

  1. QEMUのne2000.cにデバッグ文埋め込みスタート
  2. #define DEBUG_NE2000を有効にする
  3. 初期化処理っぽい、void pci_ne2000_init(PCIBus *bus, NICInfo *nd)の先頭でTRACE


→何も表示されず。ビルド時に何か指定する必要あり?

検証2

./configure --helpしてみる。
→特にそれらしいオプションはない。

検証3

ソースを読む覚悟を決める。
http://d.hatena.ne.jp/higepon/20060107/1136628498

gtags -v

検証4

pci_ne2000_initの呼び出し元であるpc.cの

/* PC hardware initialisation */
static void pc_init1

の呼び出し直後でTRACE
→呼ばれている


ではどこでpci_ne2000_initがカットされているんだろうか?
id:higepon:20060212:1139757670のelispを利用してがんがんTRACE文を埋め込む

    if (pci_enabled) {
        for(i = 0; i < nb_nics; i++) {
            pci_ne2000_init(pci_bus, &nd_table[i]);
        }

ここのpci_enabledには入っているが、ループが回っていない。
nb_nicsが0っぽいな。


やっと分った。
起動オプションで

 -net nic -net tap,ifname=my-tap

とするべきところを

 -net tap,ifname=my-tap

としていた。
これははまるなぁ。 -netというオプションが2回も出てくるはずないと思って削ったんだろうなぁ。。。


でもとりあえずひとつクリア。
明日はパケットがうまく取れない件を調べます。