o ニセ。FPGAの programmable pull-up の指定がどこにあるのか探しまくり。 分かりづらい。
o usb(4) いじり。しまった、DMA まわりの設計が良くなかったのでやり直しか…。
o ニセ。FIFO の取りこぼしを発見して修正。 でもデータが流れなくなっちゃうのは別の原因らしい。うーむ。
o usb(4) いじり。確保したメモリを解放する気も、bus_dmamap_sync(9) する気も全く無いコードに失望した。
o ひたすら usb(4) いじり。ohci(4) を直したー完璧ダー(コンパイルしてないけど)。 今まで動いているのが不思議なコードだが、PCI で 32bit マシンなら bus_dmamap_sync(9) 無しでもそれなりに動くんだろうな。
o current を試すたびに壊れているのなんとかなりませんか…。
o ちょっくらコンパイルしてみたらエラーが 1000行単位で出た。 ちまちまと修正。
o コンパイル通ったー。動かないー。うわあん。
o ニセ。FIFO をリセットすると動かなくなる…。分からーん。
o usb(4) いじり。なんか動きだしたー。
自分のアドレス - バッファの先頭アドレス
"
とすべき所Xを、逆に
"バッファの先頭アドレス - 自分のアドレス
"
としてしまい負のオフセットに。
でもなんか落ちる…。
o panic: lockmgr: no context で落ちまくり。ソフトウェア割込み中の bus_dmamem_unmap(9) が原因ぽい。 設計し直さないとだめですかそうですか。
試しに usb_transfer_complete() の後半を usb_add_task() で呼ぶようにしてみたが、task 用スレッドができる前(cold の時)に呼ばれることもあるようでだめらしい。ううむ。
o ニセでUSBコントローラ(ターゲット側)いじり。 転送が止まっちゃうことがあるんだが、原因が全然分からん。うきー。
o usb(4) いじり。 バッファの解放だけ遅らせたらいいんかなあ。 free() だけじゃなくて freex() も割込みコンテキストだから一緒に遅らせるんかな。 task 用スレッドがいなかったら次の alloc 時に解放するとかかな。 って alloc も割込みコンテキストにあるコードがあるな。
これ、設計し直した方がいいような気が……。
休み。
o 病院へ。繁盛してるな。 1030頃に受付して、出てきたら1430くらい。
散瞳剤で目が露光過多でかぶりまくり。仕様通り4〜5時間くらい効いていた。
o 帰りにスーパーに寄ったら改装で休みだった。
o usbdi(9) の関数をチェック。async って書いてあるのに大抵 sleep する罠。
o PCI な IDE コントローラって奇数アドレスに DMA できるのは無いんかな。 少なくとも piixide(4) と viaide(4) はできないっぽい。
o Ni-MH 電池を4本直列にして使っていたのだが、放電特性がかなり偏っているようだ。 4本パックで2本ずつ色分けしてあるが(SANYO HR-3UF-4BP)、 白い2本が早く無くなって青い2本が長持ちする。 色違いは別ロットなんだろうか。
o ニセ。出張準備しながらコーディングしながらデバッグであたふた。
o 久しぶりに東の方に出張。8時頃に発。のぞみ号であづまくだり。
o 早く終わったのでアキバへ。適当に歩いていたらあのチチブデンキを発見。 Libretto 100 の RTC 用電池を GET。1050円。物が一瞬で出てくるのがさすがだ。
o 現在位置がよく分からないのでまず秋葉原駅に行ってから(実は近くだったらしい)、 秋月電子の仮店舗を見物に。テントかよ。 土の上に直接カーペットを敷いているらしく、足元がでこぼこしている。 電源まわりの部品を GET。
o HDD 屋を探したが迷ったのであきらめる。
o 18時頃に離脱。 のぞみの FM ラジオの 79.6 MHz で NHK 第1 を聞いていたが、妙に音が悪い。 走っている近くの第1放送を再送信していることは分かった。
帰ってきたら23時。疲れた。
o 半年ぶりに献血。 献血手帳から献血カードへの切り替えで受付が大混雑。え、暗証番号? 次回までには確実に忘れちゃうよ…。
献血車の中も大忙しのようだ。システムが変わったのか、作業が増えているっぽい。 大変だな。
休み。Zzz...
o ちょっとだけコードいじり。
o usb(4) いじり。sleep できない時の bus_dma(9) な unmap/destroy/free を遅らせるようにしてみる。うーん、どうも安定しないなあ。 ハングしたり、 panic: uvm_pglistalloc: page not on freelist とかいろいろ。
async なインタフェースで allocm しているのはインタフェースの仕様ごと直さないとだめだな…。
o とりあえず現状の usb(4) を投げてみる。 サイズ制限にひっかかってなかなか流れてこない。 あとはまかせた。
o ちょっと調べもののために AlphaStation 500/500 を起動。
WARNING: clock gained 413 days -- CHECK AND RESET THE DATE!
去年の1月以降起動していなかったらしい。
o SPARCstation 10 も起動。
WARNING: clock gained 324 days -- CHECK AND RESET THE DATE!
なんか起動しにくくなってる…。電源まわりかな。
o ML に流したのに返事が直メイルばかりってのは何か事情があるんでしょうか(汗)。
o 寮の食堂の業者が変わった(関連会社らしいから何も変わっていないけど)記念で、 おまけのお菓子を配っていたのでGET。
o DMA を使わないコードを書いたり。
o slhci(4) をやっつける。こいつは簡単〜。
o ehci(4) いじり。やっぱり DMA を使う方がが面倒くさい。 こいつも全く bus_dmamap_sync(9) が無い。よく動いてるな…。
o FORTRAN と BNF の John Backus さんぽなくなり。17日。
o clcs(4) が初期化に失敗して音まわりが動かなくなった。 ハングしなかっただけましだけど。 仕方がないので再起動。uptime は 38日と1時間くらい。
o usb いじり。uhci(4) やっつけ。 usbd_do_request_async() が async じゃないのをやっつけ修正。
o ThinkPad の Contol キー(にしている CapsLock キー)がきしむのでキートップを外して掃除。 だいたい直った。 ほこりやら髪の毛やらが挟まっていた。
o メモリリーク検出用にデバッグコード書き書き。
o メモリリーク検出用にデバッグコード書き書き。 メモリリークを発見。修正。
o uhci(4) をテスト。バグってたので修正。
o NHK-FM をつけたら高校野球。???
北陸で地震だったらしい。どこでも起きるな…。 ぐっすり二度寝していたので気付かなかった。
o umass(4) が割込みコンテキストでメモリ確保しようとしているのでちまちま修正。 DIAGNOSTIC な panic を追加。
o しかし時々 panic: uvm_pglistalloc: page not on freelist になるのは直らない…。
o 近くの上新へサイクリング。特に収穫なし。
工人舎のノートに触る。ソフト的に CardBus ブリッジが見えるのに CardBus スロットが無いのが残念すぎる。LAN はカニ。
なんか眠すぎる……。
o ソメイヨシノが数輪咲きかけ。
o うーむ、ehci/ohci/uhci で、descriptor を持ってくる時に割込みコンテキストでメモリ確保することがあるようだ。 私が入れたんじゃなくて元々あったものだけど。 これを直すのは 1. ad hoc な workaround, 2. 根本的に設計し直し のどっちがいいかな。
設計し直しなら bus_dmamap_sync(9) がすごく面倒なのも一緒に直したい所X。
o 桜の開花宣言とな。
o 赤十字血液エンターから結果のお葉書。全部標準値だけどちょっと高めの値が…。
o usb(4) いじり。なんとなく ad hoc でいいような気がしてきた。……が uhci(4) の不連続データをコピーするためのバッファだけはうまくいかない気が…。
o ニセ。微分しまくり。
o [eou]hci(4) いじり。 やっぱり根本的にダメな気がしてきたけど書き直すのは面倒だな…。
o ニセ。screen が暴走した。ぎゃー。
o 父からメイルが来た。ケータイらしい。
まだ咲きかけの桜が風でちょっと散ってる。
o ニセ。送らてきたソースに
1/8*foo* ...
みたいな感じのコードを発見。
いくら foo が浮動小数でも頭から計算されるから 0 だよ…。
o 床屋へ。途中から煙が出現。逃げられない。
o 予備の Dreamcast を GET。
o 帰省するか。11時前に発。 着いたらなんかひんやりしている…。
o 父親が DVD を買っていたので魔笛を第1幕だけ見たり。ドイツ語じゃ分からん。
o 夜に猛烈に雷雨。