日記 (2004年文月)

日記の表紙前月(水無月)翌月(葉月)
2004年7月1日(木)
晴れ。半夏生(はんげしょう)。

o あう、間違ってブレーカ断。Lib100 を 4ヶ月ぶりに再起動(普段電池をつけてない)。

o SCSI いじり。 ACK 幅の設定を忘れていて、一番短い設定の 25ns になっていた。 これは FAST SCSI (5〜10MB/s) のタイミング条件(30ns 以上)を満たさない…。 修正。10MB/s では 50ns 幅に設定。

sd0 からの読み出しを見てみると、ACK 幅は 48ns くらいになった。

これで Sun の HDD で固まらなくなった。ふう。 読み出し速度は最高 3.3MB/s、平均 2.7MB/s くらい。 DMA が 132MB/s て書いてある所をみると、速くする方法がある?

つうわけで汚いけど現状。 DualEdge なデバイスだとたぶんあぶない(仕様が分からん)ので、 データをフッ飛ばさないよう注意。

2004年7月2日(金)
晴時々曇。

o うーん、なんかエラーに弱いな。

	sd0(nsp0:0:4:0): reselection timeout
	cd0(nsp0:0:6:0): command timeout
	nsp0: ninja32_intr: unexpected bus phase: Bus Free
	sd0(nsp0:0:4:0): command timeout
	cd0(nsp0:0:6:0): command timeout
	sd0(nsp0:0:4:0): command timeout
	cd0(nsp0:0:6:0): command timeout
	sd0(nsp0:0:4:0): command timeout
	cd0(nsp0:0:6:0): command timeout
	sd0(nsp0:0:4:0): command timeout

つか、command timeout→バスリセット→SDTRネゴしなおし って書いたつもりなんだが動いてないな…(汗)。

o あ、不意に bus free になったときに変なことになるのかな?

2004年7月3日(土)
晴れ。33.2Cらしい。

o ターミネータ抜いたりしてテスト(ちょっと危険)。 うーん、エラーになった後の処理がうまくいかず固まっちゃうなあ…。

なんか構造的に問題があるような気がしてきた。 arbitration 中の cmd を別扱いにするか…。

2004年7月4日(日)
晴れ。暑。

o なんかちょっと安定したような気分。タイミングかな?

とりあえず変なことがあったらなんでも bus reset してみるテスト(おい)。 でもなんか固まっちゃうことがあるんだよなあ…。

2004年7月5日(月)
曇。昼頃に一瞬だけ大雨。もっとたくさん降ってくれー。

o mycroft の人が com(4) のバグを直してくれたようなのでテスト。

つか feedback になってから1日経ってないのに reminder 送ってくるのはどうかと(苦笑)。

2004年7月6日(火)
晴れ。

o SCSI いじり。ちょっとだけ整理。 ターゲットから SDTR 交換を始めた場合が怪しかったので修正。

2004年7月7日(水)
曇時々晴。

0430 暑くて起きたらヒグラシが鳴いていた。

o イニシエータの転送速度が遅いのを調べる。 怪しいレジスタがあるが使い方分からないなあ…。

o む、近くの床屋が値上りしてるな…。

2004年7月8日(木)
晴れ。暑すぎ。

o 0457 キジバトがベランダに飛来して鳴く。ちょっとはええよ。

o CARDBUS_BASE0_REG は I/O でサイズは 128; CARDBUS_BASE1_REG はメモリでサイズは 4096。

I/O はレジスタ; メモリは後半(オフセット 2048)にレジスタが見える (←てけとーに漁って見付けた(笑))。 というわけでメモリの方を先に試して、次に I/O の方を使うようにしてみた(つもり)。

o bus_space(9) で空間内のオフセット部分は handle だけで完結しているようで、 bus_space_subregion() で作った handle は後で解放したりする必要はない(しちゃだめ)らしい。

2004年7月9日(金)
晴後曇。 クマゼミが鳴きだした。

