高橋です
DELL PowerEdge SC430でP-ATAがDMAにならない件は"一応"解決しました。
チップセットICH7RがカーネルのデバイスIDに含まれていない為、チップセットを
特定できずにDMA ONにならないようでしたので
下記のように修正しカーネル作成後にブート画面でDMAがONになっている事を確認しました。
一応と書いたのはカーネルがパニック起こしてログインまで行かないんですよね・・・
カーネルのコンフィグ間違ってるようで、今度はS-ATAが認識できずにブート失敗します。
その件は私の経験不足だと思われますので確認&再挑戦、もしくは再度MLに投稿するかも知れません。
以下、修正差分です
--- pci_ids.h_org 2005-07-24 14:36:07.000000000 +0900
+++ pci_ids.h 2005-07-24 14:36:07.000000000 +0900
@@ -1961,6 +1961,8 @@
#define PCI_DEVICE_ID_INTEL_ICH6_1 0x2641
#define PCI_DEVICE_ID_INTEL_ICH6_2 0x266f
#define PCI_DEVICE_ID_INTEL_ICH6_18 0x266e
+#define PCI_DEVICE_ID_INTEL_ICH7_0 0x27b8
+#define PCI_DEVICE_ID_INTEL_ICH7_2 0x27df
#define PCI_DEVICE_ID_INTEL_82850_HB 0x2530
#define PCI_DEVICE_ID_INTEL_82845G_HB 0x2560
#define PCI_DEVICE_ID_INTEL_SMCH 0x3590
--- piix.h_org 2005-07-24 14:36:09.000000000 +0900
+++ piix.h 2005-07-24 14:36:08.000000000 +0900
@@ -333,8 +333,22 @@
.enablebits = {{0x41,0x80,0x80}, {0x43,0x80,0x80}},
.bootable = ON_BOARD,
.extra = 0,
- },{
+ },{ /* 21 */
+ .vendor = PCI_VENDOR_ID_INTEL,
+ .device = PCI_DEVICE_ID_INTEL_ICH7_2,
+ .name = "ICH7",
+ .init_setup = init_setup_piix,
+ .init_chipset = init_chipset_piix,
+ .init_iops = NULL,
+ .init_hwif = init_hwif_piix,
+ .init_dma = init_dma_piix,
+ .channels = 2,
+ .autodma = AUTODMA,
+ .enablebits = {{0x41,0x80,0x80}, {0x43,0x80,0x80}},
+ .bootable = ON_BOARD,
+ .extra = 0,
+ },{
.device = 0,
.channels = 0,
.init_setup = NULL,
--- piix.c_org 2005-07-24 14:36:08.000000000 +0900
+++ piix.c 2005-07-24 14:36:07.000000000 +0900
@@ -158,6 +158,7 @@
case PCI_DEVICE_ID_INTEL_82801E_11:
case PCI_DEVICE_ID_INTEL_ESB_2:
case PCI_DEVICE_ID_INTEL_ICH6_2:
+ case PCI_DEVICE_ID_INTEL_ICH7_2:
p += sprintf(p, "PIIX4 Ultra 100 ");
break;
case PCI_DEVICE_ID_INTEL_82372FB_1:
@@ -298,6 +299,7 @@
case PCI_DEVICE_ID_INTEL_82801EB_11:
case PCI_DEVICE_ID_INTEL_ESB_2:
case PCI_DEVICE_ID_INTEL_ICH6_2:
+ case PCI_DEVICE_ID_INTEL_ICH7_2:
mode = 3;
break;
/* UDMA 66 capable */
@@ -687,6 +689,7 @@
case PCI_DEVICE_ID_INTEL_82801E_11:
case PCI_DEVICE_ID_INTEL_ESB_2:
case PCI_DEVICE_ID_INTEL_ICH6_2:
+ case PCI_DEVICE_ID_INTEL_ICH7_2:
{
unsigned int extra = 0;
pci_read_config_dword(dev, 0x54, &extra);
@@ -886,6 +889,7 @@
#endif
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 19},
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 20},
+ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 21},
{ 0, },
};