Hello, recently I've bough a new harddisk (WDC WD1600JB). I was quite satisfied by its performance until I noticed some problems with X display. Soon after setting harddrive with:
Code:
$hdparm -d1 -c1 -Xudma5 -m16 -u1 /dev/hda
$ hdparm /dev/hda
/dev/hda:
 multcount    = 16 (on)
 IO_support   =  1 (32-bit)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 19457/255/63, sectors = 312581808, start = 0
There is a temporary freeze of X display (for several seconds, applications become irresponsible to mouse clicks and keyboard), after which the hd's performance drops to some 4MB/s (as compared to approx 57 after above settings), and hdparm shows dma as turned off. This is reported as

Code:
$hdparm /dev/hda
/dev/hda:
 multcount    = 16 (on)
 IO_support   =  1 (32-bit)
 unmaskirq    =  1 (on)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 19457/255/63, sectors = 312581808, start = 0
I also have a second hd installed, and it seems to be also reset:
Code:
Model=WDC WD400EB-00CPF0, FwRev=06.04G06, SerialNo=WD-WCAAT6222307
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
 BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=off
 CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=78165360
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=no WriteCache=enabled)
What is happening?

EDITED:
I found this in output of dmesg:
Code:
hdb: dma_timer_expiry: dma status == 0x61
hdb: DMA timeout error
hdb: dma timeout error: status=0xd0 { Busy }

ide: failed opcode was: unknown
hda: DMA disabled
hdb: DMA disabled
ide0: reset: success
hdb: dma_timer_expiry: dma status == 0x41
hdb: DMA timeout error
hdb: dma timeout error: status=0xd0 { Busy }