高橋です
昨年の10月にこの件をポストしたのですがようやく解決しました。
(カーネルパニックの件はただ単にカーネルバージョンの記載ミスでした。)
その時はVineLinux3.2&SC430でうまくDMA化は出来たのですが、何故かマザーのDMAがUDMA2までしか設定できませんでした。
#cat /proc/ide/piix
Controller: 0
Intel PIIX4 Ultra 100 Chipset.
--------------- Primary Channel ---------------- Secondary Channel ------------- enabled enabled
--------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------DMA enabled: yes yes no no
UDMA enabled: yes yes no no
UDMA enabled: 2 2 X X
UDMA
DMA
PIO
# hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads: 84 MB in 3.06 seconds = 27.45 MB/sec
UltraDMA33で動いているせいで30M/Sec位しか出ません。
ちなみにDMA化前は4.94 MB/secでした
変更点は以前ポストした内容を以下に変更しました
/usr/src/linux/drivers/ide/pci/piix.h
},{ /* 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 = 1, //2から1に変更
.autodma = AUTODMA,
.enablebits = {{0x41,0x80,0x80}}, //ここも変更
.bootable = ON_BOARD,
.extra = 0,
},{
修正後の内容です
# cat /proc/ide/piix
Controller: 0
Intel PIIX4 Ultra 100 Chipset.
--------------- Primary Channel ---------------- Secondary Channel ------------- enabled enabled
--------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------DMA enabled: yes yes no no
UDMA enabled: yes yes no no
UDMA enabled: 5 5 X X
UDMA
DMA
PIO
# hdparm -t /dev/sda
/dev/hda:
Timing buffered disk reads: 166 MB in 3.00 seconds = 55.33 MB/sec
憶測なのですがIDEを2チャンネル分サーチし、セカンダリーのポートが無いために
プライマリーでUltraDMAがオンされた後、セカンダリーでオフされたのでは無いでしょうか?