YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-04-17 (水)


[一語一絵/IT系]

CentOSとSerial ATA / 2007-03-24 (土)

マンサクが彩る丘の向こうに日生港を望む
3/18 備前市日生町、みなとの見える丘公園にて

先日導入した「CentOS 4.4 64bits版」[External]VIA[External]VT8251によるSerial ATAインタフェースが認識されない問題へのトライ。

まず、CentOS 4.4ではkernelが「Serial ATAは無効」でビルドされているので、kernelの再構築が不可避である。

で、CentOSディストリビューション最新版のkernel-2.6.9-42.0.10.ELをビルドしなおすかと思ったのだが、それに問題があるから「Serial ATAは無効」にしているような気がするので、[External]kernel.org mirrorからコミュニティ最新版の 2.6.20.4 でビルド。

# cd /usr/src/kernels
# tar jxfv ~/linux-2.6.20.4.tar.bz2
# cd /usr/src/
# ln -s kernels/linux-2.6.20.4 linux
# cp /boot/config-2.6.9-42.0.10.ELsmp .config
# make oldconfig
# make
# make modules_install
# installkernel 2.6.20.4 arch/x86_64/boot/bzImage System.map
新しいkernelで再起動すると
Initializing hardware...
でえらい時間がかかるようになった。VT8251の初期化に手間取っているのかと思いきや、/proc/modulesで見ると結局目新しいモジュールはロードされていなかった。

[External]VIAのサイトを調べるとFedora Core 6用ながら[External]SATA/PATA Driver Diskが提供されていたので早速パッチを適用する事に。ここで初めてsata_via.cを見てみたが、そもそもVT8251には全く対応してなかったらしい。なんだよ~

さて、パッチ作業は同梱のreadmeに従ってやればさほど難しい事はない。sata_viaとahciのありかが実際はdrivers/ataだったり、パッチのreject箇所を観てみるとテーブルの書き方が若干違ったりしたのでそこはかとなくいやな感じがしたが、意外にあっさりモジュール作成完了。

再び再起動すると

Initializing hardware...
はすんなり通過したもののやはりモジュールはロードされていなかった
# modprobe sata_via
コマンド投入すると何事もなくロードされたのでモジュールそのものは大丈夫っぽいので、取り敢えず/etc/modeprobe.conf
alias scsi_hostadapter ahci
alias scsi_hostadapter1 sata_via
と書いて強制的にロードされるようにしてみたび再起動。sata_viaはロードされているものの、SATAディスクを認識している気配はない。

というわけで本気で捜査開始。まずは「物理的にどうよ?」というわけでlspciに聞いてみる。

$ /sbin/lspci
00:00.0 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.1 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.2 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.3 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.4 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.5 PIC: VIA Technologies, Inc. K8M890CE I/O APIC Interrupt Controller
00:00.6 Host bridge: VIA Technologies, Inc.: Unknown device 6290
00:00.7 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI bridge [K8T800/K8T890 South]
00:02.0 PCI bridge: VIA Technologies, Inc. K8T890 PCI to PCI Bridge Controller
00:0f.0 IDE interface: VIA Technologies, Inc. VT8251 AHCI/SATA 4-Port Controller
00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 07)
00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 90)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8251 PCI to ISA Bridge
00:11.7 Host bridge: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 7c)
00:13.0 PCI bridge: VIA Technologies, Inc. VT8251 Host Bridge
00:13.1 PCI bridge: VIA Technologies, Inc. VT8251 PCI to PCI Bridge
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
02:00.0 VGA compatible controller: ATI Technologies Inc RV515 [Radeon X1300]
02:00.1 Display controller: ATI Technologies Inc RV515 [Radeon X1300] (Secondary)
04:01.0 Audio device: VIA Technologies, Inc. VIA High Definition Audio Controller
05:09.0 Multimedia controller: Unknown device 1745:2020
00:0f.0slotsに繋がっている事が判明。 続いて「デバイスIDはどうよ?」と尋ねたところ
$ /sbin/lspci -s 00:0f.0 -n
00:0f.0 Class 0101: 1106:3349
と応答。「0x3349」ですか。しかし[External]SATA/PATA Driver Diskのパッチでは「0x5287」になってるんですけど?

