OpenBSD Hackathon h2k9 homework #1

Miodからの指摘でsecondary cpuのci->ci_curprocpaddrをproc0paddrからidle_taskのpaddrに変えてみたが、やはりtrapする。良くみてみるとアドレスが無効な値になっていて、どうもこの時点ではまだアロケートされていないように見える。

という話をMiodにしたら、やっぱり実際にプロセスを作るまでアロケートしないって事らしい。
ではどうするのか?と思ったら、スケジューリング始めるまではkstack使っちゃって大丈夫っしょ。と。
スタックポインタは終端から使ってるから、まぁ大丈夫か。

この問題を解決してみたら、今度はci->ci_ipl == IPL_HIGHな状態でmp_lockをspinしているCPUに対してTLB shootdownを行おうとしてデッドロックするという問題に出くわす。
これは、IPL_HIGH < IPL_IPIという構成に直すしかないだろう、との指摘。

依然トライアンドエラーな状態なので、まだコミットする為のパッチを作る段階ではないかなぁ。