[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

DMA woes



I'm working on a stock Dell Dimension 4500 running a testing/unstable mix.
My disk access is appalling, entirely taking over the host processor for
large reads and writes thus causing mouse pointer freezes (which should
never occur on an interactive system). I am told that the way to fix this
is to get DMA working. Indeed, hdparm tells me that it isn't using DMA:

# hdparm /dev/hda

/dev/hda:
 multcount    =  0 (off)
 I/O support  =  1 (32-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 nowerr       =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 9726/255/63, sectors = 156250000, start = 0
 busstate     =  1 (on)

It appears that the IDE card and drive support dma and mdma and udma in all
sorts of modes, but:

# hdparm -d1 /dev/hda

/dev/hda:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 using_dma    =  0 (off)
# hdparm -X34 -d1 /dev/hda

/dev/hda:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 setting xfermode to 34 (multiword DMA mode2)
 using_dma    =  0 (off)

I've also tried to set kernel boot parameters in /etc/lilo.conf (and yes,
I remembered to run lilo to have them installed). Setting ide0=dma has no
effect. I also added idebus=66 (which may or may not be correct, and I
don't know how to find out), which had no noticeable effect.

Is there some crucial kernel configuration thing I missed? I am running a
custom-built 2.4.19 kernel and it's possible I screwed something up, but in
the config I have (among other things):

CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
CONFIG_IDEDMA_PCI_AUTO=y
CONFIG_IDEDMA_ONLYDISK=y
CONFIG_BLK_DEV_IDEDMA=y

Does the Dimension have some specific chipset that needs a special driver?

% lspci | grep IDE
00:1f.1 IDE interface: Intel Corp. 82801DB ICH4 IDE (rev 01)

I am at a loss. Is something up with my hardware? Please help!

--Greg



Reply to: