Intelシステムで使用されるIOMMU構成は何ですか?

Intelシステムで使用されるIOMMU構成は何ですか?

カーネルブートオプション(https://www.kernel.org/doc/Documentation/x86/x86_64/boot-options.txt) 次のオプションが見つかりました。

 iommu=[<size>][,noagp][,off][,force][,noforce]
    [,memaper[=<order>]][,merge][,fullflush][,nomerge]
    [,noaperture][,calgary]

  General iommu options:
    off                Don't initialize and use any kind of IOMMU.
    noforce            Don't force hardware IOMMU usage when it is not needed.
                       (default).
    force              Force the use of the hardware IOMMU even when it is
                       not actually needed (e.g. because < 3 GB memory).
    soft               Use software bounce buffering (SWIOTLB) (default for
                       Intel machines). This can be used to prevent the usage
                       of an available hardware IOMMU.

iommu = softはIntelシステムのデフォルトオプションであり、ハードウェアIOMMUの使用を防ぐために使用できると述べています。

もしそうなら、このオプションがIntelシステムのデフォルトの場合、IntelシステムはハードウェアIOMMUを使用しませんか、それともデフォルトでハードウェアIOMMU +ソフトウェアバウンスバッファを使用しますか?

また、起動後にカーネルでどのIOMMU設定が使用されているかを確認する方法はありますか?

答え1

このiommu=softオプションは、IOMMUが存在しないかIOMMUが無効になっているシステムのソフトウェア回避策です。この回避策をソフトウェアIO TLB(SWIOTLB)と呼びます。 SWIOTLBは、IOMMUのないシステムがデバイスでDMA操作を安全に実行できるようにするメカニズムです。

設定されるとiommu=soft(Intelシステムのデフォルト)、LinuxカーネルはデフォルトでSWIOTLBを使用します。これは実際にいいえハードウェア IOMMU が使用されていないことを示します。の場合Linuxカーネルは、ハードウェアIOMMUがiommu=soft設定されていても使用可能で動作する場合は、ハードウェアIOMMUを使用するように設計されているため使用できます。 SWIOTLBメカニズムは、ハードウェアIOMMUが利用できない場合、代替ソリューションに近いです。

起動後にIOMMU設定を確認するには、コマンドを使用できますdmesg | grep -i iommu

関連情報