[KLUG Members] disable Hard Drive DMA?

Hansen, Chris members@kalamazoolinux.org
Fri, 12 Oct 2001 11:16:23 -0400


Boot up time on my Omnibook 2000CT is substantially slower because the
system keeps trying to enable hard drive DMA that apparently isn't
supported.  Does anyone know how to disable the attempt?

I'm running Mandrake 8.0

My dmesg is:

	id0: BM-DMA at 0x300-0x3007, BIOS settings: hda:pio, hdb:pio
hda: IBM-DTCA-24090, ATA DISK drive
hda: 8007552 sectors (4100 MB) w/468KiB Cache, CHS=993/128/63, (U)DMA
 hda:hda: timeout waiting for DMA
hda: irq timeout: status=0x58 { DriveReady SeekComplete DateRequest }
hda: timeout waiting for DMA hda: irq timeout: status=0x58 { DriveReady
SeekComplete DateRequest }
hda: timeout waiting for DMA hda: irq timeout: status=0x58 { DriveReady
SeekComplete DateRequest }
hda: timeout waiting for DMA hda: irq timeout: status=0x58 { DriveReady
SeekComplete DateRequest }
hda: timeout waiting for DMA
hda: DMA disabled


The only place I've really been able to find anything that resembles what
I'm looking for was in: /etc/rc.d/rc.sysinit

# Turn on harddisk optimization
# There is only one file /etc/sysconfig/harddisks for all disks
# after installing the hdparm-RPM.  If you need different hdparm parameters
# for each of your disks, copy /etc/sysconfig/harddisks to
# /etc/sysconfig/harddiskhda (hdb, hdc...)and modify it.
# each disk witch has no special parameters will use the defaults.

disk[0]=s; disk[1]=hda; disk[2]=hdb; disk[3]=hdc;
disk[4]=hdd; disk[5]=hde; disk[6]=hdf; disk[7]=hdg; disk[8]=hdh;

if [ -x /sbin/hdparm ]; then
   for device in 0 1 2 3 4 5 6 7 8; do
   unset MULTIPLE_IO USE_DMA EIDE_32BIT LOOKAHEAD EXTRA_PARAMS
        if [ -f /etc/sysconfig/harddisk${disk[$device]} ]; then
                . /etc/sysconfig/harddisk${disk[$device]}
                HDFLAGS[$device]=
                if [-n "$MULTIPLE_IO" ] && ["$MULTIPLE_IO" != "0" ]; then
                    HDFLAGS[$device]="-q -m$MULTIPLE_IO"
                fi
                if [ -n "$USE_DMA" ] && [ "$USE_DMA" != "0" ]; then
                     HDFLAGS[$device]="${HDFLAGS[$device]} -q -d$USE_DMA"
                fi
[...]
else
                HDFLAGS[$device]="${HDFLAGS[0]}"

Well that goes on for awhile.  Anyhow, I tried making the file it pulls
settings from hardiskhda

With:

USE_DMA=0

That didn't seem to make a difference.  I tried modifying the rc.sysinit
script.  I removed the pertinent lines in the rc.sysinit.  I renamed
/sbin/hdparm (which was called later in the script I didn't finish above)
Nothing seemed to help.  Is this something in the kernel?

Any suggestions would be appreciated.

Thanks,
Chris