2008.03.28 AsiaBSDCon 2008 初日 またひとつ伝説を作った気が…。。 orz というわけで AsiaBSDCon 2008 が開催されました(03/27 ね)。色々と 楽しかったのでメモしておきます。 色々と気がついたこと。 1. ひさびさの無線 LAN で…。 8-current のノートで設定してたら, スキャン(モードやチャンネル を変える)しなかったので, wlan_* なモジュールでも増えたかなぁ と /boot/kernel の下を見たら wlan_scan_ap.ko や wlan_scan_sta.ko なるモジュールが…。。 orz 組み込んだら総当たり(?)で探しはじめてなんとか見付かったとさ。 2. 危険な作業(後述)するために single user mode で zfs snapshot -r したら失敗した。どうもマウントしてないとダメみたい。オンライン でしかサポートしてなかったのねん。 > zfs snapshot 3. brooks 氏みたいなバリバリの開発者でも普通に #include <... とか main 関数書いたらすぐに {} を書いて, {} の中身を書くのねんとか 普通にプログラミングする姿にちょっとかんどーしました。 なんか他にもあったような気がするけどだいたいこんなもので。 ■伝説1(?) お昼休みに外タレと一緒にランチに行きました。調子に乗った私は当然 ノートを持って gnn 氏や rss 氏やらの前で UFS 無いよと自慢(爆) し てたら, そのまま mckusick 氏の手元に持ってかれてしまい, kldload -v | grep ufs の結果を見られてしまいました。苦笑いされて しまった…(^^;。UFS Free なんてシール張らんでよかった。。(^^; ■伝説2(?) さて。今回 devsummit のテーマは事前には予定されておらず, その場で 「Fixing suspend/resume」と称して私のノートがまな板の上にあがりま したとさ(爆)。gnn 氏の様子^H^H動機を見てるとどうやら昔, 私がノー トのサスペンド/レジュームができたよー[1]というのを見せてたことが 気になってたみたいで, 現状どうよというというところから始まったみ たいです。 imp 氏が device tree をホワイトボードに書いて, brooks 氏やら imp 氏やら何やら書き始めて, しばらくすると imp 氏からパッチがあがって きました[2]。見たところデバイスツリーを子に向けてリカーシブに suspend/resume させるというものだったので, デバイスドライバレベル での suspend/resume がどの程度うまくいくのか切り分けのためのプロ グラムと認識しました。 ちょうどそのタイミングは csup 終わった直後で, sys/kern/subr_bus.c という共通関数をいじっていたので, カーネルの再構築を行いました。 というわけであのパッチを 1 時間後(そんなにかかった!!)に実験する こととなりました(もちろん私のノートで)。 まぁ私がいきなり pci バス止めようとしたところを ume さんらに止め られ, まっとうに USB デバイスのはじっこから suspend/resume して みました。このあたり devinfo -v とにらめっこしながら検証と。ちゃ んと single user mode での検証よ。ということで。 uhub 効かない。活線挿抜を認識。おそらく suspend/resume のコード はない。 ehci 効いた。活線挿抜は認識せず。resume 後に活線挿抜すると同時に イベント(前のデバイスを抜いて新しいデバイスを認識)が働いた。 uhci 同上。 rl 効いた。MII 回り, つまりリンクステータスが取得できなかった。 suspend 中に抜き・挿ししても resume 後には認識できず, ifconfig を実行した直後に, MII にアクセスいったせいか, その 時イベントがあがってきた。 pcib 効かない。おそらく suspend/resume のコードはない。 pci 効いた。配下のデバイス全部が suspend/resume した。 atapci 効いた。事前に devctl, sleep, daemon, ls 等のコマンドを実行 しておいてそれらのコマンドをキャッシュした状態で実行したと ころ, suspend 中は ls が止まることが確認できました。これに はみんな驚いたようで, ata ドライバで suspend/resume 効くの ねん。と改めて認識されました。 ad 同上。 timer関係 atkbdc atkbc 効かない。全体的に isa デバイスの suspend/resume のコード が無いみたい。実際の電源が落ちるその瞬間まで生きてる感じ です。 isa 効いた。と思う。resume したよ。というメッセージが画面に。。 nexus 効いた。ネタがなくなってきたので nexus に挑戦したところ, 画面が消えて, もどってくるという現象でした。一番エキサイト だったせいか, imp 氏から「キ○○イ」とのお言葉をいただきま した:-)。 結構アグレッシブなことやってると思われたみたいで, いい感じに盛り上 がりました。また自分的に感動したのは detach, attach が働かなかった ことで, 当然といえば当然なのでしょうが, やっぱ suspend/resume って やつは違うなぁと思いました。 まぁざっとこんなもので。 参考文献 [1] http://blog.ninth-nine.com/diary/20060604.txt http://blog.ninth-nine.com/diary/20060825.txt http://blog.ninth-nine.com/diary/20061101.txt [2] http://lists.freebsd.org/pipermail/freebsd-arch/2008-March/007885.html Written by 重村法克