2

AMD64 Architecture Programming Manual (APM)、Volume 2 で Advanced Virtual Interrupt Controller (AVIC) に出くわしました。いくつかのビットは私には不明でした。そのため、人気のあるオープンソース ハイパーバイザー (Qemu/KVM およびAMD IOMMU と一緒にどのように使用されるかを確認するには、Xen など) のソースを参照してください。それらのどれも AVIC を使用していないようで、Bochs/Qemu もそれをエミュレートしていません (Qemu には IOMMU エミュレーションがありますが、割り込みを仮想化しないリビジョン 1 用です)。

したがって、次の 2 つの疑問が生じます。

  1. なぜAVICはそれほど「不人気」なのですか?おそらく、現在市場に出回っている CPU では広くサポートされていないのでしょうか。それとも、これらすべてのハイパーバイザーには長い歴史があり、割り込みを独自に仮想化しているため、AVIC への移植が最優先事項ではないためでしょうか? (または、ソースで何かを見逃したのでしょうか?)

  2. [元の質問] IOMMU のデバイス テーブル エントリのゲスト仮想 APIC テーブル ルート ポインタは、APM Vol. 2 で定義されている物理 APIC ID テーブルへのポインタですか。2、セクション。15.29.2.3?

説明ありがとうございます。

4

2 に答える 2

2

AVIC は 16h ファミリ プロセッサでもサポートされていないようです (「Preliminary BIOS and Kernel Developer's Guide (BKDG) for AMD Family 16h Models 00h-0Fh (Kabini) Processors」には、CPUID Fn8000_000A_EDX[AVIC] 値が 0 であると記載されています)。これが、ハイパーバイザーにも実装されていない理由である可能性があります。

また、2 番目の質問は、別の APM と IOMMU 仕様のリビジョンを使用したことが原因のようです。互換性のあるもの (APM Rev. 3.24 と IOMMU 仕様 Rev. 2.6) を入手したとき、IOMMU のデータ構造が大幅に変更されたように見えました。ゲスト仮想 APIC テーブル ルート ポインターは DTE から IRTE に移動され、仮想 APIC バッキング ページへのポインターとして厳密に定義されるようになりました。

確かに便利なメカニズムですが、ハードウェアでまだサポートされていないのは残念です。

于 2014-05-06T06:52:09.630 に答える