P4M900T-Mのサウスブリッジ
会社のサーバが不調でマザーボードをP4M900T-Mに取り替えたのだが、ATAコントローラがジェネリックと認識されUDMA33でしか使えなかった。半日調べて解決したのだが、日本語情報が無かったので一応書き留めておく。
尚、これはFreeBSD6.2-stable(10/22付)で発生するもので、-currentでは対応済みのようである。
ECSのホームページによると、P4M900T-MのサウスブリッジはVT8237Aとなっている。付属のマニュアルではVT8237A/VT8237Sとなっているのだが、VIAのチップセットに明るくない為、VT8237Aで調べてしまったので時間を喰った。
VT8237Aならサポートされているはずなのだが...。という事でチップIDを調べてぐぐったところ、チップとしてはVT8237Sが正しいようだ。こちらは-currentでサポートされている。
で、コントローラ識別部分のパッチ。
--- /usr/src/sys/dev/ata/ata-pci.h~ 2007-02-12 08:46:45.000000000 +0900 +++ /usr/src/sys/dev/ata/ata-pci.h 2007-10-19 17:42:09.000000000 +0900 @@ -344,6 +344,7 @@ #define ATA_VIA8235 0x31771106 #define ATA_VIA8237 0x32271106 #define ATA_VIA8237A 0x05911106 +#define ATA_VIA8237S 0x53371106 #define ATA_VIA8251 0x33491106 #define ATA_VIA8361 0x31121106 #define ATA_VIA8363 0x03051106 --- /usr/src/sys/dev/ata/ata-chipset.c~ 2007-07-11 14:24:28.000000000 +0900 +++ /usr/src/sys/dev/ata/ata-chipset.c 2007-10-19 17:42:44.000000000 +0900 @@ -4818,6 +4818,7 @@ { ATA_VIA8235, 0x00, VIA133, 0x00, ATA_UDMA6, "8235" }, { ATA_VIA8237, 0x00, VIA133, 0x00, ATA_UDMA6, "8237" }, { ATA_VIA8237A, 0x00, VIA133, 0x00, ATA_UDMA6, "8237A" }, + { ATA_VIA8237S, 0x00, VIA133, 0x00, ATA_UDMA6, "8237S" }, { ATA_VIA8251, 0x00, VIA133, 0x00, ATA_UDMA6, "8251" }, { 0, 0, 0, 0, 0, 0 }}; static struct ata_chip_id new_ids[] = @@ -4825,6 +4826,7 @@ { ATA_VIA6420, 0x00, 7, 0x00, ATA_SA150, "6420" }, { ATA_VIA6421, 0x00, 6, VIABAR, ATA_SA150, "6421" }, { ATA_VIA8237A, 0x00, 7, 0x00, ATA_SA150, "8237A" }, + { ATA_VIA8237S, 0x00, 7, 0x00, ATA_SA150, "8237S" }, { ATA_VIA8251, 0x00, 0, VIAAHCI, ATA_SA300, "8251" }, { 0, 0, 0, 0, 0, 0 }}; char buffer[64];
バスマスタATAコントローラの動作は確認しているが、SATAコントローラに関してはデバイスが無いので未確認。SATAをお使いの際はご注意を。