Enabling DMA for disks in Redhat 3.4

Mike Ault mike at ault.cc
Sun May 8 19:15:17 UTC 2005


I am attempting to increase the PIO bus speed from 33 to 66 and to turn on
DMA using ATA/EIDE drives. I used to be able to do this with the idebus
setting and the hdparm 
command. So far I have not been able to achieve this I get:
 
[root at aultlinux3 ~]# hdparm -X66  -d1 -u1 -m16 -c3 /dev/hdd
 
/dev/hdd:
 setting 32-bit IO_support flag to 3
 setting multcount to 16
 setting unmaskirq to 1 (on)
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 setting xfermode to 66 (UltraDMA mode2)
 multcount    = 16 (on)
 IO_support   =  3 (32-bit w/sync)
 unmaskirq    =  1 (on)
 using_dma    =  0 (off)
 
When I try. I have also tried adding the options lines for the various
drivers (ide1, ata_piix, libata) but it seems to have no affect. 
 
Anyone been able to set up DMA for ATA/EIDE drives or to set the bus speed
in RedHat 3.0 release 4?
 
On older, slower drives I was able to get speed up to 14.92 mb/sec using
these methods, on these newer, faster drives I can only get to 5.1 mb/sec
 
On Old RedHat:
 
[root at aultlinux2 root]# hdparm -m16 -c3 -X mdma2 -d1 -a8 -u1 /dev/hdb
 
/dev/hdb:
 setting fs readahead to 8
 setting 32-bit IO_support flag to 3
 setting multcount to 16
 setting unmaskirq to 1 (on)
 setting using_dma to 1 (on)
 setting xfermode to 34 (multiword DMA mode2)
 multcount    = 16 (on)
 IO_support   =  3 (32-bit w/sync)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 readahead    =  8 (on)
[root at aultlinux2 root]# hdparm -Tt /dev/hdb
 
/dev/hdb:
 Timing buffer-cache reads:   128 MB in  1.56 seconds = 82.05 MB/sec
 Timing buffered disk reads:  64 MB in  4.29 seconds = 14.92 MB/sec
 
On New improved RedHat with newer, faster drives:
 
[root at aultlinux3 ~]# hdparm -X66  -d1 -u1 -m16 -c3 /dev/hdd
 
/dev/hdd:
 setting 32-bit IO_support flag to 3
 setting multcount to 16
 setting unmaskirq to 1 (on)
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 setting xfermode to 66 (UltraDMA mode2)
 multcount    = 16 (on)
 IO_support   =  3 (32-bit w/sync)
 unmaskirq    =  1 (on)
 using_dma    =  0 (off)
[root at aultlinux3 ~]# hdparm -tT /dev/hdc
 
/dev/hdc:
 Timing cached reads:   3820 MB in  2.00 seconds = 1909.34 MB/sec
 Timing buffered disk reads:   16 MB in  3.11 seconds =   5.15 MB/sec
 
 
This is using the SATA drive (can't set it using hdparm) as the boot drive
with two EIDE drives chained off of IDE1, the EIDE drives are where I want
to set it.
 
So far the only light is rebuilding the kernel to support DMA as it seems
the RedHat folks in their wisdom decided we really didn't want DMA support
in the IDE interface as a default.imagine that, actually wanting the best
performance. However, I haven't had much luck with rebuilding the kernel for
firewire (read no luck at all) and had to download a prebuilt kernel with
firewire enabled in order to use it (not this server). If no one has any
ideas, how about a pointer to a prebuilt kernel rpm with DMA turned on?
 
Thanks.
 
Mike

 




More information about the redhat-list mailing list