ゲストに公開される KVM/arm64 固有のハイパーコール
このファイルは、KVM/arm64 がゲスト OS に公開する可能性がある KVM/arm64 固有の ハイパーコールについて記述する。これらのハイパーコールは、Arm SMC Calling Convention (DEN0028/C) のバージョン 1.1 に従って HVC 命令で発行する。
https://developer.arm.com/docs/den0028/c
KVM/arm64 固有のハイパーコールはすべて、UID
28b46fb6-2ec5-11e9-a9ca-4b564d003a74 を持つ「Vendor Specific Hypervisor
Service Call」範囲に割り当てられている。KVM/arm64 固有のハイパーコールが
利用できるかを判断するため、ゲストはこのサービス範囲の標準の「Call UID」関数を
使ってこの UID を問い合わせるべきである。
ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID
他の KVM/arm64 ハイパーコールを検出する仕組みを提供する。
有無: |
KVM/arm64 UID に対して必須 |
||
呼び出し規約: |
HVC32 |
||
関数 ID: |
(uint32) |
0x86000000 |
|
引数: |
なし |
||
戻り値: |
(uint32) |
R0 |
利用可能な関数番号 0-31 のビットマップ |
(uint32) |
R1 |
利用可能な関数番号 32-63 のビットマップ |
|
(uint32) |
R2 |
利用可能な関数番号 64-95 のビットマップ |
|
(uint32) |
R3 |
利用可能な関数番号 96-127 のビットマップ |
|
ARM_SMCCC_VENDOR_HYP_KVM_PTP_FUNC_ID
ptp_kvm.rst を参照
ARM_SMCCC_KVM_FUNC_HYP_MEMINFO
pKVM 保護仮想マシンのメモリ保護パラメータを問い合わせる。
有無: |
任意。pKVM 保護ゲストのみ。 |
||
呼び出し規約: |
HVC64 |
||
関数 ID: |
(uint32) |
0xC6000002 |
|
引数: |
(uint64) |
R1 |
予約済み/0 でなければならない |
(uint64) |
R2 |
予約済み/0 でなければならない |
|
(uint64) |
R3 |
予約済み/0 でなければならない |
|
戻り値: |
(int64) |
R0 |
エラー時は |
ARM_SMCCC_KVM_FUNC_MMIO_GUARD
指定したメモリ領域をハイパーバイザが MMIO として扱うよう要求する。これにより、
この領域へのアクセスを KVM ホストがエミュレートできる。領域のサイズは
ARM_SMCCC_KVM_FUNC_HYP_MEMINFO が通知するメモリ保護グラニュールに等しい。
有無: |
任意。pKVM 保護ゲストのみ。 |
||
呼び出し規約: |
HVC64 |
||
関数 ID: |
(uint32) |
0xC6000007 |
|
引数: |
(uint64) |
R1 |
MMIO メモリ領域のベース IPA |
(uint64) |
R2 |
予約済み/0 でなければならない |
|
(uint64) |
R3 |
予約済み/0 でなければならない |
|
戻り値: |
(int64) |
R0 |
|
|
|||
ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_VER_FUNC_ID
ゲスト VM 向けに、対象 CPU 実装のバージョン情報と対象実装の数を要求する。
有無: |
Optional; KVM/ARM64 Guests only |
||
呼び出し規約: |
HVC64 |
||
関数 ID: |
(uint32) |
0xC6000040 |
|
引数: |
なし |
||
戻り値: |
(int64) |
R0 |
|
|
|||
(uint64) |
R1 |
ビット [63:32] は予約済み/0 必須 |
|
ビット [31:16] メジャーバージョン |
|||
ビット [15:0] マイナーバージョン |
|||
(uint64) |
R2 |
対象実装の数 |
|
(uint64) |
R3 |
予約済み/0 でなければならない |
|
ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_CPUS_FUNC_ID
ゲスト VM 向けに、対象 CPU 実装の情報を要求する。ゲストカーネルはこの情報を 使って、関連するエラッタを有効にする。
有無: |
Optional; KVM/ARM64 Guests only |
||
呼び出し規約: |
HVC64 |
||
関数 ID: |
(uint32) |
0xC6000041 |
|
引数: |
(uint64) |
R1 |
選択した実装のインデックス |
(uint64) |
R2 |
予約済み/0 でなければならない |
|
(uint64) |
R3 |
予約済み/0 でなければならない |
|
戻り値: |
(int64) |
R0 |
|
|
|||
(uint64) |
R1 |
選択した実装の MIDR_EL1 |
|
(uint64) |
R2 |
選択した実装の REVIDR_EL1 |
|
(uint64) |
R3 |
AIDR_EL1 of the selected implementation |
|