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” 功能查询此 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
¶
请求将给定内存区域作为 MMIO 由 hypervisor 处理,允许 KVM 主机模拟对此区域的访问。区域的大小等于 ARM_SMCCC_KVM_FUNC_HYP_MEMINFO
声明的内存保护粒度。
存在性 |
可选;仅限 pKVM 保护的客户机。 |
||
调用约定 |
HVC64 |
||
函数 ID |
(uint32) |
0xC6000007 |
|
参数 |
(uint64) |
R1 |
MMIO 内存区域的基本 IPA |
(uint64) |
R2 |
保留 / 必须为零 |
|
(uint64) |
R3 |
保留 / 必须为零 |
|
返回值 |
(int64) |
R0 |
|
|