aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/kvm/lib/arm64/processor.c
diff options
context:
space:
mode:
authorOliver Upton <oliver.upton@linux.dev>2025-09-17 14:20:42 -0700
committerMarc Zyngier <maz@kernel.org>2025-09-24 19:23:32 +0100
commit2de21fb62387459f762c93eec3d04e4f7540b952 (patch)
tree8878d755680a51c3d530259a99afc81ef1905fc7 /tools/testing/selftests/kvm/lib/arm64/processor.c
parentKVM: arm64: selftests: Initialize HCR_EL2 (diff)
downloadlinux-2de21fb62387459f762c93eec3d04e4f7540b952.tar.gz
linux-2de21fb62387459f762c93eec3d04e4f7540b952.zip
KVM: arm64: selftests: Enable EL2 by default
Take advantage of VHE to implicitly promote KVM selftests to run at EL2 with only slight modification. Update the smccc_filter test to account for this now that the EL2-ness of a VM is visible to tests. Signed-off-by: Oliver Upton <oliver.upton@linux.dev> Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to 'tools/testing/selftests/kvm/lib/arm64/processor.c')
-rw-r--r--tools/testing/selftests/kvm/lib/arm64/processor.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/testing/selftests/kvm/lib/arm64/processor.c b/tools/testing/selftests/kvm/lib/arm64/processor.c
index 4339de2fc482..74324915b41e 100644
--- a/tools/testing/selftests/kvm/lib/arm64/processor.c
+++ b/tools/testing/selftests/kvm/lib/arm64/processor.c
@@ -267,11 +267,23 @@ void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent)
}
}
+bool vm_supports_el2(struct kvm_vm *vm)
+{
+ const char *value = getenv("NV");
+
+ if (value && *value == '0')
+ return false;
+
+ return vm_check_cap(vm, KVM_CAP_ARM_EL2) && vm->arch.has_gic;
+}
+
void kvm_get_default_vcpu_target(struct kvm_vm *vm, struct kvm_vcpu_init *init)
{
struct kvm_vcpu_init preferred = {};
vm_ioctl(vm, KVM_ARM_PREFERRED_TARGET, &preferred);
+ if (vm_supports_el2(vm))
+ preferred.features[0] |= BIT(KVM_ARM_VCPU_HAS_EL2);
*init = preferred;
}