私はLinuxオペレーティングシステムの強化プロセスに従わなければなりませんでしたが、その間カーネルオプションにはiommu=force
。
それは何をしますか? iommuについて何も指定しないとどう違いますか?私のpciパススルー設定と互換性がありますかintel_iommu=on
?
答え1
私が理解しているように、オプションは補完的であり、特にiommu
システムの技術使用を管理することforce
です。この技術の価値は、intel_iommu
AMDの仕様と同様に、技術自体であるIOMMU仕様(Intel VT-d)を保証します。 (AMD-Vi amd_iommu
)
次の設定オプションを分析してください。
一般iommu
(入出力メモリ管理デバイス)オプション:
off
どのタイプの IOMMU も初期化して使用しないでください。
noforce
必要でない場合は、ハードウェアIOMMUを強制的に使用しないでください。 (基本)。
force
実際に必要でない場合でも(たとえば、メモリが3 GB未満の場合)、ハードウェアIOMMUを強制的に使用してください。
soft
ソフトウェアバウンスバッファ(SWIOTLB)を使用する(Intelシステムのデフォルト設定)。これは使用できます防ぐ利用可能なハードウェアIOMMUの使用。
今Intel IOMMU:
intel_iommu
[DMAR] インテル IOMMU ドライバー (DMAR) オプション
DMAR:ダイレクトメモリアクセスの再マッピング
on
Intel IOMMUドライバを有効にします。
intel_iommu
( off
, igfx_off
, , ...) より多くのオプションがありますが、forcedac
この質問には関係ありません。
私はこのトピックの専門家ではありません。何か欠けている部分があるかもしれないので、以下はいくつかのソースです。
答え2
どちらも主にSR-IOVパススルー(pt)モードのLxパラメータiommu
です。intel_iommu
grub
iommu=force
実際に必要としなくても(たとえば、メモリが3 GB未満の場合)、ハードウェアIOMMU(「入力出力メモリ管理デバイス」)を強制的に使用します。これはランタイムをどのように改善しますか?
正しく動作するドライバは、DMAを実行する必要があるデバイスにコマンドを送信する前にpci_map_*()呼び出しを実行します。 DMAが完了し、マッピングが不要になると、デバイスはpci_unmap_ *()呼び出しを実行してゾーンマッピングを解放します。 Intel IOMMUドライバは各ドメインに仮想アドレスを割り当てます。各PCIEデバイスは、独自のドメインを持つように強制され、保護されています。
intel_iommu=on
カーネルでSR-IOVを有効にするだけです。
最高のパフォーマンスを得るには、iommu=pt
SR-IOVを使用するときにファイルに追加(転送)してください。grub
パススルーモードでは、アダプタがメモリに変換するためにDMAを使用する必要がないため、パフォーマンスが向上します。iommu=pt
ハイパーバイザーのパフォーマンスが必要な場合は、主に必要です。バラよりこれそしてそれ背景情報を入手してください。
この例では、grub
ファイルは次のようになります。
kernel /vmlinuz-Ub15.10x86_64-5.5.15-42-generic root=/dev/sda1 console=tty0 console=ttyS0,115200n8 rhgb intel_iommu=on iommu=pt
ファタイ
答え3
死んでからではありませんが、簡潔に回答してほしいと思いました。 Cbhiheが前述したように、ドライバはいくつかのDMAメモリを割り当てるか、別々に設定し、デバイスにそれを使用するように指示します。しかし、これは実際には提案です。デバイスは、実際には(バグや悪意のある意図のために)DMAを使用して、必要なシステムメモリを読み書きできます。これには、潜在的にシステムメモリを読み取ることができるUSB3およびThunderboltデバイスも含まれます。最新のUSB3およびThunderboltコントローラーは、この動作を自分で防ぐことができます。 iommu dmar(DMA 再マッピング)は、これらの間違った DMA アクセスを防ぎ、iommu=force がオンになっていることを確認してください。セキュリティシステムに対する慎重な予防措置