という問題点が発覚。単にコーディングミスとかリビジョンで番号を付け替えたというだけであれば救われるのだが…と思ってそこだけ書換えて試してみたところ、やっぱり落ちた。

sata_via 0000:00:0f.0: routed to hard irq line 11
ata1: PATA max UDMA/133 cmd 0xD800 ctl 0xD402 bmdma 0xC400 irq 21
Unable to handle kernel paging request at 00000057ba804513 RIP:
  [<ffffffff88063b15>] :libata:ata_device_add+0x1ce/0x4c8
PGD 5b329067 PUD 0
Oops: 0000 [1] SMP rhine mii scsi_mod ext3 jbd
Pid: 8191, comm: modprobe Not tainted 2.6.20.4 #3
RIP: 0010:[<ffffffff88063b15>]  [<ffffffff88063b15>] :libata:ata_device_add+0x1ce/0x4c8
RSP: 0018:ffff810073f19d28  EFLAGS: 00010246
RAX: 00000057ba80441b RBX: ffff8100365205c0 RCX: 0000000000000001
RDX: 0000000000000000 RSI: ffff81007b916918 RDI: ffff8100365205c0
RBP: ffff8100365205c0 R08: 0000000000000000 R09: ffff810036520c48
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000001
R13: ffff81007b916800 R14: ffff81007c90f4c0 R15: 0000000000000001
FS:  00002b9607ab5b00(0000) GS:ffffffff80537000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 00000057ba804513 CR3: 000000007839e000 CR4: 00000000000006e0
Process modprobe (pid: 8191, threadinfo ffff810073f18000, task ffff8100780ff040)
Stack:  000000000000c400 ffff810000000015 0000001500000003 ffff81007df7c070
  0000000000000002 ffff81007df7c070 ffff81007df7c218 ffff81007df7c000
  ffff810073f19d97 ffff81007b916800 0000000000000003 ffffffff880837d9
Call Trace:
  [<ffffffff880837d9>] :sata_via:svia_init_one+0x52a/0x559
  [<ffffffff802b6c0a>] sysfs_make_dirent+0x19/0x82
  [<ffffffff803022c1>] pci_device_probe+0xd4/0x13b
  [<ffffffff803655b2>] really_probe+0x71/0xfb
  [<ffffffff803656fe>] driver_probe_device+0xb3/0xc2
  [<ffffffff80365811>] __driver_attach+0x84/0xc0
  [<ffffffff8036578d>] __driver_attach+0x0/0xc0
  [<ffffffff8036578d>] __driver_attach+0x0/0xc0
  [<ffffffff803648e6>] bus_for_each_dev+0x43/0x71
  [<ffffffff80364eda>] bus_add_driver+0x68/0x199
  [<ffffffff80302098>] __pci_register_driver+0x87/0xbe
  [<ffffffff80245f97>] sys_init_module+0xad/0x168
  [<ffffffff8020950e>] system_call+0x7e/0x83


Code: ff 90 f8 00 00 00 85 c0 0f 85 4f 02 00 00 41 83 ff 01 75 15
RIP  [<ffffffff88063b15>] :libata:ata_device_add+0x1ce/0x4c8
  RSP <ffff810073f19d28>
CR2: 00000057ba804513
世の中そんなに甘くない。というわけで、本日はこれにて手詰まり。

【参照】
●CentOS FAQ 日本語版 http://pocketstudio.jp/centos/
●VIA Technologies, Inc. http://www.viatech.co.jp/
VT8251
●VIA Arena http://www.viaarena.com/
Driver Section
Download Section