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をお使いの際はご注意を。