o 2.0G な sparc64 でテストしようと思って、未使用だった(開封はしていた) PCI-CardBus ブリッジのボードを装着。

	cbb0 at pci0 dev 4 function 0pccbb_attach_hook: OF_mapintr failed
	: Ricoh 5C475 PCI-CardBus bridge (rev. 0x80)
	cbb0: NOT USED because of unconfigured interrupt

動かないやん(泣)。

2004年7月10日(土)
朝早く雷雨。日中は晴れ。夜にまた雷雨。

ずいぶんしのぎやすくなった。30℃超えてるが。

o petrov の人が NOT USED あたりをコメントアウトして無視してみそ と言うので試す。

cbb0 at pci0 dev 4 function 0pccbb_attach_hook: OF_mapintr failed
: Ricoh 5C475 PCI-CardBus bridge (rev. 0x80)
OF_mapintr failed
cbb0: interrupting at ivec 7d8
cardslot0 at cbb0 slot 0 flags 0
cardbus0 at cardslot0: bus 1 device 0
pcmcia0 at cardslot0
	:
nsp0 at cardbus0 dev 0 function 0: Workbit NinjaSCSI-32UDE DualEdge SCSI adapter
nsp0: memory space mapped
nsp0: interrupting at 0
nsp0: revision 0x54, master clock: 40MHz
scsibus1 at nsp0: 8 targets, 8 luns per target
scsibus1: waiting 2 seconds for devices to settle...
sd2 at scsibus1 target 4 lun 0: <SEAGATE, ST11200N SUN1.05, 9500> disk fixed
sd2: 1005 MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sect x 2059140 sectors
sd2: sync (100.00ns offset 15), 8-bit (10.000MB/s) transfers, tagged queueing
cd1 at scsibus1 target 6 lun 0: <PIONEER, CD-ROM DR-U24X, 1.01> cdrom removable
cd1: sync (100.00ns offset 8), 8-bit (10.000MB/s) transfers

sparc64 でもあっさり動いちゃった。つまらん(ぉぃ)。

o で、やかましいから shutdown しようと思ったら panic していた…。

panic: lockmgr: no context
kdb breakpoint at 134b58c
Stopped at	netbsd:cpu_Debugger+0x4:	nop
db> t
lockmgr(1847f88, 0, 0, 0, 0, 0) at netbsd:lockmgr+0x1d4
uvmfault_lookup(e0017a30, 0, 0, 0, 0, 0) at netbsd:uvmfault_lookup+0x1a0
uvm_fault(1847f80, 0, 2, 2, 0, 0) at netbsd:uvm_fault+0x70
data_access_fault(e0017c30, 30, 121dd10, 0, 8, 80080d) at netbsd:data_access_fault+0x3e0
?(1813060, 66901, 3ebb300, 2, 0, 1) at 0x100871c
softclock(e0017ed0, 0, e0017ed0, 4, 121dcac, 4) at netbsd:softclock+0x240
sparc64_ipi_flush_all(0, 0, 139f81c, 0, ffffffffffffffff, 0) at netbsd:sparc64_ipi_flush_all+0x238
db>
2004年7月11日(日)
曇。夕方から晴れ。アブラゼミが鳴きだした。

o 0520 ベランダでキジバト鳴きまくり。

o 0645 発。0659 着。でも某投票所じゃ2番だった(苦笑)。 投票箱が空であることの確認(1番の人が確認&署名)・封印イベントを見物しつつ、 用紙をよく確認して(ぉぃ)投票。

スーパーに寄り道して帰る。0745。

o イニシエータが ATN を立てて Message Out のメッセージをいくつか送っている途中に、 ターゲットが Message In にして返事をすることはアリらしいのでちょっとだけ実装。 中身無いけど(おい)。

つか、AutoSCSI で自動で Message Out を実行させるときは、どこまで送ったのかどうやって調べるんだ…。

というわけで(?)、今の所こんな感じ

2004年7月12日(月)
曇。ちょっとだけ雨。

o そして猫もいなくなった。 合掌。

o detach まわりとデバッグコードいじり。

