KVM: arm64: Document NV caps and vcpu flags
authorMarc Zyngier <maz@kernel.org>
Wed, 14 May 2025 10:35:00 +0000 (11:35 +0100)
committerMarc Zyngier <maz@kernel.org>
Mon, 19 May 2025 07:01:19 +0000 (08:01 +0100)
Describe the two new vcpu flags that control NV, together with
the capabilities that advertise them.

Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Reviewed-by: Joey Gouly <joey.gouly@arm.com>
Link: https://lore.kernel.org/r/20250514103501.2225951-18-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Documentation/virt/kvm/api.rst

index 47c7c3f92314e5ac488610b839fe55700cff184b..fe3d6b5d2acca1a1a80062c71f0f3cd12b578999 100644 (file)
@@ -3460,7 +3460,8 @@ The initial values are defined as:
        - FPSIMD/NEON registers: set to 0
        - SVE registers: set to 0
        - System registers: Reset to their architecturally defined
-         values as for a warm reset to EL1 (resp. SVC)
+         values as for a warm reset to EL1 (resp. SVC) or EL2 (in the
+         case of EL2 being enabled).
 
 Note that because some registers reflect machine topology, all vcpus
 should be created before this ioctl is invoked.
@@ -3527,6 +3528,17 @@ Possible features:
              - the KVM_REG_ARM64_SVE_VLS pseudo-register is immutable, and can
                no longer be written using KVM_SET_ONE_REG.
 
+       - KVM_ARM_VCPU_HAS_EL2: Enable Nested Virtualisation support,
+         booting the guest from EL2 instead of EL1.
+         Depends on KVM_CAP_ARM_EL2.
+         The VM is running with HCR_EL2.E2H being RES1 (VHE) unless
+         KVM_ARM_VCPU_HAS_EL2_E2H0 is also set.
+
+       - KVM_ARM_VCPU_HAS_EL2_E2H0: Restrict Nested Virtualisation
+         support to HCR_EL2.E2H being RES0 (non-VHE).
+         Depends on KVM_CAP_ARM_EL2_E2H0.
+         KVM_ARM_VCPU_HAS_EL2 must also be set.
+
 4.83 KVM_ARM_PREFERRED_TARGET
 -----------------------------