mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
target/arm: Enable feature ARM_FEATURE_EL2 if EL2 is supported
KVM_CAP_ARM_EL2 must be supported by the cpu to enable ARM_FEATURE_EL2. In case the host does support NV, expose the feature. Signed-off-by: Haibo Xu <haibo.xu@linaro.org> Signed-off-by: Miguel Luis <miguel.luis@oracle.com> Signed-off-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250707164129.1167837-4-eric.auger@redhat.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -251,6 +251,7 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
|
||||
*/
|
||||
int fdarray[3];
|
||||
bool sve_supported;
|
||||
bool el2_supported;
|
||||
bool pmu_supported = false;
|
||||
uint64_t features = 0;
|
||||
int err;
|
||||
@@ -270,6 +271,14 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
|
||||
init.features[0] |= 1 << KVM_ARM_VCPU_SVE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Ask for EL2 if supported.
|
||||
*/
|
||||
el2_supported = kvm_arm_el2_supported();
|
||||
if (el2_supported) {
|
||||
init.features[0] |= 1 << KVM_ARM_VCPU_HAS_EL2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Ask for Pointer Authentication if supported, so that we get
|
||||
* the unsanitized field values for AA64ISAR1_EL1.
|
||||
@@ -423,6 +432,10 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
|
||||
features |= 1ULL << ARM_FEATURE_AARCH64;
|
||||
features |= 1ULL << ARM_FEATURE_GENERIC_TIMER;
|
||||
|
||||
if (el2_supported) {
|
||||
features |= 1ULL << ARM_FEATURE_EL2;
|
||||
}
|
||||
|
||||
ahcf->features = features;
|
||||
|
||||
return true;
|
||||
@@ -1888,6 +1901,9 @@ int kvm_arch_init_vcpu(CPUState *cs)
|
||||
cpu->kvm_init_features[0] |= (1 << KVM_ARM_VCPU_PTRAUTH_ADDRESS |
|
||||
1 << KVM_ARM_VCPU_PTRAUTH_GENERIC);
|
||||
}
|
||||
if (cpu->has_el2 && kvm_arm_el2_supported()) {
|
||||
cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_HAS_EL2;
|
||||
}
|
||||
|
||||
/* Do KVM_ARM_VCPU_INIT ioctl */
|
||||
ret = kvm_arm_vcpu_init(cpu);
|
||||
|
||||
Reference in New Issue
Block a user