1

Trying to turn off DMA on my Linux machine returns:

HDIO_GET_DMA failed: Inappropriate ioctl for device

I remember that this used to work to turn DMA on or off. I also tried using the kernel parameter libata.dma=0 but it had no effect! The ATA driver and DMA seem to work well however. So I just wonder weather I should worry about this or it is just not supported anymore.

The distro is Ubuntu 12 and the kernel is 3.5.0-54-generic. The chipset is

00:1f.2 SATA controller: Intel Corporation 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)

1 Answer 1

2

HDIO_*_DMA are not supported by libata.

See https://ata.wiki.kernel.org/index.php/Libata_FAQ:

Older, unsupported ioctls

Why does HDIO_SET_DMA fail? I want to use DMA! Why does HDIO_SET_UNMASKINTR fail?

libata intentionally does not support all the HDIO_xxx ioctls that were supported by the older IDE driver. It is now preferred to use SG_IO as a generalized ATA command submission method, rather than creating a myriad of ioctls for each specific purpose.

The design decision was made only to support the HDIO_xxx ioctls that were heavily used by other programs. Generally the driver always programs the hardware to its maximum capability automatically, completely without user intervention. Therefore, for example, HDIO_SET_DMA is not needed for the vast majority of users because DMA is automatically enabled and used where available.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .