3

VFIO を介して VM (ゲスト KVM) に割り当てられたデバイスに対して割り込み処理がどのように機能するかを理解しようとしていますが、それがどのように発生するかについての手がかりが得られませんでしたか?

たとえば、VFIO を介してゲスト VM に直接割り当てられた (デバイス パススルー) デバイスがあり、その特定のデバイスに対してハードウェア割り込みが発生したとします。

次は何が起こる?

4

1 に答える 1

8

デバイスからの割り込みは、ホスト カーネルによって受信され、vfio バス ドライバー、vfio-pci または vfio-platform によって登録された割り込みハンドラーにルーティングされます。その割り込みハンドラーは、ユーザー (QEMU) が ioctl を介して構成した eventfd に割り込みを中継するだけです。KVM を使用すると、vfio からの割り込みシグナル eventfd を、KVM に irqfd を注入する割り込みに直接接続できます。これにより、ゲストへのインジェクションのために割り込みが QEMU ユーザー空間にバウンスされるのを回避できますが、KVM irqfd サポートが利用できない場合、そのパスはオプションです。

レベル トリガー割り込みの場合、ホストで割り込み割り込みをマスクして、割り込みがゲストによって処理されている間、デバイスがホストに割り込みを続けないようにする必要があります。したがって、eventfd を通知する前に割り込みをマスクし、リサンプリング irqfd と呼ばれるわずかに異なる KVM irqfd を使用します。これは、KVM から vfio へのマスク解除を通知するための 2 番目の eventfd-irqfd ペアを登録します。

さまざまなハードウェア テクノロジがこれを強化し、効率を向上させます。Intel APICv では、状況によっては、vmexit なしで割り込みをゲストに直接挿入できます。これは完全に KVM 内で処理されます。インテル ポステッド割り込みは、ハードウェア割り込みを受信するプロセッサで正しい vCPU が実行されている場合、割り込みがホストを完全にバイパスできるようにします。ARM IRQ 転送により、ゲストは、再サンプリング irqfd オーバーヘッドを回避して、割り込みのマスク解除を管理できます。

于 2015-04-11T00:13:15.397 に答える