Commit 06e0b802 authored by Marc Zyngier's avatar Marc Zyngier
Browse files

KVM: arm64: Expose the WFXT feature to guests



Plumb in the capability, and expose WFxT to guests when available.

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20220419182755.601427-8-maz@kernel.org
parent a3fb5965
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -2443,6 +2443,17 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
		.matches = has_cpuid_feature,
		.min_field_value = 1,
	},
	{
		.desc = "WFx with timeout",
		.capability = ARM64_HAS_WFXT,
		.type = ARM64_CPUCAP_SYSTEM_FEATURE,
		.sys_reg = SYS_ID_AA64ISAR2_EL1,
		.sign = FTR_UNSIGNED,
		.field_pos = ID_AA64ISAR2_WFXT_SHIFT,
		.field_width = 4,
		.matches = has_cpuid_feature,
		.min_field_value = ID_AA64ISAR2_WFXT_SUPPORTED,
	},
	{},
};

+2 −0
Original line number Diff line number Diff line
@@ -1144,6 +1144,8 @@ static u64 read_id_reg(const struct kvm_vcpu *vcpu,
		if (!vcpu_has_ptrauth(vcpu))
			val &= ~(ARM64_FEATURE_MASK(ID_AA64ISAR2_APA3) |
				 ARM64_FEATURE_MASK(ID_AA64ISAR2_GPA3));
		if (!cpus_have_final_cap(ARM64_HAS_WFXT))
			val &= ~ARM64_FEATURE_MASK(ID_AA64ISAR2_WFXT);
		break;
	case SYS_ID_AA64DFR0_EL1:
		/* Limit debug to ARMv8.0 */