エラーメッセージ「couldn't map mmio space」を頼りにカーネルのソースコードを探してみると、hdaudio_pci.cの中にあるhdaudio_pci_attach()しかありません。この中でpci_mapreg_map()を呼び出してエラーが返っているのでしょう。
pci_mapreg_map()は/usr/src/sys/dev/pci/pci_map.cで定義されています。問題個所を絞り込んでみるとbus_space_map()がエラーを返しています。これは/usr/src/sys/arch/x86/x86/bus_space.cにありますから、さらに問題個所を絞り込んでいきます。するとbus_space_reserve()が怪しいようです。さらに中に入り込んで調べていくと/usr/src/sys/kern/subr_extent.cにあるextent_alloc_region()に辿りつきました。
このextent_alloc_region()の中でif (rp->er_end >= start)という判定を行っていますが、これに引っ掛かってエラーを返すようです。この時にrp->er_endが9dfffでstartが0なので、条件が成立してしまうようです。
とりあえずここまでは調べましたが、これは一体なにが問題なのでしょうか。
- NetBSDのhdaudio(4)がRealtek ALC262に対応していないか、対応が不完全なのか。
- Realtek ALC262を使っているdynabook SS SX/15Aに起因する何かの問題なのか。
どうすれば解決に至ることができるのか、考えてみようと思います。
0 件のコメント:
コメントを投稿