MIPS

EdgeRouter LiteでOpenBSD/OCTEONカーネルロードしてみる

Looking for valid bootloader image.... Jumping to start of image at address 0xbfc80000 U-Boot 1.1.1 (UBNT Build ID: 4493936-g009d77b) (Build time: Sep 20 2012 - 15:48) BIST check passed. UBNT_E100 r1:2, r2:12, serial #: DC9FDB2920A7 Core c…

UbuntuでNetBSD/evbmipsのクロスビルド

MenTOS revengeでmipselのクロス環境が必要になったので、binutils,gccをビルドしなきゃなーって思ったけどやりはじめたらめんどくさくなってきて、NetBSDのbuild.sh使った方が早かったのでこれを使うことにした。以下のコマンドは~/netbsdディレクトリ以下…

panicを解決してメモリ量が出る所まで進んだ

panicの原因はphysmemを初期化していないのが原因だったので、これにきちんと物理メモリ量を代入するように直した。 cvmctl:900043f0 cvmmemctl:46104 Unknown Boot-Descriptor: Using Defaults Boot Descriptor Ver: 0 -> 0/0 CPU clock: 500MHz Core Mask:…

Copyrightが出てpanicする所まで来た

ページテーブルを引く所でこけてるから仮想メモリ周りが悪いのかと思ったら、NULLポインタを解決しようとして何故か初期化されてないproc0のユーザ空間向けページテーブルを引いているのが原因だった。NULLポインタを関数コールしてるコンソール周りを直した…

OpenBSD/OCTEONが起動しなかった

ページング周りが全然ダメで、仮想アドレス使い始めた瞬間に死んでしまう使えないシロモノが出来上がった。 その辺のコードはどのMIPSでも大体共通で、特にOCTEONで気をつけるべき部分は無いかと思っていたので、なんでうまく行かないのかよく分からず悩み中…

FreeBSD/mipsが某ルータで起動した

http://svn.freebsd.org/base/user/jmallett/octeonをcheckoutしてきて、ブートローダの違いで動かん部分をゴニョゴニョした。 まぁ、殆どコメントアウトしただけなんだが。 Cache info: picache_stride = 4096 picache_loopcount = 4 pdcache_stride = 128 …

cpu1にIPIがかからないずら。

現状: cpu1でクロック割り込みはかかる cpu0→cpu0のIPIはかかる cpu1→cpu0のIPIはかかる cpu1→cpu1のIPIはかからない cpu0→cpu1のIPIはかからない 何となく、割り込みコントローラへの設定などなどがしくってるような気がするけど、IMR0の値もステータスレ…

IPI

Linuxを参考に、IPIのIRQをヘッダに足してみる。 Index: hub.h =================================================================== RCS file: /cvs/src/sys/arch/sgi/xbow/hub.h,v retrieving revision 1.7 diff -u -p -r1.7 hub.h --- hub.h 8 Nov 2009…

割り込みコントローラへのSMP対応コード

全く動作確認取ってないしコンパイルすら通してないけど、俺のゴーストはこれで大丈夫とささやいてるから多分大体あってるはず。 アクセスするレジスタ類はLinuxのip27のコードに合わせて、interm,imaskの配列化は以前ip30向けに実装したコードを参照。 Inde…

Exceptionはハンドル出来てるぽ

hw_cpu_hatch()で割り込み有効にしてbreakかけてddbが上がるかどうか確かめればExceptionをハンドルしてtrap出来てるか分かるという単純極まりない事実に気づいて早速試してみる。 /* * Build proper TLB refill handler trampolines. */ extern void xtlb_m…

Origin 350のセカンダリプロセッサ起動パッチを投げた

この間の起動テストコードに、CPU初期化時にセカンダリプロセッサを探してnasid, physidをstruct cpu_hwinfo secondarycpu_hwinfo[MAXCPUS]に保存し、後でこれを見に行って順に起こすというコードを足した。 でもbootcpu_hwinfoとsecondarycpu_hwinfo[]が分…

CAlias

第四回 カーネル/VM探検隊でも話した通り、Originのメモリレイアウトでは物理メモリの先頭64KBずつが各プロセッサで排他的に使えるメモリ領域として割り当てられており、実際の位置に関わらず物理アドレスは0x0になっている。 ので、Exception Vectorがこの…

AsiaBSDCon 2010で"SMP implementation for OpenBSD/sgi"と題して発表してきました

動画:http://www.ustream.tv/recorded/5403563 スライド:http://www.slideshare.net/syuu1228/smp-implementation-for-openbsdsgi 論文:http://www.openbsd.org/papers/asiabsdcon2010_smp_for_sgi.pdf ペース配分がイマイチだったという指摘はあったもの…

AsiaBSDCon 2010でお話します

大事な事なので何度も言うよ! AsiaBSDConでお話する事になりました。 私の発表は2010/3/13 15:30〜です。 AsiaBSDCon 2010 - 会議日程題名は、SMP Implementation for OpenBSD/sgiです。 まぁ、今までのOpenBSD workのまとめですね。 登録費がかなり高く、…

but…

interrupt 100%ってなにそれこわい load averages: 0.15, 1.88, 2.69 20:43:19 20 processes: 19 idle, 1 on processor CPU0 states: 0.0% user, 0.0% nice, 0.0% system, 100% interrupt, 0.0% idle CPU1 states: 0.0% user, 0.0% nice, 0.0% system, 100% …

OpenBSD/sgi SMP動きました!