KNF ではキャストの後にスペース入れないらしいので取ったり。

2004年7月13日(火)
晴れ。梅雨明けらしい。

o 昨日すげえ眠かったので早く寝たら早く目が覚めたので寝直し。

o Indexed register の怪しげな所に 0xff を書いて読んでみたら、 0x17=0x7 0x18=0x7 0x19=0x8f 0x1a=0x8f 0x1b=0x8f 0x20=0x8f 0x21=0x8f 0x22=0x8f 0x23=0x8f 0x24=0x8f 0x25=0x8f 0x26=0x8f 0x27=0x8f てな感じだった(デフォルトは全部 0)。 よく分からんが転送が遅いのはこのへんでは直らなさそうな気分。

2004年7月14日(水)
晴れ。

o prom console から sab(4) に切り替えるとき、prom 側に残ったまま切り替わってしまうんかな

OpenPROM の stdout を flush する方法は無いのか?

2004年7月15日(木)
晴れ。

ニセが忙しかった。

2004年7月16日(金)
晴れ。ええかげん雨が欲しい…。

o IPA フォント。GRASS にくっつけるというややこしい条件。

アーカイブを拾ってみたが、ソースも GPL の文書も付いていないな…(笑)。

2004年7月17日(土)
晴れ。

o SCSI いじり。 試しに同期転送の周期を 250ns 設定(sc->sc_sync_max = 9)してみると 375ns くらいになる。むむ?

というわけで心当たりを見直したらバグ発見(汗)。 100ns 周期になった

ついでに Ultra SCSI なデバイスでも試してみた。これは Barracuda ATA に ATA-SCSI 変換をかませたもの。

  sd0 at scsibus0 target 5 lun 0: <SEAGATE, ST340810A, 1.06> disk fixed
  sd0: 38166 MB, 77545 cyl, 16 head, 63 sec, 512 bytes/sect x 78165360 sectors
  sd0: sync (50.00ns offset 15), 8-bit (20.000MB/s) transfers

あんまりきれいじゃないけど最短 50ns 周期くらい?

o 夕方に曇が出てきたのでちょっとお出掛け。

2004年7月18日(日)
曇。

o Windows のドライバの .inf ファイルを見たりして NinjaSCSI らしいデバイスの ID を調べる。 DualEdge が使えるインタフェースのリストに載ってるのは 32UDE に違いない (LHA-6000UL, LHA-6000S てのは見当たらないが…)。

# if	product name		vendor 	product	chip	speed
CardBus	IODATA CBSCII		0x10FC	0x0005	32Bi	20MB/s	Duo
	(CBSCII, CBSCIIA, CBSCIIF)
PCI	IODATA SC-NBD		0x1145	0xF010	32UDE	20MB/s	DE
	(SC-NBD, SC-NBDA)
CardBus	BUFFALO IFC-USCB2	0x1145	0x8009	32UDE	20MB/s	DE
PCI	BUFFALO IFC-USLP	0x1145	0xF015	32UDE	20MB/s	DE
PCI	LOGITEC LHA-600U	0x1145	0xF012?	32UDE	20MB/s	DE
PCI	LOGITEC LHA-600S	0x1145	0xF013?	32UDE	20MB/s	DE
CardBus	LOGITEC LPM-SCSI3D	0x1145	0x8007	32Bi	20MB/s	Duo
CardBus	LOGITEC LPM-SCSI3EH	0x1145	0x8009	32UDE	20MB/s	DE
CardBus	KME KXL-820AN 		0x1145	0x8007	32Bi	??MB/s	Duo
CardBus	KME KXL-RW10AN		0x1145	0xF007	32Bi	??MB/s	Duo
CardBus	HP CD-Writer Plus M820e	0x1145	0xF007	32Bi	??MB/s	Duo
CardBus	RICOH MP8040SE		0x1145	0xF007	32Bi	??MB/s	Duo

なんか vendor/product がいっぱいあっていやん。

LHA-600U と LHA-600S は同じドライバに 2つ書いてあったので、どっちがどっちか分からん。

