KVM: arm64: Allow userspace to change ID_AA64ZFR0_EL1
authorOliver Upton <oliver.upton@linux.dev>
Tue, 3 Oct 2023 23:04:05 +0000 (23:04 +0000)
committerOliver Upton <oliver.upton@linux.dev>
Wed, 4 Oct 2023 17:11:50 +0000 (17:11 +0000)
All known fields in ID_AA64ZFR0_EL1 describe the unprivileged
instructions supported by the PE's SVE implementation. Allow userspace
to pick and choose the advertised feature set, though nothing stops the
guest from using undisclosed instructions.

Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20231003230408.3405722-10-oliver.upton@linux.dev
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/sys_regs.c

index dbf915f88b17b716e0ad6e17cb40f2a617f376b7..57c8190d5438889cf0d52a58adf6fae1d168b039 100644 (file)
@@ -2067,7 +2067,7 @@ static const struct sys_reg_desc sys_reg_descs[] = {
        ID_SANITISED(ID_AA64PFR1_EL1),
        ID_UNALLOCATED(4,2),
        ID_UNALLOCATED(4,3),
-       ID_SANITISED(ID_AA64ZFR0_EL1),
+       ID_WRITABLE(ID_AA64ZFR0_EL1, ~ID_AA64ZFR0_EL1_RES0),
        ID_HIDDEN(ID_AA64SMFR0_EL1),
        ID_UNALLOCATED(4,6),
        ID_UNALLOCATED(4,7),