Linuxでは、DMAのオフは引き続きサポートされます。

Linuxでは、DMAのオフは引き続きサポートされます。

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_*_DMAlibataではサポートされていません。

バラより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 は必要ありません。

おすすめ記事