LOGITEC LPM-SCSI3EH の .inf ファイルには DuoSCSI なんて文字列があるので Bi かと思ったが、実は BUFFALO IFC-USCB2 (手許にあるもの)と同じで 32UDE らしい。

九州松下(当時)のやつは FAST SCSI (10MB/s) としか書いてないけど、 わざわざオシレータ変えるとは思えないから CardBus モードでは 20MB/s なんかなあ…。

2004年7月19日(月)
晴れ。休みの日。

o Ultra SCSI なデバイスでも、テストに使っている PC では 4MB/s くらいしか出ない。 試しに SPARC Ultra につないでみたら 12MB/s くらい出た。本体側の性能か…。

o なんとなく product ID の 0x8xxx は Workbit が自分で使って、0xFxxx は OEM な気がしてきた。

2004年7月20日(火)
晴れ。

o 健康診断でひっかかった(汗)。

2004年7月21日(水)
曇。夕方に雨。

o 久しぶりの雨だ。

o 私も最近まで知らなかったので1番を狙ってみたのですが、負けました(笑)。

2004年7月22日(木)
晴れ。大暑。

o DuoSCSI (NinjaSCSI-32Bi) のテストのために I-O DATA の CBSCII を借りてきた。とりあえずデバドラ無しで挿してみる。

PCMCIA モード:

pcmcia1: CIS version PCMCIA 2.0 or 2.1
pcmcia1: CIS info: IO DATA, CBSC16       , 1
pcmcia1: Manufacturer code 0xffffffff, product 0xffffffff
pcmcia1: function 0: unspecified, ccr addr 200 mask 1
pcmcia1: function 0, config table entry 1: I/O card; irq mask efff; iomask 4, iospace 0-f; memspace 0-fff; io8 io16 irqlevel
IO DATA, CBSC16       , 1 (manufacturer 0xffffffff, product 0xffffffff) at pcmcia1,  function 0 not configured

CardBus モード(変な文字があるので messages を vis で変換):

IO DATA, CBSC32       , 1, \M^? (manufacturer 0x0, product 0x0) I-O Data Device product 0x0005 (SCSI mass storage, revision 0x01) at cardbus1 dev 0 function 0 not configured

o んでデバドラを試す。艦長、割込みが全く来ません!

2004年7月23日(金)
晴れ。

o Bi だと auto param を開始したあと、 NINJA32_REG_ARBITRATION_STAT が 0x08 のまま変わらない。Arbitration が始まらない?

2004年7月24日(土)
晴後曇。

o ふと思う所があって、auto param を使わない方法を試してみる。 ……なんとなく動いたっ。またかよ

ということで auto param ってほとんど使えなさそう…。 実は、データシートが置いてないのは、errata 多す(検閲削除)?

o auto param を使わないようにして、CBSCII も動くようになった。 ロジアナで転送速度を見てみると、これもクロック 40MHz でいいようだ。

nsp0 at cardbus0 dev 0 function 0: Workbit NinjaSCSI-32 SCSI adapter
nsp0: memory space mapped
nsp0: interrupting at 10
nsp0: NJSC-32Bi, G/A rev 0x51, clk 40MHz
scsibus0 at nsp0: 8 targets, 8 luns per target
scsibus0: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 4 lun 0: <SEAGATE, ST11200N SUN1.05, 9500> disk fixed
sd0: 1005 MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sect x 2059140 sectors
sd0: sync (100.00ns offset 15), 8-bit (10.000MB/s) transfers, tagged queueing
cd0 at scsibus0 target 6 lun 0: <PIONEER, CD-ROM DR-U24X, 1.01> cdrom removable
cd0: sync (100.00ns offset 8), 8-bit (10.000MB/s) transfers

というわけでこんな感じに

