[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CS12 and irq (Re: MGL2 update)
鈴木(康)です。
<200002100353.MAA11964@ninja.hpc.bs1.fc.nec.co.jp>の記事において
suz@hpc.bs1.fc.nec.co.jpさんは書きました。
| |
| | こんなふうにして また使えるようになったのですが、
| | 今 polling しないといけないのはなぜなんでしょうか?
|
いろいろ やってみて、トンチンカンなことを
言っていたのがわかりました。
---
ISA 側の IRQ を 15 14 11 9 5 4 とやってみると
wd0: drive supports 1-sector pio transfers, lba addressing
wd0: 64512 KB, 1008 cyl, 4 head, 32 sec, 512 bytes/sect x 129024 sectors
boot device: wd0
root on wd0a dumps on wd0b
isa_intr_alloc:......................|.........
pcmcia0: card irq 9
wdc0:0:0: lost interrupt
type: ata
c_bcount: 512
c_skip: 0
かならず、interrupt が lost すると出ます。
# ちなみに 2 と 0 は、isa 側ではねられて
# ISA IRQ 15 -> GPIO port 31 になってしまいますね。
wd0: drive supports 1-sector pio transfers, lba addressing
wd0: 64512 KB, 1008 cyl, 4 head, 32 sec, 512 bytes/sect x 129024 sectors
ところが、3 の場合は、ここでダンマリ。
boot device: が出ない!
ここで カードを抜いてみると ...
boot device: wd0
root on wd0a dumps on wd0b
isa_intr_alloc:............................|...
pcmcia0: card irq 3
wd0 detached
wdc0 detached
trap: TLB miss (load or instr. fetch) in kernel mode
こんなふうに先にすすみます。
すぐ TLB miss になっちゃいますが....
-----
いろいろやった末、次の仮説を立てました。
1) irq 0x00090003 は正しい。
2) 正常系で なにか処理が足りず
kern/init_main.c での次のところがクリアできない。
while (config_pending)
(void) tsleep((void *)&config_pending, PWAIT, "cfpend", 0);
3) lost した場合は、エラー処理が正しいので、最終的に boot device: が出る。
どうでしょう。
# またトンチンカンだったらすいません。
--
鈴木 康司 @NEC
suz@hpc.bs1.fc.nec.co.jp
TEL 0423-33-5381