LinuxでKVMデバイスパススルーを有効にするにはどうすればよいですか?


13

MSI-GD65ゲーム用マザーボードとIntel i7 4790を使用しています。BIOSのCPU機能セクションでVT-Dが有効になっています。

Ubuntu 14.04.1 LTSを実行していますが、デバイスを切り離そうとすると、次のメッセージが表示されます。

#virsh nodedev-detach pci_0000_00_1f_2

エラー:デバイスpci_0000_00_1f_2の切り離しに失敗しましたエラー:サポートされていない操作:VFIOもKVMデバイスの割り当てもこのシステムでは現在サポートされていません

DmesgにはIOMMUに関するいくつかの情報が含まれていますが、これがVT-Dが有効になっていることを意味するかどうかはわかりません

$ dmesg | grep -i iommu

[0.027450] dmar:IOMMU 0:reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
[0.027455] dmar:IOMMU 1:reg_base_addr fed91000 ver 1:0 cap d2008020660462 ecap f010da
[0.027521] DRHD base 0xfed91000 IOMMUの下のIOAPIC id 8

誰かがこのシステムでVT-Dを有効にし、PCIデバイスをKVMゲストにパススルーするために何をする必要があるかアドバイスできますか?


VTおよびVT-dを有効にした後、完全なパワーサイクルを実行しましたか?
dyasny 2014年

回答:


11

この問題の解決策は、GRUBブートパラメーターでIOMMUを有効にすることです。

これは、/ etc / default / grubで次のように設定することで実行できます。

GRUB_CMDLINE_LINUX_DEFAULT = "intel_iommu = on"

AMDプロセッサを使用している場合は、amd_iommu=on代わりにブートパラメータに追加する必要があります

GRUB_CMDLINE_LINUX_DEFAULT = "静かなスプラッシュamd_iommu = on"

次に、実行update-grubして再起動します

このリンクは私にかなり役立ちました:https : //www.centos.org/forums/viewtopic.php?f=47&t=48115

参照:https : //pve.proxmox.com/wiki/Pci_passthrough

iommuはVT-Dに代わるAMDの代替物であると私は信じていたので、これは私を多少回避しました。


これが機能しない場合、CPUはVT-DまたはAMD-VIをサポートしていない可能性があります(質問で明らかになります-他の人のためにここに投稿します)
ndemou

5

Anonymouslemmingの回答に追加:Ubuntu(私にとって18.04)にはバグがあるようです。これにより、/ etc / default / grubのGRUB_CMDLINE_LINUX_DEFAULTの設定が無視されます。

/etc/default/grub.d/50-curtin-settings.cfgのGRUB_CMDLINE_LINUX_DEFAULTをコメント化することで修正できます

https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1569567


1

別のモジュールがそれを使用しているため、ハードウェア要件があるようです(IOAPIC)。この場合は、ソフトウェアをセットアップするだけです。

適切なデバイスの取り外しをサポートするには、すべての前提条件がインストールされていることを確認する必要があるようです。それらがインストールされていないか、セットアップされていないようです。

このような場合に使用する前に、適切なライブラリとカーネルモジュールをインストールして初期化する必要があります。これらは、KVMセットアップ用のさまざまな「ホスト」システムユーティリティとカーネルモジュールになります。

ユーティリティを実行する前に、適切なKVMソリューションを適切に設定する方法について、マニュアルのセクションを読み、これらの手順に従う必要があります。必要なパッケージがインストールされているからといって、最初の起動時にセットアップされるだけではありません。

問題のデバイスがマザーボードに組み込まれている場合、技術的にはPCIデバイスではなく、PCIにマップされたデバイスである可能性があることに注意してください。これらのデバイスは実際には他の方法で接続されていますが、BIOSを使用してPCI BIOSスペースにマップされます。それらは、システムへの接続方法のさまざまな側面に応じて、デバイスの取り外しと互換性がある場合とない場合があります。

さらに、ドライバーが相互に依存している場合、親デバイスを切り離さずにサブデバイスを切り離すことができない場合があります。親デバイスがPCIコントローラー、PCIブリッジ、またはその他のサポートされているバスコントローラーまたはブリッジである絶対的な確実性があるデバイスのみを切り離すことができます


情報のおかげで。私の質問には、「KVMでこれを行うためのドキュメントはどこにありますか」をより具体的に含める必要があると思います。
2014年

0

私はcentos7にいます

ここで私を導くこのエラーがありましたが、私の問題は(私の場合)を更新し、行末にvim /etc/sysconfig/grub追加intel_iommu=onすることではありませんでしたGRUB_CMDLINE_LINUX

このコマンドを実行する必要がありました

grub2-mkconfig -o /boot/grub2/grub.cfg

その後、再起動します

注:ただし、上記のコマンドの前に再起動を指定してgrub2-mkconfigを実行したため、表示された内容からは何も実行されませんでした。

参照:https : //bugzilla.redhat.com/show_bug.cgi?id=1269446

コメント11と12

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.