ハイパーバイザーでは、パーティションの観点から分離がサポートされます。 パーティションは、オペレーティング システムが実行されるハイパーバイザーによってサポートされる分離の論理単位です。
パーティション特権フラグ
各パーティションには、ハイパーバイザーによって割り当てられた一連の特権があります。 特権は、合成レジスタまたはハイパーコールへのアクセスを制御します。
x64 プラットフォームでは、パーティションは"ハイパーバイザー機能識別" CPUID リーフ (0x40000003) を介してその特権を照会できます。
ARM64 プラットフォームでは、パーティションは HvCallGetVpRegisters を使用して HvRegisterPrivilegesAndFeaturesInfo レジスタを使用してその特権を照会できます。
すべての特権の説明については、 HV_PARTITION_PRIVILEGE_MASK を参照してください。
パーティション クラッシュ対応
ハイパーバイザーは、ゲスト パーティションにクラッシュ対応機能を提供します。 このインターフェイスを使用すると、ゲスト パーティションで実行されているオペレーティング システムは、クラッシュ ダンプ手順の一環として、致命的な OS 状態に関するフォレンジック情報をハイパーバイザーに提供できます。 オプションには、ゲスト クラッシュ パラメーター レジスタの内容の保持とクラッシュ メッセージの指定が含まれます。 その後、ハイパーバイザーは、この情報をログ記録のためにルート パーティションで使用できるようにします。 このメカニズムにより、仮想化ホスト管理者はゲスト OS クラッシュ イベントに関する情報を収集できます。ゲスト パーティションに接続されている永続的なストレージで、クラッシュしたゲスト OS によってそこに格納される可能性があるクラッシュ ダンプまたはコア ダンプ情報を調べる必要はありません。
x64 プラットフォームでは、このメカニズムの可用性は、 CPUID.0x40000003.EDX:10 GuestCrashMsrsAvailable フラグを使用して示されます。 ARM64 プラットフォームでは、可用性は HvRegisterPrivilegesAndFeaturesInfo のビット 105 で示されます。 詳細については、 機能 検出を参照してください。
ゲスト クラッシュ対応インターフェイス
x64 プラットフォームでは、ゲスト クラッシュ対応インターフェイスは、次に定義されている 6 つの合成 MSR を介して提供されます。
#define HV_X64_MSR_CRASH_P0 0x40000100
#define HV_X64_MSR_CRASH_P1 0x40000101
#define HV_X64_MSR_CRASH_P2 0x40000102
#define HV_X64_MSR_CRASH_P3 0x40000103
#define HV_X64_MSR_CRASH_P4 0x40000104
#define HV_X64_MSR_CRASH_CTL 0x40000105
ARM64 プラットフォームでは、ゲスト クラッシュ対応インターフェイスは 、HvCallGetVpRegisters と HvCallSetVpRegisters 経由でアクセスされる 6 つの合成レジスタを介して提供されます。
- HvRegisterGuestCrashP0
- HvRegisterGuestCrashP1
- HvRegisterGuestCrashP2
- HvRegisterGuestCrashP3
- HvRegisterGuestCrashP4
- HvRegisterGuestCrashCtl
ゲスト クラッシュ コントロール レジスタ
ゲスト クラッシュ 制御レジスタ (x64 のHV_X64_MSR_CRASH_CTL、ARM64 上の HvRegisterGuestCrashCtl) は、ハイパーバイザーのゲスト クラッシュ機能を決定し、実行する指定されたアクションを呼び出すためにゲスト パーティションによって使用できます。 HV_CRASH_CTL_REG_CONTENTSデータ構造は、レジスタの内容を定義します。
ゲスト クラッシュ機能の決定
ゲスト クラッシュ機能を特定するために、ゲスト パーティションはゲスト クラッシュ コントロール レジスタを読み取る場合があります。 ハイパーバイザーでサポートされている一連のアクションと機能が報告されます。
ゲスト クラッシュ機能の呼び出し
サポートされているハイパーバイザーゲストクラッシュアクションを呼び出すために、ゲストパーティションはゲストクラッシュコントロールレジスタに書き込み、目的のアクションを指定します。 2 つのバリエーションがサポートされています。CrashNotify 自体と CrashNotify と組み合わせた CrashMessage です。 ゲスト クラッシュが発生するたびに、2 つのバリエーションのいずれかを指定して、ゲスト クラッシュ コントロール レジスタへの最大 1 回の書き込みを実行する必要があります。
| ゲスト クラッシュ アクション | Description |
|---|---|
| CrashMessage | このアクションは、ハイパーバイザーへのクラッシュ メッセージを指定するために CrashNotify と組み合わせて使用されます。 選択すると、P3 と P4 の値がメッセージの場所とサイズとして扱われます。 P3 レジスタにはメッセージのゲスト物理アドレスが含まれており、P4 レジスタにはメッセージの長さ (最大 4096 バイト) が含まれています。 |
| CrashNotify | このアクションは、ゲスト パーティションがゲスト クラッシュ パラメーター レジスタ (P0 から P4) への目的のデータの書き込みを完了したことをハイパーバイザーに示し、ハイパーバイザーはこれらのレジスタの内容のログ記録を続行する必要があることを示します。 |