5月にトライしていたVIA VT8251 southbridgeのSerial ATA対応kernel問題。
「VT8251はkernel 2.6.20でfully supported」だと言われていながら2.6.20.4で動かず、少し前の2.6.17に甘んじていたのだが、起動オプションにpci=nomsiを付与する事で2.6.22.10でも動いた。
具体的には
kernel /vmlinuz-2.6.22.10 ro root=LABEL=/ rhgb quiet pci=nomsiな感じ。毎回grub起動時に「e」キーで編集モードに入ってkernel行にpci=nomsiを入力するか、さもなくば/boot/grub/grub.confの該当箇所にガッツリ書いておけばよい。
ちなみにMSI(Message Signaled Interrupts)は、PCIバスのメモリトランザクションとして配送される割り込みの事で、IOAPICにルーティングされリダイレクション・テーブル介してからCPUへ割り込み通知される仕組みだ。
その為、MSIが期待通りに動作しないようだと
libata version 2.00 loaded.な結果に繋がるわけだ。
ahci 0000:00:0f.0: version 2.0
ACPI: PCI Interrupt 0000:00:0f.0[B] -> GSI 21 (level, low) -> IRQ 21
input: AT Translated Set 2 keyboard as /class/input/input0
ahci 0000:00:0f.0: AHCI 0001.0000 32 slots 4 ports 3 Gbps 0xf impl IDE mode
ahci 0000:00:0f.0: flags: 64bit ncq pm led clo pmp pio slum part
ata1: SATA max UDMA/133 cmd 0xFFFFC20000004D00 ctl 0x0 bmdma 0x0 irq 511
ata2: SATA max UDMA/133 cmd 0xFFFFC20000004D80 ctl 0x0 bmdma 0x0 irq 511
ata3: SATA max UDMA/133 cmd 0xFFFFC20000004E00 ctl 0x0 bmdma 0x0 irq 511
ata4: SATA max UDMA/133 cmd 0xFFFFC20000004E80 ctl 0x0 bmdma 0x0 irq 511
scsi0 : ahci
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
APIC error on CPU0: 00(08)
APIC error on CPU1: 00(08)
ata1.00: qc timeout (cmd 0xec)
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x104)
そういう観点からすると、.configのCONFIG_PCI_MSIを無効にしてkernelを再構築しておけば上記の起動オプションに依らず、MSIを使用しなくなりVIA VT8251 southbridgeのSerial ATAが使えるようになるのは言うまでもない。
しかし、2.6.17でもCONFIG_PCI_MSIは有効になっていたので、VIA VT8251 southbridgeがMSI(Message Signaled Interrupts)に未対応というわけでも無さそうなのだけどねぇ…
真実はまだ闇の中だ。
【参照】
●VIA Arena Forum http://forums.viaarena.com/