きゃほーい( ´∀`) load averages: 5.27, 2.97, 1.43 20:26:08 34 processes: 4 running, 28 idle, 2 on processor CPU0 states: 87.5% user, 0.0% nice, 0.0% system, 12.5% interrupt, 0.0% idle CPU1 states: 87.9% user, 0.0% nice, 0.0% system, 12.1…

login未遂事件

残念です(´・ω・`)… >> bootp(): Setting $netaddr to 192.168.3.2 (from server ) Obtaining from server 5175104+561280 entry: 0xa800000020020000 ARCS64 Firmware Version 64.0 Found SGI-IP30, setting up. Initial setup done, switching console. Co…

またもやRAMDISK抽出プログラムの作成

環境を作り直す度に毎度毎度同じ所ではまっていて大変時間の無駄使いだと思うのだが、今度こそメモリ配置とか変わっても再利用出来るコードにした。※この件の背景 HDDにOSが入ってない状態でカーネル起動〜ユーザランド起動まで動作を確かめるには、RAMDISK…

OpenBSD Hackathonに呼ばれたのでポルトガル行ってくる(`・ω・´)

なんか、こんな集まりに呼ばれたので行ってくるアルよ(`・ω・´) 英語でカーネルの開発方針の討論とかwwwwwwww 出来る訳ネェだろwwwwwww よし、ちょっくら討ち死にしてくるぜwwwwwwwwまぁそんなこんなで既にフライトのチケット取った。…って教授に話したら、…

Webでも本でも何でも良いんだけど、MIPSで自作OSを作るための手引きのようなものを作ってみたい

もともと2、3年前に教授に誘われてカーネル作成のパートだけやってみたんだけど、そのまま話が立ち消えになっちゃってるんだよね。 あの話、やらないんすか?って聞いてみようかなぁ(´・ω・`)x86よりは全然難易度低いのに、実行環境に何を使えば分からない…

OpenBSDへパッチをコミット

出来たよ(`・ω・´) http://www.openbsd.org/cgi-bin/cvsweb/src/sys/arch/mips64/include/ちゃんと僕の名前がCVSに乗りました。

OpenBSD committerに捕捉された

今朝、会社に着いてメールチェックしたらOpenBSD committerからメール着ててCc: Theoになっててドン引きしたこのブログを見付けて機械翻訳して読んでみたがヨメねぇ!って書いてあったwwwwどう返事を返そう、、、

もっとポータブルな無限ループ

さっきのエントリを書き終えてからDan Kogai氏のブログに書いてあったよりポータブルな、、って記事を見たら、えっこれreturnじゃなくて無限ループじゃんΣΣ(゚Д゚;)404 Blog Not Found:binary - よりポータブルな無限ループわかったよぉ、やればいいんでしょや…

main=65011720;なんだよ

main=195;とか楽しそうだなーと思ってたので、じゃあMIPSだとどうなるの?って思ったのでやってみた。 ※main=195が分からない奴はこっちを嫁: mainとは何なのか(1) - バリケンのRuby日記 - Rubyist mainとは何なのか(2) - バリケンのRuby日記 - Rubyist mai…

カーネル/VM探検隊の発表原稿

色々つらつらと書いていて気づいたのだが、ソースコードレベルでの解説を試みるならこんな与太話する時間ないと思う。 ボツかなぁこれは。と思ったので取りあえずここに貼ってみる。 ○MIPSの歴史 SGIのワークステーションに長い間使われていました。 DECやソ…

OpenBSD/sgi クロス開発環境の構築

今まで使っていた開発環境が使えなくなったので、OpenBSD/sgiのクロス開発環境を構築し直した。 以下作業メモ。 OpenBSDのインストール VMware Server 1.0をWindowsマシンにインストールメモリ256MB、HD 8GB、OS FreeBSD、CPU 1個でVMを新規作成ftp://ftp.j…

OpenBSD/sgi on octane2 - ipi割り込み その3

void mips64_ipi_init(void) { unsigned cpu = cpu_number(); int ret; ret = xheart_intr_establish(mips64_ipi_intr, NULL, HEART_INTR_IPI(cpu), IPL_HIGH, "ipi"); if (ret) panic("xheart_intr_establish failed:%d\n", ret); } 間違えて引数に割り込み…

OpenBSD/sgi on octane2 - ipi割り込み その2

cpu1を一旦切って、cpu0だけでIPI割り込みのテストを続行中。 Linuxのコードと見比べたが、IRQとかは今ので正しいような気がする。 が、どうしても割り込み入らない。絶対初期化が間違ってると思うので、その辺りを家宅捜索中。 int xheart_intr_establish(i…

OpenBSD/sgi on octane2 - ipi割り込み

取り合えず実装してみたんだが、動いていない模様。 うーん。xheartのデータシートが欲しいよう。HEART_INTR_IPI(x)はHEART_INTR_MAXよりデカいけど正しいのか分からない。 HEART_IMR(0)はHEART_IMR(cpu_number())に書き直した。 Index: xbow/xheartreg.h ==…

OpenBSD/sgi on octane2 - clock割り込み

cpu1でclock割り込みを起こしてみた。cpu_hatchでcpu_initclocks()を呼び、statusレジスタで割り込み有効にする。 void prom_cpu_hatch(struct cpu_info *ci) { char *cp; void *gp, *sp; asm volatile( "move %0, $gp\n" "move %1, $sp\n" : "=r"(gp), "=r"…