eSATAが使えない(解決したけど)

以前からeSATAが使えないことに気づいていたんだけど、必要性が出てきたので、ちゃんと調べた。

AntecのMINI P180 WHITEにはフロントにeSATAポートが付いていて、これをASUSのP5Q-EMのSATAコネクタに接続してあったんだが、eSATAポートにHDDを接続すると、以下のような状態でずっとリトライし続ける...。

Jun  2 23:04:38 www kernel: ata5: exception Emask 0x10 SAct 0x0 SErr 0x4050000 action 0xe frozen
Jun  2 23:04:38 www kernel: ata5: irq_stat 0x00400040, connection status changed
Jun  2 23:04:38 www kernel: ata5: SError: { PHYRdyChg CommWake DevExch }
Jun  2 23:04:38 www kernel: ata5: hard resetting link
Jun  2 23:04:40 www kernel: ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Jun  2 23:04:40 www kernel: ata5: link online but device misclassified, retrying
Jun  2 23:04:40 www kernel: ata5: reset failed (errno=-11), retrying in 9 secs
Jun  2 23:04:48 www kernel: ata5: hard resetting link
Jun  2 23:04:49 www kernel: ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Jun  2 23:05:19 www kernel: ata5.00: qc timeout (cmd 0xec)
Jun  2 23:05:19 www kernel: ata5.00: failed to IDENTIFY (I/O error, err_mask=0x4)
Jun  2 23:05:19 www kernel: ata5: failed to recover some devices, retrying in 5 secs
Jun  2 23:05:24 www kernel: ata5: hard resetting link
Jun  2 23:05:25 www kernel: ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Jun  2 23:05:55 www kernel: ata5.00: qc timeout (cmd 0xec)
Jun  2 23:05:55 www kernel: ata5.00: failed to IDENTIFY (I/O error, err_mask=0x4)
Jun  2 23:05:55 www kernel: ata5: failed to recover some devices, retrying in 5 secs
Jun  2 23:06:00 www kernel: ata5: hard resetting link
Jun  2 23:06:01 www kernel: ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Jun  2 23:06:31 www kernel: ata5.00: qc timeout (cmd 0xec)
Jun  2 23:06:31 www kernel: ata5.00: failed to IDENTIFY (I/O error, err_mask=0x4)
Jun  2 23:06:31 www kernel: ata5: failed to recover some devices, retrying in 5 secs
Jun  2 23:06:36 www kernel: ata5: hard resetting link
Jun  2 23:06:36 www kernel: ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Jun  2 23:06:36 www kernel: ata5: EH complete

同じHDDをeSATAポートのあるDellのノートPC(Fedora 10)に接続すると、ちゃんとマウント出来るので、HDDやケーブルの問題ではなさそう。
となると、RHEL5.3のlibataのバージョンが古いからかなぁと思い、F10のkernelのSRPMを持ってきて、RHEL5.3でrpmbuild -bpしたのとdrivers/ata/以下をdiffると、ちょっとバックポートパッチを作るのは辛そうだと(^^ゞ
とりあえず手抜きでRHEL5.4用の最新のビルドであるkernel-2.6.18-151も試したけど、これもアウト。

libataはJeff Garzikが書いているので、彼のサイトを読んでいたところ、libataのoptionがいくつかあることを発見。要はmodprobe.confにoptions libata force=5.00:1.5Gbpsみたいに強制するオプションが書けるということらしい。Documentation/kernel-parameters.txtに詳しく書いてある。libataはinitで突っ込まれちゃうので、やれやれmkinitrdせにゃならんなぁと思って作り直したけど、上のログと同様、3.0Gbpsでリンクアップする。いや、外付けのHDDのケースには1.5Gbpsって書いてあるんだよね、安物だから(笑

で、再起動時に接続したままにしていたら、BIOSのPOSTでドライブが認識されていないことに気づく。ありゃ、BIOSの設定か?
P5Q-EMのマニュアルを引っ張り出してきて、SATAの設定項目をよく読むと、AHCI/RAID/IDEが排他になっているように見える。つまり、ICH10RのRAIDを組んじゃうと、AHCIは利用できないように見えるということ。しかし、RAIDを組んでないSSDは普通に見えてるしなぁ、と疑問に思いながら、RAIDを組んでいるディスクの中身をバックアップして、BIOSの設定をAHCIに変更して再度トライ。やっぱり、駄目(/_;)

むぅ、手詰まり感が。PCI Expressに刺すボードを買うかなとか考えながらググっているとkakaku.comの掲示板で気になる記述を発見。いわく、ICH10Rではhotplugに対応しているのはポート6だけだよ、と。上のログを見ると分かるように、eSATAはポート5に接続してあった。これをポート6に変更した後のログは以下。

Jun  3 23:57:11 www kernel: ata6: exception Emask 0x10 SAct 0x0 SErr 0x4090000 action 0xe frozen
Jun  3 23:57:11 www kernel: ata6: irq_stat 0x00400040, connection status changed
Jun  3 23:57:11 www kernel: ata6: SError: { PHYRdyChg 10B8B DevExch }
Jun  3 23:57:11 www kernel: ata6: hard resetting link
Jun  3 23:57:11 www kernel: ata6: SATA link down (SStatus 0 SControl 310)
Jun  3 23:57:11 www kernel: ata6: failed to recover some devices, retrying in 5 secs
Jun  3 23:57:16 www kernel: ata6: hard resetting link
Jun  3 23:57:17 www kernel: ata6: SATA link down (SStatus 0 SControl 310)
Jun  3 23:57:17 www kernel: ata6: failed to recover some devices, retrying in 5 secs
Jun  3 23:57:22 www kernel: ata6: hard resetting link
Jun  3 23:57:22 www kernel: ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Jun  3 23:57:22 www kernel: ata6.00: configured for UDMA/100
Jun  3 23:57:22 www kernel: ata6.00: limiting speed to UDMA/33:PIO3
Jun  3 23:57:22 www kernel: ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t4
Jun  3 23:57:22 www kernel: ata6: irq_stat 0x00000040, connection status changed
Jun  3 23:57:22 www kernel: ata6: hard resetting link
Jun  3 23:57:23 www kernel: ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Jun  3 23:57:23 www kernel: ata6.00: configured for UDMA/33
Jun  3 23:57:23 www kernel: ata6: EH complete
Jun  3 23:57:23 www kernel: SCSI device sdd: 625142448 512-byte hdwr sectors (320073 MB)
Jun  3 23:57:23 www kernel: sdd: Write Protect is off
Jun  3 23:57:23 www kernel: SCSI device sdd: drive cache: write back
Jun  3 23:57:23 www kernel: SCSI device sdd: 625142448 512-byte hdwr sectors (320073 MB)
Jun  3 23:57:23 www kernel: sdd: Write Protect is off
Jun  3 23:57:23 www kernel: SCSI device sdd: drive cache: write back

使えるようになった(^o^)

だってさぁ、そんなことASUSのマニュアルに書いて無いんだもん、気づかないよ...。