# hdparm: cant set DMA (no ioctl support),but disk shows udma6

## joeklow

# hdparm -i /dev/sda

```
/dev/sda:

 Model=WDC WD5001AALS-00E3A0, FwRev=05.01D05, SerialNo=WD-WCATR1445975

 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }

 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50

 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16

 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976773168

 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

 PIO modes:  pio0 pio3 pio4 

 DMA modes:  mdma0 mdma1 mdma2 

 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 

 AdvancedPM=no WriteCache=enabled

 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

```

# hdparm -c3 -d1 -u1 /dev/sda

```

/dev/sda:

 setting 32-bit IO_support flag to 3

 HDIO_SET_32BIT failed: Invalid argument

 setting unmaskirq to 1 (on)

 HDIO_SET_UNMASKINTR failed: Inappropriate ioctl for device

 setting using_dma to 1 (on)

 HDIO_SET_DMA failed: Inappropriate ioctl for device

 IO_support    =  1 (32-bit)

 HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device

 HDIO_GET_DMA failed: Inappropriate ioctl for device

```

What is missing in kernel config to allow dma setting via hdparm?

----------

## roarinelk

ATA Kernel driver takes care of setting the maximum possible transfer

speed supported by both disk and controller.  hdparm isn't useful in this

case, just don't use it (and emerge --unmerge it :) )

----------

## joeklow

Ok, thanks.

Forgot to add that I indeed use libata instead of deprecated.

Btw, also have occasional I/O (keyboard, mouse) not reacting (fast enought) to events, when some process starts to read/write much data (like move'ing 1000 files).

2.6.36-ck, autogroups, CFS, default allocator, XFS, 100hz rate, low-latency desktop profile.

----------

