・北朝鮮のこと
そもそも過去数十年間、外交の権謀術数だけで生き残ってきた国家相手に、東大卒の キャリア官僚程度の交渉力では太刀打できるはずはないだろうから、ここは一つ、「おれおれ詐欺」とか「闇金融の取りたて係」とか「大企業総務部渉外担当重役」とかを採用するなり、彼らに教えをこうなりして「悪の交渉術」を身につけてはどうか? > 外務省
マキャベリが言っていたように、外交は武器を使わない戦争なのだから、正論やきれい事だけでは通らないと思うが。。。
・SATA HDD の続き
いろいろ紆余曲折があったけど、どうやら手もとの Silicon Image 3112A のカードは、IDE デバイスとして利用するには DMA がうまく扱えないという問題がある模様。一時は acpi=noirq とかを指定してやることで使えたこともあるのだけど、多くの場合は DMA が利用できないようで、IRQ とかの問題も根っ子はここにつながるらしい。
dmesg 等でうまく動く場合と駄目な場合を比較した結果、
hdi: max request size: 64KiB hdi: 321672960 sectors (164696 MB) w/7938KiB Cache, CHS=20023/255/63 hdi:hdi: dma_intr: status=0xd0 { Busy } hdi: DMA disabled ide4: reset phy, status=0x00000113, siimage_reset ide4: reset: success hdi1 hdi2
こういう風に sa3112 なカード(とその先の HDD)に対して DMA が正常に割り当てられない場合、IRQ の処理とかが滞ってシステムハングにいたる模様。ただ、何回かに一度は DMA の処理がひっかからずに進むことがあって、そのような場合は /dev/hdiX も問題なく利用できるんだけど、どうも DMA の処理が正常に進むか否かはハードウェア側の状態とかに依存するらしく、同じ起動時パラメータを与えてもうまくゆく場合と駄目な場合が生じる。
# 駄目な場合の方がはるかに多い、、(;_;)
そんな状態では使い物にならないなぁ、、と思って libata 経由で SCSI デバイスとして利用するドライバを検討。こっちも何度か試してみたところ(IDE での経験値が結構役に立った) APIC を on にした状態だと問題無く動作することが判明。当初は ACPI と APIC の組合せを疑っていたけど、APIC を利用すれば ACPI を組み込んでいても動作に支障はない模様。
そんなこんなで、手もとの sa3112a なカードは、APIC + SCSI 側のドライバを使うことで安定動作するようになりました。
APIC を使った場合の割り込みの状況はこんな感じ。
CPU0 0: 34335 IO-APIC-edge timer 1: 41 IO-APIC-edge i8042 8: 1 IO-APIC-edge rtc 9: 0 IO-APIC-level acpi 12: 59 IO-APIC-edge i8042 14: 2292 IO-APIC-edge ide0 15: 10 IO-APIC-edge ide1 18: 101 IO-APIC-level libata, eth0 19: 7 IO-APIC-level ide2 21: 76 IO-APIC-level uhci_hcd, uhci_hcd, uhci_hcd, ehci_hcd 22: 0 IO-APIC-level VIA8233 NMI: 0 LOC: 34244 ERR: 0 MIS: 0
hdparm -Tt /dev/sda で速度を計るとこんな感じ。
/dev/sda: Timing buffer-cache reads: 1188 MB in 2.00 seconds = 592.61 MB/sec Timing buffered disk reads: 164 MB in 3.00 seconds = 54.60 MB/sec
IDE なドライバでは正常動作しないことの理由は DMA がらみということもあってマザーボードとカードの相性とかの話になっちゃいそうだけど、とりあえずこれで SATA な HDD も動作するようになったとするか。