LinuxボックスでDMAをオフにしようとすると、次のものが返されます。
HDIO_GET_DMA failed: Inappropriate ioctl for device
私はこれがDMAをオンまたはオフにするために使用されたことを覚えています。また、カーネルパラメータを試してみましたが、libata.dma=0
役に立ちませんでした!しかし、ATAドライバとDMAは正常に動作しているようです。それで、この問題について心配する必要があるのか、それ以上サポートされていないのか疑問に思います。
ディストリビューションはUbuntu 12で、カーネルは3.5.0-54-genericです。チップセットは
00:1f.2 SATAコントローラ:Intel Corporation 7シリーズ/C210シリーズチップセットシリーズ6ポートSATAコントローラ[AHCIモード](改訂04)
ベストアンサー1
HDIO_*_DMA
libataではサポートされていません。
バラよりhttps://ata.wiki.kernel.org/index.php/Libata_FAQ:
古くてサポートされていないioctl
HDIO_SET_DMAが失敗するのはなぜですか? DMAを使いたいです! HDIO_SET_UNMASKINTRが失敗するのはなぜですか?
libataは、意図的に古いIDEドライバでサポートされているすべてのHDIO_xxx ioctlをサポートしていません。今、それぞれの特定の目的のために多数のioctlを生成する代わりに、SG_IOを汎用ATAコマンド送信方法として使用することが推奨されます。
デザインの決定は、単に他のプログラムで頻繁に使用されるHDIO_xxx ioctlをサポートすることでした。一般に、ドライバはユーザの介入を全く必要とせず、常に自動的にハードウェアを最大の機能にプログラムする。たとえば、DMA は使用可能な場合は自動的に有効になり、使用されるため、ほとんどのユーザーには HDIO_SET_DMA は必要ありません。