編集可能
2021年3月1日

オープンソースカンファレンス2021 Online/Spring NetBSDのご紹介 の記録

2021/3/6 10:00-10:45 JST(UTC+9) に行われる オープンソースカンファレンス2020 Online/Spring での「NetBSDのご紹介」の記録です。 #osc21on #NetBSD
3
Jun Ebihara @ebijun

まとめを更新しました。#osc21os「オープンソースカンファレンス2021 Online/Osaka NetBSDのご紹介 の記録」 togetter.com/li/1658323

2021-01-30 08:56:34
isaki @isaki68k

NetBSDセミナーまにあた #osc21os

2021-01-30 09:57:44
isaki @isaki68k

セミナー聞きおわた。お疲れ様でした。 #osc21os

2021-01-30 10:50:32
isaki @isaki68k

openの race condition のほうは片付きそうだ(;´Д`) 脳内シミュレーションでは。

2021-01-30 13:42:42
isaki @isaki68k

それはかくかくしかじかで出来ないという作文しながらドライバ片っ端から調べてたら、いや出来るなこれ、となって作文をやり直してたけど、別件でまた片っ端から調べてたらやっぱ出来ねえな、ってなってて話が進まない。orz

2021-02-01 22:05:54
isaki @isaki68k

unlinkあたりのロックがアレな件で、hw_if->{close,halt_*}をexlockなしで呼べたらこう書けるんじゃね?っていうお便りが先々週くらいに来ててずっと調べてるけど、まだ返事に辿り着けぬい。というか問題が多い。

2021-02-01 22:09:08
isaki @isaki68k

こう書けるんじゃね、についてはcloseが2つ同時に来た時にロックなしでatomicだけでは防げないような気がするんだけど、という気はしてるのだけど。

2021-02-01 22:10:49
isaki @isaki68k

hw_ifの呼び出し制約のほうはよー分からん。自分でsc_lockを外しちゃう人は(closeとhalt_*については)もういなくなってて、あとざっと関係ありそうなのが btsco, auich, auvia, eso, gcscaudio, uaudioの6人。

2021-02-01 22:27:16
isaki @isaki68k

btscoはcloseとhalt_*でfree()してる(ので本当はsc_lockで呼んではいけない)、 auich, auvia はcloseでintr_lock外してるけど調べた感じ外す必要なさげなので修正できそう。 esoはhalt_*でcv_timedwaitのためにintr_lock外してる。ディレイの入れ方それでいいのかという気はするけど。

2021-02-01 22:29:53
isaki @isaki68k

gcscaudioはhalt_*でfree()してて(なのでsc_lockで呼んではいけない)、これはめっちゃ頑張れば直せそうだけど。 uaudioはhalt_*がusb系のルーチン呼ぶためにintr_lock外してる。

2021-02-01 22:32:14
isaki @isaki68k

てことで、元々こっちがenterしたsc_lockを向こうで勝手に外しやがるからexlock用意したんだけど、ここに限ると問題はintr_lock外したい人ばっかりだったということでなんか思ってたんと向きが違う…。

2021-02-01 22:34:25
isaki @isaki68k

halt_* がみんなintr_lockされてるから困ってるというならintr_lockなし、sc_lockあり(exlockなし)という仕様も出来なくはないと思うけど、その場合逆に残りの人のhalt_*がintr_lockかかってる前提で動いてるはずなので、それ全部mutex_enter入れて回るという話だけど、それは絶対嘘だよなあ。

2021-02-01 22:39:29
isaki @isaki68k

「動いてるものは触ってはいけない、なぜならそれは奇跡だから」という名言を思い出さなければならない。

2021-02-01 22:44:26
isaki @isaki68k

やっぱりhw_ifの仕様は変えずに解決策を考えないといけない気がする。

2021-02-01 22:46:08
isaki @isaki68k

それはそうとして、動いてるから触らなくてもいいんだけど:-)、free()することがまあある程度考えられるcloseがsc_lockで呼びだす規約になっていて、kmem_freeはロック持ったまま呼ぶなという規約なのは、まあ確かにその仕様はどうなのかという気はしてはいる…。

2021-02-01 22:49:20
isaki @isaki68k

それについてはaudio_unlinkがexlockで動けるならhw_if.closeもsc_lockなしで呼び出せるので、そっちへ寄せるほうがやっぱいいよなあ。

2021-02-01 22:51:47
isaki @isaki68k

そうするとaudio_closeがexlock待ちのcv_wait(無期限ブロック)をせざるを得ないか、多少リソースリークしても大勢に影響ないので(ぉぃ)cv_timedwaitしておけば(closeが返ってこないことに比べれば)ユーザへのインパクトは低い…。

2021-02-01 22:54:43
Kenji Aoyama @ao_kenji

そしてSCSI HDDへddで書き込める環境がO/luna88kしかなかった:-) 外付けSCSI箱もないので、88K2をばらしてHDDをつながないといけないか。

2021-02-01 22:55:57
isaki @isaki68k

複数のディスクリプタが1つのハードウェアを直結して共有して、さらにどの瞬間にもデタッチが同時に起きる、このaudioの仕様考えたやつほんまお前が解決せーや…。orz

2021-02-01 22:57:58
Kenji Aoyama @ao_kenji

@tsutsuii ありがとうございます。純正230MB HDD(ハーフハイト)はあるのでSCSI外付け箱があると助かります。

2021-02-01 23:12:46
Kenji Aoyama @ao_kenji

初代LUNA(左)のネットワークボードはLUNA-88K(右)のものと同じ:-) pic.twitter.com/4jOEqidDYK

2021-02-02 19:09:55
拡大
Kenji Aoyama @ao_kenji

ということでネットワークボードを交換したらbootloaderが無事起動した。

2021-02-02 19:35:06
Kenji Aoyama @ao_kenji

正常動作時のisibootd(8)のログ(frameのダンプ付き) gist.github.com/ao-kenji/c1594…

2021-02-02 19:43:53
Jun Ebihara @ebijun

wip/texlive-collection-langjspanese on NetBSD/aarch64 on pinebook.dviまでできた。あとはPDF変換。とんぬらさんありがとうございます。 pic.twitter.com/torAoexCT1

2021-02-03 09:18:58
拡大
残りを読む(273)

コメント

Jun Ebihara @ebijun 2021年3月6日
まとめを更新しました。
0