]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: arm64: Allow control of dpISA extensions in ID_AA64ISAR3_EL1
authorMark Brown <broonie@kernel.org>
Tue, 7 Jan 2025 22:59:44 +0000 (22:59 +0000)
committerWill Deacon <will@kernel.org>
Wed, 8 Jan 2025 13:41:07 +0000 (13:41 +0000)
ID_AA64ISAR3_EL1 is currently marked as unallocated in KVM but does have a
number of bitfields defined in it. Expose FPRCVT and FAMINMAX, two simple
instruction only extensions to guests.

Reviewed-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20250107-arm64-2024-dpisa-v5-4-7578da51fc3d@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kvm/sys_regs.c

index 83c6b4a07ef56cf0ed9c8751ec80686f45dca6b2..6efbe3f4a579afd1874c4cf844c1c1249ae8b942 100644 (file)
@@ -1604,6 +1604,9 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,
                if (!cpus_have_final_cap(ARM64_HAS_WFXT))
                        val &= ~ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_WFxT);
                break;
+       case SYS_ID_AA64ISAR3_EL1:
+               val &= ID_AA64ISAR3_EL1_FPRCVT | ID_AA64ISAR3_EL1_FAMINMAX;
+               break;
        case SYS_ID_AA64MMFR2_EL1:
                val &= ~ID_AA64MMFR2_EL1_CCIDX_MASK;
                break;
@@ -2608,7 +2611,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
        ID_WRITABLE(ID_AA64ISAR2_EL1, ~(ID_AA64ISAR2_EL1_RES0 |
                                        ID_AA64ISAR2_EL1_APA3 |
                                        ID_AA64ISAR2_EL1_GPA3)),
-       ID_UNALLOCATED(6,3),
+       ID_WRITABLE(ID_AA64ISAR3_EL1, (ID_AA64ISAR3_EL1_FPRCVT |
+                                      ID_AA64ISAR3_EL1_FAMINMAX)),
        ID_UNALLOCATED(6,4),
        ID_UNALLOCATED(6,5),
        ID_UNALLOCATED(6,6),