o I-O DATA CBSCII のケーブル。CardBus カード側がヒロセの 25pin; デバイス側がピン型の 50pin 高密度コネクタ。形が同じなのに IFC-IBCS2 や REX9530 の結線と全く違う…。

	card	dev	信号
	1	38	TERMPWR
	2	44	-ACK
	3	17	GND
	4	49	-REQ
	5	25	GND
	6	50	-I/O
	7	48	-C/D
	8	47	-SEL
	9	46	-MSG
	10	45	-RST
	11	43	-BSY
	12	41	-ATN
	13	21	GND
	14	34	-DBP
	15	33	-DB7
	16	32	-DB6
	17	9	GND
	18	31	-DB5
	19	30	-DB4
	20	29	-DB3
	21	5	GND
	22	28	-DB2
	23	27	-DB1
	24	26	-DB0
	25	1	GND

o tlp at cardbus で resume 時に panic てのを直したよとゆーてきたのでテストのために Lib100 を再起動。これで直るね。

2004年7月25日(日)
晴時々曇。午後に雷雨。

o 32Bi を sparc64 で使っていると、時々 Message Out (?)で落ちる。 デバイスが反応しないタイミングか何かかなあ(i386だとデバイスが反応しないとオール 1 なビットパタンが見えるだけ)。

scsibus1: waiting 2 seconds for devices to settle...
sd2 at scsibus1 target 4 lun 0: <SEAGATE, ST11200N SUN1.05, 9500> disk fixed
sd2: 1005 MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sect x 2059140 sectors
data error type 32 sfsr=11081d sfva=ffffffffffffbf70 afsr=80200000 afva=1ff80201810 tf=0xe0017910
data fault: pc=10f831c addr=ffffffffffffbf70 sfsr=11081d<ASI=11,ASI,PRIV,W,OW>
kernel trap 32: data access error
Stopped at	netbsd:ninja32_wait_req_negate+0x24:	and		%g1, 0x20, %g1
db>

trace を見ると、

	ninja32_msgout
	ninja32_intr+0x400
	pccbbintr_function+0x64
	pccbbintr+0x58
	sparc64_ipi_flush_all+0x238
	ninja32_start+0xf0

って、なんで splbio() 中のはずの ninja32_start() で割込み食らうんだ? ninja32_start()→callout_reset() で splsched()/splx() の splx() あたりで割込みを食らっているような気が。謎。

o よく分からんが、Message Out を Message In と同じように 1バイトずつ処理するようにしたら、 変なタイミングで割込みが来なくなったのか、落ちなくなった気がする。 なんか気難しいデバイスやなあ…。

o というわけで日刊 NinjaSCSI-32。 32Bi のカードはもう返すつもりなのでテストよろしく(ぉぃ)。

2004年7月26日(月)
晴時々曇。

o DuoSCSI は返してきた。

o NinjaSCSI-32 のドライバは NinjaSCSI の PCI/CardBus のやつだから nsp て名前にしたけど、FreeBSD の ISA/PCMCIA なやつが nsp らしいから別の名前にした方がいいかな…。

2004年7月27日(火)
晴時々曇。

o すっぽんコース 12,800!

2004年7月28日(水)
晴れ。

o nsp→njs にしてみた。man ページをちょっと書いてみた。

2004年7月29日(木)
晴時々曇。

o というわけでテストよろしく〜。

2004年7月30日(金)
曇。夕方から時々雨&強風。台風10号が…止まってる?

o ニセ。なんか謎な仕事が降ってきそうな悪寒。

2004年7月31日(土)
曇時々雨。風は強めだけど大したことないな…。

o 1227 ベランダに小鳥が飛来して澄んだ声でさえずり。 網戸ごしなので色はよく分からない。のどをふくらませては鳴いていた。 撮影しようとしたらもういなかった。

鳴き声からアオジっぽいのだが、この辺りではアオジは冬鳥だからホオジロかなあ (←結局よく分からない)。

o target の電源を OFF/ON したときに initiator 側からネゴし直すの忘れていた。 いちおう timeout → bus reset 経由で復活はするけど。 scsipi が Request Sense を発行するときにもネゴするように修正。

arbitration 中の state を追加してちょいと簡単に。

日記の表紙前月(水無月)翌月(葉月)
ITOH Yasufumi