KVM/arm64 暴露給客戶機的特定超級呼叫¶
本文件記錄了 KVM/arm64 可能暴露給客戶機作業系統的 KVM/arm64 特定的超級呼叫。這些超級呼叫是根據 Arm SMC 呼叫約定(DEN0028/C)1.1 版使用 HVC 指令發出的。
https://developer.arm.com/docs/den0028/c
所有 KVM/arm64 特定的超級呼叫都分配在“供應商特定 Hypervisor 服務呼叫”範圍內,其 UID 為 28b46fb6-2ec5-11e9-a9ca-4b564d003a74。客戶機應使用標準“呼叫 UID”函式查詢服務範圍,以確定 KVM/arm64 特定的超級呼叫是否可用。
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¶
ARM_SMCCC_KVM_FUNC_HYP_MEMINFO¶
查詢 pKVM 受保護虛擬機器 的記憶體保護引數。
存在性 |
可選;僅限 pKVM 受保護客戶機。 |
||
呼叫約定 |
HVC64 |
||
函式 ID |
(uint32) |
0xC6000002 |
|
引數 |
(uint64) |
R1 |
保留 / 必須為零 |
(uint64) |
R2 |
保留 / 必須為零 |
|
(uint64) |
R3 |
保留 / 必須為零 |
|
返回值 |
(int64) |
R0 |
錯誤時為 |
ARM_SMCCC_KVM_FUNC_MMIO_GUARD¶
請求 hypervisor 將給定記憶體區域作為 MMIO 處理,從而允許 KVM 主機模擬對此區域的訪問。區域大小等於 ARM_SMCCC_KVM_FUNC_HYP_MEMINFO 所公佈的記憶體保護粒度。
存在性 |
可選;僅限 pKVM 受保護客戶機。 |
||
呼叫約定 |
HVC64 |
||
函式 ID |
(uint32) |
0xC6000007 |
|
引數 |
(uint64) |
R1 |
MMIO 記憶體區域的基準 IPA |
(uint64) |
R2 |
保留 / 必須為零 |
|
(uint64) |
R3 |
保留 / 必須為零 |
|
返回值 |
(int64) |
R0 |
|
|
|||
ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_VER_FUNC_ID¶
請求客戶機 VM 的目標 CPU 實現版本資訊和目標實現數量。
存在性 |
可選;僅限 KVM/ARM64 客戶機 |
||
呼叫約定 |
HVC64 |
||
函式 ID |
(uint32) |
0xC6000040 |
|
引數 |
無 |
||
返回值 |
(int64) |
R0 |
|
|
|||
(uint64) |
R1 |
位 [63:32] 保留/必須為零 |
|
位 [31:16] 主版本 |
|||
位 [15:0] 次版本 |
|||
(uint64) |
R2 |
目標實現數量 |
|
(uint64) |
R3 |
保留 / 必須為零 |
|
ARM_SMCCC_VENDOR_HYP_KVM_DISCOVER_IMPL_CPUS_FUNC_ID¶
請求客戶機 VM 的目標 CPU 實現資訊。客戶機核心將使用此資訊來啟用相關的勘誤表。
存在性 |
可選;僅限 KVM/ARM64 客戶機 |
||
呼叫約定 |
HVC64 |
||
函式 ID |
(uint32) |
0xC6000041 |
|
引數 |
(uint64) |
R1 |
選定的實現索引 |
(uint64) |
R2 |
保留 / 必須為零 |
|
(uint64) |
R3 |
保留 / 必須為零 |
|
返回值 |
(int64) |
R0 |
|
|
|||
(uint64) |
R1 |
選定實現的 MIDR_EL1 |
|
(uint64) |
R2 |
選定實現的 REVIDR_EL1 |
|
(uint64) |
R3 |
選定實現的 AIDR_EL1 |
|